diff --git a/scripts/components.js b/scripts/components.js index ea5e87f..086ad03 100644 --- a/scripts/components.js +++ b/scripts/components.js @@ -197,6 +197,7 @@ border: none; display: flex; --border-radius: 0.3rem; --padding: 0.7rem 1rem; + --background: rgba(var(--text-color), 0.06); } .hide{ opacity: 0 !important; @@ -239,7 +240,7 @@ border: none; -webkit-transition: opacity 0.3s; -o-transition: opacity 0.3s; transition: opacity 0.3s; - background: rgba(var(--text-color), 0.06); + background: var(--background); width: 100%; outline: none; } @@ -658,12 +659,13 @@ customElements.define('sm-textarea', this.attachShadow({ mode: 'open' }).append(smTextarea.content.cloneNode(true)) + this.textarea = this.shadowRoot.querySelector('textarea') } get value() { - return this.shadowRoot.querySelector('textarea').value + return this.textarea.value } set value(val) { - this.shadowRoot.querySelector('textarea').value = val; + this.textarea.value = val; this.textareaBox.dataset.value = val this.checkInput() this.fireEvent() @@ -679,7 +681,7 @@ customElements.define('sm-textarea', }); this.dispatchEvent(event); } - checkInput() { + checkInput = () => { if (!this.hasAttribute('placeholder') || this.getAttribute('placeholder') === '') return; if (this.textarea.value !== '') { @@ -691,7 +693,6 @@ customElements.define('sm-textarea', connectedCallback() { this.textareaBox = this.shadowRoot.querySelector('.textarea') this.placeholder = this.shadowRoot.querySelector('.placeholder') - this.textarea = this.shadowRoot.querySelector('textarea') if(this.hasAttribute('placeholder')) this.placeholder.textContent = this.getAttribute('placeholder') @@ -706,6 +707,9 @@ customElements.define('sm-textarea', if (this.hasAttribute('readonly')) { this.textarea.setAttribute('readonly', '') } + if (this.hasAttribute('rows')) { + this.textarea.setAttribute('rows', this.getAttribute('rows')) + } this.textarea.addEventListener('input', e => { this.textareaBox.dataset.value = this.textarea.value this.checkInput() @@ -793,6 +797,10 @@ smCheckbox.innerHTML = ` display: -webkit-inline-box; display: -ms-inline-flexbox; display: inline-flex; + --height: 1.6rem; + --width: 1.6rem; + --border-radius: 0.2rem; + --border-color: rgba(var(--text-color), 0.7); } .checkbox { position: relative; @@ -808,13 +816,9 @@ smCheckbox.innerHTML = ` -webkit-tap-highlight-color: transparent; } - p{ - margin-left: 2rem; - } - .checkbox:active .icon, - .checkbox:focus .icon{ - background: rgba(var(--text-color), 0.2); + .checkbox:focus-within .icon{ + box-shadow: 0 0 0 0.3rem var(--accent-color) inset; } .checkbox input { @@ -833,28 +837,29 @@ smCheckbox.innerHTML = ` stroke-dashoffset: 0; stroke: rgba(var(--foreground-color), 1); } - .checkbox input:checked ~ svg { - stroke: var(--accent-color); - fill: var(--accent-color); + .checkbox input:checked ~ .icon { stroke-width: 8; + stroke: var(--accent-color); + background: var(--accent-color); + } + .checkbox input:not(:checked) ~ .icon { + box-shadow: 0 0 0 0.2rem var(--border-color) inset; } .icon { - position: absolute; fill: none; - height: 2.6rem; - width: 2.6rem; - padding: 0.7rem; + height: var(--height); + width: var(--width); + padding: 0.2rem; stroke: rgba(var(--text-color), 0.7); stroke-width: 6; overflow: visible; stroke-linecap: round; stroke-linejoin: round; - border-radius: 2rem; -webkit-transition: background 0.3s; -o-transition: background 0.3s; transition: background 0.3s; - left: -0.5rem; + border-radius: var(--border-radius); } .disabled { opacity: 0.6; @@ -865,10 +870,9 @@ smCheckbox.innerHTML = ` -