var tribe_dropdowns = window.tribe_dropdowns || {}; ( function( $, obj, _ ) { 'use strict'; obj.selector = { dropdown: '.tribe-dropdown', created: '.tribe-dropdown-created', searchField: '.select2-search__field', }; // Setup a Dependent $.fn.tribe_dropdowns = function() { obj.dropdown( this, {} ); return this; }; obj.freefrom_create_search_choice = function( params ) { if ( 'string' !== typeof params.term ) { return null; } var term = params.term.trim(); if ( '' === term ) { return null; } var args = this.options.options; var $select = args.$select; if ( term.match( args.regexToken ) && ( ! $select.is( '[data-int]' ) || ( $select.is( '[data-int]' ) && term.match( /\d+/ ) ) ) ) { var choice = { id: term, text: term, new: true }; if ( $select.is( '[data-create-choice-template]' ) ) { choice.text = _.template( $select.data( 'createChoiceTemplate' ) )( { term: term } ); } return choice; } return null; }; /** * Better Search ID for Select2, compatible with WordPress ID from WP_Query * * @param {object|string} e Searched object or the actual ID * @return {string} ID of the object */ obj.search_id = function( e ) { var id = undefined; if ( 'undefined' !== typeof e.id ) { id = e.id; } else if ( 'undefined' !== typeof e.ID ) { id = e.ID; } else if ( 'undefined' !== typeof e.value ) { id = e.value; } return undefined === e ? undefined : id; }; /** * Better way of matching results * * @param {string} term Which term we are searching for * @param {string} text Search here * @return {boolean} */ obj.matcher = function( params, data ) { // If there are no search terms, return all of the data if ( 'string' !== typeof params.term || params.term.trim() === '') { return data; } // Do not display the item if there is no 'text' property if ( typeof data.text === 'undefined' ) { return null; } var term = params.term.trim(); var text = data.text; var $select = $( data.element ).closest( 'select' ); var args = $select.data( 'dropdown' ); var result = text.toUpperCase().indexOf( term.toUpperCase() ) !== -1; if ( ! result && 'undefined' !== typeof args.tags ){ var possible = _.where( args.tags, { text: text } ); if ( args.tags.length > 0 && _.isObject( possible ) ){ var test_value = obj.search_id( possible[0] ); result = test_value.toUpperCase().indexOf( term.toUpperCase() ) !== -1; } } return result; }; /** * If the element used as the basis of a dropdown specifies one or more numeric/text * identifiers in its val attribute, then use those to preselect the appropriate options. * * @param {object} $select * @param {function} make_selection */ obj.init_selection = function( $select, make_selection ) { var isMultiple = $select.is( '[multiple]' ); var options = $select.data( 'dropdown' ); var currentValues = $select.val().split( options.regexSplit ); var selectedItems = []; $( currentValues ).each( function( index, value ) { // eslint-disable-line no-unused-vars var searchFor = { id: this, text: this }; var data = options.ajax ? $select.data( 'options' ) : options.data; var locatedItem = find_item( searchFor, data ); if ( locatedItem && locatedItem.selected ) { selectedItems.push( locatedItem ); } } ); if ( selectedItems.length && isMultiple ) { make_selection( selectedItems ); } else if ( selectedItems.length ) { make_selection( selectedItems[ 0 ] ); } else { make_selection( false ); return; } }; /** * Searches array 'haystack' for objects that match 'description'. * * The 'description' object should take the form { id: number, text: string }. The first * object within the haystack that matches one of those two properties will be returned. * * If objects contain an array named 'children', then that array will also be searched. * * @param {Object} description * @param {Array} haystack * * @return {Object|boolean} */ function find_item( description, haystack ) { if ( ! _.isArray( haystack ) ) { return false; } for ( var index in haystack ) { var possible_match = haystack[ index ]; if ( possible_match.hasOwnProperty( 'id' ) && possible_match.id == description.id ) { // eslint-disable-line no-prototype-builtins,eqeqeq,max-len return possible_match; } if ( possible_match.hasOwnProperty( 'text' ) && possible_match.text == description.text ) { // eslint-disable-line no-prototype-builtins,eqeqeq,max-len return possible_match; } if ( possible_match.hasOwnProperty( 'children' ) && _.isArray( possible_match.children ) ) { // eslint-disable-line no-prototype-builtins,max-len var subsearch = find_item( description, possible_match.children ); if ( subsearch ) { return subsearch; } } } return false; } obj.getSelectClasses = function( $select ) { var classesToRemove = [ 'select2-hidden-accessible', 'hide-before-select2-init', ]; var originalClasses = $select.attr( 'class' ).split( /\s+/ ); return _.difference( originalClasses, classesToRemove ); }; obj.element = function( field, args ) { var $select = $( field ); var args = $.extend( {}, args ); // eslint-disable-line no-redeclare var carryOverData = [ // eslint-disable-line no-unused-vars 'depends', 'condition', 'conditionNot', 'condition-not', 'conditionNotEmpty', 'condition-not-empty', 'conditionEmpty', 'condition-empty', 'conditionIsNumeric', 'condition-is-numeric', 'conditionIsNotNumeric', 'condition-is-not-numeric', 'conditionChecked', 'condition-is-checked', ]; var $container; // Add a class for dropdown created $select.addClass( obj.selector.created.className() ); // args.debug = true; // For Reference we save the jQuery element as an Arg. args.$select = $select; // Auto define the Width of the Select2. args.dropdownAutoWidth = true; args.width = 'resolve'; // CSS for the container args.containerCss = {}; // Only apply visibility when it's a Visible Select2. if ( $select.is( ':visible' ) ) { args.containerCss.display = 'inline-block'; args.containerCss.position = 'relative'; } // CSS for the dropdown args.dropdownCss = {}; args.dropdownCss.width = 'auto'; // When we have this we replace the default with what's in the param. if ( $select.is( '[data-dropdown-css-width]' ) ) { args.dropdownCss.width = $select.data( 'dropdown-css-width' ); if ( ! args.dropdownCss.width || 'false' === args.dropdownCss.width ) { delete args.dropdownCss.width; delete args.containerCss; } } // By default we allow The field to be cleared args.allowClear = true; if ( $select.is( '[data-prevent-clear]' ) ) { args.allowClear = false; } // Pass the "Searching..." placeholder if specified if ( $select.is( '[data-searching-placeholder]' ) ) { args.formatSearching = $select.data( 'searching-placeholder' ); } // If we are dealing with a Input Hidden we need to set the Data for it to work if ( ! $select.is( '[data-placeholder]' ) && $select.is( '[placeholder]' ) ) { args.placeholder = $select.attr( 'placeholder' ); } // If we are dealing with a Input Hidden we need to set the Data for it to work. if ( $select.is( '[data-options]' ) ) { args.data = $select.data( 'options' ); } // With less then 10 args we wouldn't show the search. args.minimumResultsForSearch = 10; // Prevents the Search box to show if ( $select.is( '[data-hide-search]' ) ) { args.minimumResultsForSearch = Infinity; } // Makes sure search shows up. if ( $select.is( '[data-force-search]' ) ) { delete args.minimumResultsForSearch; } // Allows freeform entry if ( $select.is( '[data-freeform]' ) ) { args.createTag = obj.freefrom_create_search_choice; args.tags = true; $select.data( 'tags', true ); } if ( $select.is( '[multiple]' ) ) { args.multiple = true; // Set the max select items, if defined if ( $select.is( '[data-maximum-selection-size]' ) ) { args.maximumSelectionSize = $select.data( 'maximum-selection-size' ); } // If you don't have separator, add one (comma) if ( ! $select.is( 'data-separator' ) ) { $select.data( 'separator', ',' ); } if ( ! _.isArray( $select.data( 'separator' ) ) ) { args.tokenSeparators = [ $select.data( 'separator' ) ]; } else { args.tokenSeparators = $select.data( 'separator' ); } args.separator = $select.data( 'separator' ); // Define the regular Exp based on args.regexSeparatorElements = [ '^(' ]; args.regexSplitElements = [ '(?:' ]; $.each( args.tokenSeparators, function ( i, token ) { args.regexSeparatorElements.push( '[^' + token + ']+' ); args.regexSplitElements.push( '[' + token + ']' ); } ); args.regexSeparatorElements.push( ')$' ); args.regexSplitElements.push( ')' ); args.regexSeparatorString = args.regexSeparatorElements.join( '' ); args.regexSplitString = args.regexSplitElements.join( '' ); args.regexToken = new RegExp( args.regexSeparatorString, 'ig' ); args.regexSplit = new RegExp( args.regexSplitString, 'ig' ); } // Select also allows Tags, so we go with that too if ( $select.is( '[data-tags]' ) ) { args.tags = $select.data( 'tags' ); args.createSearchChoice = function( term, data ) { // eslint-disable-line no-unused-vars if ( term.match( args.regexToken ) ) { return { id: term, text: term }; } }; if ( 0 === args.tags.length ) { args.formatNoMatches = function() { return $select.attr( 'placeholder' ); }; } } // When we have a source, we do an AJAX call if ( $select.is( '[data-source]' ) ) { var source = $select.data( 'source' ); // For AJAX we reset the data args.data = { results: [] }; // Format for Parents breadcrumbs args.formatResult = function ( item, container, query ) { // eslint-disable-line no-unused-vars,max-len if ( 'undefined' !== typeof item.breadcrumbs ) { return $.merge( item.breadcrumbs, [ item.text ] ).join( ' » ' ); } return item.text; }; // instead of writing the function to execute the request we use Select2's convenient helper. args.ajax = { dataType: 'json', type: 'POST', url: obj.ajaxurl(), // parse the results into the format expected by Select2. processResults: function ( response, page, query ) { // eslint-disable-line no-unused-vars if ( ! $.isPlainObject( response ) || 'undefined' === typeof response.success ) { console.error( 'We received a malformed Object, could not complete the Select2 Search.' ); // eslint-disable-line max-len return { results: [] }; } if ( ! $.isPlainObject( response.data ) || 'undefined' === typeof response.data.results ) { console.error( 'We received a malformed results array, could not complete the Select2 Search.' ); // eslint-disable-line max-len return { results: [] }; } if ( ! response.success ) { if ( 'string' === $.type( response.data.message ) ) { console.error( response.data.message ); } else { console.error( 'The Select2 search failed in some way... Verify the source.' ); } return { results: [] }; } return response.data; }, }; // By default only send the source args.ajax.data = function( search, page ) { return { action: 'tribe_dropdown', source: source, search: search, page: page, args: $select.data( 'source-args' ), }; }; } // Attach dropdown to container in DOM. if ( $select.is( '[data-attach-container]' ) ) { // If multiple, attach container without search. if ( $select.is( '[multiple]' ) ) { $.fn.select2.amd.define( 'AttachedDropdownAdapter', [ 'select2/utils', 'select2/dropdown', 'select2/dropdown/attachContainer', ], function( utils, dropdown, attachContainer ) { return utils.Decorate( dropdown, attachContainer ); } ); args.dropdownAdapter = $.fn.select2.amd.require( 'AttachedDropdownAdapter' ); // If not multiple, attach container with search. } else { $.fn.select2.amd.define( 'AttachedWithSearchDropdownAdapter', [ 'select2/utils', 'select2/dropdown', 'select2/dropdown/search', 'select2/dropdown/minimumResultsForSearch', 'select2/dropdown/attachContainer', ], function( utils, dropdown, search, minimumResultsForSearch, attachContainer ) { var adapter = utils.Decorate( dropdown, attachContainer ); adapter = utils.Decorate( adapter, search ); adapter = utils.Decorate( adapter, minimumResultsForSearch ); return adapter; } ); args.dropdownAdapter = $.fn.select2.amd.require( 'AttachedWithSearchDropdownAdapter' ); } } // Save data on Dropdown $select.data( 'dropdown', args ); $container = $select.select2TEC( args ); // Propagating original input classes to the select2 container. $container.data( 'select2' ).$container.addClass( obj.getSelectClasses( $select ).join( ' ' ) ); // Propagating original input classes to the select2 container. $container.data( 'select2' ).$container.removeClass( 'hide-before-select2-init' ); $container.on( 'select2:open', obj.action_select2_open ); /** * @todo @bordoni Investigate how and if we should be doing this. * if ( carryOverData.length > 0 ) { carryOverData.map( function( dataKey ) { var attr = 'data-' + dataKey; var val = $select.attr( attr ); if ( ! val ) { return; } this.attr( attr, val ); }, $container ); } */ }; obj.ajaxurl = function() { if ( 'undefined' !== typeof window.ajaxurl ) { return window.ajaxurl; } if ( 'undefined' !== typeof TEC && 'undefined' !== typeof TEC.ajaxurl ) { return TEC.ajaxurl; } console.error( 'Dropdowns framework cannot properly do an AJAX request without the WordPress `ajaxurl` variable setup.' ); // eslint-disable-line max-len }; obj.action_select2_open = function( event ) { // eslint-disable-line no-unused-vars var $select = $( this ); var select2Data = $select.data( 'select2' ); var $search = select2Data.$dropdown.find( obj.selector.searchField ); // eslint-disable-line es5/no-es6-methods,max-len select2Data.$dropdown.addClass( obj.selector.dropdown.className() ); // If we have a placeholder for search, apply it! if ( $select.is( '[data-search-placeholder]' ) ) { $search.attr( 'placeholder', $select.data( 'searchPlaceholder' ) ); } }; /** * Configure the Drop Down Fields * * @param {jQuery} $fields All the fields from the page * @param {array} args Allow extending the arguments * * @return {jQuery} Affected fields */ obj.dropdown = function( $fields, args ) { var $elements = $fields.not( '.select2-offscreen, .select2-container, ' + obj.selector.created.className() ); // eslint-disable-line max-len if ( 0 === $elements.length ) { return $elements; } // Default args to avoid Undefined if ( ! args ) { args = {}; } $elements .each( function( index, element ) { // Apply element to all given items and pass args obj.element( element, args ); } ); // return to be able to chain jQuery calls return $elements; }; $( function() { $( obj.selector.dropdown ).tribe_dropdowns(); } ); // Addresses some problems with Select2 inputs not being initialized when using a browser's "Back" button. $( window ).on( 'unload', function() { $( obj.selector.dropdown ).tribe_dropdowns(); }); } )( jQuery, tribe_dropdowns, window.underscore || window._ ); /*! elementor-pro - v3.5.1 - 10-11-2021 */ .elementor-cta,.elementor-widget-call-to-action .elementor-widget-container{overflow:hidden}.elementor-cta{position:relative;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-transition:.5s;-o-transition:.5s;transition:.5s}.elementor-cta--skin-classic .elementor-cta{-ms-flex-wrap:wrap;flex-wrap:wrap}.elementor-cta--skin-classic .elementor-cta__bg-wrapper{position:relative;min-height:200px;width:100%}.elementor-cta--skin-classic .elementor-cta__content{-webkit-transition:all .4s;-o-transition:all .4s;transition:all .4s;width:100%;background-color:#f7f7f7}.elementor-cta--skin-classic .elementor-cta__content-item,.elementor-cta--skin-classic .elementor-cta__content-item .elementor-icon{color:#55595c;border-color:#55595c;fill:#55595c}.elementor-cta--skin-classic .elementor-cta__button.elementor-button{color:#55595c;border-color:#55595c}.elementor-cta--skin-cover .elementor-cta{display:block}.elementor-cta--skin-cover .elementor-cta__bg-wrapper{position:absolute;top:0;left:0;right:0;bottom:0;-webkit-transition:all .4s;-o-transition:all .4s;transition:all .4s;width:100%}.elementor-cta--skin-cover .elementor-cta__content{min-height:280px}.elementor-cta--skin-cover .elementor-cta__button.elementor-button,.elementor-cta--skin-cover .elementor-cta__content-item,.elementor-cta--skin-cover .elementor-cta__content-item .elementor-icon{color:#fff;border-color:#fff}.elementor-cta--layout-image-above .elementor-cta{-ms-flex-wrap:wrap;flex-wrap:wrap}.elementor-cta--layout-image-above .elementor-cta__bg-wrapper{width:100%}.elementor-cta--layout-image-left .elementor-cta,.elementor-cta--layout-image-right .elementor-cta{-ms-flex-wrap:nowrap;flex-wrap:nowrap}.elementor-cta--layout-image-left .elementor-cta__bg-wrapper,.elementor-cta--layout-image-right .elementor-cta__bg-wrapper{width:auto;min-width:50%}.elementor-cta--layout-image-left .elementor-cta__content,.elementor-cta--layout-image-right .elementor-cta__content{-webkit-box-flex:1;-ms-flex-positive:1;flex-grow:1}.elementor-cta--layout-image-left .elementor-cta{-webkit-box-orient:horizontal;-webkit-box-direction:reverse;-ms-flex-direction:row-reverse;flex-direction:row-reverse}.elementor-cta--layout-image-right .elementor-cta{-webkit-box-orient:horizontal;-webkit-box-direction:normal;-ms-flex-direction:row;flex-direction:row}.elementor-cta__bg,.elementor-cta__bg-overlay{position:absolute;top:0;left:0;right:0;bottom:0;-webkit-transition:all .4s;-o-transition:all .4s;transition:all .4s}.elementor-cta__bg-wrapper{z-index:1;overflow:hidden}.elementor-cta__bg{-webkit-background-size:cover;background-size:cover;background-position:50%;z-index:1}.elementor-cta__bg-overlay{z-index:2}.elementor-cta__button.elementor-button{cursor:pointer;-ms-flex-item-align:center;align-self:center;margin-left:auto;margin-right:auto;border:2px solid #fff;background:transparent}.elementor-cta__button.elementor-button:hover{background:transparent;text-decoration:none}.elementor-cta__title{font-size:23px}.elementor-cta__content{z-index:1;overflow:hidden;display:-webkit-box;display:-ms-flexbox;display:flex;-ms-flex-wrap:wrap;flex-wrap:wrap;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-ms-flex-line-pack:center;align-content:center;padding:35px;width:100%}.elementor-cta__content,.elementor-cta__content-item{position:relative;-webkit-transition:.5s;-o-transition:.5s;transition:.5s;color:#fff}.elementor-cta__content-item{width:100%;margin:0}.elementor-cta__content-item:not(:last-child){margin-bottom:15px}.elementor-cta__content-item .elementor-icon{color:#fff}.elementor-cta--valign-top .elementor-cta__content{-ms-flex-line-pack:start;align-content:flex-start;-webkit-box-align:start;-ms-flex-align:start;align-items:flex-start}.elementor-cta--valign-middle .elementor-cta__content{-ms-flex-line-pack:center;align-content:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center}.elementor-cta--valign-bottom .elementor-cta__content{-ms-flex-line-pack:end;align-content:flex-end;-webkit-box-align:end;-ms-flex-align:end;align-items:flex-end}.elementor-cta:hover .elementor-cta__bg-overlay{background-color:rgba(0,0,0,.3)}@media (max-device-width:1024px){.elementor-cta{cursor:pointer}}@media (min-width:-1px){.elementor-cta--widescreen-layout-image-above .elementor-cta{-ms-flex-wrap:wrap;flex-wrap:wrap}.elementor-cta--widescreen-layout-image-above .elementor-cta__bg-wrapper{width:100%}.elementor-cta--widescreen-layout-image-left .elementor-cta,.elementor-cta--widescreen-layout-image-right .elementor-cta{-ms-flex-wrap:nowrap;flex-wrap:nowrap}.elementor-cta--widescreen-layout-image-left .elementor-cta__bg-wrapper,.elementor-cta--widescreen-layout-image-right .elementor-cta__bg-wrapper{width:auto;min-width:50%}.elementor-cta--widescreen-layout-image-left .elementor-cta__content,.elementor-cta--widescreen-layout-image-right .elementor-cta__content{-webkit-box-flex:1;-ms-flex-positive:1;flex-grow:1}.elementor-cta--widescreen-layout-image-left .elementor-cta{-webkit-box-orient:horizontal;-webkit-box-direction:reverse;-ms-flex-direction:row-reverse;flex-direction:row-reverse}.elementor-cta--widescreen-layout-image-right .elementor-cta{-webkit-box-orient:horizontal;-webkit-box-direction:normal;-ms-flex-direction:row;flex-direction:row}}@media (max-width:-1px){.elementor-cta--laptop-layout-image-above .elementor-cta{-ms-flex-wrap:wrap;flex-wrap:wrap}.elementor-cta--laptop-layout-image-above .elementor-cta__bg-wrapper{width:100%}.elementor-cta--laptop-layout-image-left .elementor-cta,.elementor-cta--laptop-layout-image-right .elementor-cta{-ms-flex-wrap:nowrap;flex-wrap:nowrap}.elementor-cta--laptop-layout-image-left .elementor-cta__bg-wrapper,.elementor-cta--laptop-layout-image-right .elementor-cta__bg-wrapper{width:auto;min-width:50%}.elementor-cta--laptop-layout-image-left .elementor-cta__content,.elementor-cta--laptop-layout-image-right .elementor-cta__content{-webkit-box-flex:1;-ms-flex-positive:1;flex-grow:1}.elementor-cta--laptop-layout-image-left .elementor-cta{-webkit-box-orient:horizontal;-webkit-box-direction:reverse;-ms-flex-direction:row-reverse;flex-direction:row-reverse}.elementor-cta--laptop-layout-image-right .elementor-cta{-webkit-box-orient:horizontal;-webkit-box-direction:normal;-ms-flex-direction:row;flex-direction:row}}@media (max-width:-1px){.elementor-cta--tablet_extra-layout-image-above .elementor-cta{-ms-flex-wrap:wrap;flex-wrap:wrap}.elementor-cta--tablet_extra-layout-image-above .elementor-cta__bg-wrapper{width:100%}.elementor-cta--tablet_extra-layout-image-left .elementor-cta,.elementor-cta--tablet_extra-layout-image-right .elementor-cta{-ms-flex-wrap:nowrap;flex-wrap:nowrap}.elementor-cta--tablet_extra-layout-image-left .elementor-cta__bg-wrapper,.elementor-cta--tablet_extra-layout-image-right .elementor-cta__bg-wrapper{width:auto;min-width:50%}.elementor-cta--tablet_extra-layout-image-left .elementor-cta__content,.elementor-cta--tablet_extra-layout-image-right .elementor-cta__content{-webkit-box-flex:1;-ms-flex-positive:1;flex-grow:1}.elementor-cta--tablet_extra-layout-image-left .elementor-cta{-webkit-box-orient:horizontal;-webkit-box-direction:reverse;-ms-flex-direction:row-reverse;flex-direction:row-reverse}.elementor-cta--tablet_extra-layout-image-right .elementor-cta{-webkit-box-orient:horizontal;-webkit-box-direction:normal;-ms-flex-direction:row;flex-direction:row}}@media (max-width:1024px){.elementor-cta--tablet-layout-image-above .elementor-cta{-ms-flex-wrap:wrap;flex-wrap:wrap}.elementor-cta--tablet-layout-image-above .elementor-cta__bg-wrapper{width:100%}.elementor-cta--tablet-layout-image-left .elementor-cta,.elementor-cta--tablet-layout-image-right .elementor-cta{-ms-flex-wrap:nowrap;flex-wrap:nowrap}.elementor-cta--tablet-layout-image-left .elementor-cta__bg-wrapper,.elementor-cta--tablet-layout-image-right .elementor-cta__bg-wrapper{width:auto;min-width:50%}.elementor-cta--tablet-layout-image-left .elementor-cta__content,.elementor-cta--tablet-layout-image-right .elementor-cta__content{-webkit-box-flex:1;-ms-flex-positive:1;flex-grow:1}.elementor-cta--tablet-layout-image-left .elementor-cta{-webkit-box-orient:horizontal;-webkit-box-direction:reverse;-ms-flex-direction:row-reverse;flex-direction:row-reverse}.elementor-cta--tablet-layout-image-right .elementor-cta{-webkit-box-orient:horizontal;-webkit-box-direction:normal;-ms-flex-direction:row;flex-direction:row}}@media (max-width:-1px){.elementor-cta--mobile_extra-layout-image-above .elementor-cta{-ms-flex-wrap:wrap;flex-wrap:wrap}.elementor-cta--mobile_extra-layout-image-above .elementor-cta__bg-wrapper{width:100%}.elementor-cta--mobile_extra-layout-image-left .elementor-cta,.elementor-cta--mobile_extra-layout-image-right .elementor-cta{-ms-flex-wrap:nowrap;flex-wrap:nowrap}.elementor-cta--mobile_extra-layout-image-left .elementor-cta__bg-wrapper,.elementor-cta--mobile_extra-layout-image-right .elementor-cta__bg-wrapper{width:auto;min-width:50%}.elementor-cta--mobile_extra-layout-image-left .elementor-cta__content,.elementor-cta--mobile_extra-layout-image-right .elementor-cta__content{-webkit-box-flex:1;-ms-flex-positive:1;flex-grow:1}.elementor-cta--mobile_extra-layout-image-left .elementor-cta{-webkit-box-orient:horizontal;-webkit-box-direction:reverse;-ms-flex-direction:row-reverse;flex-direction:row-reverse}.elementor-cta--mobile_extra-layout-image-right .elementor-cta{-webkit-box-orient:horizontal;-webkit-box-direction:normal;-ms-flex-direction:row;flex-direction:row}}@media (max-width:767px){.elementor-cta--mobile-layout-image-above .elementor-cta{-ms-flex-wrap:wrap;flex-wrap:wrap}.elementor-cta--mobile-layout-image-above .elementor-cta__bg-wrapper{width:100%}.elementor-cta--mobile-layout-image-left .elementor-cta,.elementor-cta--mobile-layout-image-right .elementor-cta{-ms-flex-wrap:nowrap;flex-wrap:nowrap}.elementor-cta--mobile-layout-image-left .elementor-cta__bg-wrapper,.elementor-cta--mobile-layout-image-right .elementor-cta__bg-wrapper{width:auto;min-width:50%}.elementor-cta--mobile-layout-image-left .elementor-cta__content,.elementor-cta--mobile-layout-image-right .elementor-cta__content{-webkit-box-flex:1;-ms-flex-positive:1;flex-grow:1}.elementor-cta--mobile-layout-image-left .elementor-cta{-webkit-box-orient:horizontal;-webkit-box-direction:reverse;-ms-flex-direction:row-reverse;flex-direction:row-reverse}.elementor-cta--mobile-layout-image-right .elementor-cta{-webkit-box-orient:horizontal;-webkit-box-direction:normal;-ms-flex-direction:row;flex-direction:row}}.elementor-ribbon{position:absolute;z-index:1;top:0;left:0;right:auto;-webkit-transform:rotate(0);-ms-transform:rotate(0);transform:rotate(0);width:150px;overflow:hidden;height:150px}.elementor-ribbon-inner{text-align:center;left:0;width:200%;-webkit-transform:translateY(-50%) translateX(0) translateX(35px) rotate(-45deg);-ms-transform:translateY(-50%) translateX(0) translateX(35px) rotate(-45deg);transform:translateY(-50%) translateX(0) translateX(35px) rotate(-45deg);margin-top:35px;font-size:13px;line-height:2;font-weight:800;text-transform:uppercase;background:#000;color:#fff}.elementor-ribbon.elementor-ribbon-left{-webkit-transform:rotate(0);-ms-transform:rotate(0);transform:rotate(0);left:0;right:auto}.elementor-ribbon.elementor-ribbon-right{-webkit-transform:rotate(90deg);-ms-transform:rotate(90deg);transform:rotate(90deg);left:auto;right:0} Top 10 Online Live Casinos mit Live Dealer Spielen - premier mills

Top 10 Online Live Casinos mit Live Dealer Spielen

Top 10 Online Live Casinos mit Live Dealer Spielen

Wir schätzen faires Glücksspiel über alles und möchten Ihnen nur Casinos empfehlen, die ebenfalls diesen grundlegenden Wert mit uns teilen. Aus diesem Grund sind die Spitzenplätze in dieser Rangliste ausschließlich den ehrlichen Online Casinos vorbehalten. Wir sind ständig damit beschäftigt, unsere Casino-Datenbank zu erweitern und zu verbessern.https://casinoly-casino.net/ Nur so können wir Ihnen bei der Auswahl zuverlässiger Casino-Webseiten, bei denen Sie beruhigt spielen können, helfen.

Der Katalog von Casinoly Online Casino ist mit einer Vielzahl von Software gefüllt. Der größte Teil der Spielothek steht den Spielern im Demo-Modus zur Verfügung. Die Spielothek ist in thematische Abschnitte unterteilt, damit die Besucher schnell und einfach das gewünschte Spiel finden können und nicht viel Zeit mit organisatorischen Aspekten verbringen müssen. Das Online-Casino Casinoly bietet seinen Nutzern einen bequemen und flexiblen Zugang zu den Spielen, ohne dass eine spezielle mobile Anwendung heruntergeladen werden muss. Die mobile Version der Website ist für alle modernen mobilen Browser optimiert, was ein komfortables Spiel auf Smartphones und Tablets garantiert.

Wir haben uns die Plattform genau angeschaut und überprüft, wie einfach man sich zurechtfindet. Dabei haben wir insgesamt sehr gute Erfahrungen gemacht, was daran liegt, dass alles in Kategorien eingeteilt ist und man sogar die Zahlungsmethoden übersichtlich dargestellt bekommt. Finden Sie heraus, wie die Benutzerfreundlichkeit für das mobile Gaming, die Registrierung und den Kundendienst abschneidet. Zusammenfassend bietet Casinoly seinen Nutzern eine sichere und geschützte Umgebung zum Spielen. Diese Faktoren tragen dazu bei, dass Spieler ein entspanntes und genussvolles Spielerlebnis haben können, mit der Gewissheit, dass ihre Sicherheit und ihr Wohlergehen eine hohe Priorität haben. Casinoly ist ein Online Casino, das die Sicherheit seiner Nutzer und die Einhaltung von Vorschriften sehr ernst nimmt.

Dadurch wurde das perfekte Umfeld für die ganzen Spieler geschaffen. Casinoly gehört glücklicherweise zu den Anbietern mit zwei verschiedenen Arten von Jackpot Slots – die fixen und die progressiven Spielautomaten. Bei den fixen Jackpot Slots gibt eine Summe x die du gewinnen kannst und die um einiges höher ist als bei einem normalen Slot.

Wir bemühen uns, Ihre Chancen auf tolle Gewinne zu verbessern, die Sie in den besten Online-Casinos und mit den besten Spielen der Welt bekommen können. Neben den Slots findest du noch Casinoly Jackpot-Spiele und Live-Casino-Spiele wie Roulette, Blackjack und Baccarat. Es gibt ebenso einige Live Games, bei denen der Betreiber auf hochwertige Anbieter wie Evolution Gaming, Playtech und Pragmatic Play Live setzt. In unseren Casinoly Erfahrungen haben wir ebenso Sportwetten, Live-Wetten, Pferderennen und virtuellen Sport entdeckt.

Lars schreibt mit einer Mischung aus gelebter Praxis, akademischem Wissen und einer ständigen Neugier, die seine Texte lebendig und authentisch machen. Dazu gibt es eine breite Auswahl an Spielen, die allesamt sehr gut organisiert sind, sodass man schnell das passende Spiel findet. Es gibt Slots, ein Live-Casino und auch schnelle Spiele, was für viel Abwechslung sorgt. Beim Erreichen einer neuen Stufe werden Vorteile wie erhöhte Auszahlungslimits, mehr Cashback und persönliche Account-Manager freigeschaltet. Dies gilt für verschiedene Zahlungsmethoden, einschließlich Kreditkarten und Kryptowährungen.

Zuerst muss nach einem Online Casino mit einem Casino Bonus ohne Einzahlung gesucht werden. Die Aktivierung kann per Casino Bonus Codes erfolgen, per Klick auf der Website oder nach Kontaktaufnahme mit dem Support des Casinos. Wir empfehlen Ihnen, sich direkt bei verschiedenen Online-Casinos anzumelden und die Newsletter zu abonnieren. Auf diese Weise bleiben Sie auf dem Laufenden über aktuelle Bonusangebote und Aktionen, einschließlich möglicher Casino-Boni ohne Einzahlung.

Der Mr Green Bonus oder der Jackpotpiraten Bonus ist in einem Online Casino definitiv zu erwarten. Und vielleicht sogar zusätzlich Sportwetten und einen Bereich für Poker. Wenn Online Casinos gültige Lizenzen haben, sind diese Online Casinos in Deutschland legal und sicher. Man sollte sich nicht davon irritieren lassen, dass es internationale Stimmen gibt, welche die deutsche Lizenz schlecht reden. In Deutschland ist PayPal noch immer am beliebtesten und seit der Legalisierung findet man diese Methode auch wieder bei etlichen, legalen Anbietern. Direkte Zahlungen per Kreditkarte werden an zweiter Stelle im deutschen Raum gelistet.

Lizenzen geben einem Casino erst die Seriosität die sie benötigen, um als sicheres Casino überhaupt an den Markt zu gehen. Casinoly unterliegt dadurch strengen Richtlinien und wird regelmäßig geprüft. Aber da dem Anbieter auch das Wohl der Spieler am Herzen liegt, hast du GamCAre und Gambling Therapy die für den Spielerschutz zuständig sind. Hier wird stark auf gesundes und verantwortungsvolles Spielen geachtet. Die zwei genannten Spielerschutz-Unternehmen sind auch die erste Anlaufstelle sollte es Probleme im Spielverhalten geben.

Casinoly Erfahrungen im Test: Boni, Zahlungsinfo & mehr

Die Mindesteinzahlung bei Casinoly beträgt 10 € für die meisten Zahlungsmethoden, einschließlich Kreditkarten, EcoPayz und Jeton. Das Casino bietet eine Vielzahl von Zahlungsmethoden an und verwendet Sicherheitsmaßnahmen wie SSL-Verschlüsselung, um die finanziellen Transaktionen der Kunden zu schützen. Hier haben wir die Durchschnittswerte der einzelnen Kategorien aufgelistet, sodass Sie einen guten Überblick über die Auszahlungsquoten gewinnen können.

Danach können Sie das Online Glücksspiel Angebot des Casinos zunächst einmal im Spielgeldmodus gratis unter die Lupe nehmen. Haben Sie sich bei einem Online Casino neu registriert, wird Ihnen ein Willkommens- oder Neukundenbonus angeboten. Dieser wirkt immer vielversprechend, ist aber häufig an bestimmte Auszahlungsbestimmungen gebunden und muss für die Auszahlung erst freigespielt werden.

Aber auch Bestandskunden sollten immer wieder einen guten Bonus, wie den Wunderino Bonus oder den DrückGlück Bonus vorfinden. Doch man sollte sich nicht von der ausgelobten Summe täuschen lassen. Unsere Online Casino Testsieger bemühen sich, den Bonus so fair wie möglich zu gestalten.

Dort erfahren Sie dann alles, was Sie wissen müssen, um korrekt zu entscheiden, ob dieses oder jene Casino eine gute Wahl für Sie ist oder nicht. Wenn Sie jedoch dazu entscheiden, in einem Casino mit einem schlechten Ruf zu spielen, so wird es viel wahrscheinlicher sein, dass Sie dort auf Probleme stoßen werden. Zum Beispiel wird das Casino nach Ausreden suchen, um Ihre Gewinne nicht auszahlen zu müssen usw. Aus diesem Grund legen wir immer sehr viel Wert auf die richtige Auswahl eines Online-Casinos und weisen immer wieder auf diese Bedeutung hin. Das bedeutet, dass das Casino durch die betreffenden Spiele immer einen mathematischen Vorteil gegenüber Ihrer Person hat.

Sie sind besonders praktisch für Spieler, die nicht ständig eine App auf ihrem Gerät installiert haben möchten oder die verschiedene Casinos ausprobieren möchten, ohne sich auf eine App festzulegen. Die wachsende Beliebtheit von Online Casino Apps ist kein Zufall, denn sie bieten Spielern unvergleichliche Flexibilität und Komfort. Wenn Sie auf der Suche nach einem erstklassigen Online Casino Deutschland sind, sollten Sie ein Casino mit einem breiten Portfolio an spielen wählen. Hier bieten beste Casinos online Ihnen Automatenspiele, Tischspiele und ein Live-Casino an.

Weitere Angebote: Bieten alle Online Casinos Zusatzangebote an?

Wir vergleichen über 500 verschiedene Datensätze, um jede Online Spielothek bis ins kleinste Detail zu bewerten. Aufgrund der ersten Wertung begeben sich unsere Casino Experten in das 24-stufige Testverfahren für jedes Online Casino. Darüber hinaus sind alle persönlichen Daten und Bankdaten der Nutzer der Plattform casinoonly1 zuverlässig geschützt. Dies wird durch die Tatsache bewiesen, dass die Glücksspielseite die neuesten Datenverschlüsselungssysteme verwendet. Casinoly bietet eine breite Palette von über 2.000 Spielen an, darunter Slots, Jackpot Spiele, Tischspiele wie Blackjack und Roulette, sowie Live Dealer Spiele und schnelle Spiele. Zu den beliebten Spielen gehören “Cash of Gods”, “Gems Bonanza”, “Starburst”, “Razor Returns”, “Genie Respins” und “Black Wolf”.

Zeitliche Begrenzungen, sowie Fristen findet man meistens in den Bonusbedingungen. Spieler müssen ein Online-Formular ausfüllen und persönliche Informationen angeben, um ein Konto zu erstellen. Dieser Vorgang ist für eine sichere und verantwortungsbewusste Spielumgebung unerlässlich. Sie unterscheidet sich von einem gewöhnlichen “Online Casino” durch die Einhaltung spezifischer deutscher Glücksspielgesetze, was sicheren und regulierten Spielgenuss ermöglicht.

Sie müssen Bonusguthaben in der Regel 35 Mal umsetzen, während Gewinne aus Freispielen einen 40-fachen Umsatz erfordern. Schaut man sich das Bonusangebot bei Casinoly an, stellt man schnell fest, dass es eine riesige Auswahl an Aktionen gibt. Dieser werden alle übersichtlich dargestellt, sodass man schnell erkennt, was man geboten bekommt.

Jeder Spieler hat die Freiheit, einen Casino Bonus ohne Einzahlung zu nutzen. Solche Bonus Promotionen, bei denen kein Risiko besteht, sind anders zu bewerten als ein Bonus mit Einzahlung. Beim Comeon Casino Bonus zum Beispiel können Sie bedenkenlos direkt loslegen. Bei dem Casino Bonus ohne Einzahlung handelt es sich um ein interessantes Bonus Angebot, das kein Risiko für die Spieler mitbringt. Ein solcher No Deposit Bonus hat viele Vorteile und ist eine perfekte Möglichkeit, das Spielangebot eines Online Casinos ohne Risiko zu testen.

Angesichts dessen überprüfen wir immer im ersten Schritt, ob eine gültige Lizenz der Casinos vorhanden ist, und fahren dann erst mit der Bewertung der Casinos fort. Die Online Spielothek Casinoly verfügt über eine gültige Lizenz aus Curacao. Damit werden alle rechtlichen Vorschriften erfüllt und wir können davon ausgehen, dass es sich um ein seriöses Online Casino mit einer fairen Auszahlungsquote handelt.

Falls du dich für eine der Kryptos bei den Auszahlungen entscheidest, dann gelten die entsprechenden Limits ebenfalls. Die Auszahlungsdauer beträgt dabei zwischen einem und maximal drei Tagen. Laut unserer Casinoly Erfahrungen sammelst du bei jeder Einzahlung und Echtgeldeinsatz Münzen, die du im „Geschäft“ gegen Freispiele und Bonusgeld eintauschen kannst. Zur selben Zeit nimmst du auch am VIP-Programm teil, bei dem du insgesamt 5 verschiedene Stufen erklimmen kannst.

Slots Palace: herausragende Bonusangebote und Aktionen

Die Auszahlungen funktionieren im Casinoly Casino ebenfalls zuverlässig und problemlos. Um einen Auszahlungsvorgang einzuleiten, genügt ebenfalls ein Klick auf „Meine Wallet“. Hier müssen schließlich alle Felder ausgefüllt und der auszuzahlende Betrag gewählt werden. Der Einzahlungsprozess im Casinoly Casino ist einfach und erklärt sich beinah von selbst. Zunächst ist es wichtig, dass die Kunden, die einzahlen möchten, bereits in ihr Konto eingeloggt sind. Zugleich sind die Curacao Casinos technologie- und innovationsoffen und haben die Möglichkeit, neuen Entwicklungen wie beispielsweise dem Zahlungsverkehr über Kryptowährungen Raum zu geben.

Heute spezialisiert sich das Unternehmen mit Sitz auf der Isle of Man mit der Entwicklung von Gaming-Software. Das Microgaming Poker Network (MPN) bietet auf zahlreichen Online-Plattformen diverse Pokervarianten an. Magic Mirror, Dragons Treasure oder Triple Chance sind nur einige der bekannten Namen unter den Spielen in den besten Casinos Online. Beste Online Casinos, die eine EU Lizenz aus Malta besitzen, werden von deutschen online Spielern am meisten bevorzugt. Die, 2001 gegründete, Malta Gaming Authority (MGA) ist eine europäische Lizenzierungs- und Aufsichtsbehörde. Diese reguliert die meisten Arten von Glücksspiel auf dem Gebiet von Malta.

Ein App Download ist nicht notwendig, sodass du ganz flexibel spielen und durchstarten kannst. Ob mit dem Tablet, mit dem iPhone, dem iPad oder einem anderen Mobilgerät, mit allen Geräten kannst Tischspiele, Live Spiele und Spielautomaten spielen. Für sichere Zahlungen stehen verschiedene Zahlungsmethoden zur Auswahl. Auch Kryptowährungen wie Bitcoin können für Ein- und Auszahlungen genutzt werden. Der Casinoly Bonus verspricht viel Extra Guthaben zu fairen Bonusbedingungen. Wer sich die Chance auf einen großen Gewinn mit wenig Risiko nicht entgehen lassen möchte, der sollte sich den großartigen Willkommensbonus sichern.

Es ist auch von entscheidender Bedeutung, dass Sie Ihre eigenen persönlichen Daten bei der Kontoerstellung verwenden und sicherstellen, dass diese Angaben alle korrekt und wahrheitsgetreu sind. Denn Casinos überprüfen früher oder später immer die Identität der eigenen Spieler, auf jeden Fall dann, wenn Sie ihre erste Auszahlung vornehmen möchten (spätestens!). Sie werden kein Geld von einem Casino abheben können, wenn Sie falsche Angaben über Ihre eigene Person gemacht haben.

Leave a Comment

Your email address will not be published. Required fields are marked *