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

Sign up to get free protection for your applications and to get access to all the features.
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