| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100 | <template>  <view class="ui-switch" :class="[{ disabled: props.disabled }, props.ui]">    <view class="ui-switch-wrapper" @tap="change">      <view        class="ui-switch-input"        :class="[          { 'ui-switch-input-checked': props.modelValue },          props.modelValue ? props.bg : '',          props.text,          props.size,        ]"      ></view>    </view>  </view></template><script>  export default {    name: 'UiSwitch',  };</script><script setup>  const props = defineProps({    modelValue: {      type: [Boolean, Number],      default: false,    },    ui: {      type: String,      default: '',    },    bg: {      type: String,      default: 'ui-BG-Main',    },    text: {      type: String,      default: '',    },    size: {      type: String,      default: 'sm',    },    disabled: {      type: Boolean,      default: false,    },  });  const emits = defineEmits(['update:modelValue']);  const change = () => {    emits('update:modelValue', !props.modelValue);  };</script><style lang="scss" scoped>  .ui-switch {    display: inline-block;    cursor: pointer;    .ui-switch-wrapper {      display: inline-flex;      align-items: center;      vertical-align: middle;    }    .ui-switch-input {      appearance: none;      position: relative;      width: 47px;      height: 26px;      outline: 0;      border-radius: 16px;      box-sizing: border-box;      background-color: rgba(119, 119, 119, 0.3);      transition: background-color 0.1s, border 0.1s;      &:after {        content: ' ';        position: absolute;        top: 0;        left: 0;        border-radius: 200px;        transition: transform 0.3s;        width: 20px;        height: 20px;        margin: 3px;        background-color: #fff;      }      &.ui-switch-input-checked {        &:after {          transform: translateX(21px);        }      }    }    &.disabled {      cursor: not-allowed;      .ui-switch-input {        opacity: 0.7;      }    }  }</style>
 |