Skip to content

Commit

Permalink
Use pattern :sessionkey.tap do |session_key| (#53)
Browse files Browse the repository at this point in the history
  • Loading branch information
drnic committed Dec 18, 2022
1 parent 156ef04 commit 9c42a6b
Show file tree
Hide file tree
Showing 4 changed files with 144 additions and 135 deletions.
91 changes: 47 additions & 44 deletions test/dummy/app/views/frames/increment/button_in_frame.html.erb
Original file line number Diff line number Diff line change
@@ -1,65 +1,68 @@
<%= turbo_frame_tag demo_frame_id(@template_path) do %>
<%= cache session[:button_in_frame_count].to_i do %>
<%= render "frames/frame" do %>
<%= render "stats/stats" do %>
<%= render "stats/stat", label: "Counter", role: "counter", value: session[:button_in_frame_count].to_i, class: "!bg-indigo-600 dark:!bg-indigo-900",
value_class: ["!text-indigo-200 dark:!text-indigo-300"], label_class: ["!text-indigo-400 dark:!text-indigo-500"] %>
<% end %>
<% :button_in_frame_count.tap do |session_key| %>
<%= turbo_frame_tag demo_frame_id(@template_path) do %>
<%= cache session[session_key].to_i do %>
<%= render "frames/frame" do %>
<%= render "stats/stats" do %>
<%= render "stats/stat", label: "Counter", role: "counter", value: session[session_key].to_i, class: "!bg-indigo-600 dark:!bg-indigo-900",
value_class: ["!text-indigo-200 dark:!text-indigo-300"], label_class: ["!text-indigo-400 dark:!text-indigo-500"] %>
<% end %>

<p class="my-8">
The buttons below will invoke a reflex before Rails/Hotwire replaces the frame's content.
</p>
<p class="my-8">
The buttons below will invoke a reflex before Rails/Hotwire replaces the frame's content.
</p>

<%= button_tag class: css("flowbite.button.cyan_to_blue", "block mb-8 ml-0 relative"),
data: { turbo_reflex: "CounterReflex#increment", session_key: :button_in_frame_count } do %>
Basic Button
<%= render flowbite(:notification_badge), value: session[:button_in_frame_count].to_i if session[:button_in_frame_count].to_i > 0 %>
<% end %>
<%= button_tag class: css("flowbite.button.cyan_to_blue", "block mb-8 ml-0 relative"),
data: { turbo_reflex: "CounterReflex#increment", session_key: session_key } do %>
Basic Button
<%= render flowbite(:notification_badge), value: session[session_key].to_i if session[session_key].to_i > 0 %>
<% end %>
<%= render component(:code), language: :ruby, class: "text-sm",
path: "app/reflexes/counter_reflex.rb", source_path: "app/views/codes/increment/reflex.rb" %>
<%= render component(:code), language: :ruby, class: "text-sm",
path: "app/reflexes/counter_reflex.rb", source_path: "app/views/codes/increment/reflex.rb" %>

<div class="my-8"></div>
<div class="my-8"></div>

<%= render component(:code), language: :ruby, class: "text-sm",
path: "app/controllers/demos_controller.rb", source_path: "app/views/codes/increment/controller.rb" %>
<%= render component(:code), language: :ruby, class: "text-sm",
path: "app/controllers/demos_controller.rb", source_path: "app/views/codes/increment/controller.rb" %>

<div class="my-8"></div>
<div class="my-8"></div>

<%= render component(:code), language: :erb, class: "text-sm",
path: "app/views/demos/show.html.erb", source_path: "app/views/codes/increment/button_in_frame/show.erb" %>
<%= render component(:code), language: :erb, class: "text-sm",
path: "app/views/demos/show.html.erb", source_path: "app/views/codes/increment/button_in_frame/show.erb" %>

<div class="my-8"></div>
<div class="my-8"></div>

<%= render component(:code), language: :html, class: "text-sm",
path: "Rendered HTML for: /demos/2", source_path: "app/views/codes/increment/button_in_frame/show.html", erb: true %>
<%= render component(:code), language: :html, class: "text-sm",
path: "Rendered HTML for: /demos/2", source_path: "app/views/codes/increment/button_in_frame/show.html", erb: true %>
<%= render component(:divider), class: "my-12" %>
<%= render component(:divider), class: "my-12" %>
<%= Time.current %>
<%= button_to frame_path(params[:id]), method: :patch,
class: css("flowbite.button.cyan_to_blue", "block mb-8 ml-0 relative"),
form: { data: { turbo_reflex: "CounterReflex#increment", session_key: :button_in_frame_count } } do %>
Form Button <small class="ml-2 font-mono opacity-50">button_to</small>
<%= render flowbite(:notification_badge), value: session[:button_in_frame_count].to_i if session[:button_in_frame_count].to_i > 0 %>
<% end %>
<%= button_to frame_path(params[:id]), method: :patch,
class: css("flowbite.button.cyan_to_blue", "block mb-8 ml-0 relative"),
form: { data: { turbo_reflex: "CounterReflex#increment", session_key: session_key } } do %>
Form Button <small class="ml-2 font-mono opacity-50">button_to</small>
<%= render flowbite(:notification_badge), value: session[session_key].to_i if session[session_key].to_i > 0 %>
<% end %>
<%= render component(:code), language: :ruby, class: "text-sm",
path: "app/reflexes/counter_reflex.rb", source_path: "app/views/codes/increment/reflex.rb" %>
<%= render component(:code), language: :ruby, class: "text-sm",
path: "app/reflexes/counter_reflex.rb", source_path: "app/views/codes/increment/reflex.rb" %>

<div class="my-8"></div>
<div class="my-8"></div>

<%= render component(:code), language: :ruby, class: "text-sm",
path: "app/controllers/demos_controller.rb", source_path: "app/views/codes/increment/controller.rb" %>
<%= render component(:code), language: :ruby, class: "text-sm",
path: "app/controllers/demos_controller.rb", source_path: "app/views/codes/increment/controller.rb" %>

<div class="my-8"></div>
<div class="my-8"></div>

<%= render component(:code), language: :erb, class: "text-sm",
path: "app/views/demos/show.html.erb", source_path: "app/views/codes/increment/button_in_frame/show_form.erb" %>
<%= render component(:code), language: :erb, class: "text-sm",
path: "app/views/demos/show.html.erb", source_path: "app/views/codes/increment/button_in_frame/show_form.erb" %>

<div class="my-8"></div>
<div class="my-8"></div>

<%= render component(:code), language: :html, class: "text-sm",
path: "Rendered HTML for: /demos/2", source_path: "app/views/codes/increment/button_in_frame/show_form.html", erb: true %>
<%= render component(:code), language: :html, class: "text-sm",
path: "Rendered HTML for: /demos/2", source_path: "app/views/codes/increment/button_in_frame/show_form.html", erb: true %>
<% end %>
<% end %>
<% end %>
<% end %>
72 changes: 37 additions & 35 deletions test/dummy/app/views/frames/increment/elements_in_frame.html.erb
Original file line number Diff line number Diff line change
@@ -1,51 +1,53 @@
<%= turbo_frame_tag demo_frame_id(@template_path) do %>
<%= cache session[:elements_in_frame_count].to_i do %>
<%= render "frames/frame" do %>
<%= render "stats/stats" do %>
<%= render "stats/stat", label: "Counter", value: session[:elements_in_frame_count].to_i, class: "!bg-indigo-600 dark:!bg-indigo-900",
value_class: ["!text-indigo-200 dark:!text-indigo-300"], label_class: ["!text-indigo-400 dark:!text-indigo-500"] %>
<% end %>
<% :elements_in_frame_count.tap do |session_key| %>
<%= turbo_frame_tag demo_frame_id(@template_path) do %>
<%= cache session[session_key].to_i do %>
<%= render "frames/frame" do %>
<%= render "stats/stats" do %>
<%= render "stats/stat", label: "Counter", value: session[session_key].to_i, class: "!bg-indigo-600 dark:!bg-indigo-900",
value_class: ["!text-indigo-200 dark:!text-indigo-300"], label_class: ["!text-indigo-400 dark:!text-indigo-500"] %>
<% end %>

<p class="my-8">
You can attach reflexes to any element.
</p>
<p class="my-8">
You can attach reflexes to any element.
</p>

<div class="inline-block relative mb-4">
<%= tag.p "P Tag", class: "cursor-pointer", data: { turbo_reflex: "CounterReflex#increment", session_key: :elements_in_frame_count } %>
<%= render flowbite(:notification_badge), value: session[:elements_in_frame_count].to_i, class: "!-right-4" if session[:elements_in_frame_count].to_i > 0 %>
</div>
<div class="inline-block relative mb-4">
<%= tag.p "P Tag", class: "cursor-pointer", data: { turbo_reflex: "CounterReflex#increment", session_key: session_key } %>
<%= render flowbite(:notification_badge), value: session[session_key].to_i, class: "!-right-4" if session[session_key].to_i > 0 %>
</div>

<br>
<br>

<%= tag.div class: "cursor-pointer mb-4 relative inline-block", data: { turbo_reflex: "CounterReflex#increment", session_key: :elements_in_frame_count } do %>
DIV Tag
<%= render flowbite(:notification_badge), value: session[:elements_in_frame_count].to_i, class: "!-right-4" if session[:elements_in_frame_count].to_i > 0 %>
<% end %>
<%= tag.div class: "cursor-pointer mb-4 relative inline-block", data: { turbo_reflex: "CounterReflex#increment", session_key: session_key } do %>
DIV Tag
<%= render flowbite(:notification_badge), value: session[session_key].to_i, class: "!-right-4" if session[session_key].to_i > 0 %>
<% end %>

<br>
<br>

<%= tag.span class: "cursor-pointer mb-12 inline-block relative", data: { turbo_reflex: "CounterReflex#increment", session_key: :elements_in_frame_count } do %>
SPAN Tag
<%= render flowbite(:notification_badge), value: session[:elements_in_frame_count].to_i, class: "!-right-4" if session[:elements_in_frame_count].to_i > 0 %>
<% end %>
<%= tag.span class: "cursor-pointer mb-12 inline-block relative", data: { turbo_reflex: "CounterReflex#increment", session_key: session_key } do %>
SPAN Tag
<%= render flowbite(:notification_badge), value: session[session_key].to_i, class: "!-right-4" if session[session_key].to_i > 0 %>
<% end %>
<%= render component(:code), language: :ruby, class: "text-sm",
path: "app/reflexes/counter_reflex.rb", source_path: "app/views/codes/increment/reflex.rb" %>
<%= render component(:code), language: :ruby, class: "text-sm",
path: "app/reflexes/counter_reflex.rb", source_path: "app/views/codes/increment/reflex.rb" %>

<div class="my-8"></div>
<div class="my-8"></div>

<%= render component(:code), language: :ruby, class: "text-sm",
path: "app/controllers/demos_controller.rb", source_path: "app/views/codes/increment/controller.rb" %>
<%= render component(:code), language: :ruby, class: "text-sm",
path: "app/controllers/demos_controller.rb", source_path: "app/views/codes/increment/controller.rb" %>

<div class="my-8"></div>
<div class="my-8"></div>

<%= render component(:code), language: :erb, class: "text-sm",
path: "app/views/demos/show.html.erb", source_path: "app/views/codes/increment/elements_in_frame/show.erb" %>
<%= render component(:code), language: :erb, class: "text-sm",
path: "app/views/demos/show.html.erb", source_path: "app/views/codes/increment/elements_in_frame/show.erb" %>

<div class="my-8"></div>
<div class="my-8"></div>

<%= render component(:code), language: :html, class: "text-sm",
path: "Rendered HTML for: /demos/4", source_path: "app/views/codes/increment/elements_in_frame/show.html", erb: true %>
<%= render component(:code), language: :html, class: "text-sm",
path: "Rendered HTML for: /demos/4", source_path: "app/views/codes/increment/elements_in_frame/show.html", erb: true %>
<% end %>
<% end %>
<% end %>
<% end %>
62 changes: 32 additions & 30 deletions test/dummy/app/views/frames/increment/form_in_frame.html.erb
Original file line number Diff line number Diff line change
@@ -1,41 +1,43 @@
<%= turbo_frame_tag demo_frame_id(@template_path) do %>
<%= cache session[:form_in_frame_count].to_i do %>
<%= render "frames/frame" do %>
<%= render "stats/stats" do %>
<%= render "stats/stat", label: "Counter", value: session[:form_in_frame_count].to_i, class: "!bg-indigo-600 dark:!bg-indigo-900",
value_class: ["!text-indigo-200 dark:!text-indigo-300"], label_class: ["!text-indigo-400 dark:!text-indigo-500"] %>
<% end %>
<% :form_in_frame_count.tap do |session_key| %>
<%= turbo_frame_tag demo_frame_id(@template_path) do %>
<%= cache session[:form_in_frame_count].to_i do %>
<%= render "frames/frame" do %>
<%= render "stats/stats" do %>
<%= render "stats/stat", label: "Counter", value: session[session_key].to_i, class: "!bg-indigo-600 dark:!bg-indigo-900",
value_class: ["!text-indigo-200 dark:!text-indigo-300"], label_class: ["!text-indigo-400 dark:!text-indigo-500"] %>
<% end %>

<p class="my-8">
You can attach reflexes to any element.
</p>

<%= form_with url: frame_path(params[:id]), method: :patch,
class: "mb-8",
data: { turbo_reflex: "CounterReflex#increment", session_key: :form_in_frame_count } do |form| %>
<div class="inline-block relative">
<%= form.submit "Submit Form", class: css("flowbite.button.cyan_to_blue", "cursor-pointer") %>
<%= render flowbite(:notification_badge), value: session[:form_in_frame_count].to_i, class: "!-right-0" if session[:form_in_frame_count].to_i > 0 %>
</div>
<% end %>
<p class="my-8">
You can attach reflexes to any element.
</p>

<%= render component(:code), language: :ruby, class: "text-sm",
path: "app/reflexes/counter_reflex.rb", source_path: "app/views/codes/increment/reflex.rb" %>
<%= form_with url: frame_path(params[:id]), method: :patch,
class: "mb-8",
data: { turbo_reflex: "CounterReflex#increment", session_key: session_key } do |form| %>
<div class="inline-block relative">
<%= form.submit "Submit Form", class: css("flowbite.button.cyan_to_blue", "cursor-pointer") %>
<%= render flowbite(:notification_badge), value: session[session_key].to_i, class: "!-right-0" if session[:form_in_frame_count].to_i > 0 %>
</div>
<% end %>
<div class="my-8"></div>
<%= render component(:code), language: :ruby, class: "text-sm",
path: "app/reflexes/counter_reflex.rb", source_path: "app/views/codes/increment/reflex.rb" %>

<%= render component(:code), language: :ruby, class: "text-sm",
path: "app/controllers/demos_controller.rb", source_path: "app/views/codes/increment/controller.rb" %>
<div class="my-8"></div>

<div class="my-8"></div>
<%= render component(:code), language: :ruby, class: "text-sm",
path: "app/controllers/demos_controller.rb", source_path: "app/views/codes/increment/controller.rb" %>

<%= render component(:code), language: :erb, class: "text-sm",
path: "app/views/demo/show.html.erb", source_path: "app/views/codes/increment/form_in_frame/show.erb" %>
<div class="my-8"></div>

<div class="my-8"></div>
<%= render component(:code), language: :erb, class: "text-sm",
path: "app/views/demo/show.html.erb", source_path: "app/views/codes/increment/form_in_frame/show.erb" %>

<%= render component(:code), language: :html, class: "text-sm",
path: "Rendered HTML for: /demos/3", source_path: "app/views/codes/increment/form_in_frame/show.html", erb: true %>
<div class="my-8"></div>

<%= render component(:code), language: :html, class: "text-sm",
path: "Rendered HTML for: /demos/3", source_path: "app/views/codes/increment/form_in_frame/show.html", erb: true %>
<% end %>
<% end %>
<% end %>
<% end %>
54 changes: 28 additions & 26 deletions test/dummy/app/views/frames/increment/link_in_frame.html.erb
Original file line number Diff line number Diff line change
@@ -1,38 +1,40 @@
<%= turbo_frame_tag demo_frame_id(@template_path) do %>
<%= cache session[:link_in_frame_count].to_i do %>
<%= render "frames/frame" do %>
<%= render "stats/stats" do %>
<%= render "stats/stat", label: "Counter", role: "counter", value: session[:link_in_frame_count].to_i, class: "!bg-indigo-600 dark:!bg-indigo-900",
value_class: ["!text-indigo-200 dark:!text-indigo-300"], label_class: ["!text-indigo-400 dark:!text-indigo-500"] %>
<% end %>
<% :link_in_frame_count.tap do |session_key| %>
<%= turbo_frame_tag demo_frame_id(@template_path) do %>
<%= cache session[session_key].to_i do %>
<%= render "frames/frame" do %>
<%= render "stats/stats" do %>
<%= render "stats/stat", label: "Counter", role: "counter", value: session[session_key].to_i, class: "!bg-indigo-600 dark:!bg-indigo-900",
value_class: ["!text-indigo-200 dark:!text-indigo-300"], label_class: ["!text-indigo-400 dark:!text-indigo-500"] %>
<% end %>

<p class="my-8">
The link below will invoke a reflex before Rails/Hotwire replaces the frame's content.
</p>
<p class="my-8">
The link below will invoke a reflex before Rails/Hotwire replaces the frame's content.
</p>

<%= link_to nil, id: demo_frame_id(@template_path, :trigger), class: css("flowbite.link.default", "inline-block relative mb-8 ml-0"),
data: { turbo_reflex: "CounterReflex#increment", session_key: :link_in_frame_count } do %>
Basic Link
<%= render flowbite(:notification_badge), value: session[:link_in_frame_count].to_i, class: "!-right-4" if session[:link_in_frame_count].to_i > 0 %>
<% end %>
<%= link_to nil, id: demo_frame_id(@template_path, :trigger), class: css("flowbite.link.default", "inline-block relative mb-8 ml-0"),
data: { turbo_reflex: "CounterReflex#increment", session_key: session_key } do %>
Basic Link
<%= render flowbite(:notification_badge), value: session[session_key].to_i, class: "!-right-4" if session[:link_in_frame_count].to_i > 0 %>
<% end %>
<%= render component(:code), language: :ruby, class: "text-sm",
path: "app/reflexes/counter_reflex.rb", source_path: "app/views/codes/increment/reflex.rb" %>
<%= render component(:code), language: :ruby, class: "text-sm",
path: "app/reflexes/counter_reflex.rb", source_path: "app/views/codes/increment/reflex.rb" %>

<div class="my-8"></div>
<div class="my-8"></div>

<%= render component(:code), language: :ruby, class: "text-sm",
path: "app/controllers/demos_controller.rb", source_path: "app/views/codes/increment/controller.rb" %>
<%= render component(:code), language: :ruby, class: "text-sm",
path: "app/controllers/demos_controller.rb", source_path: "app/views/codes/increment/controller.rb" %>

<div class="my-8"></div>
<div class="my-8"></div>

<%= render component(:code), language: :erb, class: "text-sm",
path: "app/views/demos/show.html.erb", source_path: "app/views/codes/increment/link_in_frame/show.erb" %>
<%= render component(:code), language: :erb, class: "text-sm",
path: "app/views/demos/show.html.erb", source_path: "app/views/codes/increment/link_in_frame/show.erb" %>

<div class="my-8"></div>
<div class="my-8"></div>

<%= render component(:code), language: :html, class: "text-sm",
path: "Rendered HTML for: /demos/#{@demo_index}", source_path: "app/views/codes/increment/link_in_frame/show.html", erb: true %>
<%= render component(:code), language: :html, class: "text-sm",
path: "Rendered HTML for: /demos/#{@demo_index}", source_path: "app/views/codes/increment/link_in_frame/show.html", erb: true %>
<% end %>
<% end %>
<% end %>
<% end %>

0 comments on commit 9c42a6b

Please sign in to comment.