2023-02-09 22:18:06 +03:00
|
|
|
{{define "promptModal"}}
|
|
|
|
<a-modal id="prompt-modal" v-model="promptModal.visible" :title="promptModal.title"
|
|
|
|
:closable="true" @ok="promptModal.ok" :mask-closable="false"
|
2024-02-27 15:31:20 +03:00
|
|
|
:confirm-loading="promptModal.confirmLoading"
|
2023-12-04 21:17:38 +03:00
|
|
|
:ok-text="promptModal.okText" cancel-text='{{ i18n "cancel" }}' :class="themeSwitcher.currentTheme">
|
2023-02-09 22:18:06 +03:00
|
|
|
<a-input id="prompt-modal-input" :type="promptModal.type"
|
|
|
|
v-model="promptModal.value"
|
|
|
|
:autosize="{minRows: 10, maxRows: 20}"
|
|
|
|
@keydown.enter.native="promptModal.keyEnter"
|
|
|
|
@keydown.ctrl.83="promptModal.ctrlS"></a-input>
|
|
|
|
</a-modal>
|
|
|
|
|
|
|
|
<script>
|
|
|
|
|
|
|
|
const promptModal = {
|
|
|
|
title: '',
|
|
|
|
type: '',
|
|
|
|
value: '',
|
|
|
|
okText: '{{ i18n "sure"}}',
|
|
|
|
visible: false,
|
2024-02-27 15:31:20 +03:00
|
|
|
confirmLoading: false,
|
2023-02-09 22:18:06 +03:00
|
|
|
keyEnter(e) {
|
|
|
|
if (this.type !== 'textarea') {
|
|
|
|
e.preventDefault();
|
|
|
|
this.ok();
|
|
|
|
}
|
|
|
|
},
|
|
|
|
ctrlS(e) {
|
|
|
|
if (this.type === 'textarea') {
|
|
|
|
e.preventDefault();
|
|
|
|
promptModal.confirm(promptModal.value);
|
|
|
|
}
|
|
|
|
},
|
|
|
|
ok() {
|
|
|
|
promptModal.confirm(promptModal.value);
|
|
|
|
},
|
|
|
|
confirm() {},
|
|
|
|
open({
|
2023-05-08 17:44:22 +03:00
|
|
|
title = '',
|
|
|
|
type = 'text',
|
|
|
|
value = '',
|
|
|
|
okText = '{{ i18n "sure"}}',
|
|
|
|
confirm = () => {},
|
|
|
|
}) {
|
2023-02-09 22:18:06 +03:00
|
|
|
this.title = title;
|
|
|
|
this.type = type;
|
|
|
|
this.value = value;
|
|
|
|
this.okText = okText;
|
|
|
|
this.confirm = confirm;
|
|
|
|
this.visible = true;
|
|
|
|
promptModalApp.$nextTick(() => {
|
|
|
|
document.querySelector('#prompt-modal-input').focus();
|
|
|
|
});
|
|
|
|
},
|
|
|
|
close() {
|
|
|
|
this.visible = false;
|
2024-02-27 15:31:20 +03:00
|
|
|
},
|
|
|
|
loading(loading=true) {
|
|
|
|
this.confirmLoading = loading;
|
|
|
|
},
|
2023-02-09 22:18:06 +03:00
|
|
|
};
|
|
|
|
|
|
|
|
const promptModalApp = new Vue({
|
|
|
|
el: '#prompt-modal',
|
|
|
|
data: {
|
|
|
|
promptModal: promptModal,
|
|
|
|
},
|
|
|
|
});
|
|
|
|
|
|
|
|
</script>
|
|
|
|
{{end}}
|