<turbo-stream action="append" target="posts_list"><template>    <div class="postbit" id="74302" data-post-id="74302">
  <section>
    <div class="post-wrap">


					<div class="post-header">
		        <div class="user-avatar">
		          <img alt="grych" src="https://forum.elixirforum.com/user_avatar/forum.elixirforum.com/grych/120/5610_2.png" width="120" height="120" />
		        </div>
					
						<div class="user-details">
		          <div class="user-name">
		            <h3>
                  grych
                    <span class="op-star" title="Thread Starter">
                      <img alt="OP" class="op-star-icon" src="/assets/thread-icons/thread-icon-thread-starter-df91e872.png" />
                    </span>
                  </h3>
		          </div>
						
			          <div class="user-title">
									<span>Creator of Drab</span>
			          </div>
						</div>
					
					</div>

	        <div class="thread-main">
	            <div class="post-body" data-turbo="false">
								<aside class="quote no-group" data-username="stevepm" data-post="322" data-topic="3277" data-full="true">
<div class="title">
<div class="quote-controls"></div>
<img alt="" width="24" height="24" src="https://forum.elixirforum.com/user_avatar/forum.elixirforum.com/stevepm/48/1886_2.png" class="avatar"> stevepm:</div>
<blockquote>
<p>Looks great, any idea when this version will be released?</p>
</blockquote>
</aside>
<p>I am currently working on it. I want to introduce this in the v0.7.2, hopefully in a week or two. All depends on the weather over the weekends <img src="https://forum.elixirforum.com/images/emoji/apple/slight_smile.png?v=15" title=":slight_smile:" class="emoji" alt=":slight_smile:" loading="lazy" width="20" height="20"></p>
<p>In this release system will generate warnings about undeclared handlers, but it will still work. In 0.8, I am going to completely depreciate it.</p> 
	            </div>

	            <div class="base-line">
	                <div class="thread-counters">
	                    <span class="thread-count count-likes js-likers-trigger" title="Likes" data-post-id="74302" data-batch-url="/posts/batch_likers">
                        0
                      </span>
                      <!-- <span class="thread-count js-solved-indicator" title="Marked as solution"></span> -->
	                </div>
	                <div class="go-to-post">
	                  <a title="Go to post" alt="Go to post" href="https://forum.elixirforum.com/t/drab-remote-controlled-frontend-framework-for-phoenix/3277/323">Post #322</a>
	                </div>
	            </div>
              <div id="likers-container-74302" 
                   class="likers-container"
                   data-first-post="false"
                   data-batch-url="/posts/batch_likers">
                   <div class="likers-placeholder" 
                     data-likers-post-id="74302"
                     data-batch-url="/posts/batch_likers">
                  <div class="post-likers"></div>
                </div>
              </div>
	        </div>
			

    </div>

    <div class="triangle-top-right type-standard-post cat-standard-post" title="Post #322"></div>
  </section>
</div>
    <div class="postbit" id="74945" data-post-id="74945">
  <section>
    <div class="post-wrap">


					<div class="post-header">
		        <div class="user-avatar">
		          <img alt="thib" src="https://forum.elixirforum.com/user_avatar/forum.elixirforum.com/thib/120/8365_2.png" width="120" height="120" />
		        </div>
					
						<div class="user-details">
		          <div class="user-name">
		            <h3>
                  thib
                  </h3>
		          </div>
						
						</div>
					
					</div>

	        <div class="thread-main">
	            <div class="post-body" data-turbo="false">
								<p>Thanks for your answer Grych. Thats true that returning sockets would be a nice improvement and generate less code and grouping instructions would be great ! If I may add, I think that replacing the whole element classes is a bit heavy, should be a method to add or remove a specific class or attribute (like jquery)…</p>
<p>For partials i couldn’t find a way to use it (I generate n times the same partial which is a button). If you have a chance to show a demo that would be great… Anyway thanks !</p> 
	            </div>

	            <div class="base-line">
	                <div class="thread-counters">
	                    <span class="thread-count count-likes js-likers-trigger" title="Likes" data-post-id="74945" data-batch-url="/posts/batch_likers">
                        0
                      </span>
                      <!-- <span class="thread-count js-solved-indicator" title="Marked as solution"></span> -->
	                </div>
	                <div class="go-to-post">
	                  <a title="Go to post" alt="Go to post" href="https://forum.elixirforum.com/t/drab-remote-controlled-frontend-framework-for-phoenix/3277/324">Post #323</a>
	                </div>
	            </div>
              <div id="likers-container-74945" 
                   class="likers-container"
                   data-first-post="false"
                   data-batch-url="/posts/batch_likers">
                   <div class="likers-placeholder" 
                     data-likers-post-id="74945"
                     data-batch-url="/posts/batch_likers">
                  <div class="post-likers"></div>
                </div>
              </div>
	        </div>
			

    </div>

    <div class="triangle-top-right type-standard-post cat-standard-post" title="Post #323"></div>
  </section>
</div>
    <div class="postbit" id="74957" data-post-id="74957">
  <section>
    <div class="post-wrap">


					<div class="post-header">
		        <div class="user-avatar">
		          <img alt="grych" src="https://forum.elixirforum.com/user_avatar/forum.elixirforum.com/grych/120/5610_2.png" width="120" height="120" />
		        </div>
					
						<div class="user-details">
		          <div class="user-name">
		            <h3>
                  grych
                    <span class="op-star" title="Thread Starter">
                      <img alt="OP" class="op-star-icon" src="/assets/thread-icons/thread-icon-thread-starter-df91e872.png" />
                    </span>
                  </h3>
		          </div>
						
			          <div class="user-title">
									<span>Creator of Drab</span>
			          </div>
						</div>
					
					</div>

	        <div class="thread-main">
	            <div class="post-body" data-turbo="false">
								<aside class="quote no-group" data-username="thib" data-post="324" data-topic="3277">
<div class="title">
<div class="quote-controls"></div>
<img alt="" width="24" height="24" src="https://forum.elixirforum.com/user_avatar/forum.elixirforum.com/thib/48/8365_2.png" class="avatar"> thib:</div>
<blockquote>
<p>If I may add, I think that replacing the whole element classes is a bit heavy, should be a method to add or remove a specific class or attribute (like jquery)…</p>
</blockquote>
</aside>
<p>I will think about it. By the other hand, I don’t want to overcomplicate <code>Drab.Element</code> - it is supposed to be the simplest one.</p>
<p>Did you check <a href="https://tg.pl/drab/query" rel="noopener nofollow ugc"><code>Drab.Query</code></a> - the drab library over jQuery? You may find it useful, if you are using jQuery. It has the class manipulation functions.</p> 
	            </div>

	            <div class="base-line">
	                <div class="thread-counters">
	                    <span class="thread-count count-likes js-likers-trigger" title="Likes" data-post-id="74957" data-batch-url="/posts/batch_likers">
                        0
                      </span>
                      <!-- <span class="thread-count js-solved-indicator" title="Marked as solution"></span> -->
	                </div>
	                <div class="go-to-post">
	                  <a title="Go to post" alt="Go to post" href="https://forum.elixirforum.com/t/drab-remote-controlled-frontend-framework-for-phoenix/3277/325">Post #324</a>
	                </div>
	            </div>
              <div id="likers-container-74957" 
                   class="likers-container"
                   data-first-post="false"
                   data-batch-url="/posts/batch_likers">
                   <div class="likers-placeholder" 
                     data-likers-post-id="74957"
                     data-batch-url="/posts/batch_likers">
                  <div class="post-likers"></div>
                </div>
              </div>
	        </div>
			

    </div>

    <div class="triangle-top-right type-standard-post cat-standard-post" title="Post #324"></div>
  </section>
</div>
    <div class="postbit" id="75379" data-post-id="75379">
  <section>
    <div class="post-wrap">


					<div class="post-header">
		        <div class="user-avatar">
		          <img alt="grych" src="https://forum.elixirforum.com/user_avatar/forum.elixirforum.com/grych/120/5610_2.png" width="120" height="120" />
		        </div>
					
						<div class="user-details">
		          <div class="user-name">
		            <h3>
                  grych
                    <span class="op-star" title="Thread Starter">
                      <img alt="OP" class="op-star-icon" src="/assets/thread-icons/thread-icon-thread-starter-df91e872.png" />
                    </span>
                  </h3>
		          </div>
						
			          <div class="user-title">
									<span>Creator of Drab</span>
			          </div>
						</div>
					
					</div>

	        <div class="thread-main">
	            <div class="post-body" data-turbo="false">
								<aside class="quote no-group quote-modified" data-username="OvermindDL1" data-post="134" data-topic="3277">
<div class="title">
<div class="quote-controls"></div>
<img alt="" width="24" height="24" src="https://forum.elixirforum.com/user_avatar/forum.elixirforum.com/overminddl1/48/2677_2.png" class="avatar"> OvermindDL1:</div>
<blockquote>
<p>On any page load or change, anything decorate with some drab thing, like say &lt;div drab-commander=“BlahCommander”&gt; … &lt;/div&gt; then drab should load up BlahCommander and link it to this element for it to then control (and to control only this element).</p>
</blockquote>
</aside>
<p>This is exactly what the next release will be about.</p>
<aside class="quote no-group" data-username="OvermindDL1" data-post="134" data-topic="3277">
<div class="title">
<div class="quote-controls"></div>
<img alt="" width="24" height="24" src="https://forum.elixirforum.com/user_avatar/forum.elixirforum.com/overminddl1/48/2677_2.png" class="avatar"> OvermindDL1:</div>
<blockquote>
<p>and to control only this element</p>
</blockquote>
</aside>
<p>This was kinda hard to accomplish, but now I think I found the way how to do it with an elegance. With Drab, there are three ways to update the content of the page: using the assign name (<code>Drab.Live</code>), with the CSS selector (all other modules) or just send javascript (<code>Drab.Core.exec_js</code>). If you use <code>exec_js</code>, you know exactly what you’re doing, and there is no help from the Drab side <img src="https://forum.elixirforum.com/images/emoji/apple/slight_smile.png?v=15" title=":slight_smile:" class="emoji" alt=":slight_smile:" loading="lazy" width="20" height="20"> More interesting are those two update types:</p>
<h4><a name="p-75379-update-with-css-selector-1" class="anchor" href="#p-75379-update-with-css-selector-1" aria-label="Heading link" rel="nofollow"></a>Update with CSS Selector</h4>
<p>Having the page as below, we want that clicking the button updates <code>.spaceholder1</code> only within the range of <code>drab-commander</code>.</p>
<pre><code>  &lt;div drab-commander="DrabTestApp.Shared1Commander"&gt;
    &lt;div class="spaceholder1"&gt;Nothing&lt;/div&gt;
    &lt;button drab-click="button_clicked"&gt;Shared 1&lt;/button&gt;
  &lt;/div&gt;
  &lt;div drab-commander="DrabTestApp.Shared1Commander"&gt;
    &lt;div class="spaceholder1"&gt;Nothing&lt;/div&gt;
    &lt;button drab-click="button_clicked"&gt;Shared 2&lt;/button&gt;
  &lt;/div&gt;
</code></pre>
<p>Now, you can accomplish it by <a href="https://tg.pl/drab#shared" rel="noopener nofollow ugc">passing additional arguments, like output tag id</a>, but it is not very flexible. What if we could select just this <code>drab-commander</code> tag, where the button was clicked? Just like we can use <code>Drab.Core.this/1</code> to select the exact sender of the event, we may have <code>Drab.Core.this_commander/1</code>, to build a selector which choses the desired object:</p>
<pre><code>  defhandler button_clicked(socket, sender) do
    set_prop socket, this_commander(sender) &lt;&gt; " .spaceholder1", innerText: "changed"
  end
</code></pre>
<p>Notice the space before “.spaceholder1”. <code>this_commander/1</code> returns the string like <code>[drab-id="f59d54e6-a924-4e72-90d1-5177efecac9b"]</code>, so you may build any selector based on it.</p>
<h4><a name="p-75379-update-with-the-living-assigns-2" class="anchor" href="#p-75379-update-with-the-living-assigns-2" aria-label="Heading link" rel="nofollow"></a>Update with the living assigns</h4>
<p>However, where using living assigns, we are not using any CSS selectors - everything updates under the hood. In this case, <strong>this functionality will be always turned on</strong>. Every update inside the <code>drab-commander</code> will be regional by default.</p>
<pre><code>  &lt;div drab-commander="DrabTestApp.Shared1Commander"&gt;
    &lt;div&gt;&lt;%= @assign1 %&gt;&lt;/div&gt;
    &lt;button drab-click="button_clicked"&gt;Shared 1&lt;/button&gt;
  &lt;/div&gt;
  &lt;div drab-commander="DrabTestApp.Shared1Commander"&gt;
    &lt;div&gt;&lt;%= @assign1 %&gt;&lt;/div&gt;
    &lt;button drab-click="button_clicked"&gt;Shared 2&lt;/button&gt;
  &lt;/div&gt;
</code></pre>
<p>And the handler is just exactly as it was before. Local changes are out of the box.</p>
<pre><code>  defhandler button_clicked(socket, sender) do
    poke socket, assign1: "changed"
  end
</code></pre>
<p>I believe it makes sense and finally provides a way to create a kind of reusable components.</p>
<p>One more thing: why not to enable this functionality with the selector updates by default? I wanted to do it like this, but I realized that it would provide way too much magic. When using a selector, you expect some behaviour.</p> 
	            </div>

	            <div class="base-line">
	                <div class="thread-counters">
	                    <span class="thread-count count-likes js-likers-trigger" title="Likes" data-post-id="75379" data-batch-url="/posts/batch_likers">
                        1
                      </span>
                      <!-- <span class="thread-count js-solved-indicator" title="Marked as solution"></span> -->
	                </div>
	                <div class="go-to-post">
	                  <a title="Go to post" alt="Go to post" href="https://forum.elixirforum.com/t/drab-remote-controlled-frontend-framework-for-phoenix/3277/326">Post #325</a>
	                </div>
	            </div>
              <div id="likers-container-75379" 
                   class="likers-container"
                   data-first-post="false"
                   data-batch-url="/posts/batch_likers">
                   <div class="likers-placeholder" 
                     data-likers-post-id="75379"
                     data-batch-url="/posts/batch_likers">
                  <div class="post-likers"></div>
                </div>
              </div>
	        </div>
			

    </div>

    <div class="triangle-top-right type-standard-post cat-standard-post" title="Post #325"></div>
  </section>
</div>
    <div class="postbit" id="75381" data-post-id="75381">
  <section>
    <div class="post-wrap">


					<div class="post-header">
		        <div class="user-avatar">
		          <img alt="OvermindDL1" src="https://forum.elixirforum.com/user_avatar/forum.elixirforum.com/OvermindDL1/120/2677_2.png" width="120" height="120" />
		        </div>
					
						<div class="user-details">
		          <div class="user-name">
		            <h3>
                  OvermindDL1
                  </h3>
		          </div>
						
						</div>
					
					</div>

	        <div class="thread-main">
	            <div class="post-body" data-turbo="false">
								<aside class="quote no-group" data-username="grych" data-post="326" data-topic="3277">
<div class="title">
<div class="quote-controls"></div>
<img alt="" width="24" height="24" src="https://forum.elixirforum.com/user_avatar/forum.elixirforum.com/grych/48/5610_2.png" class="avatar"> grych:</div>
<blockquote>
<p>This is exactly what the next release will be about.</p>
</blockquote>
</aside>
<p>I saw!  Whooo!</p>
<p>Looks awesome!  <img src="https://forum.elixirforum.com/images/emoji/apple/smiley.png?v=15" title=":smiley:" class="emoji" alt=":smiley:" loading="lazy" width="20" height="20"></p> 
	            </div>

	            <div class="base-line">
	                <div class="thread-counters">
	                    <span class="thread-count count-likes js-likers-trigger" title="Likes" data-post-id="75381" data-batch-url="/posts/batch_likers">
                        1
                      </span>
                      <!-- <span class="thread-count js-solved-indicator" title="Marked as solution"></span> -->
	                </div>
	                <div class="go-to-post">
	                  <a title="Go to post" alt="Go to post" href="https://forum.elixirforum.com/t/drab-remote-controlled-frontend-framework-for-phoenix/3277/327">Post #326</a>
	                </div>
	            </div>
              <div id="likers-container-75381" 
                   class="likers-container"
                   data-first-post="false"
                   data-batch-url="/posts/batch_likers">
                   <div class="likers-placeholder" 
                     data-likers-post-id="75381"
                     data-batch-url="/posts/batch_likers">
                  <div class="post-likers"></div>
                </div>
              </div>
	        </div>
			

    </div>

    <div class="triangle-top-right type-standard-post cat-standard-post" title="Post #326"></div>
  </section>
</div>
    <div class="postbit" id="76472" data-post-id="76472">
  <section>
    <div class="post-wrap">


					<div class="post-header">
		        <div class="user-avatar">
		          <img alt="grych" src="https://forum.elixirforum.com/user_avatar/forum.elixirforum.com/grych/120/5610_2.png" width="120" height="120" />
		        </div>
					
						<div class="user-details">
		          <div class="user-name">
		            <h3>
                  grych
                    <span class="op-star" title="Thread Starter">
                      <img alt="OP" class="op-star-icon" src="/assets/thread-icons/thread-icon-thread-starter-df91e872.png" />
                    </span>
                  </h3>
		          </div>
						
			          <div class="user-title">
									<span>Creator of Drab</span>
			          </div>
						</div>
					
					</div>

	        <div class="thread-main">
	            <div class="post-body" data-turbo="false">
								<h1><a name="p-76472-v072-1" class="anchor" href="#p-76472-v072-1" aria-label="Heading link" rel="nofollow"></a>v0.7.2.</h1>
<p>This release introduces core API changes, and the important new feature: step forward to reusable components!</p>
<h3><a name="p-76472-api-changes-2" class="anchor" href="#p-76472-api-changes-2" aria-label="Heading link" rel="nofollow"></a>API changes</h3>
<h4><a name="p-76472-use-drabcontroller-is-now-optional-3" class="anchor" href="#p-76472-use-drabcontroller-is-now-optional-3" aria-label="Heading link" rel="nofollow"></a><code>use Drab.Controller</code> is now optional</h4>
<p>When using default commander name, corresponding to the controller (like PageCommander → PageController), there is no need to mark controller as <code>Drab.Controller</code> anymore.</p>
<h4><a name="p-76472-shared-commanders-should-be-declared-in-the-page-controller-4" class="anchor" href="#p-76472-shared-commanders-should-be-declared-in-the-page-controller-4" aria-label="Heading link" rel="nofollow"></a>Shared Commanders should be declared in the page controller</h4>
<p>All shared commanders must be explicitly declared in the controller:</p>
<pre><code>use Drab.Controller, commanders: [My.Shared.Commander]
</code></pre>
<p>In this version, system generates warning message if commanders are not declared. <strong>This warning will become error in v0.8.0</strong></p>
<h4><a name="p-76472-defhandler-macro-for-creating-event-handlers-in-commanders-5" class="anchor" href="#p-76472-defhandler-macro-for-creating-event-handlers-in-commanders-5" aria-label="Heading link" rel="nofollow"></a><code>defhandler</code> macro for creating event handlers in commanders</h4>
<p>Since this version, all event handlers, whenever they are in shared or “normal” commander, must be declared with <code>public</code> or <code>defhandler</code> macro. Use <code>defhandler</code> instead of the standard <code>def</code>.</p>
<p>This:</p>
<pre><code>public :button_clicked
def button_clicked(socket, sender), do: ...
</code></pre>
<p>is an equivalent of:</p>
<pre><code>defhandler button_clicked(socket, sender), do: ...
</code></pre>
<p>In this version, system generates warning message if the function is not declared as handler. <strong>This warning will become error in v0.8.0</strong></p>
<h3><a name="p-76472-new-features-6" class="anchor" href="#p-76472-new-features-6" aria-label="Heading link" rel="nofollow"></a>New Features</h3>
<h4><a name="p-76472-create-reusable-drab-components-with-shared-commanders-7" class="anchor" href="#p-76472-create-reusable-drab-components-with-shared-commanders-7" aria-label="Heading link" rel="nofollow"></a>Create Reusable Drab Components with Shared Commanders</h4>
<p>Accomplished this with the new <code>Drab.Core.this_commander/1</code> function, returning the unique selector of the sourrounding commander tag, so you may easly reduce the region where your update works.</p>
<p>Having the page as below, we want the button to update <code>.spaceholder1</code> only within the range of <code>drab-commander</code>.</p>
<pre><code>&lt;div drab-commander="DrabTestApp.Shared1Commander"&gt;
  &lt;div class="spaceholder1"&gt;Nothing&lt;/div&gt;
  &lt;button drab-click="button_clicked"&gt;Shared 1&lt;/button&gt;
&lt;/div&gt;
&lt;div drab-commander="DrabTestApp.Shared1Commander"&gt;
  &lt;div class="spaceholder1"&gt;Nothing&lt;/div&gt;
  &lt;button drab-click="button_clicked"&gt;Shared 2&lt;/button&gt;
&lt;/div&gt;
</code></pre>
<p>Just like we can use <code>Drab.Core.this/1</code> to select the exact sender of the event, we may have <code>Drab.Core.this_commander/1</code>, to build a selector which chooses the desired object:</p>
<pre><code>defhandler button_clicked(socket, sender) do
  set_prop socket, this_commander(sender) &lt;&gt; " .spaceholder1", innerText: "changed"
end
</code></pre>
<p>Notice the space before “.spaceholder1”. <code>this_commander/1</code> returns the string like <code>[drab-id="f59d54e6-a924-4e72-90d1-5177efecac9b"]</code>, so you may build any selector based on it.</p> 
	            </div>

	            <div class="base-line">
	                <div class="thread-counters">
	                    <span class="thread-count count-likes js-likers-trigger" title="Likes" data-post-id="76472" data-batch-url="/posts/batch_likers">
                        4
                      </span>
                      <!-- <span class="thread-count js-solved-indicator" title="Marked as solution"></span> -->
	                </div>
	                <div class="go-to-post">
	                  <a title="Go to post" alt="Go to post" href="https://forum.elixirforum.com/t/drab-remote-controlled-frontend-framework-for-phoenix/3277/328">Post #327</a>
	                </div>
	            </div>
              <div id="likers-container-76472" 
                   class="likers-container"
                   data-first-post="false"
                   data-batch-url="/posts/batch_likers">
                   <div class="likers-placeholder" 
                     data-likers-post-id="76472"
                     data-batch-url="/posts/batch_likers">
                  <div class="post-likers"></div>
                </div>
              </div>
	        </div>
			

    </div>

    <div class="triangle-top-right type-standard-post cat-standard-post" title="Post #327"></div>
  </section>
</div>
    <div class="postbit" id="76633" data-post-id="76633">
  <section>
    <div class="post-wrap">


					<div class="post-header">
		        <div class="user-avatar">
		          <img alt="OvermindDL1" src="https://forum.elixirforum.com/user_avatar/forum.elixirforum.com/OvermindDL1/120/2677_2.png" width="120" height="120" />
		        </div>
					
						<div class="user-details">
		          <div class="user-name">
		            <h3>
                  OvermindDL1
                  </h3>
		          </div>
						
						</div>
					
					</div>

	        <div class="thread-main">
	            <div class="post-body" data-turbo="false">
								<aside class="quote no-group" data-username="grych" data-post="328" data-topic="3277">
<div class="title">
<div class="quote-controls"></div>
<img alt="" width="24" height="24" src="https://forum.elixirforum.com/user_avatar/forum.elixirforum.com/grych/48/5610_2.png" class="avatar"> grych:</div>
<blockquote>
<p>Shared Commanders should be declared in the page controller<br>
All shared commanders must be explicitly declared in the controller:</p>
<p>use Drab.Controller, commanders: [My.Shared.Commander]</p>
<p>In this version, system generates warning message if commanders are not declared. This warning will become error in v0.8.0</p>
</blockquote>
</aside>
<p>What about when a shared commander loads ‘another’ shared command, like doing in-page navigation to other ‘components/pages’?  Does that mean you have to list all possible shared commanders on all possible controllers?</p> 
	            </div>

	            <div class="base-line">
	                <div class="thread-counters">
	                    <span class="thread-count count-likes js-likers-trigger" title="Likes" data-post-id="76633" data-batch-url="/posts/batch_likers">
                        1
                      </span>
                      <!-- <span class="thread-count js-solved-indicator" title="Marked as solution"></span> -->
	                </div>
	                <div class="go-to-post">
	                  <a title="Go to post" alt="Go to post" href="https://forum.elixirforum.com/t/drab-remote-controlled-frontend-framework-for-phoenix/3277/329">Post #328</a>
	                </div>
	            </div>
              <div id="likers-container-76633" 
                   class="likers-container"
                   data-first-post="false"
                   data-batch-url="/posts/batch_likers">
                   <div class="likers-placeholder" 
                     data-likers-post-id="76633"
                     data-batch-url="/posts/batch_likers">
                  <div class="post-likers"></div>
                </div>
              </div>
	        </div>
			

    </div>

    <div class="triangle-top-right type-standard-post cat-standard-post" title="Post #328"></div>
  </section>
</div>
    <div class="postbit" id="76636" data-post-id="76636">
  <section>
    <div class="post-wrap">


					<div class="post-header">
		        <div class="user-avatar">
		          <img alt="grych" src="https://forum.elixirforum.com/user_avatar/forum.elixirforum.com/grych/120/5610_2.png" width="120" height="120" />
		        </div>
					
						<div class="user-details">
		          <div class="user-name">
		            <h3>
                  grych
                    <span class="op-star" title="Thread Starter">
                      <img alt="OP" class="op-star-icon" src="/assets/thread-icons/thread-icon-thread-starter-df91e872.png" />
                    </span>
                  </h3>
		          </div>
						
			          <div class="user-title">
									<span>Creator of Drab</span>
			          </div>
						</div>
					
					</div>

	        <div class="thread-main">
	            <div class="post-body" data-turbo="false">
								<aside class="quote no-group" data-username="OvermindDL1" data-post="329" data-topic="3277">
<div class="title">
<div class="quote-controls"></div>
<img alt="" width="24" height="24" src="https://forum.elixirforum.com/user_avatar/forum.elixirforum.com/overminddl1/48/2677_2.png" class="avatar"> OvermindDL1:</div>
<blockquote>
<p>What about when a shared commander loads ‘another’ shared command, like doing in-page navigation to other ‘components/pages’?  Does that mean you have to list all possible shared commanders on all possible controllers?</p>
</blockquote>
</aside>
<p>Yes.<br>
Drab needs to know all the commanders playing the role in that scene, if we need to unify shared commanders with page ones, to get callbacks working.</p> 
	            </div>

	            <div class="base-line">
	                <div class="thread-counters">
	                    <span class="thread-count count-likes js-likers-trigger" title="Likes" data-post-id="76636" data-batch-url="/posts/batch_likers">
                        0
                      </span>
                      <!-- <span class="thread-count js-solved-indicator" title="Marked as solution"></span> -->
	                </div>
	                <div class="go-to-post">
	                  <a title="Go to post" alt="Go to post" href="https://forum.elixirforum.com/t/drab-remote-controlled-frontend-framework-for-phoenix/3277/330">Post #329</a>
	                </div>
	            </div>
              <div id="likers-container-76636" 
                   class="likers-container"
                   data-first-post="false"
                   data-batch-url="/posts/batch_likers">
                   <div class="likers-placeholder" 
                     data-likers-post-id="76636"
                     data-batch-url="/posts/batch_likers">
                  <div class="post-likers"></div>
                </div>
              </div>
	        </div>
			

    </div>

    <div class="triangle-top-right type-standard-post cat-standard-post" title="Post #329"></div>
  </section>
</div>
    <div class="postbit" id="76644" data-post-id="76644">
  <section>
    <div class="post-wrap">


					<div class="post-header">
		        <div class="user-avatar">
		          <img alt="grych" src="https://forum.elixirforum.com/user_avatar/forum.elixirforum.com/grych/120/5610_2.png" width="120" height="120" />
		        </div>
					
						<div class="user-details">
		          <div class="user-name">
		            <h3>
                  grych
                    <span class="op-star" title="Thread Starter">
                      <img alt="OP" class="op-star-icon" src="/assets/thread-icons/thread-icon-thread-starter-df91e872.png" />
                    </span>
                  </h3>
		          </div>
						
			          <div class="user-title">
									<span>Creator of Drab</span>
			          </div>
						</div>
					
					</div>

	        <div class="thread-main">
	            <div class="post-body" data-turbo="false">
								<p>But, I’ve got your concerns now. It might be a loooooong list sometimes.<br>
What about allowing <strong>any</strong> shared commander, but callbacks working in the declared?</p>
<p>BTW. This is why I am constantly spamming you guys on new ideas and features. I am working on Drab by only myself, so any other opinion is highly appreciated!</p> 
	            </div>

	            <div class="base-line">
	                <div class="thread-counters">
	                    <span class="thread-count count-likes js-likers-trigger" title="Likes" data-post-id="76644" data-batch-url="/posts/batch_likers">
                        1
                      </span>
                      <!-- <span class="thread-count js-solved-indicator" title="Marked as solution"></span> -->
	                </div>
	                <div class="go-to-post">
	                  <a title="Go to post" alt="Go to post" href="https://forum.elixirforum.com/t/drab-remote-controlled-frontend-framework-for-phoenix/3277/331">Post #330</a>
	                </div>
	            </div>
              <div id="likers-container-76644" 
                   class="likers-container"
                   data-first-post="false"
                   data-batch-url="/posts/batch_likers">
                   <div class="likers-placeholder" 
                     data-likers-post-id="76644"
                     data-batch-url="/posts/batch_likers">
                  <div class="post-likers"></div>
                </div>
              </div>
	        </div>
			

    </div>

    <div class="triangle-top-right type-standard-post cat-standard-post" title="Post #330"></div>
  </section>
</div>
    <div class="postbit" id="76647" data-post-id="76647">
  <section>
    <div class="post-wrap">


					<div class="post-header">
		        <div class="user-avatar">
		          <img alt="OvermindDL1" src="https://forum.elixirforum.com/user_avatar/forum.elixirforum.com/OvermindDL1/120/2677_2.png" width="120" height="120" />
		        </div>
					
						<div class="user-details">
		          <div class="user-name">
		            <h3>
                  OvermindDL1
                  </h3>
		          </div>
						
						</div>
					
					</div>

	        <div class="thread-main">
	            <div class="post-body" data-turbo="false">
								<aside class="quote no-group" data-username="grych" data-post="331" data-topic="3277">
<div class="title">
<div class="quote-controls"></div>
<img alt="" width="24" height="24" src="https://forum.elixirforum.com/user_avatar/forum.elixirforum.com/grych/48/5610_2.png" class="avatar"> grych:</div>
<blockquote>
<p>But, I’ve got your concerns now. It might be a loooooong list sometimes.</p>
<p>What about allowing any shared commander, but callbacks working in the declared?</p>
</blockquote>
</aside>
<p>Could always tag a shared commander with <code>@public</code> or something to have it ‘always be in scope in a controller’ or so?  <img src="https://forum.elixirforum.com/images/emoji/apple/slight_smile.png?v=15" title=":slight_smile:" class="emoji" alt=":slight_smile:" loading="lazy" width="20" height="20"></p>
<aside class="quote no-group" data-username="grych" data-post="331" data-topic="3277">
<div class="title">
<div class="quote-controls"></div>
<img alt="" width="24" height="24" src="https://forum.elixirforum.com/user_avatar/forum.elixirforum.com/grych/48/5610_2.png" class="avatar"> grych:</div>
<blockquote>
<p>BTW. This is why I am constantly spamming you guys on new ideas and features. I am working on Drab by only myself, so any other opinion is highly appreciated!</p>
</blockquote>
</aside>
<p>Heh, well if you are curious, this is slowly replacing the old usages of the erlang web framework Nitrogen.  <img src="https://forum.elixirforum.com/images/emoji/apple/slight_smile.png?v=15" title=":slight_smile:" class="emoji" alt=":slight_smile:" loading="lazy" width="20" height="20"></p>
<p>In essence with nitrogen everything was ‘components’, which you could swap and replace and do all kinds of things on a page (and it mostly gracefully fell back without javascript too, mostly, depending on how you coded your side), and you built a page with an initial set of components (which could then do all manner of stuff inside their own little areas).  They sent html with embedded javascript initially, but acted a lot like drab overall (though in Erlang).  <img src="https://forum.elixirforum.com/images/emoji/apple/slight_smile.png?v=15" title=":slight_smile:" class="emoji" alt=":slight_smile:" loading="lazy" width="20" height="20"></p>
<p>Maybe take a look at nitrogen, see if you get some ideas of ‘how’ to use it (not necessarily it’s implementation or API though).  <img src="https://forum.elixirforum.com/images/emoji/apple/slight_smile.png?v=15" title=":slight_smile:" class="emoji" alt=":slight_smile:" loading="lazy" width="20" height="20"></p> 
	            </div>

	            <div class="base-line">
	                <div class="thread-counters">
	                    <span class="thread-count count-likes js-likers-trigger" title="Likes" data-post-id="76647" data-batch-url="/posts/batch_likers">
                        1
                      </span>
                      <!-- <span class="thread-count js-solved-indicator" title="Marked as solution"></span> -->
	                </div>
	                <div class="go-to-post">
	                  <a title="Go to post" alt="Go to post" href="https://forum.elixirforum.com/t/drab-remote-controlled-frontend-framework-for-phoenix/3277/332">Post #331</a>
	                </div>
	            </div>
              <div id="likers-container-76647" 
                   class="likers-container"
                   data-first-post="false"
                   data-batch-url="/posts/batch_likers">
                   <div class="likers-placeholder" 
                     data-likers-post-id="76647"
                     data-batch-url="/posts/batch_likers">
                  <div class="post-likers"></div>
                </div>
              </div>
	        </div>
			

    </div>

    <div class="triangle-top-right type-standard-post cat-standard-post" title="Post #331"></div>
  </section>
</div>
</template></turbo-stream><turbo-stream action="replace" target="load-more-container"><template><div id="load-more-container" class="load-more-container">
    <a class="load-more-button" data-turbo-stream="true" href="/topics/3277/load_more?page=34">Load more posts (158 remaining)</a>
</div></template></turbo-stream>