From 6e97449bf72b6c6d9d4df7d794ed523ae9b1d42c Mon Sep 17 00:00:00 2001 From: Jannat Patel Date: Fri, 11 Oct 2024 13:39:30 +0530 Subject: [PATCH 1/2] fix: misc ux issues --- frontend/package.json | 1 + frontend/src/components/BrandSettings.vue | 28 ++- .../src/components/Controls/CodeEditor.vue | 204 ++++++++++++++++++ frontend/src/components/CourseCardOverlay.vue | 24 +-- frontend/src/components/Modals/Settings.vue | 41 ++-- frontend/src/components/SettingDetails.vue | 2 +- frontend/src/components/SettingFields.vue | 43 ++-- frontend/src/pages/JobCreation.vue | 2 +- frontend/src/utils/index.js | 11 +- frontend/yarn.lock | 5 + 10 files changed, 295 insertions(+), 66 deletions(-) create mode 100644 frontend/src/components/Controls/CodeEditor.vue diff --git a/frontend/package.json b/frontend/package.json index e5c1e94c5..3f2a2bb7c 100644 --- a/frontend/package.json +++ b/frontend/package.json @@ -18,6 +18,7 @@ "@editorjs/nested-list": "^1.4.2", "@editorjs/paragraph": "^2.11.3", "@editorjs/simple-image": "^1.6.0", + "ace-builds": "^1.36.2", "chart.js": "^4.4.1", "codemirror-editor-vue3": "^2.8.0", "dayjs": "^1.11.6", diff --git a/frontend/src/components/BrandSettings.vue b/frontend/src/components/BrandSettings.vue index 630dce554..e8debd769 100644 --- a/frontend/src/components/BrandSettings.vue +++ b/frontend/src/components/BrandSettings.vue @@ -1,5 +1,5 @@ @@ -70,12 +72,20 @@ const update = () => { fieldsToSave[f.name] = f.value } }) - saveSettings.submit({ - fields: fieldsToSave, - }) + saveSettings.submit( + { + fields: fieldsToSave, + }, + { + onSuccess(data) { + isDirty.value = false + }, + } + ) } watch(props.data, (newData) => { + console.log(newData) if (newData && !isDirty.value) { isDirty.value = true } diff --git a/frontend/src/components/Controls/CodeEditor.vue b/frontend/src/components/Controls/CodeEditor.vue new file mode 100644 index 000000000..4ed4a5641 --- /dev/null +++ b/frontend/src/components/Controls/CodeEditor.vue @@ -0,0 +1,204 @@ + + + diff --git a/frontend/src/components/CourseCardOverlay.vue b/frontend/src/components/CourseCardOverlay.vue index 98f82fb23..d2a1ee30a 100644 --- a/frontend/src/components/CourseCardOverlay.vue +++ b/frontend/src/components/CourseCardOverlay.vue @@ -116,7 +116,7 @@ import { BookOpen, Users, Star } from 'lucide-vue-next' import { computed, inject } from 'vue' import { Button, createResource } from 'frappe-ui' -import { createToast } from '@/utils/' +import { showToast } from '@/utils/' import { capture } from '@/telemetry' import { useRouter } from 'vue-router' @@ -139,11 +139,11 @@ const video_link = computed(() => { function enrollStudent() { if (!user.data) { - createToast({ - title: 'Please Login', - icon: 'alert-circle', - iconClasses: 'text-yellow-600 bg-yellow-100', - }) + showToast( + __('Please Login'), + __('You need to login first to enroll for this course'), + 'circle-warn' + ) setTimeout(() => { window.location.href = `/login?redirect-to=${window.location.pathname}` }, 2000) @@ -159,11 +159,11 @@ function enrollStudent() { capture('enrolled_in_course', { course: props.course.data.name, }) - createToast({ - title: 'Enrolled Successfully', - icon: 'check', - iconClasses: 'text-green-600 bg-green-100', - }) + showToast( + __('Success'), + __('You have been enrolled in this course'), + 'check' + ) setTimeout(() => { router.push({ name: 'Lesson', @@ -173,7 +173,7 @@ function enrollStudent() { lessonNumber: 1, }, }) - }, 3000) + }, 2000) }) } } diff --git a/frontend/src/components/Modals/Settings.vue b/frontend/src/components/Modals/Settings.vue index 79717118b..f8854df2b 100644 --- a/frontend/src/components/Modals/Settings.vue +++ b/frontend/src/components/Modals/Settings.vue @@ -179,26 +179,6 @@ const tabsStructure = computed(() => { name: 'app_name', type: 'text', }, - { - label: 'Copyright', - name: 'copyright', - type: 'text', - }, - { - label: 'Address', - name: 'address', - type: 'textarea', - rows: 4, - }, - { - label: 'Footer "Powered By"', - name: 'footer_powered', - type: 'textarea', - rows: 4, - }, - { - type: 'Column Break', - }, { label: 'Logo', name: 'banner_image', @@ -214,6 +194,23 @@ const tabsStructure = computed(() => { name: 'footer_logo', type: 'Upload', }, + { + label: 'Address', + name: 'address', + type: 'textarea', + rows: 2, + }, + { + label: 'Footer "Powered By"', + name: 'footer_powered', + type: 'textarea', + rows: 4, + }, + { + label: 'Copyright', + name: 'copyright', + type: 'text', + }, ], }, { @@ -292,9 +289,11 @@ const tabsStructure = computed(() => { rows: 10, }, { - label: 'Ask user category', + label: 'Ask for Occupation', name: 'user_category', type: 'checkbox', + description: + 'Enable this option to ask users to select their occupation during the signup process.', }, ], }, diff --git a/frontend/src/components/SettingDetails.vue b/frontend/src/components/SettingDetails.vue index e337ce589..87a80f263 100644 --- a/frontend/src/components/SettingDetails.vue +++ b/frontend/src/components/SettingDetails.vue @@ -2,7 +2,7 @@
-
+
{{ __(label) }}
-
- {{ __(field.label) }} -
- + +
@@ -53,9 +52,11 @@
-
-
- +
+
+
@@ -73,6 +74,14 @@
+ +