This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
-# https://johnbeatty.co/2018/03/09/stimulus-js-tutorial-how-do-i-drag-and-drop-items-in-a-list/ | |
.grid--draggable{ 'data-controller': 'seating-plan', | |
'data-seating-plan-endpoint': endpoint, | |
'data-action': 'dragstart->seating-plan#onDragStart dragover->seating-plan#onDragOver dragenter->seating-plan#onDragEnter drop->seating-plan#onDrop dragend->seating-plan#onDragEnd' } | |
- seating_plan.each do |seat| | |
- if seat[:is_empty] | |
.grid__item.grid__item--empty{ 'data-row': seat[:row], | |
'data-col': seat[:col], | |
style: "grid-row: #{seat[:row]}; grid-column: #{seat[:col]};", | |
class: ('grid__item--border' if seat[:is_border]) } |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
export default class ComboboxFormWebcomponent extends HTMLElement { | |
connectedCallback() { | |
// ... | |
const inputId = this.getAttribute("input-id") | |
this.inputEl = document.getElementById(inputId) | |
this.inputEl.addEventListener("change", this.onValueChange) | |
this.render() | |
} | |
disconnectedCallback() { |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
const PushEventHook = { | |
mounted() { | |
const target = this.el.attributes["phx-target"]?.value | |
this.el.__pushEvent = (event, value, onReply = () => {}) => | |
target | |
? this.pushEventTo(target, event, value, onReply) | |
: this.pushEvent(event, value, onReply) | |
} | |
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
-# layouts/_error_messages.html.haml | |
- if f.object.errors.any? | |
.notification.is-danger Please review the problems below: | |
- if f.object.errors[:base].present? | |
.notification.is-danger= f.object.errors[:base].join(', ') |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
defmodule Mixins.Projection do | |
defmacro __using__(params) do | |
table = Keyword.get(params, :table) || raise "Missing param :table" | |
Module.register_attribute(__CALLER__.module, :table, persist: true) | |
Module.put_attribute(__CALLER__.module, :table, table) | |
quote do | |
use Ecto.Schema | |
end | |
end |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
defmodule PetalsDragNDropWeb.PageLive do | |
# ... | |
@impl true | |
def render(assigns) do | |
~F""" | |
... | |
<GridWithDragAndDrop | |
dragged="letter_dragged" |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
<div | |
x-data="{dragging: false}" | |
:hook="GridWithDragAndDrop" | |
> | |
{#for %{x: x, y: y} = item <- @data} | |
<div | |
id={item[:id]} | |
draggable="true" | |
... | |
> |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
if @dragged.target == :live_view do | |
"hook.pushEvent('#{@dragged.name}', {from, to});" | |
else | |
"hook.pushEventTo('#{@dragged.target}', '#{@dragged.name}', {from, to});" | |
end |
NewerOlder