Frontend Page - Configure MenuConfig: Difference between revisions

From Izara Wiki
Jump to navigation Jump to search
 
(One intermediate revision by the same user not shown)
Line 30: Line 30:


== OnDrag ==
== OnDrag ==
Under Construction
 
<syntaxhighlight lang="json">
<syntaxhighlight lang="json">
const dragStartRowIndex = useRef(null);
const dragStartRowIndex = useRef(null);
Line 61: Line 61:
* set variable by useRef : for save data immediately
* set variable by useRef : for save data immediately
* set variable by useState : for Re-render
* set variable by useState : for Re-render
== DragDrop ==
Under Construction
<syntaxhighlight lang="json">
<CellTabButton
              id={"menuelement" + menuElementIndex}
              type="button"
              name="menuelement"
              dragdrop={(
                dragPassMenuElementIndexState === menuElementIndex //set state of index
                && dragPassMenuElements.current === menuElements //switch element in array
             
              )}
>
              //...
           
</CellTabButton>
           
</syntaxhighlight>
== menuElements recursion ==  
== menuElements recursion ==  



Latest revision as of 01:57, 26 June 2023

Overview

Frontend page for creating and editing MenuConfigs

Repository

visibleObj Object

let visibleObj = {
	visibleRowIndex: 0, // row index we have open on page
	visibleRenameRowIndex: 0, // row index currently renaming
	rows:[
		{
			menuElements: [
				{
					show: false, // whether the menuElement settings are expanded
					menuText
					menuElements: [ // if menuElement is elementType menu, will have child menuElements
					
					],
				},
				// ..
			]
		},
		// ..
	]
}

OnDrag

const dragStartRowIndex = useRef(null);
const dragPassRowIndex = useRef(null);
const [dragnamerow, setdragnamerow] = useState(null);
const [dragPassRowIndexState, setDragPassRowIndexState] = useState(null);
	
	
	<div
		dragable
		onDragStart={(e) => {
			            dragStartRowIndex.current = rowIndex; //set value when clicked element
                        dragPassRowIndex.current = null; //set null when departed original position 
                        setdragnamerow("row");
		}}
		onDragEnter={(e) => {
			            if (dragnamerow === "row") {
                            dragPassRowIndex.current = rowIndex;// change value when passed others element
                            setDragPassRowIndexState(rowIndex);
                          }
		}}
		onDragEnd={moveRows}
	>
	{"text"}
	</div>
  • onDragStart : when you started to click element
  • onDragEnter : when you passed element
  • onDragEnd : when you released holding
  • set variable by useRef : for save data immediately
  • set variable by useState : for Re-render

DragDrop

Under Construction

	<CellTabButton
              id={"menuelement" + menuElementIndex}
              type="button"
              name="menuelement"
              dragdrop={(
                dragPassMenuElementIndexState === menuElementIndex //set state of index
                && dragPassMenuElements.current === menuElements //switch element in array
               
              )}
	>
              //...
            
	</CellTabButton>

menuElements recursion

  • Menu elements are nested to any level
  • Structure of rows and menuElements in visible object matches structure of menuConfig/menuConfigSetting

Working documents