Skip to content

Instantly share code, notes, and snippets.

@bondarolik
Created May 14, 2024 13:54
Show Gist options
  • Save bondarolik/213790a397382a257c2b7f7f8cc1f8da to your computer and use it in GitHub Desktop.
Save bondarolik/213790a397382a257c2b7f7f8cc1f8da to your computer and use it in GitHub Desktop.
Stimulus and select example
// stimulus controller
export default class extends Controller {
static targets = ["roleDescription", "roleDescriptionNone", "selectBox"]
connect() {
// actualizar role list si select tiene algo definido
this.updateRolesList()
}
updateRolesList() {
this.roleDescriptionNone.target.classList.add("hidden")
// ocultar todos los roles
this.roleDescriptionTargets.forEach((role) => {
role.classList.add("hidden")
})
// mostrar el role seleccionado
const selectedRole = this.selectBoxTarget.value
this.roleDescriptionTargets.find((role) => {
if (role.id === selectedRole) {
role.classList.remove("hidden")
} else {
// mostrar box info si no hay role seleccionado
this.roleDescriptionNone.target.classList.remove("hidden")
}
})
}
// view donde esta por ejemplo el select box
<div data-controller="select_roles_info_controller">
<select
id="select_box"
name="select_box"
data-select-roles-info-controller-target="select_box"
data-action="change->select_roles_info#update_roles_list">
<option value="">Select a role</option>
<option value="role1">Role 1</option>
<option value="role2">Role 2</option>
<option value="role3">Role 3</option>
</select>
<div class="" id="roles_list">
<div class="hidden" id="role0" data-select-roles-info-controller-target="role_description_none">Algo informativo</div>
<div class="hidden" id="role1" data-select-roles-info-controller-target="role_description">
Lorem ipsum, dolor sit amet consectetur adipisicing elit. Cum doloremque ratione culpa quos ducimus molestias laudantium quasi velit voluptatum, et, unde laborum ullam accusamus animi debitis labore suscipit doloribus atque></div>
<div class="hidden" id="role2" data-select-roles-info-controller-target="role_description">
Lorem ipsum, dolor sit amet consectetur adipisicing elit. Cum doloremque ratione culpa quos ducimus molestias laudantium quasi velit voluptatum, et, unde laborum ullam accusamus animi debitis labore suscipit doloribus atque></div>
<div class="hidden" id="role3" data-select-roles-info-controller-target="role_description">
Lorem ipsum, dolor sit amet consectetur adipisicing elit. Cum doloremque ratione culpa quos ducimus molestias laudantium quasi velit voluptatum, et, unde laborum ullam accusamus animi debitis labore suscipit doloribus atque></div>
</div>
</div>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment