summaryrefslogtreecommitdiff
path: root/app/assets/javascripts/design_management_legacy/components/design_note_pin.vue
diff options
context:
space:
mode:
Diffstat (limited to 'app/assets/javascripts/design_management_legacy/components/design_note_pin.vue')
-rw-r--r--app/assets/javascripts/design_management_legacy/components/design_note_pin.vue61
1 files changed, 61 insertions, 0 deletions
diff --git a/app/assets/javascripts/design_management_legacy/components/design_note_pin.vue b/app/assets/javascripts/design_management_legacy/components/design_note_pin.vue
new file mode 100644
index 00000000000..2b5e62c2870
--- /dev/null
+++ b/app/assets/javascripts/design_management_legacy/components/design_note_pin.vue
@@ -0,0 +1,61 @@
+<script>
+import { GlIcon } from '@gitlab/ui';
+import { __, sprintf } from '~/locale';
+
+export default {
+ name: 'DesignNotePin',
+ components: {
+ GlIcon,
+ },
+ props: {
+ position: {
+ type: Object,
+ required: true,
+ },
+ label: {
+ type: Number,
+ required: false,
+ default: null,
+ },
+ repositioning: {
+ type: Boolean,
+ required: false,
+ default: false,
+ },
+ },
+ computed: {
+ isNewNote() {
+ return this.label === null;
+ },
+ pinStyle() {
+ return this.repositioning ? { ...this.position, cursor: 'move' } : this.position;
+ },
+ pinLabel() {
+ return this.isNewNote
+ ? __('Comment form position')
+ : sprintf(__("Comment '%{label}' position"), { label: this.label });
+ },
+ },
+};
+</script>
+
+<template>
+ <button
+ :style="pinStyle"
+ :aria-label="pinLabel"
+ :class="{
+ 'btn-transparent comment-indicator': isNewNote,
+ 'js-image-badge badge badge-pill': !isNewNote,
+ }"
+ class="design-pin gl-absolute gl-display-flex gl-align-items-center gl-justify-content-center gl-p-0"
+ type="button"
+ @mousedown="$emit('mousedown', $event)"
+ @mouseup="$emit('mouseup', $event)"
+ @click="$emit('click', $event)"
+ >
+ <gl-icon v-if="isNewNote" name="image-comment-dark" :size="24" />
+ <template v-else>
+ {{ label }}
+ </template>
+ </button>
+</template>