full functional web component from javascript - html - css