FileMaster
Search
Toggle Dark Mode
Home
/
.
/
wp-content
/
plugins
/
ameliabooking
/
v3
/
src
/
views
/
_components
/
radio
Edit File: AmRadio.vue
<template> <div class="am-radio-wrapper"> <el-radio ref="amRadio" v-model="model" class="am-radio" :class="[`am-radio__${props.size}`]" :value="props.value" :label="props.label" :disabled="props.disabled" :border="props.border" :name="props.name" :style="{...cssVars}" @change="(e) => $emit('change', e)" > <slot name="default"></slot> </el-radio> </div> </template> <script setup> // * Composables import { useColorTransparency } from '../../../assets/js/common/colorManipulation'; // * Import from Vue import { computed, ref, inject, toRefs } from "vue"; /** * Component Props * */ const props = defineProps({ modelValue: { type: [String, Number, Boolean] }, value: { type: [String, Number, Boolean] }, label: { // * the label of Radio. If there's no value, label will act as value type: [String, Number, Boolean] }, disabled: { type: Boolean, default: false }, border: { type: Boolean, default: false }, size: { type: String, default: 'default', validator(value) { return ['default', 'medium', 'small'].includes(value) } }, name: { type: String, default: '' }, style: { type: Object, default: () => { return {} } } }) /** * Component Emits * */ const emits = defineEmits(['change', 'update:modelValue']) /** * Component model */ let { modelValue } = toRefs(props) let model = computed({ get: () => modelValue.value, set: (val) => { emits('update:modelValue', val) } }) const amRadio = ref(null) // * Color Vars let amColors = inject('amColors', ref({ colorPrimary: '#1246D6', colorSuccess: '#019719', colorError: '#B4190F', colorWarning: '#CCA20C', colorMainBgr: '#FFFFFF', colorMainHeadingText: '#33434C', colorMainText: '#1A2C37', colorSbBgr: '#17295A', colorSbText: '#FFFFFF', colorInpBgr: '#FFFFFF', colorInpBorder: '#D1D5D7', colorInpText: '#1A2C37', colorInpPlaceHolder: '#1A2C37', colorDropBgr: '#FFFFFF', colorDropBorder: '#D1D5D7', colorDropText: '#0E1920', colorBtnPrim: '#265CF2', colorBtnPrimText: '#FFFFFF', colorBtnSec: '#1A2C37', colorBtnSecText: '#FFFFFF', })) const cssVars = computed(() => { return { '--am-c-radio-bgr': amColors.value.colorInpBgr, '--am-c-radio-border': amColors.value.colorInpBorder, '--am-c-radio-label': amColors.value.colorInpBorder, '--am-c-radio-border-op30': useColorTransparency(amColors.value.colorInpText, 0.3), '--am-c-radio-hover-bgr': useColorTransparency(amColors.value.colorInpText, 0.1), '--am-c-radio-bgr-op80': useColorTransparency(amColors.value.colorInpText, 0.8), '--am-c-radio-border-op60': useColorTransparency(amColors.value.colorPrimary, 0.6), } }) </script> <style lang="scss"> @mixin am-radio-block { // Radio Wrapper .am-radio-wrapper { // -c- color // -bgr- background --am-c-radio-bgr: transparent; --am-c-radio-text: transparent; --am-c-radio-border: var(--am-c-inp-border); --am-c-radio-label: var(--am-c-main-text); --am-c-radio-inp-text: var(--am-c-main-bgr); align-self: flex-start; // Element Radio .el-radio { display: flex; align-items: center; white-space: pre-line; min-height: 32px; height: auto; // Inner &__inner { height: 16px; width: 16px; border: 1px solid var(--am-c-radio-border); background-color: var(--am-c-radio-bgr); &:after { background-color: var(--am-c-radio-inp-text); } } // Input &__input { padding: 4px 0; display: flex; align-items: center; align-self: flex-start; // After &:after { background-color: var(--am-c-radio-text); } // Checked &.is-checked { --am-c-radio-bgr: var(--am-c-primary); --am-c-radio-border: var(--am-c-primary); --am-c-radio-text: var(--am-c-main-bgr); &:hover { --am-c-radio-bgr: var(--am-c-primary); } // Disabled &.is-disabled { --am-c-radio-bgr: var(--am-c-radio-bgr-op80); --am-c-radio-border: var(--am-c-radio-border-op60); } } } // Label &__label { display: inline-block; font-size: 15px; font-weight: 500; line-height: 24px; word-break: break-word; white-space: pre-line; align-self: flex-start; color: var(--am-c-main-text); padding-left: 0.75rem; margin-right: 8px; } // Selected Label .el-radio__input.is-checked:not(.is-disabled) + .el-radio__label { margin-right: 8px; } // Hover &:hover:not(.is-disabled):not(.is-checked) { // Inner .el-radio__inner { border: 1px solid var(--am-c-radio-border); box-shadow: inset 0 1px 1px rgba(20, 35, 61, 0.11); background: var(--am-c-primary); } } // Focus &:focus:is(.is-focus) { // Inner .el-radio__inner { border: 2px solid var(--am-c-radio-border-lighten80); } } // Disabled &.is-disabled { // Inner .el-radio__inner { box-shadow: 0 1px 1px rgba(115, 134, 169, 0.06); } // Label .el-radio__label { color: var(--am-c-main-text); } &.is-checked { .el-radio__inner { border: 1px solid var(--am-c-radio-border); background-color: var(--am-c-radio-border-lighten80); } } } // Label Right &.is-label-right { // Input .el-radio__input { margin-left: auto; order: 2; } // Label .el-radio__label { padding-left: 0; padding-right: 8px; } } // With Description &.is-with-description { align-items: flex-start; // Description .am-radio__description { font-weight: 400; font-size: 13px; line-height: 20px; } } } } } // public .amelia-v2-booking #amelia-container { @include am-radio-block; } // admin #amelia-app-backend-new { @include am-radio-block; } </style>
Save
Back