diff --git a/assets/vue/components/basecomponents/BaseButton.vue b/assets/vue/components/basecomponents/BaseButton.vue index 9ff4dc0dab..cd46849409 100644 --- a/assets/vue/components/basecomponents/BaseButton.vue +++ b/assets/vue/components/basecomponents/BaseButton.vue @@ -93,15 +93,16 @@ const buttonClass = computed(() => { case "small": result += "py-2 px-3.5 " } + let commonDisabled = "disabled:bg-primary-bgdisabled disabled:border disabled:border-primary-borderdisabled disabled:text-fontdisabled" switch (props.type) { case "primary": - result += "border-primary hover:bg-primary text-primary hover:text-white "; + result += `border-primary hover:bg-primary text-primary hover:text-white ${commonDisabled} `; break; case "secondary": - result += "bg-secondary hover:bg-secondary-gradient text-white "; + result += "bg-secondary text-white hover:bg-secondary-gradient disabled:bg-secondary-bgdisabled disabled:text-fontdisabled"; break; case "danger": - result += "border-error hover:bg-error text-error hover:text-white "; + result += `border-error hover:bg-error text-error hover:text-white ${commonDisabled} `; } return result; }); diff --git a/assets/vue/components/basecomponents/BaseChart.vue b/assets/vue/components/basecomponents/BaseChart.vue new file mode 100644 index 0000000000..862fd18bcc --- /dev/null +++ b/assets/vue/components/basecomponents/BaseChart.vue @@ -0,0 +1,14 @@ + + + diff --git a/assets/vue/components/basecomponents/BaseDialog.vue b/assets/vue/components/basecomponents/BaseDialog.vue new file mode 100644 index 0000000000..0dba9b09dc --- /dev/null +++ b/assets/vue/components/basecomponents/BaseDialog.vue @@ -0,0 +1,33 @@ + + + diff --git a/assets/vue/components/basecomponents/BaseDialogConfirmCancel.vue b/assets/vue/components/basecomponents/BaseDialogConfirmCancel.vue new file mode 100644 index 0000000000..782d827a86 --- /dev/null +++ b/assets/vue/components/basecomponents/BaseDialogConfirmCancel.vue @@ -0,0 +1,61 @@ + + + diff --git a/assets/vue/components/basecomponents/BaseIcon.vue b/assets/vue/components/basecomponents/BaseIcon.vue index cec335ba51..23d1d20bb6 100644 --- a/assets/vue/components/basecomponents/BaseIcon.vue +++ b/assets/vue/components/basecomponents/BaseIcon.vue @@ -26,6 +26,7 @@ const props = defineProps({ return false } return [ + "big", "normal", "small", ].includes(value); @@ -36,6 +37,9 @@ const props = defineProps({ const iconClass = computed(() => { let iconClass = chamiloIconToClass[props.icon] + " "; switch (props.size) { + case "big": + iconClass += "text-3xl/4 "; + break; case "normal": iconClass += "text-xl/4 "; break; diff --git a/assets/vue/components/basecomponents/ButtonToolbar.vue b/assets/vue/components/basecomponents/ButtonToolbar.vue new file mode 100644 index 0000000000..3f933aaa67 --- /dev/null +++ b/assets/vue/components/basecomponents/ButtonToolbar.vue @@ -0,0 +1,32 @@ + + + + + diff --git a/assets/vue/components/basecomponents/ChamiloIcons.js b/assets/vue/components/basecomponents/ChamiloIcons.js index da3f69f753..3f7afea0e8 100644 --- a/assets/vue/components/basecomponents/ChamiloIcons.js +++ b/assets/vue/components/basecomponents/ChamiloIcons.js @@ -3,15 +3,20 @@ * * Transform name of icons according to https://github.com/chamilo/chamilo-lms/wiki/Graphical-design-guide#default-icons-terminology * to the classes needed for represent every icon -*/ + */ export const chamiloIconToClass = { "edit": "mdi mdi-pencil", "delete": "mdi mdi-delete", + "back": "mdi mdi-arrow-left-bold-box", + "close": "mdi mdi-close", + "confirm": "mdi mdi-check", + "select-all": "mdi mdi-select-group", + "unselect-all": "mdi mdi-select-remove", + "camera": "mdi mdi-camera", + "record-generic": "mdi mdi-microphone", + "record-add": "mdi mdi-microphone-plus", + "download": "mdi mdi-download-box", "hammer-wrench": "", - "download": "", - "download-box": "", - "upload": "", - "arrow-left-bold-box": "", "account-multiple-plus": "", "cursor-move": "", "chevron-left": "", @@ -21,7 +26,7 @@ export const chamiloIconToClass = { "arrow-right-bold": "", "magnify-plus-outline": "", "archive-arrow-up": "", - "alert": "", + "alert": "mdi mdi-alert", "checkbox-marked": "", "pencil-off": "", "eye-on": "mdi mdi-eye", @@ -40,11 +45,8 @@ export const chamiloIconToClass = { "package": "", "text-box-plus": "", "rocket-launch": "", - "file-pdf-box": "", "content-save": "", "send": "", - "file-plus": "", - "cloud-upload": "", "dots-vertical": "", "information": "mdi mdi-information", "account-key": "", @@ -55,15 +57,22 @@ export const chamiloIconToClass = { "file-video": "mdi mdi-file-video", "file-pdf": "mdi mdi-file-pdf-box", "file-text": "mdi mdi-file-document", + "file-add": "mdi mdi-file-plus", + "file-upload": "mdi mdi-file-upload", + "file-cloud-add": "mdi mdi-cloud-plus", "folder-generic": "mdi mdi-folder", "folder-multiple-plus": "mdi mdi-folder-multiple-plus", "folder-plus": "mdi mdi-folder-plus", + "folder-open": "mdi mdi-folder-open", + "drawing": "mdi mdi-drawing", + "view-gallery": "mdi mdi-view-gallery", + "usage": "mdi mdi-chart-donut", }; export const validator = (value) => { - if (typeof (value) !== "string") { - return false; - } + if (typeof (value) !== "string") { + return false; + } - return Object.keys(chamiloIconToClass).includes(value); + return Object.keys(chamiloIconToClass).includes(value); }; diff --git a/assets/vue/components/documents/DocumentEntry.vue b/assets/vue/components/documents/DocumentEntry.vue index cdc425df32..87095e6e93 100644 --- a/assets/vue/components/documents/DocumentEntry.vue +++ b/assets/vue/components/documents/DocumentEntry.vue @@ -1,12 +1,12 @@ diff --git a/assets/vue/components/documents/Layout.vue b/assets/vue/components/documents/DocumentsLayout.vue similarity index 50% rename from assets/vue/components/documents/Layout.vue rename to assets/vue/components/documents/DocumentsLayout.vue index f039ec8f64..527737f70f 100644 --- a/assets/vue/components/documents/Layout.vue +++ b/assets/vue/components/documents/DocumentsLayout.vue @@ -2,8 +2,5 @@ - diff --git a/assets/vue/composables/fileUtils.js b/assets/vue/composables/fileUtils.js new file mode 100644 index 0000000000..18405cbd34 --- /dev/null +++ b/assets/vue/composables/fileUtils.js @@ -0,0 +1,22 @@ + + +export function useFileUtils() { + + const isImage = (fileData) => { + return isFile(fileData) && fileData.resourceNode.resourceFile.image + } + + const isVideo = (fileData) => { + return isFile(fileData) && fileData.resourceNode.resourceFile.video + } + + const isFile = (fileData) => { + return fileData.resourceNode && fileData.resourceNode.resourceFile + } + + return { + isFile, + isImage, + isVideo, + } +} diff --git a/assets/vue/router/documents.js b/assets/vue/router/documents.js index 08a83dc7cc..5e5ff2e6e7 100644 --- a/assets/vue/router/documents.js +++ b/assets/vue/router/documents.js @@ -2,13 +2,13 @@ export default { path: '/resources/document/:node/', meta: { requiresAuth: true, showBreadcrumb: true }, name: 'documents', - component: () => import('../components/documents/Layout.vue'), + component: () => import('../components/documents/DocumentsLayout.vue'), redirect: { name: 'DocumentsList' }, children: [ { name: 'DocumentsList', path: '', - component: () => import('../views/documents/List.vue') + component: () => import('../views/documents/DocumentsList.vue') }, { name: 'DocumentsCreate', diff --git a/assets/vue/views/course/CourseHome.vue b/assets/vue/views/course/CourseHome.vue index d1fcdeeb39..a19ea27ba9 100644 --- a/assets/vue/views/course/CourseHome.vue +++ b/assets/vue/views/course/CourseHome.vue @@ -34,6 +34,7 @@ diff --git a/assets/vue/views/documents/DocumentForHtmlEditor.vue b/assets/vue/views/documents/DocumentForHtmlEditor.vue index 1fd6e77cd5..59c8b48840 100644 --- a/assets/vue/views/documents/DocumentForHtmlEditor.vue +++ b/assets/vue/views/documents/DocumentForHtmlEditor.vue @@ -152,11 +152,11 @@ export default { }; }, created() { - console.log('created - vue/views/documents/List.vue'); + console.log('created - vue/views/documents/DocumentsList.vue'); this.filters['loadNode'] = 1; }, mounted() { - console.log('mounted - vue/views/documents/List.vue'); + console.log('mounted - vue/views/documents/DocumentsList.vue'); this.filters['loadNode'] = 1; this.onUpdateOptions(this.options); }, diff --git a/assets/vue/views/documents/DocumentsList.vue b/assets/vue/views/documents/DocumentsList.vue new file mode 100644 index 0000000000..4643a0ad9e --- /dev/null +++ b/assets/vue/views/documents/DocumentsList.vue @@ -0,0 +1,587 @@ + + + diff --git a/assets/vue/views/documents/List.vue b/assets/vue/views/documents/List.vue deleted file mode 100644 index 71061156a6..0000000000 --- a/assets/vue/views/documents/List.vue +++ /dev/null @@ -1,486 +0,0 @@ - - - diff --git a/assets/vue/views/documents/ListQuasar.vue b/assets/vue/views/documents/ListQuasar.vue index 3f28ab579b..e70622737e 100644 --- a/assets/vue/views/documents/ListQuasar.vue +++ b/assets/vue/views/documents/ListQuasar.vue @@ -121,7 +121,7 @@ export default { }; }, created() { - //console.log('created assets/vue/views/documents/List.vue'); + //console.log('created assets/vue/views/documents/DocumentsList.vue'); this.moment = moment; const route = useRoute() let nodeId = route.params['node']; diff --git a/tailwind.config.js b/tailwind.config.js index cf81d47139..4ac07b6f7b 100644 --- a/tailwind.config.js +++ b/tailwind.config.js @@ -12,10 +12,13 @@ module.exports = { primary: { DEFAULT: "#2e75a3", gradient: "#9cc2da", + bgdisabled: '#fafafa', + borderdisabled: '#e4e9eD', }, secondary: { DEFAULT: "#f37e2f", gradient: "#e06410", + bgdisabled: '#e4e9ed', }, gray: { 5: "#fcfcfc", @@ -44,6 +47,8 @@ module.exports = { black: colors.black, transparent: colors.transparent, current: colors.current, + + fontdisabled: '#a2a6b0', }, extend: { fontFamily: {