Sha256: ee0c610e2a1361740460dac0d54ac354fc55f727fd7b4df89a0759d312d1280b

Contents?: true

Size: 1.12 KB

Versions: 17

Compression:

Stored size: 1.12 KB

Contents

function isPageDirty() {
  return $("#element_area").find("alchemy-element-editor.dirty").length > 0
}

function checkPageDirtyness(element) {
  let callback = () => {}

  if ($(element).is("form")) {
    callback = function () {
      const $form = $(
        `<form action="${element.action}" method="POST" style="display: none" />`
      )
      $form.append($(element).find("input"))
      $form.appendTo("body")

      Alchemy.pleaseWaitOverlay()
      $form.submit()
    }
  } else if ($(element).is("a")) {
    callback = () => Turbo.visit(element.pathname)
  }

  if (isPageDirty()) {
    Alchemy.openConfirmDialog(Alchemy.t("page_dirty_notice"), {
      title: Alchemy.t("warning"),
      ok_label: Alchemy.t("ok"),
      cancel_label: Alchemy.t("cancel"),
      on_ok: function () {
        window.onbeforeunload = void 0
        callback()
      }
    })
    return false
  }
  return true
}

function PageLeaveObserver() {
  $("#main_navi a").on("click", function (event) {
    if (!checkPageDirtyness(event.currentTarget)) {
      event.preventDefault()
    }
  })
}

export default {
  checkPageDirtyness,
  PageLeaveObserver
}

Version data entries

17 entries across 17 versions & 1 rubygems

Version Path
alchemy_cms-7.1.13 app/javascript/alchemy_admin/dirty.js
alchemy_cms-7.1.12 app/javascript/alchemy_admin/dirty.js
alchemy_cms-7.1.11 app/javascript/alchemy_admin/dirty.js
alchemy_cms-7.1.10 app/javascript/alchemy_admin/dirty.js
alchemy_cms-7.1.9 app/javascript/alchemy_admin/dirty.js
alchemy_cms-7.1.8 app/javascript/alchemy_admin/dirty.js
alchemy_cms-7.1.7 app/javascript/alchemy_admin/dirty.js
alchemy_cms-7.1.6 app/javascript/alchemy_admin/dirty.js
alchemy_cms-7.1.5 app/javascript/alchemy_admin/dirty.js
alchemy_cms-7.1.4 app/javascript/alchemy_admin/dirty.js
alchemy_cms-7.1.3 app/javascript/alchemy_admin/dirty.js
alchemy_cms-7.1.2 app/javascript/alchemy_admin/dirty.js
alchemy_cms-7.1.1 app/javascript/alchemy_admin/dirty.js
alchemy_cms-7.1.0 app/javascript/alchemy_admin/dirty.js
alchemy_cms-7.1.0.pre.rc1 app/javascript/alchemy_admin/dirty.js
alchemy_cms-7.1.0.pre.b2 app/javascript/alchemy_admin/dirty.js
alchemy_cms-7.1.0.pre.b1 app/javascript/alchemy_admin/dirty.js