asciidoctor-tabs 1.0.0.alpha.5 → 1.0.0.alpha.6

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 9a220a5fcabda931f52d5ca7d6fbf4b3c459eb258c6694288cd147b5db58f68b
4
- data.tar.gz: 20b389528d89b8e450e06dedfc0e9dc4944c9672854a12469b4e15189dfd8868
3
+ metadata.gz: fd23b52dcb671b18e2fc149ff7c4c0f131acc7b36c5a83df0003c22cc341d8cd
4
+ data.tar.gz: 502e57c0df6a007731a21dce2f382f54ea3e940c6548e914e91aab25d233a995
5
5
  SHA512:
6
- metadata.gz: 641e2de8bba5626ba461fca9b5b212769bf4175724d02f6fc56d2f891395dffdd9072aa65224530fc0ec26e84d35ff21026097aa0f57a37d7e81a957dbf14c6d
7
- data.tar.gz: 5d723e02e0b9a4255715ee4daae0502900a1598e804dbf08801dd9e7acc91a78e2c3b9451a95a4b1d1d6a1060e41ef2c91d6527c3b3e278940f8b27045f41d0a
6
+ metadata.gz: 41ddf35603690caa50d3685eb398ebbfd65ecc13630827731ec11493667a2bcd4db8616e530ae11cb8f05fa450d258b9e734ad4ee10fbe1bcaaf1c256ee681e7
7
+ data.tar.gz: ac3f2b5a3d44a8209436955dd5ebb74eff9e2bfbc0f107e572488859de78cb133817db3c5362c09198aee71b9381dfa56646e036ebd885b5cf05231b23231a7b
data/CHANGELOG.adoc CHANGED
@@ -4,6 +4,23 @@
4
4
  This document provides a curated view of the changes to Asciidoctor Tabs per release.
5
5
  For a detailed view of what has changed, refer to the {url-repo}/commits/main[commit history] on GitHub.
6
6
 
7
+ == 1.0.0-alpha.6 (2022-11-16) - @mojavelinux
8
+
9
+ === Added
10
+
11
+ * Honor title on tabs block; apply normal subs to it (#26)
12
+ * Clear location hash (URL fragment) when a tab is clicked (#24)
13
+ * Register ref for each tab so its ID can be used as target of xref (#24)
14
+ * Activate tab when selected from an internal xref (#24)
15
+
16
+ === Fixed
17
+
18
+ * Decode fragment from URL so it can be matched against tab ID (#27)
19
+
20
+ === Details
21
+
22
+ {url-repo}/releases/tag/v1.0.0-alpha.6[git tag] | {url-repo}/compare/v1.0.0-alpha.5\...v1.0.0-alpha.6[full diff]
23
+
7
24
  == 1.0.0-alpha.5 (2022-10-23) - @mojavelinux
8
25
 
9
26
  === Added
data/README.adoc CHANGED
@@ -1,6 +1,6 @@
1
1
  = Asciidoctor Tabs
2
2
  Dan Allen <https://github.com/mojavelinux[@mojavelinux]>
3
- v1.0.0-alpha.5, 2022-10-23
3
+ v1.0.0-alpha.6, 2022-11-16
4
4
  :idprefix:
5
5
  :idseparator: -
6
6
  ifndef::env-github[:icons: font]
data/data/js/tabs.js CHANGED
@@ -2,8 +2,11 @@
2
2
  ;(function () {
3
3
  'use strict'
4
4
 
5
- var hash = window.location.hash
6
- find('.tabset').forEach(function (tabset) {
5
+ var tabsets = find('.tabset')
6
+ if (!tabsets.length) return
7
+ var fragment = decodeFragment(window.location.hash)
8
+
9
+ tabsets.forEach(function (tabset) {
7
10
  var active
8
11
  var tabs = tabset.querySelector('.tabs')
9
12
  if (tabs) {
@@ -14,7 +17,7 @@
14
17
  var pane = tabset.querySelector('.tab-pane[aria-labelledby~="' + id + '"]')
15
18
  if (!pane) return
16
19
  if (!idx) first = { tab: tab, pane: pane }
17
- if (!active && hash === '#' + id && (active = true)) {
20
+ if (!active && fragment === id && (active = true)) {
18
21
  tab.classList.add('is-active')
19
22
  if (pane) pane.classList.add('is-active')
20
23
  } else if (!idx) {
@@ -31,15 +34,36 @@
31
34
  tabset.classList.remove('is-loading')
32
35
  })
33
36
 
37
+ tabsets = undefined
38
+ window.addEventListener('hashchange', onHashChange)
39
+
34
40
  function activateTab (e) {
35
41
  var tab = this.tab
36
42
  var pane = this.pane
37
43
  find('.tabs li, .tab-pane', this.tabset).forEach(function (it) {
38
44
  it === tab || it === pane ? it.classList.add('is-active') : it.classList.remove('is-active')
39
45
  })
46
+ if (!e) return
47
+ var hashIdx = window.location.hash ? window.location.href.indexOf('#') : -1
48
+ if (~hashIdx) window.history.replaceState(null, '', window.location.href.slice(0, hashIdx))
40
49
  e.preventDefault()
41
50
  }
42
51
 
52
+ function decodeFragment (hash) {
53
+ return hash && (~hash.indexOf('%') ? decodeURIComponent(hash.slice(1)) : hash.slice(1))
54
+ }
55
+
56
+ function onHashChange () {
57
+ var id = decodeFragment(window.location.hash)
58
+ if (!id) return
59
+ var tab = document.getElementById(id)
60
+ if (!(tab && document.querySelector('.tabset .tabs [id="' + id + '"]'))) return
61
+ if (tab.tagName === 'A') tab = tab.parentNode
62
+ var tabset = tab.closest('.tabset')
63
+ var pane = tabset.querySelector('.tab-pane[aria-labelledby~="' + id + '"]')
64
+ activateTab.call({ tabset: tabset, tab: tab, pane: pane })
65
+ }
66
+
43
67
  function find (selector, from) {
44
68
  return Array.prototype.slice.call((from || document).querySelectorAll(selector))
45
69
  }
@@ -19,6 +19,9 @@ module Asciidoctor
19
19
  tabset_number = doc.counter 'tabset-number'
20
20
  tabs_id = attrs['id'] || (generate_id %(tabset #{tabset_number}), doc)
21
21
  parent << (create_html_fragment parent, %(<div id="#{tabs_id}" class="tabset is-loading">))
22
+ if (title = attrs['title'])
23
+ parent << (create_html_fragment parent, %(<div class="title">#{parent.apply_subs title}</div>))
24
+ end
22
25
  (tabs = create_list parent, :ulist).add_role 'tabs'
23
26
  panes = {}
24
27
  set_id_on_tab = (doc.backend == 'html5') || (list_item_supports_id? doc)
@@ -26,7 +29,9 @@ module Asciidoctor
26
29
  tab_ids = labels.map do |tab|
27
30
  tabs << tab
28
31
  tab_id = generate_id tab.text, doc, tabs_id
29
- set_id_on_tab ? (tab.id = tab_id) : (tab.text = %([[#{tab_id}]]#{tab.instance_variable_get :@text}))
32
+ tab_source_text = tab.instance_variable_get :@text
33
+ set_id_on_tab ? (tab.id = tab_id) : (tab.text = %([[#{tab_id}]]#{tab_source_text}))
34
+ (doc.register :refs, [tab_id, tab]).set_attr 'reftext', tab_source_text
30
35
  tab_id
31
36
  end
32
37
  if content
@@ -2,6 +2,6 @@
2
2
 
3
3
  module Asciidoctor
4
4
  module Tabs
5
- VERSION = '1.0.0.alpha.5'
5
+ VERSION = '1.0.0.alpha.6'
6
6
  end
7
7
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: asciidoctor-tabs
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.0.0.alpha.5
4
+ version: 1.0.0.alpha.6
5
5
  platform: ruby
6
6
  authors:
7
7
  - Dan Allen
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2022-10-23 00:00:00.000000000 Z
11
+ date: 2022-11-16 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: asciidoctor