All Versions
Latest Version
Avg Release Cycle
32 days
Latest Release
362 days ago

Changelog History
Page 2

  • v0.7.3 Changes

    March 18, 2022
    • Fix loading component prop's default values
  • v0.7.2 Changes

    March 17, 2022
    • Support more extensions other than .js as colocated hooks (jsx, ts and tsx) (#576)
    • Update the surface.init task to set up the catalogue to v0.4
  • v0.7.1 Changes

    February 17, 2022
    • Fix wrong target handling in forms
    • Fix setting @moduledoc false in catalogue examples (#565)
    • Support Inputs' property for as string (#564)
  • v0.7.0 Changes

    January 13, 2022
    • Support Liveview v0.17
    • Support rendering .sface templates for regular (dead) views (#543)
    • Support passing properties to slots using the shorthand format, e.g. <:col label="Name">
    • Add built-in formatter supporting integration with mix format (#535)
    • New <LiveComponent> component to inject dynamic live components (#518)
    • Optimize rendering of HTML class attributes literals so they can be treated as static text
    • Add property for to <#slot/> so it can render the slot content directly (without using index)
  • v0.6.1 Changes

    October 26, 2021
    • Add surface_formatter dependency to mix.exs when running mix surface.init (#507)
    • Allow Inputs component inside the Field component (#492)
    • Fix using context with external .sface templates (#511)
    • Fix attribute name conversion (#512)
  • v0.6.0 Changes

    October 21, 2021
    • Compatibility with Phoenix v1.6 and Liveview v0.16
    • New mix surface.init task
    • Add support for function components
    • Add support for dynamic function components via <Component>
    • Add support for recursive function components
    • Optimize change tracking for contexts
    • Fix race condition when compiling tests
    • Fix recompilation of used components
  • 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)