PluginProbe ʕ •ᴥ•ʔ
Booking for Appointments and Events Calendar – Amelia / 1.2.20
Booking for Appointments and Events Calendar – Amelia v1.2.20
2.4.4 2.4.3 2.4.2 2.4.1 2.4 trunk 1.2.1 1.2.10 1.2.11 1.2.12 1.2.13 1.2.14 1.2.15 1.2.16 1.2.17 1.2.18 1.2.19 1.2.2 1.2.20 1.2.21 1.2.22 1.2.23 1.2.24 1.2.25 1.2.26 1.2.27 1.2.28 1.2.29 1.2.3 1.2.30 1.2.31 1.2.32 1.2.33 1.2.34 1.2.35 1.2.36 1.2.37 1.2.38 1.2.4 1.2.5 1.2.6 1.2.7 1.2.8 1.2.9 2.0 2.0.1 2.0.2 2.1 2.1.1 2.1.2 2.1.3 2.2 2.2.1 2.3
ameliabooking / v3 / src / views / admin / customize / fields / ServiceFormField.vue
ameliabooking / v3 / src / views / admin / customize / fields Last commit date
EmailFormField.vue 4 years ago EmployeeFormField.vue 3 years ago FirstNameFormField.vue 4 years ago LastNameFormField.vue 4 years ago LocationFormField.vue 3 years ago PhoneFormField.vue 4 years ago ServiceFormField.vue 2 years ago
ServiceFormField.vue
205 lines
1 <template>
2 <el-form-item class="am-fs__init-form__item" prop="service" label-position="top">
3 <template #label>
4 <span class="am-fs__init-form__label">
5 {{ `${labelsDisplay('service_colon')}:` }}
6 </span>
7 </template>
8 <AmAdvancedSelect
9 v-model="formData.service"
10 :options="categoryOptions"
11 :props-data="advSelectProps"
12 :filterable="amCustomize[pageRenderKey].initStep.options.service.filterable"
13 :placeholder="labelsDisplay('select_service')"
14 :category-name="labelsDisplay('dropdown_category_heading')"
15 :sub-category-name="labelsDisplay('dropdown_items_heading')"
16 :empty-state-string="labelsDisplay('dropdown_empty')"
17 @change="changeService"
18 ></AmAdvancedSelect>
19 </el-form-item>
20 </template>
21
22 <script setup>
23 import AmAdvancedSelect from '../../../_components/advanced-select/AmAdvancedSelect.vue'
24 import { computed, inject, reactive, ref } from 'vue'
25
26 let langKey = inject('langKey')
27 let amLabels = inject('labels')
28
29 let pageRenderKey = inject('pageRenderKey')
30 let amCustomize = inject('customize')
31
32
33 // * Label computed function
34 function labelsDisplay (label) {
35 let computedLabel = computed(() => {
36 return amCustomize.value[pageRenderKey.value].initStep.translations
37 && amCustomize.value[pageRenderKey.value].initStep.translations[label]
38 && amCustomize.value[pageRenderKey.value].initStep.translations[label][langKey.value]
39 ? amCustomize.value[pageRenderKey.value].initStep.translations[label][langKey.value]
40 : amLabels[label]
41 })
42
43 return computedLabel.value
44 }
45
46 // * Sidebar steps
47 let { sidebarDataCollector } = inject('sidebarStepsFunctions', {
48 sidebarDataCollector: () => {}
49 });
50
51 // * Form field data
52 let formData = inject('formData')
53
54 /**
55 * * Category - Service Block
56 */
57 // * Service select props
58 let advSelectProps = reactive({
59 expandTrigger: 'hover',
60 multiple: false,
61 checkStrictly: false,
62 emitPath: true,
63 lazy: false,
64 value: 'id',
65 label: 'name',
66 children: 'serviceList',
67 disabled: 'disabled',
68 leaf: 'leaf'
69 })
70
71 // * Set Category Options from entities
72 let categoryOptions = ref([
73 {
74 id: 1,
75 name: 'Category 1',
76 serviceList: [
77 {
78 id: 10,
79 name: 'Service 11',
80 price: 125
81 },
82 {
83 id: 11,
84 name: 'Service 12',
85 price: 125
86 },
87 {
88 id: 12,
89 name: 'Service 13',
90 price: 125
91 }
92 ]
93 },
94 {
95 id: 2,
96 name: 'Category 2',
97 serviceList: [
98 {
99 id: 10,
100 name: 'Service 21',
101 price: 125
102 },
103 {
104 id: 11,
105 name: 'Service 22',
106 price: 125
107 },
108 {
109 id: 12,
110 name: 'Service 23',
111 price: 125
112 }
113 ]
114 },
115 {
116 id: 3,
117 name: 'Category 3',
118 serviceList: [
119 {
120 id: 10,
121 name: 'Service 31',
122 price: 125
123 },
124 {
125 id: 11,
126 name: 'Service 32',
127 price: 125
128 },
129 {
130 id: 12,
131 name: 'Service 33',
132 price: 125
133 }
134 ]
135 },
136 {
137 id: 4,
138 name: 'Category 4',
139 serviceList: [
140 {
141 id: 10,
142 name: 'Service 41',
143 price: 125
144 },
145 {
146 id: 11,
147 name: 'Service 42',
148 price: 125
149 },
150 {
151 id: 12,
152 name: 'Service 43',
153 price: 125
154 }
155 ]
156 },
157 {
158 id: 5,
159 name: 'Category 5',
160 serviceList: [
161 {
162 id: 10,
163 name: 'Service 51',
164 price: 125
165 },
166 {
167 id: 11,
168 name: 'Service 52',
169 price: 125
170 },
171 {
172 id: 12,
173 name: 'Service 53',
174 price: 125
175 }
176 ]
177 }
178 ])
179
180 /**
181 * Change Service function
182 * @param val
183 */
184 let changeService = (val) => {
185 let serviceData = reactive({
186 reference: 'service',
187 // position will depends on fields order
188 position: 0,
189 value: ''
190 })
191
192 if (Array.isArray(val)) {
193 serviceData.value = categoryOptions.value.find((item) => item.id === val[0]).serviceList.find(item => item.id === val[1]).name
194 }
195
196 sidebarDataCollector(serviceData)
197 }
198 </script>
199
200 <script>
201 export default {
202 name: "ServiceFormField"
203 }
204 </script>
205