aboutsummaryrefslogtreecommitdiff
path: root/src/components/image_cropper/image_cropper.vue
blob: 129e6f469fbdad7d352920e1a0d095403e47d375 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
<template>
  <div class="image-cropper">
    <div v-if="dataUrl">
      <div class="image-cropper-image-container">
        <img ref="img" :src="dataUrl" alt="" @load.stop="createCropper" />
      </div>
      <div class="image-cropper-buttons-wrapper">
        <button class="btn" type="button" :disabled="submitting" @click="submit" v-text="saveText"></button>
        <button class="btn" type="button" :disabled="submitting" @click="destroy" v-text="cancelText"></button>
        <button class="btn" type="button" :disabled="submitting" @click="submitWithoutCropping" v-text="saveWithoutCroppingText"></button>
        <i class="icon-spin4 animate-spin" v-if="submitting"></i>
      </div>
      <div class="alert error" v-if="submitError">
        {{submitErrorMsg}}
        <i class="button-icon icon-cancel" @click="clearError"></i>
      </div>
    </div>
    <input ref="input" type="file" class="image-cropper-img-input" :accept="mimes">
  </div>
</template>

<script src="./image_cropper.js"></script>

<style lang="scss">
.image-cropper {
  &-img-input {
    display: none;
  }

  &-image-container {
    position: relative;

    img {
      display: block;
      max-width: 100%;
    }
  }

  &-buttons-wrapper {
    margin-top: 10px;

    button {
      margin-top: 5px;
    }
  }
}
</style>