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.15 (2) - premier mills

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

Содержимое

Casino en ligne Quatro – Guide du débutant

Are you new to the world of online casinos? Look no further than Quatro Casino, a premier destination for gamers of all levels. With its user-friendly interface, generous rewards, and wide range of games, Quatro Casino is the perfect place to start your online gaming journey.

In this guide, we’ll take you through the ins and outs of Quatro Casino, from creating your account to claiming your rewards. We’ll also cover the various ways to access the casino, including desktop, mobile, and tablet devices.

Getting Started with Quatro Casino

The first step in getting started with Quatro Casino is to create your account. Simply click on the “Sign In” button and follow the prompts to register. You’ll need to provide some basic information, including your name, email address, and password. Once you’ve completed the registration process, you’ll be able to log in and start playing.

Quatro Casino Connexion

Once you’ve created your account, you’ll be able to log in and access the casino’s various features. The casino’s homepage is designed to be user-friendly, with easy-to-navigate menus and clear instructions on how to get started. You can also access the casino’s mobile version, which is optimized for smaller screens and touch controls.

Quatro Casino Rewards

One of the best things about Quatro Casino is its generous rewards program. As a new player, you’ll be eligible for a welcome bonus, which can be used to play a variety of games. You’ll also earn points for every dollar you bet, which can be redeemed for cash or other rewards. And, as a loyal player, you’ll be eligible for exclusive promotions and bonuses.

Quatro Casino Francais

Quatro Casino is available in multiple languages, including French. This means that players from France and other French-speaking countries can access the casino and play their favorite games in their native language. The casino’s website is also available in multiple languages, making it easy for players to navigate and find the information they need.

Conclusion

In conclusion, Quatro Casino is a great choice for new players looking to get started with online gaming. With its user-friendly interface, generous rewards, and wide range of games, Quatro Casino is the perfect place to start your online gaming journey. Whether you’re playing on your desktop, mobile, or tablet device, Quatro Casino is the perfect place to play and win.

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 online casinos, it can be overwhelming to know where to start. In this guide, we’ll walk you through the process of getting started with Quatro Casino, from creating an account to claiming your welcome bonus.

  • Step 1: Sign Up
  • To get started, you’ll need to create an account with Quatro Casino. Simply click on the “Sign Up” button on the website’s homepage and fill out the registration form with your personal details.

  • Step 2: Verify Your Account
  • Once you’ve created your account, you’ll need to verify it by clicking on the verification link sent to your email address. This is a security measure to ensure that your account is secure and to prevent fraud.

  • Step 3: Make a Deposit
  • Now that your account is verified, you can make a deposit to start playing. Quatro Casino offers a range of payment options, including credit cards, debit cards, and e-wallets. You can choose the payment method that suits you best and make a deposit to start playing.

  • Step 4: Claim Your Welcome Bonus
  • As a new player, you’re eligible for a welcome bonus. This is a special offer that’s designed to help you get started with the casino. The welcome bonus is usually a percentage of your initial deposit, and it’s a great way to boost your bankroll.

  • quatro casino login
  • Once you’ve made a deposit and claimed your welcome bonus, you can log in to your account and start playing. Simply click on the “Login” button on the website’s homepage and enter your username and password.

  • Quatro Casino Canada
  • Quatro Casino is available to players in Canada, and it offers a range of games and promotions that are tailored to the Canadian market. If you’re a Canadian player, you can take advantage of the casino’s Canadian-specific promotions and bonuses.

  • Quatro Casino Rewards
  • Quatro Casino offers a range of rewards and loyalty programs to its players. As you play, you’ll earn points and rewards that can be redeemed for cash, bonuses, and other prizes. The rewards program is a great way to get more value from your play.

    Quatro Casino Mobile

    Quatro Casino is also available on mobile devices, so you can play on the go. The mobile version of the casino is optimized for mobile devices, and it offers a range of games and features that are designed specifically for mobile players.

    Quatro Casino Sign In

    If you’re already a member of Quatro Casino, you can log in to your account and start playing. Simply click on the “Sign In” button on the website’s homepage and enter your username and password. You can then access your account and start playing.

    Casino en ligne Quatro: Guide du débutant

    Si vous êtes nouveau dans le monde des casinos en ligne, vous êtes au bon endroit ! Quatro Casino est l’un des meilleurs choix pour les débutants, avec une grande variété de jeux, des bonus attractifs et une plateforme de jeu sécurisée.

    Avant de commencer, il est important de comprendre les bases du jeu. Quatro Casino propose une grande variété de jeux, allant des jeux de table classiques comme le blackjack et le roulette, aux jeux de machine à sous les plus récents. Vous pouvez également trouver des jeux de cartes, des jeux de hasard et des jeux de loterie.

    Comment créer un compte Quatro Casino

    Pour commencer à jouer, vous devez créer un compte Quatro Casino. Cela prend environ 5 minutes et nécessite quelques informations personnelles. Vous pouvez créer un compte en cliquant sur le bouton “S’inscrire” sur le site web de Quatro Casino.

    Une fois que vous avez créé votre compte, vous pouvez vous connecter à votre compte en utilisant vos informations de connexion. Vous pouvez également vous connecter à votre compte en utilisant vos coordonnées de connexion.

    Quelques conseils pour les débutants

    Voici quelques conseils pour les débutants :

    • Commencez par jouer aux jeux de table classiques comme le blackjack et le roulette.
    • Essayez les jeux de machine à sous pour gagner des jackpots.
    • Ne jouez pas trop fort, il est important de gérer vos finances.
    • Profitez des bonus et des promotions offerts par Quatro Casino.

    Quatro Casino est également disponible sur mobile, ce qui signifie que vous pouvez jouer partout et à tout moment. Vous pouvez télécharger l’application Quatro Casino mobile pour jouer sur votre smartphone ou votre tablette.

    En résumé, Quatro Casino est un excellent choix pour les débutants. Avec sa grande variété de jeux, ses bonus attractifs et sa plateforme de jeu sécurisée, vous êtes prêt à commencer votre aventure de jeu en ligne.

    Vous pouvez également utiliser les mots-clés suivants pour trouver d’autres informations sur Quatro Casino :

    • Quatro casino
    • Quatro casino canada
    • Quatro casino mobile
    • Quatro casino login
    • Quatro casino français
    • Quatro casino sign in
    • Quatro casino connexion
    • Quatro casino rewards

    Il est important de jouer responsablement et de ne pas dépenser plus que vous ne pouvez gérer.

    Getting Started with Quatro Online Casino

    As a beginner, getting started with Quatro Online Casino can seem overwhelming, but with this guide, you’ll be well on your way to enjoying the best online gaming experience. First, let’s start with the basics.

    Quatro Casino Connexion is the process of creating an account with the casino. To do this, simply click on the “Sign In” button on the Quatro Casino website and follow the prompts. You will need to provide some basic information, such as your name, email address, and password. Once you’ve completed the registration process, you’ll be able to access your account and start playing.

    Quatro Casino Canada is a popular online casino that offers a wide range of games, including slots, table games, and video poker. The casino is licensed and regulated by the Malta Gaming Authority, ensuring that all games are fair and that player information is kept secure.

    Quatro Casino Login is the process of accessing your account on the Quatro Casino website. To do this, simply enter your email address and password in the designated fields and click “Login”. If you’ve forgotten your password, don’t worry – you can reset it by clicking on the “Forgot Password” link and following the prompts.

    Quatro Casino Sign In is the process of creating an account with the casino. To do this, simply click on the “Sign In” button on the Quatro Casino website and follow the prompts. You will need to provide some basic information, such as your name, email address, and password. Once you’ve completed the registration process, you’ll be able to access your account and start playing.

    Quatro Casino Français is the French version of the Quatro Casino website, offering the same range of games and features as the English version. The website is available in French, making it easy for French-speaking players to access and enjoy the games.

    Quatro Casino Mobile is the mobile version of the Quatro Casino website, allowing players to access and play games on the go. The mobile site is optimized for use on smartphones and tablets, making it easy to play games wherever you are.

    Quatro Casino Rewards is the loyalty program offered by Quatro Casino, rewarding players for their loyalty and activity. The program offers a range of benefits, including bonus credits, free spins, and exclusive promotions. To earn rewards, simply play games, make deposits, and participate in tournaments and promotions.

    By following these simple steps, you’ll be well on your way to enjoying the best online gaming experience with Quatro Online Casino. Remember to always play responsibly and within your means, and don’t hesitate to contact customer support if you have any questions or concerns.

    Getting Started with Quatro Online Casino: A Step-by-Step Guide

    Remember to always play responsibly and within your means.

    Understanding the Games and Bonuses

    When you join Quatro Casino, you’ll have access to a wide range of games, including slots, table games, and video poker. The casino is powered by Microgaming, one of the leading software providers in the industry, which means you can expect high-quality graphics and smooth gameplay.

    Slots are a popular choice among players, and Quatro Casino has an impressive selection to choose from. You’ll find classic slots, video slots, and progressive slots, each with its own unique features and bonuses. Some popular slots include Mega Moolah, Tomb Raider, and The Dark Knight.

    If you’re looking for a more traditional gaming experience, you can try your hand at table games like blackjack, roulette, and baccarat. These games are available in both online and live dealer formats, giving you the option to play against the house or against other players.

    Quatro Casino also offers a range of video poker games, including Jacks or Better, Deuces Wild, and All American. These games are great for players who want to test their skills and strategy.

    Bonuses and Promotions

    One of the best things about Quatro Casino is its generous bonus and promotion program. As a new player, you’ll be eligible for a 100% match bonus on your first deposit, up to $100. This means you can double your bankroll and start playing with more money than you deposited.

    But that’s not all – Quatro Casino also offers a range of ongoing promotions and bonuses to keep your account topped up. These can include free spins, deposit bonuses, and cashback offers. Be sure to check the casino’s website regularly to stay up-to-date on the latest promotions.

    Quatro Casino is also available on mobile, so you can play on the go. The mobile site is optimized for a range of devices, including smartphones and tablets, and offers a similar range of games as the desktop site. You can even use the same login credentials to access the mobile site, making it easy to switch between devices.

    Finally, Quatro Casino offers a range of payment options, including credit cards, debit cards, and e-wallets. This makes it easy to deposit and withdraw funds, and you can even use the casino’s quick deposit feature to make a deposit in just a few clicks.

    Overall, Quatro Casino is a great choice for players who want a wide range of games, generous bonuses, and a user-friendly interface. Whether you’re a seasoned player or just starting out, you’ll find something to love at Quatro Casino.

    Maximizing Your Experience and Earning Rewards

    As a new player at Quatro Casino, you’re probably eager to start exploring the world of online gaming. With a wide range of games, exciting promotions, and loyalty rewards, Quatro Casino Canada, Quatro Casino Francais, and Quatro Casino Mobile offer an unparalleled gaming experience. To help you make the most of your time, we’ve put together some tips to maximize your experience and earn rewards.

    Claim Your Welcome Bonus

    As a new player, you’re eligible for a generous welcome bonus, which can be used to play your favorite games. Make sure to claim it as soon as you sign in to Quatro Casino. This bonus can be used to play a variety of games, including slots, table games, and video poker.

    To maximize your welcome bonus, be sure to read the terms and conditions carefully. Understand the wagering requirements, and make sure to use the bonus wisely. Remember, the more you play, the more you can earn.

    Take Advantage of Ongoing Promotions

    Quatro Casino is always running exciting promotions, from daily deals to special tournaments. To stay up-to-date with the latest offers, be sure to check your email regularly or log in to your account frequently. You can also follow Quatro Casino on social media to stay informed about new promotions and special offers.

    To make the most of these promotions, be sure to read the terms and conditions carefully. Understand the rules, and make sure to use the promotions wisely. Remember, the more you play, the more you can earn.

    Earn Rewards with Quatro Casino Rewards

    Quatro Casino’s loyalty program is designed to reward loyal players. As you play, you’ll earn points that can be redeemed for cash, bonuses, or other rewards. To maximize your rewards, be sure to play regularly and take advantage of special offers.

    To earn rewards, be sure to:

    Play regularly to earn points

    Take advantage of special offers and promotions

    Redeem your points for cash, bonuses, or other rewards

    Use your rewards wisely to maximize your gaming experience

    By following these tips, you can maximize your experience and earn rewards at Quatro Casino Canada, Quatro Casino Francais, and Quatro Casino Mobile. Remember, the more you play, the more you can earn. Happy gaming!

    Leave a Comment

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