Skip to content

Commit

Permalink
Release 1.0.0-rc.4
Browse files Browse the repository at this point in the history
  • Loading branch information
chrismccord committed Jun 21, 2024
1 parent 546028c commit 0b9f921
Show file tree
Hide file tree
Showing 12 changed files with 41 additions and 37 deletions.
5 changes: 5 additions & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -108,6 +108,11 @@ generated user module:
if valid_password?(changeset.data, password) do
```

## 1.0.0-rc.4 (2024-06-20)

### Bug fixes
* Fix bug allowing focused input to be overwritten on acknowledgement

## 1.0.0-rc.3 (2024-06-20)

### Bug fixes
Expand Down
8 changes: 5 additions & 3 deletions assets/js/phoenix_live_view/dom_patch.js
Original file line number Diff line number Diff line change
Expand Up @@ -214,6 +214,8 @@ export default class DOMPatch {
// We keep a reference to the cloned tree in the element's private data, and
// on ack (view.undoRefs), we morph the cloned tree with the true fromEl in the DOM to
// apply any changes that happened while the element was locked.
let isFocusedFormEl = focused && fromEl.isSameNode(focused) && DOM.isFormInput(fromEl)
let focusedSelectChanged = isFocusedFormEl && this.isChangedSelect(fromEl, toEl)
if(fromEl.hasAttribute(PHX_REF)){
if(DOM.isUploadInput(fromEl)){
DOM.mergeAttrs(fromEl, toEl, {isIgnored: true})
Expand All @@ -223,7 +225,9 @@ export default class DOMPatch {
DOM.applyStickyOperations(fromEl)
let clone = DOM.private(fromEl, PHX_REF) || fromEl.cloneNode(true)
DOM.putPrivate(fromEl, PHX_REF, clone)
fromEl = clone
if(!isFocusedFormEl){
fromEl = clone
}
}

// nested view handling
Expand All @@ -239,9 +243,7 @@ export default class DOMPatch {
// input handling
DOM.copyPrivates(toEl, fromEl)

let isFocusedFormEl = focused && fromEl.isSameNode(focused) && DOM.isFormInput(fromEl)
// skip patching focused inputs unless focus is a select that has changed options
let focusedSelectChanged = isFocusedFormEl && this.isChangedSelect(fromEl, toEl)
if(isFocusedFormEl && fromEl.type !== "hidden" && !focusedSelectChanged){
this.trackBefore("updated", fromEl, toEl)
DOM.mergeFocusedInput(fromEl, toEl)
Expand Down
4 changes: 2 additions & 2 deletions assets/package-lock.json

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

2 changes: 1 addition & 1 deletion assets/package.json
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
{
"name": "phoenix_live_view",
"version": "1.0.0-rc.3",
"version": "1.0.0-rc.4",
"description": "The Phoenix LiveView JavaScript client.",
"license": "MIT",
"repository": {},
Expand Down
2 changes: 1 addition & 1 deletion mix.exs
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
defmodule Phoenix.LiveView.MixProject do
use Mix.Project

@version "1.0.0-rc.3"
@version "1.0.0-rc.4"

def project do
[
Expand Down
2 changes: 1 addition & 1 deletion package.json
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
{
"name": "phoenix_live_view",
"version": "1.0.0-rc.3",
"version": "1.0.0-rc.4",
"description": "The Phoenix LiveView JavaScript client.",
"license": "MIT",
"module": "./priv/static/phoenix_live_view.esm.js",
Expand Down
13 changes: 6 additions & 7 deletions priv/static/phoenix_live_view.cjs.js

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

4 changes: 2 additions & 2 deletions priv/static/phoenix_live_view.cjs.js.map

Large diffs are not rendered by default.

13 changes: 6 additions & 7 deletions priv/static/phoenix_live_view.esm.js

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

4 changes: 2 additions & 2 deletions priv/static/phoenix_live_view.esm.js.map

Large diffs are not rendered by default.

13 changes: 6 additions & 7 deletions priv/static/phoenix_live_view.js
Original file line number Diff line number Diff line change
Expand Up @@ -1884,11 +1884,8 @@ removing illegal node: "${(childNode.outerHTML || childNode.nodeValue).trim()}"
delete fromNodesLookup[toElKey];
}
if (!childrenOnly2) {
var beforeUpdateResult = onBeforeElUpdated(fromEl, toEl);
if (beforeUpdateResult === false) {
if (onBeforeElUpdated(fromEl, toEl) === false) {
return;
} else if (beforeUpdateResult instanceof HTMLElement) {
fromEl = beforeUpdateResult;
}
morphAttrs2(fromEl, toEl);
onElUpdated(fromEl);
Expand Down Expand Up @@ -2234,6 +2231,8 @@ removing illegal node: "${(childNode.outerHTML || childNode.nodeValue).trim()}"
if (fromEl.type === "number" && (fromEl.validity && fromEl.validity.badInput)) {
return false;
}
let isFocusedFormEl = focused && fromEl.isSameNode(focused) && dom_default.isFormInput(fromEl);
let focusedSelectChanged = isFocusedFormEl && this.isChangedSelect(fromEl, toEl);
if (fromEl.hasAttribute(PHX_REF)) {
if (dom_default.isUploadInput(fromEl)) {
dom_default.mergeAttrs(fromEl, toEl, { isIgnored: true });
Expand All @@ -2243,7 +2242,9 @@ removing illegal node: "${(childNode.outerHTML || childNode.nodeValue).trim()}"
dom_default.applyStickyOperations(fromEl);
let clone2 = dom_default.private(fromEl, PHX_REF) || fromEl.cloneNode(true);
dom_default.putPrivate(fromEl, PHX_REF, clone2);
fromEl = clone2;
if (!isFocusedFormEl) {
fromEl = clone2;
}
}
if (dom_default.isPhxChild(toEl)) {
let prevSession = fromEl.getAttribute(PHX_SESSION);
Expand All @@ -2256,8 +2257,6 @@ removing illegal node: "${(childNode.outerHTML || childNode.nodeValue).trim()}"
return false;
}
dom_default.copyPrivates(toEl, fromEl);
let isFocusedFormEl = focused && fromEl.isSameNode(focused) && dom_default.isFormInput(fromEl);
let focusedSelectChanged = isFocusedFormEl && this.isChangedSelect(fromEl, toEl);
if (isFocusedFormEl && fromEl.type !== "hidden" && !focusedSelectChanged) {
this.trackBefore("updated", fromEl, toEl);
dom_default.mergeFocusedInput(fromEl, toEl);
Expand Down
8 changes: 4 additions & 4 deletions priv/static/phoenix_live_view.min.js

Large diffs are not rendered by default.

0 comments on commit 0b9f921

Please sign in to comment.