Files
uptime-kuma/src/components/IncidentEditForm.vue
T
ryana 9169a647cb feat: implement incident history (#6469)
Co-authored-by: Frank Elsinga <frank@elsinga.de>
Co-authored-by: autofix-ci[bot] <114827586+autofix-ci[bot]@users.noreply.github.com>
2026-01-20 07:03:12 +01:00

120 lines
3.8 KiB
Vue

<template>
<div
class="shadow-box alert mb-4 p-4 incident"
role="alert"
:class="'bg-' + modelValue.style"
data-testid="incident-edit"
>
<strong>{{ $t("Title") }}:</strong>
<Editable
:model-value="modelValue.title"
tag="h4"
:contenteditable="true"
:noNL="true"
class="alert-heading"
data-testid="incident-title"
@update:model-value="updateField('title', $event)"
/>
<strong>{{ $t("Content") }}:</strong>
<Editable
:model-value="modelValue.content"
tag="div"
:contenteditable="true"
class="content"
data-testid="incident-content-editable"
@update:model-value="updateField('content', $event)"
/>
<div class="form-text">
{{ $t("markdownSupported") }}
</div>
<div class="mt-3">
<button class="btn btn-light me-2" data-testid="post-incident-button" @click="$emit('post')">
<font-awesome-icon icon="bullhorn" />
{{ $t("Post") }}
</button>
<button class="btn btn-light me-2" @click="$emit('cancel')">
<font-awesome-icon icon="times" />
{{ $t("Cancel") }}
</button>
<div class="dropdown d-inline-block me-2">
<button
id="dropdownMenuButton1"
class="btn btn-secondary dropdown-toggle"
type="button"
data-bs-toggle="dropdown"
aria-expanded="false"
>
{{ $t("Style") }}: {{ $t(modelValue.style) }}
</button>
<ul class="dropdown-menu" aria-labelledby="dropdownMenuButton1">
<li>
<a class="dropdown-item" href="#" @click.prevent="updateField('style', 'info')">
{{ $t("info") }}
</a>
</li>
<li>
<a class="dropdown-item" href="#" @click.prevent="updateField('style', 'warning')">
{{ $t("warning") }}
</a>
</li>
<li>
<a class="dropdown-item" href="#" @click.prevent="updateField('style', 'danger')">
{{ $t("danger") }}
</a>
</li>
<li>
<a class="dropdown-item" href="#" @click.prevent="updateField('style', 'primary')">
{{ $t("primary") }}
</a>
</li>
<li>
<a class="dropdown-item" href="#" @click.prevent="updateField('style', 'light')">
{{ $t("light") }}
</a>
</li>
<li>
<a class="dropdown-item" href="#" @click.prevent="updateField('style', 'dark')">
{{ $t("dark") }}
</a>
</li>
</ul>
</div>
</div>
</div>
</template>
<script>
export default {
name: "IncidentEditForm",
props: {
modelValue: {
type: Object,
required: true,
},
},
emits: ["update:modelValue", "post", "cancel"],
methods: {
updateField(field, value) {
this.$emit("update:modelValue", {
...this.modelValue,
[field]: value,
});
},
},
};
</script>
<style lang="scss" scoped>
.incident {
.content {
&[contenteditable="true"] {
min-height: 60px;
}
}
}
</style>