@@ -124,25 +124,28 @@ $(document).ready(function() {
124
124
`
125
125
$('body').append(modalHtml);
126
126
127
- var delay = {{ hoverxref_modal_hover_delay }}, setTimeoutConst;
128
- $('.hoverxref').hover(function(event) {
129
- var parent = $(event.target).parent();
130
- console.debug('Event: ' + event + ' Element: ' + parent);
131
- event.preventDefault();
132
-
133
- setTimeoutConst = setTimeout(function(){
134
- showModal(parent);
135
- }, delay);
136
- }, function(){
137
- clearTimeout(setTimeoutConst);
138
- });
127
+ function onShow(modal, element) {
128
+ // This is a HACK to get some "smart" left position of the
129
+ // modal depending its size.
130
+ var container = $('#micromodal .modal__container')
131
+ // FIXME: this element only exists in sphinx-rtd-theme
132
+ var maxWidth = $('.wy-nav-content').innerWidth() - 150 || 650;
133
+ var contentLeft = $('.rst-content:first').position().left || 250;
134
+ if (container.width() >= maxWidth) {
135
+ var left = contentLeft - 150;
136
+ }
137
+ else {
138
+ var left = contentLeft + 150;
139
+ }
140
+ console.debug('Container left position: ' + left);
141
+ container.css('left', left);
142
+ }
139
143
140
144
function showModal(element) {
141
- var $origin = $(element);
142
- var project = $origin.data('project');
143
- var version = $origin.data('version');
144
- var doc = $origin.data('doc');
145
- var section = $origin.data('section');
145
+ var project = element.data('project');
146
+ var version = element.data('version');
147
+ var doc = element.data('doc');
148
+ var section = element.data('section');
146
149
console.debug('Data: project=' + project + ' version=' + version + ' doc=' + doc + ' section=' + section);
147
150
var url = '{{ hoverxref_tooltip_api_host }}' + '/api/v2/embed/?' + 'project=' + project + '&version=' + version + '&doc=' + doc + '§ion=' + section;
148
151
@@ -164,6 +167,7 @@ $(document).ready(function() {
164
167
$('#micromodal-title').html(a);
165
168
$('#micromodal-content').html(content);
166
169
MicroModal.show('micromodal', {
170
+ onShow: {{ hoverxref_modal_onshow_function|default('onShow', true) }},
167
171
openClass: '{{ hoverxref_modal_openclass }}',
168
172
disableScroll: {{ 'true' if hoverxref_modal_disable_scroll else 'false' }},
169
173
disableFocus: {{ 'true' if hoverxref_modal_disable_focus else 'false' }},
@@ -182,5 +186,18 @@ $(document).ready(function() {
182
186
};
183
187
});
184
188
};
189
+
190
+ var delay = {{ hoverxref_modal_hover_delay }}, setTimeoutConst;
191
+ $('.hoverxref').hover(function(event) {
192
+ var element = $(this);
193
+ console.debug('Event: ' + event + ' Element: ' + element);
194
+ event.preventDefault();
195
+
196
+ setTimeoutConst = setTimeout(function(){
197
+ showModal(element);
198
+ }, delay);
199
+ }, function(){
200
+ clearTimeout(setTimeoutConst);
201
+ });
185
202
{% endif %}
186
203
});
0 commit comments