ream88

ream88

Phoenix.Component usage - getting warning: undefined slot “label” for component MyAppWeb.CoreComponents.input/1

Hello there,

in my current Phoenix app I extended the built-in CoreComponents module with a custom radio-card input component which renders the following TailwindUI inspired UI:

However because I needed both the label and description to accept HTML, I did the following:

defguard is_slot(attrs) when is_list(attrs) and is_map(hd(attrs)) and is_map_key(hd(attrs), :__slot__)

In the HEEX template I use the following snippet:

<%= if is_slot(@label) do %>
  <%= render_slot(@label) %>
<% else %>
  <span><%= @label %></span>
<% end %>

This works quite fine with the code in CoreComponents.input/1, however it still spits out a warning besides working as expected:

attr :label, :string, default: nil
attr :description, :string, default: nil

warning: undefined slot “label” for component MyAppWeb.CoreComponents.input/1
warning: undefined slot “description” for component MyAppWeb.CoreComponents.input/1

Is there a way to define an attr so it both takes a slot or an ordinary attr?

Marked As Solved

LostKobrakai

LostKobrakai

I’d just make the label be a slot generally. It can take a plain string just fine, but you’re able to validate things properly and you’re not working against the system. I can see the convenience of having an “input” be a slot or attr, but in practise there’s likely a lot of edge cases if that would be supported.

Last Post!

ream88

ream88

Ok, took the bite and updated ALL my views, but now it’s working and no errors anymore. And the benefit is, that I can use arbitrary HTML now as my label! Thx a lot!

Where Next?

Popular in Questions Top

nobody
Hi! In PHP: $_SERVER[‘SERVER_ADDR’] - in Elixir? Searched the docs for ip address and the web, no good results. Thanks!
New
vonH
In asking this question I am more interested about the expressiveness of the language itself and less concerned about the availability of...
New
9mm
I am constructing a JSON object (map) and I need to conditionally set a field. I’m trying to write proper elixir-way code… and I’m at a l...
New
stefanluptak
Hello everybody, usually, I use a 29" ultra-wide monitor for VSCode which can easily accomodate explorer (files panel) + file with code ...
New
SoCreat
i’m a new one to elixir which editor can i use vs code? or atom? Thanks! :smiley:
New
fayddelight
I tried installing elixir 1.11.2 erlang 23.3.4 via asdf in my zsh shell. Enabled the versions locally and globally. When I list them ...
New
jason.o
In the code below, if the create action is not set to accept “extra_key” as an input, it errors out with a message shown above. Is there ...
New

Other popular topics Top

nobody
Hi! In PHP: $_SERVER[‘SERVER_ADDR’] - in Elixir? Searched the docs for ip address and the web, no good results. Thanks!
New
sergio_101
I am VERY much an elixir newbie. I have taken one elixir course and one phoenix course on Udemy. During that course, I saw the instructor...
New
sorentwo
Hello! tl;dr Announcing Oban, an Ecto based job processing library with a focus on reliability and historical observability. After spen...
985 44532 311
New
shijith.k
I am trying to start a new phoenix project with elixir 1.9, but mix phx.new does not work. It says that ** (Mix) The task "phx.new" could...
New
alice
Hey, Just curious what are the main benefits of Elixir compared to Clojure? When is Elixir more useful than Clojure and vice versa? Th...
New
Harrisonl
We have an ECS cluster with 4 services, where each task joins a single cluster, via discovery ECS discovery service. Currently when I de...
New

We're in Beta

About us Mission Statement