From 7b79dbf9358d0229397798c65daea30adac8a611 Mon Sep 17 00:00:00 2001 From: shibao Date: Sun, 12 Sep 2021 18:55:03 -0400 Subject: [PATCH] add maintainattrs hook for textareas --- assets/js/app.js | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/assets/js/app.js b/assets/js/app.js index d0664526..b1528d7e 100644 --- a/assets/js/app.js +++ b/assets/js/app.js @@ -17,8 +17,15 @@ import {Socket} from "phoenix" import topbar from "topbar" import {LiveSocket} from "phoenix_live_view" +let Hooks = {}; +Hooks.MaintainAttrs = { + attrs(){ return this.el.getAttribute("data-attrs").split(", ") }, + beforeUpdate(){ this.prevAttrs = this.attrs().map(name => [name, this.el.getAttribute(name)]) }, + updated(){ this.prevAttrs.forEach(([name, val]) => this.el.setAttribute(name, val)) } +}; + let csrfToken = document.querySelector("meta[name='csrf-token']").getAttribute("content") -let liveSocket = new LiveSocket("/live", Socket, {params: {_csrf_token: csrfToken}}) +let liveSocket = new LiveSocket("/live", Socket, {hooks: Hooks, params: {_csrf_token: csrfToken}}) // Show progress bar on live navigation and form submits topbar.config({barColors: {0: "#29d"}, shadowColor: "rgba(0, 0, 0, .3)"})