coupdoeil 1.0.0.pre.alpha.2 → 1.0.0.pre.alpha.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/CHANGELOG.md +7 -0
- data/app/assets/javascripts/coupdoeil.js +95 -104
- data/app/assets/javascripts/coupdoeil.min.js +1 -1
- data/app/assets/javascripts/coupdoeil.min.js.map +1 -1
- data/app/javascript/coupdoeil/hovercard/closing.js +0 -3
- data/app/javascript/coupdoeil/hovercard/opening.js +27 -29
- data/app/javascript/coupdoeil/hovercard/positioning.js +0 -1
- data/app/models/coupdoeil/hovercard/options_set.rb +1 -3
- data/lib/coupdoeil/version.rb +1 -1
- data/lib/generators/coupdoeil/install/templates/layout.html.erb.tt +0 -1
- metadata +51 -3
@@ -16,7 +16,6 @@ export function cancelOpenCloseActions(controller) {
|
|
16
16
|
}
|
17
17
|
|
18
18
|
function cancelOpening(controller) {
|
19
|
-
console.log('deleting openingHovercard: ', controller.coupdoeilElement.uniqueId)
|
20
19
|
delete controller.coupdoeilElement.openingHovercard
|
21
20
|
}
|
22
21
|
|
@@ -27,8 +26,6 @@ export function cancelCloseRequest(controller) {
|
|
27
26
|
}
|
28
27
|
|
29
28
|
export function closeNow(controller, allowAnimation = true) {
|
30
|
-
console.log('closing: ', controller.coupdoeilElement.uniqueId)
|
31
|
-
console.log({ closing: controller.closing, isClosed: controller.isClosed && !controller.coupdoeilElement.openingHovercard })
|
32
29
|
if (controller.closing || (controller.isClosed && !controller.coupdoeilElement.openingHovercard)) return
|
33
30
|
|
34
31
|
controller.closing = true
|
@@ -48,7 +48,6 @@ async function loadHovercardContentHTML(controller, options, delayOptions) {
|
|
48
48
|
}
|
49
49
|
|
50
50
|
export async function openHovercard(controller, { parent }) {
|
51
|
-
console.log('opening: ', controller.coupdoeilElement.uniqueId)
|
52
51
|
if (controller.isOpen) {
|
53
52
|
return cancelCloseRequest(controller)
|
54
53
|
}
|
@@ -84,40 +83,34 @@ async function display(controller, options) {
|
|
84
83
|
controller.card.dataset.animation = options.animation
|
85
84
|
}
|
86
85
|
|
87
|
-
|
88
|
-
|
89
|
-
return clearHovercard(controller)
|
90
|
-
}
|
91
|
-
|
92
|
-
controller.card.style.opacity = '0'
|
93
|
-
controller.card.classList.remove('hidden')
|
94
|
-
|
95
|
-
requestAnimationFrame(async () => {
|
96
|
-
if (!controller.coupdoeilElement.openingHovercard) {
|
97
|
-
return clearHovercard(controller)
|
98
|
-
}
|
99
|
-
|
100
|
-
await positionHovercard(controller.coupdoeilElement, controller.card, options)
|
101
|
-
|
102
|
-
controller.card.classList.add('hidden')
|
103
|
-
controller.card.style.removeProperty('opacity')
|
86
|
+
executeNextFrameIfStillOpening(controller, async () => {
|
87
|
+
await positionHovercard(controller.coupdoeilElement, controller.card, options)
|
104
88
|
|
105
|
-
|
106
|
-
|
107
|
-
|
108
|
-
}
|
89
|
+
// see buildHovercardElement() about next 2 lines
|
90
|
+
controller.card.classList.add('hidden')
|
91
|
+
controller.card.style.removeProperty('visibility')
|
109
92
|
|
110
|
-
|
111
|
-
|
112
|
-
|
113
|
-
|
93
|
+
executeNextFrameIfStillOpening(controller, async () => {
|
94
|
+
// // adding again the card to make sure it is in the map, could be better
|
95
|
+
addToCurrents(controller.coupdoeilElement)
|
96
|
+
delete controller.coupdoeilElement.openingHovercard
|
97
|
+
controller.coupdoeilElement.dataset.hovercardOpen = true
|
114
98
|
|
115
|
-
|
116
|
-
})
|
99
|
+
await enter(controller.card, 'hovercard')
|
117
100
|
})
|
118
101
|
})
|
119
102
|
}
|
120
103
|
|
104
|
+
function executeNextFrameIfStillOpening(controller, callback) {
|
105
|
+
requestAnimationFrame(() => {
|
106
|
+
if (controller.coupdoeilElement.openingHovercard) {
|
107
|
+
callback.call()
|
108
|
+
} else {
|
109
|
+
clearHovercard(controller)
|
110
|
+
}
|
111
|
+
})
|
112
|
+
}
|
113
|
+
|
121
114
|
function getDelayOptionsForController(controller) {
|
122
115
|
if (triggeredOnClick(controller)) {
|
123
116
|
return { fetch: 0, opening: 0 }
|
@@ -135,10 +128,15 @@ function getDelayOptionsForController(controller) {
|
|
135
128
|
function buildHovercardElement(controller, options) {
|
136
129
|
const el = document.createElement('div')
|
137
130
|
el.setAttribute('role', 'dialog')
|
138
|
-
el.classList.add(HOVERCARD_CLASS_NAME
|
131
|
+
el.classList.add(HOVERCARD_CLASS_NAME)
|
139
132
|
el.style.cssText = 'position: absolute; left: 0; top: 0;'
|
140
133
|
el.innerHTML = getHovercardContentHTML(controller)
|
141
134
|
el.controller = controller
|
142
135
|
el.dataset.placement = options.placement
|
136
|
+
|
137
|
+
// Initial style is not .hidden (no display: none;) and visibility: 'hidden'; so the card is inserted
|
138
|
+
// in DOM the without being visible.
|
139
|
+
// This allows the browser to compute its actual size so the positioning is computed correctly.
|
140
|
+
el.style.visibility = 'hidden'
|
143
141
|
return el
|
144
142
|
}
|
@@ -1,7 +1,5 @@
|
|
1
1
|
# frozen_string_literal: true
|
2
2
|
|
3
|
-
# frozen_string_literal: true
|
4
|
-
|
5
3
|
module Coupdoeil
|
6
4
|
class Hovercard
|
7
5
|
class OptionsSet
|
@@ -19,7 +17,7 @@ module Coupdoeil
|
|
19
17
|
attr_reader :options
|
20
18
|
|
21
19
|
def dup = OptionsSet.new(options.deep_dup)
|
22
|
-
def preload? = options[:loading] ==
|
20
|
+
def preload? = options[:loading].to_s == "preload"
|
23
21
|
def custom_animation? = options[:animation].to_s == "custom"
|
24
22
|
def to_h = options
|
25
23
|
|
data/lib/coupdoeil/version.rb
CHANGED
metadata
CHANGED
@@ -1,16 +1,16 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: coupdoeil
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.0.0.pre.alpha.
|
4
|
+
version: 1.0.0.pre.alpha.4
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- PageHey
|
8
8
|
bindir: bin
|
9
9
|
cert_chain: []
|
10
|
-
date: 2025-05-
|
10
|
+
date: 2025-05-22 00:00:00.000000000 Z
|
11
11
|
dependencies:
|
12
12
|
- !ruby/object:Gem::Dependency
|
13
|
-
name:
|
13
|
+
name: actionpack
|
14
14
|
requirement: !ruby/object:Gem::Requirement
|
15
15
|
requirements:
|
16
16
|
- - ">="
|
@@ -23,6 +23,54 @@ dependencies:
|
|
23
23
|
- - ">="
|
24
24
|
- !ruby/object:Gem::Version
|
25
25
|
version: 7.1.0
|
26
|
+
- !ruby/object:Gem::Dependency
|
27
|
+
name: activemodel
|
28
|
+
requirement: !ruby/object:Gem::Requirement
|
29
|
+
requirements:
|
30
|
+
- - ">="
|
31
|
+
- !ruby/object:Gem::Version
|
32
|
+
version: 7.1.0
|
33
|
+
type: :runtime
|
34
|
+
prerelease: false
|
35
|
+
version_requirements: !ruby/object:Gem::Requirement
|
36
|
+
requirements:
|
37
|
+
- - ">="
|
38
|
+
- !ruby/object:Gem::Version
|
39
|
+
version: 7.1.0
|
40
|
+
- !ruby/object:Gem::Dependency
|
41
|
+
name: railties
|
42
|
+
requirement: !ruby/object:Gem::Requirement
|
43
|
+
requirements:
|
44
|
+
- - ">="
|
45
|
+
- !ruby/object:Gem::Version
|
46
|
+
version: 7.1.0
|
47
|
+
type: :runtime
|
48
|
+
prerelease: false
|
49
|
+
version_requirements: !ruby/object:Gem::Requirement
|
50
|
+
requirements:
|
51
|
+
- - ">="
|
52
|
+
- !ruby/object:Gem::Version
|
53
|
+
version: 7.1.0
|
54
|
+
- !ruby/object:Gem::Dependency
|
55
|
+
name: globalid
|
56
|
+
requirement: !ruby/object:Gem::Requirement
|
57
|
+
requirements:
|
58
|
+
- - "~>"
|
59
|
+
- !ruby/object:Gem::Version
|
60
|
+
version: '1.2'
|
61
|
+
- - ">="
|
62
|
+
- !ruby/object:Gem::Version
|
63
|
+
version: 1.2.1
|
64
|
+
type: :runtime
|
65
|
+
prerelease: false
|
66
|
+
version_requirements: !ruby/object:Gem::Requirement
|
67
|
+
requirements:
|
68
|
+
- - "~>"
|
69
|
+
- !ruby/object:Gem::Version
|
70
|
+
version: '1.2'
|
71
|
+
- - ">="
|
72
|
+
- !ruby/object:Gem::Version
|
73
|
+
version: 1.2.1
|
26
74
|
- !ruby/object:Gem::Dependency
|
27
75
|
name: jekyll
|
28
76
|
requirement: !ruby/object:Gem::Requirement
|