/** * 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

Wat is deze vloeibare gel en hoe verschilt het van pillen?

Kamagra Oral Jelly Kopen: Zo Gebruik Je Het Snel en Gemakkelijk

Kamagra oral jelly is een gelvorm van het middel sildenafil, dat wordt gebruikt bij erectiestoornissen en snel door het lichaam wordt opgenomen via het mondslijmvlies. Het werkt door de bloedtoevoer naar de penis te verbeteren, waardoor een erectie mogelijk wordt na seksuele stimulatie, en de werking treedt doorgaans binnen 15 tot 30 minuten in. De praktische toepassing is eenvoudig: de inhoud van één sachet kan direct worden ingenomen of met wat water worden gemengd, zonder dat er tabletten hoeven te worden doorgeslikt. Deze vorm biedt een flexibele dosering en een comfortabel alternatief voor mannen die moeite hebben met het slikken van pillen.

Wat is deze vloeibare gel en hoe verschilt het van pillen?

Kamagra Oral Jelly is een transparante, vloeibare gel die sildenafil bevat, dezelfde werkzame stof als in de bekende pilvorm. Het grootste praktische verschil zit in de opnamesnelheid: de gel wordt via het mondslijmvlies deels direct opgenomen, waardoor de werking vaak binnen 15–20 minuten begint, tegenover 30–60 minuten bij een pil. Daarnaast is de gel flexibeler in doseren – je kunt de tube of sachet in halve of kwart porties verdelen, wat bij een tablet lastiger is. Voor mensen met slikproblemen of maagklachten is de gel vaak beter verdraagbaar, omdat hij geen vaste massa vormt die moet oplossen in de maag. Let op: de smaak is sterk (bijv. sinaasappel of munt) en kan tijdelijk een licht prikkelend gevoel geven. Hoewel de gel sneller lijkt te werken, is de totale werkingsduur vergelijkbaar met pillen, dus plan niet anders dan je gewend bent. Praktisch gezien: neem de gel niet met een vette maaltijd, want dat vertraagt de opname net als bij pillen.

De samenstelling en werkzame stof in de gel uitgelegd

De werkzame stof in Kamagra Oral Jelly is **sildenafilcitraat**, exact dezelfde actieve component als in Viagra-pillen, maar dan in een vloeibare dragervorm. Deze gel bevat naast sildenafil een mengsel van water, zoetstoffen en smaakstoffen, waardoor de stof direct door het mondslijmvlies wordt opgenomen. Anders dan een tablet, die eerst in de maag moet oplossen, bypasset de gel de spijsvertering gedeeltelijk. Dat betekent dat de werkzame stof sneller in de bloedbaan terechtkomt, doorgaans binnen 15 tot 30 minuten, en dat de absorptie consistenter is. Omdat de dosis sildenafil (meestal 100 mg per sachet) al volledig is opgelost, hoef je niet te vertrouwen op een afbraakproces in het lichaam.

De samenstelling van Kamagra Oral Jelly draait om vooraf opgelost sildenafilcitraat in een smaakvolle vloeistof, wat leidt tot een snellere en betrouwbaardere opname dan een pil.

Waarom een gel sneller door het lichaam wordt opgenomen dan een tablet

Waarom een gel sneller door het lichaam wordt opgenomen dan een tablet zit hem in de voorbereiding. Een gel is al vloeibaar, dus de werkzame stof hoeft niet eerst in de maag uiteen te vallen zoals een vaste pil. Daardoor komt het sildenafil direct in het maagdarmkanaal terecht en kan het via het slijmvlies de bloedbaan in. Tabletten moeten eerst oplossen en dat kost tijd, terwijl een gel dankzij de dunne consistentie sneller in het bloed wordt opgenomen. Je merkt het effect daardoor meestal binnen twintig tot dertig minuten, terwijl een pil vaak een uur of langer nodig heeft. Kortom, de vloeibare vorm maakt het verschil in snelheid.

Omdat een gel al vloeibaar is, wordt sildenafil direct opgenomen via het maagslijmvlies, waardoor het effect veel sneller optreedt dan bij een tablet die eerst moet oplossen.

Hoe werkt dit middel in het lichaam en wanneer merk je het effect?

kamagra oral jelly

Kamagra oral jelly bevat sildenafil, dat de werking van het enzym PDE5 remt. Hierdoor blijft cyclisch GMP langer actief, wat de gladde spieren in de bloedvaten van de penis ontspant en de bloedtoevoer stimuleert. Je merkt het effect doorgaans binnen 15 tot 30 minuten na inname, afhankelijk van of je maag leeg is. Een vette maaltijd kan de opname vertragen, waardoor het langer duurt voordat je erectie op gang komt. De werkzame stof zorgt alleen voor een erectie bij seksuele prikkeling; zonder opwinding gebeurt er niets. Het piekeffect ligt tussen 30 en 60 minuten en houdt ongeveer 4 tot 6 uur aan. Inname via de mond zorgt voor een snellere resorptie dan pillen, omdat de zachte gel direct via het mondslijmvlies wordt opgenomen.

Het werkingsmechanisme: welke processen worden gestimuleerd?

Bij Kamagra Oral Jelly draait het werkingsmechanisme om het stimuleren van de bloedtoevoer naar de penis. De werkzame stof sildenafil remt het enzym PDE5, waardoor het stofje cGMP niet wordt afgebroken. Dit proces zorgt ervoor dat de gladde spieren in de bloedvaten ontspannen, wat de doorbloeding direct verhoogt. Die verhoogde bloedtoestroom is precies wat nodig is voor een stevige erectie bij seksuele opwinding. Zonder prikkel gebeurt er dus weinig, omdat het systeem pas actief wordt wanneer je lichaam signalen afgeeft. Het effect merk je meestal binnen 30 tot 60 minuten, afhankelijk van hoe snel je maag leeg is. De processen die gestimuleerd worden:

  1. Ontspanning van de bloedvatwanden in het zwellichaam.
  2. Versnelde aanvoer van stikstofmonoxide, wat de vaatverwijding optimaliseert.
  3. Verhoogde opname van zuurstofrijk bloed in de penisweefsels.

De gemiddelde starttijd en hoe lang het effect aanhoudt

De gemiddelde starttijd van Kamagra Oral Jelly ligt doorgaans tussen de 15 en 30 minuten na inname op een lege maag, afhankelijk van uw stofwisseling en de maagvulling. Het effect houdt gemiddeld vier tot zes uur aan, met een piekwerking rond het eerste uur. Na deze periode neemt de werkzaamheid geleidelijk af, maar lichte effecten kunnen tot acht uur merkbaar blijven. De gemiddelde starttijd en hoe lang het effect aanhoudt zijn dus voorspelbaar, maar variëren per individu; een vette maaltijd vertraagt de opname en verlengt de starttijd tot ongeveer 45–60 minuten, terwijl de werkingsduur ongewijzigd blijft.

kamagra oral jelly

Vraag: Hoe snel werkt Kamagra Oral Jelly en hoe lang duurt het voordat het is uitgewerkt?
U merkt het effect meestal binnen 15–30 minuten, en het houdt vier tot zes uur aan. Bij een volle maag kan de starttijd oplopen tot een uur, maar de totale duur blijft ongeveer gelijk.

kamagra oral jelly

Hoe gebruik je de gel op de juiste manier voor het beste resultaat?

De gel uit de sachet moet je ongeveer 15 tot 30 minuten voor de verwachte activiteit leegknijpen op je tong, en dan direct doorslikken met een slok water. Het is cruciaal dat je de volledige inhoud in één keer gebruikt, want een halve dosis later toevoegen verstoort de opname. Neem de gel niet op een volle maag in, vooral niet na een vette maaltijd, omdat dit de werking vertraagt en het resultaat onvoorspelbaar maakt. Ik adviseren je om eerst een klein beetje op je tong te laten smelten, zodat de werkzame stof via het slijmvlies snel in je bloedbaan komt, maar daarna wél goed door te spoelen.

Wacht minimaal 30 minuten na inname voordat je stimulatie verwacht, want zonder seksuele prikkeling heeft de gel geen effect.

Bewaar de tube op kamertemperatuur en gebruik de gel maximaal één keer per 24 uur voor een veilig en consistent resultaat.

Stap-voor-stap: de juiste dosering en het moment van innemen

Voor het beste resultaat met Kamagra Oral Jelly bepaalt u de dosering stapsgewijs; start altijd met een halve sachet van 50 mg om uw tolerantie te peilen. Neem de kamagra bestellen gel ongeveer 30 tot 60 minuten vóór de seksuele activiteit in, bij voorkeur op een lege maag voor een snellere opname. De werkzame stof bereikt na ongeveer een uur zijn piek, waarna u tot vier uur een effectief venster heeft. Een volledige sachet van 100 mg is enkel nodig bij onvoldoende effect, maar overschrijd nooit één sachet per dag. Timing is cruciaal: vermijd een zware maaltijd vlak ervoor, omdat dit de werking vertraagt.

  • Kies de laagste effectieve dosis (50 mg) als eerste stap.
  • Wacht altijd minimaal 24 uur vóór een volgende inname.
  • Plan de inname circa één uur vóór het voorspel, niet eerder.
  • Neem de jelly niet samen met grapefruitsap, dit verstoort de opnamesnelheid.

Wat je moet vermijden (vet eten, alcohol) vlak voor gebruik

Vlak voor het innemen van Kamagra Oral Jelly is het cruciaal om bepaalde voedings- en genotsmiddelen te vermijden, omdat deze de opname van het werkzame sildenafil direct beïnvloeden. Een vetrijke maaltijd vertraagt de maaglediging, waardoor de gel pas veel later in de bloedbaan komt en het piekmoment van de werking uitblijft of afzwakt. Alcohol daarentegen kan de vaatverwijdende werking tegengaan en verhoogt de kans op duizeligheid of een bloeddrukdaling, terwijl het erectievermogen zelf ook onderdrukt wordt. De logica is simpel: hoe leger en neutraler de maag, hoe voorspelbaarder en sterker het effect van de gel.

  • Vermijd friet, vette sauzen of fastfood binnen 2 uur voor gebruik.
  • Drink geen alcohol in de uren voorafgaand aan de inname.
  • Sla zware, olieachtige maaltijden over; een lichte snack is veiliger.

Welke smaken en verpakkingsvormen zijn er en wat past bij jou?

Bij Kamagra Oral Jelly heb je de keuze uit diverse smaken zoals aardbei, sinaasappel, vanille, banaan en ananas. De verpakking is een handige, scheurvaste sachet van 100 mg, die je direct kunt innemen zonder water. Past een fruitige smaak bij jou en vind je slikken lastig, dan is deze gelideaal. Kies voor een smaak die je niet associeert met medicijnen, zoals vanille als je zoet prefereert of sinaasappel voor een frisse toets. De gel werkt sneller dan tabletten, dus de verpakking en smaak bepalen vooral jouw comfort. Voor discrete momenten onderweg is een enkele sachet perfect; voor thuis kun je een doos met meerdere smaken overwegen. Kortom: de ideale keuze hangt af van jouw smaakvoorkeur en of je waarde hecht aan gemak of variatie.

De beschikbare fruitsmaken en hoe ze de inname makkelijker maken

De beschikbare fruitsmaken van Kamagra Oral Jelly, zoals aardbei, sinaasappel, ananas en banaan, maskeren de bittere grondstof effectief. Deze zoete, vloeibare gel zorgt ervoor dat de inname aanzienlijk makkelijker wordt vergeleken met tabletten. Je hoeft de jelly niet met water door te slikken; de zachte consistentie glijdt soepel naar binnen, wat de drempel voor gebruik verlaagt. Doordat de fruitsmaken de inname veraangenamen, is het innemen een snelle handeling zonder kauw- of slikproblemen. Bovendien maakt de vertrouwde fruitsmaak het een discreet en prettig moment, in plaats van een medisch onaangename ervaring.

  • Zoete smaken verbergen de bittere smaak volledig.
  • Geen water nodig, wat inname onderweg vergemakkelijkt.
  • Vloeibare textuur zorgt voor moeiteloos doorslikken.
  • Verkrijgbaar in meerdere varianten, waardoor afwisseling mogelijk is.

Hoe je de sachet opent en het beste een half zakje bewaart

Het openen van een Kamagra Oral Jelly sachet doe je door de inkeping aan de boven- of zijkant stevig vast te pakken en het folie langs de perforatie af te scheuren; knip bij twijfel liever met een schaar om morsen te voorkomen. Voor het bewaren van een half zakje is luchtdicht afsluiten essentieel: vouw de opening strak dubbel, klem hem af met een binderclip of plak er tape overheen, en zet het zakje rechtop in de koelkast. Gebruik het restant binnen 24 uur, want de gel droogt uit en verliest werkzaamheid. Schud het zakje voor hergebruik zachtjes, want de werkzame stof kan zich afscheiden. Nooit een half geopend sachet bij kamertemperatuur bewaren, want vocht en warmte versnellen afbraak.

Vraag: Wat is de beste manier om een half zakje Kamagra Oral Jelly te bewaren?
Antwoord: Vouw de opening dicht, klem af met een clip, en plaats het rechtop in de koelkast; gebruik binnen 24 uur voor optimale potentie.

Wat zijn de belangrijkste voordelen en aandachtspunten voor nieuwe gebruikers?

Voor nieuwe gebruikers biedt kamagra oral jelly als snelwerkend middel vooral het voordeel van een flexibele dosering en een gemakkelijke inname zonder water. De gel wordt snel opgenomen, waardoor het effect doorgaans binnen twintig tot dertig minuten optreedt. Een belangrijk aandachtspunt is echter de eerste ervaring met de werkzame stof; begin met een lage dosis om de eigen tolerantie te testen en bijwerkingen zoals hoofdpijn of blozen te beperken. Daarnaast is het cruciaal om de inname te plannen rond een lichte maaltijd, omdat een vette maaltijd de opname vertraagt. Nieuwe gebruikers moeten ook weten dat dit middel geen opwinding veroorzaakt, maar alleen reageert op seksuele stimulatie. Tot slot geldt als belangrijkste aandachtspunt voor nieuwe gebruikers dat zij medische contra-indicaties, zoals hartklachten of het gebruik van nitraten, absoluut moeten uitsluiten. Het directe voordeel van gebruiksgemak weegt zwaar, maar vereist verantwoorde voorzichtigheid.

De belangrijkste pluspunten: flexibele dosering en geen water nodig

Een belangrijk pluspunt van Kamagra Oral Jelly is de flexibele dosering, omdat de gel verpakt is in sachets die je eenvoudig kunt verdelen. Je kunt hierdoor de hoeveelheid precies afstemmen op jouw behoefte, wat bij tabletten lastiger is. Daarnaast is er geen water nodig; de gel wordt direct in de mond opgenomen en kan ook gemakkelijk worden doorgeslikt. Dit maakt het gebruik discreet en handig, vooral onderweg of op momenten dat er geen glas water beschikbaar is. De zachte consistentie zorgt bovendien voor een snelle opname, waardoor je niet hoeft te wachten op het uiteenvallen van een pil.

  • Dosering per sachet is eenvoudig aan te passen.
  • Direct inname zonder vloeistof is mogelijk.
  • Ideaal voor gebruik buitenshuis.

Waar je op moet letten bij een eerste keer: bijwerkingen en timing

Bij een eerste keer met Kamagra Oral Jelly is het essentieel om de werkingstijd en mogelijke bijwerkingen nauwkeurig te timen. De gel werkt doorgaans binnen 15–30 minuten, maar dit varieert per persoon; neem het daarom niet vlak voor het eten van een zware maaltijd, omdat dit de absorptie vertraagt. Start idealiter met de laagste dosis (25 mg) om je tolerantie te testen. Reken op een venster van 4–6 uur waarin de werking optimaal is. Bijwerkingen zoals hoofdpijn, verstopte neus of warmtegevoel kunnen tijdelijk optreden; wacht minimaal 24 uur voordat je opnieuw doseert. Vermijd alcohol en grapefruitsap, want die versterken de bijwerkingen en verstoren de timing.

kamagra oral jelly

  • Effect na 15–30 minuten op nuchtere maag; piek na 1 uur.
  • Eerste keer: kies 25 mg om bijwerkingen te minimaliseren.
  • Hoofdpijn en blozen zijn normaal en verdwijnen binnen uren.
  • Minimaal 24 uur wachten tussen twee doses; niet combineren met alcohol.

Welke vragen stellen gebruikers het vaakst over deze gelvorm?

kamagra oral jelly

Gebruikers vragen het vaakst welke vragen stellen gebruikers het vaakst over deze gelvorm bij Kamagra Oral Jelly. De meest gestelde vragen gaan over de exacte dosering in verhouding tot de sachetinhoud, namelijk 25 mg per 5 ml, en hoe dit zich verhoudt tot de standaard 100 mg tablet. Daarnaast vragen zij frequent naar de aanvangstijd en de invloed van een vette maaltijd op de absorptie van de gel. Men wil ook weten of de gel direct doorgeslikt moet worden of dat het in de mondholte moet blijven voor sneller effect. Onzekerheid bestaat over de verschil in sterkte tussen de smaken, hoewel dit identiek is. Tot slot is de houdbaarheid na opening van de sachet een veelgestelde vraag, aangezien de gel vaak in meerdere keren gebruikt wordt.

Is het veilig om dit dagelijks te gebruiken?

Een veelgehoorde vraag is of het veilig is om Kamagra Oral Jelly dagelijks te gebruiken. Het antwoord is duidelijk: **dagelijks gebruik wordt sterk afgeraden**. Deze gelvorm bevat sildenafil, een krachtig middel dat het hart- en vaatstelsel tijdelijk belast. Regelmatig gebruik verhoogt het risico op bijwerkingen zoals hoofdpijn, duizeligheid en een plotselinge bloeddrukdaling. Bovendien kan dagelijkse inname leiden tot gewenning, waardoor de natuurlijke erectie zonder medicatie moeilijker wordt. Het is essentieel om telkens minstens 24 uur te wachten tussen twee doseringen. Langdurig dagelijks gebruik kan ook schadelijk zijn voor de nieren en lever. Raadpleeg daarom altijd een arts voordat u de frequentie overweegt.

  • Dagelijks gebruik verhoogt de kans op cardiovasculaire complicaties.
  • Gewenning kan de natuurlijke erectie op lange termijn aantasten.
  • Een pauze van 24 uur tussen doseringen is absoluut noodzakelijk.
  • Bij dagelijks gebruik is medisch toezicht onmisbaar.

Combineer je dit middel met andere middelen of medicatie?

Een veelgestelde vraag over kamagra oral jelly combineren met andere middelen betreft nitraten (bijv. nitroglycerine) en alfablokkers, omdat dit een forse bloeddrukdaling kan veroorzaken. Ook alcohol kan de werking versterken en bijwerkingen zoals duizeligheid verergeren. Gebruik van andere erectiemiddelen (sildenafil, tadalafil) tegelijkertijd is af te raden, omdat dit het risico op priapisme en cardiovasculaire belasting verhoogt. Zelfs grapefruitsap kan de afbraak van sildenafil remmen, waardoor de concentratie in het bloed onbedoeld stijgt. Vraag bij twijfel altijd een arts of apotheker om interacties te controleren, vooral bij medicatie voor hypertensie of hartritmestoornissen.

Combineer kamagra oral jelly nooit met nitraten, alfablokkers of andere PDE5-remmers; overleg altijd met een zorgverlener over uw volledige medicatielijst.

Scroll to Top