From ee0139507102e1a8e6a3c82c4f1209929a0e5578 Mon Sep 17 00:00:00 2001 From: Henry Jameson Date: Tue, 5 Aug 2025 17:00:21 +0300 Subject: [PATCH 1/9] image cropper cleanup --- src/components/image_cropper/image_cropper.js | 22 ++++++------------- 1 file changed, 7 insertions(+), 15 deletions(-) diff --git a/src/components/image_cropper/image_cropper.js b/src/components/image_cropper/image_cropper.js index 32b615265..afca328e8 100644 --- a/src/components/image_cropper/image_cropper.js +++ b/src/components/image_cropper/image_cropper.js @@ -10,19 +10,12 @@ library.add( const ImageCropper = { props: { + // Mime-types to accept, i.e. which filetypes to accept (.gif, .png, etc.) mimes: { type: String, default: 'image/png, image/gif, image/jpeg, image/bmp, image/x-icon' }, - saveButtonLabel: { - type: String - }, - saveWithoutCroppingButtonlabel: { - type: String - }, - cancelButtonLabel: { - type: String - }, + // Fixed aspect-ratio for selection box aspectRatio: { type: Number } @@ -30,11 +23,13 @@ const ImageCropper = { data () { return { dataUrl: undefined, - filename: undefined, - submitting: false + filename: undefined } }, - emits: ['submit'], + emits: [ + 'submit', // cropping complete or uncropped image returned + 'close', // cropper is closed + ], methods: { destroy () { this.$refs.input.value = '' @@ -42,8 +37,6 @@ const ImageCropper = { this.$emit('close') }, submit (cropping = true) { - this.submitting = true - let cropperPromise if (cropping) { cropperPromise = this.$refs.cropperSelection.$toCanvas() @@ -53,7 +46,6 @@ const ImageCropper = { cropperPromise.then(canvas => { this.$emit('submit', { canvas, file: this.file }) - this.submitting = false }) }, pickImage () { From 6e44a3afa935f58fd7074cfca8faf11a829dc2e8 Mon Sep 17 00:00:00 2001 From: Henry Jameson Date: Tue, 5 Aug 2025 17:00:39 +0300 Subject: [PATCH 2/9] language switcher cleanup --- .../interface_language_switcher.js | 58 +++++++++++++++++ .../interface_language_switcher.vue | 65 +------------------ .../settings_modal/tabs/general_tab.js | 3 +- .../settings_modal/tabs/general_tab.vue | 16 +++-- src/components/user_card/user_card.js | 4 -- 5 files changed, 71 insertions(+), 75 deletions(-) create mode 100644 src/components/interface_language_switcher/interface_language_switcher.js diff --git a/src/components/interface_language_switcher/interface_language_switcher.js b/src/components/interface_language_switcher/interface_language_switcher.js new file mode 100644 index 000000000..bd7b641a5 --- /dev/null +++ b/src/components/interface_language_switcher/interface_language_switcher.js @@ -0,0 +1,58 @@ +import localeService from '../../services/locale/locale.service.js' + +import Select from '../select/select.vue' +import ProfileSettingIndicator from 'src/components/settings_modal/helpers/profile_setting_indicator.vue' + +export default { + components: { + Select, + ProfileSettingIndicator + }, + props: { + // List of languages (or just one language) + modelValue: { + type: [Array, String], + required: true + }, + // Is this setting stored in user profile (true) or elsewhere (false) + // Doesn't affect storage, just shows an icon if true + profile: { + type: Boolean, + default: false + } + }, + emits: ['update:modelValue'], + computed: { + languages () { + return localeService.languages + }, + + controlledLanguage: { + get: function () { + return Array.isArray(this.modelValue) ? this.modelValue : [this.modelValue] + }, + set: function (val) { + this.$emit('update:modelValue', val) + } + } + }, + + methods: { + getLanguageName (code) { + return localeService.getLanguageName(code) + }, + addLanguage () { + this.controlledLanguage = [...this.controlledLanguage, ''] + }, + setLanguageAt (index, val) { + const lang = [...this.controlledLanguage] + lang[index] = val + this.controlledLanguage = lang + }, + removeLanguageAt (index) { + const lang = [...this.controlledLanguage] + lang.splice(index, 1) + this.controlledLanguage = lang + } + } +} diff --git a/src/components/interface_language_switcher/interface_language_switcher.vue b/src/components/interface_language_switcher/interface_language_switcher.vue index 46837b018..8b300d43b 100644 --- a/src/components/interface_language_switcher/interface_language_switcher.vue +++ b/src/components/interface_language_switcher/interface_language_switcher.vue @@ -1,7 +1,7 @@ - +