@@ -134,6 +134,8 @@ export default function Ticket() {
134134 const { id } = history . query ;
135135
136136 async function update ( ) {
137+ if ( data && data . ticket && data . ticket . locked ) return ;
138+
137139 await fetch ( `/api/v1/ticket/update` , {
138140 method : "PUT" ,
139141 headers : {
@@ -157,6 +159,8 @@ export default function Ticket() {
157159 }
158160
159161 async function updateStatus ( ) {
162+ if ( data && data . ticket && data . ticket . locked ) return ;
163+
160164 await fetch ( `/api/v1/ticket/status/update` , {
161165 method : "PUT" ,
162166 headers : {
@@ -173,6 +177,8 @@ export default function Ticket() {
173177 }
174178
175179 async function hide ( hidden ) {
180+ if ( data && data . ticket && data . ticket . locked ) return ;
181+
176182 await fetch ( `/api/v1/ticket/status/hide` , {
177183 method : "PUT" ,
178184 headers : {
@@ -229,6 +235,8 @@ export default function Ticket() {
229235 }
230236
231237 async function addComment ( ) {
238+ if ( data && data . ticket && data . ticket . locked ) return ;
239+
232240 await fetch ( `/api/v1/ticket/comment` , {
233241 method : "POST" ,
234242 headers : {
@@ -246,6 +254,8 @@ export default function Ticket() {
246254 }
247255
248256 async function addTime ( ) {
257+ if ( data && data . ticket && data . ticket . locked ) return ;
258+
249259 await fetch ( `/api/v1/time/new` , {
250260 method : "POST" ,
251261 headers : {
@@ -290,6 +300,8 @@ export default function Ticket() {
290300 }
291301
292302 async function transferTicket ( ) {
303+ if ( data && data . ticket && data . ticket . locked ) return ;
304+
293305 if ( n !== undefined ) {
294306 await fetch ( `/api/v1/ticket/transfer` , {
295307 method : "POST" ,
@@ -426,6 +438,7 @@ export default function Ticket() {
426438 }
427439
428440 const handleInputChange = ( editor ) => {
441+ if ( data . ticket . locked ) return ;
429442 setIssue ( editor . document ) ;
430443 } ;
431444
@@ -465,6 +478,7 @@ export default function Ticket() {
465478 defaultValue = { data . ticket . title }
466479 onChange = { ( e ) => setTitle ( e . target . value ) }
467480 key = { data . ticket . id }
481+ disabled = { data . ticket . locked }
468482 />
469483 </ div >
470484 < div className = "mt-2 text-xs flex flex-row justify-between items-center space-x-1 text-gray-500 dark:text-white" >
@@ -584,6 +598,7 @@ export default function Ticket() {
584598 ? data . ticket . assignedTo . name
585599 : ""
586600 }
601+ disabled = { data . ticket . locked }
587602 />
588603 ) }
589604 </ div >
@@ -594,6 +609,7 @@ export default function Ticket() {
594609 defaultName = {
595610 data . ticket . priority ? data . ticket . priority : ""
596611 }
612+ disabled = { data . ticket . locked }
597613 />
598614
599615 < IconCombo
@@ -602,6 +618,7 @@ export default function Ticket() {
602618 defaultName = {
603619 data . ticket . status ? data . ticket . status : ""
604620 }
621+ disabled = { data . ticket . locked }
605622 />
606623 </ div >
607624 </ div >
@@ -662,6 +679,7 @@ export default function Ticket() {
662679 sideMenu = { false }
663680 className = "m-0 p-0 bg-transparent dark:text-white"
664681 onChange = { handleInputChange }
682+ editable = { ! data . ticket . locked }
665683 />
666684 </ >
667685 ) : (
@@ -773,9 +791,14 @@ export default function Ticket() {
773791 name = "comment"
774792 rows = { 3 }
775793 className = "block w-full bg-transparent rounded-md border-0 py-1.5 shadow-sm ring-1 ring-inset ring-background focus:ring-0 focus:ring-inset focus:ring-gray-900 sm:text-sm sm:leading-6"
776- placeholder = "Leave a comment"
794+ placeholder = {
795+ data . ticket . locked
796+ ? "This ticket is locked"
797+ : "Leave a comment"
798+ }
777799 defaultValue = { "" }
778800 onChange = { ( e ) => setComment ( e . target . value ) }
801+ disabled = { data . ticket . locked }
779802 />
780803 </ div >
781804 < div className = "mt-4 flex justify-end" >
@@ -811,8 +834,15 @@ export default function Ticket() {
811834 { data . ticket . isComplete ? (
812835 < button
813836 type = "button"
814- onClick = { ( ) => updateStatus ( ) }
815- className = "inline-flex justify-center items-center gap-x-1.5 rounded-md bg-white px-3 py-1.5 text-sm font-semibold text-gray-900 shadow-sm ring-1 ring-inset ring-gray-300 hover:bg-gray-50"
837+ onClick = { ( ) => {
838+ if ( ! data . ticket . locked ) {
839+ updateStatus ( ) ;
840+ }
841+ } }
842+ disabled = { data . ticket . locked }
843+ className = { `inline-flex justify-center items-center gap-x-1.5 rounded-md ${
844+ data . ticket . locked ? "bg-gray-300 cursor-not-allowed" : "bg-white hover:bg-gray-50"
845+ } px-3 py-1.5 text-sm font-semibold text-gray-900 shadow-sm ring-1 ring-inset ring-gray-300`}
816846 >
817847 < CheckCircleIcon
818848 className = "-ml-0.5 h-5 w-5 text-red-500"
@@ -825,8 +855,15 @@ export default function Ticket() {
825855 ) : (
826856 < button
827857 type = "button"
828- onClick = { ( ) => updateStatus ( ) }
829- className = "inline-flex justify-center gap-x-1.5 rounded-md bg-white px-3 py-1.5 text-sm font-semibold text-gray-900 shadow-sm ring-1 ring-inset ring-gray-300 hover:bg-gray-50"
858+ onClick = { ( ) => {
859+ if ( ! data . ticket . locked ) {
860+ updateStatus ( ) ;
861+ }
862+ } }
863+ disabled = { data . ticket . locked }
864+ className = { `inline-flex justify-center gap-x-1.5 rounded-md ${
865+ data . ticket . locked ? "bg-gray-300 cursor-not-allowed" : "bg-white hover:bg-gray-50"
866+ } px-3 py-1.5 text-sm font-semibold text-gray-900 shadow-sm ring-1 ring-inset ring-gray-300`}
830867 >
831868 < CheckCircleIcon
832869 className = "-ml-0.5 h-5 w-5 text-green-500"
@@ -838,7 +875,12 @@ export default function Ticket() {
838875 < button
839876 onClick = { ( ) => addComment ( ) }
840877 type = "submit"
841- className = "inline-flex items-center justify-center rounded-md bg-gray-900 px-4 py-1.5 text-sm font-semibold text-white shadow-sm hover:bg-gray-700 focus-visible:outline focus-visible:outline-2 focus-visible:outline-offset-2 focus-visible:outline-gray-900"
878+ disabled = { data . ticket . locked }
879+ className = { `inline-flex items-center justify-center rounded-md px-4 py-1.5 text-sm font-semibold text-white shadow-sm focus-visible:outline focus-visible:outline-2 focus-visible:outline-offset-2 focus-visible:outline-gray-900 ${
880+ data . ticket . locked
881+ ? "bg-gray-400 cursor-not-allowed"
882+ : "bg-gray-900 hover:bg-gray-700"
883+ } `}
842884 >
843885 { t ( "comment" ) }
844886 </ button >
@@ -862,19 +904,22 @@ export default function Ticket() {
862904 defaultName = {
863905 data . ticket . assignedTo ? data . ticket . assignedTo . name : ""
864906 }
907+ disabled = { data . ticket . locked }
865908 />
866909 ) }
867910
868911 < IconCombo
869912 value = { priorityOptions }
870913 update = { setPriority }
871914 defaultName = { data . ticket . priority ? data . ticket . priority : "" }
915+ disabled = { data . ticket . locked }
872916 />
873917
874918 < IconCombo
875919 value = { ticketStatusMap }
876920 update = { setTicketStatus }
877921 defaultName = { data . ticket . status ? data . ticket . status : "" }
922+ disabled = { data . ticket . locked }
878923 />
879924
880925 { /* <div className="border-t border-gray-200">
0 commit comments