diff --git a/resources/vue/components/courseware/CoursewareFolderChooser.vue b/resources/vue/components/courseware/CoursewareFolderChooser.vue
index 95df18b8f59a3928c5dfddb10345fb2cf911c630..9219cde650fecd3487f04c80c72dc0334ef3f780 100755
--- a/resources/vue/components/courseware/CoursewareFolderChooser.vue
+++ b/resources/vue/components/courseware/CoursewareFolderChooser.vue
@@ -48,21 +48,23 @@ export default {
             let loadedCourseFolders = [];
             let CourseFolders = this.relatedFolders({ parent: this.courseObject, relationship: 'folders' }) ?? [];
             CourseFolders.forEach(folder => {
-                switch (folder.attributes['folder-type']) {
-                    case 'HiddenFolder':
-                        if (folder.attributes['data-content']['download_allowed'] === 1) {
+                if (this.validateParentFolder(folder)) {
+                    switch (folder.attributes['folder-type']) {
+                        case 'HiddenFolder':
+                            if (folder.attributes['data-content']['download_allowed'] === 1) {
+                                loadedCourseFolders.push(folder);
+                            }
+                            break;
+                        case 'HomeworkFolder':
+                            if(this.allowHomeworkFolders) {
+                                loadedCourseFolders.push(folder);
+                            }
+                            break;
+                        default:
                             loadedCourseFolders.push(folder);
-                        }
-                        break;
-                    case 'HomeworkFolder':
-                        if(this.allowHomeworkFolders) {
-                            loadedCourseFolders.push(folder);
-                        }
-                    default:
-                        loadedCourseFolders.push(folder);
+                    }
                 }
             });
-
             return loadedCourseFolders;
         },
         loadedUserFolders() {
@@ -79,7 +81,7 @@ export default {
     },
     methods: {
         ...mapActions({
-            loadRelatedFolders: 'folders/loadRelated' 
+            loadRelatedFolders: 'folders/loadRelated'
         }),
 
         changeSelection() {
@@ -101,6 +103,30 @@ export default {
 
             return this.loadRelatedFolders({ parent, relationship, options });
         },
+
+        validateParentFolder(folder) {
+            let courseFolders = this.relatedFolders({ parent: this.courseObject, relationship: 'folders' }) ?? [];
+            let validation = true;
+            if (courseFolders.length > 0 && folder?.relationships?.parent) {
+                let parentId = folder.relationships.parent.data.id;
+                let parent = courseFolders.find(f => f.id === parentId);
+                if (parent) {
+                    validation = this.hiddenParentFolderValidation(parent);
+                }
+            }
+            return validation;
+        },
+
+        hiddenParentFolderValidation(parentFolder) {
+            if (parentFolder.attributes['folder-type'] === 'HiddenFolder') {
+                return false;
+            } else if (parentFolder?.relationships?.parent) {
+                // Recursively validating the parents.
+                return this.validateParentFolder(parentFolder);
+            } else {
+                return true;
+            }
+        }
     },
     mounted() {
         this.currentValue = this.value;