mirror of
				https://github.com/mdbootstrap/mdb-ui-kit.git
				synced 2025-11-04 09:57:36 +03:00 
			
		
		
		
	Added the template folder.
The index.html file works. Copying the template folder, or using the structure of this folder, a new project can be started. This file includes the compiled CSS and the material JS file, alongwith the ripples CSS and JS files.
This commit is contained in:
		
							parent
							
								
									08a4e84585
								
							
						
					
					
						commit
						fb12ed245a
					
				
							
								
								
									
										48
									
								
								template/index.html
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										48
									
								
								template/index.html
									
									
									
									
									
										Normal file
									
								
							| 
						 | 
					@ -0,0 +1,48 @@
 | 
				
			||||||
 | 
					<html>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					<head>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						<link href="http://maxcdn.bootstrapcdn.com/bootstrap/3.2.0/css/bootstrap.min.css" rel="stylesheet">
 | 
				
			||||||
 | 
						<link href="material/ripples.css" rel="stylesheet">
 | 
				
			||||||
 | 
						<link href="material/material.css" rel="stylesheet">
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					</head>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					<body>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						<!-- Your site -->
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						<h1>
 | 
				
			||||||
 | 
							You can add your site here.
 | 
				
			||||||
 | 
						</h1>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						<h2>
 | 
				
			||||||
 | 
							To ensure that material-design theme is working, check out the buttons below.
 | 
				
			||||||
 | 
						</h2>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						<h3 class="text-muted">
 | 
				
			||||||
 | 
							If you can see the ripple effect on clicking them, then you are good to go!
 | 
				
			||||||
 | 
						</h3>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						<p class="bs-component">
 | 
				
			||||||
 | 
							<a href="javascript:void(0)" class="btn btn-default">Default</a>
 | 
				
			||||||
 | 
							<a href="javascript:void(0)" class="btn btn-primary">Primary</a>
 | 
				
			||||||
 | 
							<a href="javascript:void(0)" class="btn btn-success">Success</a>
 | 
				
			||||||
 | 
							<a href="javascript:void(0)" class="btn btn-info">Info</a>
 | 
				
			||||||
 | 
							<a href="javascript:void(0)" class="btn btn-warning">Warning</a>
 | 
				
			||||||
 | 
							<a href="javascript:void(0)" class="btn btn-danger">Danger</a>
 | 
				
			||||||
 | 
							<a href="javascript:void(0)" class="btn btn-link">Link</a>
 | 
				
			||||||
 | 
						</p>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						<!-- Your site ends -->
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						<script src="https://code.jquery.com/jquery-1.10.2.min.js"></script>
 | 
				
			||||||
 | 
						<script src="//maxcdn.bootstrapcdn.com/bootstrap/3.2.0/js/bootstrap.min.js"></script>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						<script src="material/ripples.js"></script>
 | 
				
			||||||
 | 
						<script src="material/material.js"></script>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					</body>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					</html>
 | 
				
			||||||
							
								
								
									
										3247
									
								
								template/material/material.css
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										3247
									
								
								template/material/material.css
									
									
									
									
									
										Normal file
									
								
							
										
											
												File diff suppressed because it is too large
												Load Diff
											
										
									
								
							
							
								
								
									
										84
									
								
								template/material/material.js
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										84
									
								
								template/material/material.js
									
									
									
									
									
										Normal file
									
								
							| 
						 | 
					@ -0,0 +1,84 @@
 | 
				
			||||||
 | 
					/* globals ripples */
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					$(function (){
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    if (ripples) {
 | 
				
			||||||
 | 
					        ripples.init(".btn:not(.btn-link), .navbar a, .nav-tabs a, .withripple");
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    var initInputs = function() {
 | 
				
			||||||
 | 
					        // Add fake-checkbox to material checkboxes
 | 
				
			||||||
 | 
					        $(".checkbox > label > input").not(".bs-material").addClass("bs-material").after("<span class=check></span>");
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        // Add fake-radio to material radios
 | 
				
			||||||
 | 
					        $(".radio > label > input").not(".bs-material").addClass("bs-material").after("<span class=circle></span><span class=check></span>");
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        // Add elements for material inputs
 | 
				
			||||||
 | 
					        $("input.form-control, textarea.form-control, select.form-control").not(".bs-material").each( function() {
 | 
				
			||||||
 | 
					            if ($(this).is(".bs-material")) { return; }
 | 
				
			||||||
 | 
					            $(this).wrap("<div class=form-control-wrapper></div>");
 | 
				
			||||||
 | 
					            $(this).after("<span class=material-input></span>");
 | 
				
			||||||
 | 
					            if ($(this).hasClass("floating-label")) {
 | 
				
			||||||
 | 
					                var placeholder = $(this).attr("placeholder");
 | 
				
			||||||
 | 
					                $(this).attr("placeholder", null).removeClass("floating-label");
 | 
				
			||||||
 | 
					                $(this).after("<div class=floating-label>" + placeholder + "</div>");
 | 
				
			||||||
 | 
					            }
 | 
				
			||||||
 | 
					            if ($(this).is(":empty") || $(this).val() === null || $(this).val() == "undefined" || $(this).val() === "") {
 | 
				
			||||||
 | 
					                $(this).addClass("empty");
 | 
				
			||||||
 | 
					            }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					            if ($(this).parent().next().is("[type=file]")) {
 | 
				
			||||||
 | 
					                $(this).parent().addClass("fileinput");
 | 
				
			||||||
 | 
					                var $input = $(this).parent().next().detach();
 | 
				
			||||||
 | 
					                $(this).after($input);
 | 
				
			||||||
 | 
					            }
 | 
				
			||||||
 | 
					        });
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    };
 | 
				
			||||||
 | 
					    initInputs();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    // Support for "arrive.js" to dynamically detect creation of elements
 | 
				
			||||||
 | 
					    // include it before this script to take advantage of this feature
 | 
				
			||||||
 | 
					    // https://github.com/uzairfarooq/arrive/
 | 
				
			||||||
 | 
					    if (document.arrive) {
 | 
				
			||||||
 | 
					        document.arrive("input, textarea, select", function() {
 | 
				
			||||||
 | 
					            initInputs();
 | 
				
			||||||
 | 
					        });
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    $(document).on("change", ".checkbox input", function() {
 | 
				
			||||||
 | 
					        $(this).blur();
 | 
				
			||||||
 | 
					    });
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    $(document).on("keyup change", ".form-control", function() {
 | 
				
			||||||
 | 
					        var self = $(this);
 | 
				
			||||||
 | 
					        setTimeout(function() {
 | 
				
			||||||
 | 
					            if (self.val() === "") {
 | 
				
			||||||
 | 
					                self.addClass("empty");
 | 
				
			||||||
 | 
					            } else {
 | 
				
			||||||
 | 
					                self.removeClass("empty");
 | 
				
			||||||
 | 
					            }
 | 
				
			||||||
 | 
					        }, 1);
 | 
				
			||||||
 | 
					    });
 | 
				
			||||||
 | 
					    $(document)
 | 
				
			||||||
 | 
					    .on("focus", ".form-control-wrapper.fileinput", function() {
 | 
				
			||||||
 | 
					        $(this).find("input").addClass("focus");
 | 
				
			||||||
 | 
					    })
 | 
				
			||||||
 | 
					    .on("blur", ".form-control-wrapper.fileinput", function() {
 | 
				
			||||||
 | 
					        $(this).find("input").removeClass("focus");
 | 
				
			||||||
 | 
					    })
 | 
				
			||||||
 | 
					    .on("change", ".form-control-wrapper.fileinput [type=file]", function() {
 | 
				
			||||||
 | 
					        var value = "";
 | 
				
			||||||
 | 
					        $.each($(this)[0].files, function(i, file) {
 | 
				
			||||||
 | 
					            console.log(file);
 | 
				
			||||||
 | 
					            value += file.name + ", ";
 | 
				
			||||||
 | 
					        });
 | 
				
			||||||
 | 
					        value = value.substring(0, value.length - 2);
 | 
				
			||||||
 | 
					        if (value) {
 | 
				
			||||||
 | 
					            $(this).prev().removeClass("empty");
 | 
				
			||||||
 | 
					        } else {
 | 
				
			||||||
 | 
					            $(this).prev().addClass("empty");
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					        $(this).prev().val(value);
 | 
				
			||||||
 | 
					    });
 | 
				
			||||||
 | 
					});
 | 
				
			||||||
							
								
								
									
										41
									
								
								template/material/ripples.css
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										41
									
								
								template/material/ripples.css
									
									
									
									
									
										Normal file
									
								
							| 
						 | 
					@ -0,0 +1,41 @@
 | 
				
			||||||
 | 
					/* Generated by less 1.7.5 */
 | 
				
			||||||
 | 
					.withripple {
 | 
				
			||||||
 | 
					  position: relative;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					.ripple-wrapper {
 | 
				
			||||||
 | 
					  position: absolute;
 | 
				
			||||||
 | 
					  top: 0;
 | 
				
			||||||
 | 
					  left: 0;
 | 
				
			||||||
 | 
					  z-index: 1;
 | 
				
			||||||
 | 
					  width: 100%;
 | 
				
			||||||
 | 
					  height: 100%;
 | 
				
			||||||
 | 
					  overflow: hidden;
 | 
				
			||||||
 | 
					  border-radius: 2px;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					.ripple {
 | 
				
			||||||
 | 
					  position: absolute;
 | 
				
			||||||
 | 
					  width: 20px;
 | 
				
			||||||
 | 
					  height: 20px;
 | 
				
			||||||
 | 
					  margin-left: -10px;
 | 
				
			||||||
 | 
					  margin-top: -10px;
 | 
				
			||||||
 | 
					  border-radius: 100%;
 | 
				
			||||||
 | 
					  background-color: rgba(0, 0, 0, 0.05);
 | 
				
			||||||
 | 
					  -webkit-transform: scale(1);
 | 
				
			||||||
 | 
					  -ms-transform: scale(1);
 | 
				
			||||||
 | 
					      transform: scale(1);
 | 
				
			||||||
 | 
					  -webkit-transform-origin: 50%;
 | 
				
			||||||
 | 
					  -ms-transform-origin: 50%;
 | 
				
			||||||
 | 
					      transform-origin: 50%;
 | 
				
			||||||
 | 
					  opacity: 0;
 | 
				
			||||||
 | 
					  pointer-events: none;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					.ripple.ripple-on {
 | 
				
			||||||
 | 
					  -webkit-transition: opacity 0.15s ease-in 0s, -webkit-transform 0.5s cubic-bezier(0.4, 0, 0.2, 1) 0.1s;
 | 
				
			||||||
 | 
					  transition: opacity 0.15s ease-in 0s, transform 0.5s cubic-bezier(0.4, 0, 0.2, 1) 0.1s;
 | 
				
			||||||
 | 
					  opacity: 1;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					.ripple.ripple-out {
 | 
				
			||||||
 | 
					  -webkit-transition: opacity 0.1s linear 0s !important;
 | 
				
			||||||
 | 
					  transition: opacity 0.1s linear 0s !important;
 | 
				
			||||||
 | 
					  opacity: 0;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
							
								
								
									
										130
									
								
								template/material/ripples.js
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										130
									
								
								template/material/ripples.js
									
									
									
									
									
										Normal file
									
								
							| 
						 | 
					@ -0,0 +1,130 @@
 | 
				
			||||||
 | 
					/* Copyright 2014+, Federico Zivolo, LICENSE at https://github.com/FezVrasta/bootstrap-material-design/blob/master/LICENSE.md */
 | 
				
			||||||
 | 
					/* globals CustomEvent */
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					var ripples = {
 | 
				
			||||||
 | 
					    init : function(withRipple) {
 | 
				
			||||||
 | 
					        "use strict";
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        // Cross browser matches function
 | 
				
			||||||
 | 
					        function matchesSelector(dom_element, selector) {
 | 
				
			||||||
 | 
					            var matches = dom_element.matches || dom_element.matchesSelector || dom_element.webkitMatchesSelector || dom_element.mozMatchesSelector || dom_element.msMatchesSelector || dom_element.oMatchesSelector;
 | 
				
			||||||
 | 
					            return matches.call(dom_element, selector);
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        // animations time
 | 
				
			||||||
 | 
					        var rippleOutTime = 100,
 | 
				
			||||||
 | 
					            rippleStartTime = 500;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        // Helper to bind events on dynamically created elements
 | 
				
			||||||
 | 
					        var bind = function(event, selector, callback) {
 | 
				
			||||||
 | 
					            document.addEventListener(event, function(e) {
 | 
				
			||||||
 | 
					                var target = (typeof e.detail !== "number") ? e.detail : e.target;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					                if (matchesSelector(target, selector)) {
 | 
				
			||||||
 | 
					                    callback(e, target);
 | 
				
			||||||
 | 
					                }
 | 
				
			||||||
 | 
					            });
 | 
				
			||||||
 | 
					        };
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        var rippleStart = function(e, target) {
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					            // Init variables
 | 
				
			||||||
 | 
					            var $rippleWrapper  = target,
 | 
				
			||||||
 | 
					                $el             = $rippleWrapper.parentNode,
 | 
				
			||||||
 | 
					                $ripple         = document.createElement("div"),
 | 
				
			||||||
 | 
					                elPos           = $el.getBoundingClientRect(),
 | 
				
			||||||
 | 
					                mousePos        = {x: e.clientX - elPos.left, y: e.clientY - elPos.top},
 | 
				
			||||||
 | 
					                scale           = "transform:scale(" + Math.round($rippleWrapper.offsetWidth / 5) + ")",
 | 
				
			||||||
 | 
					                rippleEnd       = new CustomEvent("rippleEnd", {detail: $ripple}),
 | 
				
			||||||
 | 
					                refreshElementStyle;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					            $ripplecache = $ripple;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					            // Set ripple class
 | 
				
			||||||
 | 
					            $ripple.className = "ripple";
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					            // Move ripple to the mouse position
 | 
				
			||||||
 | 
					            $ripple.setAttribute("style", "left:" + mousePos.x + "px; top:" + mousePos.y + "px;");
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					            // Insert new ripple into ripple wrapper
 | 
				
			||||||
 | 
					            $rippleWrapper.appendChild($ripple);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					            // Make sure the ripple has the class applied (ugly hack but it works)
 | 
				
			||||||
 | 
					            refreshElementStyle = window.getComputedStyle($ripple).opacity;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					            // Let other funtions know that this element is animating
 | 
				
			||||||
 | 
					            $ripple.dataset.animating = 1;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					            // Set scale value to ripple and animate it
 | 
				
			||||||
 | 
					            $ripple.className = "ripple ripple-on";
 | 
				
			||||||
 | 
					            $ripple.setAttribute("style", $ripple.getAttribute("style") + ["-ms-" + scale,"-moz-" + scale,"-webkit-" + scale,scale].join(";"));
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					            // This function is called when the animation is finished
 | 
				
			||||||
 | 
					            setTimeout(function() {
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					                // Let know to other functions that this element has finished the animation
 | 
				
			||||||
 | 
					                $ripple.dataset.animating = 0;
 | 
				
			||||||
 | 
					                document.dispatchEvent(rippleEnd);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					            }, rippleStartTime);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        };
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        var rippleOut = function($ripple) {
 | 
				
			||||||
 | 
					            console.log($ripple);
 | 
				
			||||||
 | 
					            // Clear previous animation
 | 
				
			||||||
 | 
					            $ripple.className = "ripple ripple-on ripple-out";
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					            // Let ripple fade out (with CSS)
 | 
				
			||||||
 | 
					            setTimeout(function() {
 | 
				
			||||||
 | 
					                $ripple.remove();
 | 
				
			||||||
 | 
					            }, rippleOutTime);
 | 
				
			||||||
 | 
					        };
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        // Helper, need to know if mouse is up or down
 | 
				
			||||||
 | 
					        var mouseDown = false;
 | 
				
			||||||
 | 
					        document.body.onmousedown = function() {
 | 
				
			||||||
 | 
					            mouseDown = true;
 | 
				
			||||||
 | 
					        };
 | 
				
			||||||
 | 
					        document.body.onmouseup = function() {
 | 
				
			||||||
 | 
					            mouseDown = false;
 | 
				
			||||||
 | 
					        };
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        // Append ripple wrapper if not exists already
 | 
				
			||||||
 | 
					        var rippleInit = function(e, target) {
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					            if (target.getElementsByClassName("ripple-wrapper").length === 0) {
 | 
				
			||||||
 | 
					                target.className += " withripple";
 | 
				
			||||||
 | 
					                var $rippleWrapper = document.createElement("div");
 | 
				
			||||||
 | 
					                $rippleWrapper.className = "ripple-wrapper";
 | 
				
			||||||
 | 
					                target.appendChild($rippleWrapper);
 | 
				
			||||||
 | 
					            }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        };
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        var $ripplecache;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        // Events handler
 | 
				
			||||||
 | 
					        // init RippleJS and start ripple effect on mousedown
 | 
				
			||||||
 | 
					        bind("mouseover", withRipple, rippleInit);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        console.log(withRipple);
 | 
				
			||||||
 | 
					        // start ripple effect on mousedown
 | 
				
			||||||
 | 
					        bind("mousedown", ".ripple-wrapper", rippleStart);
 | 
				
			||||||
 | 
					        // if animation ends and user is not holding mouse then destroy the ripple
 | 
				
			||||||
 | 
					        bind("rippleEnd", ".ripple-wrapper .ripple", function(e, $ripple) {
 | 
				
			||||||
 | 
					            if (!mouseDown) {
 | 
				
			||||||
 | 
					                rippleOut($ripple);
 | 
				
			||||||
 | 
					            }
 | 
				
			||||||
 | 
					        });
 | 
				
			||||||
 | 
					        // Destroy ripple when mouse is not holded anymore if the ripple still exists
 | 
				
			||||||
 | 
					        bind("mouseup", ".ripple-wrapper", function() {
 | 
				
			||||||
 | 
					            var $ripple = $ripplecache;
 | 
				
			||||||
 | 
					            if ($ripple.dataset.animating != 1) {
 | 
				
			||||||
 | 
					                rippleOut($ripple);
 | 
				
			||||||
 | 
					            }
 | 
				
			||||||
 | 
					        });
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					};
 | 
				
			||||||
		Loading…
	
		Reference in New Issue
	
	Block a user