'f'
mh-two-thousand-and-two
2024-04-12 26f2711ef9461961fb953e2b497bd314ef95e345
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
48
49
50
51
<template>
  <uni-label
    :class="{'uni-label-pointer':pointer}"
    v-on="$listeners"
    @click="_onClick"
  >
    <slot />
  </uni-label>
</template>
<script>
import {
  emitter
} from 'uni-mixins'
export default {
  name: 'Label',
  mixins: [emitter],
  props: {
    for: {
      type: String,
      default: ''
    }
  },
  computed: {
    pointer () {
      return this.for || (this.$slots.default && this.$slots.default.length)
    }
  },
  methods: {
    _onClick ($event) {
      let stopPropagation = /^uni-(checkbox|radio|switch)-/.test($event.target.className)
      if (!stopPropagation) {
        stopPropagation = /^uni-(checkbox|radio|switch|button)$/i.test($event.target.tagName)
      }
      if (stopPropagation) {
        return
      }
 
      if (this.for) {
        UniViewJSBridge.emit('uni-label-click-' + this.$page.id + '-' + this.for, $event, true)
      } else {
        this.$broadcast(['Checkbox', 'Radio', 'Switch', 'Button'], 'uni-label-click', $event, true)
      }
    }
  }
}
</script>
<style>
.uni-label-pointer {
  cursor: pointer;
}
</style>