Giter Site home page Giter Site logo

skinnyjs's Introduction

skinny.js: Slim little jQuery plugins Build Status

View the project page

skinny.js is a collection of jQuery plugins that are useful for building web applications. Its design is a response to having used too many JavaScript frameworks that require you to buy into a particular philosophy, coding style, or architecture. Instead, skinny.js embraces the single responsibility principle, and aims to create tiny, granular libraries with minimal dependencies.

Download skinny.js

Skinny libraries

  • date-parse: Polyfill for Date.parse to ensure support for ISO 8601 dates. Also provides support for Microsoft JSON format dates.
  • jQuery.clientRect: Gets element coordinates several orders of magnitude more efficiently than jQuery.top()/left()
  • jQuery.cookies: Practically oriented cookie management.
  • jQuery.css: Parses and serializes CSS style strings
  • jQuery.customEvent: A class that implements an observable event, useful for cases where there's no DOM element involved.
  • jQuery.delimitedString: Base class for parsing delimited strings, such as querystrings or CSS styles
  • jQuery.disableEvent: Temporarily disables/enables all event handlers for a DOM element
  • jQuery.hostIframe: Manages references between iframe content and their host window
  • jQuery.hoverDelay: Binds mouseover/out event handlers with a delay. Useful for authoring components with hover-based activation.
  • jQuery.htmlEncode: Bare bones HTML encoding
  • jQuery.imageSize: Some utilities for dealing with image sizes, async loading, and fitting images to a bounding box
  • jQuery.isVisibleKeyCode: Extension to jQuery.Event which indicates if a keypress is a visible character (i.e. not a function or modifier key)
  • jQuery.msAjax: Microsoft friendly AJAX. Handles the quirks of ASMX, WCF, DataJsonContractSerializer, Microsoft's JSON date format, and provides an interface identical to jQuery.ajax().
  • jQuery.ns: Declare namespaces without boilerplate
  • jQuery.partialLoad: Works like jQuery.load, but is more intelligent about executing downloaded scripts (i.e. don't re-run scripts that are already loaded)
  • jQuery.postMessage: Provides cross-document messaging support, works on all browsers to IE6 (without URL fragments and polling).
  • jQuery.proxyAll: Binds functions to their host object (like jQuery.proxy(), but for all functions declared as properties of an object at once)
  • jQuery.queryString: Parses querystrings (the opposite of jQuery.param())
  • jQuery.scrollAnchor: Smooth scrolling support for anchor elements with internal references.
  • jQuery.uncomment: Allows lazy evaluation of HTML blobs by removing them from comment blocks.
  • jQuery.url: Parses and serializes URLs.

Skinny UI components

  • jQuery.menu: A traditional hierarchical menu widget, designed from the ground up to be both touch and mouse friendly. TODO: Get existing docs from the wiki
  • jQuery.modalDialog: A powerful modal dialog system that works across all devices: TODO: Get existing docs from the wiki
  • jQuery.richTooltip: Responsive tooltips that support HTML content.

Dependencies

skinny.js libraries were designed to have minimal dependencies, and are not intended to be used as a bundle. For this reason, we don't provide a concatenated, minified version of the whole set of libraries. Take the libraries you need, include their dependencies, and concatenate/minify to your heart's content using your own project's build system.

How do I know what dependencies my file has?

All dependencies in skinny.js plugins are marked at the top using the following syntax:

/// <reference path="{path}" />

Contributing

Pull requests must build and pass unit tests to be accepted. New functionality should also include unit tests. To build and run unit tests:

  1. Ensure you have node.js installed
  2. cd {repo dir}
  3. npm install grunt-cli -g
  4. npm install
  5. grunt

Origin

The libraires that comprise skinny.js were written at Vistaprint.

Vistaprint empowers more than 15 million micro businesses and consumers annually with affordable, professional options to make an impression. With a unique business model supported by proprietary technologies, high-volume production facilities, and direct marketing expertise, Vistaprint offers a wide variety of products and services that micro businesses can use to expand their business. A global company, Vistaprint employs over 4,100 people, operates more than 25 localized websites globally and ships to more than 130 countries around the world. Vistaprint's broad range of products and services are easy to access online, 24 hours a day at www.vistaprint.com.

skinnyjs's People

Contributors

ashleyryan avatar benhutchins avatar cakozlov avatar ctaft avatar jyaus avatar labaneilers avatar labanvp avatar slinscot avatar texclayton avatar xavivars avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

skinnyjs's Issues

Create hooks to set max-height on container elements in modal dialog content

It would be useful to automate setting the max height of a container div in a modal dialog in order to make overflow-x: auto work. This will help ensure that dialog buttons don't ever go off the bottom of the screen.

The max-height of this container should be a function of the device, and may be best rendered as a css class dynamically the first time a dialog is created.

Passing Message from Parent Window to Child Window

Hello There - First of all great work on creating this library.

Since I am fairly new in using this library, I am having an issue with passing message from parent window to child window in ie8 using postmessage.htm.

The issues are below:

  1. In the Jquery.PostMessage.js, the serializewnidowreference function is somehow throws an exception because it can't build a relationship between parent (opener) to the child window. On the other hand child to parent works okay since it check on window.parent.
  2. I saw an optional parameter to pass the targetWindowName by the name. I did this, but then I encountered another error in the postmessage.htm

ript type="text/javascript">
(function () {

    var win, data = document.location.hash.split("&");
    if (data.length < 4) throw new Error("Invalid hash for postmessage");
    // Refernece is a name (string)
    if (data[1].substr(0, 1) === ':') {
        win = window.open("", winRef[1].substr(1));
    }

This condition yields true if (data[1].substr(0, 1) === ':') {
however winRef was not defined.

I appreciate your help in advance!

Smitty

Use tab characters over four spaces

The styling for the project was recently changed along with it all use of tabs being replaced by four spaces.

The standard most JavaScript projects is to use tabs (see jQuery's spec) - this is because many people prefer a two-space over a four-space tab size and using a tab character allows the developer to select how it looks for themselves.

Add versioning to the distribution

We need to stamp the distribution with a version number, and automatically increment it. We should use the semantic versioning standard.

Run modal dialog tests at "small screen" and "large screen" sizes

Modal dialogs have a big fork in behavior between small (i.e. phone) and large screens that should be exercised in unit tests. There doesn't appear to be any hook in grunt-contrib-qunit to set the WebPage.viewportSize property in phantomjs. Investigate and come up with a solution.

Since we're considering migrating to mocha anyway, it may make sense to see if the mocha grunt plugins support setting viewportHeight.

Missing Tags/Releases

This repository was submitted at VersionEye. But without tags/releases on this repository it doesn't make much sense for us to track it.
Is there a reason why there or tags?

Add behavior component to modal dialog skins

Skins should be able to specify a javascript object that can decorate the dialog with behaviors.

First use case might be to remove the !important positioning styles from the lightbox skin.

Event handlers added with one() are fired multiple times

In jquery.customEvent.js, one() has the comment: "This currently wont work because the wrapper is in the callbacks list"

And it's true, one() does not actually work as expected, and any event handler added via it will fire multiple times.

Add feature: add API to ajax load content into an existing ajax dialog

I imagine a common case might be to use ajax dialogs to create a wizard flow. It would be good to have framework support for this- call a method to use the same built-in ajax mechanism to load new content (and possibly resize the dialog) as the user progresses through the wizard.

Sample API: AjaxModalDialog.loadContent(url, title)
Should return a promise

Implement preventEventBubbling

the preventEventBubbling feature is in the API and not implemented. Ensure that it doesn't radically change behavior by default, if possible.

Add sourcemap support

  • This may break the architecture of the download builder (all client side)
    ** Unless we can concatenate existing sourcemaps, or run uglify2 in the browser

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.