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} Casino en ligne Quatro Guide du débutant.149 (2) - premier mills

Casino en ligne Quatro Guide du débutant.149 (2)

Содержимое

Casino en ligne Quatro – Guide du débutant

Are you new to the world of online casinos? Are you looking for a reliable and exciting platform to try your luck? Look no further than Quatro Casino, a leading online gaming destination that offers a wide range of games, generous bonuses, and a user-friendly interface.

As a beginner, it’s essential to understand the basics of online casinos and how to navigate the Quatro Casino platform. In this guide, we’ll walk you through the process of signing up, making a deposit, and getting started with your gaming experience.

Quatro Casino: A Brief Overview

Quatro Casino is a popular online casino that offers a vast selection of games, including slots, table games, and video poker. The casino is licensed and regulated by the Malta Gaming Authority, ensuring a safe and secure gaming environment for players.

One of the standout features of Quatro Casino is its user-friendly interface, which makes it easy for beginners to navigate and find their favorite games. The casino also offers a range of bonuses and promotions, including a welcome bonus, to help new players get started.

Getting Started with Quatro Casino

To get started with Quatro Casino, simply follow these steps:

1. Sign up: Click on the “Sign up” button on the Quatro Casino homepage and fill out the registration form with your personal details.

2. Make a deposit: Once you’ve registered, you’ll need to make a deposit to fund your account. Quatro Casino accepts a range of payment methods, including credit cards, e-wallets, and bank transfers.

3. Choose your game: With your account funded, you can start playing your favorite games. Quatro Casino offers a wide range of games, including slots, table games, and video poker.

4. Take advantage of bonuses and promotions: Quatro Casino offers a range of bonuses and promotions to help new players get started. Be sure to check out the casino’s promotions page for the latest offers.

Quatro Casino on the Go

Quatro Casino is also available on mobile devices, allowing you to play your favorite games on the go. The mobile version of the casino is optimized for a range of devices, including smartphones and tablets.

Quatro Casino in French

Quatro Casino is available in French, making it easy for French-speaking players to navigate the platform and play their favorite games. The French version of the casino offers the same range of games and bonuses as the English version.

Quatro Casino in Canada

Quatro Casino is available to players in Canada, offering a range of games and bonuses to Canadian players. The casino is licensed and regulated by the Malta Gaming Authority, ensuring a safe and secure gaming environment for Canadian players.

Conclusion

In conclusion, Quatro Casino is a great option for beginners and experienced players alike. With its user-friendly interface, range of games, and generous bonuses, it’s easy to see why Quatro Casino is a popular choice among online casino players. Whether you’re looking to try your luck or simply have some fun, Quatro Casino is definitely worth checking out.

Getting Started with Quatro Casino

Quatro Casino is a popular online casino that offers a wide range of games, bonuses, and promotions to its players. In this guide, we will take you through the process of getting started with Quatro Casino, from creating an account to making your first deposit and playing your favorite games.

Creating an Account

To create an account with Quatro Casino, simply click on the “Sign Up” button on the website’s homepage. Fill in the required information, including your name, email address, and password. You will also need to verify your account by clicking on the link sent to your email address.

Quatro Casino Connexion

Once you have created your account, you can log in to Quatro Casino using your email address and password. You can also use the “Quatro Casino Connexion” feature to log in quickly and easily, without having to enter your email address and password every time.

Quatro Casino Français

Quatro Casino offers a French version of its website, which is available by clicking on the “Français” link at the top of the page. This version of the website is available in French and is designed to cater to players who prefer to play in French.

Quatro Casino Rewards

Quatro Casino offers a range of rewards and bonuses to its players, including a welcome bonus, loyalty points, and special promotions. These rewards are designed to reward players for their loyalty and to encourage them to continue playing at the casino.

Quatro Casino Sign In

To sign in to Quatro Casino, simply click on the “Sign In” button on the website’s homepage. Enter your email address and password, and you will be logged in to your account. You can also use the “Quatro Casino Connexion” feature to log in quickly and easily, without having to enter your email address and password every time.

Country
Quatro Casino

Canada Quatro Casino Canada Mobile Quatro Casino Mobile

Conclusion

In conclusion, getting started with Quatro Casino is a straightforward process that requires creating an account, making a deposit, and choosing your favorite games. With its range of rewards and bonuses, Quatro Casino is a great option for players who are looking for a fun and exciting online gaming experience.

Casino en ligne Quatro: Guide du débutant

If you’re new to the world of online casinos, Quatro Casino is an excellent place to start. With its user-friendly interface and wide range of games, it’s no wonder why many players choose Quatro as their go-to destination. In this guide, we’ll take you through the ins and outs of Quatro Casino, helping you to get started and make the most of your online gaming experience.

Getting Started with Quatro Casino

The first step in getting started with Quatro Casino is to create an account. This is a straightforward process that can be completed in just a few minutes. Simply click on the “Sign Up” button, fill in the required information, and you’ll be ready to start playing. Don’t forget to check the box to receive the welcome bonus, which will give you a boost to get you started.

Quatro Casino Mobile

One of the great things about Quatro Casino is its mobile compatibility. You can access the casino from your smartphone or tablet, giving you the freedom to play whenever and wherever you want. The mobile version of the site is just as user-friendly as the desktop version, making it easy to navigate and find the games you want to play.

Quatro Casino Rewards

As a member of Quatro Casino, you’ll be eligible to earn rewards and bonuses. These can include free spins, deposit matches, and other perks. The more you play, the more you’ll earn, giving you even more opportunities to win big. Be sure to check your account regularly to see what rewards are available to you.

quatro casino login

If you’ve already created an account, you can log in to Quatro Casino by clicking on the “Login” button and entering your username and password. If you’ve forgotten your password, don’t worry – you can reset it easily by clicking on the “Forgot Password” link.

Quatro Casino Français

If you’re a French speaker, you’ll be pleased to know that Quatro Casino offers a French version of its website. This makes it easy to navigate and play in your native language, giving you a more comfortable and enjoyable experience.

Quatro Casino Canada

If you’re from Canada, you’ll be happy to know that Quatro Casino is available to players from your country. You can access the site and play the games you love, all from the comfort of your own home. Be sure to check the site’s terms and conditions to see what games are available to you.

Quatro Casino Connexion

Finally, if you’re having trouble connecting to Quatro Casino, don’t worry – it’s easy to resolve. Simply check your internet connection, make sure you’re using the correct login details, and try again. If you’re still having trouble, you can contact the casino’s customer support team for assistance.

In conclusion, Quatro Casino is an excellent choice for anyone looking to start their online gaming journey. With its user-friendly interface, wide range of games, and excellent rewards program, it’s no wonder why many players choose Quatro as their go-to destination. By following the tips and advice in this guide, you’ll be well on your way to getting started and making the most of your online gaming experience.

What is Quatro Casino?

Quatro Casino is a popular online casino that offers a wide range of games, including slots, table games, and live dealer games. The casino is available in multiple languages, including French, and is accessible from desktop and mobile devices.

Quatro Casino is known for its user-friendly interface, secure payment options, and excellent customer support. The casino is licensed and regulated by the Malta Gaming Authority, ensuring a safe and fair gaming experience for all players.

Quatro Casino Features

Some of the key features that set Quatro Casino apart from other online casinos include:

  • Quatro Casino Rewards: A loyalty program that rewards players for their deposits and gameplay.
  • Quatro Casino Sign In: A quick and easy sign-up process that allows players to access their account and start playing.
  • Quatro Casino Connexion: A secure and reliable connection that ensures a smooth gaming experience.
  • Quatro Casino Mobile: A mobile-optimized version of the casino that allows players to access their account and play games on-the-go.

Quatro Casino is committed to providing a fun and exciting gaming experience for all players. With its wide range of games, secure payment options, and excellent customer support, it’s no wonder why Quatro Casino is a popular choice among online casino enthusiasts.

Whether you’re a seasoned gambler or just looking to try your luck, Quatro Casino is the perfect place to start. So why not sign up today and start playing?

Getting Started with Quatro Casino

Quatro Casino is a popular online casino that offers a wide range of games, bonuses, and promotions to its players. If you’re new to the world of online casinos, getting started with Quatro Casino can seem daunting, but don’t worry, we’re here to guide you through the process.

Step 1: Create Your Account

To start playing at Quatro Casino, you’ll need to create an account. This is a straightforward process that can be completed in a few minutes. Simply click on the “Sign Up” button on the Quatro Casino website, fill in the required information, and you’ll be ready to go.

  • Username: Choose a unique and memorable username that you’ll use to log in to your account.
  • Password: Create a strong and secure password that you’ll use to log in to your account.
  • Email: Enter a valid email address that you’ll use to receive important updates and notifications from Quatro Casino.
  • Language: Choose your preferred language from the options available, including English, French, and others.

Step 2: Make a Deposit

Once you’ve created your account, you’ll need to make a deposit to start playing. Quatro Casino offers a range of payment options, including credit cards, e-wallets, and bank transfers. Choose the payment method that’s most convenient for you and follow the instructions to complete the deposit process.

  • Payment Options: Quatro Casino accepts a range of payment options, including Visa, Mastercard, Neteller, Skrill, and more.
  • Minimum Deposit: The minimum deposit required to start playing at Quatro Casino is €10.
  • Maximum Deposit: The maximum deposit allowed at Quatro Casino is €5,000.

Step 3: Claim Your Welcome Bonus

As a new player, you’ll be eligible for a welcome bonus that’s designed to help you get started with your online gaming experience. The welcome bonus is a 100% match bonus up to €200, and it’s available to all new players who make a minimum deposit of €10.

  • Welcome Bonus: The welcome bonus is a 100% match bonus up to €200.
  • Wagering Requirements: The welcome bonus comes with a 30x wagering requirement, which means you’ll need to wager the bonus amount 30 times before you can withdraw your winnings.

Step 4: Start Playing

Now that you’ve created your account, made a deposit, and claimed your welcome bonus, you’re ready to start playing. Quatro Casino offers a wide range of games, including slots, table games, and video poker. Browse the game selection, choose the game that you want to play, and start spinning the reels or placing your bets.

  • Game Selection: Quatro Casino offers a wide range of games, including slots, table games, and video poker.
  • Mobile Casino: Quatro Casino also offers a mobile casino that you can access on your smartphone or tablet.
  • Quatro Casino Rewards: As you play, you’ll earn points that can be redeemed for cash, bonuses, and other rewards.

Getting started with Quatro Casino is easy, and with these steps, you’ll be well on your way to enjoying a fun and rewarding online gaming experience. Remember to always play responsibly and within your means.

Games and Software

At Quatro Casino, we offer a wide range of games and software to ensure a unique and exciting gaming experience. Our platform is powered by Microgaming, one of the leading online gaming software providers, which guarantees a high level of quality and reliability.

With over 500 games to choose from, you’ll never get bored at Quatro Casino. Our game selection includes classic slots, video slots, table games, and progressive jackpot games. You can play for fun or for real money, and our games are available on desktop, mobile, and tablet devices.

Quatro Casino Games

Our games are designed to provide hours of entertainment and excitement. You can play popular slots like Tomb Raider, The Dark Knight, and Game of Thrones, or try your luck at table games like blackjack, roulette, and craps. We also offer a range of video poker games, including Deuces Wild and Jacks or Better.

In addition to our extensive game selection, we also offer a range of promotions and bonuses to help you get started. Our welcome bonus is designed to give you a boost, and we also offer daily and weekly promotions to keep the excitement going.

Quatro Casino Rewards

As a valued member of Quatro Casino, you’ll be eligible for our rewards program. Our rewards program is designed to reward your loyalty and provide you with exclusive benefits. You’ll earn points for every bet you place, and you can redeem these points for cash, bonuses, and other rewards.

Quatro Casino is available in multiple languages, including French, which means you can enjoy our games and services in your native language. Our customer support team is also available 24/7 to assist you with any questions or concerns you may have.

Whether you’re a seasoned gamer or just starting out, Quatro Casino has something for everyone. With our wide range of games, software, and promotions, you’ll never want to leave. So why wait? Sign up for Quatro Casino today and start playing for real money or for fun!

Don’t forget to take advantage of our Quatro Casino login feature, which allows you to access your account and start playing right away. And if you’re new to Quatro Casino, be sure to take advantage of our Quatro Casino sign in feature, which allows you to create an account and start playing for real money or for fun.

Quatro Casino is available in Canada, and we welcome players from all over the world. So why wait? Sign up for Quatro Casino today and start playing for real money or for fun!

Payment and Withdrawal Options

At Quatro Casino, we understand the importance of secure and convenient payment options. That’s why we’ve put together a range of payment methods to suit your needs. Whether you’re depositing or withdrawing, you can trust that your transactions are safe and secure.

Deposit Options

Quatro Casino offers a variety of deposit options to make it easy for you to get started. You can choose from the following methods:

  • Visa
  • Mastercard
  • Maestro
  • PayPal
  • Neteller
  • Skrill
  • Bank Transfer

When making a deposit, you can use your quatro casino rewards points to boost your balance. Simply log in to your account, go to the cashier, and select the deposit option. Choose your preferred payment method, enter the amount you’d like to deposit, and confirm. Your funds will be credited to your account instantly.

Withdrawal Options

When it’s time to withdraw your winnings, you can trust that our withdrawal process is fast and secure. We offer the following withdrawal options:

  • Bank Transfer
  • Neteller
  • Skrill
  • PayPal

Before making a withdrawal, please note that you must have a minimum balance of $50 in your account. Additionally, you may be required to provide identification and proof of address to verify your account. Our team is always available to assist you with any questions or concerns you may have.

Important: Please be aware that some payment methods may have specific requirements or restrictions. For example, some payment methods may have minimum or maximum deposit limits, or may not be available in certain countries. If you have any questions or concerns about our payment options, please don’t hesitate to contact our support team.

Remember to always keep your account information and login credentials secure to prevent unauthorized access. If you suspect that your account has been compromised, please contact our support team immediately.

Leave a Comment

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