Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Re-structure turbo-stream[action=morph] support #1240

Open
wants to merge 1 commit into
base: main
Choose a base branch
from

Commits on Apr 4, 2024

  1. Re-structure turbo-stream[action=morph] support

    This commit re-structures the new support for
    `turbo-stream[action="morph"]` elements introduced in [hotwired#1185][].
    
    Since the `<turbo-stream action="morph">` hasn't yet been part of a
    release, there's an opportunity to rename it without being considerate
    of backwards compatibility.
    
    As an alternative to introduce a new Stream Action, this commit changes
    existing actions to be more flexible.
    
    For example, the `<turbo-stream method="morph">` element behaves like a
    specialized version of a `<turbo-stream method="replace">`, since it
    operates on the target element's `outerHTML` property.
    
    Similarly, the `<turbo-stream method="morph" children-only>` element
    behaves like a specialized version of a `<turbo-stream
    method="update">`, since it operates on the target element's `innerHTML`
    property.
    
    ```diff
    -<turbo-stream action="morph">
    +<turbo-stream action="replace" method="morph">
       <template>Replace me with morphing</template>
     </turbo-stream>
    
    -<turbo-stream action="morph" children-only>
    +<turbo-stream action="update" method="morph">
       <template>Update me with morphing</template>
     </turbo-stream>
    ```
    
    This commit removes the `[action="morph"]` support entirely, and
    re-implements it in terms of the `[action="replace"]` and
    `[action="update"]` support.
    
    By consolidating concepts, the "scope" of the modifications is more
    clearly communicated to callers that are familiar with the underlying
    DOM interfaces (`Element.replaceWith` and `Element.innerHTML`) that are
    invoked by the conventionally established Replace and Update actions.
    
    This proposal also aims to reinforce the "method" terminology introduced
    by the Page Refresh `<meta name="refresh-method" content="morph">`
    element.
    
    [hotwired#1185]: hotwired#1185
    seanpdoyle committed Apr 4, 2024
    Configuration menu
    Copy the full SHA
    057ad5e View commit details
    Browse the repository at this point in the history