reflex_behaviors 0.0.3 → 0.0.4
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 +4 -4
- data/Gemfile.lock +12 -7
- data/README.md +1 -1
- data/app/assets/builds/reflex_behaviors.js +133 -10
- data/app/assets/builds/reflex_behaviors.js.map +4 -4
- data/app/javascript/devtools/dom.js +34 -0
- data/app/javascript/devtools/elements/devtool_element.js +62 -0
- data/app/javascript/devtools/elements/supervisor_element.js +113 -0
- data/app/javascript/devtools/elements/tooltip_element.js +102 -0
- data/app/javascript/devtools/index.js +3 -115
- data/app/javascript/devtools/supervisor.js +83 -0
- data/app/javascript/devtools/toggle.js +150 -0
- data/app/javascript/elements/reflex_element.js +12 -0
- data/app/javascript/elements/toggle_trigger_element.js +41 -42
- data/app/javascript/index.js +1 -5
- data/lib/reflex_behaviors/engine.rb +0 -1
- data/lib/reflex_behaviors/version.rb +1 -1
- data/package.json +1 -1
- data/tags +1069 -853
- data/yarn.lock +138 -138
- metadata +8 -7
- data/app/assets/config/reflex_behaviors_manifest.js +0 -1
- data/app/assets/stylesheets/devtools.css +0 -51
- data/app/assets/stylesheets/reflex_behaviors.css +0 -4
- data/app/assets/stylesheets/toggle.css +0 -56
- data/app/assets/stylesheets/tooltip.css +0 -18
@@ -1,48 +1,27 @@
|
|
1
1
|
import ReflexElement from './reflex_element'
|
2
|
-
import
|
2
|
+
import DevtoolSupervisor from '../devtools/supervisor'
|
3
|
+
import ToggleDevtool from '../devtools/toggle'
|
3
4
|
|
4
5
|
export default class ToggleTriggerElement extends ReflexElement {
|
5
|
-
|
6
|
-
super()
|
7
|
-
|
8
|
-
this.addEventListener('mouseenter', event => {
|
9
|
-
if (devtools.isEnabled('toggle')) {
|
10
|
-
clearTimeout(this.mouseLeaveTimeout)
|
11
|
-
event.target.target.classList.add('debug')
|
12
|
-
event.target.showDebugTooltips()
|
13
|
-
}
|
14
|
-
})
|
6
|
+
connectedCallback () {
|
7
|
+
super.connectedCallback()
|
15
8
|
|
16
|
-
|
17
|
-
|
18
|
-
clearTimeout(this.mouseLeaveTimeout)
|
19
|
-
this.mouseLeaveTimeout = setTimeout(() => {
|
20
|
-
event.target.target.classList.remove('debug')
|
21
|
-
document
|
22
|
-
.querySelectorAll('.reflex-behaviors-tooltip')
|
23
|
-
.forEach(tooltip => tooltip.remove())
|
24
|
-
}, 250)
|
25
|
-
}
|
26
|
-
})
|
27
|
-
}
|
9
|
+
const mouseenter = () => this.devtool.show()
|
10
|
+
const mouseleave = () => this.devtool.hide()
|
28
11
|
|
29
|
-
|
30
|
-
|
31
|
-
|
32
|
-
|
33
|
-
let body = this.viewStack.map(path => {
|
34
|
-
shared = shared || path === sharedViewPath
|
35
|
-
return `<div class='${shared ? 'shared' : null}'>${path}<div>`
|
12
|
+
document.addEventListener('reflex-behaviors:devtools-start', () => {
|
13
|
+
this.devtool = new ToggleDevtool(this)
|
14
|
+
this.addEventListener('mouseenter', mouseenter)
|
15
|
+
this.addEventListener('mouseleave', mouseleave)
|
36
16
|
})
|
37
|
-
devtools.tooltip(this, title, body.join(''), 'trigger', 'top')
|
38
17
|
|
39
|
-
|
40
|
-
|
41
|
-
|
42
|
-
|
43
|
-
return `<div class='${shared ? 'shared' : null}'>${path}<div>`
|
18
|
+
document.addEventListener('reflex-behaviors:devtools-stop', () => {
|
19
|
+
this.removeEventListener('mouseenter', mouseenter)
|
20
|
+
this.removeEventListener('mouseleave', mouseleave)
|
21
|
+
delete this.devtool
|
44
22
|
})
|
45
|
-
|
23
|
+
|
24
|
+
DevtoolSupervisor.restart()
|
46
25
|
}
|
47
26
|
|
48
27
|
collapse () {
|
@@ -54,19 +33,38 @@ export default class ToggleTriggerElement extends ReflexElement {
|
|
54
33
|
}
|
55
34
|
}
|
56
35
|
|
57
|
-
get
|
58
|
-
|
59
|
-
|
36
|
+
get sharedViews () {
|
37
|
+
if (!this.target) return []
|
38
|
+
const reducer = (memo, view) => {
|
39
|
+
if (this.target.viewStack.includes(view)) memo.push(view)
|
40
|
+
return memo
|
41
|
+
}
|
42
|
+
return this.viewStack.reduce(reducer.bind(this), [])
|
60
43
|
}
|
61
44
|
|
62
|
-
get
|
63
|
-
|
45
|
+
get renderingInfo () {
|
46
|
+
if (!this.dataset.render) return {}
|
47
|
+
return JSON.parse(this.dataset.render)
|
48
|
+
}
|
49
|
+
|
50
|
+
get renderingPartial () {
|
51
|
+
return this.renderingInfo.partial
|
52
|
+
}
|
53
|
+
|
54
|
+
get renderingElement () {
|
55
|
+
const { id } = this.renderingInfo
|
56
|
+
if (!id) return null
|
57
|
+
return document.getElementById(id)
|
64
58
|
}
|
65
59
|
|
66
60
|
get expanded () {
|
67
61
|
return this.getAttribute('aria-expanded') === 'true'
|
68
62
|
}
|
69
63
|
|
64
|
+
get controls () {
|
65
|
+
return this.getAttribute('aria-controls')
|
66
|
+
}
|
67
|
+
|
70
68
|
get target () {
|
71
69
|
return document.getElementById(this.controls)
|
72
70
|
}
|
@@ -94,6 +92,7 @@ addEventListener(
|
|
94
92
|
)
|
95
93
|
|
96
94
|
addEventListener('click', event => {
|
95
|
+
if (event.target.tagName.match(/reflex-behaviors-devtool/i)) return
|
97
96
|
setTimeout(() => {
|
98
97
|
const selector =
|
99
98
|
'toggle-trigger[aria-controls][aria-expanded="true"][data-auto-collapse="true"]'
|
data/app/javascript/index.js
CHANGED
data/package.json
CHANGED
@@ -1,6 +1,6 @@
|
|
1
1
|
{
|
2
2
|
"name": "reflex_behaviors",
|
3
|
-
"version": "0.0.
|
3
|
+
"version": "0.0.3",
|
4
4
|
"description": "Pre-built easy to use reactive TurboReflex behaviors for Rails/Hotwire apps.",
|
5
5
|
"main": "app/javascript/index.js",
|
6
6
|
"repository": "https://github.com/hopsoft/reflex_behaviors",
|