|
1 |
| - |
2 |
| - |
3 |
| -<div x-data="InputColorSelect()" x-init="$watch('colorSelected', value => colorChanged())" x-cloak> |
| 1 | +<div x-data="{ |
| 2 | + isOpen: false, |
| 3 | + colors: ['#2196F3', '#009688', '#9C27B0', '#FFEB3B', '#afbbc9', '#4CAF50', '#2d3748', '#f56565', '#ed64a6'], |
| 4 | + colorSelected: '{{ $default }}', |
| 5 | + colorChanged() { |
| 6 | + this.$dispatch('{{ $changeEvent }}', this.colorSelected) |
| 7 | + } |
| 8 | +}" x-init="$watch('colorSelected', value => colorChanged())" x-cloak> |
4 | 9 | <div>
|
5 |
| - |
6 | 10 | <div class="mb-5">
|
7 | 11 | <div class="flex items-center">
|
8 | 12 | <div>
|
9 | 13 | <label for="colorSelected" class="block font-bold mb-1">Select Color</label>
|
10 |
| - <input id="colorSelected" type="text" placeholder="Pick a color" x-on:change="colorChanged" |
11 |
| - class="border border-transparent shadow px-4 py-2 leading-normal text-gray-700 bg-white rounded-md focus:outline-none focus:shadow-outline" |
12 |
| - x-model="colorSelected"> |
| 14 | + <input id="colorSelected" type="text" placeholder="Pick a color" x-on:change="colorChanged" class="border border-transparent shadow px-4 py-2 leading-normal text-gray-700 bg-white rounded-md focus:outline-none focus:shadow-outline" x-model="colorSelected"> |
13 | 15 | </div>
|
14 | 16 | <div class="relative ml-3 mt-8">
|
15 | 17 |
|
16 |
| - <button type="button" @click="isOpen = !isOpen" |
17 |
| - class="w-10 h-10 rounded-full focus:outline-none focus:shadow-outline inline-flex p-2 shadow" |
18 |
| - :style="`background: ${colorSelected}; color: white`"> |
19 |
| - <svg class="w-6 h-6 fill-current" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path fill="none" d="M15.584 10.001L13.998 8.417 5.903 16.512 5.374 18.626 7.488 18.097z"/><path d="M4.03,15.758l-1,4c-0.086,0.341,0.015,0.701,0.263,0.949C3.482,20.896,3.738,21,4,21c0.081,0,0.162-0.01,0.242-0.03l4-1 c0.176-0.044,0.337-0.135,0.465-0.263l8.292-8.292l1.294,1.292l1.414-1.414l-1.294-1.292L21,7.414 c0.378-0.378,0.586-0.88,0.586-1.414S21.378,4.964,21,4.586L19.414,3c-0.756-0.756-2.072-0.756-2.828,0l-2.589,2.589l-1.298-1.296 l-1.414,1.414l1.298,1.296l-8.29,8.29C4.165,15.421,4.074,15.582,4.03,15.758z M5.903,16.512l8.095-8.095l1.586,1.584 l-8.096,8.096l-2.114,0.529L5.903,16.512z"/></svg> |
| 18 | + <button type="button" @click="isOpen = !isOpen" class="w-10 h-10 rounded-full focus:outline-none focus:shadow-outline inline-flex p-2 shadow" :style="`background: ${colorSelected}; color: white`"> |
| 19 | + <svg class="w-6 h-6 fill-current" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"> |
| 20 | + <path fill="none" d="M15.584 10.001L13.998 8.417 5.903 16.512 5.374 18.626 7.488 18.097z" /> |
| 21 | + <path d="M4.03,15.758l-1,4c-0.086,0.341,0.015,0.701,0.263,0.949C3.482,20.896,3.738,21,4,21c0.081,0,0.162-0.01,0.242-0.03l4-1 c0.176-0.044,0.337-0.135,0.465-0.263l8.292-8.292l1.294,1.292l1.414-1.414l-1.294-1.292L21,7.414 c0.378-0.378,0.586-0.88,0.586-1.414S21.378,4.964,21,4.586L19.414,3c-0.756-0.756-2.072-0.756-2.828,0l-2.589,2.589l-1.298-1.296 l-1.414,1.414l1.298,1.296l-8.29,8.29C4.165,15.421,4.074,15.582,4.03,15.758z M5.903,16.512l8.095-8.095l1.586,1.584 l-8.096,8.096l-2.114,0.529L5.903,16.512z" /></svg> |
20 | 22 | </button>
|
21 | 23 |
|
22 |
| - <div x-show="isOpen" @click.away="isOpen = false" x-transition:enter="transition ease-out duration-100 transform" |
23 |
| - x-transition:enter-start="opacity-0 scale-95" x-transition:enter-end="opacity-100 scale-100" |
24 |
| - x-transition:leave="transition ease-in duration-75 transform" |
25 |
| - x-transition:leave-start="opacity-100 scale-100" x-transition:leave-end="opacity-0 scale-95" |
26 |
| - class="origin-top-right absolute right-0 mt-2 w-40 rounded-md shadow-lg"> |
| 24 | + <div x-show="isOpen" @click.away="isOpen = false" x-transition:enter="transition ease-out duration-100 transform" x-transition:enter-start="opacity-0 scale-95" x-transition:enter-end="opacity-100 scale-100" x-transition:leave="transition ease-in duration-75 transform" x-transition:leave-start="opacity-100 scale-100" x-transition:leave-end="opacity-0 scale-95" class="origin-top-right absolute right-0 mt-2 w-40 rounded-md shadow-lg"> |
27 | 25 | <div class="rounded-md bg-white shadow-xs px-4 py-3">
|
28 | 26 | <div class="flex flex-wrap -mx-2">
|
29 |
| - <template x-for="(color, index) in colors" :key="index"> |
30 |
| - <div |
31 |
| - class="px-2" |
32 |
| - > |
33 |
| - <template x-if="colorSelected === color"> |
34 |
| - <div |
35 |
| - class="w-8 h-8 inline-flex rounded-full cursor-pointer border-4 border-white" |
36 |
| - :style="`background: ${color}; box-shadow: 0 0 0 2px rgba(0, 0, 0, 0.2);`" |
37 |
| - ></div> |
38 |
| - </template> |
39 |
| - |
40 |
| - <template x-if="colorSelected != color"> |
41 |
| - <div |
42 |
| - @click="colorSelected = color" |
43 |
| - @keydown.enter="colorSelected = color" |
44 |
| - role="checkbox" |
45 |
| - tabindex="0" |
46 |
| - :aria-checked="colorSelected" |
47 |
| - class="w-8 h-8 inline-flex rounded-full cursor-pointer border-4 border-white focus:outline-none focus:shadow-outline" |
48 |
| - :style="`background: ${color};`" |
49 |
| - ></div> |
50 |
| - </template> |
51 |
| - </div> |
52 |
| - </template> |
53 |
| - </div> |
| 27 | + <template x-for="(color, index) in colors" :key="index"> |
| 28 | + <div class="px-2"> |
| 29 | + <template x-if="colorSelected === color"> |
| 30 | + <div class="w-8 h-8 inline-flex rounded-full cursor-pointer border-4 border-white" :style="`background: ${color}; box-shadow: 0 0 0 2px rgba(0, 0, 0, 0.2);`"></div> |
| 31 | + </template> |
| 32 | + |
| 33 | + <template x-if="colorSelected != color"> |
| 34 | + <div @click="colorSelected = color" @keydown.enter="colorSelected = color" role="checkbox" tabindex="0" :aria-checked="colorSelected" class="w-8 h-8 inline-flex rounded-full cursor-pointer border-4 border-white focus:outline-none focus:shadow-outline" :style="`background: ${color};`"></div> |
| 35 | + </template> |
| 36 | + </div> |
| 37 | + </template> |
| 38 | + </div> |
54 | 39 | </div>
|
55 | 40 | </div>
|
56 | 41 | </div>
|
57 | 42 | </div>
|
58 | 43 | </div>
|
59 |
| - |
60 | 44 | </div>
|
61 | 45 | </div>
|
62 |
| - |
63 |
| -<script> |
64 |
| - function InputColorSelect() { |
65 |
| - return { |
66 |
| - isOpen: false, |
67 |
| - colors: ['#2196F3', '#009688', '#9C27B0', '#FFEB3B', '#afbbc9', '#4CAF50', '#2d3748', '#f56565', '#ed64a6'], |
68 |
| - colorSelected: '{{ $default }}', |
69 |
| - colorChanged() { |
70 |
| - this.$dispatch('{{ $changeEvent }}', this.colorSelected) |
71 |
| - } |
72 |
| - } |
73 |
| - } |
74 |
| -</script> |
0 commit comments