HEX
Server: Apache
System: Linux v38079.2is.nl 3.10.0-1160.119.1.el7.x86_64 #1 SMP Tue Jun 4 14:43:51 UTC 2024 x86_64
User: democfellows (10015)
PHP: 8.1.34
Disabled: opcache_get_status
Upload Files
File: /var/www/vhosts/creativefellows.nl/test.creativefellows.nl/liez/public/js/slide-to-submit.js
// slide-to-submit.js version 0.1.1

(function($) {
	$.fn.extend({
		slideToSubmit: function(options) {
			var defaults = {
				graceZone: 100,
				successText: 'Sending...',
				errorText: 'Check Required Fields',
				submitDelay: 500,
				container: $(this),
				done: function (){}
			}
			var options = $.extend(defaults, options);

			(function($) {
				$.fn.isValid = function() {
				return document.getElementById(this[0].id).checkValidity();
				};
			})(jQuery);

			// Runs after you've dragged and released
			function releaseSlideSubmit() {
				// If draggable item exitst
				if($('.slide-submit-dragging').length){

					var newpos_x = $('.slide-submit-dragging').position().left,
						max_x = $('.slide-submit-dragging').parent().outerWidth(),
						accepted_x = max_x - options.graceZone;

					if(newpos_x == '0'){
						// You clicked instead of dragged. Lets give you a hint.
						$('.slide-submit-dragging').animate({'left':'10px'},150);
						$('.slide-submit-dragging').animate({'left':'0px'},100);
						$('.slide-submit-dragging').animate({'left':'10px'},150);
						$('.slide-submit-dragging').animate({'left':'0px'},100);

					} else if (newpos_x >= accepted_x) {
						// Dragged all the way! Lets check validity
						var formID = $('.slide-submit-dragging').parents('form').attr('id');
						if ($('#'+formID).isValid()) {
							
							// Valid! Let's submit.
							$('.slide-submit-dragging').parent().find('.slide-submit-text').text(options.successText);
							$('.slide-submit-dragging').addClass('slide-submit-delay').animate({
								'left': max_x - $('.slide-submit-dragging').outerWidth()
							}, 150);
							  $('.slide-submit-dragging').parent().addClass('slide-success');
							setTimeout(function(){
								$('.slide-submit-delay').parents('form').find('input[type=submit]').click();
								$('.slide-submit-delay').removeClass('slide-submit-delay');
							}, options.submitDelay);
							
							options.done( options.container );
							
						} else {
							// Didn't validate, reset.
							$('.slide-submit-dragging').animate({
								'left': '0'
							}, 150);
							// Do you support reporting validity?
							function hasFormValidation() {
								return (typeof document.createElement( 'input' ).reportValidity == 'function');
							};
							if( hasFormValidation() ) {
								// Awesome, you support it. So let's report those errors
								var isValid = document.querySelector('#'+formID).reportValidity();
							} else {
								// Lame, dude. I guess we'll provide some text to clue them in.
								$('.slide-submit-dragging').parent().find('.slide-submit-text').text(options.errorText);
							}
						}
					} else {
						// Didn't drag enough, reset.
						$('.slide-submit-dragging').animate({
							'left': '0'
						}, 150);
					}
					// Remove class from dragged item
					$('.slide-submit-dragging').removeClass('slide-submit-dragging');
				}
			}

		// Mouse dragging
		(function($) {
			$.fn.slideSubmit = function(opt) {

				opt = $.extend({
					cursor: "move"
				}, opt);

				var $el = this;

				return $el.on("mousedown", function(e) {
					var $drag = $(this).addClass('slide-submit-dragging');
					var drg_h = $drag.outerHeight(),
						drg_w = $drag.outerWidth(),
						pos_x = $drag.offset().left + drg_w - e.pageX,
						max_x = $('.slide-submit-dragging').parent().outerWidth();
					$drag.parents().on("mousemove", function(e) {			
						$('.slide-submit-dragging').offset({
							left: e.pageX + pos_x - drg_w
						});
					});
					e.preventDefault(); // disable selection
				}).on("mouseup", function(e) {
					//releaseSlideSubmit();
				});


			}
		})(jQuery);
		$('.slide-submit-thumb').slideSubmit();

		window.addEventListener("mouseup", function(event) {;
			$('.slide-submit-dragging').parents().off('mousemove');
			releaseSlideSubmit();
		})

		// Touch dragging
		$.fn.draggable = function() {
			var offset = null;
			var start = function(e) {
				var orig = e.originalEvent;
				var pos = $(this).position();
				offset = {
					x: orig.changedTouches[0].pageX - pos.left,
					y: orig.changedTouches[0].pageY - pos.top
				};
			};
			var moveItem = function(e) {
				e.preventDefault();
				var orig = e.originalEvent;
				$(this).addClass('slide-submit-dragging').css({
					left: orig.changedTouches[0].pageX - offset.x
				});
			};
			var releaseItem = function(e){
				releaseSlideSubmit();
				e.preventDefault();
			};
			this.bind("touchstart", start);
			this.bind("touchmove", moveItem);
			this.bind("touchend", releaseItem);
		};
		$('.slide-submit-thumb').draggable();

		}
	});
})(jQuery);