Repository: MobileUI/components Branch: master Commit: fb96b978273e Files: 167 Total size: 1.2 MB Directory structure: gitextract_g7aahqj_/ ├── .gitignore ├── CONTRIBUTE.md ├── LICENSE ├── README.md ├── alert/ │ ├── component.json │ ├── index.html │ ├── script.js │ └── style.css ├── assets/ │ ├── css/ │ │ └── master.css │ └── js/ │ └── main.js ├── base/ │ ├── badge.html │ ├── base.html │ ├── base.js │ ├── card.html │ ├── colors.css │ ├── colors.html │ ├── component.json │ ├── font.css │ ├── fonts.html │ ├── icons.css │ ├── icons.html │ ├── install.html │ ├── mobileui.css │ ├── reset.css │ └── templates.html ├── button/ │ ├── component.json │ ├── index.html │ ├── script.js │ └── style.css ├── chart-bar/ │ ├── component.json │ ├── index.html │ └── style.css ├── chartist/ │ ├── component.json │ ├── index.html │ ├── script.js │ └── style.css ├── chartist-plugin-tooltip/ │ ├── component.json │ ├── script.js │ └── style.css ├── chartjs/ │ ├── component.json │ ├── index.html │ ├── script.js │ └── style.css ├── cover/ │ ├── component.json │ ├── index.html │ └── style.css ├── dist/ │ ├── alert.json │ ├── base.json │ ├── button.json │ ├── chart-bar.json │ ├── chartist-plugin-tooltip.json │ ├── chartist.json │ ├── chartjs.json │ ├── cover.json │ ├── grid.json │ ├── header.json │ ├── horizontal-scroll.json │ ├── imports.css │ ├── include.json │ ├── input.json │ ├── jquery.json │ ├── list.json │ ├── loading.json │ ├── menu.json │ ├── mobileui-colors.json │ ├── mobileuijs.json │ ├── momentjs.json │ ├── page.json │ ├── popover.json │ ├── progress-circle.json │ ├── progress-circular.json │ ├── progress-semicircle.json │ ├── progressbarjs.json │ ├── pulltorefresh.json │ ├── swiper.json │ ├── tab.json │ ├── templates.json │ ├── timeline.json │ └── toast.json ├── docs.json ├── generate_dist.js ├── generate_doc.js ├── grid/ │ ├── component.json │ ├── index.html │ └── style.css ├── header/ │ ├── component.json │ ├── index.html │ └── style.css ├── horizontal-scroll/ │ ├── component.json │ ├── index.html │ └── style.css ├── include/ │ ├── component.json │ ├── index.html │ ├── myfile1.html │ ├── myfile2.html │ ├── script.js │ └── style.css ├── input/ │ ├── component.json │ ├── index.html │ ├── script.js │ └── style.css ├── jquery/ │ ├── component.json │ ├── index.html │ └── script.js ├── list/ │ ├── component.json │ ├── index.html │ └── style.css ├── loading/ │ ├── component.json │ ├── index.html │ ├── script.js │ └── style.css ├── menu/ │ ├── component.json │ ├── index.html │ ├── script.js │ └── style.css ├── mobileui-colors/ │ ├── component.json │ ├── script.js │ └── style.css ├── mobileuijs/ │ ├── component.json │ ├── index.html │ ├── script.js │ └── style.css ├── momentjs/ │ ├── component.json │ ├── index.html │ └── script.js ├── package.json ├── page/ │ ├── component.json │ ├── contact.html │ ├── contact.js │ ├── contacts.html │ ├── index.html │ ├── script.js │ └── style.css ├── popover/ │ ├── component.json │ ├── index.html │ ├── script.js │ └── style.css ├── progress-circle/ │ ├── component.json │ ├── index.html │ ├── script.js │ └── style.css ├── progress-semicircle/ │ ├── component.json │ ├── index.html │ ├── script.js │ └── style.css ├── progressbarjs/ │ ├── component.json │ ├── index.html │ ├── script.js │ └── style.css ├── pulltorefresh/ │ ├── component.json │ ├── index.html │ └── script.js ├── swiper/ │ ├── component.json │ ├── index.html │ ├── script.js │ └── style.css ├── tab/ │ ├── component.json │ ├── index.html │ ├── script.js │ └── style.css ├── timeline/ │ ├── component.json │ ├── index.html │ └── style.css └── toast/ ├── component.json ├── index.html ├── script.js └── style.css ================================================ FILE CONTENTS ================================================ ================================================ FILE: .gitignore ================================================ # Logs logs *.log npm-debug.log* .DS_Store # Runtime data pids *.pid *.seed # Directory for instrumented libs generated by jscoverage/JSCover lib-cov # Coverage directory used by tools like istanbul coverage # nyc test coverage .nyc_output # Grunt intermediate storage (http://gruntjs.com/creating-plugins#storing-task-files) .grunt # node-waf configuration .lock-wscript # Compiled binary addons (http://nodejs.org/api/addons.html) build/Release # Dependency directories node_modules jspm_packages # Optional npm cache directory .npm # Optional REPL history .node_repl_history ================================================ FILE: CONTRIBUTE.md ================================================ # Contributing to MobileUI Components First off, thanks for taking the time to contribute! :+1: We do our best to accept all PRs that can improve this project! :tada: The following is a set of guidelines for contributing to MobileUI Components and its packages, which are hosted in the [MobileUI](https://github.com/MobileUI) organization here at Github. These are mostly guidelines to help you guys get started and not rules. Use your best judgement, and feel free to propose changes to our project through a pull request. :smile: ## What should I know before contributing? MobileUI is an open source project created thinking of making your hybrid applications faster and smaller. It helps a lot since you're not required to install the whole package, you only install what you need to get started in building your application. :tada: Certainly, you will love using it in [Progressive Web Apps](https://developers.google.com/web/progressive-web-apps/) and [Apache Cordova Apps](https://cordova.apache.org). You can use only the components you want in your projects created with [PhoneGap](https://phonegap.com/), [Ionic Framework](https://ionicframework.com/), [Onsen UI](https://onsen.io/), [Framework7](http://framework7.io/) and others focused on creating web apps. A rich variety of UI components specially designed for mobile apps. MobileUI provides tabs, side menu, stack navigation and tons of other components such as lists and forms. Some of the existing components are displayed differently on Android and iOS, with automatic styling that will change the appearance of the app based on the platform. To know more --- check out the official [documentation](https://mobileui.github.io/#getting-started) ## Getting Started --- ### Process of creating a new component 1) In the project's root dir, create a folder named after the component you will create, for example `list` or `chart-bar`. 2) Create a file named `component.json` inside the folder. The content of the `component.json` file should follow this structure: ```JSON { "name":"chart-bar", "author": "fabiorogeriosj", "dependencies": [ "base" ] } ``` 3) Test and document your component in an HTML file inside your component's folder. > Include usage examples and all the options that your component accept so other people can use the component correctly! 4) Open a Pull Request against the `master` branch 5) Wait for review and discussion. > If we don't respond within a few days, send a message in the PR thread! =) 6) Your code will be merged if accepted! ### Re-generating MobileUI documentation 1) Fork and clone (your fork) [components repo]() and [mobileui.github.io repo]() inside the same parent folder. ``` __ parent/ |_ components/ |_ mobileui.github.io/ ``` 2) With your terminal, inside the **components** project, execute the `generate_docs.js` with node: ```bash node generate_docs.js ``` 3) Then, new files should be generated at **mobileui.github.io** folder. Now it's simple: add and commit these files to your fork project. 4) At GitHub, open the PR from your fork of **mobileui.github.io** to our repository with this commit with the new generated files. 5) We'll check and, if everything is ok, accept your merge! ================================================ FILE: LICENSE ================================================ MIT License Copyright (c) 2017 MobileUI Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. ================================================ FILE: README.md ================================================  ====== [MobileUI](https://mobileui.github.io) is a simple and easy NPM package to install UI Components for web mobile apps using HTML, CSS and JavaScript. MobileUI provides a rich variety of UI components specially designed for mobile apps like tabs, side menu, stack navigation and tons of other components such as lists and forms. They all have iOS and Android support, with automatic styling that will change the appearance of the app based on the platform. With MobileUI you can truly support both Android and iOS with the same source code. > See the docs in: https://mobileui.github.io/ Quickstart ---------- The Installation is very simple, but first you need to install Node.js With Node.js installed, run in your terminal: `npm install mobileui -g` To check the version of mobileui installed, Open the terminal and type `mobileui` Links --------------- - [Install and features](https://mobileui.github.io/#getting-started) - [Documentation](https://mobileui.github.io) - [Contributing](https://github.com/MobileUI/components/blob/master/CONTRIBUTE.md) ================================================ FILE: alert/component.json ================================================ { "name":"alert", "author": "fabiorogeriosj", "dependencies": [ "base" ] } ================================================ FILE: alert/index.html ================================================
Alerts are a great way to offer the user the ability to choose a specific action or list of actions. They also can provide the user with important information, or require them to make a decision (or multiple decisions).
From a UI perspective, Alerts can be thought of as a type of “floating” modal that covers only a portion of the screen. This means Alerts should only be used for quick actions like password verification, small app notifications, or quick options.
base.
The dependencies will be installed together with this module
To use this component you need install with the command:
mobileui install alert
To use, you need to call the function alert('YOUR MESSAGE') or alert(objectCustomized), and you can send more paramters for create alert with title or multiple options.
See this small example:
You can add class with more advanced customized alert:
Another option like modal component you can add list and input by template with more advanced customized alert:
If you need make bind in inputs into a alert just listener event:
' + configAlert.message + '
' alertContent.insertAdjacentHTML('beforeend', p) } if (configAlert.template) { alertContent.insertAdjacentHTML('beforeend', document.getElementById(configAlert.template).innerHTML) } var buttons = document.createElement('div') buttons.className = 'buttons' alertContent.appendChild(buttons) for (var i in configAlert.buttons) { var button = document.createElement('button') if (!configAlert.buttons[i].class) { configAlert.buttons[i].class = 'text-teal' } button.className = configAlert.buttons[i].class var text = document.createTextNode(configAlert.buttons[i].label) button.appendChild(text) if (!configAlert.buttons[i].onclick) { configAlert.buttons[i].onclick = closeAlert } button.addEventListener('click', configAlert.buttons[i].onclick) buttons.appendChild(button) } var customEvent = new CustomEvent('alertOpened') document.dispatchEvent(customEvent) } window.closeAlert = function (id) { alertId = id if (!alertId) { alertId = event.target.parentNode.parentNode.parentNode.id } var alert = document.getElementById(alertId) alert.parentNode.removeChild(alert) var backdrop = document.getElementById(alertId + '_BACKDROP') backdrop.parentNode.removeChild(backdrop) } ================================================ FILE: alert/style.css ================================================ .alert-mobileui { display: -webkit-box; display: -ms-flexbox; display: flex; -webkit-box-pack: center; -ms-flex-pack: center; justify-content: center; -webkit-box-align: center; -ms-flex-align: center; align-items: center; position: absolute; z-index: 99999; top: 0; left: 0; width: 100%; height: 100%; } .alert-mobileui .alert { font-family: 'Roboto', 'Noto', sans-serif; -webkit-font-smoothing: antialiased; -webkit-box-flex: 1; -ms-flex-positive: 1; flex-grow: 1; position: relative; border-radius: 2px; box-shadow: 0 16px 24px 2px rgba(0, 0, 0, .14), 0 6px 30px 5px rgba(0, 0, 0, .12), 0 8px 10px -5px rgba(0, 0, 0, .4); max-width: 270px; } .platform-ios .alert-mobileui .alert { font-family: -apple-system, 'Helvetica Neue', 'Helvetica', 'Arial', 'Lucida Grande', sans-serif; border-radius: 8px; background-color: #fff !important; box-shadow: none; } .alert-mobileui .alert h1 { text-align: left; font-size: 20px; font-weight: 500; padding:22px 22px 0 24px; } .platform-ios .alert-mobileui .alert h1 { font-size: 17px; font-weight: 500; text-align: center; color: #000 !important; padding: 0; padding-top: 22px; } .alert-mobileui .alert p { text-align: left; font-size: 16px; font-weight: 400; line-height: 20px; padding: 0 24px; margin-top:24px; margin-bottom: 24px; min-height: 0; opacity: 0.8; } .platform-ios .alert-mobileui .alert p { font-size: 14px; text-align: center; color: #000 !important; } .alert-mobileui .alert .buttons { display: inline-block; box-sizing: border-box; width: 100%; } .alert-mobileui .alert .buttons button { text-transform: uppercase; display: inline-block; width: auto; min-width: 70px; float: right; background: none; border-top: none; font-size: 14px; font-weight: 600; outline: none; margin-right: 5px; text-transform: uppercase; } .platform-ios .alert-mobileui .alert .buttons button { width: 100%; text-align: center; text-transform: none; font-weight: 400; font-size: 16px; border-top: 1px solid #ddd; padding: 0 8px; margin-right: 0; color: rgba(24, 103, 194, .81) !important; background: none !important; } ================================================ FILE: assets/css/master.css ================================================ body { -webkit-touch-callout: text; -webkit-text-size-adjust: text; -webkit-user-select: text; overflow: auto !important; } .header-star { position: absolute; margin-left: 165px; } .font-dosis { font-family: 'Dosis', sans-serif; } .font-raleway { font-family: 'Raleway', sans-serif; } .font-roboto { font-family: 'Roboto', sans-serif; } ol, ul { list-style: none; } button.show-doc { color: #2f94cf; text-decoration: underline; } .content { position: inherit; width: 100%; max-height: 600px; overflow: auto; } .content-doc-reader { display: inline-block; width: 100%; } .content-doc-reader a[target="_blank"] { opacity: 0.8; transition: .1s ease-in-out; transition-property: opacity, border-color; color: #004bc9; text-decoration: none; font-weight: bold; } .content-doc-reader a[target="_blank"]:hover { background-color: #004bc9; color: #fff; } .content-doc-reader a[target="_blank"]:hover i { color: #fff; } a { border-bottom: 1px dotted #000; } a.show-doc { font-size: 14px; } .result a { cursor: pointer; color: #000; text-decoration: none; } .result.result-icon .icon { margin: 5px; } .dependency { color: rgba(0, 0, 0, 0.4); float: right; font-size: 14px; margin-top: -10px; } .dependency strong { font-weight: 700; } .tooltip { position: relative; display: inline-block; } .tooltip .tooltiptext { visibility: hidden; width: 320px; background-color: black; color: #fff; text-align: center; padding: 5px 0; border-radius: 6px; right: 0; position: absolute; z-index: 1; } .tooltip:hover .tooltiptext { visibility: visible; } .top { background-color: #24292e; padding: 0 20px; margin: 0 auto; display: flex; -webkit-flex-direction: row; -ms-flex-direction: row; flex-direction: row; -webkit-justify-content: space-between; -ms-flex-pack: justify; justify-content: space-between; height: 80px; -webkit-align-items: center; -ms-flex-align: center; align-items: center; position: initial; } .top img { display: flex; -webkit-flex-direction: column; -ms-flex-direction: column; flex-direction: column; -webkit-justify-content: center; -ms-flex-pack: center; justify-content: center; line-height: 0; max-width: 150px; } .top ul { display: -webkit-flex; display: -ms-flexbox; display: flex; -webkit-flex-direction: row; -ms-flex-direction: row; flex-direction: row; -webkit-align-items: center; -ms-flex-align: center; align-items: center; list-style: none; } .top li { white-space: nowrap; margin: 0 28px 0 0; padding: 0; position: relative; } .top a { color: rgba(255, 255, 255, 0.7); } .top a:hover { color: rgba(255, 255, 255, 1); } .menuland { position: absolute; width: 280px; overflow: auto; padding: 50px; padding-top: 30px; } .menuland li { font-size: 16px; } .menuland h1, .content-land h2.title-doc { font-size: 18px; font-weight: 700; margin-bottom: 10px; margin-top: 10px; color: #24292e; text-transform: uppercase; } .content-land .content-doc-reader h2.title-doc { margin-top: 0; } .content-land h2.title-doc { padding-top: 50px; } .menuland h1:first-child { margin-top: 0; } .menuland a { color: rgba(0, 0, 0, 0.8); } .menuland li { padding: 8px; } .menuland li.move-focus::before { content: ""; width: 10px; height: 10px; border-radius: 50%; background-color: #579480; position: absolute; margin-left: -12px; margin-top: 4px; } #searchComponent { padding-left: 5px; } .menuland li:hover, .menuland a.active li { background-color: #7fc7af; } .menuland::-webkit-scrollbar { display: none; } .menuland a:target li{ border-left: 4px solid #7fc7af; } .menuland.hasScrolled { position: fixed; top: 0; bottom: 0; height: 100%; } .content-land { max-width: 100%; margin-left: 320px; font-size: 18px; padding-right: 50px } .content-land p { line-height: 30px; padding-bottom: 15px; font-size: 16px; } .content-land p.text-small { font-size: 14px; } .content-land .result p { font-size: 14px; } pre, .CodeMirror { padding: 20px; background-color: #f2f2f2; height: auto; margin-top: 20px; margin-bottom: 20px; font-size: 14px; } .CodeMirror-scroll { overflow-y: hidden !important; overflow-x: auto !important; } .color-group { float: left; width: 50%; font-family: arial; font-size: 12px; padding: 10px; } .color-group .color { float: left; padding: 12px; color: #fff; width: 50%; } .color-group .color.main-color { width: 100%; } .color-group .color.dark { color: rgba(0, 0, 0, 0.8); } .color-group .color span { display: block; font-size: 11px; font-weight: 300; } .color-palettes { display: inline-block; width: 100%; padding-bottom: 20px; } .sub-title-doc { margin-top: 20px; } .result { font-family: 'Roboto', sans-serif; max-width: 400px; position: relative; overflow: hidden; } .result.height-change > div{ height: 100%; } .result.with-border { border: 1px solid #ccc; } .result p { margin-top: 5px; margin-bottom: 5px; padding: 0; line-height: 20px; } .header { position: inherit; } .footer { position: absolute; } .header.header-absolute { position: absolute; max-width: 400px; } textarea.bind-code { display: none; } .cm-s-hidden-code { display: none; } @media only screen and (min-width: 1300px) { .color-group { width: 33.33%; } } @media only screen and (min-width: 1600px) { .color-group { width: 25%; } } @media only screen and (min-width: 1900px) { .color-group { width: 20%; } } @media only screen and (max-width: 500px) { body, html { width: 100% !important; } body { padding: 10px; } .header-star { position: inherit; margin-left: 20px; } .top { text-align: center; display: block; padding-top: 20px; } .top img{ display: inline-block; margin:auto; } .top ul { display: none; } .menuland { display: none; } .content-land { margin:0; padding: 0; } .color-group { width: 100%; } } a.button-contribute, .content-doc-reader a.button-contribute[target="_blank"] { font-size: 12px; padding: 5px; padding-left: 20px; padding-right: 20px; border-top: 0; border-left: 0; border-right: 0; padding: 0; margin-top: 10px; border-color: #fff; color: #686868; font-weight: 400; } .button-contribute .icon { font-size: 20px; color: #686868; } a.button-contribute:hover, .content-doc-reader a.button-contribute[target="_blank"]:hover { border-color: #ccc; background: none; color: #000; } .content-doc-reader a.button-contribute[target="_blank"]:hover i { color: #000; } .button-contribute .ion-social-github:before { margin-left: 5px; float: right; margin-top: 3px; } .content-table { margin-bottom: 10px; } .content-table tr.hidden{ display: none; } .hidden { display: none; } .tableDoc { max-width: 700px; border: 1px solid #ebebeb; } .tableDoc th { text-transform: uppercase; font-weight: 600; letter-spacing: .4px; -webkit-transform: scaleY(.9); transform: scaleY(.9); text-rendering: optimizeLegibility; padding: 8px 15px; font-size: 14px; text-align: left!important; background: #fafafa; border-bottom: 1px solid #ebebeb; color: #9ca3a6; } .tableDoc td { padding: 15px; font-weight: 400; text-rendering: optimizeLegibility; font-size: 14px; border-bottom: 1px solid #e1e1e1; } .tableDoc td:first-child { text-align: right; white-space: nowrap; } .tableDoc tr:last-child td { border-bottom: 0; } code { padding: 4px; color: #eb3838; font-size: 14px; border-radius: 3px; border: 0 none; margin: 0; font-family: Consolas,'Liberation Mono',Menlo,Courier,monospace; white-space: nowrap; background: #f1f1f1; } .tableDoc td:first-child code { padding: 3px 9px; background: #fff2f2; } .header-bind-code .border-green { border-top: 0; border-left: 0; border-right: 0; border-width: 2px; border-color: #7fc7af; } .header-bind-code { border-bottom: 1px solid #e5e5e5; text-transform: uppercase; font-size: 14px; margin-bottom: 10px; } .line { width: 100%; background-color: #e5e5e5; height: 1px; display: block; clear: both; margin-top: 10px; } .header-bind-code button.small { background: none; margin-right: 10px; text-transform: uppercase; } .banner { background-color: #24292e; padding-top: 50px; padding-bottom: 30px; overflow: hidden; height: 500px; border-bottom: 2px solid #24292e; } .banner h1 { color: rgba(255, 255, 255, 0.8); font-weight: 200; font-size: 35px; text-align: center; padding-left: 20px; padding-right: 20px; } .banner h2 { color: rgba(255, 255, 255, 0.5); font-size: 20px; font-weight: 300; text-align: center; padding-left: 20px; padding-right: 20px; padding-bottom: 40px; } .logo-placeholder { text-align: center; position: absolute; width: 100%; } .hero-cards { position: relative; display: block; overflow: hidden; width: 100%; min-height: 41em; -webkit-backface-visibility: hidden; backface-visibility: hidden; visibility: hidden; margin-top: 380px; } .hero-card-1, .hero-card-2, .hero-card-3, .hero-card-4, .hero-card-5, .hero-card-6, .hero-card-7, .hero-card-8, .hero-card-9 { position: absolute; top: 0; left: 50%; display: block; margin-left: -157px; box-shadow: 0 5px 10px 0 rgba(0,0,0,.4); -webkit-backface-visibility: hidden; backface-visibility: hidden; overflow: hidden; width: 307px; height: 546px; padding: 1px; background-image: url(../img/sprite.jpg); background-repeat: no-repeat; } .hero-card-1 { z-index: 109!important; display: block; background-position: -10px -12px; } .hero-card-2 { z-index: 108!important; display: block; background-position: -322px -12px; margin-top: 50px; } .hero-card-3 { z-index: 107!important; display: block; background-position: -630px -12px; margin-top: 50px; } .hero-card-4 { z-index: 106!important; display: block; background-position: -944px -12px; margin-top: 75px; } .hero-card-5 { z-index: 105!important; display: block; background-position: -1252px -12px; margin-top: 75px; } .hero-card-6 { z-index: 104!important; display: block; background-position: -1566px -12px; margin-top: 100px; } .hero-card-7 { z-index: 103!important; display: block; background-position: -1875px -12px; margin-top: 100px; } .menu { position: absolute !important; } .backdrop { position: absolute !important; } .float-bottom-right, .float-bottom-left { position: absolute !important; } .header p, .footer p { padding-left: 10px; margin: 0; margin-top: -4px; } .gitter-chat-embed { z-index: 1100; } ================================================ FILE: assets/js/main.js ================================================ var theme = 'default' var mode = 'text/html' var idGenerate = 100 if(window.SO) { window.SO.code = 1; } else { window.SO = { code : 1 } } $(document).ready(function(){ $('#searchComponent input').keyup(function(e){ var value = this.value; if(value) { $('.menuland ul a').addClass('hidden'); $('.menuland h1').addClass('hidden'); $('.menuland ul li').each(function(i, e){ if($(e).text().toUpperCase().indexOf(value.toUpperCase()) >= 0){ $(e).parent().removeClass('hidden'); $(e).parent().parent().prev().removeClass('hidden'); } }); } else { $('.menuland ul a ').removeClass('hidden'); $('.menuland h1').removeClass('hidden'); } if(e.keyCode === 40 || e.keyCode === 38){ moveFocusMenu(e.keyCode); } else if(e.keyCode === 13){ selectMovedMenu(); } }); var moveFocusMenu = function(keyCode){ if(keyCode === 40){ var elmFocus = $('.menuland ul li.move-focus:visible'); if(!elmFocus.length && $('.menuland ul li:visible').length){ $($('.menuland ul li:visible')[0]).addClass('move-focus'); } else { var moveNextBind = false; $('.menuland ul li:visible').each(function(i, e){ if($(e).is('.move-focus') && !moveNextBind){ $($('.menuland ul li:visible')[i+1]).addClass('move-focus'); $(e).removeClass('move-focus'); moveNextBind=true; } }); } } else { var elmFocus = $('.menuland ul li.move-focus:visible'); if(!elmFocus.length && $('.menuland ul li:visible').length){ $($('.menuland ul li:visible').last()).addClass('move-focus'); } else { var moveNextBind = false; $('.menuland ul li:visible').each(function(i, e){ if($(e).is('.move-focus') && !moveNextBind){ $($('.menuland ul li:visible')[i-1]).addClass('move-focus'); $(e).removeClass('move-focus'); moveNextBind=true; } }); } } } var selectMovedMenu = function(){ var elmFocus = $('.menuland ul li.move-focus:visible'); if(elmFocus.length){ elmFocus.parent()[0].click(); setTimeout(function(){ $('#searchComponent input').focus(); }, 200); } } var animeBanner = function(){ $('.hero-cards').clearQueue().stop().animate({ marginTop: "0" }, 1000, function() { $('.hero-card-2').clearQueue().stop().animate({ left: "-=250" }, 1000, function() { $('.hero-card-4').clearQueue().stop().animate({ left: "-=400" }, 1000, function() { $('.hero-card-6').clearQueue().stop().animate({ left: "-=500" }, 1000, function() { }); }); }); $('.hero-card-3').clearQueue().stop().animate({ left: "+=250" }, 1000, function() { $('.hero-card-5').clearQueue().stop().animate({ left: "+=400" }, 1000, function() { $('.hero-card-7').clearQueue().stop().animate({ left: "+=500" }, 1000, function() { }); }); }); }); } var tmpImg = new Image(); tmpImg.src = '/img/sprite.jpg'; tmpImg.onload = function() { $('.hero-cards').css('visibility','visible'); animeBanner(); }; $(window).resize(function() { $('.hero-card-2').clearQueue().stop(); $('.hero-card-3').clearQueue().stop(); $('.hero-card-4').clearQueue().stop(); $('.hero-card-5').clearQueue().stop(); $('.hero-card-6').clearQueue().stop(); $('.hero-card-7').clearQueue().stop(); $('.hero-card-2').removeAttr('style'); $('.hero-card-3').removeAttr('style'); $('.hero-card-4').removeAttr('style'); $('.hero-card-5').removeAttr('style'); $('.hero-card-6').removeAttr('style'); $('.hero-card-7').removeAttr('style'); animeBanner(); }); $('textarea.bind-code-example').each(function(i, block) { if($(block).attr('mode')) { mode = $(block).attr('mode') } CodeMirror.fromTextArea(block, { lineNumbers: false, mode: mode, theme: theme, readOnly: true }); }); $('textarea.bind-just-code').each(function(i, block) { var code = $(block).val() var mode = $(block).attr('mode') CodeMirror.fromTextArea(block, { lineNumbers: false, mode: mode, theme: theme, readOnly: true }); }); $('textarea.bind-code').each(function(i, block) { var code = $(block).val() var mode = $(block).attr('mode') var border = $(block).attr('border') var absolute = $(block).attr('header-absolute') var execMobileuiBind = $(block).attr('exec-mobileui-bind') var replace = $(block).attr('replace') var hidden = $(block).attr('hidden') var multiplatform = $(block).attr('multiplatform') var heightPreview = $(block).attr('height-preview') var idResult = $(block).attr('id-result') var customClass = $(block).attr('custom-class') if(replace) { replace = replace.split('|'); for(var i in replace){ code = code.replace(new RegExp(replace[i].split(',')[0], 'g'), replace[i].split(',')[1]); } } if(absolute) { code = code.replace(new RegExp('"header', 'g'), '"header header-absolute') } var resultStyle = '' var resultClass = 'result' var id = idResult ? idResult : ++idGenerate; $(block).attr('id',id+'_code'); var attrs = ' id="'+id+'" ' if(border) { resultClass += ' with-border' } if(heightPreview) { resultStyle += 'height:'+heightPreview resultClass += ' height-change' } if(customClass) { resultClass += ' ' + customClass; } var divHeader = ''+configLoading.message+'
'; } alertMobileUI.appendChild(alertContent); setTimeout(function(){ closeLoading(); },3000) } window.loadingLandElement = function(e, message, position, color){ e = document.getElementById(e); var withMessage = message ? 'with-message' : ''; if(!color){ color = 'white-loading'; } else { color = ''; } if(!position) { position = ''; } var divLoading = document.createElement('div'); var spinner = ''; if(!window.SO || SO.code !== 2){ spinner = ''; } else { spinner = ''; } e.oldValue = e.innerHTML; e.innerHTML = spinner; e.disabled=true; if(message){ e.innerHTML += message; } setTimeout(function(){ closeLoading(e.id) },4000); } setTimeout(function(){ window.bindIncludeEvent(); }, 500); function binderFire(){ if(window.ProgressCircle) ProgressCircle.bind(); if(window.ProgressSemicircle) ProgressSemicircle.bind(); } setInterval(binderFire, 500); ================================================ FILE: base/badge.html ================================================Badges are used to provide additional information about something. In MobileUI you can create a card using base classes.
If you have installed any component, the base classes are already installed. Otherwise run the command:
mobileui install base
You can combinate this component with others, example a list.
================================================ FILE: base/base.html ================================================The base component contains the basic features to use MobileUI and any other component of this kit. With this component, you can use the color themes, icons and some classes of positioning and alignment of elements in the interface.
To use it you need to install with the command:
mobileui install base================================================ FILE: base/base.js ================================================ var userAgent = navigator.userAgent || navigator.vendor || window.opera; var SO = {name:'unknown',code:0} if (/android/i.test(userAgent)) { SO.name = "Android"; SO.class = 'platform-android'; SO.code = 1; } if (/iPad|iPhone|iPod/.test(userAgent) && !window.MSStream) { SO.name = "iOS"; SO.class = 'platform-ios'; SO.code = 2; } if (/windows phone/i.test(userAgent)) { SO.name = "Windows Phone"; SO.class = 'platform-wp'; SO.code = 3; } if(SO.class && document.getElementsByTagName('body').length){ document.getElementsByTagName('body')[0].className += ' '+SO.class } ================================================ FILE: base/card.html ================================================
Card is a popular component in apps mobile. In MobileUI you can create a card using base classes.
If you have installed any component, the base classes are already installed. Otherwise run the command:
mobileui install base
You can combinate card style and list component, just add class shadow.
MobileUI uses the suggestions material design colors because material takes cues from contemporary architecture, road signs, pavement marking tape, and athletic courts. Color should be unexpected and vibrant.
This color palette comprises primary and accent colors that can be used for illustration or to develop your brand colors. They’ve been designed to work harmoniously with each other. The color palette starts with primary colors and fills in the spectrum to create a complete and usable palette for Android, Web, and iOS.
Themes enable consistent app styling through surface shades, shadow depth, and ink opacity.
The theme's colors are in base MobileUI, to use it install base through the command:
mobileui install base
And just add the class in your component to use the color, example:
One of MobileUI's primary concerns is UX Design, so we offer a easy way to install new fonts in your web apps.
You can install any source in the Google Fonts repository. Example, I want to install the fonts Open Sans light and Monoton, my command would look like this:
mobileui install font "Monoton|Open+Sans:300"================================================ FILE: base/icons.css ================================================ @font-face { font-family: Ionicons; src: url(fonts/ionicons.woff?v=2.0.0) format("woff"); font-weight: 400; font-style: normal } i.icon { background: none !important; } .ion, .ion-alert-circled:before, .ion-alert:before, .ion-android-add-circle:before, .ion-android-add:before, .ion-android-alarm-clock:before, .ion-android-alert:before, .ion-android-apps:before, .ion-android-archive:before, .ion-android-arrow-back:before, .ion-android-arrow-down:before, .ion-android-arrow-dropdown-circle:before, .ion-android-arrow-dropdown:before, .ion-android-arrow-dropleft-circle:before, .ion-android-arrow-dropleft:before, .ion-android-arrow-dropright-circle:before, .ion-android-arrow-dropright:before, .ion-android-arrow-dropup-circle:before, .ion-android-arrow-dropup:before, .ion-android-arrow-forward:before, .ion-android-arrow-up:before, .ion-android-attach:before, .ion-android-bar:before, .ion-android-bicycle:before, .ion-android-boat:before, .ion-android-bookmark:before, .ion-android-bulb:before, .ion-android-bus:before, .ion-android-calendar:before, .ion-android-call:before, .ion-android-camera:before, .ion-android-cancel:before, .ion-android-car:before, .ion-android-cart:before, .ion-android-chat:before, .ion-android-checkbox-blank:before, .ion-android-checkbox-outline-blank:before, .ion-android-checkbox-outline:before, .ion-android-checkbox:before, .ion-android-checkmark-circle:before, .ion-android-clipboard:before, .ion-android-close:before, .ion-android-cloud-circle:before, .ion-android-cloud-done:before, .ion-android-cloud-outline:before, .ion-android-cloud:before, .ion-android-color-palette:before, .ion-android-compass:before, .ion-android-contact:before, .ion-android-contacts:before, .ion-android-contract:before, .ion-android-create:before, .ion-android-delete:before, .ion-android-desktop:before, .ion-android-document:before, .ion-android-done-all:before, .ion-android-done:before, .ion-android-download:before, .ion-android-drafts:before, .ion-android-exit:before, .ion-android-expand:before, .ion-android-favorite-outline:before, .ion-android-favorite:before, .ion-android-film:before, .ion-android-folder-open:before, .ion-android-folder:before, .ion-android-funnel:before, .ion-android-globe:before, .ion-android-hand:before, .ion-android-hangout:before, .ion-android-happy:before, .ion-android-home:before, .ion-android-image:before, .ion-android-laptop:before, .ion-android-list:before, .ion-android-locate:before, .ion-android-lock:before, .ion-android-mail:before, .ion-android-map:before, .ion-android-menu:before, .ion-android-microphone-off:before, .ion-android-microphone:before, .ion-android-more-horizontal:before, .ion-android-more-vertical:before, .ion-android-navigate:before, .ion-android-notifications-none:before, .ion-android-notifications-off:before, .ion-android-notifications:before, .ion-android-open:before, .ion-android-options:before, .ion-android-people:before, .ion-android-person-add:before, .ion-android-person:before, .ion-android-phone-landscape:before, .ion-android-phone-portrait:before, .ion-android-pin:before, .ion-android-plane:before, .ion-android-playstore:before, .ion-android-print:before, .ion-android-radio-button-off:before, .ion-android-radio-button-on:before, .ion-android-refresh:before, .ion-android-remove-circle:before, .ion-android-remove:before, .ion-android-restaurant:before, .ion-android-sad:before, .ion-android-search:before, .ion-android-send:before, .ion-android-settings:before, .ion-android-share-alt:before, .ion-android-share:before, .ion-android-star-half:before, .ion-android-star-outline:before, .ion-android-star:before, .ion-android-stopwatch:before, .ion-android-subway:before, .ion-android-sunny:before, .ion-android-sync:before, .ion-android-textsms:before, .ion-android-time:before, .ion-android-train:before, .ion-android-unlock:before, .ion-android-upload:before, .ion-android-volume-down:before, .ion-android-volume-mute:before, .ion-android-volume-off:before, .ion-android-volume-up:before, .ion-android-walk:before, .ion-android-warning:before, .ion-android-watch:before, .ion-android-wifi:before, .ion-aperture:before, .ion-archive:before, .ion-arrow-down-a:before, .ion-arrow-down-b:before, .ion-arrow-down-c:before, .ion-arrow-expand:before, .ion-arrow-graph-down-left:before, .ion-arrow-graph-down-right:before, .ion-arrow-graph-up-left:before, .ion-arrow-graph-up-right:before, .ion-arrow-left-a:before, .ion-arrow-left-b:before, .ion-arrow-left-c:before, .ion-arrow-move:before, .ion-arrow-resize:before, .ion-arrow-return-left:before, .ion-arrow-return-right:before, .ion-arrow-right-a:before, .ion-arrow-right-b:before, .ion-arrow-right-c:before, .ion-arrow-shrink:before, .ion-arrow-swap:before, .ion-arrow-up-a:before, .ion-arrow-up-b:before, .ion-arrow-up-c:before, .ion-asterisk:before, .ion-at:before, .ion-backspace-outline:before, .ion-backspace:before, .ion-bag:before, .ion-battery-charging:before, .ion-battery-empty:before, .ion-battery-full:before, .ion-battery-half:before, .ion-battery-low:before, .ion-beaker:before, .ion-beer:before, .ion-bluetooth:before, .ion-bonfire:before, .ion-bookmark:before, .ion-bowtie:before, .ion-briefcase:before, .ion-bug:before, .ion-calculator:before, .ion-calendar:before, .ion-camera:before, .ion-card:before, .ion-cash:before, .ion-chatbox-working:before, .ion-chatbox:before, .ion-chatboxes:before, .ion-chatbubble-working:before, .ion-chatbubble:before, .ion-chatbubbles:before, .ion-checkmark-circled:before, .ion-checkmark-round:before, .ion-checkmark:before, .ion-chevron-down:before, .ion-chevron-left:before, .ion-chevron-right:before, .ion-chevron-up:before, .ion-clipboard:before, .ion-clock:before, .ion-close-circled:before, .ion-close-round:before, .ion-close:before, .ion-closed-captioning:before, .ion-cloud:before, .ion-code-download:before, .ion-code-working:before, .ion-code:before, .ion-coffee:before, .ion-compass:before, .ion-compose:before, .ion-connection-bars:before, .ion-contrast:before, .ion-crop:before, .ion-cube:before, .ion-disc:before, .ion-document-text:before, .ion-document:before, .ion-drag:before, .ion-earth:before, .ion-easel:before, .ion-edit:before, .ion-egg:before, .ion-eject:before, .ion-email-unread:before, .ion-email:before, .ion-erlenmeyer-flask-bubbles:before, .ion-erlenmeyer-flask:before, .ion-eye-disabled:before, .ion-eye:before, .ion-female:before, .ion-filing:before, .ion-film-marker:before, .ion-fireball:before, .ion-flag:before, .ion-flame:before, .ion-flash-off:before, .ion-flash:before, .ion-folder:before, .ion-fork-repo:before, .ion-fork:before, .ion-forward:before, .ion-funnel:before, .ion-gear-a:before, .ion-gear-b:before, .ion-grid:before, .ion-hammer:before, .ion-happy-outline:before, .ion-happy:before, .ion-headphone:before, .ion-heart-broken:before, .ion-heart:before, .ion-help-buoy:before, .ion-help-circled:before, .ion-help:before, .ion-home:before, .ion-icecream:before, .ion-image:before, .ion-images:before, .ion-information-circled:before, .ion-information:before, .ion-ionic:before, .ion-ios-alarm-outline:before, .ion-ios-alarm:before, .ion-ios-albums-outline:before, .ion-ios-albums:before, .ion-ios-americanfootball-outline:before, .ion-ios-americanfootball:before, .ion-ios-analytics-outline:before, .ion-ios-analytics:before, .ion-ios-arrow-back:before, .ion-ios-arrow-down:before, .ion-ios-arrow-forward:before, .ion-ios-arrow-left:before, .ion-ios-arrow-right:before, .ion-ios-arrow-thin-down:before, .ion-ios-arrow-thin-left:before, .ion-ios-arrow-thin-right:before, .ion-ios-arrow-thin-up:before, .ion-ios-arrow-up:before, .ion-ios-at-outline:before, .ion-ios-at:before, .ion-ios-barcode-outline:before, .ion-ios-barcode:before, .ion-ios-baseball-outline:before, .ion-ios-baseball:before, .ion-ios-basketball-outline:before, .ion-ios-basketball:before, .ion-ios-bell-outline:before, .ion-ios-bell:before, .ion-ios-body-outline:before, .ion-ios-body:before, .ion-ios-bolt-outline:before, .ion-ios-bolt:before, .ion-ios-book-outline:before, .ion-ios-book:before, .ion-ios-bookmarks-outline:before, .ion-ios-bookmarks:before, .ion-ios-box-outline:before, .ion-ios-box:before, .ion-ios-briefcase-outline:before, .ion-ios-briefcase:before, .ion-ios-browsers-outline:before, .ion-ios-browsers:before, .ion-ios-calculator-outline:before, .ion-ios-calculator:before, .ion-ios-calendar-outline:before, .ion-ios-calendar:before, .ion-ios-camera-outline:before, .ion-ios-camera:before, .ion-ios-cart-outline:before, .ion-ios-cart:before, .ion-ios-chatboxes-outline:before, .ion-ios-chatboxes:before, .ion-ios-chatbubble-outline:before, .ion-ios-chatbubble:before, .ion-ios-checkmark-empty:before, .ion-ios-checkmark-outline:before, .ion-ios-checkmark:before, .ion-ios-circle-filled:before, .ion-ios-circle-outline:before, .ion-ios-clock-outline:before, .ion-ios-clock:before, .ion-ios-close-empty:before, .ion-ios-close-outline:before, .ion-ios-close:before, .ion-ios-cloud-download-outline:before, .ion-ios-cloud-download:before, .ion-ios-cloud-outline:before, .ion-ios-cloud-upload-outline:before, .ion-ios-cloud-upload:before, .ion-ios-cloud:before, .ion-ios-cloudy-night-outline:before, .ion-ios-cloudy-night:before, .ion-ios-cloudy-outline:before, .ion-ios-cloudy:before, .ion-ios-cog-outline:before, .ion-ios-cog:before, .ion-ios-color-filter-outline:before, .ion-ios-color-filter:before, .ion-ios-color-wand-outline:before, .ion-ios-color-wand:before, .ion-ios-compose-outline:before, .ion-ios-compose:before, .ion-ios-contact-outline:before, .ion-ios-contact:before, .ion-ios-copy-outline:before, .ion-ios-copy:before, .ion-ios-crop-strong:before, .ion-ios-crop:before, .ion-ios-download-outline:before, .ion-ios-download:before, .ion-ios-drag:before, .ion-ios-email-outline:before, .ion-ios-email:before, .ion-ios-eye-outline:before, .ion-ios-eye:before, .ion-ios-fastforward-outline:before, .ion-ios-fastforward:before, .ion-ios-filing-outline:before, .ion-ios-filing:before, .ion-ios-film-outline:before, .ion-ios-film:before, .ion-ios-flag-outline:before, .ion-ios-flag:before, .ion-ios-flame-outline:before, .ion-ios-flame:before, .ion-ios-flask-outline:before, .ion-ios-flask:before, .ion-ios-flower-outline:before, .ion-ios-flower:before, .ion-ios-folder-outline:before, .ion-ios-folder:before, .ion-ios-football-outline:before, .ion-ios-football:before, .ion-ios-game-controller-a-outline:before, .ion-ios-game-controller-a:before, .ion-ios-game-controller-b-outline:before, .ion-ios-game-controller-b:before, .ion-ios-gear-outline:before, .ion-ios-gear:before, .ion-ios-glasses-outline:before, .ion-ios-glasses:before, .ion-ios-grid-view-outline:before, .ion-ios-grid-view:before, .ion-ios-heart-outline:before, .ion-ios-heart:before, .ion-ios-help-empty:before, .ion-ios-help-outline:before, .ion-ios-help:before, .ion-ios-home-outline:before, .ion-ios-home:before, .ion-ios-infinite-outline:before, .ion-ios-infinite:before, .ion-ios-information-empty:before, .ion-ios-information-outline:before, .ion-ios-information:before, .ion-ios-ionic-outline:before, .ion-ios-keypad-outline:before, .ion-ios-keypad:before, .ion-ios-lightbulb-outline:before, .ion-ios-lightbulb:before, .ion-ios-list-outline:before, .ion-ios-list:before, .ion-ios-location-outline:before, .ion-ios-location:before, .ion-ios-locked-outline:before, .ion-ios-locked:before, .ion-ios-loop-strong:before, .ion-ios-loop:before, .ion-ios-medical-outline:before, .ion-ios-medical:before, .ion-ios-medkit-outline:before, .ion-ios-medkit:before, .ion-ios-mic-off:before, .ion-ios-mic-outline:before, .ion-ios-mic:before, .ion-ios-minus-empty:before, .ion-ios-minus-outline:before, .ion-ios-minus:before, .ion-ios-monitor-outline:before, .ion-ios-monitor:before, .ion-ios-moon-outline:before, .ion-ios-moon:before, .ion-ios-more-outline:before, .ion-ios-more:before, .ion-ios-musical-note:before, .ion-ios-musical-notes:before, .ion-ios-navigate-outline:before, .ion-ios-navigate:before, .ion-ios-nutrition-outline:before, .ion-ios-nutrition:before, .ion-ios-paper-outline:before, .ion-ios-paper:before, .ion-ios-paperplane-outline:before, .ion-ios-paperplane:before, .ion-ios-partlysunny-outline:before, .ion-ios-partlysunny:before, .ion-ios-pause-outline:before, .ion-ios-pause:before, .ion-ios-paw-outline:before, .ion-ios-paw:before, .ion-ios-people-outline:before, .ion-ios-people:before, .ion-ios-person-outline:before, .ion-ios-person:before, .ion-ios-personadd-outline:before, .ion-ios-personadd:before, .ion-ios-photos-outline:before, .ion-ios-photos:before, .ion-ios-pie-outline:before, .ion-ios-pie:before, .ion-ios-pint-outline:before, .ion-ios-pint:before, .ion-ios-play-outline:before, .ion-ios-play:before, .ion-ios-plus-empty:before, .ion-ios-plus-outline:before, .ion-ios-plus:before, .ion-ios-pricetag-outline:before, .ion-ios-pricetag:before, .ion-ios-pricetags-outline:before, .ion-ios-pricetags:before, .ion-ios-printer-outline:before, .ion-ios-printer:before, .ion-ios-pulse-strong:before, .ion-ios-pulse:before, .ion-ios-rainy-outline:before, .ion-ios-rainy:before, .ion-ios-recording-outline:before, .ion-ios-recording:before, .ion-ios-redo-outline:before, .ion-ios-redo:before, .ion-ios-refresh-empty:before, .ion-ios-refresh-outline:before, .ion-ios-refresh:before, .ion-ios-reload:before, .ion-ios-reverse-camera-outline:before, .ion-ios-reverse-camera:before, .ion-ios-rewind-outline:before, .ion-ios-rewind:before, .ion-ios-rose-outline:before, .ion-ios-rose:before, .ion-ios-search-strong:before, .ion-ios-search:before, .ion-ios-settings-strong:before, .ion-ios-settings:before, .ion-ios-shuffle-strong:before, .ion-ios-shuffle:before, .ion-ios-skipbackward-outline:before, .ion-ios-skipbackward:before, .ion-ios-skipforward-outline:before, .ion-ios-skipforward:before, .ion-ios-snowy:before, .ion-ios-speedometer-outline:before, .ion-ios-speedometer:before, .ion-ios-star-half:before, .ion-ios-star-outline:before, .ion-ios-star:before, .ion-ios-stopwatch-outline:before, .ion-ios-stopwatch:before, .ion-ios-sunny-outline:before, .ion-ios-sunny:before, .ion-ios-telephone-outline:before, .ion-ios-telephone:before, .ion-ios-tennisball-outline:before, .ion-ios-tennisball:before, .ion-ios-thunderstorm-outline:before, .ion-ios-thunderstorm:before, .ion-ios-time-outline:before, .ion-ios-time:before, .ion-ios-timer-outline:before, .ion-ios-timer:before, .ion-ios-toggle-outline:before, .ion-ios-toggle:before, .ion-ios-trash-outline:before, .ion-ios-trash:before, .ion-ios-undo-outline:before, .ion-ios-undo:before, .ion-ios-unlocked-outline:before, .ion-ios-unlocked:before, .ion-ios-upload-outline:before, .ion-ios-upload:before, .ion-ios-videocam-outline:before, .ion-ios-videocam:before, .ion-ios-volume-high:before, .ion-ios-volume-low:before, .ion-ios-wineglass-outline:before, .ion-ios-wineglass:before, .ion-ios-world-outline:before, .ion-ios-world:before, .ion-ipad:before, .ion-iphone:before, .ion-ipod:before, .ion-jet:before, .ion-key:before, .ion-knife:before, .ion-laptop:before, .ion-leaf:before, .ion-levels:before, .ion-lightbulb:before, .ion-link:before, .ion-load-a:before, .ion-load-b:before, .ion-load-c:before, .ion-load-d:before, .ion-location:before, .ion-lock-combination:before, .ion-locked:before, .ion-log-in:before, .ion-log-out:before, .ion-loop:before, .ion-magnet:before, .ion-male:before, .ion-man:before, .ion-map:before, .ion-medkit:before, .ion-merge:before, .ion-mic-a:before, .ion-mic-b:before, .ion-mic-c:before, .ion-minus-circled:before, .ion-minus-round:before, .ion-minus:before, .ion-model-s:before, .ion-monitor:before, .ion-more:before, .ion-mouse:before, .ion-music-note:before, .ion-navicon-round:before, .ion-navicon:before, .ion-navigate:before, .ion-network:before, .ion-no-smoking:before, .ion-nuclear:before, .ion-outlet:before, .ion-paintbrush:before, .ion-paintbucket:before, .ion-paper-airplane:before, .ion-paperclip:before, .ion-pause:before, .ion-person-add:before, .ion-person-stalker:before, .ion-person:before, .ion-pie-graph:before, .ion-pin:before, .ion-pinpoint:before, .ion-pizza:before, .ion-plane:before, .ion-planet:before, .ion-play:before, .ion-playstation:before, .ion-plus-circled:before, .ion-plus-round:before, .ion-plus:before, .ion-podium:before, .ion-pound:before, .ion-power:before, .ion-pricetag:before, .ion-pricetags:before, .ion-printer:before, .ion-pull-request:before, .ion-qr-scanner:before, .ion-quote:before, .ion-radio-waves:before, .ion-record:before, .ion-refresh:before, .ion-reply-all:before, .ion-reply:before, .ion-ribbon-a:before, .ion-ribbon-b:before, .ion-sad-outline:before, .ion-sad:before, .ion-scissors:before, .ion-search:before, .ion-settings:before, .ion-share:before, .ion-shuffle:before, .ion-skip-backward:before, .ion-skip-forward:before, .ion-social-android-outline:before, .ion-social-android:before, .ion-social-angular-outline:before, .ion-social-angular:before, .ion-social-apple-outline:before, .ion-social-apple:before, .ion-social-bitcoin-outline:before, .ion-social-bitcoin:before, .ion-social-buffer-outline:before, .ion-social-buffer:before, .ion-social-chrome-outline:before, .ion-social-chrome:before, .ion-social-codepen-outline:before, .ion-social-codepen:before, .ion-social-css3-outline:before, .ion-social-css3:before, .ion-social-designernews-outline:before, .ion-social-designernews:before, .ion-social-dribbble-outline:before, .ion-social-dribbble:before, .ion-social-dropbox-outline:before, .ion-social-dropbox:before, .ion-social-euro-outline:before, .ion-social-euro:before, .ion-social-facebook-outline:before, .ion-social-facebook:before, .ion-social-foursquare-outline:before, .ion-social-foursquare:before, .ion-social-freebsd-devil:before, .ion-social-github-outline:before, .ion-social-github:before, .ion-social-google-outline:before, .ion-social-google:before, .ion-social-googleplus-outline:before, .ion-social-googleplus:before, .ion-social-hackernews-outline:before, .ion-social-hackernews:before, .ion-social-html5-outline:before, .ion-social-html5:before, .ion-social-instagram-outline:before, .ion-social-instagram:before, .ion-social-javascript-outline:before, .ion-social-javascript:before, .ion-social-linkedin-outline:before, .ion-social-linkedin:before, .ion-social-markdown:before, .ion-social-nodejs:before, .ion-social-octocat:before, .ion-social-pinterest-outline:before, .ion-social-pinterest:before, .ion-social-python:before, .ion-social-reddit-outline:before, .ion-social-reddit:before, .ion-social-rss-outline:before, .ion-social-rss:before, .ion-social-sass:before, .ion-social-skype-outline:before, .ion-social-skype:before, .ion-social-snapchat-outline:before, .ion-social-snapchat:before, .ion-social-tumblr-outline:before, .ion-social-tumblr:before, .ion-social-tux:before, .ion-social-twitch-outline:before, .ion-social-twitch:before, .ion-social-twitter-outline:before, .ion-social-twitter:before, .ion-social-usd-outline:before, .ion-social-usd:before, .ion-social-vimeo-outline:before, .ion-social-vimeo:before, .ion-social-whatsapp-outline:before, .ion-social-whatsapp:before, .ion-social-windows-outline:before, .ion-social-windows:before, .ion-social-wordpress-outline:before, .ion-social-wordpress:before, .ion-social-yahoo-outline:before, .ion-social-yahoo:before, .ion-social-yen-outline:before, .ion-social-yen:before, .ion-social-youtube-outline:before, .ion-social-youtube:before, .ion-soup-can-outline:before, .ion-soup-can:before, .ion-speakerphone:before, .ion-speedometer:before, .ion-spoon:before, .ion-star:before, .ion-stats-bars:before, .ion-steam:before, .ion-stop:before, .ion-thermometer:before, .ion-thumbsdown:before, .ion-thumbsup:before, .ion-toggle-filled:before, .ion-toggle:before, .ion-transgender:before, .ion-trash-a:before, .ion-trash-b:before, .ion-trophy:before, .ion-tshirt-outline:before, .ion-tshirt:before, .ion-umbrella:before, .ion-university:before, .ion-unlocked:before, .ion-upload:before, .ion-usb:before, .ion-videocamera:before, .ion-volume-high:before, .ion-volume-low:before, .ion-volume-medium:before, .ion-volume-mute:before, .ion-wand:before, .ion-waterdrop:before, .ion-wifi:before, .ion-wineglass:before, .ion-woman:before, .ion-wrench:before, .ion-xbox:before, .ionicons { display: inline-block; font-family: Ionicons; speak: none; font-style: normal; font-weight: 400; font-variant: normal; text-transform: none; text-rendering: auto; line-height: 1; -webkit-font-smoothing: antialiased; -moz-osx-font-smoothing: grayscale; min-width: 22px; text-align: center; } .ion-alert:before { content: "\f101" } .ion-alert-circled:before { content: "\f100" } .ion-android-add:before { content: "\f2c7" } .ion-android-add-circle:before { content: "\f359" } .ion-android-alarm-clock:before { content: "\f35a" } .ion-android-alert:before { content: "\f35b" } .ion-android-apps:before { content: "\f35c" } .ion-android-archive:before { content: "\f2c9" } .ion-android-arrow-back:before { content: "\f2ca" } .ion-android-arrow-down:before { content: "\f35d" } .ion-android-arrow-dropdown:before { content: "\f35f" } .ion-android-arrow-dropdown-circle:before { content: "\f35e" } .ion-android-arrow-dropleft:before { content: "\f361" } .ion-android-arrow-dropleft-circle:before { content: "\f360" } .ion-android-arrow-dropright:before { content: "\f363" } .ion-android-arrow-dropright-circle:before { content: "\f362" } .ion-android-arrow-dropup:before { content: "\f365" } .ion-android-arrow-dropup-circle:before { content: "\f364" } .ion-android-arrow-forward:before { content: "\f30f" } .ion-android-arrow-up:before { content: "\f366" } .ion-android-attach:before { content: "\f367" } .ion-android-bar:before { content: "\f368" } .ion-android-bicycle:before { content: "\f369" } .ion-android-boat:before { content: "\f36a" } .ion-android-bookmark:before { content: "\f36b" } .ion-android-bulb:before { content: "\f36c" } .ion-android-bus:before { content: "\f36d" } .ion-android-calendar:before { content: "\f2d1" } .ion-android-call:before { content: "\f2d2" } .ion-android-camera:before { content: "\f2d3" } .ion-android-cancel:before { content: "\f36e" } .ion-android-car:before { content: "\f36f" } .ion-android-cart:before { content: "\f370" } .ion-android-chat:before { content: "\f2d4" } .ion-android-checkbox:before { content: "\f374" } .ion-android-checkbox-blank:before { content: "\f371" } .ion-android-checkbox-outline:before { content: "\f373" } .ion-android-checkbox-outline-blank:before { content: "\f372" } .ion-android-checkmark-circle:before { content: "\f375" } .ion-android-clipboard:before { content: "\f376" } .ion-android-close:before { content: "\f2d7" } .ion-android-cloud:before { content: "\f37a" } .ion-android-cloud-circle:before { content: "\f377" } .ion-android-cloud-done:before { content: "\f378" } .ion-android-cloud-outline:before { content: "\f379" } .ion-android-color-palette:before { content: "\f37b" } .ion-android-compass:before { content: "\f37c" } .ion-android-contact:before { content: "\f2d8" } .ion-android-contacts:before { content: "\f2d9" } .ion-android-contract:before { content: "\f37d" } .ion-android-create:before { content: "\f37e" } .ion-android-delete:before { content: "\f37f" } .ion-android-desktop:before { content: "\f380" } .ion-android-document:before { content: "\f381" } .ion-android-done:before { content: "\f383" } .ion-android-done-all:before { content: "\f382" } .ion-android-download:before { content: "\f2dd" } .ion-android-drafts:before { content: "\f384" } .ion-android-exit:before { content: "\f385" } .ion-android-expand:before { content: "\f386" } .ion-android-favorite:before { content: "\f388" } .ion-android-favorite-outline:before { content: "\f387" } .ion-android-film:before { content: "\f389" } .ion-android-folder:before { content: "\f2e0" } .ion-android-folder-open:before { content: "\f38a" } .ion-android-funnel:before { content: "\f38b" } .ion-android-globe:before { content: "\f38c" } .ion-android-hand:before { content: "\f2e3" } .ion-android-hangout:before { content: "\f38d" } .ion-android-happy:before { content: "\f38e" } .ion-android-home:before { content: "\f38f" } .ion-android-image:before { content: "\f2e4" } .ion-android-laptop:before { content: "\f390" } .ion-android-list:before { content: "\f391" } .ion-android-locate:before { content: "\f2e9" } .ion-android-lock:before { content: "\f392" } .ion-android-mail:before { content: "\f2eb" } .ion-android-map:before { content: "\f393" } .ion-android-menu:before { content: "\f394" } .ion-android-microphone:before { content: "\f2ec" } .ion-android-microphone-off:before { content: "\f395" } .ion-android-more-horizontal:before { content: "\f396" } .ion-android-more-vertical:before { content: "\f397" } .ion-android-navigate:before { content: "\f398" } .ion-android-notifications:before { content: "\f39b" } .ion-android-notifications-none:before { content: "\f399" } .ion-android-notifications-off:before { content: "\f39a" } .ion-android-open:before { content: "\f39c" } .ion-android-options:before { content: "\f39d" } .ion-android-people:before { content: "\f39e" } .ion-android-person:before { content: "\f3a0" } .ion-android-person-add:before { content: "\f39f" } .ion-android-phone-landscape:before { content: "\f3a1" } .ion-android-phone-portrait:before { content: "\f3a2" } .ion-android-pin:before { content: "\f3a3" } .ion-android-plane:before { content: "\f3a4" } .ion-android-playstore:before { content: "\f2f0" } .ion-android-print:before { content: "\f3a5" } .ion-android-radio-button-off:before { content: "\f3a6" } .ion-android-radio-button-on:before { content: "\f3a7" } .ion-android-refresh:before { content: "\f3a8" } .ion-android-remove:before { content: "\f2f4" } .ion-android-remove-circle:before { content: "\f3a9" } .ion-android-restaurant:before { content: "\f3aa" } .ion-android-sad:before { content: "\f3ab" } .ion-android-search:before { content: "\f2f5" } .ion-android-send:before { content: "\f2f6" } .ion-android-settings:before { content: "\f2f7" } .ion-android-share:before { content: "\f2f8" } .ion-android-share-alt:before { content: "\f3ac" } .ion-android-star:before { content: "\f2fc" } .ion-android-star-half:before { content: "\f3ad" } .ion-android-star-outline:before { content: "\f3ae" } .ion-android-stopwatch:before { content: "\f2fd" } .ion-android-subway:before { content: "\f3af" } .ion-android-sunny:before { content: "\f3b0" } .ion-android-sync:before { content: "\f3b1" } .ion-android-textsms:before { content: "\f3b2" } .ion-android-time:before { content: "\f3b3" } .ion-android-train:before { content: "\f3b4" } .ion-android-unlock:before { content: "\f3b5" } .ion-android-upload:before { content: "\f3b6" } .ion-android-volume-down:before { content: "\f3b7" } .ion-android-volume-mute:before { content: "\f3b8" } .ion-android-volume-off:before { content: "\f3b9" } .ion-android-volume-up:before { content: "\f3ba" } .ion-android-walk:before { content: "\f3bb" } .ion-android-warning:before { content: "\f3bc" } .ion-android-watch:before { content: "\f3bd" } .ion-android-wifi:before { content: "\f305" } .ion-aperture:before { content: "\f313" } .ion-archive:before { content: "\f102" } .ion-arrow-down-a:before { content: "\f103" } .ion-arrow-down-b:before { content: "\f104" } .ion-arrow-down-c:before { content: "\f105" } .ion-arrow-expand:before { content: "\f25e" } .ion-arrow-graph-down-left:before { content: "\f25f" } .ion-arrow-graph-down-right:before { content: "\f260" } .ion-arrow-graph-up-left:before { content: "\f261" } .ion-arrow-graph-up-right:before { content: "\f262" } .ion-arrow-left-a:before { content: "\f106" } .ion-arrow-left-b:before { content: "\f107" } .ion-arrow-left-c:before { content: "\f108" } .ion-arrow-move:before { content: "\f263" } .ion-arrow-resize:before { content: "\f264" } .ion-arrow-return-left:before { content: "\f265" } .ion-arrow-return-right:before { content: "\f266" } .ion-arrow-right-a:before { content: "\f109" } .ion-arrow-right-b:before { content: "\f10a" } .ion-arrow-right-c:before { content: "\f10b" } .ion-arrow-shrink:before { content: "\f267" } .ion-arrow-swap:before { content: "\f268" } .ion-arrow-up-a:before { content: "\f10c" } .ion-arrow-up-b:before { content: "\f10d" } .ion-arrow-up-c:before { content: "\f10e" } .ion-asterisk:before { content: "\f314" } .ion-at:before { content: "\f10f" } .ion-backspace:before { content: "\f3bf" } .ion-backspace-outline:before { content: "\f3be" } .ion-bag:before { content: "\f110" } .ion-battery-charging:before { content: "\f111" } .ion-battery-empty:before { content: "\f112" } .ion-battery-full:before { content: "\f113" } .ion-battery-half:before { content: "\f114" } .ion-battery-low:before { content: "\f115" } .ion-beaker:before { content: "\f269" } .ion-beer:before { content: "\f26a" } .ion-bluetooth:before { content: "\f116" } .ion-bonfire:before { content: "\f315" } .ion-bookmark:before { content: "\f26b" } .ion-bowtie:before { content: "\f3c0" } .ion-briefcase:before { content: "\f26c" } .ion-bug:before { content: "\f2be" } .ion-calculator:before { content: "\f26d" } .ion-calendar:before { content: "\f117" } .ion-camera:before { content: "\f118" } .ion-card:before { content: "\f119" } .ion-cash:before { content: "\f316" } .ion-chatbox:before { content: "\f11b" } .ion-chatbox-working:before { content: "\f11a" } .ion-chatboxes:before { content: "\f11c" } .ion-chatbubble:before { content: "\f11e" } .ion-chatbubble-working:before { content: "\f11d" } .ion-chatbubbles:before { content: "\f11f" } .ion-checkmark:before { content: "\f122" } .ion-checkmark-circled:before { content: "\f120" } .ion-checkmark-round:before { content: "\f121" } .ion-chevron-down:before { content: "\f123" } .ion-chevron-left:before { content: "\f124" } .ion-chevron-right:before { content: "\f125" } .ion-chevron-up:before { content: "\f126" } .ion-clipboard:before { content: "\f127" } .ion-clock:before { content: "\f26e" } .ion-close:before { content: "\f12a" } .ion-close-circled:before { content: "\f128" } .ion-close-round:before { content: "\f129" } .ion-closed-captioning:before { content: "\f317" } .ion-cloud:before { content: "\f12b" } .ion-code:before { content: "\f271" } .ion-code-download:before { content: "\f26f" } .ion-code-working:before { content: "\f270" } .ion-coffee:before { content: "\f272" } .ion-compass:before { content: "\f273" } .ion-compose:before { content: "\f12c" } .ion-connection-bars:before { content: "\f274" } .ion-contrast:before { content: "\f275" } .ion-crop:before { content: "\f3c1" } .ion-cube:before { content: "\f318" } .ion-disc:before { content: "\f12d" } .ion-document:before { content: "\f12f" } .ion-document-text:before { content: "\f12e" } .ion-drag:before { content: "\f130" } .ion-earth:before { content: "\f276" } .ion-easel:before { content: "\f3c2" } .ion-edit:before { content: "\f2bf" } .ion-egg:before { content: "\f277" } .ion-eject:before { content: "\f131" } .ion-email:before { content: "\f132" } .ion-email-unread:before { content: "\f3c3" } .ion-erlenmeyer-flask:before { content: "\f3c5" } .ion-erlenmeyer-flask-bubbles:before { content: "\f3c4" } .ion-eye:before { content: "\f133" } .ion-eye-disabled:before { content: "\f306" } .ion-female:before { content: "\f278" } .ion-filing:before { content: "\f134" } .ion-film-marker:before { content: "\f135" } .ion-fireball:before { content: "\f319" } .ion-flag:before { content: "\f279" } .ion-flame:before { content: "\f31a" } .ion-flash:before { content: "\f137" } .ion-flash-off:before { content: "\f136" } .ion-folder:before { content: "\f139" } .ion-fork:before { content: "\f27a" } .ion-fork-repo:before { content: "\f2c0" } .ion-forward:before { content: "\f13a" } .ion-funnel:before { content: "\f31b" } .ion-gear-a:before { content: "\f13d" } .ion-gear-b:before { content: "\f13e" } .ion-grid:before { content: "\f13f" } .ion-hammer:before { content: "\f27b" } .ion-happy:before { content: "\f31c" } .ion-happy-outline:before { content: "\f3c6" } .ion-headphone:before { content: "\f140" } .ion-heart:before { content: "\f141" } .ion-heart-broken:before { content: "\f31d" } .ion-help:before { content: "\f143" } .ion-help-buoy:before { content: "\f27c" } .ion-help-circled:before { content: "\f142" } .ion-home:before { content: "\f144" } .ion-icecream:before { content: "\f27d" } .ion-image:before { content: "\f147" } .ion-images:before { content: "\f148" } .ion-information:before { content: "\f14a" } .ion-information-circled:before { content: "\f149" } .ion-ionic:before { content: "\f14b" } .ion-ios-alarm:before { content: "\f3c8" } .ion-ios-alarm-outline:before { content: "\f3c7" } .ion-ios-albums:before { content: "\f3ca" } .ion-ios-albums-outline:before { content: "\f3c9" } .ion-ios-americanfootball:before { content: "\f3cc" } .ion-ios-americanfootball-outline:before { content: "\f3cb" } .ion-ios-analytics:before { content: "\f3ce" } .ion-ios-analytics-outline:before { content: "\f3cd" } .ion-ios-arrow-back:before { content: "\f3cf" } .ion-ios-arrow-down:before { content: "\f3d0" } .ion-ios-arrow-forward:before { content: "\f3d1" } .ion-ios-arrow-left:before { content: "\f3d2" } .ion-ios-arrow-right:before { content: "\f3d3" } .ion-ios-arrow-thin-down:before { content: "\f3d4" } .ion-ios-arrow-thin-left:before { content: "\f3d5" } .ion-ios-arrow-thin-right:before { content: "\f3d6" } .ion-ios-arrow-thin-up:before { content: "\f3d7" } .ion-ios-arrow-up:before { content: "\f3d8" } .ion-ios-at:before { content: "\f3da" } .ion-ios-at-outline:before { content: "\f3d9" } .ion-ios-barcode:before { content: "\f3dc" } .ion-ios-barcode-outline:before { content: "\f3db" } .ion-ios-baseball:before { content: "\f3de" } .ion-ios-baseball-outline:before { content: "\f3dd" } .ion-ios-basketball:before { content: "\f3e0" } .ion-ios-basketball-outline:before { content: "\f3df" } .ion-ios-bell:before { content: "\f3e2" } .ion-ios-bell-outline:before { content: "\f3e1" } .ion-ios-body:before { content: "\f3e4" } .ion-ios-body-outline:before { content: "\f3e3" } .ion-ios-bolt:before { content: "\f3e6" } .ion-ios-bolt-outline:before { content: "\f3e5" } .ion-ios-book:before { content: "\f3e8" } .ion-ios-book-outline:before { content: "\f3e7" } .ion-ios-bookmarks:before { content: "\f3ea" } .ion-ios-bookmarks-outline:before { content: "\f3e9" } .ion-ios-box:before { content: "\f3ec" } .ion-ios-box-outline:before { content: "\f3eb" } .ion-ios-briefcase:before { content: "\f3ee" } .ion-ios-briefcase-outline:before { content: "\f3ed" } .ion-ios-browsers:before { content: "\f3f0" } .ion-ios-browsers-outline:before { content: "\f3ef" } .ion-ios-calculator:before { content: "\f3f2" } .ion-ios-calculator-outline:before { content: "\f3f1" } .ion-ios-calendar:before { content: "\f3f4" } .ion-ios-calendar-outline:before { content: "\f3f3" } .ion-ios-camera:before { content: "\f3f6" } .ion-ios-camera-outline:before { content: "\f3f5" } .ion-ios-cart:before { content: "\f3f8" } .ion-ios-cart-outline:before { content: "\f3f7" } .ion-ios-chatboxes:before { content: "\f3fa" } .ion-ios-chatboxes-outline:before { content: "\f3f9" } .ion-ios-chatbubble:before { content: "\f3fc" } .ion-ios-chatbubble-outline:before { content: "\f3fb" } .ion-ios-checkmark:before { content: "\f3ff" } .ion-ios-checkmark-empty:before { content: "\f3fd" } .ion-ios-checkmark-outline:before { content: "\f3fe" } .ion-ios-circle-filled:before { content: "\f400" } .ion-ios-circle-outline:before { content: "\f401" } .ion-ios-clock:before { content: "\f403" } .ion-ios-clock-outline:before { content: "\f402" } .ion-ios-close:before { content: "\f406" } .ion-ios-close-empty:before { content: "\f404" } .ion-ios-close-outline:before { content: "\f405" } .ion-ios-cloud:before { content: "\f40c" } .ion-ios-cloud-download:before { content: "\f408" } .ion-ios-cloud-download-outline:before { content: "\f407" } .ion-ios-cloud-outline:before { content: "\f409" } .ion-ios-cloud-upload:before { content: "\f40b" } .ion-ios-cloud-upload-outline:before { content: "\f40a" } .ion-ios-cloudy:before { content: "\f410" } .ion-ios-cloudy-night:before { content: "\f40e" } .ion-ios-cloudy-night-outline:before { content: "\f40d" } .ion-ios-cloudy-outline:before { content: "\f40f" } .ion-ios-cog:before { content: "\f412" } .ion-ios-cog-outline:before { content: "\f411" } .ion-ios-color-filter:before { content: "\f414" } .ion-ios-color-filter-outline:before { content: "\f413" } .ion-ios-color-wand:before { content: "\f416" } .ion-ios-color-wand-outline:before { content: "\f415" } .ion-ios-compose:before { content: "\f418" } .ion-ios-compose-outline:before { content: "\f417" } .ion-ios-contact:before { content: "\f41a" } .ion-ios-contact-outline:before { content: "\f419" } .ion-ios-copy:before { content: "\f41c" } .ion-ios-copy-outline:before { content: "\f41b" } .ion-ios-crop:before { content: "\f41e" } .ion-ios-crop-strong:before { content: "\f41d" } .ion-ios-download:before { content: "\f420" } .ion-ios-download-outline:before { content: "\f41f" } .ion-ios-drag:before { content: "\f421" } .ion-ios-email:before { content: "\f423" } .ion-ios-email-outline:before { content: "\f422" } .ion-ios-eye:before { content: "\f425" } .ion-ios-eye-outline:before { content: "\f424" } .ion-ios-fastforward:before { content: "\f427" } .ion-ios-fastforward-outline:before { content: "\f426" } .ion-ios-filing:before { content: "\f429" } .ion-ios-filing-outline:before { content: "\f428" } .ion-ios-film:before { content: "\f42b" } .ion-ios-film-outline:before { content: "\f42a" } .ion-ios-flag:before { content: "\f42d" } .ion-ios-flag-outline:before { content: "\f42c" } .ion-ios-flame:before { content: "\f42f" } .ion-ios-flame-outline:before { content: "\f42e" } .ion-ios-flask:before { content: "\f431" } .ion-ios-flask-outline:before { content: "\f430" } .ion-ios-flower:before { content: "\f433" } .ion-ios-flower-outline:before { content: "\f432" } .ion-ios-folder:before { content: "\f435" } .ion-ios-folder-outline:before { content: "\f434" } .ion-ios-football:before { content: "\f437" } .ion-ios-football-outline:before { content: "\f436" } .ion-ios-game-controller-a:before { content: "\f439" } .ion-ios-game-controller-a-outline:before { content: "\f438" } .ion-ios-game-controller-b:before { content: "\f43b" } .ion-ios-game-controller-b-outline:before { content: "\f43a" } .ion-ios-gear:before { content: "\f43d" } .ion-ios-gear-outline:before { content: "\f43c" } .ion-ios-glasses:before { content: "\f43f" } .ion-ios-glasses-outline:before { content: "\f43e" } .ion-ios-grid-view:before { content: "\f441" } .ion-ios-grid-view-outline:before { content: "\f440" } .ion-ios-heart:before { content: "\f443" } .ion-ios-heart-outline:before { content: "\f442" } .ion-ios-help:before { content: "\f446" } .ion-ios-help-empty:before { content: "\f444" } .ion-ios-help-outline:before { content: "\f445" } .ion-ios-home:before { content: "\f448" } .ion-ios-home-outline:before { content: "\f447" } .ion-ios-infinite:before { content: "\f44a" } .ion-ios-infinite-outline:before { content: "\f449" } .ion-ios-information:before { content: "\f44d" } .ion-ios-information-empty:before { content: "\f44b" } .ion-ios-information-outline:before { content: "\f44c" } .ion-ios-ionic-outline:before { content: "\f44e" } .ion-ios-keypad:before { content: "\f450" } .ion-ios-keypad-outline:before { content: "\f44f" } .ion-ios-lightbulb:before { content: "\f452" } .ion-ios-lightbulb-outline:before { content: "\f451" } .ion-ios-list:before { content: "\f454" } .ion-ios-list-outline:before { content: "\f453" } .ion-ios-location:before { content: "\f456" } .ion-ios-location-outline:before { content: "\f455" } .ion-ios-locked:before { content: "\f458" } .ion-ios-locked-outline:before { content: "\f457" } .ion-ios-loop:before { content: "\f45a" } .ion-ios-loop-strong:before { content: "\f459" } .ion-ios-medical:before { content: "\f45c" } .ion-ios-medical-outline:before { content: "\f45b" } .ion-ios-medkit:before { content: "\f45e" } .ion-ios-medkit-outline:before { content: "\f45d" } .ion-ios-mic:before { content: "\f461" } .ion-ios-mic-off:before { content: "\f45f" } .ion-ios-mic-outline:before { content: "\f460" } .ion-ios-minus:before { content: "\f464" } .ion-ios-minus-empty:before { content: "\f462" } .ion-ios-minus-outline:before { content: "\f463" } .ion-ios-monitor:before { content: "\f466" } .ion-ios-monitor-outline:before { content: "\f465" } .ion-ios-moon:before { content: "\f468" } .ion-ios-moon-outline:before { content: "\f467" } .ion-ios-more:before { content: "\f46a" } .ion-ios-more-outline:before { content: "\f469" } .ion-ios-musical-note:before { content: "\f46b" } .ion-ios-musical-notes:before { content: "\f46c" } .ion-ios-navigate:before { content: "\f46e" } .ion-ios-navigate-outline:before { content: "\f46d" } .ion-ios-nutrition:before { content: "\f470" } .ion-ios-nutrition-outline:before { content: "\f46f" } .ion-ios-paper:before { content: "\f472" } .ion-ios-paper-outline:before { content: "\f471" } .ion-ios-paperplane:before { content: "\f474" } .ion-ios-paperplane-outline:before { content: "\f473" } .ion-ios-partlysunny:before { content: "\f476" } .ion-ios-partlysunny-outline:before { content: "\f475" } .ion-ios-pause:before { content: "\f478" } .ion-ios-pause-outline:before { content: "\f477" } .ion-ios-paw:before { content: "\f47a" } .ion-ios-paw-outline:before { content: "\f479" } .ion-ios-people:before { content: "\f47c" } .ion-ios-people-outline:before { content: "\f47b" } .ion-ios-person:before { content: "\f47e" } .ion-ios-person-outline:before { content: "\f47d" } .ion-ios-personadd:before { content: "\f480" } .ion-ios-personadd-outline:before { content: "\f47f" } .ion-ios-photos:before { content: "\f482" } .ion-ios-photos-outline:before { content: "\f481" } .ion-ios-pie:before { content: "\f484" } .ion-ios-pie-outline:before { content: "\f483" } .ion-ios-pint:before { content: "\f486" } .ion-ios-pint-outline:before { content: "\f485" } .ion-ios-play:before { content: "\f488" } .ion-ios-play-outline:before { content: "\f487" } .ion-ios-plus:before { content: "\f48b" } .ion-ios-plus-empty:before { content: "\f489" } .ion-ios-plus-outline:before { content: "\f48a" } .ion-ios-pricetag:before { content: "\f48d" } .ion-ios-pricetag-outline:before { content: "\f48c" } .ion-ios-pricetags:before { content: "\f48f" } .ion-ios-pricetags-outline:before { content: "\f48e" } .ion-ios-printer:before { content: "\f491" } .ion-ios-printer-outline:before { content: "\f490" } .ion-ios-pulse:before { content: "\f493" } .ion-ios-pulse-strong:before { content: "\f492" } .ion-ios-rainy:before { content: "\f495" } .ion-ios-rainy-outline:before { content: "\f494" } .ion-ios-recording:before { content: "\f497" } .ion-ios-recording-outline:before { content: "\f496" } .ion-ios-redo:before { content: "\f499" } .ion-ios-redo-outline:before { content: "\f498" } .ion-ios-refresh:before { content: "\f49c" } .ion-ios-refresh-empty:before { content: "\f49a" } .ion-ios-refresh-outline:before { content: "\f49b" } .ion-ios-reload:before { content: "\f49d" } .ion-ios-reverse-camera:before { content: "\f49f" } .ion-ios-reverse-camera-outline:before { content: "\f49e" } .ion-ios-rewind:before { content: "\f4a1" } .ion-ios-rewind-outline:before { content: "\f4a0" } .ion-ios-rose:before { content: "\f4a3" } .ion-ios-rose-outline:before { content: "\f4a2" } .ion-ios-search:before { content: "\f4a5" } .ion-ios-search-strong:before { content: "\f4a4" } .ion-ios-settings:before { content: "\f4a7" } .ion-ios-settings-strong:before { content: "\f4a6" } .ion-ios-shuffle:before { content: "\f4a9" } .ion-ios-shuffle-strong:before { content: "\f4a8" } .ion-ios-skipbackward:before { content: "\f4ab" } .ion-ios-skipbackward-outline:before { content: "\f4aa" } .ion-ios-skipforward:before { content: "\f4ad" } .ion-ios-skipforward-outline:before { content: "\f4ac" } .ion-ios-snowy:before { content: "\f4ae" } .ion-ios-speedometer:before { content: "\f4b0" } .ion-ios-speedometer-outline:before { content: "\f4af" } .ion-ios-star:before { content: "\f4b3" } .ion-ios-star-half:before { content: "\f4b1" } .ion-ios-star-outline:before { content: "\f4b2" } .ion-ios-stopwatch:before { content: "\f4b5" } .ion-ios-stopwatch-outline:before { content: "\f4b4" } .ion-ios-sunny:before { content: "\f4b7" } .ion-ios-sunny-outline:before { content: "\f4b6" } .ion-ios-telephone:before { content: "\f4b9" } .ion-ios-telephone-outline:before { content: "\f4b8" } .ion-ios-tennisball:before { content: "\f4bb" } .ion-ios-tennisball-outline:before { content: "\f4ba" } .ion-ios-thunderstorm:before { content: "\f4bd" } .ion-ios-thunderstorm-outline:before { content: "\f4bc" } .ion-ios-time:before { content: "\f4bf" } .ion-ios-time-outline:before { content: "\f4be" } .ion-ios-timer:before { content: "\f4c1" } .ion-ios-timer-outline:before { content: "\f4c0" } .ion-ios-toggle:before { content: "\f4c3" } .ion-ios-toggle-outline:before { content: "\f4c2" } .ion-ios-trash:before { content: "\f4c5" } .ion-ios-trash-outline:before { content: "\f4c4" } .ion-ios-undo:before { content: "\f4c7" } .ion-ios-undo-outline:before { content: "\f4c6" } .ion-ios-unlocked:before { content: "\f4c9" } .ion-ios-unlocked-outline:before { content: "\f4c8" } .ion-ios-upload:before { content: "\f4cb" } .ion-ios-upload-outline:before { content: "\f4ca" } .ion-ios-videocam:before { content: "\f4cd" } .ion-ios-videocam-outline:before { content: "\f4cc" } .ion-ios-volume-high:before { content: "\f4ce" } .ion-ios-volume-low:before { content: "\f4cf" } .ion-ios-wineglass:before { content: "\f4d1" } .ion-ios-wineglass-outline:before { content: "\f4d0" } .ion-ios-world:before { content: "\f4d3" } .ion-ios-world-outline:before { content: "\f4d2" } .ion-ipad:before { content: "\f1f9" } .ion-iphone:before { content: "\f1fa" } .ion-ipod:before { content: "\f1fb" } .ion-jet:before { content: "\f295" } .ion-key:before { content: "\f296" } .ion-knife:before { content: "\f297" } .ion-laptop:before { content: "\f1fc" } .ion-leaf:before { content: "\f1fd" } .ion-levels:before { content: "\f298" } .ion-lightbulb:before { content: "\f299" } .ion-link:before { content: "\f1fe" } .ion-load-a:before { content: "\f29a" } .ion-load-b:before { content: "\f29b" } .ion-load-c:before { content: "\f29c" } .ion-load-d:before { content: "\f29d" } .ion-location:before { content: "\f1ff" } .ion-lock-combination:before { content: "\f4d4" } .ion-locked:before { content: "\f200" } .ion-log-in:before { content: "\f29e" } .ion-log-out:before { content: "\f29f" } .ion-loop:before { content: "\f201" } .ion-magnet:before { content: "\f2a0" } .ion-male:before { content: "\f2a1" } .ion-man:before { content: "\f202" } .ion-map:before { content: "\f203" } .ion-medkit:before { content: "\f2a2" } .ion-merge:before { content: "\f33f" } .ion-mic-a:before { content: "\f204" } .ion-mic-b:before { content: "\f205" } .ion-mic-c:before { content: "\f206" } .ion-minus:before { content: "\f209" } .ion-minus-circled:before { content: "\f207" } .ion-minus-round:before { content: "\f208" } .ion-model-s:before { content: "\f2c1" } .ion-monitor:before { content: "\f20a" } .ion-more:before { content: "\f20b" } .ion-mouse:before { content: "\f340" } .ion-music-note:before { content: "\f20c" } .ion-navicon:before { content: "\f20e" } .ion-navicon-round:before { content: "\f20d" } .ion-navigate:before { content: "\f2a3" } .ion-network:before { content: "\f341" } .ion-no-smoking:before { content: "\f2c2" } .ion-nuclear:before { content: "\f2a4" } .ion-outlet:before { content: "\f342" } .ion-paintbrush:before { content: "\f4d5" } .ion-paintbucket:before { content: "\f4d6" } .ion-paper-airplane:before { content: "\f2c3" } .ion-paperclip:before { content: "\f20f" } .ion-pause:before { content: "\f210" } .ion-person:before { content: "\f213" } .ion-person-add:before { content: "\f211" } .ion-person-stalker:before { content: "\f212" } .ion-pie-graph:before { content: "\f2a5" } .ion-pin:before { content: "\f2a6" } .ion-pinpoint:before { content: "\f2a7" } .ion-pizza:before { content: "\f2a8" } .ion-plane:before { content: "\f214" } .ion-planet:before { content: "\f343" } .ion-play:before { content: "\f215" } .ion-playstation:before { content: "\f30a" } .ion-plus:before { content: "\f218" } .ion-plus-circled:before { content: "\f216" } .ion-plus-round:before { content: "\f217" } .ion-podium:before { content: "\f344" } .ion-pound:before { content: "\f219" } .ion-power:before { content: "\f2a9" } .ion-pricetag:before { content: "\f2aa" } .ion-pricetags:before { content: "\f2ab" } .ion-printer:before { content: "\f21a" } .ion-pull-request:before { content: "\f345" } .ion-qr-scanner:before { content: "\f346" } .ion-quote:before { content: "\f347" } .ion-radio-waves:before { content: "\f2ac" } .ion-record:before { content: "\f21b" } .ion-refresh:before { content: "\f21c" } .ion-reply:before { content: "\f21e" } .ion-reply-all:before { content: "\f21d" } .ion-ribbon-a:before { content: "\f348" } .ion-ribbon-b:before { content: "\f349" } .ion-sad:before { content: "\f34a" } .ion-sad-outline:before { content: "\f4d7" } .ion-scissors:before { content: "\f34b" } .ion-search:before { content: "\f21f" } .ion-settings:before { content: "\f2ad" } .ion-share:before { content: "\f220" } .ion-shuffle:before { content: "\f221" } .ion-skip-backward:before { content: "\f222" } .ion-skip-forward:before { content: "\f223" } .ion-social-android:before { content: "\f225" } .ion-social-android-outline:before { content: "\f224" } .ion-social-angular:before { content: "\f4d9" } .ion-social-angular-outline:before { content: "\f4d8" } .ion-social-apple:before { content: "\f227" } .ion-social-apple-outline:before { content: "\f226" } .ion-social-bitcoin:before { content: "\f2af" } .ion-social-bitcoin-outline:before { content: "\f2ae" } .ion-social-buffer:before { content: "\f229" } .ion-social-buffer-outline:before { content: "\f228" } .ion-social-chrome:before { content: "\f4db" } .ion-social-chrome-outline:before { content: "\f4da" } .ion-social-codepen:before { content: "\f4dd" } .ion-social-codepen-outline:before { content: "\f4dc" } .ion-social-css3:before { content: "\f4df" } .ion-social-css3-outline:before { content: "\f4de" } .ion-social-designernews:before { content: "\f22b" } .ion-social-designernews-outline:before { content: "\f22a" } .ion-social-dribbble:before { content: "\f22d" } .ion-social-dribbble-outline:before { content: "\f22c" } .ion-social-dropbox:before { content: "\f22f" } .ion-social-dropbox-outline:before { content: "\f22e" } .ion-social-euro:before { content: "\f4e1" } .ion-social-euro-outline:before { content: "\f4e0" } .ion-social-facebook:before { content: "\f231" } .ion-social-facebook-outline:before { content: "\f230" } .ion-social-foursquare:before { content: "\f34d" } .ion-social-foursquare-outline:before { content: "\f34c" } .ion-social-freebsd-devil:before { content: "\f2c4" } .ion-social-github:before { content: "\f233" } .ion-social-github-outline:before { content: "\f232" } .ion-social-google:before { content: "\f34f" } .ion-social-google-outline:before { content: "\f34e" } .ion-social-googleplus:before { content: "\f235" } .ion-social-googleplus-outline:before { content: "\f234" } .ion-social-hackernews:before { content: "\f237" } .ion-social-hackernews-outline:before { content: "\f236" } .ion-social-html5:before { content: "\f4e3" } .ion-social-html5-outline:before { content: "\f4e2" } .ion-social-instagram:before { content: "\f351" } .ion-social-instagram-outline:before { content: "\f350" } .ion-social-javascript:before { content: "\f4e5" } .ion-social-javascript-outline:before { content: "\f4e4" } .ion-social-linkedin:before { content: "\f239" } .ion-social-linkedin-outline:before { content: "\f238" } .ion-social-markdown:before { content: "\f4e6" } .ion-social-nodejs:before { content: "\f4e7" } .ion-social-octocat:before { content: "\f4e8" } .ion-social-pinterest:before { content: "\f2b1" } .ion-social-pinterest-outline:before { content: "\f2b0" } .ion-social-python:before { content: "\f4e9" } .ion-social-reddit:before { content: "\f23b" } .ion-social-reddit-outline:before { content: "\f23a" } .ion-social-rss:before { content: "\f23d" } .ion-social-rss-outline:before { content: "\f23c" } .ion-social-sass:before { content: "\f4ea" } .ion-social-skype:before { content: "\f23f" } .ion-social-skype-outline:before { content: "\f23e" } .ion-social-snapchat:before { content: "\f4ec" } .ion-social-snapchat-outline:before { content: "\f4eb" } .ion-social-tumblr:before { content: "\f241" } .ion-social-tumblr-outline:before { content: "\f240" } .ion-social-tux:before { content: "\f2c5" } .ion-social-twitch:before { content: "\f4ee" } .ion-social-twitch-outline:before { content: "\f4ed" } .ion-social-twitter:before { content: "\f243" } .ion-social-twitter-outline:before { content: "\f242" } .ion-social-usd:before { content: "\f353" } .ion-social-usd-outline:before { content: "\f352" } .ion-social-vimeo:before { content: "\f245" } .ion-social-vimeo-outline:before { content: "\f244" } .ion-social-whatsapp:before { content: "\f4f0" } .ion-social-whatsapp-outline:before { content: "\f4ef" } .ion-social-windows:before { content: "\f247" } .ion-social-windows-outline:before { content: "\f246" } .ion-social-wordpress:before { content: "\f249" } .ion-social-wordpress-outline:before { content: "\f248" } .ion-social-yahoo:before { content: "\f24b" } .ion-social-yahoo-outline:before { content: "\f24a" } .ion-social-yen:before { content: "\f4f2" } .ion-social-yen-outline:before { content: "\f4f1" } .ion-social-youtube:before { content: "\f24d" } .ion-social-youtube-outline:before { content: "\f24c" } .ion-soup-can:before { content: "\f4f4" } .ion-soup-can-outline:before { content: "\f4f3" } .ion-speakerphone:before { content: "\f2b2" } .ion-speedometer:before { content: "\f2b3" } .ion-spoon:before { content: "\f2b4" } .ion-star:before { content: "\f24e" } .ion-stats-bars:before { content: "\f2b5" } .ion-steam:before { content: "\f30b" } .ion-stop:before { content: "\f24f" } .ion-thermometer:before { content: "\f2b6" } .ion-thumbsdown:before { content: "\f250" } .ion-thumbsup:before { content: "\f251" } .ion-toggle:before { content: "\f355" } .ion-toggle-filled:before { content: "\f354" } .ion-transgender:before { content: "\f4f5" } .ion-trash-a:before { content: "\f252" } .ion-trash-b:before { content: "\f253" } .ion-trophy:before { content: "\f356" } .ion-tshirt:before { content: "\f4f7" } .ion-tshirt-outline:before { content: "\f4f6" } .ion-umbrella:before { content: "\f2b7" } .ion-university:before { content: "\f357" } .ion-unlocked:before { content: "\f254" } .ion-upload:before { content: "\f255" } .ion-usb:before { content: "\f2b8" } .ion-videocamera:before { content: "\f256" } .ion-volume-high:before { content: "\f257" } .ion-volume-low:before { content: "\f258" } .ion-volume-medium:before { content: "\f259" } .ion-volume-mute:before { content: "\f25a" } .ion-wand:before { content: "\f358" } .ion-waterdrop:before { content: "\f25b" } .ion-wifi:before { content: "\f25c" } .ion-wineglass:before { content: "\f2b9" } .ion-woman:before { content: "\f25d" } .ion-wrench:before { content: "\f2ba" } .ion-xbox:before { content: "\f30c" } ================================================ FILE: base/icons.html ================================================
MobileUI also comes with its own free and open-source icon font, Ionicons, with over 500 icons to choose from.
The icons are in base MobileUI, for use just install base the command:
mobileui install base
And add icon and the Ionicon class name for the icon to show, which can be easily looked up on the Ionicons homepage. You can change the color add class colors for text.
MobileUI was created thinking of making your hybrid application faster and smaller, since you only install what you are really going to use for UI.
Certainly, you will love using it in Progressive Web Apps and Apache Cordova Apps. You can use only the components you want in your projects created with PhoneGap, Ionic Framework, Onsen UI, Framework7 and others focused on creating web apps.
A rich variety of UI components specially designed for mobile apps. MobileUI provides tabs, side menu, stack navigation and tons of other components such as lists and forms. Some of the existing components are displayed differently on Android and iOS, with automatic styling that will change the appearance of the app based on the platform.
The Installation is straightforward, but first, you need to install Node.js. Then, install Cordova via terminal npm install -g cordova(add sudo if you are in Linux).
After that, just execute the command in your terminal:
npm install -g mobileui
To check if MobileUI is installed or not, open the terminal and type mobileui
Let's create a Simple Example using MobileUI and Cordova:
cordova create apptest cd apptest mobileui install template cordova-blank mobileui install header mobileui preview
Let's check the commands:
cordova create apptest
|
Create a cordova project |
cd apptest
|
Change the directory to your project |
mobileui install template cordova-blank
|
Clears the sample files created by the Cordova |
mobileui install header
|
For sample we can take header component |
mobileui preview
|
Emulates the app to run in the browser |
After that add the below code in index.html
By default, an HTTP server will run on port 8080, but you can change it by passing the --port parameter with the desired port, eg --port 8000
base colors.*/
.line {
width: 100%;
height: 1px;
display: block;
clear: both;
}
.icon {
font-size: 28px;
}
img, video {
max-width: 100%
}
p {
margin-top: 5px;
margin-bottom: 5px
}
/*Add an internal space.*/
.padding {
padding: 10px
}
/*Add a padding on the top.*/
.padding-top {
padding-top: 10px;
}
/*Add an external space.*/
.margin {
margin: 10px
}
span.padding {
padding: 6px;
padding-top: 2px;
padding-bottom: 2px;
}
/*Add a small rounded border.*/
.radius {
border-radius: 4px;
}
/*Add a large rounded border.*/
.radius-big {
border-radius: 22px;
}
/*Add a circular border.*/
.circle {
border-radius: 50%;
}
/*Adds a small border just to the left.*/
.radius-left {
border-top-left-radius: 4px;
border-bottom-left-radius: 4px
}
/*Adds a small border just to the right.*/
.radius-right {
border-top-right-radius: 4px;
border-bottom-right-radius: 4px
}
/*Adds a small border just to the top.*/
.radius-top {
border-top-left-radius: 4px;
border-top-right-radius: 4px;
}
/*Limit the display of a text in only one line with periods at the end.*/
.ellipsis {
overflow: hidden;
text-overflow: ellipsis;
white-space: nowrap;
}
/*Create a shadow on an element (not text).*/
.shadow {
box-shadow: 1px 1px 3px rgba(0, 0, 0, 0.2);
}
/*Add a space vertically.*/
.space {
width: 100%;
height: 20px;
}
/*Add a big space vertically.*/
.space-big {
width: 100%;
height: 50px;
}
/*Add a huge space vertically.*/
.space-huge {
width: 100%;
height: 100px;
}
/*Add a margin on the bottom.*/
.margin-bottom {
margin-bottom: 10px;
}
/*Add a margin on the top.*/
.margin-top {
margin-top: 10px;
}
/*Create a shadow in a text.*/
.text-shadow {
text-shadow: 1px 1px 3px rgba(0, 0, 0, 0.2);
}
/*Leave the text small.*/
.text-small {
font-size: 14px;
}
.text-small .icon,
.text-small.icon {
font-size: 14px !important;
}
/*Leave the icon small.*/
.icon-small {
font-size: 14px !important;
}
/*Leave the icon big.*/
.icon-big {
font-size: 50px !important;
}
/*Leave the icon huge.*/
.icon-huge {
font-size: 65px !important;
}
/*Leave the icon extra-huge.*/
.icon-extra-huge {
font-size: 120px !important;
}
/*Leave the text large.*/
.text-big {
font-size: 22px
}
.text-big .icon,
.text-big.icon {
font-size: 22px !important;
}
/*Leave the text extra-huge.*/
.text-extra-huge {
font-size: 65px
}
.text-extra-huge .icon,
.text-extra-huge.icon {
font-size: 65px !important;
}
/*Leave the text huge.*/
.text-huge {
font-size: 32px
}
.text-huge .icon,
.text-huge.icon {
font-size: 32px !important;
}
/*Leave the text thinner.*/
.text-light {
font-weight: 300;
}
/*Leave a bold text.*/
.text-bold {
font-weight: bold;
}
/*Leave the text thicker.*/
.text-strong {
font-weight: 800;
}
/*Floats an element in the footer to the right.*/
.float-bottom-right {
position: fixed;
right: 15px;
bottom: 15px;
}
/*Floats an element in the footer to the left.*/
.float-bottom-left {
position: fixed;
left: 15px;
bottom: 15px;
}
/*Floats an element in the footer to the left.*/
.float-bottom-center {
position: fixed;
margin: auto;
left: 0;
bottom: 15px;
}
/*Create a completely round icon.*/
.icon-circle {
width: 40px;
height: 40px;
border-radius: 50%;
text-align: center;
display: flex;
align-items: center;
justify-content: center;
}
.icon-circle-small {
width: 25px;
height: 25px;
border-radius: 50%;
text-align: center;
display: flex;
align-items: center;
justify-content: center;
}
.icon-circle-small i {
font-size: 15px;
}
.icon-circle-big {
width: 80px;
height: 80px;
border-radius: 50%;
text-align: center;
display: flex;
align-items: center;
justify-content: center;
}
.icon-circle-big i {
font-size: 70px;
}
.backdrop {
position: fixed;
top: 0;
left: 0;
width: 100%;
height: 100%;
background-color: #000;
opacity: .01;
z-index: 9999;
transition-duration: 280ms;
}
.backdrop.show {
opacity: 0.4;
}
.mark {
border-left-width: 8px !important;
}
================================================
FILE: base/reset.css
================================================
* {
-webkit-tap-highlight-color: rgba(0,0,0,0);
margin: 0;
padding: 0;
box-sizing: border-box;
outline: none;
}
body {
-webkit-touch-callout: none;
-webkit-text-size-adjust: none;
-webkit-user-select: none;
background-color:#fff;
font-size:14px;
height:100%;
margin:0px;
padding:0px;
width:100%;
}
h1, h2, h3, h4, h5, h6 {
font-size: 100%;
font-weight: 400;
}
================================================
FILE: base/templates.html
================================================
To make application development faster and easier you can use some templates available through MobileUI.
To use a template you need to install with the command:
mobileui install template name-of-template
See list of template for this moment:
| Template | Description |
|---|---|
cordova-blank |
Create a files base to app created in Apache Cordova. |
cordova-angular1 |
Create a scaffold project using AngularJS |
cordova-phaser |
Create a scaffold project using Phaser. |
cordova-vuejs |
Create a scaffold project using VueJS. |
You can use colors theme and icons in button. If you need use base mode just add theme color name,
you can alter border color using class border-[COLOR], alter text color using class text-[COLOR] and add radius border using class radius.
For use icon in button you need add class icon-text and you can use diferent size, see the examples below.
To use this component you need install with the command:
base.
The dependencies will be installed together with this module
mobileui install button
You can use all features the base MobileUI in this component.
Another type button used in Android is a Tap, for this you can put circle class in button. You can controller what position button.
icon-text and icon-right the icon will be aligned to the right.*/
button.icon-text.icon-right {
padding-left: 12px;
padding-right: 40px;
position: relative;
}
button.icon-right i {
position: absolute;
right: 12px;
text-align: right;
margin-top: 2px;
}
button[class*="border-"] {
min-height: 40px;
line-height: 40px;
}
/*Leave the button occupying 100% width of the screen.*/
button.full {
width: 100%;
}
/*Leave the big button.*/
.buttons-group.big button,
button.big {
font-size: 22px;
min-height: 50px;
line-height: 50px;
}
button.circle.big {
width: 50px;
height: 50px;
font-size: 28px;
}
button.big.icon-text {
padding-left: 40px;
}
button.big.icon-text.icon-right {
padding-left: 12px;
padding-right: 40px;
}
button.big.icon-text i {
font-size: 26px;
}
/*Leave the small button.*/
.buttons-group.small button,
button.small {
font-size: 12px;
min-height: 30px;
line-height: 30px;
}
button.circle.small {
width: 30px;
height: 30px;
font-size: 18px;
}
button.small.icon-text {
padding-left: 30px;
}
button.small.icon-text.icon-right {
padding-left: 12px;
padding-right: 35px;
}
button.small.icon-text i {
font-size: 18px;
}
/*hugebutton.*/
.buttons-group.huge button,
button.huge {
font-size: 32px;
min-height: 70px;
line-height: 70px;
}
button.circle.huge {
width: 70px;
height: 70px;
font-size: 32px;
}
button.huge.icon-text {
padding-left: 40px;
}
button.huge.icon-text.icon-right {
padding-left: 12px;
padding-right: 40px;
}
button.huge.icon-text i {
font-size: 32px;
}
/*Create groups of buttons*/
.buttons-group {
display: inline-block;
}
.buttons-group button {
float: left;
margin-left: -1px;
}
.buttons-group button:first-child {
margin-left: 0;
}
.buttons-group.full {
display: flex;
}
.buttons-group.full button {
flex: 1;
}
.ripple {
position: absolute;
background: rgba(255,255,255,.25);
border-radius: 100%;
-webkit-transform: scale(0);
-moz-transform: scale(0);
-ms-transform: scale(0);
-o-transform: scale(0);
transform: scale(0);
pointer-events: none;
}
.ripple.show {
-webkit-animation: ripple .5s ease-out;
-moz-animation: ripple .5s ease-out;
-o-animation: ripple .5s ease-out;
animation: ripple .5s ease-out;
}
@-webkit-keyframes
ripple { to {
-webkit-transform: scale(1.5);
opacity: 0;
}
}
@-moz-keyframes
ripple { to {
-moz-transform: scale(1.5);
opacity: 0;
}
}
@-o-keyframes
ripple { to {
-o-transform: scale(1.5);
opacity: 0;
}
}
@keyframes
ripple { to {
transform: scale(1.5);
opacity: 0;
}
}
================================================
FILE: chart-bar/component.json
================================================
{
"name":"chart-bar",
"author": "fabiorogeriosj",
"dependencies": [
"base"
]
}
================================================
FILE: chart-bar/index.html
================================================
This component provides an efficient and customizable bar chart using the capabilities of the base.
To use this component you need install with the command:
base.
The dependencies will be installed together with this module
mobileui install chart-bar================================================ FILE: chart-bar/style.css ================================================ /*Determines a area of chart bar.*/ .chart-bar { display:table; table-layout: fixed; width:100%; height:250px; background-image: linear-gradient(to top, rgba(0, 0, 0, 0.1) 2%, rgba(0, 0, 0, 0) 2%); background-size: 100% 50px; background-position: left top; } /*Determines line in chart with white color.*/ .chart-bar.line-white { background-image: linear-gradient(to top, rgba(255, 255, 255, 0.1) 2%, rgba(255, 255, 255, 0) 2%); } /*Remove line in chart.*/ .chart-bar.no-line { background-image: none; } .chart-bar li { position:relative; display:table-cell; vertical-align:bottom; height:250px; } .chart-bar li span{ margin:0 5px; display: block; } .chart-bar li div { width: 100%; text-align: center; padding: 5px; } .chart-bar li span::before{ position:relative; top: 0; width: 100%; padding-top: 5px; padding-bottom: 5px; display:block; text-align:center; content:attr(title); word-wrap: break-word; overflow: hidden; opacity: 0.7; } /*Determines the small size.*/ .chart-bar.size-1 { width: 80px; } .chart-bar.size-1, .chart-bar.size-1 li { height: 40px; } .chart-bar.size-1 li span { margin:0 2px; } /*Determines the medium size.*/ .chart-bar.size-2 { width: 150px; } .chart-bar.size-2, .chart-bar.size-2 li { height: 60px; } .chart-bar.size-2 li span { margin:0 4px; } /*Determines the big size.*/ .chart-bar.size-3 { width: 250px; } .chart-bar.size-3, .chart-bar.size-3 li { height: 80px; } .chart-bar.size-3 li span { margin:0 5px; } ================================================ FILE: chartist/component.json ================================================ { "name":"chartist", "author": "gionkunz", "dependencies": [] } ================================================ FILE: chartist/index.html ================================================
You may think that this is just yet an other charting library. But Chartist.js is the product of a community that was disappointed about the abilities provided by other charting libraries. Of course there are hundreds of other great charting libraries but after using them there were always tweaks you would have wished for that were not included.
You can use colors theme and icons in Chartist.
To use this component you need install with the command:
mobileui install chartist
You can use all features the base MobileUI in this component.
Your can use the primary scheme colors and combination with others components. Next example use header, grid and list.
Below another example with combined charts using grid and component chartist-plugin-tooltip.
In this case you need install plugin with command mobileui install chartist-plugin-tooltip
Simple HTML5 Charts using the canvas element chartjs.org.
To use this component you need install with the command:
mobileui install chartjs
MobileUI use this lib for create another components!
================================================ FILE: chartjs/script.js ================================================ /*! * Chart.js * http://chartjs.org/ * Version: 2.6.0 * * Copyright 2017 Nick Downie * Released under the MIT license * https://github.com/chartjs/Chart.js/blob/master/LICENSE.md */ !function(t){if("object"==typeof exports&&"undefined"!=typeof module)module.exports=t();else if("function"==typeof define&&define.amd)define([],t);else{var e;e="undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof self?self:this,e.Chart=t()}}(function(){return function t(e,n,i){function a(r,l){if(!n[r]){if(!e[r]){var s="function"==typeof require&&require;if(!l&&s)return s(r,!0);if(o)return o(r,!0);var u=new Error("Cannot find module '"+r+"'");throw u.code="MODULE_NOT_FOUND",u}var d=n[r]={exports:{}};e[r][0].call(d.exports,function(t){var n=e[r][1][t];return a(n?n:t)},d,d.exports,t,e,n,i)}return n[r].exports}for(var o="function"==typeof require&&require,r=0;rThis component allows you to create teasers using images. Regardless of what kind of element, it will always be centered vertically and horizontally and cover its container without losing its proportions. You can also place additional content, like text or image, on top of the image.
To use this component you need install with the command:
base.
The dependencies will be installed together with this module
mobileui install cover
You can use all features the base MobileUI in this component.
You can add color with transparent layer adding class blend-soft-light, blend-darken,
blend-luminosity, blend-multiply, blend-screen and blend-overlay.
See this example with header component.
You can combinate with button circle and list component.
You can combinate this component with list, card, badge, icons and grid.
================================================ FILE: cover/style.css ================================================ /*Define that an element has abackground-image and must cover the space required.*/
.cover {
padding: 15px;
background-position: 50% 50%;
background-size: cover;
background-repeat: no-repeat;
width: 100%;
position: relative;
}
/*Fixed height size.*/
.cover.cover-200 {
height: 300px;
}
/*Fixed height size.*/
.cover.cover-200 {
height: 300px;
}
/*Fixed height size.*/
.cover.cover-400 {
height: 400px;
}
/*Fixed height size.*/
.cover.cover-500 {
height: 500px;
}
/*Remove space inner the cover.*/
.cover.no-padding {
padding: 0;
}
/*Limit the size of an image and add large border.*/
.cover .avatar {
height: 100px;
border-width: 4px;
margin-bottom: 5px;
}
.cover .item .avatar {
height: 50px;
}
/*Float an element in the footer on the left.*/
.cover .float-bottom-right,
.cover .float-bottom-center,
.cover .float-bottom-left {
margin-bottom: -30px;
z-index: 99;
position: absolute;
}
/*Float an element in the footer on the right.*/
.cover .big.float-bottom-left,
.cover .big.float-bottom-center,
.cover .big.float-bottom-right {
margin-bottom: -35px;
}
/*Float an element in the footer on the center.*/
.cover .small.float-bottom-right,
.cover .small.float-bottom-left,
.cover .small.float-bottom-center {
margin-bottom: -25px;
}
.cover .float-bottom-center {
left: 50%;
margin-left: -21px;
}
.cover .small.float-bottom-center {
left: 50%;
margin-left: -15px;
}
.cover .big.float-bottom-center {
left: 50%;
margin-left: -25px;
}
/*Set a gradient effect from black to transparent in the background of an element.*/
.cover .gradient {
background: -webkit-linear-gradient(top, rgba(0,0,0,0) 0%,rgba(0,0,0,0.65) 100%);
background: linear-gradient(to bottom, rgba(0,0,0,0) 0%,rgba(0,0,0,0.65) 100%);
width: 100%;
padding-bottom: 10px;
padding-top: 20px;
}
/*Used when a background-image is set to apply the multiply effect of CSS3 in the background. See more at: multiply blend mode*/
.cover.blend-multiply {
background-blend-mode: multiply;
}
/*Used when a background-image is set to apply the screen effect of CSS3 in the background. See more at: screen blend mode*/
.cover.blend-screen {
background-blend-mode: screen;
}
/*Used when a background-image is set to apply the overlay effect of CSS3 in the background. See more at: overlay blend mode*/
.cover.blend-overlay {
background-blend-mode: overlay;
}
/*Used when a background-image is set to apply the darken effect of CSS3 in the background. See more at: darken blend mode*/
.cover.blend-darken {
background-blend-mode: darken;
}
/*Used when a background-image is set to apply the lighten effect of CSS3 in the background. See more at: lighten blend mode*/
.cover.blend-lighten {
background-blend-mode: lighten;
}
/*Used when a background-image is set to apply the color-dodge effect of CSS3 in the background. See more at: color-dodge blend mode*/
.cover.blend-color-dodge {
background-blend-mode: color-dodge;
}
/*Used when a background-image is set to apply the color-burn effect of CSS3 in the background. See more at: color-burn blend mode*/
.cover.blend-color-burn {
background-blend-mode: color-burn;
}
/*Used when a background-image is set to apply the hard-light effect of CSS3 in the background. See more at: hard-light blend mode*/
.cover.blend-hard-light {
background-blend-mode: hard-light;
}
/*Used when a background-image is set to apply the soft-light effect of CSS3 in the background. See more at: soft-light blend mode*/
.cover.blend-soft-light {
background-blend-mode: soft-light;
}
/*Used when a background-image is set to apply the luminosity effect of CSS3 in the background. See more at: luminosity blend mode*/
.cover.blend-luminosity {
background-blend-mode: luminosity;
}
================================================
FILE: dist/alert.json
================================================
{
"name":"alert",
"author": "fabiorogeriosj",
"dependencies": [
"base"
]
}
================================================
FILE: dist/base.json
================================================
{
"name":"base",
"dependencies": [],
"files":[
"fonts/ionicons.woff",
"fonts/roboto.woff2",
"fonts/robotoblack.woff2",
"fonts/robotolight.woff2"
]
}
================================================
FILE: dist/button.json
================================================
{
"name":"button",
"author": "fabiorogeriosj",
"dependencies": [
"base"
]
}
================================================
FILE: dist/chart-bar.json
================================================
{
"name":"chart-bar",
"author": "fabiorogeriosj",
"dependencies": [
"base"
]
}
================================================
FILE: dist/chartist-plugin-tooltip.json
================================================
{
"name":"chartist-plugin-tooltip",
"author": "tmmdata",
"dependencies": [
"chartist"
]
}
================================================
FILE: dist/chartist.json
================================================
{
"name":"chartist",
"author": "gionkunz",
"dependencies": []
}
================================================
FILE: dist/chartjs.json
================================================
{
"name":"chartjs",
"author": "nnnick",
"dependencies": []
}
================================================
FILE: dist/cover.json
================================================
{
"name":"cover",
"author": "fabiorogeriosj",
"dependencies": [
"base",
"grid"
]
}
================================================
FILE: dist/grid.json
================================================
{
"name":"grid",
"author": "gustavoquinalha",
"dependencies": []
}
================================================
FILE: dist/header.json
================================================
{
"name":"header",
"author": "fabiorogeriosj",
"dependencies": [
"base",
"button"
]
}
================================================
FILE: dist/horizontal-scroll.json
================================================
{
"name":"horizontal-scroll",
"author": "Yash-Handa",
"dependencies": [
"base"
]
}
================================================
FILE: dist/imports.css
================================================
@import url("./alert.min.css");
@import url("./base.min.css");
@import url("./button.min.css");
@import url("./chart-bar.min.css");
@import url("./chartist.min.css");
@import url("./chartist-plugin-tooltip.min.css");
@import url("./chartjs.min.css");
@import url("./cover.min.css");
@import url("./grid.min.css");
@import url("./header.min.css");
@import url("./horizontal-scroll.min.css");
@import url("./include.min.css");
@import url("./input.min.css");
@import url("./jquery.min.css");
@import url("./list.min.css");
@import url("./loading.min.css");
@import url("./menu.min.css");
@import url("./mobileui-colors.min.css");
@import url("./mobileuijs.min.css");
@import url("./momentjs.min.css");
@import url("./page.min.css");
@import url("./popover.min.css");
@import url("./progress-circle.min.css");
@import url("./progress-semicircle.min.css");
@import url("./progressbarjs.min.css");
@import url("./pulltorefresh.min.css");
@import url("./swiper.min.css");
@import url("./tab.min.css");
@import url("./timeline.min.css");
@import url("./toast.min.css");
================================================
FILE: dist/include.json
================================================
{
"name":"include",
"author": "fabiorogeriosj",
"dependencies": []
}
================================================
FILE: dist/input.json
================================================
{
"name":"input",
"author": "fabiorogeriosj",
"dependencies": [
"base",
"list"
]
}
================================================
FILE: dist/jquery.json
================================================
{
"name":"jquery",
"author": "madrobby",
"dependencies": []
}
================================================
FILE: dist/list.json
================================================
{
"name":"list",
"author": "fabiorogeriosj",
"dependencies": [
"base"
]
}
================================================
FILE: dist/loading.json
================================================
{
"name":"loading",
"author": "fabiorogeriosj",
"dependencies": [
"alert"
]
}
================================================
FILE: dist/menu.json
================================================
{
"name":"menu",
"author": "fabiorogeriosj",
"dependencies": [
"base",
"list"
]
}
================================================
FILE: dist/mobileui-colors.json
================================================
{
"name":"mobileui-colors",
"author": "fabiorogeriosj",
"dependencies": []
}
================================================
FILE: dist/mobileuijs.json
================================================
{
"name":"mobileuijs",
"author": "fabiorogeriosj",
"dependencies": []
}
================================================
FILE: dist/momentjs.json
================================================
{
"name":"momentjs",
"author": "timrwood",
"dependencies": []
}
================================================
FILE: dist/page.json
================================================
{
"name":"page",
"author": "fabiorogeriosj",
"dependencies": []
}
================================================
FILE: dist/popover.json
================================================
{
"name":"popover",
"author": "fabiorogeriosj",
"dependencies": [
"base",
"list"
]
}
================================================
FILE: dist/progress-circle.json
================================================
{
"name":"progress-circle",
"author": "fabiorogeriosj",
"dependencies": [
"mobileui-colors",
"progressbarjs"
]
}
================================================
FILE: dist/progress-circular.json
================================================
{
"name":"progress-circular",
"author": "fabiorogeriosj",
"dependencies": [
"base"
]
}
================================================
FILE: dist/progress-semicircle.json
================================================
{
"name":"progress-semicircle",
"author": "fabiorogeriosj",
"dependencies": [
"mobileui-colors",
"progressbarjs"
]
}
================================================
FILE: dist/progressbarjs.json
================================================
{
"name":"progressbarjs",
"author": "kimmobrunfeldt",
"dependencies": []
}
================================================
FILE: dist/pulltorefresh.json
================================================
{
"name":"pulltorefresh",
"author": "BoxFactura",
"dependencies": []
}
================================================
FILE: dist/swiper.json
================================================
{
"name":"swiper",
"author": "fabiorogeriosj",
"dependencies": []
}
================================================
FILE: dist/tab.json
================================================
{
"name":"tab",
"author": "fabiorogeriosj",
"dependencies": [
"base",
"button"
]
}
================================================
FILE: dist/templates.json
================================================
================================================
FILE: dist/timeline.json
================================================
{
"name":"timeline",
"author": "gustavoquinalha",
"dependencies": ["base", "grid"]
}
================================================
FILE: dist/toast.json
================================================
{
"name":"toast",
"author": "lucasssv",
"dependencies": [
"base"
]
}
================================================
FILE: docs.json
================================================
{
"site_dir": "../mobileui.github.io",
"docs": [
{
"category": "Getting started",
"itens": [
{
"key":"getting-started",
"label":"Install",
"path":"./base/install.html"
},
{
"key":"templates",
"label":"Templates",
"path":"./base/templates.html"
},
{
"key":"demos",
"label":"Demos",
"link": "/demos"
}
]
},
{
"category": "Components base",
"itens": [
{
"key":"base",
"label":"Base",
"path":"./base/base.html"
},
{
"key":"colors",
"label":"Colors",
"path":"./base/colors.html"
},
{
"key":"icons",
"label":"Icons",
"path":"./base/icons.html"
},
{
"key":"fonts",
"label":"Fonts",
"path":"./base/fonts.html"
},
{
"key":"header",
"label":"Header",
"path":"./header/index.html"
},
{
"key":"button",
"label":"Button",
"path":"./button/index.html"
},
{
"key":"input",
"label":"Input",
"path":"./input/index.html"
},
{
"key":"list",
"label":"List",
"path":"./list/index.html"
},
{
"key":"tab",
"label":"Tab",
"path":"./tab/index.html"
},
{
"key":"card",
"label":"Card",
"path":"./base/card.html"
},
{
"key":"badge",
"label":"Badge",
"path":"./base/badge.html"
},
{
"key":"cover",
"label":"Cover",
"path":"./cover/index.html"
},
{
"key":"menu",
"label":"Menu",
"path":"./menu/index.html"
},
{
"key":"grid",
"label":"Grid",
"path":"./grid/index.html"
},
{
"key":"swiper",
"label":"Swiper",
"path":"./swiper/index.html"
},
{
"key":"page",
"label":"Page",
"path":"./page/index.html"
},
{
"key":"include",
"label":"Include",
"path":"./include/index.html"
},
{
"key":"popover",
"label":"Popover",
"path":"./popover/index.html"
},
{
"key":"alert",
"label":"Alert",
"path":"./alert/index.html"
},
{
"key":"toast",
"label":"Toast",
"path":"./toast/index.html"
},
{
"key":"loading",
"label":"Loading",
"path":"./loading/index.html"
},
{
"key":"timeline",
"label":"Timeline",
"path":"./timeline/index.html"
}
]
},
{
"category": "Components charts",
"itens": [
{
"key":"chartist",
"label":"Chartist",
"path":"./chartist/index.html"
},
{
"key":"progress-circle",
"label":"Progress Circle",
"path":"./progress-circle/index.html"
},
{
"key":"progress-semicircle",
"label":"Progress Semicircle",
"path":"./progress-semicircle/index.html"
},
{
"key":"chart-bar",
"label":"Chart Bar",
"path":"./chart-bar/index.html"
}
]
},
{
"category": "Libs",
"itens": [
{
"key":"mobileuijs",
"label":"MobileUI.js",
"path":"./mobileuijs/index.html"
},
{
"key":"jquery",
"label":"jQuery",
"path":"./jquery/index.html"
},
{
"key":"progressbarjs",
"label":"ProgressBar.js",
"path":"./progressbarjs/index.html"
},
{
"key":"chartjs",
"label":"Chart.js",
"path":"./chartjs/index.html"
},
{
"key":"momentjs",
"label":"Moment.js",
"path":"./momentjs/index.html"
},
{
"key":"pulltorefresh",
"label":"PullToRefresh",
"path":"./pulltorefresh/index.html"
}
]
}
]
}
================================================
FILE: generate_dist.js
================================================
const fs = require('fs')
const path = require('path')
const compressor = require('node-minify')
const wrench = require('wrench')
function getDirectories (srcpath) {
return fs.readdirSync(srcpath)
.filter(function(file){
return fs.statSync(path.join(srcpath, file)).isDirectory() &&
file.indexOf('.') < 0 &&
file !== 'node_modules' &&
file !== 'dist' &&
file !== 'assets'
})
}
var importsAll = ''
var dir = getDirectories('./')
for(var i in dir) {
var item = dir[i]
importsAll += `@import url("./${item}.min.css");\n`
fs.createReadStream(`./${item}/component.json`).pipe(fs.createWriteStream(`./dist/${item}.json`));
if(item === 'base') {
compressor.minify({
compressor: 'clean-css',
input: ['./base/reset.css','./base/mobileui.css','./base/colors.css','./base/font.css','./base/icons.css'],
output: './dist/base.min.css',
options: {
advanced: false,
aggressiveMerging: false
},
callback: function (err, min) {
if(err) console.log('ERROR: ', err)
wrench.copyDirSyncRecursive('./base/fonts', './dist/fonts', {
forceDelete: true
})
}
})
compressor.minify({
compressor: 'gcc',
input: './base/base.js',
output: './dist/base.min.js',
callback: function (err, min) {
if(err) console.log('ERROR: ', err)
}
});
} else {
if(fs.existsSync(`./${item}/style.css`)){
compressor.minify({
compressor: 'clean-css',
input: `./${item}/style.css`,
output: `./dist/${item}.min.css`,
options: {
advanced: false,
aggressiveMerging: false
},
callback: function (err, min) {
if(err) console.log('ERROR: ', err)
}
})
}
if(fs.existsSync(`./${item}/script.js`)){
compressor.minify({
compressor: 'uglifyjs',
input: `./${item}/script.js`,
output: `./dist/${item}.min.js`,
callback: function (err, min) {
if(err) console.log('ERROR: ', err)
}
});
}
}
}
var fileNameImport = './dist/imports.css'
if (fs.existsSync(fileNameImport)) {
fs.unlinkSync(fileNameImport)
}
var fd = fs.openSync(fileNameImport, 'w')
fs.writeSync(fd, importsAll)
================================================
FILE: generate_doc.js
================================================
const fs = require('fs')
const path = require('path')
const wrench = require('wrench')
const docs = require('./docs.json')
var template = fs.readFileSync(path.join(docs.site_dir, 'template.html')).toString()
var menu = ''
var content = ''
for (var i in docs.docs) {
var item = docs.docs[i]
menu += `The features of this component are:
' htmlCssDoc += '| Class | Description |
|---|---|
${doc.className} | ${doc.description} |
MobileUI uses CSS Flexible Box Layout Module standard.
Simply add columns you want in a row, and they'll evenly take up the available space. If you want three columns, add three columns, if you want five columns, add five columns. There's no restriction to a 12 column grid, or having to explicitly state how large each column should be.
The row class name is used to designate, surprise, a row, and col is used for a column. In the demo to the right we chose to have four, then two, columns, but we could have just as easily used 3, 6, 7, 23, etc., it doesn't
matter. Point is, add the number of columns your layout requires and don't worry about figuring out the percentages because it figures it out automatically.
To use this component you need install with the command:
mobileui install grid
See this good example using row-between.
See this good example using row-around.
See how is easy align a column in the center, using row-center.
You can create a row with column direction, using column.
See this good example using row and vertical-align-top.
See this good example using row and vertical-align-center.
See this good example using row and vertical-align-bottom.
See this good example using row and horizontal-align-left.
See this good example using row and horizontal-align-center.
See this good example using row and horizontal-align-right.
See this good example using row, horizontal-align-right and vertical-align-center.
You can customize all classes of horizontal-align-X and vertical-align-Y.
When you use the vertical-align-* classes, you need to define height off element, for example: style="height: 100px;".
Or you can use helper class .full-height
See this good example using header, cover and list components.
================================================ FILE: grid/style.css ================================================ /*Create a line.*/ .row { display: -webkit-box; display: -ms-flexbox; display: flex; } /*Create a line that the columns are distributed in an equal space.*/ .row-between { display: -webkit-box; display: -ms-flexbox; display: flex; -webkit-box-pack: justify; -ms-flex-pack: justify; justify-content: space-between; } /*Create a line that the columns are distributed in an equal space around.*/ .row-around { display: -webkit-box; display: -ms-flexbox; display: flex; -ms-flex-pack: distribute; justify-content: space-around; } /*Create a stretch row, you need define height value.*/ .row-stretch { display: -webkit-box; display: -ms-flexbox; display: flex; -webkit-box-align: stretch; -ms-flex-align: stretch; align-items: stretch; } /*Create a column.*/ .column { display: -webkit-box; display: -ms-flexbox; display: flex; -webkit-box-orient: vertical; -webkit-box-direction: normal; -ms-flex-direction: column; flex-direction: column; } /*Default all items will be on one line, whit this class add to row all items will wrap onto multiple lines, from top to bottom.*/ .wrap { -ms-flex-wrap: wrap; flex-wrap: wrap; } /*Align col to the top(Axis Y).*/ .vertical-align-top { -webkit-box-align: start; -ms-flex-align: start; align-items: flex-start; } /*Align col to the center(Axis Y).*/ .vertical-align-center { -webkit-box-align: center; -ms-flex-align: center; align-items: center; } /*Align col to the bottom(Axis Y).*/ .vertical-align-bottom { -webkit-box-align: end; -ms-flex-align: end; align-items: flex-end; } /*Align col to the left(Axis X).*/ .horizontal-align-left { -webkit-box-pack: start; -ms-flex-pack: start; justify-content: flex-start; } /*Align col to the center(Axis X).*/ .horizontal-align-center { -webkit-box-pack: center; -ms-flex-pack: center; justify-content: center; } /*Align col to the right(Axis X).*/ .horizontal-align-right { -webkit-box-pack: end; -ms-flex-pack: end; justify-content: flex-end; } /*Center a column on the row.*/ .row-center { display: -webkit-box; display: -ms-flexbox; display: flex; -webkit-box-pack: center; -ms-flex-pack: center; justify-content: center; -webkit-box-align: center; -ms-flex-align: center; align-items: center; } /*Create a column with remaining space of the row.*/ .col { -webkit-box-flex: 1; -ms-flex-positive: 1; flex-grow: 1; position: relative; } /*Create a column with 10% of the row.*/ .col-10 { position: relative; -ms-flex-preferred-size: 10%; flex-basis: 10%; } /*Create a column with 20% of the row.*/ .col-20 { position: relative; -ms-flex-preferred-size: 20%; flex-basis: 20%; } /*Create a column with 25% of the row.*/ .col-25 { position: relative; -ms-flex-preferred-size: 25%; flex-basis: 25%; } /*Create a column with 33.3333% of the row.*/ .col-33, .col-34 { position: relative; -ms-flex-preferred-size: 33.3333%; flex-basis: 33.3333%; } /*Create a column with 50% of the row.*/ .col-50 { position: relative; -ms-flex-preferred-size: 50%; flex-basis: 50%; } /*Create a column with 66.6666% of the row.*/ .col-66, .col-67 { position: relative; -ms-flex-preferred-size:66.6666%; flex-basis:66.6666%; } /*Create a column with 75% of the row.*/ .col-75 { position: relative; -ms-flex-preferred-size: 75%; flex-basis: 75%; } /*Create a column with 80% of the row.*/ .col-80 { position: relative; -ms-flex-preferred-size: 80%; flex-basis: 80%; } /*Create a column with 90% of the row.*/ .col-90 { position: relative; -ms-flex-preferred-size: 90%; flex-basis: 90%; } .full-width { width: 100%; margin: 0 auto } .full-height { height: 100%; margin: 0 auto } ================================================ FILE: header/component.json ================================================ { "name":"header", "author": "fabiorogeriosj", "dependencies": [ "base", "button" ] } ================================================ FILE: header/index.html ================================================Headers are fixed regions at the top of a screen that can contain a title label, and left/right buttons for navigation or to carry out various actions.
To use this component you need install with the command:
base and button.
The dependencies will be installed together with this module
mobileui install header
You can use all features the base MobileUI in this component.
You can put the title in center or right add class align-center or align-right.
For put buttons in left and right you need create a div with class left or right.
You can put buttons with text and another options of buttons settings, see section Button.
If you need the header transparent just add text color class.
If you don't use transparent header you need add class has-header in your content or div for top position add margin. For this example the component list was used too.
For this example you need to install the following components:
mobileui install header list
A secondary header bar can be placed below the original header bar. There are quite a few more ways to customize Headers.
You can add group of buttons in header.
You can create a header in bottom of screen, just add class footer.
header create a fixed sub-bar at the top of the page, if using with footer creates a fixed sub-bar at the bottom.*/
.header.sub {
top:52px;
}
.footer.sub {
top: initial;
bottom: 52px;
}
/*Used in the parent element of the header, or body element, to define that the page uses header.*/
.has-header {
padding-top: 52px !important;
}
/*Used in the parent element of the header and sub, or body element, to define that the page uses sub.*/
.has-header.has-sub-header {
padding-top: 104px !important;
}
/*Used in the parent element of the header and footer, or body element, to define that the page uses header in bottom.*/
.has-footer {
padding-bottom: 52px !important
}
/*Used in the parent element of the header with sub and bottom, or body element, to define that the page uses sub in bottom.*/
.has-footer.has-sub-footer {
padding-bottom: 104px !important
}
.header .left, .header .right, .header .title, .header h1, .footer .left, .footer .right, .footer .title, .footer h1 {
margin-top: 15px;
margin-bottom: 5px;
}
/*Set a fixed size for an image.*/
.header .avatar {
height: 40px;
margin-top: -8px;
margin-left: 4px;
}
/*Add big border in element.*/
.header .border-big {
border-width: 2px;
border-style: solid;
}
.header h2, .footer h2 {
padding-top: 8px;
padding-left: 10px;
}
.header p, .footer p {
padding-left: 10px;
margin: 0;
margin-top: -4px;
}
.header .left, .footer .left {
padding-left: 5px
}
.header .right, .footer .right {
padding-right: 5px
}
/*Create a title in the header, you can just use h1 element.*/
.header h1, .header .title, .footer h1, .footer .title {
margin-bottom: 15px;
padding-left: 10px;
padding-right: 15px;
display: inline-block;
}
.header button, .footer button {
margin-top: -10px;
}
.header button.icon, .footer button.icon {
font-size: 30px;
margin-top: -10px;
z-index: 99;
background: none;
border: none;
padding: 0 6px;
}
.header button.icon:not([class*=red]):not([class*=pink]):not([class*=white]):not([class*=purple]):not([class*=indigo]):not([class*=blue]):not([class*=cyan]):not([class*=teal]):not([class*=green]):not([class*=lime]):not([class*=yellow]):not([class*=amber]):not([class*=orange]):not([class*=brown]):not([class*=grey]):not([class*=black]):not([class*=white]),
.footer button.icon:not([class*=red]):not([class*=pink]):not([class*=white]):not([class*=purple]):not([class*=indigo]):not([class*=blue]):not([class*=cyan]):not([class*=teal]):not([class*=green]):not([class*=lime]):not([class*=yellow]):not([class*=amber]):not([class*=orange]):not([class*=brown]):not([class*=grey]):not([class*=black]):not([class*=white]) {
color: #fff;
}
.header button.icon.left, .footer button.icon.left,
.header button.icon.right, .footer button.icon.right {
margin-top: 5px;
margin-bottom: 5px;
}
.header button.icon.left, .footer button.icon.left {
margin-left: 5px;
}
.header button.icon.right, .footer button.icon.right {
margin-right: 5px;
}
.header .title.align-center, .footer .title.align-center,
.header h1.align-center, .footer h1.align-center,
.header p.align-center, .footer p.align-center {
width: 100%;
position: inherit;
padding-right: 15px;
left: 0;
z-index: 9;
}
/*Create a floating badge next to an icon.*/
.header .icon-badge, .footer .icon-badge {
position: absolute;
margin-left: -6px;
margin-top: -8px;
border-radius: 8px;
z-index: 999;
}
.header .buttons-group, .footer .buttons-group {
margin-top: 15px;
margin-left: 5px;
margin-right: 5px;
}
.header .buttons-group.small, .footer .buttons-group.small {
margin-top: 20px;
margin-left: 10px;
margin-right: 10px;
}
.header input::-webkit-input-placeholder {
color: rgba(0, 0, 0, 0.8);
}
/*Defines a light color for the placeholder.*/
.header input.placeholder-white::-webkit-input-placeholder {
color: rgba(255, 255, 255, 0.8);
}
.header input {
padding: 15px;
position: absolute;
}
.header .left+input {
padding-right: 50px;
}
================================================
FILE: horizontal-scroll/component.json
================================================
{
"name":"horizontal-scroll",
"author": "Yash-Handa",
"dependencies": [
"base"
]
}
================================================
FILE: horizontal-scroll/index.html
================================================
To use this component you need install with the command:
base.
The dependencies will be installed together with this module
mobileui install horizontal-scroll
You can use all features the base MobileUI in this component.
You can add class full, half, three-fourth, one-fourth to an item class to manipulate its width with respect to the horizontal-scroll component.
You can put images and icons in Horizontal Scroll.
You can combinate with others components and class.
Another example of a combination of components header, button and cover.
You can add class mark for change color border.
Same Example as above but with no scroll bar by using classno-scroll-bar on horizontal-scroll component.
item to function properly.*/
.horizontal-scroll {
width: 100%;
position: relative;
border: 1px solid #ddd;
display: flex;
display: -moz-flex;
display: -ms-flexbox;
flex-wrap: nowrap;
overflow-x: auto;
-webkit-overflow-scrolling: touch;
}
/* Hides the Scroll Bar. This is for webkit browsers only, however. */
.horizontal-scroll.no-scroll-bar::-webkit-scrollbar {
display: none;
}
/*Define an element as item. This feature depends on the horizontal-scroll to function properly.*/
.horizontal-scroll .item {
padding: 15px;
display: inline-block;
flex: 0 0 auto;
width: 100%;
border-right: 1px solid #ddd;
position: relative;
font-size: 18px;
}
.horizontal-scroll .item.hidden {
display: none;
}
.horizontal-scroll .item.mark {
border-right: 0;
border-bottom: 0;
border-top: 0;
}
/*Block line space with left avatar.*/
.item .block {
display: -webkit-box;
display: flex;
}
.horizontal-scroll .item.mark.margin-right {
border-right: 0;
margin-right: 10px;
}
/*Define a small space between the left and right elements.*/
.horizontal-scroll .item.space-small {
padding-left: 5px;
padding-right: 5px;
}
.horizontal-scroll.space-small .item {
padding-left: 5px;
padding-right: 5px;
}
/*Remove space in left item.*/
.horizontal-scroll .item.no-space-left {
padding-left: 0 !important;
}
/*Remove space in right item.*/
.horizontal-scroll .item.no-space-right {
padding-right: 0 !important;
}
.horizontal-scroll.no-space-left .item {
padding-left: 0 !important;
}
.horizontal-scroll.no-space-right .item {
padding-right: 0 !important;
}
.horizontal-scroll.no-space-top .item {
padding-top: 0 !important;
}
.horizontal-scroll.no-space-bottom .item {
padding-bottom: 0 !important;
}
.horizontal-scroll.no-space .item {
padding-left: 0 !important;
padding-right: 0 !important;
padding-top: 0 !important;
padding-bottom: 0 !important;
}
.horizontal-scroll .item.row {
display: -moz-flex;
display: -ms-flexbox;
display: flex;
}
/* Display the element in full width of the container ( default ) */
.horizontal-scroll .item.full {
width: 100%;
}
/* Display the element in 75% width of the container */
.horizontal-scroll .item.three-fourth {
width: 75%;
}
/* Display the element in 50% width of the container */
.horizontal-scroll .item.half {
width: 50%;
}
/* Display the element in 25% width of the container */
.horizontal-scroll .item.one-fourth {
width: 25%;
}
.horizontal-scroll .item h1,
.horizontal-scroll .item h2 {
font-size: 16px;
margin: 0;
padding: 0;
}
.horizontal-scroll .item h1 {
margin-top: 7px;
}
.horizontal-scroll .item p {
font-size: 14px;
margin: 0;
padding: 0;
line-height: 20px;
}
.horizontal-scroll .left {
margin-right: 10px;
min-width: 25px;
}
.horizontal-scroll .right {
margin-right: 20px;
position: absolute;
top: 0;
right: 0;
height: 100%;
display: -ms-flexbox;
display: -webkit-flex;
display: flex;
-ms-flex-align: center;
-webkit-align-items: center;
-webkit-box-align: center;
align-items: center;
}
.horizontal-scroll .right i {
margin-left: 5px;
}
.horizontal-scroll .align-top {
-ms-flex-align: center;
-webkit-align-items: center;
align-items: baseline;
margin-top: 10px;
}
/*Set a fixed size for an image.*/
.horizontal-scroll .avatar {
height: 50px;
}
/*Set a floating badge above the image.*/
.avatar-badge {
position: absolute;
margin-left: -4px;
margin-top: -3px;
border-radius: 8px;
}
.horizontal-scroll .item small,
.horizontal-scroll .item small .icon {
font-size: 14px;
}
.horizontal-scroll .item .icon {
font-size: 18px;
}
.horizontal-scroll .item .icon.text-huge {
font-size: 32px;
}
.horizontal-scroll .left .icon,
.horizontal-scroll .right .icon {
vertical-align: -webkit-baseline-middle;
}
/*Add big border in item or element.*/
.horizontal-scroll .border-big {
border-width: 3px;
border-style: solid;
}
/*Define that a .horizontal-scroll or an item has no borders.*/
.horizontal-scroll.no-border {
border: 0;
}
/*Define that a .horizontal-scroll or an item has a right border.*/
.horizontal-scroll.no-border .item.border-right,
.horizontal-scroll .item.no-border.border-right {
border-right-width: 1px;
border-right-style: solid;
}
.horizontal-scroll.no-border .item,
.horizontal-scroll .item.no-border {
border: none;
}
.horizontal-scroll .item:last-child {
border-right:0;
}
.horizontal-scroll .item .right .icon,
.horizontal-scroll .item .right.icon {
font-size: 24px;
padding: 0;
margin: 0;
}
================================================
FILE: include/component.json
================================================
{
"name":"include",
"author": "fabiorogeriosj",
"dependencies": []
}
================================================
FILE: include/index.html
================================================
This component include an external file HTML in your page.
To use this component you need install with the command:
mobileui install includemyfile1.html myfile2.html
You can invoke callback function after include page: include('myFrame','myfile', myFunctionCallback)
Included when load file.
Included by click button.
Inputs are essential in an application to collect user data, so we need to worry about the layout and MobileUI does it for you.
To use this component you need install with the command:
base and list.
The dependencies will be installed together with this module
mobileui install input
You can use all features the base and list components in this component.
If you put label on the items, you can have a line view of the component.
Use class label-fixed in item of the list for fixed the label.
Input floating is a good option for forms login, just add class label-float in item.
You can put align-right for align your text in right item.
You can use icons in your input. Simply add a class icon and your ion-*.
By default the icon will take the left. However, you can put them on the right by adding the class icon-right.
You can be creative and also use the other components such as cover and grid components. And you can install new fonts using feature fonts.
A switch is an input component that holds a boolean value. Like the checkbox, switches are often used to allow the user to switch a setting on or off. Attributes like value, disabled, and checked can be applied to the toggle to control its behavior.
A checkbox is an input component that holds a boolean value. Checkboxes are no different than HTML checkbox inputs. However, like other Ionic components, checkboxes are styled differently on each platform.
Like the checkbox, a radio is an input component that holds a boolean value. Under the hood, radios are no different than HTML radio inputs. Radios are styled differently on each platform
You can use a range input for control that lets users select from a range of values by moving a slider knob along the slider bar or track.
================================================ FILE: input/script.js ================================================ (function bindInputEvent(){ setTimeout(function(){ var inputs = document.getElementsByTagName('input'); for(i in inputs){ var parent = inputs[i].parentNode; if(parent && (parent.className.indexOf('left') >=0 || parent.className.indexOf('right') >=0) && parent.parentNode.className.indexOf('item') >= 0){ parent = parent.parentNode; } if(parent && parent.className.indexOf('item') >=0 && parent.className.indexOf('bind-input-event-click') < 0 ){ parent.className += ' bind-input-event-click'; parent.addEventListener('click', function(){ if(this.getElementsByTagName('input').length) { this.getElementsByTagName('input')[0].focus(); if(this.getElementsByTagName('input')[0].type === 'radio' && !this.getElementsByTagName('input')[0].disabled) { this.getElementsByTagName('input')[0].checked=true; } } }, false); } } var labelsFloat = document.getElementsByClassName('label-float'); for(i in labelsFloat) { if(labelsFloat[i].className && labelsFloat[i].className.indexOf('bind-input-event-focus') < 0 && labelsFloat[i].querySelectorAll('input,textarea').length) { labelsFloat[i].className += ' bind-input-event-focus'; labelsFloat[i].querySelectorAll('input,textarea')[0].addEventListener('focus', function(){ if(this.parentNode.getElementsByTagName('label').length && this.parentNode.getElementsByTagName('label')[0].className.indexOf('focus') < 0) { this.parentNode.getElementsByTagName('label')[0].className += ' focus' } }, false); labelsFloat[i].querySelectorAll('input,textarea')[0].addEventListener('blur', function(){ if(this.parentNode.getElementsByTagName('label').length && this.parentNode.getElementsByTagName('label')[0].className && !this.value.length) { this.parentNode.getElementsByTagName('label')[0].className = this.parentNode.getElementsByTagName('label')[0].className.replace('focus',''); } }, false); if(labelsFloat[i].querySelectorAll('input,textarea')[0].value && labelsFloat[i].querySelectorAll('input,textarea')[0].value.length) { labelsFloat[i].querySelectorAll('input,textarea')[0].parentNode.getElementsByTagName('label')[0].className += ' focus' } } } bindInputEvent(); },500); })(); ================================================ FILE: input/style.css ================================================ input, textarea, select { border: none; background: none; font-size: 14px; width: 100%; -webkit-flex: 1; -ms-flex: 1; flex: 1; } input[disabled], textarea[disabled], select[disabled] { opacity: 0.8; } label { font-size: 14px; } /*Define a fixed label beside the input element.*/ .label-fixed, .item.label-fixed { display: -moz-flex !important; display: -ms-flexbox !important; display: flex !important; width: 100%; } .label-fixed label { -webkit-flex: 0 0 100px; -ms-flex: 0 0 100px; flex: 0 0 100px; width: 100px; min-width: 100px; max-width: 200px; } /*Define a floating label above the input element.*/ .label-float { } .label-float label { margin-bottom: 0; -webkit-transform: translate3d(0, 27px, 0); transform: translate3d(0, 27px, 0); -webkit-transform-origin: left top; transform-origin: left top; transition: -webkit-transform 150ms ease-in-out; transition: transform 150ms ease-in-out; transition: transform 150ms ease-in-out, -webkit-transform 150ms ease-in-out; align-self: stretch; -webkit-flex: initial; -ms-flex: initial; flex: initial; display: block; } .label-float label.focus { -webkit-transform: translate3d(0, 0, 0) scale(0.8); transform: translate3d(0, 0, 0) scale(0.8); } .item.icon { display: flex; } .item.icon.radius { border-radius: 6px; } .item.icon:not([class*="text-"]) { color: #9f9f9f; } .item input::-webkit-input-placeholder { color: rgba(0, 0, 0, 0.6); } /*Defines a light color for the placeholder.*/ .item input.placeholder-white::-webkit-input-placeholder { color: rgba(255, 255, 255, 0.6); } .item.icon:before { position: absolute; } /*Align an icon from a field to the right.*/ .item.icon.icon-right:before { right: 20px; } .item.icon input, .item.icon select { padding-left: 30px; } .item.icon.icon-right input, .item.icon.icon-right select { padding-left: 0; padding-right: 30px; } input[type="checkbox"] { width: 17px; height: 17px; z-index: 1; border: 0; vertical-align: top; outline: none; -webkit-appearance: none; -moz-appearance: none; appearance: none; border-radius: 2px; } .platform-ios input[type="checkbox"]{ height: 23px; width: 23px; border-radius: 50%; } input[type="checkbox"]:not(:checked) { background-color: #fff !important; box-shadow: inset 0 0 0 2px rgba(0,0,0,0.5); } .platform-ios input[type="checkbox"]:not(:checked){ box-shadow: inset 0 0 0 1px rgba(0,0,0,0.4); } input[type="checkbox"]:disabled { opacity: 0.4; } input[type="checkbox"]::before { content: ''; position: absolute; margin-top: 1px; margin-left: 5px; width: 5px; height: 10px; border-width: 2px; border-top-width: 0; border-left-width: 0; border-style: solid; border-color: #fff; -webkit-transform: rotate(45deg); transform: rotate(45deg); } .platform-ios input[type="checkbox"]::before { margin-top: 5px; margin-left: 9px; width: 4px; height: 9px; border-width: 1px; border-top-width: 0; border-left-width: 0; } input[type="checkbox"].switch { width: 36px; height: 14px; box-shadow: inset 0 0 0 30px rgba(255,255,255,0.4); border-radius: 28px; -webkit-transition-property: all; transition-property: all; -webkit-transition-duration: 0.35s; transition-duration: 0.35s; -webkit-transition-timing-function: ease-out; transition-timing-function: ease-out; } .platform-ios input[type="checkbox"].switch { height: 32px; width: 51px; box-shadow: inset 0 0 0 2px rgba(0,0,0,0.05); } input[type="checkbox"].switch:not(:checked) { background-color: #fff !important; box-shadow: inset 0 0 0 30px rgba(0,0,0,0.35); } .platform-ios input[type="checkbox"].switch:not(:checked) { box-shadow: inset 0 0 0 2px rgba(0,0,0,0.1); } input[type="checkbox"].switch::before { content: ''; border-radius: 28px; height: 20px; width: 20px; margin-left: -1px; margin-top: -3px; -webkit-transition-duration: .35s; transition-duration: .35s; box-shadow: 0 4px 5px 0 rgba(0,0,0,.14),0 1px 10px 0 rgba(0,0,0,.12),0 2px 4px -1px rgba(0,0,0,.4); border: 0; } .platform-ios input[type="checkbox"].switch::before { height: 28px; width: 28px; box-shadow: 0 0 0 1px #e4e4e4, 0 3px 2px rgba(0, 0, 0, .25); margin-top: 2px; margin-left: 2px; background-color: #fff !important; } input[type="checkbox"].switch:checked::before { margin-left: 16px; } input[type="checkbox"].switch:not(:checked)::before { background-color: #fff !important; } .platform-ios input[type="checkbox"].switch:checked::before { margin-left: 21px; box-shadow: 0 3px 2px rgba(0, 0, 0, .25); background-color: #fff; } input[type="radio"] { width: 20px; height: 20px; border-radius: 50%; position: relative; overflow: hidden; z-index: 1; vertical-align: top; outline: none; -webkit-appearance: none; -moz-appearance: none; appearance: none; background: none; } .platform-ios input[type="radio"] { background: none !important; } input[type="radio"]::after { content: ''; width: 100%; height: 100%; position: absolute; border-radius: 50%; } .platform-ios input[type="radio"]:not(:checked)::after { box-shadow:none; } input[type="radio"]:not(:checked)::after { box-shadow: inset 0 0 0 2px rgba(0,0,0,0.4); background-color: #fff !important; } input[type="radio"]:checked::before { content: ''; width: 10px; height: 10px; position: absolute; border: 3px solid #fff; z-index: 1; border-radius: 50%; margin-top: 2px; margin-left: 2px; } input[type="radio"]:disabled { opacity: 0.4; } .platform-ios input[type="radio"]::after { background: none !important; } .platform-ios input[type="radio"]:checked::before { position: absolute; margin-top: 4px; margin-left: 7px; width: 5px; height: 12px; border-width: 2px; border-top-width: 0; border-left-width: 0; border-style: solid; -webkit-transform: rotate(45deg); transform: rotate(45deg); border-radius: 0; } /*Defines a item of list is range input.*/ .item.range { position: relative; -ms-flex-item-align: center; -webkit-align-self: center; align-self: center; } .item.range input{ position: absolute;; height: 28px; width: calc(100% - 110px); margin: 4px 0 5px 0; -webkit-appearance: none; -moz-appearance: none; -ms-appearance: none; appearance: none; background: -webkit-gradient(linear,50% 0,50% 100%,color-stop(0,#ccc),color-stop(100%,#ccc)); background: linear-gradient(to right,#ccc 0,#ccc 100%); background-position: center; background-size: 100% 2px; background-repeat: no-repeat; outline: 0; border: none; box-sizing: content-box; -ms-background-position-y: 500px; } input[type="range"]::-webkit-slider-thumb { -webkit-appearance: none; background-color: #666; width: 13px; height: 13px; border-radius: 50%; } input[type="range"]:active::-webkit-slider-thumb { width: 20px; height: 20px; } .platform-ios input[type="range"]::-webkit-slider-thumb { background-color: #fff; box-shadow: 1px 1px 5px rgba(0, 0, 0, 0.3); width: 25px; height: 25px; border: 1px solid rgba(0, 0, 0, 0.05); border-radius: 50%; } input[type="radio"].red-50::after, input[type="checkbox"].red-50.switch::before { background-color: #ffebee; } input[type="radio"].red-100::after, input[type="checkbox"].red-100.switch::before { background-color: #ffcdd2; } input[type="radio"].red-200::after, input[type="checkbox"].red-200.switch::before { background-color: #ef9a9a; } input[type="radio"].red-300::after, input[type="checkbox"].red-300.switch::before { background-color: #e57373; } input[type="radio"].red-400::after, input[type="checkbox"].red-400.switch::before { background-color: #ef5350; } input[type="radio"].red-500::after, input[type="checkbox"].red-500.switch::before { background-color: #f44336; } input[type="radio"].red-600::after, input[type="checkbox"].red-600.switch::before { background-color: #e53935; } input[type="radio"].red-700::after, input[type="checkbox"].red-700.switch::before { background-color: #d32f2f; } input[type="radio"].red-800::after, input[type="checkbox"].red-800.switch::before { background-color: #c62828; } input[type="radio"].red-900::after, input[type="checkbox"].red-900.switch::before { background-color: #b71c1c; } input[type="radio"].pink::after, input[type="checkbox"].pink.switch::before { background-color: #E91E63; } input[type="radio"].pink-50::after, input[type="checkbox"].pink-50.switch::before { background-color: #fce4ec; } input[type="radio"].pink-100::after, input[type="checkbox"].pink-100.switch::before { background-color: #f8bbd0; } input[type="radio"].pink-200::after, input[type="checkbox"].pink-200.switch::before { background-color: #f48fb1; } input[type="radio"].Pink-300::after, input[type="checkbox"].Pink-300.switch::before { background-color: #f06292; } input[type="radio"].pink-400::after, input[type="checkbox"].pink-400.switch::before { background-color: #ec407a; } input[type="radio"].pink-500::after, input[type="checkbox"].pink-500.switch::before { background-color: #e91e63; } input[type="radio"].pink-600::after, input[type="checkbox"].pink-600.switch::before { background-color: #d81b60; } input[type="radio"].pink-700::after, input[type="checkbox"].pink-700.switch::before { background-color: #c2185b; } input[type="radio"].pink-800::after, input[type="checkbox"].pink-800.switch::before { background-color: #ad1457; } input[type="radio"].pink-900::after, input[type="checkbox"].pink-900.switch::before { background-color: #880e4f; } input[type="radio"].purple::after, input[type="checkbox"].purple.switch::before { background-color: #9c27b0; } input[type="radio"].purple-50::after, input[type="checkbox"].purple-50.switch::before { background-color: #f3e5f5; } input[type="radio"].purple-100::after, input[type="checkbox"].purple-100.switch::before { background-color: #e1bee7; } input[type="radio"].purple-200::after, input[type="checkbox"].purple-200.switch::before { background-color: #ce93d8; } input[type="radio"].Purple-300::after, input[type="checkbox"].Purple-300.switch::before { background-color: #ba68c8; } input[type="radio"].Purple-400::after, input[type="checkbox"].Purple-400.switch::before { background-color: #ab47bc; } input[type="radio"].purple-500::after, input[type="checkbox"].purple-500.switch::before { background-color: #9c27b0; } input[type="radio"].purple-600::after, input[type="checkbox"].purple-600.switch::before { background-color: #8e24aa; } input[type="radio"].purple-700::after, input[type="checkbox"].purple-700.switch::before { background-color: #7b1fa2; } input[type="radio"].purple-800::after, input[type="checkbox"].purple-800.switch::before { background-color: #6a1b9a; } input[type="radio"].purple-900::after, input[type="checkbox"].purple-900.switch::before { background-color: #4a148c; } input[type="radio"].deep-purple::after, input[type="checkbox"].deep-purple.switch::before { background-color: #673ab7; } input[type="radio"].deep-purple-300::after, input[type="checkbox"].deep-purple-300.switch::before { background-color: #9575cd; } input[type="radio"].deep-purple-400::after, input[type="checkbox"].deep-purple-400.switch::before { background-color: #7e57c2; } input[type="radio"].deep-purple-500::after, input[type="checkbox"].deep-purple-500.switch::before { background-color: #673ab7; } input[type="radio"].deep-purple-600::after, input[type="checkbox"].deep-purple-600.switch::before { background-color: #5e35b1; } input[type="radio"].deep-purple-700::after, input[type="checkbox"].deep-purple-700.switch::before { background-color: #512da8; } input[type="radio"].deep-purple-800::after, input[type="checkbox"].deep-purple-800.switch::before { background-color: #4527a0; } input[type="radio"].deep-purple-900::after, input[type="checkbox"].deep-purple-900.switch::before { background-color: #311b92; } input[type="radio"].indigo::after, input[type="checkbox"].indigo.switch::before { background-color: #3f51b5; } input[type="radio"].indigo-50::after, input[type="checkbox"].indigo-50.switch::before { background-color: #e8eaf6; } input[type="radio"].indigo-100::after, input[type="checkbox"].indigo-100.switch::before { background-color: #c5cae9; } input[type="radio"].indigo-200::after, input[type="checkbox"].indigo-200.switch::before { background-color: #9fa8da; } input[type="radio"].indigo-300::after, input[type="checkbox"].indigo-300.switch::before { background-color: #7986cb; } input[type="radio"].indigo-400::after, input[type="checkbox"].indigo-400.switch::before { background-color: #5c6bc0; } input[type="radio"].indigo-500::after, input[type="checkbox"].indigo-500.switch::before { background-color: #3f51b5; } input[type="radio"].indigo-600::after, input[type="checkbox"].indigo-600.switch::before { background-color: #3949ab; } input[type="radio"].indigo-700::after, input[type="checkbox"].indigo-700.switch::before { background-color: #303f9f; } input[type="radio"].indigo-800::after, input[type="checkbox"].indigo-800.switch::before { background-color: #283593; } input[type="radio"].indigo-900::after, input[type="checkbox"].indigo-900.switch::before { background-color: #1a237e; } input[type="radio"].blue::after, input[type="checkbox"].blue.switch::before { background-color: #2196F3; } input[type="radio"].blue-50::after, input[type="checkbox"].blue-50.switch::before { background-color: #e3f2fd; } input[type="radio"].blue-100::after, input[type="checkbox"].blue-100.switch::before { background-color: #bbdefb; } input[type="radio"].blue-200::after, input[type="checkbox"].blue-200.switch::before { background-color: #90caf9; } input[type="radio"].blue-300::after, input[type="checkbox"].blue-300.switch::before { background-color: #64b5f6; } input[type="radio"].blue-400::after, input[type="checkbox"].blue-400.switch::before { background-color: #42a5f5; } input[type="radio"].blue-500::after, input[type="checkbox"].blue-500.switch::before { background-color: #2196f3; } input[type="radio"].blue-600::after, input[type="checkbox"].blue-600.switch::before { background-color: #1e88e5; } input[type="radio"].blue-700::after, input[type="checkbox"].blue-700.switch::before { background-color: #1976d2; } input[type="radio"].blue-800::after, input[type="checkbox"].blue-800.switch::before { background-color: #1565c0; } input[type="radio"].blue-900::after, input[type="checkbox"].blue-900.switch::before { background-color: #0d47a1; } input[type="radio"].light-blue::after, input[type="checkbox"].light-blue.switch::before { background-color: #03a9f4; } input[type="radio"].light-blue-50::after, input[type="checkbox"].light-blue-50.switch::before { background-color: #e1f5fe; } input[type="radio"].light-blue-100::after, input[type="checkbox"].light-blue-100.switch::before { background-color: #b3e5fc; } input[type="radio"].light-blue-200::after, input[type="checkbox"].light-blue-200.switch::before { background-color: #81d4fa; } input[type="radio"].light-blue-300::after, input[type="checkbox"].light-blue-300.switch::before { background-color: #4fc3f7; } input[type="radio"].light-blue-400::after, input[type="checkbox"].light-blue-400.switch::before { background-color: #29b6f6; } input[type="radio"].light-blue-500::after, input[type="checkbox"].light-blue-500.switch::before { background-color: #03a9f4; } input[type="radio"].light-blue-600::after, input[type="checkbox"].light-blue-600.switch::before { background-color: #039be5; } input[type="radio"].light-blue-700::after, input[type="checkbox"].light-blue-700.switch::before { background-color: #0288d1; } input[type="radio"].light-blue-800::after, input[type="checkbox"].light-blue-800.switch::before { background-color: #0277bd; } input[type="radio"].light-blue-900::after, input[type="checkbox"].light-blue-900.switch::before { background-color: #01579b; } input[type="radio"].cyan::after, input[type="checkbox"].cyan.switch::before { background-color: #00bcd4; } input[type="radio"].cyan-50::after, input[type="checkbox"].cyan-50.switch::before { background-color: #e0f7fa; } input[type="radio"].cyan-100::after, input[type="checkbox"].cyan-100.switch::before { background-color: #b2ebf2; } input[type="radio"].cyan-200::after, input[type="checkbox"].cyan-200.switch::before { background-color: #80deea; } input[type="radio"].cyan-300::after, input[type="checkbox"].cyan-300.switch::before { background-color: #4dd0e1; } input[type="radio"].cyan-400::after, input[type="checkbox"].cyan-400.switch::before { background-color: #26c6da; } input[type="radio"].cyan-500::after, input[type="checkbox"].cyan-500.switch::before { background-color: #00bcd4; } input[type="radio"].cyan-600::after, input[type="checkbox"].cyan-600.switch::before { background-color: #00acc1; } input[type="radio"].cyan-700::after, input[type="checkbox"].cyan-700.switch::before { background-color: #0097a7; } input[type="radio"].cyan-800::after, input[type="checkbox"].cyan-800.switch::before { background-color: #00838f; } input[type="radio"].cyan-900::after, input[type="checkbox"].cyan-900.switch::before { background-color: #006064; } input[type="radio"].teal::after, input[type="checkbox"].teal.switch::before { background-color: #009688; } input[type="radio"].teal-50::after, input[type="checkbox"].teal-50.switch::before { background-color: #e0f2f1; } input[type="radio"].teal-100::after, input[type="checkbox"].teal-100.switch::before { background-color: #b2dfdb; } input[type="radio"].teal-200::after, input[type="checkbox"].teal-200.switch::before { background-color: #80cbc4; } input[type="radio"].teal-300::after, input[type="checkbox"].teal-300.switch::before { background-color: #4db6ac; } input[type="radio"].teal-400::after, input[type="checkbox"].teal-400.switch::before { background-color: #26a69a; } input[type="radio"].teal-500::after, input[type="checkbox"].teal-500.switch::before { background-color: #009688; } input[type="radio"].teal-600::after, input[type="checkbox"].teal-600.switch::before { background-color: #00897b; } input[type="radio"].teal-700::after, input[type="checkbox"].teal-700.switch::before { background-color: #00796b; } input[type="radio"].teal-800::after, input[type="checkbox"].teal-800.switch::before { background-color: #00695c; } input[type="radio"].teal-900::after, input[type="checkbox"].teal-900.switch::before { background-color: #004d40; } input[type="radio"].green::after, input[type="checkbox"].green.switch::before { background-color: #4caf50; } input[type="radio"].green-50::after, input[type="checkbox"].green-50.switch::before { background-color: #e8f5e9; } input[type="radio"].green-100::after, input[type="checkbox"].green-100.switch::before { background-color: #c8e6c9; } input[type="radio"].green-200::after, input[type="checkbox"].green-200.switch::before { background-color: #a5d6a7; } input[type="radio"].green-300::after, input[type="checkbox"].green-300.switch::before { background-color: #81c784; } input[type="radio"].green-400::after, input[type="checkbox"].green-400.switch::before { background-color: #66bb6a; } input[type="radio"].green-500::after, input[type="checkbox"].green-500.switch::before { background-color: #4caf50; } input[type="radio"].green-600::after, input[type="checkbox"].green-600.switch::before { background-color: #43a047; } input[type="radio"].green-700::after, input[type="checkbox"].green-700.switch::before { background-color: #388e3c; } input[type="radio"].green-800::after, input[type="checkbox"].green-800.switch::before { background-color: #2e7d32; } input[type="radio"].green-900::after, input[type="checkbox"].green-900.switch::before { background-color: #1b5e20; } input[type="radio"].light-green::after, input[type="checkbox"].light-green.switch::before { background-color: #8bc34a; } input[type="radio"].light-green-50::after, input[type="checkbox"].light-green-50.switch::before { background-color: #f1f8e9; } input[type="radio"].light-green-100::after, input[type="checkbox"].light-green-100.switch::before { background-color: #dcedc8; } input[type="radio"].light-green-200::after, input[type="checkbox"].light-green-200.switch::before { background-color: #c5e1a5; } input[type="radio"].light-green-300::after, input[type="checkbox"].light-green-300.switch::before { background-color: #aed581; } input[type="radio"].light-green-400::after, input[type="checkbox"].light-green-400.switch::before { background-color: #9ccc65; } input[type="radio"].light-green-500::after, input[type="checkbox"].light-green-500.switch::before { background-color: #8bc34a; } input[type="radio"].light-green-600::after, input[type="checkbox"].light-green-600.switch::before { background-color: #7cb342; } input[type="radio"].light-green-700::after, input[type="checkbox"].light-green-700.switch::before { background-color: #689f38; } input[type="radio"].light-green-800::after, input[type="checkbox"].light-green-800.switch::before { background-color: #558b2f; } input[type="radio"].light-green-900::after, input[type="checkbox"].light-green-900.switch::before { background-color: #33691e; } input[type="radio"].lime::after, input[type="checkbox"].lime.switch::before { background-color: #cddc39; } input[type="radio"].lime-50::after, input[type="checkbox"].lime-50.switch::before { background-color: #f9fbe7; } input[type="radio"].lime-100::after, input[type="checkbox"].lime-100.switch::before { background-color: #f0f4c3; } input[type="radio"].lime-200::after, input[type="checkbox"].lime-200.switch::before { background-color: #e6ee9c; } input[type="radio"].lime-300::after, input[type="checkbox"].lime-300.switch::before { background-color: #dce775; } input[type="radio"].lime-400::after, input[type="checkbox"].lime-400.switch::before { background-color: #d4e157; } input[type="radio"].lime-500::after, input[type="checkbox"].lime-500.switch::before { background-color: #cddc39; } input[type="radio"].lime-600::after, input[type="checkbox"].lime-600.switch::before { background-color: #c0ca33; } input[type="radio"].lime-700::after, input[type="checkbox"].lime-700.switch::before { background-color: #afb42b; } input[type="radio"].lime-800::after, input[type="checkbox"].lime-800.switch::before { background-color: #9e9d24; } input[type="radio"].lime-900::after, input[type="checkbox"].lime-900.switch::before { background-color: #827717; } input[type="radio"].yellow::after, input[type="checkbox"].yellow.switch::before { background-color: #ffeb3b; } input[type="radio"].yellow-50::after, input[type="checkbox"].yellow-50.switch::before { background-color: #fffde7; } input[type="radio"].yellow-100::after, input[type="checkbox"].yellow-100.switch::before { background-color: #fff9c4; } input[type="radio"].yellow-200::after, input[type="checkbox"].yellow-200.switch::before { background-color: #fff59d; } input[type="radio"].yellow-300::after, input[type="checkbox"].yellow-300.switch::before { background-color: #fff176; } input[type="radio"].yellow-500::after, input[type="checkbox"].yellow-500.switch::before { background-color: #ffeb3b; } input[type="radio"].yellow-600::after, input[type="checkbox"].yellow-600.switch::before { background-color: #fdd835; } input[type="radio"].yellow-700::after, input[type="checkbox"].yellow-700.switch::before { background-color: #fbc02d; } input[type="radio"].yellow-800::after, input[type="checkbox"].yellow-800.switch::before { background-color: #f9a825; } input[type="radio"].yellow-900::after, input[type="checkbox"].yellow-900.switch::before { background-color: #f57f17; } input[type="radio"].amber-50::after, input[type="checkbox"].amber-50.switch::before { background-color: #fff8e1; } input[type="radio"].amber-100::after, input[type="checkbox"].amber-100.switch::before { background-color: #ffecb3; } input[type="radio"].amber-200::after, input[type="checkbox"].amber-200.switch::before { background-color: #ffe082; } input[type="radio"].amber-300::after, input[type="checkbox"].amber-300.switch::before { background-color: #ffd54f; } input[type="radio"].amber-500::after, input[type="checkbox"].amber-500.switch::before { background-color: #ffc107; } input[type="radio"].amber-600::after, input[type="checkbox"].amber-600.switch::before { background-color: #ffb300; } input[type="radio"].amber-700::after, input[type="checkbox"].amber-700.switch::before { background-color: #ffa000; } input[type="radio"].amber-800::after, input[type="checkbox"].amber-800.switch::before { background-color: #ff8f00; } input[type="radio"].amber-900::after, input[type="checkbox"].amber-900.switch::before { background-color: #ff6f00; } input[type="radio"].orange-50::after, input[type="checkbox"].orange-50.switch::before { background-color: #fff3e0; } input[type="radio"].orange-100::after, input[type="checkbox"].orange-100.switch::before { background-color: #ffe0b2; } input[type="radio"].orange-200::after, input[type="checkbox"].orange-200.switch::before { background-color: #ffcc80; } input[type="radio"].orange-300::after, input[type="checkbox"].orange-300.switch::before { background-color: #ffb74d; } input[type="radio"].orange-400::after, input[type="checkbox"].orange-400.switch::before { background-color: #ffa726; } input[type="radio"].orange-500::after, input[type="checkbox"].orange-500.switch::before { background-color: #ff9800; } input[type="radio"].orange-600::after, input[type="checkbox"].orange-600.switch::before { background-color: #fb8c00; } input[type="radio"].orange-700::after, input[type="checkbox"].orange-700.switch::before { background-color: #f57c00; } input[type="radio"].orange-800::after, input[type="checkbox"].orange-800.switch::before { background-color: #ef6c00; } input[type="radio"].orange-900::after, input[type="checkbox"].orange-900.switch::before { background-color: #e65100; } input[type="radio"].deep-orange::after, input[type="checkbox"].deep-orange.switch::before { background-color: #ff5722; } input[type="radio"].deep-orange-50::after, input[type="checkbox"].deep-orange-50.switch::before { background-color: #fbe9e7; } input[type="radio"].deep-orange-100::after, input[type="checkbox"].deep-orange-100.switch::before { background-color: #ffccbc; } input[type="radio"].deep-orange-200::after, input[type="checkbox"].deep-orange-200.switch::before { background-color: #ffab91; } input[type="radio"].deep-orange-300::after, input[type="checkbox"].deep-orange-300.switch::before { background-color: #ff8a65; } input[type="radio"].deep-orange-400::after, input[type="checkbox"].deep-orange-400.switch::before { background-color: #ff7043; } input[type="radio"].deep-orange-500::after, input[type="checkbox"].deep-orange-500.switch::before { background-color: #ff5722; } input[type="radio"].deep-orange-600::after, input[type="checkbox"].deep-orange-600.switch::before { background-color: #f4511e; } input[type="radio"].deep-orange-700::after, input[type="checkbox"].deep-orange-700.switch::before { background-color: #e64a19; } input[type="radio"].deep-orange-800::after, input[type="checkbox"].deep-orange-800.switch::before { background-color: #d84315; } input[type="radio"].deep-orange-900::after, input[type="checkbox"].deep-orange-900.switch::before { background-color: #bf360c; } input[type="radio"].brown::after, input[type="checkbox"].brown.switch::before { background-color: #795548; } input[type="radio"].brown-50::after, input[type="checkbox"].brown-50.switch::before { background-color: #efebe9; } input[type="radio"].brown-100::after, input[type="checkbox"].brown-100.switch::before { background-color: #d7ccc8; } input[type="radio"].brown-200::after, input[type="checkbox"].brown-200.switch::before { background-color: #bcaaa4; } input[type="radio"].brown-300::after, input[type="checkbox"].brown-300.switch::before { background-color: #a1887f; } input[type="radio"].brown-400::after, input[type="checkbox"].brown-400.switch::before { background-color: #8d6e63; } input[type="radio"].brown-500::after, input[type="checkbox"].brown-500.switch::before { background-color: #795548; } input[type="radio"].brown-600::after, input[type="checkbox"].brown-600.switch::before { background-color: #6d4c41; } input[type="radio"].brown-700::after, input[type="checkbox"].brown-700.switch::before { background-color: #5d4037; } input[type="radio"].brown-800::after, input[type="checkbox"].brown-800.switch::before { background-color: #4e342e; } input[type="radio"].brown-900::after, input[type="checkbox"].brown-900.switch::before { background-color: #3e2723; } input[type="radio"].grey::after, input[type="checkbox"].grey.switch::before { background-color: #9e9e9e; } input[type="radio"].grey-50::after, input[type="checkbox"].grey-50.switch::before { background-color: #fafafa; } input[type="radio"].grey-100::after, input[type="checkbox"].grey-100.switch::before { background-color: #f5f5f5; } input[type="radio"].grey-200::after, input[type="checkbox"].grey-200.switch::before { background-color: #eee; } input[type="radio"].grey-300::after, input[type="checkbox"].grey-300.switch::before { background-color: #e0e0e0; } input[type="radio"].grey-400::after, input[type="checkbox"].grey-400.switch::before { background-color: #bdbdbd; } input[type="radio"].grey-500::after, input[type="checkbox"].grey-500.switch::before { background-color: #9e9e9e; } input[type="radio"].grey-600::after, input[type="checkbox"].grey-600.switch::before { background-color: #757575; } input[type="radio"].grey-700::after, input[type="checkbox"].grey-700.switch::before { background-color: #616161; } input[type="radio"].grey-800::after, input[type="checkbox"].grey-800.switch::before { background-color: #424242; } input[type="radio"].grey-900::after, input[type="checkbox"].grey-900.switch::before { background-color: #212121; } input[type="radio"].blue-grey::after, input[type="checkbox"].blue-grey.switch::before { background-color: #607d8b; } input[type="radio"].blue-grey-50::after, input[type="checkbox"].blue-grey-50.switch::before { background-color: #eceff1; } input[type="radio"].blue-grey-100::after, input[type="checkbox"].blue-grey-100.switch::before { background-color: #cfd8dc; } input[type="radio"].blue-grey-200::after, input[type="checkbox"].blue-grey-200.switch::before { background-color: #b0bec5; } input[type="radio"].blue-grey-300::after, input[type="checkbox"].blue-grey-300.switch::before { background-color: #90a4ae; } input[type="radio"].blue-grey-400::after, input[type="checkbox"].blue-grey-400.switch::before { background-color: #78909c; } input[type="radio"].blue-grey-500::after, input[type="checkbox"].blue-grey-500.switch::before { background-color: #607d8b; } input[type="radio"].blue-grey-600::after, input[type="checkbox"].blue-grey-600.switch::before { background-color: #546e7a; } input[type="radio"].blue-grey-700::after, input[type="checkbox"].blue-grey-700.switch::before { background-color: #455a64; } input[type="radio"].blue-grey-800::after, input[type="checkbox"].blue-grey-800.switch::before { background-color: #37474f; } input[type="radio"].blue-grey-900::after, input[type="checkbox"].blue-grey-900.switch::before { background-color: #263238; } input[type="radio"].black::after, input[type="checkbox"].black.switch::before { background-color: #000; } .platform-ios input[type="radio"].red-50::before { border-color: #ffebee; } .platform-ios input[type="radio"].red-100::before { border-color: #ffcdd2; } .platform-ios input[type="radio"].red-200::before { border-color: #ef9a9a; } .platform-ios input[type="radio"].red-300::before { border-color: #e57373; } .platform-ios input[type="radio"].red-400::before { border-color: #ef5350; } .platform-ios input[type="radio"].red-500::before { border-color: #f44336; } .platform-ios input[type="radio"].red-600::before { border-color: #e53935; } .platform-ios input[type="radio"].red-700::before { border-color: #d32f2f; } .platform-ios input[type="radio"].red-800::before { border-color: #c62828; } .platform-ios input[type="radio"].red-900::before { border-color: #b71c1c; } .platform-ios input[type="radio"].pink::before { border-color: #E91E63; } .platform-ios input[type="radio"].pink-50::before { border-color: #fce4ec; } .platform-ios input[type="radio"].pink-100::before { border-color: #f8bbd0; } .platform-ios input[type="radio"].pink-200::before { border-color: #f48fb1; } .platform-ios input[type="radio"].Pink-300::before { border-color: #f06292; } .platform-ios input[type="radio"].pink-400::before { border-color: #ec407a; } .platform-ios input[type="radio"].pink-500::before { border-color: #e91e63; } .platform-ios input[type="radio"].pink-600::before { border-color: #d81b60; } .platform-ios input[type="radio"].pink-700::before { border-color: #c2185b; } .platform-ios input[type="radio"].pink-800::before { border-color: #ad1457; } .platform-ios input[type="radio"].pink-900::before { border-color: #880e4f; } .platform-ios input[type="radio"].purple::before { border-color: #9c27b0; } .platform-ios input[type="radio"].purple-50::before { border-color: #f3e5f5; } .platform-ios input[type="radio"].purple-100::before { border-color: #e1bee7; } .platform-ios input[type="radio"].purple-200::before { border-color: #ce93d8; } .platform-ios input[type="radio"].Purple-300::before { border-color: #ba68c8; } .platform-ios input[type="radio"].Purple-400::before { border-color: #ab47bc; } .platform-ios input[type="radio"].purple-500::before { border-color: #9c27b0; } .platform-ios input[type="radio"].purple-600::before { border-color: #8e24aa; } .platform-ios input[type="radio"].purple-700::before { border-color: #7b1fa2; } .platform-ios input[type="radio"].purple-800::before { border-color: #6a1b9a; } .platform-ios input[type="radio"].purple-900::before { border-color: #4a148c; } .platform-ios input[type="radio"].deep-purple::before { border-color: #673ab7; } .platform-ios input[type="radio"].deep-purple-300::before { border-color: #9575cd; } .platform-ios input[type="radio"].deep-purple-400::before { border-color: #7e57c2; } .platform-ios input[type="radio"].deep-purple-500::before { border-color: #673ab7; } .platform-ios input[type="radio"].deep-purple-600::before { border-color: #5e35b1; } .platform-ios input[type="radio"].deep-purple-700::before { border-color: #512da8; } .platform-ios input[type="radio"].deep-purple-800::before { border-color: #4527a0; } .platform-ios input[type="radio"].deep-purple-900::before { border-color: #311b92; } .platform-ios input[type="radio"].indigo::before { border-color: #3f51b5; } .platform-ios input[type="radio"].indigo-50::before { border-color: #e8eaf6; } .platform-ios input[type="radio"].indigo-100::before { border-color: #c5cae9; } .platform-ios input[type="radio"].indigo-200::before { border-color: #9fa8da; } .platform-ios input[type="radio"].indigo-300::before { border-color: #7986cb; } .platform-ios input[type="radio"].indigo-400::before { border-color: #5c6bc0; } .platform-ios input[type="radio"].indigo-500::before { border-color: #3f51b5; } .platform-ios input[type="radio"].indigo-600::before { border-color: #3949ab; } .platform-ios input[type="radio"].indigo-700::before { border-color: #303f9f; } .platform-ios input[type="radio"].indigo-800::before { border-color: #283593; } .platform-ios input[type="radio"].indigo-900::before { border-color: #1a237e; } .platform-ios input[type="radio"].blue::before { border-color: #2196F3; } .platform-ios input[type="radio"].blue-50::before { border-color: #e3f2fd; } .platform-ios input[type="radio"].blue-100::before { border-color: #bbdefb; } .platform-ios input[type="radio"].blue-200::before { border-color: #90caf9; } .platform-ios input[type="radio"].blue-300::before { border-color: #64b5f6; } .platform-ios input[type="radio"].blue-400::before { border-color: #42a5f5; } .platform-ios input[type="radio"].blue-500::before { border-color: #2196f3; } .platform-ios input[type="radio"].blue-600::before { border-color: #1e88e5; } .platform-ios input[type="radio"].blue-700::before { border-color: #1976d2; } .platform-ios input[type="radio"].blue-800::before { border-color: #1565c0; } .platform-ios input[type="radio"].blue-900::before { border-color: #0d47a1; } .platform-ios input[type="radio"].light-blue::before { border-color: #03a9f4; } .platform-ios input[type="radio"].light-blue-50::before { border-color: #e1f5fe; } .platform-ios input[type="radio"].light-blue-100::before { border-color: #b3e5fc; } .platform-ios input[type="radio"].light-blue-200::before { border-color: #81d4fa; } .platform-ios input[type="radio"].light-blue-300::before { border-color: #4fc3f7; } .platform-ios input[type="radio"].light-blue-400::before { border-color: #29b6f6; } .platform-ios input[type="radio"].light-blue-500::before { border-color: #03a9f4; } .platform-ios input[type="radio"].light-blue-600::before { border-color: #039be5; } .platform-ios input[type="radio"].light-blue-700::before { border-color: #0288d1; } .platform-ios input[type="radio"].light-blue-800::before { border-color: #0277bd; } .platform-ios input[type="radio"].light-blue-900::before { border-color: #01579b; } .platform-ios input[type="radio"].cyan::before { border-color: #00bcd4; } .platform-ios input[type="radio"].cyan-50::before { border-color: #e0f7fa; } .platform-ios input[type="radio"].cyan-100::before { border-color: #b2ebf2; } .platform-ios input[type="radio"].cyan-200::before { border-color: #80deea; } .platform-ios input[type="radio"].cyan-300::before { border-color: #4dd0e1; } .platform-ios input[type="radio"].cyan-400::before { border-color: #26c6da; } .platform-ios input[type="radio"].cyan-500::before { border-color: #00bcd4; } .platform-ios input[type="radio"].cyan-600::before { border-color: #00acc1; } .platform-ios input[type="radio"].cyan-700::before { border-color: #0097a7; } .platform-ios input[type="radio"].cyan-800::before { border-color: #00838f; } .platform-ios input[type="radio"].cyan-900::before { border-color: #006064; } .platform-ios input[type="radio"].teal::before { border-color: #009688; } .platform-ios input[type="radio"].teal-50::before { border-color: #e0f2f1; } .platform-ios input[type="radio"].teal-100::before { border-color: #b2dfdb; } .platform-ios input[type="radio"].teal-200::before { border-color: #80cbc4; } .platform-ios input[type="radio"].teal-300::before { border-color: #4db6ac; } .platform-ios input[type="radio"].teal-400::before { border-color: #26a69a; } .platform-ios input[type="radio"].teal-500::before { border-color: #009688; } .platform-ios input[type="radio"].teal-600::before { border-color: #00897b; } .platform-ios input[type="radio"].teal-700::before { border-color: #00796b; } .platform-ios input[type="radio"].teal-800::before { border-color: #00695c; } .platform-ios input[type="radio"].teal-900::before { border-color: #004d40; } .platform-ios input[type="radio"].green::before { border-color: #4caf50; } .platform-ios input[type="radio"].green-50::before { border-color: #e8f5e9; } .platform-ios input[type="radio"].green-100::before { border-color: #c8e6c9; } .platform-ios input[type="radio"].green-200::before { border-color: #a5d6a7; } .platform-ios input[type="radio"].green-300::before { border-color: #81c784; } .platform-ios input[type="radio"].green-400::before { border-color: #66bb6a; } .platform-ios input[type="radio"].green-500::before { border-color: #4caf50; } .platform-ios input[type="radio"].green-600::before { border-color: #43a047; } .platform-ios input[type="radio"].green-700::before { border-color: #388e3c; } .platform-ios input[type="radio"].green-800::before { border-color: #2e7d32; } .platform-ios input[type="radio"].green-900::before { border-color: #1b5e20; } .platform-ios input[type="radio"].light-green::before { border-color: #8bc34a; } .platform-ios input[type="radio"].light-green-50::before { border-color: #f1f8e9; } .platform-ios input[type="radio"].light-green-100::before { border-color: #dcedc8; } .platform-ios input[type="radio"].light-green-200::before { border-color: #c5e1a5; } .platform-ios input[type="radio"].light-green-300::before { border-color: #aed581; } .platform-ios input[type="radio"].light-green-400::before { border-color: #9ccc65; } .platform-ios input[type="radio"].light-green-500::before { border-color: #8bc34a; } .platform-ios input[type="radio"].light-green-600::before { border-color: #7cb342; } .platform-ios input[type="radio"].light-green-700::before { border-color: #689f38; } .platform-ios input[type="radio"].light-green-800::before { border-color: #558b2f; } .platform-ios input[type="radio"].light-green-900::before { border-color: #33691e; } .platform-ios input[type="radio"].lime::before { border-color: #cddc39; } .platform-ios input[type="radio"].lime-50::before { border-color: #f9fbe7; } .platform-ios input[type="radio"].lime-100::before { border-color: #f0f4c3; } .platform-ios input[type="radio"].lime-200::before { border-color: #e6ee9c; } .platform-ios input[type="radio"].lime-300::before { border-color: #dce775; } .platform-ios input[type="radio"].lime-400::before { border-color: #d4e157; } .platform-ios input[type="radio"].lime-500::before { border-color: #cddc39; } .platform-ios input[type="radio"].lime-600::before { border-color: #c0ca33; } .platform-ios input[type="radio"].lime-700::before { border-color: #afb42b; } .platform-ios input[type="radio"].lime-800::before { border-color: #9e9d24; } .platform-ios input[type="radio"].lime-900::before { border-color: #827717; } .platform-ios input[type="radio"].yellow::before { border-color: #ffeb3b; } .platform-ios input[type="radio"].yellow-50::before { border-color: #fffde7; } .platform-ios input[type="radio"].yellow-100::before { border-color: #fff9c4; } .platform-ios input[type="radio"].yellow-200::before { border-color: #fff59d; } .platform-ios input[type="radio"].yellow-300::before { border-color: #fff176; } .platform-ios input[type="radio"].yellow-500::before { border-color: #ffeb3b; } .platform-ios input[type="radio"].yellow-600::before { border-color: #fdd835; } .platform-ios input[type="radio"].yellow-700::before { border-color: #fbc02d; } .platform-ios input[type="radio"].yellow-800::before { border-color: #f9a825; } .platform-ios input[type="radio"].yellow-900::before { border-color: #f57f17; } .platform-ios input[type="radio"].amber-50::before { border-color: #fff8e1; } .platform-ios input[type="radio"].amber-100::before { border-color: #ffecb3; } .platform-ios input[type="radio"].amber-200::before { border-color: #ffe082; } .platform-ios input[type="radio"].amber-300::before { border-color: #ffd54f; } .platform-ios input[type="radio"].amber-500::before { border-color: #ffc107; } .platform-ios input[type="radio"].amber-600::before { border-color: #ffb300; } .platform-ios input[type="radio"].amber-700::before { border-color: #ffa000; } .platform-ios input[type="radio"].amber-800::before { border-color: #ff8f00; } .platform-ios input[type="radio"].amber-900::before { border-color: #ff6f00; } .platform-ios input[type="radio"].orange-50::before { border-color: #fff3e0; } .platform-ios input[type="radio"].orange-100::before { border-color: #ffe0b2; } .platform-ios input[type="radio"].orange-200::before { border-color: #ffcc80; } .platform-ios input[type="radio"].orange-300::before { border-color: #ffb74d; } .platform-ios input[type="radio"].orange-400::before { border-color: #ffa726; } .platform-ios input[type="radio"].orange-500::before { border-color: #ff9800; } .platform-ios input[type="radio"].orange-600::before { border-color: #fb8c00; } .platform-ios input[type="radio"].orange-700::before { border-color: #f57c00; } .platform-ios input[type="radio"].orange-800::before { border-color: #ef6c00; } .platform-ios input[type="radio"].orange-900::before { border-color: #e65100; } .platform-ios input[type="radio"].deep-orange::before { border-color: #ff5722; } .platform-ios input[type="radio"].deep-orange-50::before { border-color: #fbe9e7; } .platform-ios input[type="radio"].deep-orange-100::before { border-color: #ffccbc; } .platform-ios input[type="radio"].deep-orange-200::before { border-color: #ffab91; } .platform-ios input[type="radio"].deep-orange-300::before { border-color: #ff8a65; } .platform-ios input[type="radio"].deep-orange-400::before { border-color: #ff7043; } .platform-ios input[type="radio"].deep-orange-500::before { border-color: #ff5722; } .platform-ios input[type="radio"].deep-orange-600::before { border-color: #f4511e; } .platform-ios input[type="radio"].deep-orange-700::before { border-color: #e64a19; } .platform-ios input[type="radio"].deep-orange-800::before { border-color: #d84315; } .platform-ios input[type="radio"].deep-orange-900::before { border-color: #bf360c; } .platform-ios input[type="radio"].brown::before { border-color: #795548; } .platform-ios input[type="radio"].brown-50::before { border-color: #efebe9; } .platform-ios input[type="radio"].brown-100::before { border-color: #d7ccc8; } .platform-ios input[type="radio"].brown-200::before { border-color: #bcaaa4; } .platform-ios input[type="radio"].brown-300::before { border-color: #a1887f; } .platform-ios input[type="radio"].brown-400::before { border-color: #8d6e63; } .platform-ios input[type="radio"].brown-500::before { border-color: #795548; } .platform-ios input[type="radio"].brown-600::before { border-color: #6d4c41; } .platform-ios input[type="radio"].brown-700::before { border-color: #5d4037; } .platform-ios input[type="radio"].brown-800::before { border-color: #4e342e; } .platform-ios input[type="radio"].brown-900::before { border-color: #3e2723; } .platform-ios input[type="radio"].grey::before { border-color: #9e9e9e; } .platform-ios input[type="radio"].grey-50::before { border-color: #fafafa; } .platform-ios input[type="radio"].grey-100::before { border-color: #f5f5f5; } .platform-ios input[type="radio"].grey-200::before { border-color: #eee; } .platform-ios input[type="radio"].grey-300::before { border-color: #e0e0e0; } .platform-ios input[type="radio"].grey-400::before { border-color: #bdbdbd; } .platform-ios input[type="radio"].grey-500::before { border-color: #9e9e9e; } .platform-ios input[type="radio"].grey-600::before { border-color: #757575; } .platform-ios input[type="radio"].grey-700::before { border-color: #616161; } .platform-ios input[type="radio"].grey-800::before { border-color: #424242; } .platform-ios input[type="radio"].grey-900::before { border-color: #212121; } .platform-ios input[type="radio"].blue-grey::before { border-color: #607d8b; } .platform-ios input[type="radio"].blue-grey-50::before { border-color: #eceff1; } .platform-ios input[type="radio"].blue-grey-100::before { border-color: #cfd8dc; } .platform-ios input[type="radio"].blue-grey-200::before { border-color: #b0bec5; } .platform-ios input[type="radio"].blue-grey-300::before { border-color: #90a4ae; } .platform-ios input[type="radio"].blue-grey-400::before { border-color: #78909c; } .platform-ios input[type="radio"].blue-grey-500::before { border-color: #607d8b; } .platform-ios input[type="radio"].blue-grey-600::before { border-color: #546e7a; } .platform-ios input[type="radio"].blue-grey-700::before { border-color: #455a64; } .platform-ios input[type="radio"].blue-grey-800::before { border-color: #37474f; } .platform-ios input[type="radio"].blue-grey-900::before { border-color: #263238; } .platform-ios input[type="radio"].black::before { border-color: #000; } ================================================ FILE: jquery/component.json ================================================ { "name":"jquery", "author": "madrobby", "dependencies": [] } ================================================ FILE: jquery/index.html ================================================jQuery is a fast, small, and feature-rich JavaScript library. It makes things like HTML document traversal and manipulation, event handling, animation, and Ajax much simpler with an easy-to-use API that works across a multitude of browsers. With a combination of versatility and extensibility, jQuery has changed the way that millions of people write JavaScript.
To work on mobile devices requires a light and fast version of the frameworks for JavaScript, so MobileUI is equipped with Zepto.js.
Zepto is a minimalist JavaScript library for modern browsers with a largely jQuery-compatible API. If you use jQuery, you already know how to use Zepto.
To use this component you need install with the command:
mobileui install jquery
See the Zepto documentation and its resources at zeptojs.com.
================================================ FILE: jquery/script.js ================================================ /* Zepto v1.2.0 - zepto event ajax form ie - zeptojs.com/license */ (function(global, factory) { if (typeof define === 'function' && define.amd) define(function() { return factory(global) }) else factory(global) }(this, function(window) { var Zepto = (function() { var undefined, key, $, classList, emptyArray = [], concat = emptyArray.concat, filter = emptyArray.filter, slice = emptyArray.slice, document = window.document, elementDisplay = {}, classCache = {}, cssNumber = { 'column-count': 1, 'columns': 1, 'font-weight': 1, 'line-height': 1,'opacity': 1, 'z-index': 1, 'zoom': 1 }, fragmentRE = /^\s*<(\w+|!)[^>]*>/, singleTagRE = /^<(\w+)\s*\/?>(?:<\/\1>|)$/, tagExpanderRE = /<(?!area|br|col|embed|hr|img|input|link|meta|param)(([\w:]+)[^>]*)\/>/ig, rootNodeRE = /^(?:body|html)$/i, capitalRE = /([A-Z])/g, // special attributes that should be get/set via method calls methodAttributes = ['val', 'css', 'html', 'text', 'data', 'width', 'height', 'offset'], adjacencyOperators = [ 'after', 'prepend', 'before', 'append' ], table = document.createElement('table'), tableRow = document.createElement('tr'), containers = { 'tr': document.createElement('tbody'), 'tbody': table, 'thead': table, 'tfoot': table, 'td': tableRow, 'th': tableRow, '*': document.createElement('div') }, readyRE = /complete|loaded|interactive/, simpleSelectorRE = /^[\w-]*$/, class2type = {}, toString = class2type.toString, zepto = {}, camelize, uniq, tempParent = document.createElement('div'), propMap = { 'tabindex': 'tabIndex', 'readonly': 'readOnly', 'for': 'htmlFor', 'class': 'className', 'maxlength': 'maxLength', 'cellspacing': 'cellSpacing', 'cellpadding': 'cellPadding', 'rowspan': 'rowSpan', 'colspan': 'colSpan', 'usemap': 'useMap', 'frameborder': 'frameBorder', 'contenteditable': 'contentEditable' }, isArray = Array.isArray || function(object){ return object instanceof Array } zepto.matches = function(element, selector) { if (!selector || !element || element.nodeType !== 1) return false var matchesSelector = element.matches || element.webkitMatchesSelector || element.mozMatchesSelector || element.oMatchesSelector || element.matchesSelector if (matchesSelector) return matchesSelector.call(element, selector) // fall back to performing a selector: var match, parent = element.parentNode, temp = !parent if (temp) (parent = tempParent).appendChild(element) match = ~zepto.qsa(parent, selector).indexOf(element) temp && tempParent.removeChild(element) return match } function type(obj) { return obj == null ? String(obj) : class2type[toString.call(obj)] || "object" } function isFunction(value) { return type(value) == "function" } function isWindow(obj) { return obj != null && obj == obj.window } function isDocument(obj) { return obj != null && obj.nodeType == obj.DOCUMENT_NODE } function isObject(obj) { return type(obj) == "object" } function isPlainObject(obj) { return isObject(obj) && !isWindow(obj) && Object.getPrototypeOf(obj) == Object.prototype } function likeArray(obj) { var length = !!obj && 'length' in obj && obj.length, type = $.type(obj) return 'function' != type && !isWindow(obj) && ( 'array' == type || length === 0 || (typeof length == 'number' && length > 0 && (length - 1) in obj) ) } function compact(array) { return filter.call(array, function(item){ return item != null }) } function flatten(array) { return array.length > 0 ? $.fn.concat.apply([], array) : array } camelize = function(str){ return str.replace(/-+(.)?/g, function(match, chr){ return chr ? chr.toUpperCase() : '' }) } function dasherize(str) { return str.replace(/::/g, '/') .replace(/([A-Z]+)([A-Z][a-z])/g, '$1_$2') .replace(/([a-z\d])([A-Z])/g, '$1_$2') .replace(/_/g, '-') .toLowerCase() } uniq = function(array){ return filter.call(array, function(item, idx){ return array.indexOf(item) == idx }) } function classRE(name) { return name in classCache ? classCache[name] : (classCache[name] = new RegExp('(^|\\s)' + name + '(\\s|$)')) } function maybeAddPx(name, value) { return (typeof value == "number" && !cssNumber[dasherize(name)]) ? value + "px" : value } function defaultDisplay(nodeName) { var element, display if (!elementDisplay[nodeName]) { element = document.createElement(nodeName) document.body.appendChild(element) display = getComputedStyle(element, '').getPropertyValue("display") element.parentNode.removeChild(element) display == "none" && (display = "block") elementDisplay[nodeName] = display } return elementDisplay[nodeName] } function children(element) { return 'children' in element ? slice.call(element.children) : $.map(element.childNodes, function(node){ if (node.nodeType == 1) return node }) } function Z(dom, selector) { var i, len = dom ? dom.length : 0 for (i = 0; i < len; i++) this[i] = dom[i] this.length = len this.selector = selector || '' } // `$.zepto.fragment` takes a html string and an optional tag name // to generate DOM nodes from the given html string. // The generated DOM nodes are returned as an array. // This function can be overridden in plugins for example to make // it compatible with browsers that don't support the DOM fully. zepto.fragment = function(html, name, properties) { var dom, nodes, container // A special case optimization for a single tag if (singleTagRE.test(html)) dom = $(document.createElement(RegExp.$1)) if (!dom) { if (html.replace) html = html.replace(tagExpanderRE, "<$1>$2>") if (name === undefined) name = fragmentRE.test(html) && RegExp.$1 if (!(name in containers)) name = '*' container = containers[name] container.innerHTML = '' + html dom = $.each(slice.call(container.childNodes), function(){ container.removeChild(this) }) } if (isPlainObject(properties)) { nodes = $(dom) $.each(properties, function(key, value) { if (methodAttributes.indexOf(key) > -1) nodes[key](value) else nodes.attr(key, value) }) } return dom } // `$.zepto.Z` swaps out the prototype of the given `dom` array // of nodes with `$.fn` and thus supplying all the Zepto functions // to the array. This method can be overridden in plugins. zepto.Z = function(dom, selector) { return new Z(dom, selector) } // `$.zepto.isZ` should return `true` if the given object is a Zepto // collection. This method can be overridden in plugins. zepto.isZ = function(object) { return object instanceof zepto.Z } // `$.zepto.init` is Zepto's counterpart to jQuery's `$.fn.init` and // takes a CSS selector and an optional context (and handles various // special cases). // This method can be overridden in plugins. zepto.init = function(selector, context) { var dom // If nothing given, return an empty Zepto collection if (!selector) return zepto.Z() // Optimize for string selectors else if (typeof selector == 'string') { selector = selector.trim() // If it's a html fragment, create nodes from it // Note: In both Chrome 21 and Firefox 15, DOM error 12 // is thrown if the fragment doesn't begin with < if (selector[0] == '<' && fragmentRE.test(selector)) dom = zepto.fragment(selector, RegExp.$1, context), selector = null // If there's a context, create a collection on that context first, and select // nodes from there else if (context !== undefined) return $(context).find(selector) // If it's a CSS selector, use it to select nodes. else dom = zepto.qsa(document, selector) } // If a function is given, call it when the DOM is ready else if (isFunction(selector)) return $(document).ready(selector) // If a Zepto collection is given, just return it else if (zepto.isZ(selector)) return selector else { // normalize array if an array of nodes is given if (isArray(selector)) dom = compact(selector) // Wrap DOM nodes. else if (isObject(selector)) dom = [selector], selector = null // If it's a html fragment, create nodes from it else if (fragmentRE.test(selector)) dom = zepto.fragment(selector.trim(), RegExp.$1, context), selector = null // If there's a context, create a collection on that context first, and select // nodes from there else if (context !== undefined) return $(context).find(selector) // And last but no least, if it's a CSS selector, use it to select nodes. else dom = zepto.qsa(document, selector) } // create a new Zepto collection from the nodes found return zepto.Z(dom, selector) } // `$` will be the base `Zepto` object. When calling this // function just call `$.zepto.init, which makes the implementation // details of selecting nodes and creating Zepto collections // patchable in plugins. $ = function(selector, context){ return zepto.init(selector, context) } function extend(target, source, deep) { for (key in source) if (deep && (isPlainObject(source[key]) || isArray(source[key]))) { if (isPlainObject(source[key]) && !isPlainObject(target[key])) target[key] = {} if (isArray(source[key]) && !isArray(target[key])) target[key] = [] extend(target[key], source[key], deep) } else if (source[key] !== undefined) target[key] = source[key] } // Copy all but undefined properties from one or more // objects to the `target` object. $.extend = function(target){ var deep, args = slice.call(arguments, 1) if (typeof target == 'boolean') { deep = target target = args.shift() } args.forEach(function(arg){ extend(target, arg, deep) }) return target } // `$.zepto.qsa` is Zepto's CSS selector implementation which // uses `document.querySelectorAll` and optimizes for some special cases, like `#id`. // This method can be overridden in plugins. zepto.qsa = function(element, selector){ var found, maybeID = selector[0] == '#', maybeClass = !maybeID && selector[0] == '.', nameOnly = maybeID || maybeClass ? selector.slice(1) : selector, // Ensure that a 1 char tag name still gets checked isSimple = simpleSelectorRE.test(nameOnly) return (element.getElementById && isSimple && maybeID) ? // Safari DocumentFragment doesn't have getElementById ( (found = element.getElementById(nameOnly)) ? [found] : [] ) : (element.nodeType !== 1 && element.nodeType !== 9 && element.nodeType !== 11) ? [] : slice.call( isSimple && !maybeID && element.getElementsByClassName ? // DocumentFragment doesn't have getElementsByClassName/TagName maybeClass ? element.getElementsByClassName(nameOnly) : // If it's simple, it could be a class element.getElementsByTagName(selector) : // Or a tag element.querySelectorAll(selector) // Or it's not simple, and we need to query all ) } function filtered(nodes, selector) { return selector == null ? $(nodes) : $(nodes).filter(selector) } $.contains = document.documentElement.contains ? function(parent, node) { return parent !== node && parent.contains(node) } : function(parent, node) { while (node && (node = node.parentNode)) if (node === parent) return true return false } function funcArg(context, arg, idx, payload) { return isFunction(arg) ? arg.call(context, idx, payload) : arg } function setAttribute(node, name, value) { value == null ? node.removeAttribute(name) : node.setAttribute(name, value) } // access className property while respecting SVGAnimatedString function className(node, value){ var klass = node.className || '', svg = klass && klass.baseVal !== undefined if (value === undefined) return svg ? klass.baseVal : klass svg ? (klass.baseVal = value) : (node.className = value) } // "true" => true // "false" => false // "null" => null // "42" => 42 // "42.5" => 42.5 // "08" => "08" // JSON => parse if valid // String => self function deserializeValue(value) { try { return value ? value == "true" || ( value == "false" ? false : value == "null" ? null : +value + "" == value ? +value : /^[\[\{]/.test(value) ? $.parseJSON(value) : value ) : value } catch(e) { return value } } $.type = type $.isFunction = isFunction $.isWindow = isWindow $.isArray = isArray $.isPlainObject = isPlainObject $.isEmptyObject = function(obj) { var name for (name in obj) return false return true } $.isNumeric = function(val) { var num = Number(val), type = typeof val return val != null && type != 'boolean' && (type != 'string' || val.length) && !isNaN(num) && isFinite(num) || false } $.inArray = function(elem, array, i){ return emptyArray.indexOf.call(array, elem, i) } $.camelCase = camelize $.trim = function(str) { return str == null ? "" : String.prototype.trim.call(str) } // plugin compatibility $.uuid = 0 $.support = { } $.expr = { } $.noop = function() {} $.map = function(elements, callback){ var value, values = [], i, key if (likeArray(elements)) for (i = 0; i < elements.length; i++) { value = callback(elements[i], i) if (value != null) values.push(value) } else for (key in elements) { value = callback(elements[key], key) if (value != null) values.push(value) } return flatten(values) } $.each = function(elements, callback){ var i, key if (likeArray(elements)) { for (i = 0; i < elements.length; i++) if (callback.call(elements[i], i, elements[i]) === false) return elements } else { for (key in elements) if (callback.call(elements[key], key, elements[key]) === false) return elements } return elements } $.grep = function(elements, callback){ return filter.call(elements, callback) } if (window.JSON) $.parseJSON = JSON.parse // Populate the class2type map $.each("Boolean Number String Function Array Date RegExp Object Error".split(" "), function(i, name) { class2type[ "[object " + name + "]" ] = name.toLowerCase() }) // Define methods that will be available on all // Zepto collections $.fn = { constructor: zepto.Z, length: 0, // Because a collection acts like an array // copy over these useful array functions. forEach: emptyArray.forEach, reduce: emptyArray.reduce, push: emptyArray.push, sort: emptyArray.sort, splice: emptyArray.splice, indexOf: emptyArray.indexOf, concat: function(){ var i, value, args = [] for (i = 0; i < arguments.length; i++) { value = arguments[i] args[i] = zepto.isZ(value) ? value.toArray() : value } return concat.apply(zepto.isZ(this) ? this.toArray() : this, args) }, // `map` and `slice` in the jQuery API work differently // from their array counterparts map: function(fn){ return $($.map(this, function(el, i){ return fn.call(el, i, el) })) }, slice: function(){ return $(slice.apply(this, arguments)) }, ready: function(callback){ // need to check if document.body exists for IE as that browser reports // document ready when it hasn't yet created the body element if (readyRE.test(document.readyState) && document.body) callback($) else document.addEventListener('DOMContentLoaded', function(){ callback($) }, false) return this }, get: function(idx){ return idx === undefined ? slice.call(this) : this[idx >= 0 ? idx : idx + this.length] }, toArray: function(){ return this.get() }, size: function(){ return this.length }, remove: function(){ return this.each(function(){ if (this.parentNode != null) this.parentNode.removeChild(this) }) }, each: function(callback){ emptyArray.every.call(this, function(el, idx){ return callback.call(el, idx, el) !== false }) return this }, filter: function(selector){ if (isFunction(selector)) return this.not(this.not(selector)) return $(filter.call(this, function(element){ return zepto.matches(element, selector) })) }, add: function(selector,context){ return $(uniq(this.concat($(selector,context)))) }, is: function(selector){ return this.length > 0 && zepto.matches(this[0], selector) }, not: function(selector){ var nodes=[] if (isFunction(selector) && selector.call !== undefined) this.each(function(idx){ if (!selector.call(this,idx)) nodes.push(this) }) else { var excludes = typeof selector == 'string' ? this.filter(selector) : (likeArray(selector) && isFunction(selector.item)) ? slice.call(selector) : $(selector) this.forEach(function(el){ if (excludes.indexOf(el) < 0) nodes.push(el) }) } return $(nodes) }, has: function(selector){ return this.filter(function(){ return isObject(selector) ? $.contains(this, selector) : $(this).find(selector).size() }) }, eq: function(idx){ return idx === -1 ? this.slice(idx) : this.slice(idx, + idx + 1) }, first: function(){ var el = this[0] return el && !isObject(el) ? el : $(el) }, last: function(){ var el = this[this.length - 1] return el && !isObject(el) ? el : $(el) }, find: function(selector){ var result, $this = this if (!selector) result = $() else if (typeof selector == 'object') result = $(selector).filter(function(){ var node = this return emptyArray.some.call($this, function(parent){ return $.contains(parent, node) }) }) else if (this.length == 1) result = $(zepto.qsa(this[0], selector)) else result = this.map(function(){ return zepto.qsa(this, selector) }) return result }, closest: function(selector, context){ var nodes = [], collection = typeof selector == 'object' && $(selector) this.each(function(_, node){ while (node && !(collection ? collection.indexOf(node) >= 0 : zepto.matches(node, selector))) node = node !== context && !isDocument(node) && node.parentNode if (node && nodes.indexOf(node) < 0) nodes.push(node) }) return $(nodes) }, parents: function(selector){ var ancestors = [], nodes = this while (nodes.length > 0) nodes = $.map(nodes, function(node){ if ((node = node.parentNode) && !isDocument(node) && ancestors.indexOf(node) < 0) { ancestors.push(node) return node } }) return filtered(ancestors, selector) }, parent: function(selector){ return filtered(uniq(this.pluck('parentNode')), selector) }, children: function(selector){ return filtered(this.map(function(){ return children(this) }), selector) }, contents: function() { return this.map(function() { return this.contentDocument || slice.call(this.childNodes) }) }, siblings: function(selector){ return filtered(this.map(function(i, el){ return filter.call(children(el.parentNode), function(child){ return child!==el }) }), selector) }, empty: function(){ return this.each(function(){ this.innerHTML = '' }) }, // `pluck` is borrowed from Prototype.js pluck: function(property){ return $.map(this, function(el){ return el[property] }) }, show: function(){ return this.each(function(){ this.style.display == "none" && (this.style.display = '') if (getComputedStyle(this, '').getPropertyValue("display") == "none") this.style.display = defaultDisplay(this.nodeName) }) }, replaceWith: function(newContent){ return this.before(newContent).remove() }, wrap: function(structure){ var func = isFunction(structure) if (this[0] && !func) var dom = $(structure).get(0), clone = dom.parentNode || this.length > 1 return this.each(function(index){ $(this).wrapAll( func ? structure.call(this, index) : clone ? dom.cloneNode(true) : dom ) }) }, wrapAll: function(structure){ if (this[0]) { $(this[0]).before(structure = $(structure)) var children // drill down to the inmost element while ((children = structure.children()).length) structure = children.first() $(structure).append(this) } return this }, wrapInner: function(structure){ var func = isFunction(structure) return this.each(function(index){ var self = $(this), contents = self.contents(), dom = func ? structure.call(this, index) : structure contents.length ? contents.wrapAll(dom) : self.append(dom) }) }, unwrap: function(){ this.parent().each(function(){ $(this).replaceWith($(this).children()) }) return this }, clone: function(){ return this.map(function(){ return this.cloneNode(true) }) }, hide: function(){ return this.css("display", "none") }, toggle: function(setting){ return this.each(function(){ var el = $(this) ;(setting === undefined ? el.css("display") == "none" : setting) ? el.show() : el.hide() }) }, prev: function(selector){ return $(this.pluck('previousElementSibling')).filter(selector || '*') }, next: function(selector){ return $(this.pluck('nextElementSibling')).filter(selector || '*') }, html: function(html){ return 0 in arguments ? this.each(function(idx){ var originHtml = this.innerHTML $(this).empty().append( funcArg(this, html, idx, originHtml) ) }) : (0 in this ? this[0].innerHTML : null) }, text: function(text){ return 0 in arguments ? this.each(function(idx){ var newText = funcArg(this, text, idx, this.textContent) this.textContent = newText == null ? '' : ''+newText }) : (0 in this ? this.pluck('textContent').join("") : null) }, attr: function(name, value){ var result return (typeof name == 'string' && !(1 in arguments)) ? (0 in this && this[0].nodeType == 1 && (result = this[0].getAttribute(name)) != null ? result : undefined) : this.each(function(idx){ if (this.nodeType !== 1) return if (isObject(name)) for (key in name) setAttribute(this, key, name[key]) else setAttribute(this, name, funcArg(this, value, idx, this.getAttribute(name))) }) }, removeAttr: function(name){ return this.each(function(){ this.nodeType === 1 && name.split(' ').forEach(function(attribute){ setAttribute(this, attribute) }, this)}) }, prop: function(name, value){ name = propMap[name] || name return (1 in arguments) ? this.each(function(idx){ this[name] = funcArg(this, value, idx, this[name]) }) : (this[0] && this[0][name]) }, removeProp: function(name){ name = propMap[name] || name return this.each(function(){ delete this[name] }) }, data: function(name, value){ var attrName = 'data-' + name.replace(capitalRE, '-$1').toLowerCase() var data = (1 in arguments) ? this.attr(attrName, value) : this.attr(attrName) return data !== null ? deserializeValue(data) : undefined }, val: function(value){ if (0 in arguments) { if (value == null) value = "" return this.each(function(idx){ this.value = funcArg(this, value, idx, this.value) }) } else { return this[0] && (this[0].multiple ? $(this[0]).find('option').filter(function(){ return this.selected }).pluck('value') : this[0].value) } }, offset: function(coordinates){ if (coordinates) return this.each(function(index){ var $this = $(this), coords = funcArg(this, coordinates, index, $this.offset()), parentOffset = $this.offsetParent().offset(), props = { top: coords.top - parentOffset.top, left: coords.left - parentOffset.left } if ($this.css('position') == 'static') props['position'] = 'relative' $this.css(props) }) if (!this.length) return null if (document.documentElement !== this[0] && !$.contains(document.documentElement, this[0])) return {top: 0, left: 0} var obj = this[0].getBoundingClientRect() return { left: obj.left + window.pageXOffset, top: obj.top + window.pageYOffset, width: Math.round(obj.width), height: Math.round(obj.height) } }, css: function(property, value){ if (arguments.length < 2) { var element = this[0] if (typeof property == 'string') { if (!element) return return element.style[camelize(property)] || getComputedStyle(element, '').getPropertyValue(property) } else if (isArray(property)) { if (!element) return var props = {} var computedStyle = getComputedStyle(element, '') $.each(property, function(_, prop){ props[prop] = (element.style[camelize(prop)] || computedStyle.getPropertyValue(prop)) }) return props } } var css = '' if (type(property) == 'string') { if (!value && value !== 0) this.each(function(){ this.style.removeProperty(dasherize(property)) }) else css = dasherize(property) + ":" + maybeAddPx(property, value) } else { for (key in property) if (!property[key] && property[key] !== 0) this.each(function(){ this.style.removeProperty(dasherize(key)) }) else css += dasherize(key) + ':' + maybeAddPx(key, property[key]) + ';' } return this.each(function(){ this.style.cssText += ';' + css }) }, index: function(element){ return element ? this.indexOf($(element)[0]) : this.parent().children().indexOf(this[0]) }, hasClass: function(name){ if (!name) return false return emptyArray.some.call(this, function(el){ return this.test(className(el)) }, classRE(name)) }, addClass: function(name){ if (!name) return this return this.each(function(idx){ if (!('className' in this)) return classList = [] var cls = className(this), newName = funcArg(this, name, idx, cls) newName.split(/\s+/g).forEach(function(klass){ if (!$(this).hasClass(klass)) classList.push(klass) }, this) classList.length && className(this, cls + (cls ? " " : "") + classList.join(" ")) }) }, removeClass: function(name){ return this.each(function(idx){ if (!('className' in this)) return if (name === undefined) return className(this, '') classList = className(this) funcArg(this, name, idx, classList).split(/\s+/g).forEach(function(klass){ classList = classList.replace(classRE(klass), " ") }) className(this, classList.trim()) }) }, toggleClass: function(name, when){ if (!name) return this return this.each(function(idx){ var $this = $(this), names = funcArg(this, name, idx, className(this)) names.split(/\s+/g).forEach(function(klass){ (when === undefined ? !$this.hasClass(klass) : when) ? $this.addClass(klass) : $this.removeClass(klass) }) }) }, scrollTop: function(value){ if (!this.length) return var hasScrollTop = 'scrollTop' in this[0] if (value === undefined) return hasScrollTop ? this[0].scrollTop : this[0].pageYOffset return this.each(hasScrollTop ? function(){ this.scrollTop = value } : function(){ this.scrollTo(this.scrollX, value) }) }, scrollLeft: function(value){ if (!this.length) return var hasScrollLeft = 'scrollLeft' in this[0] if (value === undefined) return hasScrollLeft ? this[0].scrollLeft : this[0].pageXOffset return this.each(hasScrollLeft ? function(){ this.scrollLeft = value } : function(){ this.scrollTo(value, this.scrollY) }) }, position: function() { if (!this.length) return var elem = this[0], // Get *real* offsetParent offsetParent = this.offsetParent(), // Get correct offsets offset = this.offset(), parentOffset = rootNodeRE.test(offsetParent[0].nodeName) ? { top: 0, left: 0 } : offsetParent.offset() // Subtract element margins // note: when an element has margin: auto the offsetLeft and marginLeft // are the same in Safari causing offset.left to incorrectly be 0 offset.top -= parseFloat( $(elem).css('margin-top') ) || 0 offset.left -= parseFloat( $(elem).css('margin-left') ) || 0 // Add offsetParent borders parentOffset.top += parseFloat( $(offsetParent[0]).css('border-top-width') ) || 0 parentOffset.left += parseFloat( $(offsetParent[0]).css('border-left-width') ) || 0 // Subtract the two offsets return { top: offset.top - parentOffset.top, left: offset.left - parentOffset.left } }, offsetParent: function() { return this.map(function(){ var parent = this.offsetParent || document.body while (parent && !rootNodeRE.test(parent.nodeName) && $(parent).css("position") == "static") parent = parent.offsetParent return parent }) } } // for now $.fn.detach = $.fn.remove // Generate the `width` and `height` functions ;['width', 'height'].forEach(function(dimension){ var dimensionProperty = dimension.replace(/./, function(m){ return m[0].toUpperCase() }) $.fn[dimension] = function(value){ var offset, el = this[0] if (value === undefined) return isWindow(el) ? el['inner' + dimensionProperty] : isDocument(el) ? el.documentElement['scroll' + dimensionProperty] : (offset = this.offset()) && offset[dimension] else return this.each(function(idx){ el = $(this) el.css(dimension, funcArg(this, value, idx, el[dimension]())) }) } }) function traverseNode(node, fun) { fun(node) for (var i = 0, len = node.childNodes.length; i < len; i++) traverseNode(node.childNodes[i], fun) } // Generate the `after`, `prepend`, `before`, `append`, // `insertAfter`, `insertBefore`, `appendTo`, and `prependTo` methods. adjacencyOperators.forEach(function(operator, operatorIndex) { var inside = operatorIndex % 2 //=> prepend, append $.fn[operator] = function(){ // arguments can be nodes, arrays of nodes, Zepto objects and HTML strings var argType, nodes = $.map(arguments, function(arg) { var arr = [] argType = type(arg) if (argType == "array") { arg.forEach(function(el) { if (el.nodeType !== undefined) return arr.push(el) else if ($.zepto.isZ(el)) return arr = arr.concat(el.get()) arr = arr.concat(zepto.fragment(el)) }) return arr } return argType == "object" || arg == null ? arg : zepto.fragment(arg) }), parent, copyByClone = this.length > 1 if (nodes.length < 1) return this return this.each(function(_, target){ parent = inside ? target : target.parentNode // convert all methods to a "before" operation target = operatorIndex == 0 ? target.nextSibling : operatorIndex == 1 ? target.firstChild : operatorIndex == 2 ? target : null var parentInDocument = $.contains(document.documentElement, parent) nodes.forEach(function(node){ if (copyByClone) node = node.cloneNode(true) else if (!parent) return $(node).remove() parent.insertBefore(node, target) if (parentInDocument) traverseNode(node, function(el){ if (el.nodeName != null && el.nodeName.toUpperCase() === 'SCRIPT' && (!el.type || el.type === 'text/javascript') && !el.src){ var target = el.ownerDocument ? el.ownerDocument.defaultView : window target['eval'].call(target, el.innerHTML) } }) }) }) } // after => insertAfter // prepend => prependTo // before => insertBefore // append => appendTo $.fn[inside ? operator+'To' : 'insert'+(operatorIndex ? 'Before' : 'After')] = function(html){ $(html)[operator](this) return this } }) zepto.Z.prototype = Z.prototype = $.fn // Export internal API functions in the `$.zepto` namespace zepto.uniq = uniq zepto.deserializeValue = deserializeValue $.zepto = zepto return $ })() window.Zepto = Zepto window.$ === undefined && (window.$ = Zepto) ;(function($){ var _zid = 1, undefined, slice = Array.prototype.slice, isFunction = $.isFunction, isString = function(obj){ return typeof obj == 'string' }, handlers = {}, specialEvents={}, focusinSupported = 'onfocusin' in window, focus = { focus: 'focusin', blur: 'focusout' }, hover = { mouseenter: 'mouseover', mouseleave: 'mouseout' } specialEvents.click = specialEvents.mousedown = specialEvents.mouseup = specialEvents.mousemove = 'MouseEvents' function zid(element) { return element._zid || (element._zid = _zid++) } function findHandlers(element, event, fn, selector) { event = parse(event) if (event.ns) var matcher = matcherFor(event.ns) return (handlers[zid(element)] || []).filter(function(handler) { return handler && (!event.e || handler.e == event.e) && (!event.ns || matcher.test(handler.ns)) && (!fn || zid(handler.fn) === zid(fn)) && (!selector || handler.sel == selector) }) } function parse(event) { var parts = ('' + event).split('.') return {e: parts[0], ns: parts.slice(1).sort().join(' ')} } function matcherFor(ns) { return new RegExp('(?:^| )' + ns.replace(' ', ' .* ?') + '(?: |$)') } function eventCapture(handler, captureSetting) { return handler.del && (!focusinSupported && (handler.e in focus)) || !!captureSetting } function realEvent(type) { return hover[type] || (focusinSupported && focus[type]) || type } function add(element, events, fn, data, selector, delegator, capture){ var id = zid(element), set = (handlers[id] || (handlers[id] = [])) events.split(/\s/).forEach(function(event){ if (event == 'ready') return $(document).ready(fn) var handler = parse(event) handler.fn = fn handler.sel = selector // emulate mouseenter, mouseleave if (handler.e in hover) fn = function(e){ var related = e.relatedTarget if (!related || (related !== this && !$.contains(this, related))) return handler.fn.apply(this, arguments) } handler.del = delegator var callback = delegator || fn handler.proxy = function(e){ e = compatible(e) if (e.isImmediatePropagationStopped()) return e.data = data var result = callback.apply(element, e._args == undefined ? [e] : [e].concat(e._args)) if (result === false) e.preventDefault(), e.stopPropagation() return result } handler.i = set.length set.push(handler) if ('addEventListener' in element) element.addEventListener(realEvent(handler.e), handler.proxy, eventCapture(handler, capture)) }) } function remove(element, events, fn, selector, capture){ var id = zid(element) ;(events || '').split(/\s/).forEach(function(event){ findHandlers(element, event, fn, selector).forEach(function(handler){ delete handlers[id][handler.i] if ('removeEventListener' in element) element.removeEventListener(realEvent(handler.e), handler.proxy, eventCapture(handler, capture)) }) }) } $.event = { add: add, remove: remove } $.proxy = function(fn, context) { var args = (2 in arguments) && slice.call(arguments, 2) if (isFunction(fn)) { var proxyFn = function(){ return fn.apply(context, args ? args.concat(slice.call(arguments)) : arguments) } proxyFn._zid = zid(fn) return proxyFn } else if (isString(context)) { if (args) { args.unshift(fn[context], fn) return $.proxy.apply(null, args) } else { return $.proxy(fn[context], fn) } } else { throw new TypeError("expected function") } } $.fn.bind = function(event, data, callback){ return this.on(event, data, callback) } $.fn.unbind = function(event, callback){ return this.off(event, callback) } $.fn.one = function(event, selector, data, callback){ return this.on(event, selector, data, callback, 1) } var returnTrue = function(){return true}, returnFalse = function(){return false}, ignoreProperties = /^([A-Z]|returnValue$|layer[XY]$|webkitMovement[XY]$)/, eventMethods = { preventDefault: 'isDefaultPrevented', stopImmediatePropagation: 'isImmediatePropagationStopped', stopPropagation: 'isPropagationStopped' } function compatible(event, source) { if (source || !event.isDefaultPrevented) { source || (source = event) $.each(eventMethods, function(name, predicate) { var sourceMethod = source[name] event[name] = function(){ this[predicate] = returnTrue return sourceMethod && sourceMethod.apply(source, arguments) } event[predicate] = returnFalse }) event.timeStamp || (event.timeStamp = Date.now()) if (source.defaultPrevented !== undefined ? source.defaultPrevented : 'returnValue' in source ? source.returnValue === false : source.getPreventDefault && source.getPreventDefault()) event.isDefaultPrevented = returnTrue } return event } function createProxy(event) { var key, proxy = { originalEvent: event } for (key in event) if (!ignoreProperties.test(key) && event[key] !== undefined) proxy[key] = event[key] return compatible(proxy, event) } $.fn.delegate = function(selector, event, callback){ return this.on(event, selector, callback) } $.fn.undelegate = function(selector, event, callback){ return this.off(event, selector, callback) } $.fn.live = function(event, callback){ $(document.body).delegate(this.selector, event, callback) return this } $.fn.die = function(event, callback){ $(document.body).undelegate(this.selector, event, callback) return this } $.fn.on = function(event, selector, data, callback, one){ var autoRemove, delegator, $this = this if (event && !isString(event)) { $.each(event, function(type, fn){ $this.on(type, selector, data, fn, one) }) return $this } if (!isString(selector) && !isFunction(callback) && callback !== false) callback = data, data = selector, selector = undefined if (callback === undefined || data === false) callback = data, data = undefined if (callback === false) callback = returnFalse return $this.each(function(_, element){ if (one) autoRemove = function(e){ remove(element, e.type, callback) return callback.apply(this, arguments) } if (selector) delegator = function(e){ var evt, match = $(e.target).closest(selector, element).get(0) if (match && match !== element) { evt = $.extend(createProxy(e), {currentTarget: match, liveFired: element}) return (autoRemove || callback).apply(match, [evt].concat(slice.call(arguments, 1))) } } add(element, event, callback, data, selector, delegator || autoRemove) }) } $.fn.off = function(event, selector, callback){ var $this = this if (event && !isString(event)) { $.each(event, function(type, fn){ $this.off(type, selector, fn) }) return $this } if (!isString(selector) && !isFunction(callback) && callback !== false) callback = selector, selector = undefined if (callback === false) callback = returnFalse return $this.each(function(){ remove(this, event, callback, selector) }) } $.fn.trigger = function(event, args){ event = (isString(event) || $.isPlainObject(event)) ? $.Event(event) : compatible(event) event._args = args return this.each(function(){ // handle focus(), blur() by calling them directly if (event.type in focus && typeof this[event.type] == "function") this[event.type]() // items in the collection might not be DOM elements else if ('dispatchEvent' in this) this.dispatchEvent(event) else $(this).triggerHandler(event, args) }) } // triggers event handlers on current element just as if an event occurred, // doesn't trigger an actual event, doesn't bubble $.fn.triggerHandler = function(event, args){ var e, result this.each(function(i, element){ e = createProxy(isString(event) ? $.Event(event) : event) e._args = args e.target = element $.each(findHandlers(element, event.type || event), function(i, handler){ result = handler.proxy(e) if (e.isImmediatePropagationStopped()) return false }) }) return result } // shortcut methods for `.bind(event, fn)` for each event type ;('focusin focusout focus blur load resize scroll unload click dblclick '+ 'mousedown mouseup mousemove mouseover mouseout mouseenter mouseleave '+ 'change select keydown keypress keyup error').split(' ').forEach(function(event) { $.fn[event] = function(callback) { return (0 in arguments) ? this.bind(event, callback) : this.trigger(event) } }) $.Event = function(type, props) { if (!isString(type)) props = type, type = props.type var event = document.createEvent(specialEvents[type] || 'Events'), bubbles = true if (props) for (var name in props) (name == 'bubbles') ? (bubbles = !!props[name]) : (event[name] = props[name]) event.initEvent(type, bubbles, true) return compatible(event) } })(Zepto) ;(function($){ var jsonpID = +new Date(), document = window.document, key, name, rscript = /