Ticket #4727: code.txt

File code.txt, 2.2 KB (added by lisaj, 10 years ago)
Line 
1        create: function(dialog) {
2            if (this.instances.length === 0) {
3                // prevent use of anchors and inputs
4                // we use a setTimeout in case the overlay is created from an
5                // event that we're going to be cancelling (see #2804)
6                setTimeout(function() {
7                    // handle $(el).dialog().dialog('close') (see #4065)
8                    if ($.ui.dialog.overlay.instances.length) {
9                        $(document).bind($.ui.dialog.overlay.events, function(event) {
10                            var parentDialog = $(event.target).parents('.ui-dialog');
11                            if (parentDialog.length > 0) {
12                                var parentDialogZIndex = parentDialog.css('zIndex') || 0;
13                                return parentDialogZIndex > $.ui.dialog.overlay.maxZ;
14                            }
15
16                            var aboveOverlay = false;
17                            $(event.target).parents().each(function() {
18                                var currentZ = $(this).css('zIndex') || 0;
19                                if (currentZ > $.ui.dialog.overlay.maxZ) {
20                                    aboveOverlay = true;
21                                    return;
22                                }
23                            });
24
25                            return aboveOverlay;
26                        });
27                    }
28                }, 1);
29
30                // allow closing by pressing the escape key
31                $(document).bind('keydown.dialog-overlay', function(event) {
32                    (dialog.options.closeOnEscape && event.keyCode
33                                                && event.keyCode == $.ui.keyCode.ESCAPE && dialog.close(event));
34                });
35
36                // handle window resize
37                $(window).bind('resize.dialog-overlay', $.ui.dialog.overlay.resize);
38            }
39
40            var $el = $('<div></div>').appendTo(document.body)
41                        .addClass('ui-widget-overlay').css({
42                            width: this.width(),
43                            height: this.height()
44                        });
45
46            (dialog.options.bgiframe && $.fn.bgiframe && $el.bgiframe());
47
48            this.instances.push($el);
49            return $el;
50        }