Skip to content

Commit 9c1e343

Browse files
committed
Refactor breadcrumb handling in file list component for improved navigation
1 parent 59f2221 commit 9c1e343

File tree

1 file changed

+21
-43
lines changed

1 file changed

+21
-43
lines changed

stories/components/fileList/fileList.html.stories.js

Lines changed: 21 additions & 43 deletions
Original file line numberDiff line numberDiff line change
@@ -102,60 +102,38 @@ export const openFolderBreadcrumbs = () => html`
102102
<ul class="breadcrumb" id="nav">
103103
<li><a id="home">Files</a></li>
104104
</ul>
105-
<mgt-file-list></mgt-file-list>
105+
<mgt-file-list id="parent-file-list"></mgt-file-list>
106106
107107
<script type="module">
108-
const fileList = document.querySelector('mgt-file-list');
108+
const fileList = document.getElementById('parent-file-list');
109109
const nav = document.getElementById('nav');
110-
const home = document.getElementById('home');
111-
112-
let homeListId;
113-
if (fileList.itemId) {
114-
homeListId = fileList.itemId;
115-
} else {
116-
homeListId = null;
117-
}
118-
119-
// handle default file list menu item
120-
home.addEventListener('click', e => {
121-
fileList.itemId = homeListId;
122-
removeListItems(1);
123-
});
124110
125111
// handle create and remove menu items
126112
fileList.addEventListener('itemClick', e => {
127113
if (e.detail && e.detail.folder) {
128114
const id = e.detail.id;
129115
const name = e.detail.name;
130-
131-
// render new file list
132-
fileList.itemId = id;
133-
134-
// create breadcrumb menu item
135-
const li = document.createElement('li');
136-
const a = document.createElement('a');
137-
li.setAttribute('id', id);
138-
a.appendChild(document.createTextNode(name));
139-
li.appendChild(a);
140-
nav.appendChild(li);
141-
142-
// remove breadcrumb menu items and render file list based on clicked item
143-
a.addEventListener('click', e => {
144-
const nodes = Array.from(nav.children);
145-
const index = nodes.indexOf(li);
146-
if (e.target) {
147-
removeListItems(index + 1);
148-
fileList.itemId = li.id;
116+
const breadcrumbId = "breadcrumb-"+ id;
117+
118+
// check if it is set
119+
const breadcrumbSet = document.getElementById(breadcrumbId);
120+
if (!breadcrumbSet) {
121+
// create breadcrumb menu item
122+
const li = document.createElement('li');
123+
const a = document.createElement('a');
124+
li.setAttribute('id', breadcrumbId);
125+
a.appendChild(document.createTextNode(name));
126+
li.appendChild(a);
127+
if (nav.children.length > 1){
128+
const firstBreadcrumb = nav.children[0];
129+
nav.replaceChildren(firstBreadcrumb);
149130
}
150-
});
131+
nav.appendChild(li);
132+
} else {
133+
breadcrumbSet.remove();
134+
135+
}
151136
}
152137
});
153-
154-
// remove li of ul where index is larger than n
155-
function removeListItems(n) {
156-
while (nav.getElementsByTagName('li').length > n) {
157-
nav.removeChild(nav.lastChild);
158-
}
159-
}
160138
</script>
161139
`;

0 commit comments

Comments
 (0)