4
0
mirror of https://github.com/AzuraCast/AzuraCast.git synced 2024-06-14 05:06:37 +00:00
AzuraCast/frontend/vue/components/Admin/Stations/EditModal.vue
2022-12-30 08:38:34 -06:00

137 lines
2.9 KiB
Vue

<template>
<b-modal
id="station_edit_modal"
ref="$modal"
size="lg"
:title="langTitle"
:busy="loading"
@shown="resetForm"
@hidden="clearContents"
>
<admin-stations-form
v-bind="$props"
ref="$form"
is-modal
:create-url="createUrl"
:edit-url="editUrl"
:is-edit-mode="isEditMode"
@error="close"
@submitted="onSubmit"
@valid-update="onValidUpdate"
@loading-update="onLoadingUpdate"
>
<template #submitButton>
<invisible-submit-button />
</template>
</admin-stations-form>
<template #modal-footer>
<b-button
variant="default"
type="button"
@click="close"
>
{{ $gettext('Close') }}
</b-button>
<b-button
:variant="(disableSaveButton) ? 'danger' : 'primary'"
type="submit"
@click="doSubmit"
>
{{ $gettext('Save Changes') }}
</b-button>
</template>
</b-modal>
</template>
<script setup>
import AdminStationsForm from "~/components/Admin/Stations/StationForm.vue";
import InvisibleSubmitButton from "~/components/Common/InvisibleSubmitButton.vue";
import {computed, ref} from "vue";
import {useTranslate} from "~/vendor/gettext";
import {BModal} from "bootstrap-vue";
import stationFormProps from "~/components/Admin/Stations/stationFormProps";
const props = defineProps({
...stationFormProps,
createUrl: {
type: String,
required: true
}
});
const emit = defineEmits(['relist']);
const editUrl = ref(null);
const loading = ref(true);
const disableSaveButton = ref(true);
const isEditMode = computed(() => {
return editUrl.value !== null;
});
const {$gettext} = useTranslate();
const langTitle = computed(() => {
return isEditMode.value
? $gettext('Edit Station')
: $gettext('Add Station');
});
const $modal = ref(); // BModal
const onValidUpdate = (newValue) => {
disableSaveButton.value = !newValue;
};
const onLoadingUpdate = (newValue) => {
loading.value = newValue;
};
const create = () => {
editUrl.value = null;
$modal.value.show();
};
const edit = (recordUrl) => {
editUrl.value = recordUrl;
$modal.value.show();
};
const $form = ref(); // AdminStationsForm
const resetForm = () => {
$form.value.reset();
};
const close = () => {
$modal.value.hide();
};
const onSubmit = () => {
emit('relist');
close();
};
const doSubmit = () => {
$form.value.submit();
};
const clearContents = () => {
editUrl.value = null;
};
defineExpose({
create,
edit
});
</script>
<script>
import {defineComponent} from "vue";
export default defineComponent({
inheritAttrs: false,
});
</script>