Sha256: cc34cb2192f48b6b1ccb0d1651b4436e7778dfe90ca6f700c3f667ee36acbb40

Contents?: true

Size: 1.24 KB

Versions: 7

Compression:

Stored size: 1.24 KB

Contents

function bindTableLinks() {
  const keycodes = { space: 32, enter: 13 }

  function visitDataUrl(event) {
    /** @type {HTMLTableRowElement} */
    const target = event.target.classList.contains("js-table-row")
      ? event.target
      : event.target.closest('.js-table-row')

    if (!target) {
      return
    }

    if (event.type === "click" ||
        event.keyCode === keycodes.space ||
        event.keyCode === keycodes.enter) {

      if (event.target.href) {
        return
      }

      const dataUrl = target.getAttribute("data-url")
      const selection = window.getSelection().toString()
      if (selection.length === 0 && dataUrl) {
        const delegate = target.querySelector(`[href="${dataUrl}"]`)
        if (delegate) {
          delegate.click()
        } else {
          window.location = dataUrl
        }
      }
    }
  }

  const tables = [...document.getElementsByTagName("table")]
  tables.forEach(
    /** @type {HTMLTableElement} */ (table) => {
    table.addEventListener("click", visitDataUrl)
    table.addEventListener("keydown", visitDataUrl)
  })
}

<%- if options[:skip_turbolinks] -%>
$(document).ready(function () {
<%- else -%>
document.addEventListener('turbolinks:load', function () {
<%- end -%>
  bindTableLinks()
})

Version data entries

7 entries across 7 versions & 1 rubygems

Version Path
kowl-0.0.7 lib/kowl/templates/app/javascript/administrate/components/table.js.tt
kowl-0.0.6 lib/kowl/templates/app/javascript/administrate/components/table.js.tt
kowl-0.0.5 lib/kowl/templates/app/javascript/administrate/components/table.js.tt
kowl-0.0.4 lib/kowl/templates/app/javascript/administrate/components/table.js.tt
kowl-0.0.3 lib/kowl/templates/app/javascript/administrate/components/table.js.tt
kowl-0.0.2 lib/kowl/templates/app/javascript/administrate/components/table.js.tt
kowl-0.0.1 lib/kowl/templates/app/javascript/administrate/components/table.js.tt