11<template >
2- <span class =" input-title styled" >r=</span >
3- <s-text-field
4- class =" styled"
5- ref =" inputBox"
6- label =" x"
7- v-model =" self.vector[0]"
8- ></s-text-field >
9- <s-text-field
10- class =" styled"
11- ref =" inputBox"
12- label =" y"
13- v-model =" self.vector[1]"
14- ></s-text-field >
15- <s-divider >{{ t("title.moreOptions") }}</s-divider >
2+ <div class =" input-inner vector" >
3+ <div class =" fields" >
4+ <span class =" input-title" >{{ t("data.main.vector") }}</span >
5+ <div class =" tuple" >
6+ <span class =" tuple-label styled" >(</span >
7+ <s-text-field
8+ class =" styled tuple-input"
9+ label =" Δx"
10+ v-model =" vectorX"
11+ type =" number"
12+ ></s-text-field >
13+ <span class =" tuple-label styled" >,</span >
14+ <s-text-field
15+ class =" styled tuple-input"
16+ label =" Δy"
17+ v-model =" vectorY"
18+ type =" number"
19+ ></s-text-field >
20+ <span class =" tuple-label styled" >)</span >
21+ </div >
22+ <span class =" input-title" >{{ t("data.main.offset") }}</span >
23+ <div class =" tuple" >
24+ <span class =" tuple-label styled" >(</span >
25+ <s-text-field
26+ class =" styled tuple-input"
27+ label =" x₀"
28+ v-model =" offsetX"
29+ type =" number"
30+ ></s-text-field >
31+ <span class =" tuple-label styled" >,</span >
32+ <s-text-field
33+ class =" styled tuple-input"
34+ label =" y₀"
35+ v-model =" offsetY"
36+ type =" number"
37+ ></s-text-field >
38+ <span class =" tuple-label styled" >)</span >
39+ </div >
40+ </div >
41+ <AnimatedFold :folded =" props.folded" >
42+ <s-divider >{{ t("data.more.dividerTitle") }}</s-divider >
43+ <div class =" input-inner-optional" >
44+ <div class =" fields" >
45+ <!-- color -->
46+ <span class =" label" >
47+ {{ t("data.more.color") }}
48+ <HelpIcon > {{ t("data.more.colorHelp") }} </HelpIcon >
49+ </span >
50+ <ColorPicker v-model =" self.color" />
51+ </div >
52+ </div >
53+ </AnimatedFold >
54+ </div >
1655</template >
1756
1857<script setup lang="ts">
1958import { PrivateDataTypes } from " @/types/data" ;
20- import { toRef } from " vue" ;
59+ import { ref , toRef , watch } from " vue" ;
2160import { useI18n } from " vue-i18n" ;
2261import { I18nSchema } from " @/i18n" ;
2362const { t } = useI18n <{ message: I18nSchema }>();
@@ -28,4 +67,18 @@ const props = defineProps<{
2867 index: number ;
2968}>();
3069const self = toRef (props , " self" );
70+
71+ import AnimatedFold from " @/ui/animated/animatedFold.vue" ;
72+ import HelpIcon from " ./subblocks/helpIcon.vue" ;
73+ import ColorPicker from " ./subblocks/colorPicker.vue" ;
74+
75+ const vectorX = ref <number | " " >(self .value .vector [0 ]);
76+ const vectorY = ref <number | " " >(self .value .vector [1 ]);
77+ const offsetX = ref <number | " " >(self .value .offset [0 ] || " " );
78+ const offsetY = ref <number | " " >(self .value .offset [1 ] || " " );
79+
80+ watch (vectorX , (val ) => (self .value .vector [0 ] = val || 0 ));
81+ watch (vectorY , (val ) => (self .value .vector [1 ] = val || 0 ));
82+ watch (offsetX , (val ) => (self .value .offset [0 ] = val || 0 ));
83+ watch (offsetY , (val ) => (self .value .offset [1 ] = val || 0 ));
3184 </script >
0 commit comments