All Versions
Latest Version
Avg Release Cycle
31 days
Latest Release
106 days ago

Changelog History
Page 1

  • v0.5.1 Changes

    July 13, 2021
    • Add property values to form inputs
    • Handle doctype as text
    • Improve error message when default_translator is not configured for ErrorTag (#449)
    • Raise on invalid attribute/directive in <#slot> (#456)
    • Raise error on {#case} without {#match} (#443)
    • Raise on blocks without expression
    • Fix error line on missing closing tag
  • v0.5.0 Changes

    June 17, 2021
    • Add <:slotname> shorthand for <#template slot="slotname">
    • Introduce block expressions for surface templates (e.g., {#if}..{/if})
    • Introduce {#if} block expression with support for {#elseif} and {#else} sub blocks
    • Introduce {#for} block expression with support for {#else} sub block
    • Introduce {#unless} block expression
    • Introduce new shorthand notation for dynamic attributes/props using the {... } tagged expression
    • Introduce new shorthand notation for attribute assignment using the {= } tagged expression
    • Support private comments using {!-- --} for comments that are not supposed to hit the browser
    • Introduce s- prefix as an alternative to : for directives (i.e. s-if and :if are now equivalent)
    • Introduce :values directive for generating multiple phx-value- attributes
    • Added a convert task to aid migrating to the new syntax
    • Evaluate literal attribute values at compile time instead of runtime
    • Fix compile error when using single quotes as attribute value delimiters
    • Add quote_surface/2 macro to generate Surface AST from template snippets.

    ๐Ÿ’ฅ Breaking Changes

    • Replace the sigil ~H with ~F to avoid conflict with HEEx
    • Replace interpolation delimiters {{ and }} with { and }
    • Remove support for interpolation inside <style>...</style> and <script>...</script> nodes
    • ErrorTag: Renamed prop phx_feedback_for to feedback_for
    • Slot directive :props has been renamed to :args
    • Option :props for the slot/2 macro has been renamed to :args
    • The use of <template> has been removed in favor of <#template>
    • The use of <slot> has been removed in favor of <#slot>
    • The use of <If> has been removed in favor of {#if}...{/if}
    • The use of <For> has been removed in favor of {#for}...{/for}
    • MacroComponent.eval_static_props!/3 evaluates and returns only props with option static: true

    ๐Ÿ—„ Deprecations

    • Support for passing non-string attribute values as literals (i.e. selected=true or tabindex=3) has been removed. Any non-string value should be passed as an expression (i.e. selected={true})
  • v0.4.1 Changes

    May 26, 2021
    • Fix warning on Phoenix Live View >= 1.15.6
  • v0.4.0 Changes

    May 01, 2021
    • Call render when defined in slotable components (#283)
    • Support defining form fields as strings. Consequently, fields defined as literal strings will no longer be auto-converted to :atom and will keep the original value (#319)
    • Deprecate auto-conversion of attribute values passed as string literals into atoms
    • Do not encode HTML entities when passing attribute values as string literals (#323)
    • Extract the Markdown macro component in its repository (#316)
    • Renamed Surface.Components.Button to Surface.Components.Link.Button (#350)
  • v0.3.2 Changes

    March 19, 2021
    • Warn if prop is required and has default value (#282)
    • Warn if slot is required and has a fallback content (#296)
    • Warn on LiveComponent with another LiveComponent as root
    • Support escaped three double-quotes in Markdown content
    • Improve Label component compatibility with Phoenix label/2 (#284)
    • Update props according to new types (#297)
    • Fix copying JS hooks multiple times (#294)
  • v0.3.1 Changes

    March 05, 2021
    • Fix index.js generation when no hooks are available
    • Fix loading hooks from dependencies
    • Support <Link> with scheme (#273)
  • v0.3.0 Changes

    February 24, 2021
    • Autoload JS hooks via new surface compiler (#271)
    • New <Link> and <Label> implementation without depending on content_tag to allow receiving child components in slots (#264)
    • Don't validate undefined assigns outside render (#263)
    • Load subject's default props values before sending them to playgrounds
  • v0.2.1 Changes

    February 01, 2021
    • Allow different catalogue options for examples and playgrounds
  • v0.2.0 Changes

    January 27, 2021
    • Introduce new testing API using render_surface/1
    • Add experimental support to create examples and playgrounds for catalogues
    • Raises compile error if slots are not declared
    • Raises compile error on duplicate built-in assign
    • Allow defining the assign name for slot through the :as option (#230)
    • Implement the :show directive via hidden attribute (#244)
    • Add new <DateSelectComponent> component
    • Remove default value from Form method prop
    • Reintroduce opts prop for the <Select> component
    • Fix markdown syntax warning in <Form> docs
    • Fix error when using :if + :props in slots (#224)
    • Fix line offset when using single-line ~H variants (#246)
    • Fix UnicodeConversionError when using string literals inside interpolation
  • v0.1.1 Changes

    November 28, 2020
    • Add explicit props for the main opts of Checkbox, Select, MultipleSelect, FileInput and Form (#215).
    • Add new slot_assigned?/1 macro to check if a slot has been filled in (#211).
    • Fix attribute value encoding