<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
	<id>https://izara.io/wiki/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Kik</id>
	<title>Izara Wiki - User contributions [en]</title>
	<link rel="self" type="application/atom+xml" href="https://izara.io/wiki/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Kik"/>
	<link rel="alternate" type="text/html" href="https://izara.io/wiki/index.php/Special:Contributions/Kik"/>
	<updated>2026-05-03T11:19:00Z</updated>
	<subtitle>User contributions</subtitle>
	<generator>MediaWiki 1.38.4</generator>
	<entry>
		<id>https://izara.io/wiki/index.php?title=Frontend_Page_-_Configure_MenuConfig&amp;diff=2394</id>
		<title>Frontend Page - Configure MenuConfig</title>
		<link rel="alternate" type="text/html" href="https://izara.io/wiki/index.php?title=Frontend_Page_-_Configure_MenuConfig&amp;diff=2394"/>
		<updated>2023-06-26T01:57:52Z</updated>

		<summary type="html">&lt;p&gt;Kik: /* DragDrop */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Overview =&lt;br /&gt;
&lt;br /&gt;
Frontend page for creating and editing MenuConfigs&lt;br /&gt;
&lt;br /&gt;
= Repository =&lt;br /&gt;
&lt;br /&gt;
= visibleObj Object = &lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;json&amp;quot;&amp;gt;&lt;br /&gt;
let visibleObj = {&lt;br /&gt;
	visibleRowIndex: 0, // row index we have open on page&lt;br /&gt;
	visibleRenameRowIndex: 0, // row index currently renaming&lt;br /&gt;
	rows:[&lt;br /&gt;
		{&lt;br /&gt;
			menuElements: [&lt;br /&gt;
				{&lt;br /&gt;
					show: false, // whether the menuElement settings are expanded&lt;br /&gt;
					menuText&lt;br /&gt;
					menuElements: [ // if menuElement is elementType menu, will have child menuElements&lt;br /&gt;
					&lt;br /&gt;
					],&lt;br /&gt;
				},&lt;br /&gt;
				// ..&lt;br /&gt;
			]&lt;br /&gt;
		},&lt;br /&gt;
		// ..&lt;br /&gt;
	]&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== OnDrag ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;json&amp;quot;&amp;gt;&lt;br /&gt;
const dragStartRowIndex = useRef(null);&lt;br /&gt;
const dragPassRowIndex = useRef(null);&lt;br /&gt;
const [dragnamerow, setdragnamerow] = useState(null);&lt;br /&gt;
const [dragPassRowIndexState, setDragPassRowIndexState] = useState(null);&lt;br /&gt;
	&lt;br /&gt;
	&lt;br /&gt;
	&amp;lt;div&lt;br /&gt;
		dragable&lt;br /&gt;
		onDragStart={(e) =&amp;gt; {&lt;br /&gt;
			            dragStartRowIndex.current = rowIndex; //set value when clicked element&lt;br /&gt;
                        dragPassRowIndex.current = null; //set null when departed original position &lt;br /&gt;
                        setdragnamerow(&amp;quot;row&amp;quot;);&lt;br /&gt;
		}}&lt;br /&gt;
		onDragEnter={(e) =&amp;gt; {&lt;br /&gt;
			            if (dragnamerow === &amp;quot;row&amp;quot;) {&lt;br /&gt;
                            dragPassRowIndex.current = rowIndex;// change value when passed others element&lt;br /&gt;
                            setDragPassRowIndexState(rowIndex);&lt;br /&gt;
                          }&lt;br /&gt;
		}}&lt;br /&gt;
		onDragEnd={moveRows}&lt;br /&gt;
	&amp;gt;&lt;br /&gt;
	{&amp;quot;text&amp;quot;}&lt;br /&gt;
	&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
* onDragStart : when you started to click element&lt;br /&gt;
* onDragEnter : when you passed element&lt;br /&gt;
* onDragEnd : when you released holding&lt;br /&gt;
* set variable by useRef : for save data immediately&lt;br /&gt;
* set variable by useState : for Re-render&lt;br /&gt;
&lt;br /&gt;
== DragDrop ==&lt;br /&gt;
Under Construction&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;json&amp;quot;&amp;gt;&lt;br /&gt;
	&amp;lt;CellTabButton&lt;br /&gt;
              id={&amp;quot;menuelement&amp;quot; + menuElementIndex}&lt;br /&gt;
              type=&amp;quot;button&amp;quot;&lt;br /&gt;
              name=&amp;quot;menuelement&amp;quot;&lt;br /&gt;
              dragdrop={(&lt;br /&gt;
                dragPassMenuElementIndexState === menuElementIndex //set state of index&lt;br /&gt;
                &amp;amp;&amp;amp; dragPassMenuElements.current === menuElements //switch element in array&lt;br /&gt;
               &lt;br /&gt;
              )}&lt;br /&gt;
	&amp;gt;&lt;br /&gt;
              //...&lt;br /&gt;
            &lt;br /&gt;
	&amp;lt;/CellTabButton&amp;gt;&lt;br /&gt;
            &lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== menuElements recursion == &lt;br /&gt;
&lt;br /&gt;
* Menu elements are nested to any level&lt;br /&gt;
* Structure of rows and menuElements in visible object matches structure of menuConfig/menuConfigSetting&lt;br /&gt;
&lt;br /&gt;
= Working documents =&lt;br /&gt;
&lt;br /&gt;
[[Category:Frontend pages| Configure MenuConfig]]&lt;/div&gt;</summary>
		<author><name>Kik</name></author>
	</entry>
	<entry>
		<id>https://izara.io/wiki/index.php?title=Frontend_Page_-_Configure_MenuConfig&amp;diff=2393</id>
		<title>Frontend Page - Configure MenuConfig</title>
		<link rel="alternate" type="text/html" href="https://izara.io/wiki/index.php?title=Frontend_Page_-_Configure_MenuConfig&amp;diff=2393"/>
		<updated>2023-06-26T01:45:30Z</updated>

		<summary type="html">&lt;p&gt;Kik: /* OnDrag */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Overview =&lt;br /&gt;
&lt;br /&gt;
Frontend page for creating and editing MenuConfigs&lt;br /&gt;
&lt;br /&gt;
= Repository =&lt;br /&gt;
&lt;br /&gt;
= visibleObj Object = &lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;json&amp;quot;&amp;gt;&lt;br /&gt;
let visibleObj = {&lt;br /&gt;
	visibleRowIndex: 0, // row index we have open on page&lt;br /&gt;
	visibleRenameRowIndex: 0, // row index currently renaming&lt;br /&gt;
	rows:[&lt;br /&gt;
		{&lt;br /&gt;
			menuElements: [&lt;br /&gt;
				{&lt;br /&gt;
					show: false, // whether the menuElement settings are expanded&lt;br /&gt;
					menuText&lt;br /&gt;
					menuElements: [ // if menuElement is elementType menu, will have child menuElements&lt;br /&gt;
					&lt;br /&gt;
					],&lt;br /&gt;
				},&lt;br /&gt;
				// ..&lt;br /&gt;
			]&lt;br /&gt;
		},&lt;br /&gt;
		// ..&lt;br /&gt;
	]&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== OnDrag ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;json&amp;quot;&amp;gt;&lt;br /&gt;
const dragStartRowIndex = useRef(null);&lt;br /&gt;
const dragPassRowIndex = useRef(null);&lt;br /&gt;
const [dragnamerow, setdragnamerow] = useState(null);&lt;br /&gt;
const [dragPassRowIndexState, setDragPassRowIndexState] = useState(null);&lt;br /&gt;
	&lt;br /&gt;
	&lt;br /&gt;
	&amp;lt;div&lt;br /&gt;
		dragable&lt;br /&gt;
		onDragStart={(e) =&amp;gt; {&lt;br /&gt;
			            dragStartRowIndex.current = rowIndex; //set value when clicked element&lt;br /&gt;
                        dragPassRowIndex.current = null; //set null when departed original position &lt;br /&gt;
                        setdragnamerow(&amp;quot;row&amp;quot;);&lt;br /&gt;
		}}&lt;br /&gt;
		onDragEnter={(e) =&amp;gt; {&lt;br /&gt;
			            if (dragnamerow === &amp;quot;row&amp;quot;) {&lt;br /&gt;
                            dragPassRowIndex.current = rowIndex;// change value when passed others element&lt;br /&gt;
                            setDragPassRowIndexState(rowIndex);&lt;br /&gt;
                          }&lt;br /&gt;
		}}&lt;br /&gt;
		onDragEnd={moveRows}&lt;br /&gt;
	&amp;gt;&lt;br /&gt;
	{&amp;quot;text&amp;quot;}&lt;br /&gt;
	&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
* onDragStart : when you started to click element&lt;br /&gt;
* onDragEnter : when you passed element&lt;br /&gt;
* onDragEnd : when you released holding&lt;br /&gt;
* set variable by useRef : for save data immediately&lt;br /&gt;
* set variable by useState : for Re-render&lt;br /&gt;
&lt;br /&gt;
== DragDrop ==&lt;br /&gt;
Under Construction&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;json&amp;quot;&amp;gt;&lt;br /&gt;
	//...&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== menuElements recursion == &lt;br /&gt;
&lt;br /&gt;
* Menu elements are nested to any level&lt;br /&gt;
* Structure of rows and menuElements in visible object matches structure of menuConfig/menuConfigSetting&lt;br /&gt;
&lt;br /&gt;
= Working documents =&lt;br /&gt;
&lt;br /&gt;
[[Category:Frontend pages| Configure MenuConfig]]&lt;/div&gt;</summary>
		<author><name>Kik</name></author>
	</entry>
	<entry>
		<id>https://izara.io/wiki/index.php?title=Frontend_Page_-_Configure_MenuConfig&amp;diff=2391</id>
		<title>Frontend Page - Configure MenuConfig</title>
		<link rel="alternate" type="text/html" href="https://izara.io/wiki/index.php?title=Frontend_Page_-_Configure_MenuConfig&amp;diff=2391"/>
		<updated>2023-06-22T04:26:44Z</updated>

		<summary type="html">&lt;p&gt;Kik: /* visibleObj Object */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Overview =&lt;br /&gt;
&lt;br /&gt;
Frontend page for creating and editing MenuConfigs&lt;br /&gt;
&lt;br /&gt;
= Repository =&lt;br /&gt;
&lt;br /&gt;
= visibleObj Object = &lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;json&amp;quot;&amp;gt;&lt;br /&gt;
let visibleObj = {&lt;br /&gt;
	visibleRowIndex: 0, // row index we have open on page&lt;br /&gt;
	visibleRenameRowIndex: 0, // row index currently renaming&lt;br /&gt;
	rows:[&lt;br /&gt;
		{&lt;br /&gt;
			menuElements: [&lt;br /&gt;
				{&lt;br /&gt;
					show: false, // whether the menuElement settings are expanded&lt;br /&gt;
					menuText&lt;br /&gt;
					menuElements: [ // if menuElement is elementType menu, will have child menuElements&lt;br /&gt;
					&lt;br /&gt;
					],&lt;br /&gt;
				},&lt;br /&gt;
				// ..&lt;br /&gt;
			]&lt;br /&gt;
		},&lt;br /&gt;
		// ..&lt;br /&gt;
	]&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== OnDrag ==&lt;br /&gt;
Under Construction&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;json&amp;quot;&amp;gt;&lt;br /&gt;
const dragStartRowIndex = useRef(null);&lt;br /&gt;
const dragPassRowIndex = useRef(null);&lt;br /&gt;
const [dragnamerow, setdragnamerow] = useState(null);&lt;br /&gt;
const [dragPassRowIndexState, setDragPassRowIndexState] = useState(null);&lt;br /&gt;
	&lt;br /&gt;
	&lt;br /&gt;
	&amp;lt;div&lt;br /&gt;
		dragable&lt;br /&gt;
		onDragStart={(e) =&amp;gt; {&lt;br /&gt;
			            dragStartRowIndex.current = rowIndex; //set value when clicked element&lt;br /&gt;
                        dragPassRowIndex.current = null; //set null when departed original position &lt;br /&gt;
                        setdragnamerow(&amp;quot;row&amp;quot;);&lt;br /&gt;
		}}&lt;br /&gt;
		onDragEnter={(e) =&amp;gt; {&lt;br /&gt;
			            if (dragnamerow === &amp;quot;row&amp;quot;) {&lt;br /&gt;
                            dragPassRowIndex.current = rowIndex;// change value when passed others element&lt;br /&gt;
                            setDragPassRowIndexState(rowIndex);&lt;br /&gt;
                          }&lt;br /&gt;
		}}&lt;br /&gt;
		onDragEnd={moveRows}&lt;br /&gt;
	&amp;gt;&lt;br /&gt;
	{&amp;quot;text&amp;quot;}&lt;br /&gt;
	&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
* onDragStart : when you started to click element&lt;br /&gt;
* onDragEnter : when you passed element&lt;br /&gt;
* onDragEnd : when you released holding&lt;br /&gt;
* set variable by useRef : for save data immediately&lt;br /&gt;
* set variable by useState : for Re-render&lt;br /&gt;
== menuElements recursion == &lt;br /&gt;
&lt;br /&gt;
* Menu elements are nested to any level&lt;br /&gt;
* Structure of rows and menuElements in visible object matches structure of menuConfig/menuConfigSetting&lt;br /&gt;
&lt;br /&gt;
= Working documents =&lt;br /&gt;
&lt;br /&gt;
[[Category:Frontend pages| Configure MenuConfig]]&lt;/div&gt;</summary>
		<author><name>Kik</name></author>
	</entry>
	<entry>
		<id>https://izara.io/wiki/index.php?title=Frontend_Page_-_Configure_MenuConfig&amp;diff=2388</id>
		<title>Frontend Page - Configure MenuConfig</title>
		<link rel="alternate" type="text/html" href="https://izara.io/wiki/index.php?title=Frontend_Page_-_Configure_MenuConfig&amp;diff=2388"/>
		<updated>2023-06-19T09:46:40Z</updated>

		<summary type="html">&lt;p&gt;Kik: /* OnDrag */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Overview =&lt;br /&gt;
&lt;br /&gt;
Frontend page for creating and editing MenuConfigs&lt;br /&gt;
&lt;br /&gt;
= Repository =&lt;br /&gt;
&lt;br /&gt;
= visibleObj Object = &lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;json&amp;quot;&amp;gt;&lt;br /&gt;
let visibleObj = {&lt;br /&gt;
	visibleRowIndex: 0, // row index we have open on page&lt;br /&gt;
	visibleRenameRowIndex: 0, // row index currently renaming&lt;br /&gt;
	rows:[&lt;br /&gt;
		{&lt;br /&gt;
			menuElements: [&lt;br /&gt;
				{&lt;br /&gt;
					show: false, // whether the menuElement settings are expanded&lt;br /&gt;
					menuText&lt;br /&gt;
					menuElements: [ // if menuElement is elementType menu, will have child menuElements&lt;br /&gt;
					&lt;br /&gt;
					],&lt;br /&gt;
				},&lt;br /&gt;
				// ..&lt;br /&gt;
			]&lt;br /&gt;
		},&lt;br /&gt;
		// ..&lt;br /&gt;
	]&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
* visibleRowIndex : identify visible position row&lt;br /&gt;
* visibleRenameRowIndex : identify row being renamed&lt;br /&gt;
* show : expand or collapse elements&lt;br /&gt;
&lt;br /&gt;
== OnDrag ==&lt;br /&gt;
Under Construction&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;json&amp;quot;&amp;gt;&lt;br /&gt;
const dragStartRowIndex = useRef(null);&lt;br /&gt;
const dragPassRowIndex = useRef(null);&lt;br /&gt;
const [dragnamerow, setdragnamerow] = useState(null);&lt;br /&gt;
const [dragPassRowIndexState, setDragPassRowIndexState] = useState(null);&lt;br /&gt;
	&lt;br /&gt;
	&lt;br /&gt;
	&amp;lt;div&lt;br /&gt;
		dragable&lt;br /&gt;
		onDragStart={(e) =&amp;gt; {&lt;br /&gt;
			            dragStartRowIndex.current = rowIndex; //set value when clicked element&lt;br /&gt;
                        dragPassRowIndex.current = null; //set null when departed original position &lt;br /&gt;
                        setdragnamerow(&amp;quot;row&amp;quot;);&lt;br /&gt;
		}}&lt;br /&gt;
		onDragEnter={(e) =&amp;gt; {&lt;br /&gt;
			            if (dragnamerow === &amp;quot;row&amp;quot;) {&lt;br /&gt;
                            dragPassRowIndex.current = rowIndex;// change value when passed others element&lt;br /&gt;
                            setDragPassRowIndexState(rowIndex);&lt;br /&gt;
                          }&lt;br /&gt;
		}}&lt;br /&gt;
		onDragEnd={moveRows}&lt;br /&gt;
	&amp;gt;&lt;br /&gt;
	{&amp;quot;text&amp;quot;}&lt;br /&gt;
	&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
* onDragStart : when you started to click element&lt;br /&gt;
* onDragEnter : when you passed element&lt;br /&gt;
* onDragEnd : when you released holding&lt;br /&gt;
* set variable by useRef : Unnecessary for re-render&lt;br /&gt;
* set variable by useState : Necessary for change data immediately&lt;br /&gt;
&lt;br /&gt;
== menuElements recursion == &lt;br /&gt;
&lt;br /&gt;
* Menu elements are nested to any level&lt;br /&gt;
* Structure of rows and menuElements in visible object matches structure of menuConfig/menuConfigSetting&lt;br /&gt;
&lt;br /&gt;
= Working documents =&lt;br /&gt;
&lt;br /&gt;
[[Category:Frontend pages| Configure MenuConfig]]&lt;/div&gt;</summary>
		<author><name>Kik</name></author>
	</entry>
	<entry>
		<id>https://izara.io/wiki/index.php?title=Frontend_Page_-_Configure_MenuConfig&amp;diff=2387</id>
		<title>Frontend Page - Configure MenuConfig</title>
		<link rel="alternate" type="text/html" href="https://izara.io/wiki/index.php?title=Frontend_Page_-_Configure_MenuConfig&amp;diff=2387"/>
		<updated>2023-06-19T09:33:03Z</updated>

		<summary type="html">&lt;p&gt;Kik: /* OnDrag */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Overview =&lt;br /&gt;
&lt;br /&gt;
Frontend page for creating and editing MenuConfigs&lt;br /&gt;
&lt;br /&gt;
= Repository =&lt;br /&gt;
&lt;br /&gt;
= visibleObj Object = &lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;json&amp;quot;&amp;gt;&lt;br /&gt;
let visibleObj = {&lt;br /&gt;
	visibleRowIndex: 0, // row index we have open on page&lt;br /&gt;
	visibleRenameRowIndex: 0, // row index currently renaming&lt;br /&gt;
	rows:[&lt;br /&gt;
		{&lt;br /&gt;
			menuElements: [&lt;br /&gt;
				{&lt;br /&gt;
					show: false, // whether the menuElement settings are expanded&lt;br /&gt;
					menuText&lt;br /&gt;
					menuElements: [ // if menuElement is elementType menu, will have child menuElements&lt;br /&gt;
					&lt;br /&gt;
					],&lt;br /&gt;
				},&lt;br /&gt;
				// ..&lt;br /&gt;
			]&lt;br /&gt;
		},&lt;br /&gt;
		// ..&lt;br /&gt;
	]&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
* visibleRowIndex : identify visible position row&lt;br /&gt;
* visibleRenameRowIndex : identify row being renamed&lt;br /&gt;
* show : expand or collapse elements&lt;br /&gt;
&lt;br /&gt;
== OnDrag ==&lt;br /&gt;
Under Construction&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;json&amp;quot;&amp;gt;&lt;br /&gt;
const dragStartRowIndex = useRef(null);&lt;br /&gt;
const dragPassRowIndex = useRef(null);&lt;br /&gt;
const [dragnamerow, setdragnamerow] = useState(null);&lt;br /&gt;
const [dragPassRowIndexState, setDragPassRowIndexState] = useState(null);&lt;br /&gt;
	&lt;br /&gt;
	&lt;br /&gt;
	&amp;lt;div&lt;br /&gt;
		dragable&lt;br /&gt;
		onDragStart={(e) =&amp;gt; {&lt;br /&gt;
			            dragStartRowIndex.current = rowIndex; //set value when clicked element&lt;br /&gt;
                        dragPassRowIndex.current = null;&lt;br /&gt;
                        setdragnamerow(&amp;quot;row&amp;quot;);&lt;br /&gt;
		}}&lt;br /&gt;
		onDragEnter={(e) =&amp;gt; {&lt;br /&gt;
			            if (dragnamerow === &amp;quot;row&amp;quot;) {&lt;br /&gt;
                            dragPassRowIndex.current = rowIndex;&lt;br /&gt;
                            setDragPassRowIndexState(rowIndex);&lt;br /&gt;
                          }&lt;br /&gt;
		}}&lt;br /&gt;
		onDragEnd={moveRows}&lt;br /&gt;
	&amp;gt;&lt;br /&gt;
	{&amp;quot;text&amp;quot;}&lt;br /&gt;
	&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
* onDragStart : when you started to click element&lt;br /&gt;
* onDragEnter : when you passed element&lt;br /&gt;
* onDragEnd : when you released holding&lt;br /&gt;
* set variable by useRef : Unnecessary for re-render&lt;br /&gt;
* set variable by useState : Necessary for change data immediately&lt;br /&gt;
&lt;br /&gt;
== menuElements recursion == &lt;br /&gt;
&lt;br /&gt;
* Menu elements are nested to any level&lt;br /&gt;
* Structure of rows and menuElements in visible object matches structure of menuConfig/menuConfigSetting&lt;br /&gt;
&lt;br /&gt;
= Working documents =&lt;br /&gt;
&lt;br /&gt;
[[Category:Frontend pages| Configure MenuConfig]]&lt;/div&gt;</summary>
		<author><name>Kik</name></author>
	</entry>
	<entry>
		<id>https://izara.io/wiki/index.php?title=Frontend_Page_-_Configure_MenuConfig&amp;diff=2386</id>
		<title>Frontend Page - Configure MenuConfig</title>
		<link rel="alternate" type="text/html" href="https://izara.io/wiki/index.php?title=Frontend_Page_-_Configure_MenuConfig&amp;diff=2386"/>
		<updated>2023-06-19T09:14:05Z</updated>

		<summary type="html">&lt;p&gt;Kik: /* OnDrag */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Overview =&lt;br /&gt;
&lt;br /&gt;
Frontend page for creating and editing MenuConfigs&lt;br /&gt;
&lt;br /&gt;
= Repository =&lt;br /&gt;
&lt;br /&gt;
= visibleObj Object = &lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;json&amp;quot;&amp;gt;&lt;br /&gt;
let visibleObj = {&lt;br /&gt;
	visibleRowIndex: 0, // row index we have open on page&lt;br /&gt;
	visibleRenameRowIndex: 0, // row index currently renaming&lt;br /&gt;
	rows:[&lt;br /&gt;
		{&lt;br /&gt;
			menuElements: [&lt;br /&gt;
				{&lt;br /&gt;
					show: false, // whether the menuElement settings are expanded&lt;br /&gt;
					menuText&lt;br /&gt;
					menuElements: [ // if menuElement is elementType menu, will have child menuElements&lt;br /&gt;
					&lt;br /&gt;
					],&lt;br /&gt;
				},&lt;br /&gt;
				// ..&lt;br /&gt;
			]&lt;br /&gt;
		},&lt;br /&gt;
		// ..&lt;br /&gt;
	]&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
* visibleRowIndex : identify visible position row&lt;br /&gt;
* visibleRenameRowIndex : identify row being renamed&lt;br /&gt;
* show : expand or collapse elements&lt;br /&gt;
&lt;br /&gt;
== OnDrag ==&lt;br /&gt;
Under Construction&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;json&amp;quot;&amp;gt;&lt;br /&gt;
const dragStartRowIndex = useRef(null);&lt;br /&gt;
const dragPassRowIndex = useRef(null);&lt;br /&gt;
const [dragnamerow, setdragnamerow] = useState(null);&lt;br /&gt;
const [dragPassRowIndexState, setDragPassRowIndexState] = useState(null);&lt;br /&gt;
	&lt;br /&gt;
	&lt;br /&gt;
	&amp;lt;div&lt;br /&gt;
		dragable&lt;br /&gt;
		onDragStart={(e) =&amp;gt; {&lt;br /&gt;
			            dragStartRowIndex.current = rowIndex; //set value when clicked element&lt;br /&gt;
                        dragPassRowIndex.current = null;&lt;br /&gt;
                        setdragnamerow(&amp;quot;row&amp;quot;);&lt;br /&gt;
		}}&lt;br /&gt;
		onDragEnter={(e) =&amp;gt; {&lt;br /&gt;
			            if (dragnamerow === &amp;quot;row&amp;quot;) {&lt;br /&gt;
                            dragPassRowIndex.current = rowIndex;&lt;br /&gt;
                            setDragPassRowIndexState(rowIndex);&lt;br /&gt;
                          }&lt;br /&gt;
		}}&lt;br /&gt;
		onDragEnd={moveRows}&lt;br /&gt;
	&amp;gt;&lt;br /&gt;
	{&amp;quot;text&amp;quot;}&lt;br /&gt;
	&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
* onDragStart : when you started to click element&lt;br /&gt;
* onDragEnter : when you passed element&lt;br /&gt;
* onDragEnd : when you released holding&lt;br /&gt;
* set variable by useRef : //Unnecessary for re-render&lt;br /&gt;
* set variable by useState : //Necessary for change data immediately&lt;br /&gt;
&lt;br /&gt;
== menuElements recursion == &lt;br /&gt;
&lt;br /&gt;
* Menu elements are nested to any level&lt;br /&gt;
* Structure of rows and menuElements in visible object matches structure of menuConfig/menuConfigSetting&lt;br /&gt;
&lt;br /&gt;
= Working documents =&lt;br /&gt;
&lt;br /&gt;
[[Category:Frontend pages| Configure MenuConfig]]&lt;/div&gt;</summary>
		<author><name>Kik</name></author>
	</entry>
	<entry>
		<id>https://izara.io/wiki/index.php?title=Frontend_Page_-_Configure_MenuConfig&amp;diff=2385</id>
		<title>Frontend Page - Configure MenuConfig</title>
		<link rel="alternate" type="text/html" href="https://izara.io/wiki/index.php?title=Frontend_Page_-_Configure_MenuConfig&amp;diff=2385"/>
		<updated>2023-06-19T08:49:50Z</updated>

		<summary type="html">&lt;p&gt;Kik: /* OnDrag */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Overview =&lt;br /&gt;
&lt;br /&gt;
Frontend page for creating and editing MenuConfigs&lt;br /&gt;
&lt;br /&gt;
= Repository =&lt;br /&gt;
&lt;br /&gt;
= visibleObj Object = &lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;json&amp;quot;&amp;gt;&lt;br /&gt;
let visibleObj = {&lt;br /&gt;
	visibleRowIndex: 0, // row index we have open on page&lt;br /&gt;
	visibleRenameRowIndex: 0, // row index currently renaming&lt;br /&gt;
	rows:[&lt;br /&gt;
		{&lt;br /&gt;
			menuElements: [&lt;br /&gt;
				{&lt;br /&gt;
					show: false, // whether the menuElement settings are expanded&lt;br /&gt;
					menuText&lt;br /&gt;
					menuElements: [ // if menuElement is elementType menu, will have child menuElements&lt;br /&gt;
					&lt;br /&gt;
					],&lt;br /&gt;
				},&lt;br /&gt;
				// ..&lt;br /&gt;
			]&lt;br /&gt;
		},&lt;br /&gt;
		// ..&lt;br /&gt;
	]&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
* visibleRowIndex : identify visible position row&lt;br /&gt;
* visibleRenameRowIndex : identify row being renamed&lt;br /&gt;
* show : expand or collapse elements&lt;br /&gt;
&lt;br /&gt;
== OnDrag ==&lt;br /&gt;
Under Construction&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;json&amp;quot;&amp;gt;&lt;br /&gt;
const dragStartRowIndex = useRef(null);&lt;br /&gt;
const dragPassRowIndex = useRef(null);&lt;br /&gt;
const [dragnamerow, setdragnamerow] = useState(null);&lt;br /&gt;
const [dragPassRowIndexState, setDragPassRowIndexState] = useState(null);&lt;br /&gt;
	&lt;br /&gt;
	&lt;br /&gt;
	&amp;lt;div&lt;br /&gt;
		dragable&lt;br /&gt;
		onDragStart={(e) =&amp;gt; {&lt;br /&gt;
			dragStartRowIndex.current = rowIndex; //set value when clicked element&lt;br /&gt;
                        dragPassRowIndex.current = null;&lt;br /&gt;
                        setdragnamerow(&amp;quot;row&amp;quot;);&lt;br /&gt;
		}}&lt;br /&gt;
		onDragEnter={(e) =&amp;gt; {&lt;br /&gt;
			if (dragnamerow === &amp;quot;row&amp;quot;) {&lt;br /&gt;
                            dragPassRowIndex.current = rowIndex;&lt;br /&gt;
                            setDragPassRowIndexState(rowIndex);&lt;br /&gt;
                          }&lt;br /&gt;
		}}&lt;br /&gt;
		onDragEnd={moveRows}&lt;br /&gt;
	&amp;gt;&lt;br /&gt;
	{&amp;quot;text&amp;quot;}&lt;br /&gt;
	&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
* onDragStart : when you started to click element&lt;br /&gt;
* onDragEnter : when you passed element&lt;br /&gt;
* onDragEnd : when you released holding&lt;br /&gt;
* set variable by useRef : //Unnecessary for re-render&lt;br /&gt;
* set variable by useState : //Necessary for change data immediately&lt;br /&gt;
&lt;br /&gt;
== menuElements recursion == &lt;br /&gt;
&lt;br /&gt;
* Menu elements are nested to any level&lt;br /&gt;
* Structure of rows and menuElements in visible object matches structure of menuConfig/menuConfigSetting&lt;br /&gt;
&lt;br /&gt;
= Working documents =&lt;br /&gt;
&lt;br /&gt;
[[Category:Frontend pages| Configure MenuConfig]]&lt;/div&gt;</summary>
		<author><name>Kik</name></author>
	</entry>
	<entry>
		<id>https://izara.io/wiki/index.php?title=Frontend_Page_-_Configure_MenuConfig&amp;diff=2384</id>
		<title>Frontend Page - Configure MenuConfig</title>
		<link rel="alternate" type="text/html" href="https://izara.io/wiki/index.php?title=Frontend_Page_-_Configure_MenuConfig&amp;diff=2384"/>
		<updated>2023-06-19T06:36:03Z</updated>

		<summary type="html">&lt;p&gt;Kik: /* OnDrag */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Overview =&lt;br /&gt;
&lt;br /&gt;
Frontend page for creating and editing MenuConfigs&lt;br /&gt;
&lt;br /&gt;
= Repository =&lt;br /&gt;
&lt;br /&gt;
= visibleObj Object = &lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;json&amp;quot;&amp;gt;&lt;br /&gt;
let visibleObj = {&lt;br /&gt;
	visibleRowIndex: 0, // row index we have open on page&lt;br /&gt;
	visibleRenameRowIndex: 0, // row index currently renaming&lt;br /&gt;
	rows:[&lt;br /&gt;
		{&lt;br /&gt;
			menuElements: [&lt;br /&gt;
				{&lt;br /&gt;
					show: false, // whether the menuElement settings are expanded&lt;br /&gt;
					menuText&lt;br /&gt;
					menuElements: [ // if menuElement is elementType menu, will have child menuElements&lt;br /&gt;
					&lt;br /&gt;
					],&lt;br /&gt;
				},&lt;br /&gt;
				// ..&lt;br /&gt;
			]&lt;br /&gt;
		},&lt;br /&gt;
		// ..&lt;br /&gt;
	]&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
* visibleRowIndex : identify visible position row&lt;br /&gt;
* visibleRenameRowIndex : identify row being renamed&lt;br /&gt;
* show : expand or collapse elements&lt;br /&gt;
&lt;br /&gt;
== OnDrag ==&lt;br /&gt;
Under Construction&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;json&amp;quot;&amp;gt;&lt;br /&gt;
const dragStartRowIndex = useRef(null);&lt;br /&gt;
const dragPassRowIndex = useRef(null);&lt;br /&gt;
const [dragnamerow, setdragnamerow] = useState(null);&lt;br /&gt;
const [dragPassRowIndexState, setDragPassRowIndexState] = useState(null);&lt;br /&gt;
	&lt;br /&gt;
	&lt;br /&gt;
	&amp;lt;div&lt;br /&gt;
		dragable&lt;br /&gt;
		onDragStart={(e) =&amp;gt; {&lt;br /&gt;
			dragStartRowIndex.current = rowIndex;&lt;br /&gt;
                        dragPassRowIndex.current = null;&lt;br /&gt;
                        setdragnamerow(&amp;quot;row&amp;quot;);&lt;br /&gt;
		}}&lt;br /&gt;
		onDragEnter={(e) =&amp;gt; {&lt;br /&gt;
			if (dragnamerow === &amp;quot;row&amp;quot;) {&lt;br /&gt;
                            dragPassRowIndex.current = rowIndex;&lt;br /&gt;
                            setDragPassRowIndexState(rowIndex)&lt;br /&gt;
                          }&lt;br /&gt;
		}}&lt;br /&gt;
		onDragEnd={moveRows}&lt;br /&gt;
	&amp;gt;&lt;br /&gt;
	{&amp;quot;text&amp;quot;}&lt;br /&gt;
	&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
* onDragStart : when you started to click element&lt;br /&gt;
* onDragEnter : when you passed element&lt;br /&gt;
* onDragEnd : when you released holding&lt;br /&gt;
&lt;br /&gt;
== menuElements recursion == &lt;br /&gt;
&lt;br /&gt;
* Menu elements are nested to any level&lt;br /&gt;
* Structure of rows and menuElements in visible object matches structure of menuConfig/menuConfigSetting&lt;br /&gt;
&lt;br /&gt;
= Working documents =&lt;br /&gt;
&lt;br /&gt;
[[Category:Frontend pages| Configure MenuConfig]]&lt;/div&gt;</summary>
		<author><name>Kik</name></author>
	</entry>
	<entry>
		<id>https://izara.io/wiki/index.php?title=Frontend_Page_-_Configure_MenuConfig&amp;diff=2383</id>
		<title>Frontend Page - Configure MenuConfig</title>
		<link rel="alternate" type="text/html" href="https://izara.io/wiki/index.php?title=Frontend_Page_-_Configure_MenuConfig&amp;diff=2383"/>
		<updated>2023-06-19T06:10:18Z</updated>

		<summary type="html">&lt;p&gt;Kik: /* OnDrag */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Overview =&lt;br /&gt;
&lt;br /&gt;
Frontend page for creating and editing MenuConfigs&lt;br /&gt;
&lt;br /&gt;
= Repository =&lt;br /&gt;
&lt;br /&gt;
= visibleObj Object = &lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;json&amp;quot;&amp;gt;&lt;br /&gt;
let visibleObj = {&lt;br /&gt;
	visibleRowIndex: 0, // row index we have open on page&lt;br /&gt;
	visibleRenameRowIndex: 0, // row index currently renaming&lt;br /&gt;
	rows:[&lt;br /&gt;
		{&lt;br /&gt;
			menuElements: [&lt;br /&gt;
				{&lt;br /&gt;
					show: false, // whether the menuElement settings are expanded&lt;br /&gt;
					menuText&lt;br /&gt;
					menuElements: [ // if menuElement is elementType menu, will have child menuElements&lt;br /&gt;
					&lt;br /&gt;
					],&lt;br /&gt;
				},&lt;br /&gt;
				// ..&lt;br /&gt;
			]&lt;br /&gt;
		},&lt;br /&gt;
		// ..&lt;br /&gt;
	]&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
* visibleRowIndex : identify visible position row&lt;br /&gt;
* visibleRenameRowIndex : identify row being renamed&lt;br /&gt;
* show : expand or collapse elements&lt;br /&gt;
&lt;br /&gt;
== OnDrag ==&lt;br /&gt;
Under Construction&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;json&amp;quot;&amp;gt;&lt;br /&gt;
	&amp;lt;div&lt;br /&gt;
		dragable&lt;br /&gt;
		onDragStart={(e) =&amp;gt; {}}&lt;br /&gt;
		onDragEnter={(e) =&amp;gt; {}}&lt;br /&gt;
		onDragEnd={}&lt;br /&gt;
	&amp;gt;&lt;br /&gt;
	{&amp;quot;text&amp;quot;}&lt;br /&gt;
	&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
* onDragStart : when you started to click element&lt;br /&gt;
* onDragEnter : when you passed element&lt;br /&gt;
* onDragEnd : when you released holding&lt;br /&gt;
&lt;br /&gt;
== menuElements recursion == &lt;br /&gt;
&lt;br /&gt;
* Menu elements are nested to any level&lt;br /&gt;
* Structure of rows and menuElements in visible object matches structure of menuConfig/menuConfigSetting&lt;br /&gt;
&lt;br /&gt;
= Working documents =&lt;br /&gt;
&lt;br /&gt;
[[Category:Frontend pages| Configure MenuConfig]]&lt;/div&gt;</summary>
		<author><name>Kik</name></author>
	</entry>
	<entry>
		<id>https://izara.io/wiki/index.php?title=Frontend_Page_-_Configure_MenuConfig&amp;diff=2382</id>
		<title>Frontend Page - Configure MenuConfig</title>
		<link rel="alternate" type="text/html" href="https://izara.io/wiki/index.php?title=Frontend_Page_-_Configure_MenuConfig&amp;diff=2382"/>
		<updated>2023-06-16T10:02:28Z</updated>

		<summary type="html">&lt;p&gt;Kik: /* visibleObj Object */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Overview =&lt;br /&gt;
&lt;br /&gt;
Frontend page for creating and editing MenuConfigs&lt;br /&gt;
&lt;br /&gt;
= Repository =&lt;br /&gt;
&lt;br /&gt;
= visibleObj Object = &lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;json&amp;quot;&amp;gt;&lt;br /&gt;
let visibleObj = {&lt;br /&gt;
	visibleRowIndex: 0, // row index we have open on page&lt;br /&gt;
	visibleRenameRowIndex: 0, // row index currently renaming&lt;br /&gt;
	rows:[&lt;br /&gt;
		{&lt;br /&gt;
			menuElements: [&lt;br /&gt;
				{&lt;br /&gt;
					show: false, // whether the menuElement settings are expanded&lt;br /&gt;
					menuText&lt;br /&gt;
					menuElements: [ // if menuElement is elementType menu, will have child menuElements&lt;br /&gt;
					&lt;br /&gt;
					],&lt;br /&gt;
				},&lt;br /&gt;
				// ..&lt;br /&gt;
			]&lt;br /&gt;
		},&lt;br /&gt;
		// ..&lt;br /&gt;
	]&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
* visibleRowIndex : identify visible position row&lt;br /&gt;
* visibleRenameRowIndex : identify row being renamed&lt;br /&gt;
* show : expand or collapse elements&lt;br /&gt;
&lt;br /&gt;
== OnDrag ==&lt;br /&gt;
Under Construction&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;json&amp;quot;&amp;gt;&lt;br /&gt;
	&amp;lt;div&lt;br /&gt;
		dragable&lt;br /&gt;
		onDragStart={(e) =&amp;gt; {}&lt;br /&gt;
		onDragEnter={(e) =&amp;gt; {}&lt;br /&gt;
		onDragEnd={}&lt;br /&gt;
	&amp;gt;&lt;br /&gt;
	{&amp;quot;text&amp;quot;}&lt;br /&gt;
	&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
* onDragStart : when you started to click element&lt;br /&gt;
* onDragEnter : when you passed element&lt;br /&gt;
* onDragEnd : when you released holding&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== menuElements recursion == &lt;br /&gt;
&lt;br /&gt;
* Menu elements are nested to any level&lt;br /&gt;
* Structure of rows and menuElements in visible object matches structure of menuConfig/menuConfigSetting&lt;br /&gt;
&lt;br /&gt;
= Working documents =&lt;br /&gt;
&lt;br /&gt;
[[Category:Frontend pages| Configure MenuConfig]]&lt;/div&gt;</summary>
		<author><name>Kik</name></author>
	</entry>
	<entry>
		<id>https://izara.io/wiki/index.php?title=Service_-_Menu_Config&amp;diff=2381</id>
		<title>Service - Menu Config</title>
		<link rel="alternate" type="text/html" href="https://izara.io/wiki/index.php?title=Service_-_Menu_Config&amp;diff=2381"/>
		<updated>2023-06-16T10:01:57Z</updated>

		<summary type="html">&lt;p&gt;Kik: /* menuConfig Object */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Overview =&lt;br /&gt;
&lt;br /&gt;
Manages configuration for site menus created by users and used in different areas of the project.&lt;br /&gt;
&lt;br /&gt;
= Repository =&lt;br /&gt;
&lt;br /&gt;
https://bitbucket.org/izara-core-shared/izara-core-shared-menu-config&lt;br /&gt;
&lt;br /&gt;
= DynamoDB tables =&lt;br /&gt;
&lt;br /&gt;
== MenuConfigMain ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;&lt;br /&gt;
{&lt;br /&gt;
	menuConfigId: &amp;quot;xx&amp;quot;, // {useCase}_{random uuid}&lt;br /&gt;
	menuConfig: &amp;quot;xx&amp;quot;, // json encoded object of configuration&lt;br /&gt;
	menuConfigName: &amp;quot;yy&amp;quot;, // user specified name of the config&lt;br /&gt;
	userId: &amp;quot;xx&amp;quot;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* partition key: menuConfigId&lt;br /&gt;
* sort key: {none}&lt;br /&gt;
* save menuConfig according to useCase, not yet applied but could sub areas of the project into different use cases, handled by the same Menu Config service&lt;br /&gt;
&lt;br /&gt;
== UsersMenuConfigs ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;&lt;br /&gt;
{&lt;br /&gt;
	userId: &amp;quot;xx&amp;quot; // user who owns the menuConfig&lt;br /&gt;
	menuConfigId: &amp;quot;xx&amp;quot;,&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* partition key: userId&lt;br /&gt;
* sort key: menuConfigId&lt;br /&gt;
&lt;br /&gt;
= menuConfig Object = &lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;json&amp;quot;&amp;gt;&lt;br /&gt;
{&lt;br /&gt;
	menuRows:[&lt;br /&gt;
		{&lt;br /&gt;
			rowName: &amp;quot;xx&amp;quot;, // used when configuring only as a reference&lt;br /&gt;
			menuElements: [&lt;br /&gt;
				{&lt;br /&gt;
					elementType: &amp;quot;menu&amp;quot;&lt;br /&gt;
					menuElements: [&lt;br /&gt;
						{&lt;br /&gt;
							elementType: &amp;quot;staticUrl&amp;quot;&lt;br /&gt;
							url: &amp;quot;xxx&amp;quot;,&lt;br /&gt;
						},&lt;br /&gt;
						{&lt;br /&gt;
							elementType: &amp;quot;projectLink&amp;quot;&lt;br /&gt;
							service: &amp;quot;xx&amp;quot;,&lt;br /&gt;
							resource: &amp;quot;xx&amp;quot;,&lt;br /&gt;
							action: &amp;quot;xx&amp;quot;,&lt;br /&gt;
						},&lt;br /&gt;
						{&lt;br /&gt;
							elementType: &amp;quot;plainText&amp;quot;&lt;br /&gt;
							plainText: &amp;quot;xxx&amp;quot;,&lt;br /&gt;
						},&lt;br /&gt;
					],&lt;br /&gt;
				},&lt;br /&gt;
				{&lt;br /&gt;
					elementType: &amp;quot;projectMenu&amp;quot;, // used for the main project menu&lt;br /&gt;
				}&lt;br /&gt;
				// ..&lt;br /&gt;
			]&lt;br /&gt;
		},&lt;br /&gt;
		// ..&lt;br /&gt;
	]&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= Working documents =&lt;br /&gt;
&lt;br /&gt;
[[:Category:Working_documents - Menu Config|Menu Config]]&lt;br /&gt;
&lt;br /&gt;
[[Category:Backend services| Menu Config]]&lt;/div&gt;</summary>
		<author><name>Kik</name></author>
	</entry>
	<entry>
		<id>https://izara.io/wiki/index.php?title=Frontend_Page_-_Configure_MenuConfig&amp;diff=2380</id>
		<title>Frontend Page - Configure MenuConfig</title>
		<link rel="alternate" type="text/html" href="https://izara.io/wiki/index.php?title=Frontend_Page_-_Configure_MenuConfig&amp;diff=2380"/>
		<updated>2023-06-16T10:01:02Z</updated>

		<summary type="html">&lt;p&gt;Kik: /* visibleObj Object */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Overview =&lt;br /&gt;
&lt;br /&gt;
Frontend page for creating and editing MenuConfigs&lt;br /&gt;
&lt;br /&gt;
= Repository =&lt;br /&gt;
&lt;br /&gt;
= visibleObj Object = &lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;json&amp;quot;&amp;gt;&lt;br /&gt;
let visibleObj = {&lt;br /&gt;
	visibleRowIndex: 0, // row index we have open on page&lt;br /&gt;
	visibleRenameRowIndex: 0, // row index currently renaming&lt;br /&gt;
	rows:[&lt;br /&gt;
		{&lt;br /&gt;
			menuElements: [&lt;br /&gt;
				{&lt;br /&gt;
					show: false, // whether the menuElement settings are expanded&lt;br /&gt;
					menuText&lt;br /&gt;
					menuElements: [ // if menuElement is elementType menu, will have child menuElements&lt;br /&gt;
					&lt;br /&gt;
					],&lt;br /&gt;
				},&lt;br /&gt;
				// ..&lt;br /&gt;
			]&lt;br /&gt;
		},&lt;br /&gt;
		// ..&lt;br /&gt;
	]&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
* visibleRowIndex : identify visible position row&lt;br /&gt;
* visibleRenameRowIndex : identify row being renamed&lt;br /&gt;
* show : expand or collapse elements&lt;br /&gt;
&lt;br /&gt;
== menuElements recursion == &lt;br /&gt;
&lt;br /&gt;
* Menu elements are nested to any level&lt;br /&gt;
* Structure of rows and menuElements in visible object matches structure of menuConfig/menuConfigSetting&lt;br /&gt;
&lt;br /&gt;
= Working documents =&lt;br /&gt;
&lt;br /&gt;
[[Category:Frontend pages| Configure MenuConfig]]&lt;/div&gt;</summary>
		<author><name>Kik</name></author>
	</entry>
	<entry>
		<id>https://izara.io/wiki/index.php?title=Frontend_Page_-_Configure_MenuConfig&amp;diff=2379</id>
		<title>Frontend Page - Configure MenuConfig</title>
		<link rel="alternate" type="text/html" href="https://izara.io/wiki/index.php?title=Frontend_Page_-_Configure_MenuConfig&amp;diff=2379"/>
		<updated>2023-06-16T09:53:27Z</updated>

		<summary type="html">&lt;p&gt;Kik: /* visibleObj Object */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Overview =&lt;br /&gt;
&lt;br /&gt;
Frontend page for creating and editing MenuConfigs&lt;br /&gt;
&lt;br /&gt;
= Repository =&lt;br /&gt;
&lt;br /&gt;
= visibleObj Object = &lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;json&amp;quot;&amp;gt;&lt;br /&gt;
let visibleObj = {&lt;br /&gt;
	visibleRowIndex: 0, // row index we have open on page&lt;br /&gt;
	visibleRenameRowIndex: 0, // row index currently renaming&lt;br /&gt;
	rows:[&lt;br /&gt;
		{&lt;br /&gt;
			menuElements: [&lt;br /&gt;
				{&lt;br /&gt;
					show: false, // whether the menuElement settings are expanded&lt;br /&gt;
					menuText&lt;br /&gt;
					menuElements: [ // if menuElement is elementType menu, will have child menuElements&lt;br /&gt;
					&lt;br /&gt;
					],&lt;br /&gt;
				},&lt;br /&gt;
				// ..&lt;br /&gt;
			]&lt;br /&gt;
		},&lt;br /&gt;
		// ..&lt;br /&gt;
	]&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
* visibleRowIndex : identify visible position row&lt;br /&gt;
* visibleRenameRowIndex : identify row being renamed&lt;br /&gt;
&lt;br /&gt;
== menuElements recursion == &lt;br /&gt;
&lt;br /&gt;
* Menu elements are nested to any level&lt;br /&gt;
* Structure of rows and menuElements in visible object matches structure of menuConfig/menuConfigSetting&lt;br /&gt;
&lt;br /&gt;
= Working documents =&lt;br /&gt;
&lt;br /&gt;
[[Category:Frontend pages| Configure MenuConfig]]&lt;/div&gt;</summary>
		<author><name>Kik</name></author>
	</entry>
	<entry>
		<id>https://izara.io/wiki/index.php?title=Service_-_Menu_Config&amp;diff=2378</id>
		<title>Service - Menu Config</title>
		<link rel="alternate" type="text/html" href="https://izara.io/wiki/index.php?title=Service_-_Menu_Config&amp;diff=2378"/>
		<updated>2023-06-16T08:58:14Z</updated>

		<summary type="html">&lt;p&gt;Kik: /* Visible Object */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Overview =&lt;br /&gt;
&lt;br /&gt;
Manages configuration for site menus created by users and used in different areas of the project.&lt;br /&gt;
&lt;br /&gt;
= Repository =&lt;br /&gt;
&lt;br /&gt;
https://bitbucket.org/izara-core-shared/izara-core-shared-menu-config&lt;br /&gt;
&lt;br /&gt;
= DynamoDB tables =&lt;br /&gt;
&lt;br /&gt;
== MenuConfigMain ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;&lt;br /&gt;
{&lt;br /&gt;
	menuConfigId: &amp;quot;xx&amp;quot;, // {useCase}_{random uuid}&lt;br /&gt;
	menuConfig: &amp;quot;xx&amp;quot;, // json encoded object of configuration&lt;br /&gt;
	menuConfigName: &amp;quot;yy&amp;quot;, // user specified name of the config&lt;br /&gt;
	userId: &amp;quot;xx&amp;quot;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* partition key: menuConfigId&lt;br /&gt;
* sort key: {none}&lt;br /&gt;
* save menuConfig according to useCase, not yet applied but could sub areas of the project into different use cases, handled by the same Menu Config service&lt;br /&gt;
&lt;br /&gt;
== UsersMenuConfigs ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;&lt;br /&gt;
{&lt;br /&gt;
	userId: &amp;quot;xx&amp;quot; // user who owns the menuConfig&lt;br /&gt;
	menuConfigId: &amp;quot;xx&amp;quot;,&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* partition key: userId&lt;br /&gt;
* sort key: menuConfigId&lt;br /&gt;
&lt;br /&gt;
= menuConfig Object = &lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;json&amp;quot;&amp;gt;&lt;br /&gt;
{&lt;br /&gt;
	menuRows:[&lt;br /&gt;
		{&lt;br /&gt;
			rowName: &amp;quot;xx&amp;quot;, // used when configuring only as a reference&lt;br /&gt;
			menuElements: [&lt;br /&gt;
				{&lt;br /&gt;
					elementType: &amp;quot;menu&amp;quot;&lt;br /&gt;
					menuElements: [&lt;br /&gt;
						{&lt;br /&gt;
							elementType: &amp;quot;staticUrl&amp;quot;&lt;br /&gt;
							url: &amp;quot;xxx&amp;quot;,&lt;br /&gt;
						},&lt;br /&gt;
						{&lt;br /&gt;
							elementType: &amp;quot;projectLink&amp;quot;&lt;br /&gt;
							service: &amp;quot;xx&amp;quot;,&lt;br /&gt;
							resource: &amp;quot;xx&amp;quot;,&lt;br /&gt;
							action: &amp;quot;xx&amp;quot;,&lt;br /&gt;
						},&lt;br /&gt;
						{&lt;br /&gt;
							elementType: &amp;quot;plainText&amp;quot;&lt;br /&gt;
							plainText: &amp;quot;xxx&amp;quot;,&lt;br /&gt;
						},&lt;br /&gt;
					],&lt;br /&gt;
				},&lt;br /&gt;
				{&lt;br /&gt;
					elementType: &amp;quot;projectMenu&amp;quot;, // used for the main project menu&lt;br /&gt;
				}&lt;br /&gt;
				// ..&lt;br /&gt;
			]&lt;br /&gt;
		},&lt;br /&gt;
		// ..&lt;br /&gt;
	]&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Visible Object == &lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;json&amp;quot;&amp;gt;&lt;br /&gt;
let visibleObj = {&lt;br /&gt;
	rows: [&lt;br /&gt;
		{&lt;br /&gt;
			menuElements: [&lt;br /&gt;
				{&lt;br /&gt;
					show: false,&lt;br /&gt;
					menuElements : [],&lt;br /&gt;
				},&lt;br /&gt;
				// ..&lt;br /&gt;
			], //Recursive function&lt;br /&gt;
		},&lt;br /&gt;
		//..&lt;br /&gt;
	],&lt;br /&gt;
	visibleRowIndex: 0, //[Top level]&lt;br /&gt;
	visibleRenameRowIndex: null, //[Top level]&lt;br /&gt;
};&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* visibleRowIndex : identify visible position each row&lt;br /&gt;
* visibleRenameRowIndex : use control css button was visible or selected&lt;br /&gt;
&lt;br /&gt;
== Visible object in Recursive Function ==&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;json&amp;quot;&amp;gt;&lt;br /&gt;
    let visibleObj = { &lt;br /&gt;
      show: false,&lt;br /&gt;
      menuElements: [],&lt;br /&gt;
    };&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
* show : switch false or true&lt;br /&gt;
&lt;br /&gt;
== OnDrag ==&lt;br /&gt;
Under Construction&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;json&amp;quot;&amp;gt;&lt;br /&gt;
	&amp;lt;div&lt;br /&gt;
		dragable&lt;br /&gt;
		onDragStart={(e) =&amp;gt; {}&lt;br /&gt;
		onDragEnter={(e) =&amp;gt; {}&lt;br /&gt;
		onDragEnd={}&lt;br /&gt;
	&amp;gt;&lt;br /&gt;
	{&amp;quot;text&amp;quot;}&lt;br /&gt;
	&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
* onDragStart : when you started to click element&lt;br /&gt;
* onDragEnter : when you passed element&lt;br /&gt;
* onDragEnd : when you released holding&lt;br /&gt;
&lt;br /&gt;
= Working documents =&lt;br /&gt;
&lt;br /&gt;
[[:Category:Working_documents - Menu Config|Menu Config]]&lt;br /&gt;
&lt;br /&gt;
[[Category:Backend services| Menu Config]]&lt;/div&gt;</summary>
		<author><name>Kik</name></author>
	</entry>
	<entry>
		<id>https://izara.io/wiki/index.php?title=Service_-_Menu_Config&amp;diff=2377</id>
		<title>Service - Menu Config</title>
		<link rel="alternate" type="text/html" href="https://izara.io/wiki/index.php?title=Service_-_Menu_Config&amp;diff=2377"/>
		<updated>2023-06-16T05:53:27Z</updated>

		<summary type="html">&lt;p&gt;Kik: /* OnDrag */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Overview =&lt;br /&gt;
&lt;br /&gt;
Manages configuration for site menus created by users and used in different areas of the project.&lt;br /&gt;
&lt;br /&gt;
= Repository =&lt;br /&gt;
&lt;br /&gt;
https://bitbucket.org/izara-core-shared/izara-core-shared-menu-config&lt;br /&gt;
&lt;br /&gt;
= DynamoDB tables =&lt;br /&gt;
&lt;br /&gt;
== MenuConfigMain ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;&lt;br /&gt;
{&lt;br /&gt;
	menuConfigId: &amp;quot;xx&amp;quot;, // {useCase}_{random uuid}&lt;br /&gt;
	menuConfig: &amp;quot;xx&amp;quot;, // json encoded object of configuration&lt;br /&gt;
	menuConfigName: &amp;quot;yy&amp;quot;, // user specified name of the config&lt;br /&gt;
	userId: &amp;quot;xx&amp;quot;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* partition key: menuConfigId&lt;br /&gt;
* sort key: {none}&lt;br /&gt;
* save menuConfig according to useCase, not yet applied but could sub areas of the project into different use cases, handled by the same Menu Config service&lt;br /&gt;
&lt;br /&gt;
== UsersMenuConfigs ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;&lt;br /&gt;
{&lt;br /&gt;
	userId: &amp;quot;xx&amp;quot; // user who owns the menuConfig&lt;br /&gt;
	menuConfigId: &amp;quot;xx&amp;quot;,&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* partition key: userId&lt;br /&gt;
* sort key: menuConfigId&lt;br /&gt;
&lt;br /&gt;
= menuConfig Object = &lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;json&amp;quot;&amp;gt;&lt;br /&gt;
{&lt;br /&gt;
	menuRows:[&lt;br /&gt;
		{&lt;br /&gt;
			rowName: &amp;quot;xx&amp;quot;, // used when configuring only as a reference&lt;br /&gt;
			menuElements: [&lt;br /&gt;
				{&lt;br /&gt;
					elementType: &amp;quot;menu&amp;quot;&lt;br /&gt;
					menuElements: [&lt;br /&gt;
						{&lt;br /&gt;
							elementType: &amp;quot;staticUrl&amp;quot;&lt;br /&gt;
							url: &amp;quot;xxx&amp;quot;,&lt;br /&gt;
						},&lt;br /&gt;
						{&lt;br /&gt;
							elementType: &amp;quot;projectLink&amp;quot;&lt;br /&gt;
							service: &amp;quot;xx&amp;quot;,&lt;br /&gt;
							resource: &amp;quot;xx&amp;quot;,&lt;br /&gt;
							action: &amp;quot;xx&amp;quot;,&lt;br /&gt;
						},&lt;br /&gt;
						{&lt;br /&gt;
							elementType: &amp;quot;plainText&amp;quot;&lt;br /&gt;
							plainText: &amp;quot;xxx&amp;quot;,&lt;br /&gt;
						},&lt;br /&gt;
					],&lt;br /&gt;
				},&lt;br /&gt;
				{&lt;br /&gt;
					elementType: &amp;quot;projectMenu&amp;quot;, // used for the main project menu&lt;br /&gt;
				}&lt;br /&gt;
				// ..&lt;br /&gt;
			]&lt;br /&gt;
		},&lt;br /&gt;
		// ..&lt;br /&gt;
	]&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Visible Object == &lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;json&amp;quot;&amp;gt;&lt;br /&gt;
let visibleObj = {&lt;br /&gt;
        rows: [&lt;br /&gt;
        	menuElements: [&lt;br /&gt;
        		{&lt;br /&gt;
        		show: false,&lt;br /&gt;
        		menuElements : [],	&lt;br /&gt;
        		}&lt;br /&gt;
        	], //Recursive function&lt;br /&gt;
        ],&lt;br /&gt;
        visibleRowIndex: 0, //[Top level]&lt;br /&gt;
        visibleRenameRowIndex: null, //[Top level]&lt;br /&gt;
      };&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* visibleRowIndex : identify visible position each row&lt;br /&gt;
* visibleRenameRowIndex : use control css button was visible or selected&lt;br /&gt;
&lt;br /&gt;
== Visible object in Recursive Function ==&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;json&amp;quot;&amp;gt;&lt;br /&gt;
    let visibleObj = { &lt;br /&gt;
      show: false,&lt;br /&gt;
      menuElements: [],&lt;br /&gt;
    };&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
* show : switch false or true&lt;br /&gt;
&lt;br /&gt;
== OnDrag ==&lt;br /&gt;
Under Construction&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;json&amp;quot;&amp;gt;&lt;br /&gt;
	&amp;lt;div&lt;br /&gt;
		dragable&lt;br /&gt;
		onDragStart={(e) =&amp;gt; {}&lt;br /&gt;
		onDragEnter={(e) =&amp;gt; {}&lt;br /&gt;
		onDragEnd={}&lt;br /&gt;
	&amp;gt;&lt;br /&gt;
	{&amp;quot;text&amp;quot;}&lt;br /&gt;
	&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
* onDragStart : when you started to click element&lt;br /&gt;
* onDragEnter : when you passed element&lt;br /&gt;
* onDragEnd : when you released holding&lt;br /&gt;
&lt;br /&gt;
= Working documents =&lt;br /&gt;
&lt;br /&gt;
[[:Category:Working_documents - Menu Config|Menu Config]]&lt;br /&gt;
&lt;br /&gt;
[[Category:Backend services| Menu Config]]&lt;/div&gt;</summary>
		<author><name>Kik</name></author>
	</entry>
	<entry>
		<id>https://izara.io/wiki/index.php?title=Service_-_Menu_Config&amp;diff=2376</id>
		<title>Service - Menu Config</title>
		<link rel="alternate" type="text/html" href="https://izara.io/wiki/index.php?title=Service_-_Menu_Config&amp;diff=2376"/>
		<updated>2023-06-16T05:50:01Z</updated>

		<summary type="html">&lt;p&gt;Kik: /* OnDrag */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Overview =&lt;br /&gt;
&lt;br /&gt;
Manages configuration for site menus created by users and used in different areas of the project.&lt;br /&gt;
&lt;br /&gt;
= Repository =&lt;br /&gt;
&lt;br /&gt;
https://bitbucket.org/izara-core-shared/izara-core-shared-menu-config&lt;br /&gt;
&lt;br /&gt;
= DynamoDB tables =&lt;br /&gt;
&lt;br /&gt;
== MenuConfigMain ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;&lt;br /&gt;
{&lt;br /&gt;
	menuConfigId: &amp;quot;xx&amp;quot;, // {useCase}_{random uuid}&lt;br /&gt;
	menuConfig: &amp;quot;xx&amp;quot;, // json encoded object of configuration&lt;br /&gt;
	menuConfigName: &amp;quot;yy&amp;quot;, // user specified name of the config&lt;br /&gt;
	userId: &amp;quot;xx&amp;quot;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* partition key: menuConfigId&lt;br /&gt;
* sort key: {none}&lt;br /&gt;
* save menuConfig according to useCase, not yet applied but could sub areas of the project into different use cases, handled by the same Menu Config service&lt;br /&gt;
&lt;br /&gt;
== UsersMenuConfigs ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;&lt;br /&gt;
{&lt;br /&gt;
	userId: &amp;quot;xx&amp;quot; // user who owns the menuConfig&lt;br /&gt;
	menuConfigId: &amp;quot;xx&amp;quot;,&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* partition key: userId&lt;br /&gt;
* sort key: menuConfigId&lt;br /&gt;
&lt;br /&gt;
= menuConfig Object = &lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;json&amp;quot;&amp;gt;&lt;br /&gt;
{&lt;br /&gt;
	menuRows:[&lt;br /&gt;
		{&lt;br /&gt;
			rowName: &amp;quot;xx&amp;quot;, // used when configuring only as a reference&lt;br /&gt;
			menuElements: [&lt;br /&gt;
				{&lt;br /&gt;
					elementType: &amp;quot;menu&amp;quot;&lt;br /&gt;
					menuElements: [&lt;br /&gt;
						{&lt;br /&gt;
							elementType: &amp;quot;staticUrl&amp;quot;&lt;br /&gt;
							url: &amp;quot;xxx&amp;quot;,&lt;br /&gt;
						},&lt;br /&gt;
						{&lt;br /&gt;
							elementType: &amp;quot;projectLink&amp;quot;&lt;br /&gt;
							service: &amp;quot;xx&amp;quot;,&lt;br /&gt;
							resource: &amp;quot;xx&amp;quot;,&lt;br /&gt;
							action: &amp;quot;xx&amp;quot;,&lt;br /&gt;
						},&lt;br /&gt;
						{&lt;br /&gt;
							elementType: &amp;quot;plainText&amp;quot;&lt;br /&gt;
							plainText: &amp;quot;xxx&amp;quot;,&lt;br /&gt;
						},&lt;br /&gt;
					],&lt;br /&gt;
				},&lt;br /&gt;
				{&lt;br /&gt;
					elementType: &amp;quot;projectMenu&amp;quot;, // used for the main project menu&lt;br /&gt;
				}&lt;br /&gt;
				// ..&lt;br /&gt;
			]&lt;br /&gt;
		},&lt;br /&gt;
		// ..&lt;br /&gt;
	]&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Visible Object == &lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;json&amp;quot;&amp;gt;&lt;br /&gt;
let visibleObj = {&lt;br /&gt;
        rows: [&lt;br /&gt;
        	menuElements: [&lt;br /&gt;
        		{&lt;br /&gt;
        		show: false,&lt;br /&gt;
        		menuElements : [],	&lt;br /&gt;
        		}&lt;br /&gt;
        	], //Recursive function&lt;br /&gt;
        ],&lt;br /&gt;
        visibleRowIndex: 0, //[Top level]&lt;br /&gt;
        visibleRenameRowIndex: null, //[Top level]&lt;br /&gt;
      };&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* visibleRowIndex : identify visible position each row&lt;br /&gt;
* visibleRenameRowIndex : use control css button was visible or selected&lt;br /&gt;
&lt;br /&gt;
== Visible object in Recursive Function ==&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;json&amp;quot;&amp;gt;&lt;br /&gt;
    let visibleObj = { &lt;br /&gt;
      show: false,&lt;br /&gt;
      menuElements: [],&lt;br /&gt;
    };&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
* show : switch false or true&lt;br /&gt;
&lt;br /&gt;
== OnDrag ==&lt;br /&gt;
Under Construction&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;json&amp;quot;&amp;gt;&lt;br /&gt;
	&amp;lt;div&lt;br /&gt;
		dragable&lt;br /&gt;
		onDragStart={(e) =&amp;gt; {}&lt;br /&gt;
		onDragEnter={(e) =&amp;gt; {}&lt;br /&gt;
		onDragEnd={}&lt;br /&gt;
	&amp;gt;&lt;br /&gt;
	{&amp;quot;text&amp;quot;}&lt;br /&gt;
	&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
* onDragStart : &lt;br /&gt;
* onDragEnter : &lt;br /&gt;
* onDragEnd :&lt;br /&gt;
&lt;br /&gt;
= Working documents =&lt;br /&gt;
&lt;br /&gt;
[[:Category:Working_documents - Menu Config|Menu Config]]&lt;br /&gt;
&lt;br /&gt;
[[Category:Backend services| Menu Config]]&lt;/div&gt;</summary>
		<author><name>Kik</name></author>
	</entry>
	<entry>
		<id>https://izara.io/wiki/index.php?title=Service_-_Menu_Config&amp;diff=2375</id>
		<title>Service - Menu Config</title>
		<link rel="alternate" type="text/html" href="https://izara.io/wiki/index.php?title=Service_-_Menu_Config&amp;diff=2375"/>
		<updated>2023-06-15T06:31:37Z</updated>

		<summary type="html">&lt;p&gt;Kik: /* menuConfig Object */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Overview =&lt;br /&gt;
&lt;br /&gt;
Manages configuration for site menus created by users and used in different areas of the project.&lt;br /&gt;
&lt;br /&gt;
= Repository =&lt;br /&gt;
&lt;br /&gt;
https://bitbucket.org/izara-core-shared/izara-core-shared-menu-config&lt;br /&gt;
&lt;br /&gt;
= DynamoDB tables =&lt;br /&gt;
&lt;br /&gt;
== MenuConfigMain ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;&lt;br /&gt;
{&lt;br /&gt;
	menuConfigId: &amp;quot;xx&amp;quot;, // {useCase}_{random uuid}&lt;br /&gt;
	menuConfig: &amp;quot;xx&amp;quot;, // json encoded object of configuration&lt;br /&gt;
	menuConfigName: &amp;quot;yy&amp;quot;, // user specified name of the config&lt;br /&gt;
	userId: &amp;quot;xx&amp;quot;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* partition key: menuConfigId&lt;br /&gt;
* sort key: {none}&lt;br /&gt;
* save menuConfig according to useCase, not yet applied but could sub areas of the project into different use cases, handled by the same Menu Config service&lt;br /&gt;
&lt;br /&gt;
== UsersMenuConfigs ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;&lt;br /&gt;
{&lt;br /&gt;
	userId: &amp;quot;xx&amp;quot; // user who owns the menuConfig&lt;br /&gt;
	menuConfigId: &amp;quot;xx&amp;quot;,&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* partition key: userId&lt;br /&gt;
* sort key: menuConfigId&lt;br /&gt;
&lt;br /&gt;
= menuConfig Object = &lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;json&amp;quot;&amp;gt;&lt;br /&gt;
{&lt;br /&gt;
	menuRows:[&lt;br /&gt;
		{&lt;br /&gt;
			rowName: &amp;quot;xx&amp;quot;, // used when configuring only as a reference&lt;br /&gt;
			menuElements: [&lt;br /&gt;
				{&lt;br /&gt;
					elementType: &amp;quot;menu&amp;quot;&lt;br /&gt;
					menuElements: [&lt;br /&gt;
						{&lt;br /&gt;
							elementType: &amp;quot;staticUrl&amp;quot;&lt;br /&gt;
							url: &amp;quot;xxx&amp;quot;,&lt;br /&gt;
						},&lt;br /&gt;
						{&lt;br /&gt;
							elementType: &amp;quot;projectLink&amp;quot;&lt;br /&gt;
							service: &amp;quot;xx&amp;quot;,&lt;br /&gt;
							resource: &amp;quot;xx&amp;quot;,&lt;br /&gt;
							action: &amp;quot;xx&amp;quot;,&lt;br /&gt;
						},&lt;br /&gt;
						{&lt;br /&gt;
							elementType: &amp;quot;plainText&amp;quot;&lt;br /&gt;
							plainText: &amp;quot;xxx&amp;quot;,&lt;br /&gt;
						},&lt;br /&gt;
					],&lt;br /&gt;
				},&lt;br /&gt;
				{&lt;br /&gt;
					elementType: &amp;quot;projectMenu&amp;quot;, // used for the main project menu&lt;br /&gt;
				}&lt;br /&gt;
				// ..&lt;br /&gt;
			]&lt;br /&gt;
		},&lt;br /&gt;
		// ..&lt;br /&gt;
	]&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Visible Object == &lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;json&amp;quot;&amp;gt;&lt;br /&gt;
let visibleObj = {&lt;br /&gt;
        rows: [&lt;br /&gt;
        	menuElements: [&lt;br /&gt;
        		{&lt;br /&gt;
        		show: false,&lt;br /&gt;
        		menuElements : [],	&lt;br /&gt;
        		}&lt;br /&gt;
        	], //Recursive function&lt;br /&gt;
        ],&lt;br /&gt;
        visibleRowIndex: 0, //[Top level]&lt;br /&gt;
        visibleRenameRowIndex: null, //[Top level]&lt;br /&gt;
      };&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* visibleRowIndex : identify visible position each row&lt;br /&gt;
* visibleRenameRowIndex : use control css button was visible or selected&lt;br /&gt;
&lt;br /&gt;
== Visible object in Recursive Function ==&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;json&amp;quot;&amp;gt;&lt;br /&gt;
    let visibleObj = { &lt;br /&gt;
      show: false,&lt;br /&gt;
      menuElements: [],&lt;br /&gt;
    };&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
* show : switch false or true&lt;br /&gt;
&lt;br /&gt;
== OnDrag ==&lt;br /&gt;
Under Construction&lt;br /&gt;
&lt;br /&gt;
= Working documents =&lt;br /&gt;
&lt;br /&gt;
[[:Category:Working_documents - Menu Config|Menu Config]]&lt;br /&gt;
&lt;br /&gt;
[[Category:Backend services| Menu Config]]&lt;/div&gt;</summary>
		<author><name>Kik</name></author>
	</entry>
	<entry>
		<id>https://izara.io/wiki/index.php?title=Service_-_Menu_Config&amp;diff=2374</id>
		<title>Service - Menu Config</title>
		<link rel="alternate" type="text/html" href="https://izara.io/wiki/index.php?title=Service_-_Menu_Config&amp;diff=2374"/>
		<updated>2023-06-15T06:09:07Z</updated>

		<summary type="html">&lt;p&gt;Kik: /* Visible object in Recursive Function */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Overview =&lt;br /&gt;
&lt;br /&gt;
Manages configuration for site menus created by users and used in different areas of the project.&lt;br /&gt;
&lt;br /&gt;
= Repository =&lt;br /&gt;
&lt;br /&gt;
https://bitbucket.org/izara-core-shared/izara-core-shared-menu-config&lt;br /&gt;
&lt;br /&gt;
= DynamoDB tables =&lt;br /&gt;
&lt;br /&gt;
== MenuConfigMain ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;&lt;br /&gt;
{&lt;br /&gt;
	menuConfigId: &amp;quot;xx&amp;quot;, // {useCase}_{random uuid}&lt;br /&gt;
	menuConfig: &amp;quot;xx&amp;quot;, // json encoded object of configuration&lt;br /&gt;
	menuConfigName: &amp;quot;yy&amp;quot;, // user specified name of the config&lt;br /&gt;
	userId: &amp;quot;xx&amp;quot;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* partition key: menuConfigId&lt;br /&gt;
* sort key: {none}&lt;br /&gt;
* save menuConfig according to useCase, not yet applied but could sub areas of the project into different use cases, handled by the same Menu Config service&lt;br /&gt;
&lt;br /&gt;
== UsersMenuConfigs ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;&lt;br /&gt;
{&lt;br /&gt;
	userId: &amp;quot;xx&amp;quot; // user who owns the menuConfig&lt;br /&gt;
	menuConfigId: &amp;quot;xx&amp;quot;,&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* partition key: userId&lt;br /&gt;
* sort key: menuConfigId&lt;br /&gt;
&lt;br /&gt;
= menuConfig Object = &lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;json&amp;quot;&amp;gt;&lt;br /&gt;
{&lt;br /&gt;
	menuRows:[&lt;br /&gt;
		{&lt;br /&gt;
			rowName: &amp;quot;xx&amp;quot;, // used when configuring only as a reference&lt;br /&gt;
			menuElements: [&lt;br /&gt;
				{&lt;br /&gt;
					elementType: &amp;quot;menu&amp;quot;&lt;br /&gt;
					menuElements: [&lt;br /&gt;
						{&lt;br /&gt;
							elementType: &amp;quot;staticUrl&amp;quot;&lt;br /&gt;
							url: &amp;quot;xxx&amp;quot;,&lt;br /&gt;
						},&lt;br /&gt;
						{&lt;br /&gt;
							elementType: &amp;quot;projectLink&amp;quot;&lt;br /&gt;
							service: &amp;quot;xx&amp;quot;,&lt;br /&gt;
							resource: &amp;quot;xx&amp;quot;,&lt;br /&gt;
							action: &amp;quot;xx&amp;quot;,&lt;br /&gt;
						},&lt;br /&gt;
						{&lt;br /&gt;
							elementType: &amp;quot;plainText&amp;quot;&lt;br /&gt;
							plainText: &amp;quot;xxx&amp;quot;,&lt;br /&gt;
						},&lt;br /&gt;
					],&lt;br /&gt;
				},&lt;br /&gt;
				{&lt;br /&gt;
					elementType: &amp;quot;projectMenu&amp;quot;, // used for the main project menu&lt;br /&gt;
				}&lt;br /&gt;
				// ..&lt;br /&gt;
			]&lt;br /&gt;
		},&lt;br /&gt;
		// ..&lt;br /&gt;
	]&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Visible Object == &lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;json&amp;quot;&amp;gt;&lt;br /&gt;
let visibleObj = {&lt;br /&gt;
        rows: [&lt;br /&gt;
        	menuElements: [&lt;br /&gt;
        		{&lt;br /&gt;
        		show: false,&lt;br /&gt;
        		menuElements : [],	&lt;br /&gt;
        		}&lt;br /&gt;
        	], //Recursive function&lt;br /&gt;
        ],&lt;br /&gt;
        visibleRowIndex: 0, //[Top level]&lt;br /&gt;
        visibleRenameRowIndex: null, //[Top level]&lt;br /&gt;
      };&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* visibleRowIndex : identify visible position each row&lt;br /&gt;
* visibleRenameRowIndex : use control css button was visible or selected&lt;br /&gt;
&lt;br /&gt;
== Visible object in Recursive Function ==&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;json&amp;quot;&amp;gt;&lt;br /&gt;
    let visibleObj = { &lt;br /&gt;
      show: false,&lt;br /&gt;
      menuElements: [],&lt;br /&gt;
    };&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
* show : switch false or true&lt;br /&gt;
&lt;br /&gt;
= Working documents =&lt;br /&gt;
&lt;br /&gt;
[[:Category:Working_documents - Menu Config|Menu Config]]&lt;br /&gt;
&lt;br /&gt;
[[Category:Backend services| Menu Config]]&lt;/div&gt;</summary>
		<author><name>Kik</name></author>
	</entry>
	<entry>
		<id>https://izara.io/wiki/index.php?title=Service_-_Menu_Config&amp;diff=2373</id>
		<title>Service - Menu Config</title>
		<link rel="alternate" type="text/html" href="https://izara.io/wiki/index.php?title=Service_-_Menu_Config&amp;diff=2373"/>
		<updated>2023-06-15T05:55:55Z</updated>

		<summary type="html">&lt;p&gt;Kik: /* Visible Object */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Overview =&lt;br /&gt;
&lt;br /&gt;
Manages configuration for site menus created by users and used in different areas of the project.&lt;br /&gt;
&lt;br /&gt;
= Repository =&lt;br /&gt;
&lt;br /&gt;
https://bitbucket.org/izara-core-shared/izara-core-shared-menu-config&lt;br /&gt;
&lt;br /&gt;
= DynamoDB tables =&lt;br /&gt;
&lt;br /&gt;
== MenuConfigMain ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;&lt;br /&gt;
{&lt;br /&gt;
	menuConfigId: &amp;quot;xx&amp;quot;, // {useCase}_{random uuid}&lt;br /&gt;
	menuConfig: &amp;quot;xx&amp;quot;, // json encoded object of configuration&lt;br /&gt;
	menuConfigName: &amp;quot;yy&amp;quot;, // user specified name of the config&lt;br /&gt;
	userId: &amp;quot;xx&amp;quot;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* partition key: menuConfigId&lt;br /&gt;
* sort key: {none}&lt;br /&gt;
* save menuConfig according to useCase, not yet applied but could sub areas of the project into different use cases, handled by the same Menu Config service&lt;br /&gt;
&lt;br /&gt;
== UsersMenuConfigs ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;JavaScript&amp;quot;&amp;gt;&lt;br /&gt;
{&lt;br /&gt;
	userId: &amp;quot;xx&amp;quot; // user who owns the menuConfig&lt;br /&gt;
	menuConfigId: &amp;quot;xx&amp;quot;,&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* partition key: userId&lt;br /&gt;
* sort key: menuConfigId&lt;br /&gt;
&lt;br /&gt;
= menuConfig Object = &lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;json&amp;quot;&amp;gt;&lt;br /&gt;
{&lt;br /&gt;
	menuRows:[&lt;br /&gt;
		{&lt;br /&gt;
			rowName: &amp;quot;xx&amp;quot;, // used when configuring only as a reference&lt;br /&gt;
			menuElements: [&lt;br /&gt;
				{&lt;br /&gt;
					elementType: &amp;quot;menu&amp;quot;&lt;br /&gt;
					menuElements: [&lt;br /&gt;
						{&lt;br /&gt;
							elementType: &amp;quot;staticUrl&amp;quot;&lt;br /&gt;
							url: &amp;quot;xxx&amp;quot;,&lt;br /&gt;
						},&lt;br /&gt;
						{&lt;br /&gt;
							elementType: &amp;quot;projectLink&amp;quot;&lt;br /&gt;
							service: &amp;quot;xx&amp;quot;,&lt;br /&gt;
							resource: &amp;quot;xx&amp;quot;,&lt;br /&gt;
							action: &amp;quot;xx&amp;quot;,&lt;br /&gt;
						},&lt;br /&gt;
						{&lt;br /&gt;
							elementType: &amp;quot;plainText&amp;quot;&lt;br /&gt;
							plainText: &amp;quot;xxx&amp;quot;,&lt;br /&gt;
						},&lt;br /&gt;
					],&lt;br /&gt;
				},&lt;br /&gt;
				{&lt;br /&gt;
					elementType: &amp;quot;projectMenu&amp;quot;, // used for the main project menu&lt;br /&gt;
				}&lt;br /&gt;
				// ..&lt;br /&gt;
			]&lt;br /&gt;
		},&lt;br /&gt;
		// ..&lt;br /&gt;
	]&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Visible Object == &lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;json&amp;quot;&amp;gt;&lt;br /&gt;
let visibleObj = {&lt;br /&gt;
        rows: [&lt;br /&gt;
        	menuElements: [&lt;br /&gt;
        		{&lt;br /&gt;
        		show: false,&lt;br /&gt;
        		menuElements : [],	&lt;br /&gt;
        		}&lt;br /&gt;
        	], //Recursive function&lt;br /&gt;
        ],&lt;br /&gt;
        visibleRowIndex: 0, //[Top level]&lt;br /&gt;
        visibleRenameRowIndex: null, //[Top level]&lt;br /&gt;
      };&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* visibleRowIndex : identify visible position each row&lt;br /&gt;
* visibleRenameRowIndex : use control css button was visible or selected&lt;br /&gt;
&lt;br /&gt;
== Visible object in Recursive Function ==&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;json&amp;quot;&amp;gt;&lt;br /&gt;
    let visibleObj = { &lt;br /&gt;
      show: false,&lt;br /&gt;
      menuElements: [],&lt;br /&gt;
    };&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= Working documents =&lt;br /&gt;
&lt;br /&gt;
[[:Category:Working_documents - Menu Config|Menu Config]]&lt;br /&gt;
&lt;br /&gt;
[[Category:Backend services| Menu Config]]&lt;/div&gt;</summary>
		<author><name>Kik</name></author>
	</entry>
</feed>