@@ -182,6 +197,7 @@ import NcActions from '@nextcloud/vue/dist/Components/NcActions.js'
import NcActionButton from '@nextcloud/vue/dist/Components/NcActionButton.js'
import NcActionLink from '@nextcloud/vue/dist/Components/NcActionLink.js'
import NcCheckboxRadioSwitch from '@nextcloud/vue/dist/Components/NcCheckboxRadioSwitch.js'
+import NcModal from '@nextcloud/vue/dist/Components/NcModal.js'
import IconAccountMultiple from 'vue-material-design-icons/AccountMultiple.vue'
import IconAlertCircleOutline from 'vue-material-design-icons/AlertCircleOutline.vue'
import IconCodeBrackets from 'vue-material-design-icons/CodeBrackets.vue'
@@ -189,6 +205,8 @@ import IconDelete from 'vue-material-design-icons/Delete.vue'
import IconLinkBoxVariantOutline from 'vue-material-design-icons/LinkBoxVariantOutline.vue'
import IconLinkVariant from 'vue-material-design-icons/LinkVariant.vue'
import IconPlus from 'vue-material-design-icons/Plus.vue'
+import IconQr from 'vue-material-design-icons/Qrcode.vue'
+import QRCode from 'qrcode'
import FormsIcon from '../Icons/FormsIcon.vue'
import IconCopyAll from '../Icons/IconCopyAll.vue'
@@ -211,10 +229,12 @@ export default {
IconLinkBoxVariantOutline,
IconLinkVariant,
IconPlus,
+ IconQr,
NcActions,
NcActionButton,
NcActionLink,
NcCheckboxRadioSwitch,
+ NcModal,
SharingSearchDiv,
SharingShareDiv,
},
@@ -232,6 +252,11 @@ export default {
return {
isLoading: false,
appConfig: loadState(appName, 'appConfig'),
+ qrModal: {
+ on: false,
+ text: '',
+ uri: '',
+ },
}
},
@@ -390,6 +415,16 @@ export default {
delete newAccess.legacyLink
this.$emit('update:formProp', 'access', newAccess)
},
+
+ async openQrModal(qrText) {
+ this.qrModal.text = qrText
+ try {
+ this.qrModal.uri = await QRCode.toDataURL(this.qrModal.text)
+ this.qrModal.on = true
+ } catch (err) {
+ console.error(err)
+ }
+ },
},
}
@@ -454,4 +489,9 @@ export default {
color: var(--color-error)
}
}
+
+.modal__content {
+ margin: 50px;
+ text-align: center;
+}