sefianecho/alwan

Does it work with input tag?

Jonnas123 opened this issue · 7 comments

Hello, nice color picker, I'm new to it. Now I use <input id="colorpicker" type="color"> for Fabric.js. I want to switch to your picker but it's not working for my case. Here is what I try.

<input id="colorpicker">

<script>
const alwan = new Alwan('#colorpicker', {
});
</script>

The input tag will then change to the button tag like this. This doesn't work with Fabric.js.

<button class="alwan__button alwan__preset-button" type="button" id="colorpicker" style="--alwan-color: rgb(173, 23, 23);"></button>

That's because the option preset is set to true by default (preset button), change it to false to keep the input.

const alwan = new Alwan('#colorpicker', {
    preset: false
});

Now the picker shows up after using the preset: flase. However, I don't know why it doesn't apply to Fabric js's text. But I try this picker Coloris it works.

You need to set the value of the input.

Example:

const input = document.getElementById('colorpicker');
alwan.on('color', e => {
     input.value = e.rgb;
});

Sorry, my misunderstanding. This one works for me. With or without preset: false, still work.

const alwan = new Alwan('#colorpicker', {

});

const input = document.getElementById('colorpicker');
   alwan.on('color', e => {
   input.style.color = e.rgb;
   canvas.getActiveObject().set("fill",input.style.color);
   canvas.renderAll();
   });

You don't need an input, you can set the fill color directly from the color picker.

alwan.on('color', e => {
     canvas.getActiveObject().set("fill", e.rgb);
     canvas.renderAll();
 });

But if have many Ids to apply, still need, right?

Depends on your code.