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 +4 -4
- data/CHANGELOG.adoc +17 -0
- data/README.adoc +1 -1
- data/data/js/tabs.js +27 -3
- data/lib/asciidoctor/tabs/block.rb +6 -1
- data/lib/asciidoctor/tabs/version.rb +1 -1
- metadata +2 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: fd23b52dcb671b18e2fc149ff7c4c0f131acc7b36c5a83df0003c22cc341d8cd
|
4
|
+
data.tar.gz: 502e57c0df6a007731a21dce2f382f54ea3e940c6548e914e91aab25d233a995
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
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
data/data/js/tabs.js
CHANGED
@@ -2,8 +2,11 @@
|
|
2
2
|
;(function () {
|
3
3
|
'use strict'
|
4
4
|
|
5
|
-
var
|
6
|
-
|
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 &&
|
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
|
-
|
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
|
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.
|
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-
|
11
|
+
date: 2022-11-16 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: asciidoctor
|