/** * jQuery fontIconPicker - v2.3 * * An icon picker built on top of font icons and jQuery * * http://codeb.it/fontIconPicker * * Made by Alessandro Benoit & Swashata * Under MIT License * * {@link https://github.com/micc83/fontIconPicker} * * Modified by Visual Composer Dev Team */ (function ( $ ) { 'use strict'; // Create the defaults once var defaults = { theme: 'fip-vc-theme-grey', // The CSS theme to use with this fontIconPicker. You can set different themes on multiple elements on the same page source: false, // Icons source (array|false|object) emptyIcon: true, // Empty icon should be shown? emptyIconValue: '', // The value of the empty icon, change if you select has something else, say "none" iconsPerPage: 20, // Number of icons per page hasSearch: true, // Is search enabled? searchSource: false, // Give a manual search values. If using attributes then for proper search feature we also need to pass icon names under the same order of source useAttribute: false, // Whether to use attribute selector for printing icons attributeName: 'data-icon', // HTML Attribute name convertToHex: true, // Whether or not to convert to hexadecimal for attribute value. If true then please pass decimal integer value to the source (or as value="" attribute of the select field) allCategoryText: 'From all categories', // The text for the select all category option unCategorizedText: 'Uncategorized', // The text for the select uncategorized option iconDownClass: 'fip-icon-down-dir', // Class for icon down iconUpClass: 'fip-icon-up-dir', // Class for icon up iconLeftClass: 'fip-icon-left-dir', // Class for icon left iconRightClass: 'fip-icon-right-dir', // Class for icon right iconSearchClass: 'fip-icon-search', // Class for search iconCancelClass: 'fip-icon-cancel', // Class for search canceling iconSpinClass: 'fip-icon-spin3', // Class for fip-icon-spin3 iconBlockClass: 'fip-icon-block', // Class for block(none icon) searchPlaceholder: 'Search Icon', // Search icon text placeholder mainClass: 'vc-icons-selector' }; // The actual plugin constructor function Plugin( element, options ) { this.element = $( element ); this.settings = $.extend( {}, defaults, options ); if ( this.settings.emptyIcon ) { this.settings.iconsPerPage --; } this.iconPicker = $( '
', { 'class': this.settings.mainClass, style: 'position: relative', html: '
' + '' + '' + '' + '' + '' + '' + '
' + '' } ); this.iconContainer = this.iconPicker.find( '.fip-icons-container' ); this.searchIcon = this.iconPicker.find( '.selector-search i' ); this.iconsSearched = []; this.isSearch = false; this.totalPage = 1; this.currentPage = 1; this.currentIcon = false; this.initialized = false; this.iconsPaged = false; this.iconsCount = 0; this.open = false; // Set the default values for the search related variables this.searchValues = []; this.availableCategoriesSearch = []; // The trigger event for change this.triggerEvent = null; // Backups this.backupSource = []; this.backupSearch = []; // Set the default values of the category related variables this.isCategorized = false; // Automatically detects if the icon listing is categorized this.selectCategory = this.iconPicker.find( '.icon-category-select' ); // The category SELECT input field this.selectedCategory = false; // false means all categories are selected this.availableCategories = []; // Available categories, it is a two dimensional array which holds categorized icons this.unCategorizedKey = null; // Key of the uncategorized category // Initialize plugin this.quickInit(); } Plugin.prototype = { /** * Quick init */ quickInit: function () { var first = true; // Add the theme CSS to the iconPicker this.iconPicker.addClass( this.settings.theme ); // To properly calculate iconPicker height and width // We will first append it to body (with left: -9999px so that it is not visible) this.iconPicker.css( { left: - 9999 } ).appendTo( 'body' ); var iconPickerHeight = this.iconPicker.outerHeight(), iconPickerWidth = this.iconPicker.outerWidth(); // Now reset the iconPicker CSS this.iconPicker.css( { left: '' } ); // Add the icon picker after the select this.element.before( this.iconPicker ); // Hide source element // Instead of doing a display:none, we would rather // make the element invisible // and adjust the margin this.element.css( { visibility: 'hidden', top: 0, position: 'relative', zIndex: '-1', left: '-' + iconPickerWidth + 'px', display: 'none', height: iconPickerHeight + 'px', width: iconPickerWidth + 'px', // Reset all margin, border and padding padding: '0', margin: '0 -' + iconPickerWidth + 'px 0 0', // Left margin adjustment to account for dangling space border: '0 none', verticalAlign: 'top' } ).hide(); // Set the trigger event if ( ! this.element.is( 'select' ) ) { // Determine the event that is fired when user change the field value // Most modern browsers supports input event except IE 7, 8. // IE 9 supports input event but the event is still not fired if I press the backspace key. // Get IE version // https://gist.github.com/padolsey/527683/#comment-7595 var ieVersion = (function () { var v = 3, div = document.createElement( 'div' ), a = div.all || []; while ( div.innerHTML = '', a[ 0 ] ) { ; } return v > 4 ? v : ! v; }()); var el = document.createElement( 'div' ); this.triggerEvent = (ieVersion === 9 || ! ('oninput' in el)) ? [ 'keyup' ] : [ 'input', 'keyup' ]; // Let's keep the keyup event for scripts that listens to it } this.setSelectedIcon( this.element.val() ); /** * Category changer */ this.selectCategory.on( 'change keyup', $.proxy( function ( e ) { // Don't do anything if not categorized if ( this.isCategorized === false ) { return false; } var targetSelect = $( e.currentTarget ), currentCategory = targetSelect.val(); // Check if all categories are selected if ( targetSelect.val() === 'all' ) { // Restore from the backups // @note These backups must be rebuild on source change, otherwise it will lead to error this.settings.source = this.backupSource; this.searchValues = this.backupSearch; // No? So there is a specified category } else { var key = parseInt( currentCategory, 10 ); if ( this.availableCategories[ key ] ) { this.settings.source = this.availableCategories[ key ]; this.searchValues = this.availableCategoriesSearch[ key ]; } } this.resetSearch(); this.loadIcons(); }, this ) ); /** * On down arrow click */ this.iconPicker.find( '.selector-button' ).on( 'click', $.proxy( function () { if ( ! this.open && first ) { first = false; this.initCategories(); } // Open/Close the icon picker this.toggleIconSelector(); }, this ) ); /** * Next page */ this.iconPicker.find( '.selector-arrow-right' ).on( 'click', $.proxy( function ( e ) { if ( this.currentPage < this.totalPage ) { this.iconPicker.find( '.selector-arrow-left' ).show(); this.currentPage = this.currentPage + 1; this.renderIconContainer(); this.renderIcons(); } if ( this.currentPage === this.totalPage ) { $( e.currentTarget ).hide(); } }, this ) ); /** * Prev page */ this.iconPicker.find( '.selector-arrow-left' ).on( 'click', $.proxy( function ( e ) { if ( this.currentPage > 1 ) { this.iconPicker.find( '.selector-arrow-right' ).show(); this.currentPage = this.currentPage - 1; this.renderIconContainer(); this.renderIcons(); } if ( this.currentPage === 1 ) { $( e.currentTarget ).hide(); } }, this ) ); /** * Realtime Icon Search */ this.iconPicker.find( '.icons-search-input' ).on( 'keyup', $.proxy( function ( e ) { // Get the search string var searchString = $( e.currentTarget ).val(); // If the string is not empty if ( searchString === '' ) { this.resetSearch(); return; } // Set icon search to X to reset search this.searchIcon.removeClass( this.settings.iconSearchClass ); this.searchIcon.addClass( this.settings.iconCancelClass ); // Set this as a search this.isSearch = true; // Reset current page this.currentPage = 1; // Actual search // This has been modified to search the searchValues instead // Then return the value from the source if match is found this.iconsSearched = []; $.grep( this.searchValues, $.proxy( function ( n, i ) { if ( n.toLowerCase().search( searchString.toLowerCase() ) >= 0 ) { this.iconsSearched[ this.iconsSearched.length ] = this.settings.source[ i ]; return true; } }, this ) ); // Filter duplicates this.iconsSearched = this.iconsSearched.filter( this.getOnlyUnique ); // Render icon list this.renderIconContainer(); this.renderIcons(); }, this ) ); /** * Quit search */ this.iconPicker.find( '.selector-search i' ).on( 'click', $.proxy( function () { this.iconPicker.find( '.icons-search-input' ).focus(); this.resetSearch(); }, this ) ); /** * On icon selected */ this.iconContainer.on( 'click', '.fip-box', $.proxy( function ( e ) { this.setSelectedIcon( $( e.currentTarget ).find( 'i' ).attr( 'data-fip-value' ) ); this.toggleIconSelector(); }, this ) ); /** * Stop click propagation on iconpicker */ this.iconPicker.on( 'click', function ( event ) { event.stopPropagation(); return false; } ); /** * On click out */ $( 'html' ).on( 'click', $.proxy( function () { if ( this.open ) { this.toggleIconSelector(); } }, this ) ); }, /** * Init */ init: function () { // Add the theme CSS to the iconPicker this.iconPicker.addClass( this.settings.theme ); // To properly calculate iconPicker height and width // We will first append it to body (with left: -9999px so that it is not visible) this.iconPicker.css( { left: - 9999 } ).appendTo( 'body' ); var iconPickerHeight = this.iconPicker.outerHeight(), iconPickerWidth = this.iconPicker.outerWidth(); // Now reset the iconPicker CSS this.iconPicker.css( { left: '' } ); // Add the icon picker after the select this.element.before( this.iconPicker ); // Hide source element // Instead of doing a display:none, we would rather // make the element invisible // and adjust the margin this.element.css( { visibility: 'hidden', top: 0, position: 'relative', zIndex: '-1', left: '-' + iconPickerWidth + 'px', display: 'none', height: iconPickerHeight + 'px', width: iconPickerWidth + 'px', // Reset all margin, border and padding padding: '0', margin: '0 -' + iconPickerWidth + 'px 0 0', // Left margin adjustment to account for dangling space border: '0 none', verticalAlign: 'top' } ).hide(); // Set the trigger event if ( ! this.element.is( 'select' ) ) { // Determine the event that is fired when user change the field value // Most modern browsers supports input event except IE 7, 8. // IE 9 supports input event but the event is still not fired if I press the backspace key. // Get IE version // https://gist.github.com/padolsey/527683/#comment-7595 var ieVersion = (function () { var v = 3, div = document.createElement( 'div' ), a = div.all || []; while ( div.innerHTML = '', a[ 0 ] ) { ; } return v > 4 ? v : ! v; }()); var el = document.createElement( 'div' ); this.triggerEvent = (ieVersion === 9 || ! ('oninput' in el)) ? [ 'keyup' ] : [ 'input', 'keyup' ]; // Let's keep the keyup event for scripts that listens to it } this.initCategories(); /** * Category changer */ this.selectCategory.on( 'change keyup', $.proxy( function ( e ) { // Don't do anything if not categorized if ( this.isCategorized === false ) { return false; } var targetSelect = $( e.currentTarget ), currentCategory = targetSelect.val(); // Check if all categories are selected if ( targetSelect.val() === 'all' ) { // Restore from the backups // @note These backups must be rebuild on source change, otherwise it will lead to error this.settings.source = this.backupSource; this.searchValues = this.backupSearch; // No? So there is a specified category } else { var key = parseInt( currentCategory, 10 ); if ( this.availableCategories[ key ] ) { this.settings.source = this.availableCategories[ key ]; this.searchValues = this.availableCategoriesSearch[ key ]; } } this.resetSearch(); this.loadIcons(); }, this ) ); /** * On down arrow click */ this.iconPicker.find( '.selector-button' ).on( 'click', $.proxy( function () { // Open/Close the icon picker this.toggleIconSelector(); }, this ) ); /** * Next page */ this.iconPicker.find( '.selector-arrow-right' ).on( 'click', $.proxy( function ( e ) { if ( this.currentPage < this.totalPage ) { this.iconPicker.find( '.selector-arrow-left' ).show(); this.currentPage = this.currentPage + 1; this.renderIconContainer(); this.renderIcons(); } if ( this.currentPage === this.totalPage ) { $( e.currentTarget ).hide(); } }, this ) ); /** * Prev page */ this.iconPicker.find( '.selector-arrow-left' ).on( 'click', $.proxy( function ( e ) { if ( this.currentPage > 1 ) { this.iconPicker.find( '.selector-arrow-right' ).show(); this.currentPage = this.currentPage - 1; this.renderIconContainer(); this.renderIcons(); } if ( this.currentPage === 1 ) { $( e.currentTarget ).hide(); } }, this ) ); /** * Realtime Icon Search */ this.iconPicker.find( '.icons-search-input' ).on( 'keyup', $.proxy( function ( e ) { // Get the search string var searchString = $( e.currentTarget ).val(); // If the string is not empty if ( searchString === '' ) { this.resetSearch(); return; } // Set icon search to X to reset search this.searchIcon.removeClass( this.settings.iconSearchClass ); this.searchIcon.addClass( this.settings.iconCancelClass ); // Set this as a search this.isSearch = true; // Reset current page this.currentPage = 1; // Actual search // This has been modified to search the searchValues instead // Then return the value from the source if match is found this.iconsSearched = []; $.grep( this.searchValues, $.proxy( function ( n, i ) { if ( n.toLowerCase().search( searchString.toLowerCase() ) >= 0 ) { this.iconsSearched[ this.iconsSearched.length ] = this.settings.source[ i ]; return true; } }, this ) ); // Filter duplicates this.iconsSearched = this.iconsSearched.filter( this.getOnlyUnique ); // Render icon list this.renderIconContainer(); this.renderIcons(); }, this ) ); /** * Quit search */ this.iconPicker.find( '.selector-search i' ).on( 'click', $.proxy( function () { this.iconPicker.find( '.icons-search-input' ).focus(); this.resetSearch(); }, this ) ); /** * On icon selected */ this.iconContainer.on( 'click', '.fip-box', $.proxy( function ( e ) { this.setSelectedIcon( $( e.currentTarget ).find( 'i' ).attr( 'data-fip-value' ) ); this.toggleIconSelector(); }, this ) ); /** * Stop click propagation on iconpicker */ this.iconPicker.on( 'click', function ( event ) { event.stopPropagation(); return false; } ); /** * On click out */ $( 'html' ).on( 'click', $.proxy( function () { if ( this.open ) { this.toggleIconSelector(); } }, this ) ); }, initCategories: function () { // If current element is SELECT populate settings.source if ( ! this.settings.source && this.element.is( 'select' ) ) { // Reset the source and searchSource // These will be populated according to the available options this.settings.source = []; this.settings.searchSource = []; // Check if optgroup is present within the select // If it is present then the source has to be grouped if ( this.element.find( 'optgroup' ).length ) { // Set the categorized to true this.isCategorized = true; this.element.find( 'optgroup' ).each( $.proxy( function ( i, el ) { // Get the key of the new category array var thisCategoryKey = this.availableCategories.length, // Create the new option for the selectCategory SELECT field categoryOption = $( '' ).prependTo( this.selectCategory ); // Show it and set default value to all categories this.selectCategory.show().val( 'all' ).trigger( 'change' ); }, /** * Load icons */ loadIcons: function () { // Set the content of the popup as loading this.iconContainer.html( '' ); // If source is set if ( this.settings.source instanceof Array ) { // Render icons this.renderIconContainer(); this.renderIcons(); this.setContainerSelectedItems(); } }, /** * Render icons inside the popup */ renderIconContainer: function () { var offset, iconsPaged = []; // Set a temporary array for icons if ( this.isSearch ) { iconsPaged = this.iconsSearched; } else { iconsPaged = this.settings.source; } // Remove duplicates iconsPaged = [ ...new Set( iconsPaged ) ]; // Count elements this.iconsCount = iconsPaged.length; // Calculate total page number this.totalPage = Math.ceil( this.iconsCount / this.settings.iconsPerPage ); // Hide footer if no pagination is needed if ( this.totalPage > 1 ) { this.iconPicker.find( '.selector-footer' ).show(); } else { this.iconPicker.find( '.selector-footer' ).hide(); } // Set the text for page number index and total icons this.iconPicker.find( '.selector-pages' ).html( this.currentPage + '/' + this.totalPage + ' (' + this.iconsCount + ')' ); // Set the offset for slice offset = (this.currentPage - 1) * this.settings.iconsPerPage; // Should empty icon be shown? if ( this.settings.emptyIcon ) { // Reset icon container HTML and prepend empty icon this.iconContainer.html( '' ); // If not show an error when no icons are found } else if ( iconsPaged.length < 1 ) { this.iconContainer.html( '' ); return; // else empty the container } else { this.iconContainer.html( '' ); } // Set an array of current page icons iconsPaged = iconsPaged.slice( offset, offset + this.settings.iconsPerPage ); this.iconsPaged = iconsPaged; // List icons /*for (var i = 0, item; item = iconsPaged[i++];) { // Set the icon title var flipBoxTitle = item; $.grep(this.settings.source, $.proxy(function (e, i) { if (e === item) { flipBoxTitle = this.searchValues[i]; return true; } return false; }, this)); // Set the icon box $('', { html: '', 'class': 'fip-box', title: flipBoxTitle }).appendTo(this.iconContainer); }*/ }, setContainerSelectedItems: function () { // If no empty icon is allowed and no current value is set or current value is not inside the icon set if ( ! this.settings.emptyIcon && (! this.element.val() || $.inArray( this.element.val(), this.settings.source ) === - 1) ) { // Get the first icon this.setSelectedIcon( this.iconsPaged[ 0 ] ); } else if ( $.inArray( this.element.val(), this.settings.source ) === - 1 ) { // Set empty this.setSelectedIcon(); } else { // Set the default selected icon even if not set this.setSelectedIcon( this.element.val() ); } }, /** * Set Highlighted icon */ setHighlightedIcon: function () { this.iconContainer.find( '.current-icon' ).removeClass( 'current-icon' ); if ( this.currentIcon ) { this.iconContainer.find( '[data-fip-value="' + this.currentIcon + '"]' ).parent( 'span' ).addClass( 'current-icon' ); } }, /** * Set selected icon * * @param {string} theIcon */ setSelectedIcon: function ( theIcon ) { if ( theIcon === this.settings.iconBlockClass ) { theIcon = ''; } // Check if attribute is to be used if ( this.settings.useAttribute ) { if ( theIcon ) { this.iconPicker.find( '.selected-icon' ).html( '' ); } else { this.iconPicker.find( '.selected-icon' ).html( '' ); } // Use class } else { this.iconPicker.find( '.selected-icon' ).html( '' ); } // Set the value of the element and trigger change event this.element.val( (theIcon === '' ? this.settings.emptyIconValue : theIcon ) ).trigger( 'change' ); if ( this.triggerEvent !== null ) { // Trigger other events for ( var eventKey in this.triggerEvent ) { this.element.trigger( this.triggerEvent[ eventKey ] ); } } this.currentIcon = theIcon; this.setHighlightedIcon(); }, /** * Open/close popup (toggle) */ toggleIconSelector: function () { this.open = (! this.open) ? 1 : 0; this.iconPicker.find( '.selector-popup' ).slideToggle( 300 ); this.iconPicker.find( '.selector-button i' ).toggleClass( this.settings.iconDownClass ); this.iconPicker.find( '.selector-button i' ).toggleClass( this.settings.iconUpClass ); if ( this.open ) { this.iconPicker.find( '.icons-search-input' ).focus().select(); if ( ! this.initialized ) { this.renderIconContainer(); this.renderIcons(); this.initialized = true; } } }, renderIcons: function () { for ( var i = 0; i < this.iconsPaged.length; i ++ ) { var item = this.iconsPaged[ i ]; // Set the icon title var flipBoxTitle = item; $.grep( this.settings.source, $.proxy( function ( e, i ) { if ( e === item ) { flipBoxTitle = this.searchValues[ i ]; return true; } return false; }, this ) ); // Set the icon box $( '', { html: '', 'class': 'fip-box', title: flipBoxTitle } ).appendTo( this.iconContainer ); } this.setContainerSelectedItems(); }, /** * Reset search */ resetSearch: function () { // Empty input this.iconPicker.find( '.icons-search-input' ).val( '' ); // Reset search icon class this.searchIcon.removeClass( this.settings.iconCancelClass ); this.searchIcon.addClass( this.settings.iconSearchClass ); // Go back to page 1 and remove back arrow this.iconPicker.find( '.selector-arrow-left' ).hide(); this.currentPage = 1; this.isSearch = false; // Rerender icons this.renderIconContainer(); this.renderIcons(); // Restore pagination if needed if ( this.totalPage > 1 ) { this.iconPicker.find( '.selector-arrow-right' ).show(); } } }; // Lightweight plugin wrapper $.fn.vcFontIconPicker = function ( options ) { // Instantiate the plugin this.each( function () { if ( ! $.data( this, "vcFontIconPicker" ) ) { $.data( this, "vcFontIconPicker", new Plugin( this, options ) ); } } ); // setIcons method this.setIcons = $.proxy( function ( newIcons, iconSearch ) { if ( undefined === newIcons ) { newIcons = false; } if ( undefined === iconSearch ) { iconSearch = false; } this.each( function () { $.data( this, "vcFontIconPicker" ).settings.source = newIcons; $.data( this, "vcFontIconPicker" ).settings.searchSource = iconSearch; $.data( this, "vcFontIconPicker" ).initSourceIndex(); $.data( this, "vcFontIconPicker" ).resetSearch(); $.data( this, "vcFontIconPicker" ).loadIcons(); } ); }, this ); // destroy method this.destroyPicker = $.proxy( function () { this.each( function () { if ( ! $.data( this, "vcFontIconPicker" ) ) { return; } // Remove the iconPicker $.data( this, "vcFontIconPicker" ).iconPicker.remove(); // Reset the CSS $.data( this, "vcFontIconPicker" ).element.css( { visibility: '', top: '', position: '', zIndex: '', left: '', display: 'block', height: '', width: '', padding: '', margin: '', border: '', verticalAlign: '' } ).show(); // destroy data $.removeData( this, "vcFontIconPicker" ); } ); }, this ); // reInit method this.refreshPicker = $.proxy( function ( newOptions ) { if ( ! newOptions ) { newOptions = options; } // First destroy this.destroyPicker(); // Now reset this.each( function () { if ( ! $.data( this, "vcFontIconPicker" ) ) { $.data( this, "vcFontIconPicker", new Plugin( this, newOptions ) ); } } ); }, this ); return this; }; })( jQuery ); # Changelog ## [Unreleased] ## [1.0.4] - 2024-05-02 ### Fixed - Fix implicit nullable deprecation warning for PHP 8.4 ## [1.0.3] - 2022-01-10 ### Changed - Update PHPstan to 1.0 - Switched to GitHub Actions ## [1.0.2] - 2020-07-15 ### Added - Minor performance improvements ## [1.0.1] - 2020-06-16 ### Fixed - When calling `Punycode::decode()`, the case flags array would fail to populate when given an empty array. ## [1.0.0] - 2020-06-09 - Initial release

Bonuses & Offers

GAMSTOP Self-Exclusion: How It Works & How Long It Lasts

You can exclude yourself from specific operators or all gambling operators in the UK. At Phone Bill Casino the option of online gambling provides an immense thrill and the opportunity to meet other players through the bingo or casino communities. GAMSTOP is a free service that enables you to Self-Exclude from participating online gambling companies licensed in Great Britain. All UK-licensed operators are required to check GamStop on registration and at login. You can extend your exclusion period or update your contact details by logging into your GamStop account. It’s a free service that allows you to block yourself from all UK-licensed gambling websites and apps with a single registration.

This will block your access to any online gambling sites and as such reduce the temptation of registering with another. For many operators there is an automatic minimum 6 months exclusion period, but you can request more. If you then attempt to access your account it will be blocked by the operator for that predetermined period of time, which is usually between six months and five years. The premise is pretty simple, in that you can choose to contact a gambling operator and block yourself from playing or betting on that site for a specific period of time. This is where the idea of being able to opt out of casino gaming comes into play, by blocking gambling sites; so let us tell you a little more about the self-exclusion process. GamStop covers every single online gambling operator licensed in Great Britain.

If you are looking to self-exclude, below is a step-by-step guide on how to do so. This is a helpful tool for individuals who may be experiencing gambling harms and wish to take control of their behaviour. Should you find individual self-exclusion difficult, then there is always the option of using blocking software. Within that section there should be a self-exclusion page (you can use the search options to find it if you struggle). For many of the large gambling companies you will find a ‘responsible gambling’ page, which tends to be at the bottom of the site. We will provide you with details of the National Gambling Helpline, should these issues resonate with you and you feel that further support may be needed.

Deciding to self-exclude from an online casino can feel like a significant step — and it is. Playing at offshore sites while self-excluded is legal in the UK but defeats the purpose of self-exclusion and means you lose UKGC consumer protections — slow payouts, withdrawal voids and unfair terms become real risks. Unlicensed offshore casinos are not bound by GAMSTOP. UKGC-licensed casinos must refund any deposits made by a GAMSTOP-registered player.

If you are considering self-exclusion, you may wish to register with GAMSTOP. For more information on how to limit your exposure to ads on social media and some other online platforms please follow this link. Due to the nature of these sites, which are not linked to our membership data bases, it is not otherwise possible to prevent you from receiving or seeing gaming related messages that may be issued to friends or followers.

casino self-exclusion UK

Most of these sectors, apart from the online sector, offer their own industry-wide exclusion schemes, which may be worth considering. If you decide to self-exclude from our businesses, we strongly advise that you also exclude yourself from all other forms of gambling that you may use such as bookmakers, arcades or betting shops. The minimum period of self-exclusion you can request is six months, and your exclusion will automatically remain in force for a further period of six months at which time it will then lapse.

Bonuses & Offers

You sign up once, choose your duration, and within 24 hours your details propagate to every operator’s systems. So how does GAMSTOP self-exclusion work? GAMSTOP exists precisely because individual exclusions don’t scale. People assume deleting an account does the same job.

Google acts as data processor on our behalf, further information is available in Google Cloud Platform Service Specific Terms (opens in new tab) and Google’s Cloud Data Processing Addendum (opens in new tab). Should you have a concern or complaint about SENSE please email or write to SENSE. You can also find more detailed answers to any questions you may have via our Q&A page, accessible from the button below. If you want to complain about a gambling business or need further help please contact us. We are unable to provide refunds for any money you have spent gambling.

Individual site self-exclusion has a minimum 6-month period at UKGC sites. Once registered, you must wait for the full exclusion period to expire. The operator may require you to confirm your identity and will typically apply a cooling-off period before reactivating your account. The software is designed to be difficult to circumvent or uninstall during the exclusion period.

casino self-exclusion UK

Contact any branch directly to begin a land-based self-exclusion. If you registered for 1 or 5 years, you must wait the full period before you can even request removal. Modern UK banks offer built-in gambling blocks that prevent your debit card from being used at gambling merchants. Individual bookmakers (Ladbrokes, Coral, Betfred) also operate shop-level exclusions.

Step-by-step process for removing your GamStop registration after the exclusion period. Contact the operator directly after the minimum exclusion period (6 months for UKGC sites). All UKGC-licensed online operators are required to check this database and block matching accounts. This includes details on how to self-exclude from other gambling sectors not covered by SENSE, such as online gambling, High Street machine arcades (AGCs), betting shops and bingo clubs. You will be blocked from gambling with all online gambling companies licensed in Great Britain for 6 months, 1 year, 5 years or 5 years with auto-renewal.

This includes major brands (Bet365, William Hill, Ladbrokes, Sky Bet, 888, Betfair), all their subsidiary brands, and smaller operators holding UKGC licences. A player who registers at 25 will not regain access to UKGC gambling until they’re 30. One year provides enough time for habits to change, for financial recovery to begin, and for the player to establish alternative routines that don’t involve gambling. The one-year exclusion extends the same comprehensive block for a longer period.

casino self-exclusion UK

Following the introduction of the UK Gambling Commission in 2007, the option of self-exclusion must be provided on UK gambling sites to legally comply with their rules and regulations. You will be unable to remove your Self-Exclusion until the exclusion period you chose has expired. Once removed we will then apply a 24-hour cooling off period before your account is reopened/access to the product/s is allowed.

If you are applying a product Self-Exclusion, unless all three exclusions of Sky Bet, Sky Gaming and Sky Poker have been applied, this gamstop exclusion will apply only to you Sky Betting and Gaming Account. Remember – Once you enter into a Self-Exclusion this cannot be removed from your account. A Self-Exclusion can be set between a period of 6 months and 5 years, or permanently (only available when selecting an ‘all product’ Self-Exclusion).

The period of time this can be for is a minimum of six months up to a maximum of five years, extended to a maximum of seven if not removed. A part of the UK Gambling Commission’s rules and regulations for those holding a remote licence (3.5.4 – Self-exclusion – Remote ordinary code), it sees a customer enter into a formal agreement with the operator not to gamble. It allows you to extend your self-exclusion status for an additional period if you feel it is necessary. You can do this during the enrolment process or at any time afterwards. We advise that you set up an account to more easily manage, extend and renew your exclusion.

Step 4: Confirm Your Registration

casino self-exclusion UK

This means that major brands such as Bet365, William Hill, Ladbrokes, Paddy Power, Sky Bet, and hundreds of others are all required to honour GamStop registrations. Operators and schemes are expected to handle data responsibly and use it to apply protections. Self-exclusion involves sharing personal identifying information so restrictions can be enforced. If you still receive messages, it can be worth checking your communication preferences and ensuring you are correctly registered with the scheme you chose. This turns self-exclusion into a visible success story you can build on.

casino self-exclusion UK

Their services include live chat with advisors, email support, online peer support groups, self-help resources, and a dedicated smartphone app for people in recovery. Problem gambling, sometimes called gambling disorder or compulsive gambling, is characterised by an inability to control gambling behaviour despite negative consequences. Many internet service providers also offer parental control settings that can be configured to block gambling sites. However, spread betting firms that are regulated exclusively by the Financial Conduct Authority (FCA) rather than the Gambling Commission are not part of the GamStop scheme. Any bonus funds or free spins that were active at the time of exclusion are typically forfeited, though real money balances must be returned.

Therefore, you will not be able to access your account until the time has passed. Normally, you will not have access to your account at this time. These cover casinos, betting shops, bingo halls and adult arcades. Many sites offer a range of cooling-off periods and shorter time-outs. They can provide additional protection from unlicensed sites and “gambling adjacent” areas like trading or crypto. GAMSTOP is free and easy and covers all legal UK bookies, casinos, poker rooms, and bingo sites.

  • To provide a ‘full picture’ of all the land-based self-exclusions as per your request, we have included IHL in the information below.
  • Moreover, self-exclusion alone is often insufficient to address the underlying issues of gambling addiction.
  • Bank-level gambling blocks work on payment processing category codes, which means they may not catch every gambling transaction – particularly at some cryptocurrency exchanges.
  • This will block your access to any online gambling sites and as such reduce the temptation of registering with another.
  • You cannot cancel or shorten your exclusion once registered.
  • After four years and six months has passed, you will be able to turn off auto renewal from your GAMSTOP account to prevent another further five-year Minimum Exclusion Period from beginning.

This adds a significant additional barrier, particularly because most banks build in a 48-hour cooling-off period before the block can be removed. Most major UK banks now offer a free gambling block that prevents your debit card from being used at any merchant categorised as gambling. GamStop sits at the operator level, but you can add protection at the device level, the bank level, and the network level. The most effective approach to self-exclusion combines several layers. If you share devices, you may want to use software-level blocks (BetBlocker, Gamban) which apply at the device level rather than the account level.

For the full step-by-step process, see our guide on how to remove GamStop. If you do not actively contact GamStop to request removal, the exclusion extends for a further 7 years. When you register with GamStop at gamstop.co.uk, your personal details are added to a centralised database. Here, we cover the essentials within the context of the broader self-exclusion landscape.

Many people choose to extend their exclusion as they recognise the continued benefits of staying away from online gambling. GamStop is suitable for people experiencing problem gambling, those who want a preventative measure, or anyone who simply wants to take time away from online betting. By registering with GamStop, you voluntarily exclude yourself from all gambling websites and apps operated by companies licensed by the UK Gambling Commission. If you are registered in a tournament at the time of exclusion, operators have varying policies, but most will remove you from pending tournaments and refund your entry fees. The UKGC regularly audits operators to ensure proper integration with the scheme and has issued significant fines to companies found to have allowed self-excluded customers to gamble.

Gamban, GamBlock, and BetFilter are all designed specifically with gambling in mind and will block any gambling websites or adverts from being accessed on your computer. With 24/7 access to various different gambling channels, be it online or late night physical locations, it’s very easy to feed the habit, and many people believe that global recession is also a contributing factor. Licensees should have, and put into effect, policies and procedures which recognise, seek to guard against and otherwise address, the fact that some individuals who have self-excluded might attempt to breach their exclusion without entering a gambling premises, for example, by getting another to gamble on their behalf. The requirement to take positive action in person or over the phone is purely to a) check that the customer has considered the decision to access gambling again and allow them to consider the implications; and b) implement the one day cooling-off period and explain why this has been put in place. Please note that the Commission does not require the licensee to carry out any particular assessment or make any judgement as to whether the previously self-excluded individual should again be permitted access to gambling.

It offers players the opportunity to voluntarily exclude themselves from gambling at a national level through a single registration process. Self-exclusion does not prevent you from gambling with unlicensed operators — always check that any gambling site holds a Gambling Commission licence. Self-exclusion is legally binding on operators — if an operator allows you to gamble during your exclusion period, report it to the Gambling Commission.

Scroll to Top