Packages
mishka_chelekom
0.0.10-alpha.5
0.0.10-alpha.5
0.0.10-alpha.4
0.0.10-alpha.3
0.0.10-alpha.2
0.0.10-alpha.1
0.0.9
0.0.9-rc.2
0.0.9-rc.1
0.0.9-beta.5
0.0.9-beta.4
0.0.9-beta.3
0.0.9-beta.2
0.0.9-beta.1
0.0.9-alpha.20
0.0.9-alpha.18
0.0.9-alpha.17
0.0.9-alpha.16
0.0.9-alpha.15
0.0.9-alpha.14
0.0.9-alpha.13
0.0.9-alpha.12
0.0.9-alpha.11
0.0.9-alpha.10
0.0.9-alpha.9
0.0.9-alpha.8
0.0.9-alpha.7
0.0.9-alpha.6
0.0.9-alpha.5
0.0.9-alpha.4
0.0.9-alpha.3
0.0.9-alpha.2
0.0.9-alpha.1
0.0.8
0.0.8-rc.2
0.0.8-rc.1
0.0.8-beta.5
0.0.8-beta.4
0.0.8-beta.3
0.0.8-beta.2
0.0.8-beta.1
0.0.8-alpha.4
0.0.8-alpha.3
0.0.8-alpha.2
0.0.8-alpha.1
0.0.7
0.0.6
0.0.6-alpha.2
0.0.6-alpha.1
0.0.5
0.0.5-beta.2
0.0.5-beta.1
0.0.5-alpha.12
0.0.5-alpha.11
0.0.5-alpha.10
0.0.5-alpha.9
0.0.5-alpha.8
0.0.5-alpha.7
0.0.5-alpha.6
0.0.5-alpha.5
0.0.5-alpha.4
0.0.5-alpha.3
0.0.5-alpha.2
0.0.5-alpha.1
0.0.4
0.0.4-beta.3
0.0.4-beta.2
0.0.4-beta.1
0.0.4-alpha.9
0.0.4-alpha.8
0.0.4-alpha.7
0.0.4-alpha.6
0.0.4-alpha.5
0.0.4-alpha.4
0.0.4-alpha.3
0.0.4-alpha.2
0.0.4-alpha.1
0.0.3
0.0.3-alpha.3
0.0.3-alpha.2
0.0.3-alpha.1
0.0.2
0.0.2-rc.2
0.0.2-rc.1
0.0.2-beta.4
0.0.2-beta.3
0.0.2-beta.2
0.0.2-beta.1
0.0.2-alpha.3
0.0.2-alpha.2
0.0.2-alpha.1
0.0.1
Mishka Chelekom is a fully featured components and UI kit library for Phoenix & Phoenix LiveView
Current section
Files
Jump to
Current section
Files
priv/headless/json_input.eex
defmodule <%= @module %> do
@moduledoc """
Headless **json input** — a textarea for JSON with a server-validated error state (Mantine
JsonInput parity).
Renders a monospace-friendly `<textarea>`; parsing/formatting the JSON is the **server's** job in
LiveView (`Jason.decode/1`) — no JS. Set `invalid` to reflect `data-invalid` for error styling, and
bind `value` to a form field so a formatted value flows back on validate.
Ships **no** styling — style via `chelekom-json-input` and the `data-invalid` hook.
**Documentation:** https://mishka.tools/chelekom/docs/headless/json_input
"""
use Phoenix.Component
@doc type: :component
attr :id, :string, default: nil, doc: "Optional unique id"
attr :name, :string, default: nil, doc: "Form field name"
attr :value, :string, default: "", doc: "Current text"
attr :placeholder, :string, default: nil, doc: "Placeholder"
attr :rows, :integer, default: 6, doc: "Visible rows"
attr :disabled, :boolean, default: false, doc: "Disable input"
attr :invalid, :boolean,
default: false,
doc: "Reflects aria-invalid + data-invalid for error styling"
attr :class, :any, default: nil, doc: "Extra classes"
attr :rest, :global,
include: ~w(autocomplete cols form maxlength minlength readonly required wrap),
doc: "Any textarea/global attrs, e.g. phx-change, required"
def <%= @component_prefix %>json_input(assigns) do
~H"""
<textarea
id={@id}
name={@name}
rows={@rows}
placeholder={@placeholder}
disabled={@disabled}
aria-invalid={@invalid && "true"}
data-invalid={@invalid}
spellcheck="false"
class={["chelekom-json-input", @class]}
{@rest}
>{Phoenix.HTML.Form.normalize_value("textarea", @value)}</textarea>
"""
end
end