diff --git a/index.html b/index.html
index a680d69..fc04d9b 100644
--- a/index.html
+++ b/index.html
@@ -712,7 +712,7 @@
Complaints
Select Cashier
-
+
Deposit
@@ -1846,7 +1846,6 @@
slot[name="tab"]{
display: grid;
grid-auto-flow: column;
- gap: 1rem;
grid-auto-columns: max-content;
}
:host([type="tab"]) .indicator{
@@ -1999,7 +1998,7 @@ slot[name="tab"]::slotted(.active){
e.target.nextElementSibling.classList.remove('hide-completely')
}
e.target.scrollIntoView({ behavior: 'smooth', inline: 'center', block: 'nearest' })
- this.indicator.setAttribute('style', `width: ${e.target.getBoundingClientRect().width / 2}px; transform: translateX(${e.target.getBoundingClientRect().left - e.target.parentNode.getBoundingClientRect().left + this.tabHeader.scrollLeft + e.target.getBoundingClientRect().width / 4}px)`)
+ this.indicator.setAttribute('style', `width: ${e.target.getBoundingClientRect().width}px; transform: translateX(${e.target.getBoundingClientRect().left - e.target.parentNode.getBoundingClientRect().left + this.tabHeader.scrollLeft}px)`)
this.prevTab = e.target;
})
let observer = new IntersectionObserver((entries) => {
@@ -2011,12 +2010,12 @@ slot[name="tab"]::slotted(.active){
})
if (activeElement.length) {
let tabDimensions = activeElement[0].getBoundingClientRect();
- this.indicator.setAttribute('style', `width: ${tabDimensions.width / 2}px; transform: translateX(${tabDimensions.left - activeElement[0].parentNode.getBoundingClientRect().left + this.tabHeader.scrollLeft + tabDimensions.width / 4}px)`)
+ this.indicator.setAttribute('style', `width: ${tabDimensions.width}px; transform: translateX(${tabDimensions.left - activeElement[0].parentNode.getBoundingClientRect().left + this.tabHeader.scrollLeft}px)`)
}
else {
this.tabSlot.assignedElements()[0].classList.add('active')
let tabDimensions = this.tabSlot.assignedElements()[0].getBoundingClientRect();
- this.indicator.setAttribute('style', `width: ${tabDimensions.width / 2}px; transform: translateX(${tabDimensions.left - this.tabSlot.assignedElements()[0].parentNode.getBoundingClientRect().left + this.tabHeader.scrollLeft + tabDimensions.width / 4}px)`)
+ this.indicator.setAttribute('style', `width: ${tabDimensions.width}px; transform: translateX(${tabDimensions.left - this.tabSlot.assignedElements()[0].parentNode.getBoundingClientRect().left + this.tabHeader.scrollLeft}px)`)
this.prevTab = this.tabSlot.assignedElements()[0];
}
setTimeout(() => {
@@ -2050,14 +2049,12 @@ slot[name="tab"]::slotted(.active){
cursor: pointer;
-webkit-tap-highlight-color: transparent;
white-space: nowrap;
- font-size: 0.9rem;
- padding: 0.4rem 0;
- font-weight: 600;
- letter-spacing: 0.06em;
+ padding: 0.6rem 0.8rem;
+ font-weight: 500;
word-spacing: 0.1em;
text-align: center;
transition: color 0.3s;
- text-transform: uppercase;
+ text-transform: capitalize;
font-family: var(--font-family);
}
@@ -2087,6 +2084,145 @@ slot[name="tab"]::slotted(.active){
}
})
+ // sm-select
+ const smStripSelect = document.createElement('template')
+ smStripSelect.innerHTML = `
+
+
+
+
`;
+ customElements.define('sm-strip-select', class extends HTMLElement {
+ constructor() {
+ super()
+ this.attachShadow({ mode: 'open' }).append(smStripSelect.content.cloneNode(true))
+ }
+ static get observedAttributes() {
+ return ['value']
+ }
+ get value() {
+ return this.getAttribute('value')
+ }
+ set value(val) {
+ this.setAttribute('value', val)
+ }
+ connectedCallback() {
+ let previousOption,
+ slot = this.shadowRoot.querySelector('slot');
+ this.addEventListener('optionSelected', e => {
+ if (previousOption === e.target) return;
+ if (previousOption)
+ previousOption.classList.remove('active')
+ e.target.classList.add('active')
+ e.target.scrollIntoView({ behavior: 'smooth', inline: 'center', block: 'nearest' })
+ this.setAttribute('value', e.detail.value)
+ this.dispatchEvent(new CustomEvent('change', {
+ bubbles: true,
+ composed: true
+ }))
+ previousOption = e.target;
+ })
+ slot.addEventListener('slotchange', e => {
+ if (slot.assignedElements()[0]) {
+ let firstElement = slot.assignedElements()[0];
+ this.setAttribute('value', firstElement.getAttribute('value'))
+ firstElement.classList.add('active')
+ previousOption = firstElement;
+ }
+ });
+ }
+ })
+
+ // sm-option
+ const smStripOption = document.createElement('template')
+ smStripOption.innerHTML = `
+
+
+
+
`;
+ customElements.define('sm-strip-option', class extends HTMLElement {
+ constructor() {
+ super()
+ this.attachShadow({ mode: 'open' }).append(smStripOption.content.cloneNode(true))
+ }
+ connectedCallback() {
+ this.addEventListener('click', e => {
+ let optionSelected = new CustomEvent('optionSelected', {
+ bubbles: true,
+ composed: true,
+ detail: {
+ text: this.textContent,
+ value: this.getAttribute('value')
+ }
+ })
+ this.dispatchEvent(optionSelected)
+ })
+ if (this.hasAttribute('default')) {
+ setTimeout(() => {
+ let optionSelected = new CustomEvent('optionSelected', {
+ bubbles: true,
+ composed: true,
+ detail: {
+ text: this.textContent,
+ value: this.getAttribute('value')
+ }
+ })
+ this.dispatchEvent(optionSelected)
+ }, 0);
+ }
+ }
+ })
+