Skip to content

Instantly share code, notes, and snippets.

View elmahdim's full-sized avatar

Mahmoud elmahdim

View GitHub Profile
@elmahdim
elmahdim / ng-googleMap
Created July 5, 2015 12:03
Google Maps Geocoding Directive - Angularjs
(function() {
/*
* Google Maps Geocoding Directive - Angularjs
* -----------
* @restrict : 'E' = element, 'A' = attribute
* @example : <google-map class="gmap" id="gmap" zipcode="{{obj.zipcode}}"></google-map>
* @link : https://developers.google.com/maps/documentation/geocoding/
* @version : 1.0
* @author : @ElmahdiMahmoud
*/
@elmahdim
elmahdim / generateElement.js
Created December 28, 2015 10:43
Generate an element object in vanilla javascript
/*
* @usage generateElement(_tagName, _attributes, _parent);
* @param _tagName:String
* @param _attributes:Object
* @param _parent:Selector
* @return an element object
* @author Mahmoud Elmahdi
*/
function generateElement(_tagName, _attributes, _parent) {
Element.prototype.setAttributes = function(attrs) {
@elmahdim
elmahdim / toggleClass.js
Created December 30, 2015 13:51
vanilla javascript toggleClass
function toggleClass(element, className) {
if (!element || !className) { return; }
var classString = element.className, nameIndex = classString.indexOf(className);
if (nameIndex == -1) {
classString += (classString.length) ? ' ' + className : className;
} else {
classString = classString.replace(' '+className, '');
classString = classString.replace(className, '');
}
element.className = classString;
@elmahdim
elmahdim / removeClass.js
Created December 31, 2015 08:13
vanilla javascript removeClass
Element.prototype.rmClass = function (className) {
var classString = this.className;
var classNameIndex = classString.indexOf(className);
if (className) {
classString = classString.replace(' ' + className, '');
classString = classString.replace(className, '');
}
this.className = classString;
};
/* @usage */
@elmahdim
elmahdim / gist:8a7c3424c0900ecb64a5
Last active August 9, 2016 08:51
Freeze element once reached to the scrollbar offset
var offset = $("SELECTOR").offset();
if($('SELECTOR').get(0)) {
$(window).scroll(function() {
if ( $('body').scrollTop() > offset.top){
$('SELECTOR').addClass('is-fixed');
} else {
$('SELECTOR').removeClass('is-fixed');
}
});
@elmahdim
elmahdim / main.js
Last active February 22, 2016 13:42
Snap.svg Starter
/*
* @link cdn: https://cdnjs.cloudflare.com/ajax/libs/snap.svg/0.4.1/snap.svg-min.js
* @jade svg#demo(viewBox="0 0 600 600", preserveAspectRatio="none")
*/
var s = Snap("#demo");
@elmahdim
elmahdim / _mixins.scss
Created May 27, 2016 08:34
Sass Media Query Mixin
// == Defind breakpoint variables
//
//##
$screen-xs: 480px !default;
$screen-sm: 768px !default;
$screen-md: 992px !default;
$screen-lg: 1200px !default;
// == Breakpoints map
//
@elmahdim
elmahdim / _iteration.scss
Created August 9, 2016 08:56
Sass iteration
$colors-pallette: (#5856d6, #008aff, #34aadc, #ff2d55);
.wrapper {
@for $i from 1 through length($colors-pallette) {
&:nth-child(#{length($colors-pallette)}n+#{$i}) {
.item {
background-color: nth($colors-pallette, $i);
}
}
}
imdone-atom
rest-client
highlight-selected
file-icons
atom-jade
emmet
linter
linter-eslint
terminal-plus
@elmahdim
elmahdim / sublime-text
Last active October 14, 2016 08:16
Essential Sublime Text Plugins & Themes
# Plugins
https://packagecontrol.io/packages/AutoFileName
https://packagecontrol.io/packages/Case%20Conversion
https://packagecontrol.io/packages/Console%20Wrap%20for%20js
https://packagecontrol.io/packages/AdvancedNewFile
https://packagecontrol.io/packages/Local%20History
https://packagecontrol.io/packages/SideBarEnhancements
https://packagecontrol.io/packages/SwapStrings
https://packagecontrol.io/packages/All%20Autocomplete