fix
This commit is contained in:
@@ -6,112 +6,142 @@ const currency = new Intl.NumberFormat("pt-BR", {
|
||||
}).format(course.unit_price);
|
||||
---
|
||||
|
||||
<details class:list={["group/dropdown", Astro.props.class]}>
|
||||
<summary
|
||||
class="flex bg-black hover:bg-white hover:text-black font-semibold py-2.5 px-3 rounded-md cursor-pointer transition
|
||||
<buy-dropdown class:list={[Astro.props.class]}>
|
||||
<details class="group/dropdown">
|
||||
<summary
|
||||
class="flex bg-black hover:bg-white hover:text-black font-semibold py-2.5 px-3 rounded-md cursor-pointer transition
|
||||
group-open/dropdown:text-black group-open/dropdown:bg-white"
|
||||
>
|
||||
Contratar agora
|
||||
</summary>
|
||||
<div
|
||||
class="absolute inset-x-2.5 top-full translate-y-1.5 md:inset-auto md:right-2.5 2xl:right-0 md:w-auto md:min-w-96 bg-stone-900 border border-white/15 rounded-xl shadow-lg"
|
||||
>
|
||||
<h6
|
||||
class="p-2.5 lg:px-5 lg:py-3.5 font-semibold border-b border-white/10 bg-white/5"
|
||||
>
|
||||
Selecione uma opção
|
||||
</h6>
|
||||
<ul class="p-3">
|
||||
<li>
|
||||
<label
|
||||
class="flex gap-2 items-start cursor-pointer hover:bg-white/10 rounded-lg has-checked:outline has-checked:outline-white/20 has-checked:bg-white/10 p-3"
|
||||
>
|
||||
<input
|
||||
class="box-content size-1.5 border-5 border-black bg-black appearance-none rounded-full ring-1 ring-white/15 checked:border-lime-400 checked:ring-lime-400 mt-1.5"
|
||||
name="selected"
|
||||
type="radio"
|
||||
checked
|
||||
/>
|
||||
<div>
|
||||
<p class="uppercase font-semibold">
|
||||
Matrícula única <span
|
||||
class="px-0.5 text-black bg-lime-400"
|
||||
>{currency}</span
|
||||
>
|
||||
</p>
|
||||
<p class="text-sm text-white/50">
|
||||
Contratação rápida e sem burocracia
|
||||
</p>
|
||||
</div>
|
||||
</label>
|
||||
</li>
|
||||
</ul>
|
||||
<h6 class="px-5 font-semibold">Modelos de contratação</h6>
|
||||
<ul class="p-3 space-y-0.5">
|
||||
<li>
|
||||
<label
|
||||
class="flex gap-2 items-start cursor-pointer hover:bg-white/10 rounded-lg has-checked:outline has-checked:outline-white/20 has-checked:bg-white/10 p-3"
|
||||
>
|
||||
<input
|
||||
class="box-content size-1.5 border-5 border-black bg-black appearance-none rounded-full ring-1 ring-white/15 checked:border-lime-400 checked:ring-lime-400 mt-1.5"
|
||||
name="selected"
|
||||
type="radio"
|
||||
/>
|
||||
<div>
|
||||
<p class="uppercase font-semibold">
|
||||
EDUSEG® Flexível
|
||||
</p>
|
||||
<p class="text-sm text-white/50">
|
||||
Catálogo completo sempre à sua disposição
|
||||
</p>
|
||||
</div>
|
||||
</label>
|
||||
</li>
|
||||
<li>
|
||||
<label
|
||||
class="flex gap-2 items-start cursor-pointer hover:bg-white/10 rounded-lg has-checked:outline has-checked:outline-white/20 has-checked:bg-white/10 p-3"
|
||||
>
|
||||
<input
|
||||
class="box-content size-1.5 border-5 border-black bg-black appearance-none rounded-full ring-1 ring-white/15 checked:border-lime-400 checked:ring-lime-400 mt-1.5"
|
||||
name="selected"
|
||||
type="radio"
|
||||
/>
|
||||
<div>
|
||||
<p class="uppercase font-semibold">
|
||||
EDUSEG® In-Company
|
||||
</p>
|
||||
<p class="text-sm text-white/50">
|
||||
Treinamento presencial na sua empresa
|
||||
</p>
|
||||
</div>
|
||||
</label>
|
||||
</li>
|
||||
<li>
|
||||
<label
|
||||
class="flex gap-2 items-start cursor-pointer hover:bg-white/10 rounded-lg has-checked:outline has-checked:outline-white/20 has-checked:bg-white/10 p-3"
|
||||
>
|
||||
<input
|
||||
class="box-content size-1.5 border-5 border-black bg-black appearance-none rounded-full ring-1 ring-white/15 checked:border-lime-400 checked:ring-lime-400 mt-1.5"
|
||||
name="selected"
|
||||
type="radio"
|
||||
/>
|
||||
<div>
|
||||
<p class="uppercase font-semibold">
|
||||
EDUSEG® Conteúdo
|
||||
</p>
|
||||
<p class="text-sm text-white/50">
|
||||
Leve nosso conteúdo para sua plataforma
|
||||
</p>
|
||||
</div>
|
||||
</label>
|
||||
</li>
|
||||
</ul>
|
||||
<div class="p-2.5 lg:p-5 border-t border-white/10">
|
||||
<button
|
||||
class="p-3 bg-lime-400 rounded-lg w-full text-black font-semibold cursor-pointer hover:bg-white hover:text-black transition"
|
||||
Contratar agora
|
||||
</summary>
|
||||
<div
|
||||
class="absolute inset-x-2.5 top-full translate-y-1.5 md:inset-auto md:right-2.5 2xl:right-0 md:w-auto md:min-w-96 bg-stone-900 border border-white/15 rounded-xl shadow-lg"
|
||||
>
|
||||
<h6
|
||||
class="p-2.5 lg:px-5 lg:py-3.5 font-semibold border-b border-white/10 bg-white/5"
|
||||
>
|
||||
Continuar
|
||||
</button>
|
||||
Selecione uma opção
|
||||
</h6>
|
||||
<ul class="p-3">
|
||||
<li>
|
||||
<label
|
||||
class="flex gap-2 items-start cursor-pointer hover:bg-white/10 rounded-lg has-checked:outline has-checked:outline-white/20 has-checked:bg-white/10 p-3"
|
||||
>
|
||||
<input
|
||||
class="box-content size-1.5 border-5 border-black bg-black appearance-none rounded-full ring-1 ring-white/15 checked:border-lime-400 checked:ring-lime-400 mt-1.5"
|
||||
name="selected"
|
||||
type="radio"
|
||||
checked
|
||||
/>
|
||||
<div>
|
||||
<p class="uppercase font-semibold">
|
||||
Matrícula única <span
|
||||
class="px-0.5 text-black bg-lime-400"
|
||||
>{currency}</span
|
||||
>
|
||||
</p>
|
||||
<p class="text-sm text-white/50">
|
||||
Contratação rápida e sem burocracia
|
||||
</p>
|
||||
</div>
|
||||
</label>
|
||||
</li>
|
||||
</ul>
|
||||
<h6 class="px-5 font-semibold">Modelos de contratação</h6>
|
||||
<ul class="p-3 space-y-0.5">
|
||||
<li>
|
||||
<label
|
||||
class="flex gap-2 items-start cursor-pointer hover:bg-white/10 rounded-lg has-checked:outline has-checked:outline-white/20 has-checked:bg-white/10 p-3"
|
||||
>
|
||||
<input
|
||||
class="box-content size-1.5 border-5 border-black bg-black appearance-none rounded-full ring-1 ring-white/15 checked:border-lime-400 checked:ring-lime-400 mt-1.5"
|
||||
name="selected"
|
||||
type="radio"
|
||||
/>
|
||||
<div>
|
||||
<p class="uppercase font-semibold">
|
||||
EDUSEG® Flexível
|
||||
</p>
|
||||
<p class="text-sm text-white/50">
|
||||
Catálogo completo sempre à sua disposição
|
||||
</p>
|
||||
</div>
|
||||
</label>
|
||||
</li>
|
||||
<li>
|
||||
<label
|
||||
class="flex gap-2 items-start cursor-pointer hover:bg-white/10 rounded-lg has-checked:outline has-checked:outline-white/20 has-checked:bg-white/10 p-3"
|
||||
>
|
||||
<input
|
||||
class="box-content size-1.5 border-5 border-black bg-black appearance-none rounded-full ring-1 ring-white/15 checked:border-lime-400 checked:ring-lime-400 mt-1.5"
|
||||
name="selected"
|
||||
type="radio"
|
||||
/>
|
||||
<div>
|
||||
<p class="uppercase font-semibold">
|
||||
EDUSEG® In-Company
|
||||
</p>
|
||||
<p class="text-sm text-white/50">
|
||||
Treinamento presencial na sua empresa
|
||||
</p>
|
||||
</div>
|
||||
</label>
|
||||
</li>
|
||||
<li>
|
||||
<label
|
||||
class="flex gap-2 items-start cursor-pointer hover:bg-white/10 rounded-lg has-checked:outline has-checked:outline-white/20 has-checked:bg-white/10 p-3"
|
||||
>
|
||||
<input
|
||||
class="box-content size-1.5 border-5 border-black bg-black appearance-none rounded-full ring-1 ring-white/15 checked:border-lime-400 checked:ring-lime-400 mt-1.5"
|
||||
name="selected"
|
||||
type="radio"
|
||||
/>
|
||||
<div>
|
||||
<p class="uppercase font-semibold">
|
||||
EDUSEG® Conteúdo
|
||||
</p>
|
||||
<p class="text-sm text-white/50">
|
||||
Leve nosso conteúdo para sua plataforma
|
||||
</p>
|
||||
</div>
|
||||
</label>
|
||||
</li>
|
||||
</ul>
|
||||
<div class="p-2.5 lg:px-5 border-t border-white/10">
|
||||
<button
|
||||
class="p-3 bg-lime-400 rounded-lg w-full text-black font-semibold cursor-pointer hover:bg-white hover:text-black transition"
|
||||
>
|
||||
Continuar
|
||||
</button>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</details>
|
||||
</details>
|
||||
</buy-dropdown>
|
||||
|
||||
<script>
|
||||
class BuyDropdown extends HTMLElement {
|
||||
constructor() {
|
||||
super();
|
||||
this.handleClickOutside = this.handleClickOutside.bind(this);
|
||||
}
|
||||
|
||||
connectedCallback() {
|
||||
document.addEventListener("click", this.handleClickOutside);
|
||||
}
|
||||
|
||||
disconnectedCallback() {
|
||||
document.removeEventListener("click", this.handleClickOutside);
|
||||
}
|
||||
|
||||
private handleClickOutside(e: MouseEvent) {
|
||||
const menu = this.querySelector("details") as HTMLDetailsElement;
|
||||
const target = e.target as HTMLElement;
|
||||
|
||||
if (!menu.contains(target)) {
|
||||
menu.open = false;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
customElements.define("buy-dropdown", BuyDropdown);
|
||||
</script>
|
||||
|
||||
Reference in New Issue
Block a user