PageSourceSearch

https://www.viola-group.com/wp-content/themes/viola/assets/lib/js/FakeSelect.js

js viola-group.com collected 2026-09-24 19:37:51 UTC 4,576 bytes, 170 lines download raw bytes

1;(function ( $, window, document, undefined ) {
2
3    var plugin_name = "FakeSelect";
4
5
6    var defaults = {
7
8        opened_class : 'opened',
9        blur_elem_id : 'portfolio_body_blur',
10        original_title : null,
11
12    };
13
14
15    function FakeSelect(elem, options) {
16
17        var t = this;
18        t.element = $(elem);
19        t._defaults = $.extend({}, defaults, options);
20        t._name = plugin_name;
21
22        t.event_names = {
23            'init'   : 'fs-inited',
24            'change' : 'fs-changed',
25            'open'   : 'fs-opened',
26            'close'  : 'fs-closed'
27        };
28
29        t.init();
30
31    }
32
33
34    FakeSelect.prototype.isMobile = function () {
35
36        if($(window).width() <= 640 || /Android|webOS|iPhone|iPad|iPod|BlackBerry|IEMobile|Opera Mini/i.test(navigator.userAgent)){
37            return true;
38        }
39        return false;
40
41    };
42
43
44    FakeSelect.prototype.init = function () {
45
46        var t = this;
47        t._defaults.original_title = t.element.find(".fake-select-title").text();
48        t.element.trigger(t.event_names['init']);
49
50        t.element.click(function (e) {
51            e.stopPropagation();
52            t.toggleAll();
53            return false;
54        });
55
56        t.element.find('.fake-option').click(function (e) {
57            e.stopPropagation();
58            if($(this).hasClass('empty')) {
59                t.deselectOption($(this));
60            }else{
61                t.selectOption($(this));
62            }
63
64            t.hideBlur();
65
66            return false;
67
68        });
69
70        $("#"+t._defaults.blur_elem_id).click(function (e) {
71            e.stopPropagation();
72            t.hideBlur();
73            t.closeCurrent();
74            return false;
75        });
76
77        $(document).click(function() {
78            t.closeCurrent();
79        });
80
81    };
82
83
84    FakeSelect.prototype.deselectOption = function (elem) {
85        var t = this;
86        t.element.find('.fake-option').each(function () {
87            $(this).removeClass("selected");
88        });
89        t.element.find(".fake-option.empty").addClass("hidden-elem");
90        var elem_title = t.element.find(".fake-select-title");
91        elem_title.text(t._defaults.original_title);
92        t.closeCurrent();
93        t.element.trigger(t.event_names['change'], [{selected_option: null}]);
94    };
95
96    FakeSelect.prototype.selectOption = function (selected_option) {
97        var t = this;
98        t.element.find('.fake-option').each(function () {
99            if($(this)!=selected_option){
100                $(this).removeClass("selected");
101            }
102        });
103        selected_option.addClass("selected");
104        var elem_title = t.element.find(".fake-select-title");
105        t.element.find(".fake-option.empty.hidden-elem").removeClass("hidden-elem");
106        elem_title.attr("data-original-txt", t._defaults.original_title);
107        elem_title.text(selected_option.text());
108        t.closeCurrent();
109        t.element.trigger(t.event_names['change'], [{selected_option: selected_option}]);
110    };
111
112    FakeSelect.prototype.closeCurrent = function () {
113
114        var t = this;
115        t.element.removeClass(t._defaults.opened_class);
116        t.element.trigger(t.event_names['close']);
117    };
118
119    FakeSelect.prototype.toggleAll = function () {
120
121        var t = this;
122        if(t.element.hasClass(t._defaults.opened_class)) {
123
124            $(".fake-select.opened").each(function () {
125                $(this).removeClass(t._defaults.opened_class);
126            });
127
128            t.hideBlur();
129
130            t.element.trigger(t.event_names['close']);
131
132        }else{
133
134            $(".fake-select.opened").each(function () {
135                if(t.element != $(this)) {
136                    $(this).removeClass(t._defaults.opened_class);
137                }
138            });
139
140            t.element.addClass(t._defaults.opened_class);
141            t.showBlur();
142            t.element.trigger(t.event_names['open']);
143        }
144
145    };
146
147    FakeSelect.prototype.showBlur = function () {
148        var t = this;
149        if(!t.isMobile()) {
150            $("#"+t._defaults.blur_elem_id).addClass("active");
151        }
152    };
153
154    FakeSelect.prototype.hideBlur = function () {
155        var t = this;
156        $("#"+t._defaults.blur_elem_id).removeClass("active");
157    };
158
159
160    $.fn[plugin_name] = function ( options ) {
161        return this.each(function () {
162            if (!$.data(this, 'plugin_' + plugin_name)) {
163                $.data(this, 'plugin_' + plugin_name,
164                    new FakeSelect( this, options ));
165            }
166        });
167    };
168
169
170})(jQuery, window, document );

Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.