mirror of
				https://github.com/go-gitea/gitea
				synced 2025-10-30 19:08:37 +00:00 
			
		
		
		
	Drag-and-drop improvements for projects and issue pins (#29875)
1. Add "grabbing" cursor while dragging items:  2. Make project board only drag via their header, not via their whole body.  3. Fix some cursor problems in projects 4. Move shared options into `createSortable`.
This commit is contained in:
		| @@ -188,8 +188,6 @@ async function initIssuePinSort() { | ||||
|  | ||||
|   createSortable(pinDiv, { | ||||
|     group: 'shared', | ||||
|     animation: 150, | ||||
|     ghostClass: 'card-ghost', | ||||
|     onEnd: pinMoveEnd, | ||||
|   }); | ||||
| } | ||||
|   | ||||
| @@ -58,8 +58,7 @@ async function initRepoProjectSortable() { | ||||
|   createSortable(mainBoard, { | ||||
|     group: 'project-column', | ||||
|     draggable: '.project-column', | ||||
|     animation: 150, | ||||
|     ghostClass: 'card-ghost', | ||||
|     handle: '.project-column-header', | ||||
|     delayOnTouchOnly: true, | ||||
|     delay: 500, | ||||
|     onSort: async () => { | ||||
| @@ -86,8 +85,6 @@ async function initRepoProjectSortable() { | ||||
|     const boardCardList = boardColumn.getElementsByClassName('cards')[0]; | ||||
|     createSortable(boardCardList, { | ||||
|       group: 'shared', | ||||
|       animation: 150, | ||||
|       ghostClass: 'card-ghost', | ||||
|       onAdd: moveIssue, | ||||
|       onUpdate: moveIssue, | ||||
|       delayOnTouchOnly: true, | ||||
|   | ||||
| @@ -1,4 +1,19 @@ | ||||
| export async function createSortable(...args) { | ||||
| export async function createSortable(el, opts = {}) { | ||||
|   const {Sortable} = await import(/* webpackChunkName: "sortablejs" */'sortablejs'); | ||||
|   return new Sortable(...args); | ||||
|  | ||||
|   return new Sortable(el, { | ||||
|     animation: 150, | ||||
|     ghostClass: 'card-ghost', | ||||
|     onChoose: (e) => { | ||||
|       const handle = opts.handle ? e.item.querySelector(opts.handle) : e.item; | ||||
|       handle.classList.add('tw-cursor-grabbing'); | ||||
|       opts.onChoose?.(e); | ||||
|     }, | ||||
|     onUnchoose: (e) => { | ||||
|       const handle = opts.handle ? e.item.querySelector(opts.handle) : e.item; | ||||
|       handle.classList.remove('tw-cursor-grabbing'); | ||||
|       opts.onUnchoose?.(e); | ||||
|     }, | ||||
|     ...opts, | ||||
|   }); | ||||
| } | ||||
|   | ||||
		Reference in New Issue
	
	Block a user