[+] Implement v-model

This commit is contained in:
Hykilpikonna
2021-12-10 23:29:40 -05:00
parent f41e32970a
commit 312a520066
3 changed files with 23 additions and 11 deletions
-3
View File
@@ -17,6 +17,3 @@ export function range(fromOrTo: number, to?: number, step = 1): number[]
return [...Array(Math.floor((to - from) / step))].map((_, i) => from + i * step); return [...Array(Math.floor((to - from) / step))].map((_, i) => from + i * step);
} }
console.log(range(3))
console.log(range(2, 5))
+10 -2
View File
@@ -1,16 +1,24 @@
<template> <template>
<div id="Projects"> <div id="Projects">
<ColorPicker style="margin-top: 10px" v-model:color="color"></ColorPicker>
<button @click="log"></button>
</div> </div>
</template> </template>
<script lang="ts"> <script lang="ts">
import {Options, Vue} from 'vue-class-component'; import {Options, Vue} from 'vue-class-component';
import MyColorPicker from "@/views/color/ColorPicker.vue";
import {Color} from "three";
@Options({components: {}}) @Options({components: {ColorPicker: MyColorPicker}})
export default class Projects extends Vue export default class Projects extends Vue
{ {
color = new Color('#ffffff')
log(): void
{
console.log(this.color)
}
} }
</script> </script>
+13 -6
View File
@@ -2,9 +2,9 @@
<div id="ColorPicker"> <div id="ColorPicker">
<div id="title-colors" class="fbox-h"> <div id="title-colors" class="fbox-h">
<div>Colors</div> <div>Colors</div>
<input v-model="colorInput" spellcheck="false"> <input v-model="colorInput" spellcheck="false" @change="colorModel = colorInput">
</div> </div>
<ColorPicker id="picker" :isWidget="true" pickerType="chrome" v-model:pureColor="color" <ColorPicker id="picker" :isWidget="true" pickerType="chrome" v-model:pureColor="colorModel"
:disableHistory="true" @pureColorChange="change" format="hex"/> :disableHistory="true" @pureColorChange="change" format="hex"/>
<div id="palette"> <div id="palette">
<div class="row" v-for="p of palette" :key="p"> <div class="row" v-for="p of palette" :key="p">
@@ -16,27 +16,34 @@
</template> </template>
<script lang="ts"> <script lang="ts">
import {Options, Vue} from 'vue-class-component'; import {Options, prop, Vue} from 'vue-class-component';
import "vue3-colorpicker/style.css"; import "vue3-colorpicker/style.css";
import {ColorPicker} from "vue3-colorpicker"; import {ColorPicker} from "vue3-colorpicker";
import {Color} from "three"; import {Color} from "three";
import {range} from "@/utils"; import {range} from "@/utils";
import {Model, ModelSync, Prop} from "vue-property-decorator";
@Options({components: {ColorPicker}}) @Options({components: {ColorPicker}})
export default class MyColorPicker extends Vue export default class MyColorPicker extends Vue
{ {
color = "#ffffff" @Model() color!: Color
colorInput = this.color.substr(1) colorModel = ''
colorInput = ''
palette: string[][] = [] palette: string[][] = []
mounted(): void created(): void
{ {
this.colorModel = '#' + this.color.getHexString()
this.colorInput = this.colorModel.substr(1)
this.palette = range(3).map(_ => range(10).map(_ => '')) this.palette = range(3).map(_ => range(10).map(_ => ''))
} }
change(color: string): void change(color: string): void
{ {
this.colorInput = color.substr(1) this.colorInput = color.substr(1)
const c = new Color(this.colorModel)
this.$emit('update:color', c)
this.$emit('updateColor', c)
} }
} }
</script> </script>