├── .babelrc ├── .gitignore ├── .travis.yml ├── LICENSE ├── README.md ├── dist ├── .DS_Store ├── bundle.js ├── bundle.js.map ├── images │ ├── icon_nav_actionSheet.png │ ├── icon_nav_article.png │ ├── icon_nav_button.png │ ├── icon_nav_cell.png │ ├── icon_nav_dialog.png │ ├── icon_nav_icons.png │ ├── icon_nav_msg.png │ ├── icon_nav_toast.png │ ├── logo.png │ ├── qrcode.png │ ├── swipe1.jpg │ ├── swipe2.jpg │ ├── swipe3.jpg │ └── vcode.jpg └── index.html ├── index.js ├── karma.conf.js ├── lib ├── actionsheet │ ├── __test__ │ │ └── index.spec.js │ ├── index.js │ └── style.less ├── article │ ├── __test__ │ │ └── index.spec.js │ ├── index.js │ └── style.less ├── base │ ├── fn.less │ ├── icon │ │ ├── weui_font.less │ │ └── weui_icon_font.less │ ├── mixin │ │ ├── animate.less │ │ ├── animate │ │ │ ├── animated.less │ │ │ ├── bounce.less │ │ │ ├── bounceIn.less │ │ │ ├── bounceInDown.less │ │ │ ├── bounceInLeft.less │ │ │ ├── bounceInRight.less │ │ │ ├── bounceInUp.less │ │ │ ├── bounceOut.less │ │ │ ├── bounceOutDown.less │ │ │ ├── bounceOutLeft.less │ │ │ ├── bounceOutRight.less │ │ │ ├── bounceOutUp.less │ │ │ ├── fadeIn.less │ │ │ ├── fadeInDown.less │ │ │ ├── fadeInDownBig.less │ │ │ ├── fadeInLeft.less │ │ │ ├── fadeInLeftBig.less │ │ │ ├── fadeInRight.less │ │ │ ├── fadeInRightBig.less │ │ │ ├── fadeInUp.less │ │ │ ├── fadeInUpBig.less │ │ │ ├── fadeOut.less │ │ │ ├── fadeOutDown.less │ │ │ ├── fadeOutDownBig.less │ │ │ ├── fadeOutLeft.less │ │ │ ├── fadeOutLeftBig.less │ │ │ ├── fadeOutRight.less │ │ │ ├── fadeOutRightBig.less │ │ │ ├── fadeOutUp.less │ │ │ ├── fadeOutUpBig.less │ │ │ ├── flash.less │ │ │ ├── flip.less │ │ │ ├── flipInX.less │ │ │ ├── flipInY.less │ │ │ ├── flipOutX.less │ │ │ ├── flipOutY.less │ │ │ ├── hinge.less │ │ │ ├── lightSpeedIn.less │ │ │ ├── lightSpeedOut.less │ │ │ ├── pulse.less │ │ │ ├── rollIn.less │ │ │ ├── rollOut.less │ │ │ ├── rotateIn.less │ │ │ ├── rotateInDownLeft.less │ │ │ ├── rotateInDownRight.less │ │ │ ├── rotateInUpLeft.less │ │ │ ├── rotateInUpRight.less │ │ │ ├── rotateOut.less │ │ │ ├── rotateOutDownLeft.less │ │ │ ├── rotateOutDownRight.less │ │ │ ├── rotateOutUpLeft.less │ │ │ ├── rotateOutUpRight.less │ │ │ ├── shake.less │ │ │ ├── swing.less │ │ │ ├── tada.less │ │ │ ├── wiggle.less │ │ │ └── wobble.less │ │ ├── mobile.less │ │ ├── setArrow.less │ │ ├── setChecked.less │ │ ├── setOnepx.less │ │ └── text.less │ ├── reset.less │ └── variable │ │ ├── global.less │ │ ├── monokai.less │ │ ├── weui_button.less │ │ ├── weui_cell.less │ │ ├── weui_msg.less │ │ ├── weui_progress.less │ │ └── weui_step_list.less ├── button │ ├── __test__ │ │ └── index.spec.js │ ├── button-area.js │ ├── index.js │ ├── style.less │ ├── weui_btn_default.less │ ├── weui_btn_disabled.less │ ├── weui_btn_global.less │ ├── weui_btn_plain.less │ ├── weui_btn_primary.less │ └── weui_btn_warn.less ├── cells │ ├── __test__ │ │ └── cells.spec.js │ ├── cell-body.js │ ├── cell-footer.js │ ├── cell-header.js │ ├── cell.js │ ├── cells-tips.js │ ├── cells-title.js │ ├── cells.js │ ├── checkbox-cell.js │ ├── index.js │ ├── input-cell.js │ ├── input-select.js │ ├── radio-cell.js │ ├── radio-cells.js │ ├── style.less │ ├── switch-cell.js │ ├── weui_check.less │ ├── weui_check │ │ ├── weui_check_common.less │ │ ├── weui_checkbox.less │ │ └── weui_radio.less │ ├── weui_form.less │ ├── weui_form │ │ ├── weui_form_common.less │ │ ├── weui_select.less │ │ ├── weui_select_after.less │ │ ├── weui_select_before.less │ │ └── weui_vcode.less │ └── weui_switch.less ├── dialog │ ├── __test__ │ │ └── index.spec.js │ ├── index.js │ └── style.less ├── index.js ├── mask │ ├── index.js │ └── style.less ├── message │ ├── __test__ │ │ └── index.spec.js │ ├── index.js │ └── style.less ├── page │ ├── index.js │ ├── page-header.js │ └── style.less ├── progress │ ├── __test__ │ │ └── index.spec.js │ ├── index.js │ └── style.less ├── swiper │ ├── index.js │ ├── item.js │ ├── style.less │ └── swiper.js ├── toast │ ├── __test__ │ │ └── index.spec.js │ ├── index.js │ └── style.less └── utils │ ├── events.js │ └── mobiledetect.js ├── package.json ├── react-weui.sublime-project ├── react-weui.sublime-workspace ├── src ├── example │ ├── app-template.js │ ├── index.js │ ├── pages │ │ ├── main.jsx │ │ ├── page-actionsheet.jsx │ │ ├── page-article.jsx │ │ ├── page-button.jsx │ │ ├── page-cell.jsx │ │ ├── page-dialog.jsx │ │ ├── page-message.jsx │ │ ├── page-progress.jsx │ │ ├── page-ptr.jsx │ │ ├── page-swiper.jsx │ │ └── page-toast.jsx │ └── style.less └── style │ └── components │ ├── actionsheet │ ├── __test__ │ │ └── index.spec.jsx │ ├── index.jsx │ └── style.less │ ├── article │ ├── __test__ │ │ └── index.spec.jsx │ ├── index.jsx │ └── style.less │ ├── base │ ├── fn.less │ ├── icon │ │ ├── weui_font.less │ │ └── weui_icon_font.less │ ├── mixin │ │ ├── animate.less │ │ ├── animate │ │ │ ├── animated.less │ │ │ ├── bounce.less │ │ │ ├── bounceIn.less │ │ │ ├── bounceInDown.less │ │ │ ├── bounceInLeft.less │ │ │ ├── bounceInRight.less │ │ │ ├── bounceInUp.less │ │ │ ├── bounceOut.less │ │ │ ├── bounceOutDown.less │ │ │ ├── bounceOutLeft.less │ │ │ ├── bounceOutRight.less │ │ │ ├── bounceOutUp.less │ │ │ ├── fadeIn.less │ │ │ ├── fadeInDown.less │ │ │ ├── fadeInDownBig.less │ │ │ ├── fadeInLeft.less │ │ │ ├── fadeInLeftBig.less │ │ │ ├── fadeInRight.less │ │ │ ├── fadeInRightBig.less │ │ │ ├── fadeInUp.less │ │ │ ├── fadeInUpBig.less │ │ │ ├── fadeOut.less │ │ │ ├── fadeOutDown.less │ │ │ ├── fadeOutDownBig.less │ │ │ ├── fadeOutLeft.less │ │ │ ├── fadeOutLeftBig.less │ │ │ ├── fadeOutRight.less │ │ │ ├── fadeOutRightBig.less │ │ │ ├── fadeOutUp.less │ │ │ ├── fadeOutUpBig.less │ │ │ ├── flash.less │ │ │ ├── flip.less │ │ │ ├── flipInX.less │ │ │ ├── flipInY.less │ │ │ ├── flipOutX.less │ │ │ ├── flipOutY.less │ │ │ ├── hinge.less │ │ │ ├── lightSpeedIn.less │ │ │ ├── lightSpeedOut.less │ │ │ ├── pulse.less │ │ │ ├── rollIn.less │ │ │ ├── rollOut.less │ │ │ ├── rotateIn.less │ │ │ ├── rotateInDownLeft.less │ │ │ ├── rotateInDownRight.less │ │ │ ├── rotateInUpLeft.less │ │ │ ├── rotateInUpRight.less │ │ │ ├── rotateOut.less │ │ │ ├── rotateOutDownLeft.less │ │ │ ├── rotateOutDownRight.less │ │ │ ├── rotateOutUpLeft.less │ │ │ ├── rotateOutUpRight.less │ │ │ ├── shake.less │ │ │ ├── swing.less │ │ │ ├── tada.less │ │ │ ├── wiggle.less │ │ │ └── wobble.less │ │ ├── mobile.less │ │ ├── setArrow.less │ │ ├── setChecked.less │ │ ├── setOnepx.less │ │ └── text.less │ ├── reset.less │ └── variable │ │ ├── global.less │ │ ├── monokai.less │ │ ├── weui_button.less │ │ ├── weui_cell.less │ │ ├── weui_msg.less │ │ ├── weui_progress.less │ │ └── weui_step_list.less │ ├── button │ ├── __test__ │ │ └── index.spec.jsx │ ├── button-area.jsx │ ├── index.jsx │ ├── style.less │ ├── weui_btn_default.less │ ├── weui_btn_disabled.less │ ├── weui_btn_global.less │ ├── weui_btn_plain.less │ ├── weui_btn_primary.less │ └── weui_btn_warn.less │ ├── cells │ ├── __test__ │ │ └── cells.spec.jsx │ ├── cell-body.jsx │ ├── cell-footer.jsx │ ├── cell-header.jsx │ ├── cell.jsx │ ├── cells-tips.jsx │ ├── cells-title.jsx │ ├── cells.jsx │ ├── checkbox-cell.jsx │ ├── index.jsx │ ├── input-cell.jsx │ ├── input-select.jsx │ ├── radio-cell.jsx │ ├── radio-cells.jsx │ ├── style.less │ ├── switch-cell.jsx │ ├── weui_check.less │ ├── weui_check │ │ ├── weui_check_common.less │ │ ├── weui_checkbox.less │ │ └── weui_radio.less │ ├── weui_form.less │ ├── weui_form │ │ ├── weui_form_common.less │ │ ├── weui_select.less │ │ ├── weui_select_after.less │ │ ├── weui_select_before.less │ │ └── weui_vcode.less │ └── weui_switch.less │ ├── dialog │ ├── __test__ │ │ └── index.spec.jsx │ ├── index.jsx │ └── style.less │ ├── index.js │ ├── mask │ ├── index.jsx │ └── style.less │ ├── message │ ├── __test__ │ │ └── index.spec.jsx │ ├── index.jsx │ └── style.less │ ├── page │ ├── index.jsx │ ├── page-header.jsx │ └── style.less │ ├── progress │ ├── __test__ │ │ └── index.spec.jsx │ ├── index.jsx │ └── style.less │ ├── swiper │ ├── index.jsx │ ├── item.jsx │ ├── style.less │ └── swiper.js │ ├── toast │ ├── __test__ │ │ └── index.spec.jsx │ ├── index.jsx │ └── style.less │ └── utils │ ├── events.jsx │ └── mobiledetect.jsx ├── tests.webpack.js ├── webpack.config.js ├── webpack.config.test.js └── webpack.production.config.js /.babelrc: -------------------------------------------------------------------------------- 1 | { 2 | presets: ['es2015','react'] 3 | } -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | node_modules 2 | react-weui.sublime-project 3 | .DS_Store -------------------------------------------------------------------------------- /.travis.yml: -------------------------------------------------------------------------------- 1 | 2 | language: node_js 3 | node_js: 4 | - "4.2.1" 5 | script: 6 | - npm test 7 | before_install: 8 | - export CHROME_BIN=chromium-browser 9 | - export DISPLAY=:99.0 10 | - sh -e /etc/init.d/xvfb start 11 | - npm install history@1.13.x 12 | - npm install sinon -------------------------------------------------------------------------------- /LICENSE: -------------------------------------------------------------------------------- 1 | The MIT License (MIT) 2 | 3 | Copyright (c) 2015 n7best 4 | 5 | Permission is hereby granted, free of charge, to any person obtaining a copy 6 | of this software and associated documentation files (the "Software"), to deal 7 | in the Software without restriction, including without limitation the rights 8 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 9 | copies of the Software, and to permit persons to whom the Software is 10 | furnished to do so, subject to the following conditions: 11 | 12 | The above copyright notice and this permission notice shall be included in all 13 | copies or substantial portions of the Software. 14 | 15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 17 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 18 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 19 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 20 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 21 | SOFTWARE. 22 | 23 | -------------------------------------------------------------------------------- /dist/.DS_Store: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/n7best/n7-react-weui/efb9f4e07a81b9c437c5fdcea2db5a1226194a9b/dist/.DS_Store -------------------------------------------------------------------------------- /dist/images/icon_nav_actionSheet.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/n7best/n7-react-weui/efb9f4e07a81b9c437c5fdcea2db5a1226194a9b/dist/images/icon_nav_actionSheet.png -------------------------------------------------------------------------------- /dist/images/icon_nav_article.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/n7best/n7-react-weui/efb9f4e07a81b9c437c5fdcea2db5a1226194a9b/dist/images/icon_nav_article.png -------------------------------------------------------------------------------- /dist/images/icon_nav_button.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/n7best/n7-react-weui/efb9f4e07a81b9c437c5fdcea2db5a1226194a9b/dist/images/icon_nav_button.png -------------------------------------------------------------------------------- /dist/images/icon_nav_cell.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/n7best/n7-react-weui/efb9f4e07a81b9c437c5fdcea2db5a1226194a9b/dist/images/icon_nav_cell.png -------------------------------------------------------------------------------- /dist/images/icon_nav_dialog.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/n7best/n7-react-weui/efb9f4e07a81b9c437c5fdcea2db5a1226194a9b/dist/images/icon_nav_dialog.png -------------------------------------------------------------------------------- /dist/images/icon_nav_icons.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/n7best/n7-react-weui/efb9f4e07a81b9c437c5fdcea2db5a1226194a9b/dist/images/icon_nav_icons.png -------------------------------------------------------------------------------- /dist/images/icon_nav_msg.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/n7best/n7-react-weui/efb9f4e07a81b9c437c5fdcea2db5a1226194a9b/dist/images/icon_nav_msg.png -------------------------------------------------------------------------------- /dist/images/icon_nav_toast.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/n7best/n7-react-weui/efb9f4e07a81b9c437c5fdcea2db5a1226194a9b/dist/images/icon_nav_toast.png -------------------------------------------------------------------------------- /dist/images/logo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/n7best/n7-react-weui/efb9f4e07a81b9c437c5fdcea2db5a1226194a9b/dist/images/logo.png -------------------------------------------------------------------------------- /dist/images/qrcode.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/n7best/n7-react-weui/efb9f4e07a81b9c437c5fdcea2db5a1226194a9b/dist/images/qrcode.png -------------------------------------------------------------------------------- /dist/images/swipe1.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/n7best/n7-react-weui/efb9f4e07a81b9c437c5fdcea2db5a1226194a9b/dist/images/swipe1.jpg -------------------------------------------------------------------------------- /dist/images/swipe2.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/n7best/n7-react-weui/efb9f4e07a81b9c437c5fdcea2db5a1226194a9b/dist/images/swipe2.jpg -------------------------------------------------------------------------------- /dist/images/swipe3.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/n7best/n7-react-weui/efb9f4e07a81b9c437c5fdcea2db5a1226194a9b/dist/images/swipe3.jpg -------------------------------------------------------------------------------- /dist/images/vcode.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/n7best/n7-react-weui/efb9f4e07a81b9c437c5fdcea2db5a1226194a9b/dist/images/vcode.jpg -------------------------------------------------------------------------------- /dist/index.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | React WeUI 7 | 8 | 9 |
10 | 11 | 12 | -------------------------------------------------------------------------------- /index.js: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/n7best/n7-react-weui/efb9f4e07a81b9c437c5fdcea2db5a1226194a9b/index.js -------------------------------------------------------------------------------- /karma.conf.js: -------------------------------------------------------------------------------- 1 | const webpackConfig = require('./webpack.config.test'); 2 | 3 | module.exports = function (config) { 4 | var configs = { 5 | browsers: ['Chrome'], 6 | singleRun: true, 7 | frameworks: ['mocha'], 8 | files: [ 9 | 'tests.webpack.js' 10 | ], 11 | plugins: [ 12 | 'karma-chrome-launcher', 13 | 'karma-mocha', 14 | 'karma-webpack', 15 | 'karma-sourcemap-loader' 16 | ], 17 | reporters: ['dots'], 18 | preprocessors: {'tests.webpack.js': ['webpack','sourcemap']}, 19 | webpack: webpackConfig, 20 | webpackServer: { 21 | noInfo: true 22 | }, 23 | customLaunchers: { 24 | Chrome_travis_ci: { 25 | base: 'Chrome', 26 | flags: ['--no-sandbox'] 27 | } 28 | }, 29 | colors: true, 30 | logLevel: config.LOG_DEBUG, 31 | client: { 32 | // log console output in our test console 33 | captureConsole: true 34 | }, 35 | 36 | }; 37 | if (process.env.TRAVIS) { 38 | configs.browsers = ['Chrome_travis_ci']; 39 | } 40 | 41 | config.set(configs); 42 | }; -------------------------------------------------------------------------------- /lib/actionsheet/style.less: -------------------------------------------------------------------------------- 1 | @import "../base/fn"; 2 | @bgColor:#ECECEC; 3 | .weui_actionsheet { 4 | position: fixed; 5 | left: 0; 6 | bottom: 0; 7 | transform: translate(0, 100%); 8 | backface-visibility: hidden; 9 | z-index: 2; 10 | width: 100%; 11 | background-color: @pageDefaultBackgroundColor; 12 | //slide up animation 13 | transition: transform .3s; 14 | } 15 | .weui_actionsheet_menu{ 16 | background-color: #FFFFFF; 17 | } 18 | .weui_actionsheet_action { 19 | margin-top: 6px; 20 | background-color: #FFFFFF; 21 | } 22 | .weui_actionsheet_cell { 23 | position: relative; 24 | padding: 10px 0; 25 | text-align: center; 26 | font-size: 18px; 27 | &:before { 28 | .setTopLine(@weuiCellBorderColor); 29 | } 30 | &:active{ 31 | background-color: @bgColor; 32 | } 33 | &:first-child{ 34 | &:before{ 35 | display: none; 36 | } 37 | } 38 | } 39 | 40 | //actionSheet aniamtion 41 | .weui_actionsheet_toggle{ 42 | transform: translate(0, 0); 43 | } -------------------------------------------------------------------------------- /lib/article/__test__/index.spec.js: -------------------------------------------------------------------------------- 1 | 'use strict'; 2 | 3 | var _react = require('react'); 4 | 5 | var _react2 = _interopRequireDefault(_react); 6 | 7 | var _enzyme = require('enzyme'); 8 | 9 | var _index = require('../index'); 10 | 11 | var _index2 = _interopRequireDefault(_index); 12 | 13 | var _chai = require('chai'); 14 | 15 | function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } 16 | 17 | describe('Article', function () { 18 | it('[Shallow]should have default weui_article class', function () { 19 | var wrapper = (0, _enzyme.shallow)(_react2.default.createElement(_index2.default, null)); 20 | (0, _chai.expect)(wrapper.hasClass('weui_article')).to.be.true; 21 | }); 22 | 23 | it('[Shallow]should have custom class', function () { 24 | var wrapper = (0, _enzyme.shallow)(_react2.default.createElement(_index2.default, { className: 'test' })); 25 | (0, _chai.expect)(wrapper.hasClass('weui_article')).to.be.true; 26 | (0, _chai.expect)(wrapper.hasClass('test')).to.be.true; 27 | }); 28 | }); -------------------------------------------------------------------------------- /lib/article/index.js: -------------------------------------------------------------------------------- 1 | 'use strict'; 2 | 3 | Object.defineProperty(exports, "__esModule", { 4 | value: true 5 | }); 6 | 7 | var _react = require('react'); 8 | 9 | var _react2 = _interopRequireDefault(_react); 10 | 11 | var _style = require('./style'); 12 | 13 | var _style2 = _interopRequireDefault(_style); 14 | 15 | var _classnames = require('classnames'); 16 | 17 | var _classnames2 = _interopRequireDefault(_classnames); 18 | 19 | function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } 20 | 21 | var Article = function Article(props) { 22 | var className = (0, _classnames2.default)('weui_article', props.className); 23 | 24 | return _react2.default.createElement( 25 | 'div', 26 | { className: className }, 27 | props.children 28 | ); 29 | }; 30 | 31 | Article.propTypes = { 32 | className: _react2.default.PropTypes.string 33 | }; 34 | 35 | Article.defaultProps = { 36 | className: '' 37 | }; 38 | 39 | exports.default = Article; -------------------------------------------------------------------------------- /lib/article/style.less: -------------------------------------------------------------------------------- 1 | @import "../base/fn"; 2 | 3 | .weui_article { 4 | padding: 20px 15px; 5 | font-size: 15px; 6 | section { 7 | margin-bottom: 1.5em; 8 | } 9 | h1 { 10 | font-size: 17px; 11 | font-weight:400; 12 | margin-bottom: .75em; 13 | } 14 | h2 { 15 | font-size: 16px; 16 | font-weight:400; 17 | margin-bottom: .3em; 18 | } 19 | h3 { 20 | font-weight:400; 21 | font-size: 15px; 22 | } 23 | } -------------------------------------------------------------------------------- /lib/base/fn.less: -------------------------------------------------------------------------------- 1 | // mixin 2 | @import "./mixin/mobile"; 3 | @import "./mixin/setOnepx"; 4 | @import "./mixin/setArrow"; 5 | @import "./mixin/animate"; 6 | 7 | // variable 8 | @import "./variable/global"; 9 | @import "./variable/monokai"; 10 | 11 | 12 | @import "./variable/weui_cell"; 13 | @import "./variable/weui_button"; 14 | @import "./variable/weui_msg"; 15 | @import "./variable/weui_progress"; 16 | 17 | // icon 18 | @import "./icon/weui_font"; 19 | @import "./icon/weui_icon_font"; -------------------------------------------------------------------------------- /lib/base/mixin/animate/animated.less: -------------------------------------------------------------------------------- 1 | body { 2 | -webkit-backface-visibility: hidden; 3 | } 4 | 5 | .animated(@animationDurationTime: 1s; @animationDelayTime: 0s; @animationFillMode: both) { 6 | -webkit-animation-duration: @animationDurationTime; 7 | -moz-animation-duration: @animationDurationTime; 8 | -o-animation-duration: @animationDurationTime; 9 | animation-duration: @animationDurationTime; 10 | -webkit-animation-delay: @animationDelayTime; 11 | -moz-animation-delay: @animationDelayTime; 12 | -o-animation-delay: @animationDelayTime; 13 | animation-delay: @animationDelayTime; 14 | -webkit-animation-fill-mode: @animationFillMode; 15 | -moz-animation-fill-mode: @animationFillMode; 16 | -o-animation-fill-mode: @animationFillMode; 17 | animation-fill-mode: @animationFillMode; 18 | } 19 | -------------------------------------------------------------------------------- /lib/base/mixin/animate/bounce.less: -------------------------------------------------------------------------------- 1 | @-webkit-keyframes bounce { 2 | 0%, 20%, 50%, 80%, 100% {-webkit-transform: translateY(0);} 3 | 40% {-webkit-transform: translateY(-30px);} 4 | 60% {-webkit-transform: translateY(-15px);} 5 | } 6 | 7 | @-moz-keyframes bounce { 8 | 0%, 20%, 50%, 80%, 100% {-moz-transform: translateY(0);} 9 | 40% {-moz-transform: translateY(-30px);} 10 | 60% {-moz-transform: translateY(-15px);} 11 | } 12 | 13 | @-o-keyframes bounce { 14 | 0%, 20%, 50%, 80%, 100% {-o-transform: translateY(0);} 15 | 40% {-o-transform: translateY(-30px);} 16 | 60% {-o-transform: translateY(-15px);} 17 | } 18 | @keyframes bounce { 19 | 0%, 20%, 50%, 80%, 100% {transform: translateY(0);} 20 | 40% {transform: translateY(-30px);} 21 | 60% {transform: translateY(-15px);} 22 | } 23 | 24 | .bounce { 25 | -webkit-animation-name: bounce; 26 | -moz-animation-name: bounce; 27 | -o-animation-name: bounce; 28 | animation-name: bounce; 29 | } -------------------------------------------------------------------------------- /lib/base/mixin/animate/bounceIn.less: -------------------------------------------------------------------------------- 1 | @-webkit-keyframes bounceIn { 2 | 0% { 3 | opacity: 0; 4 | -webkit-transform: scale(.3); 5 | } 6 | 7 | 50% { 8 | opacity: 1; 9 | -webkit-transform: scale(1.05); 10 | } 11 | 12 | 70% { 13 | -webkit-transform: scale(.9); 14 | } 15 | 16 | 100% { 17 | -webkit-transform: scale(1); 18 | } 19 | } 20 | 21 | @-moz-keyframes bounceIn { 22 | 0% { 23 | opacity: 0; 24 | -moz-transform: scale(.3); 25 | } 26 | 27 | 50% { 28 | opacity: 1; 29 | -moz-transform: scale(1.05); 30 | } 31 | 32 | 70% { 33 | -moz-transform: scale(.9); 34 | } 35 | 36 | 100% { 37 | -moz-transform: scale(1); 38 | } 39 | } 40 | 41 | @-o-keyframes bounceIn { 42 | 0% { 43 | opacity: 0; 44 | -o-transform: scale(.3); 45 | } 46 | 47 | 50% { 48 | opacity: 1; 49 | -o-transform: scale(1.05); 50 | } 51 | 52 | 70% { 53 | -o-transform: scale(.9); 54 | } 55 | 56 | 100% { 57 | -o-transform: scale(1); 58 | } 59 | } 60 | 61 | @keyframes bounceIn { 62 | 0% { 63 | opacity: 0; 64 | transform: scale(.3); 65 | } 66 | 67 | 50% { 68 | opacity: 1; 69 | transform: scale(1.05); 70 | } 71 | 72 | 70% { 73 | transform: scale(.9); 74 | } 75 | 76 | 100% { 77 | transform: scale(1); 78 | } 79 | } 80 | 81 | .bounceIn { 82 | -webkit-animation-name: bounceIn; 83 | -moz-animation-name: bounceIn; 84 | -o-animation-name: bounceIn; 85 | animation-name: bounceIn; 86 | } -------------------------------------------------------------------------------- /lib/base/mixin/animate/bounceInUp.less: -------------------------------------------------------------------------------- 1 | @-webkit-keyframes bounceInUp { 2 | 0% { 3 | opacity: 0; 4 | -webkit-transform: translateY(2000px); 5 | } 6 | 7 | 60% { 8 | opacity: 1; 9 | -webkit-transform: translateY(-30px); 10 | } 11 | 12 | 80% { 13 | -webkit-transform: translateY(10px); 14 | } 15 | 16 | 100% { 17 | -webkit-transform: translateY(0); 18 | } 19 | } 20 | @-moz-keyframes bounceInUp { 21 | 0% { 22 | opacity: 0; 23 | -moz-transform: translateY(2000px); 24 | } 25 | 26 | 60% { 27 | opacity: 1; 28 | -moz-transform: translateY(-30px); 29 | } 30 | 31 | 80% { 32 | -moz-transform: translateY(10px); 33 | } 34 | 35 | 100% { 36 | -moz-transform: translateY(0); 37 | } 38 | } 39 | 40 | @-o-keyframes bounceInUp { 41 | 0% { 42 | opacity: 0; 43 | -o-transform: translateY(2000px); 44 | } 45 | 46 | 60% { 47 | opacity: 1; 48 | -o-transform: translateY(-30px); 49 | } 50 | 51 | 80% { 52 | -o-transform: translateY(10px); 53 | } 54 | 55 | 100% { 56 | -o-transform: translateY(0); 57 | } 58 | } 59 | 60 | @keyframes bounceInUp { 61 | 0% { 62 | opacity: 0; 63 | transform: translateY(2000px); 64 | } 65 | 66 | 60% { 67 | opacity: 1; 68 | transform: translateY(-30px); 69 | } 70 | 71 | 80% { 72 | transform: translateY(10px); 73 | } 74 | 75 | 100% { 76 | transform: translateY(0); 77 | } 78 | } 79 | 80 | .bounceInUp { 81 | -webkit-animation-name: bounceInUp; 82 | -moz-animation-name: bounceInUp; 83 | -o-animation-name: bounceInUp; 84 | animation-name: bounceInUp; 85 | } -------------------------------------------------------------------------------- /lib/base/mixin/animate/bounceOut.less: -------------------------------------------------------------------------------- 1 | @-webkit-keyframes bounceOut { 2 | 0% { 3 | -webkit-transform: scale(1); 4 | } 5 | 6 | 25% { 7 | -webkit-transform: scale(.95); 8 | } 9 | 10 | 50% { 11 | opacity: 1; 12 | -webkit-transform: scale(1.1); 13 | } 14 | 15 | 100% { 16 | opacity: 0; 17 | -webkit-transform: scale(.3); 18 | } 19 | } 20 | 21 | @-moz-keyframes bounceOut { 22 | 0% { 23 | -moz-transform: scale(1); 24 | } 25 | 26 | 25% { 27 | -moz-transform: scale(.95); 28 | } 29 | 30 | 50% { 31 | opacity: 1; 32 | -moz-transform: scale(1.1); 33 | } 34 | 35 | 100% { 36 | opacity: 0; 37 | -moz-transform: scale(.3); 38 | } 39 | } 40 | 41 | @-o-keyframes bounceOut { 42 | 0% { 43 | -o-transform: scale(1); 44 | } 45 | 46 | 25% { 47 | -o-transform: scale(.95); 48 | } 49 | 50 | 50% { 51 | opacity: 1; 52 | -o-transform: scale(1.1); 53 | } 54 | 55 | 100% { 56 | opacity: 0; 57 | -o-transform: scale(.3); 58 | } 59 | } 60 | 61 | @keyframes bounceOut { 62 | 0% { 63 | transform: scale(1); 64 | } 65 | 66 | 25% { 67 | transform: scale(.95); 68 | } 69 | 70 | 50% { 71 | opacity: 1; 72 | transform: scale(1.1); 73 | } 74 | 75 | 100% { 76 | opacity: 0; 77 | transform: scale(.3); 78 | } 79 | } 80 | 81 | .bounceOut { 82 | -webkit-animation-name: bounceOut; 83 | -moz-animation-name: bounceOut; 84 | -o-animation-name: bounceOut; 85 | animation-name: bounceOut; 86 | } -------------------------------------------------------------------------------- /lib/base/mixin/animate/bounceOutDown.less: -------------------------------------------------------------------------------- 1 | @-webkit-keyframes bounceOutDown { 2 | 0% { 3 | -webkit-transform: translateY(0); 4 | } 5 | 6 | 20% { 7 | opacity: 1; 8 | -webkit-transform: translateY(-20px); 9 | } 10 | 11 | 100% { 12 | opacity: 0; 13 | -webkit-transform: translateY(2000px); 14 | } 15 | } 16 | 17 | @-moz-keyframes bounceOutDown { 18 | 0% { 19 | -moz-transform: translateY(0); 20 | } 21 | 22 | 20% { 23 | opacity: 1; 24 | -moz-transform: translateY(-20px); 25 | } 26 | 27 | 100% { 28 | opacity: 0; 29 | -moz-transform: translateY(2000px); 30 | } 31 | } 32 | 33 | @-o-keyframes bounceOutDown { 34 | 0% { 35 | -o-transform: translateY(0); 36 | } 37 | 38 | 20% { 39 | opacity: 1; 40 | -o-transform: translateY(-20px); 41 | } 42 | 43 | 100% { 44 | opacity: 0; 45 | -o-transform: translateY(2000px); 46 | } 47 | } 48 | 49 | @keyframes bounceOutDown { 50 | 0% { 51 | transform: translateY(0); 52 | } 53 | 54 | 20% { 55 | opacity: 1; 56 | transform: translateY(-20px); 57 | } 58 | 59 | 100% { 60 | opacity: 0; 61 | transform: translateY(2000px); 62 | } 63 | } 64 | 65 | .bounceOutDown { 66 | -webkit-animation-name: bounceOutDown; 67 | -moz-animation-name: bounceOutDown; 68 | -o-animation-name: bounceOutDown; 69 | animation-name: bounceOutDown; 70 | } -------------------------------------------------------------------------------- /lib/base/mixin/animate/bounceOutLeft.less: -------------------------------------------------------------------------------- 1 | @-webkit-keyframes bounceOutLeft { 2 | 0% { 3 | -webkit-transform: translateX(0); 4 | } 5 | 6 | 20% { 7 | opacity: 1; 8 | -webkit-transform: translateX(20px); 9 | } 10 | 11 | 100% { 12 | opacity: 0; 13 | -webkit-transform: translateX(-2000px); 14 | } 15 | } 16 | 17 | @-moz-keyframes bounceOutLeft { 18 | 0% { 19 | -moz-transform: translateX(0); 20 | } 21 | 22 | 20% { 23 | opacity: 1; 24 | -moz-transform: translateX(20px); 25 | } 26 | 27 | 100% { 28 | opacity: 0; 29 | -moz-transform: translateX(-2000px); 30 | } 31 | } 32 | 33 | @-o-keyframes bounceOutLeft { 34 | 0% { 35 | -o-transform: translateX(0); 36 | } 37 | 38 | 20% { 39 | opacity: 1; 40 | -o-transform: translateX(20px); 41 | } 42 | 43 | 100% { 44 | opacity: 0; 45 | -o-transform: translateX(-2000px); 46 | } 47 | } 48 | 49 | @keyframes bounceOutLeft { 50 | 0% { 51 | transform: translateX(0); 52 | } 53 | 54 | 20% { 55 | opacity: 1; 56 | transform: translateX(20px); 57 | } 58 | 59 | 100% { 60 | opacity: 0; 61 | transform: translateX(-2000px); 62 | } 63 | } 64 | 65 | .bounceOutLeft { 66 | -webkit-animation-name: bounceOutLeft; 67 | -moz-animation-name: bounceOutLeft; 68 | -o-animation-name: bounceOutLeft; 69 | animation-name: bounceOutLeft; 70 | } -------------------------------------------------------------------------------- /lib/base/mixin/animate/bounceOutRight.less: -------------------------------------------------------------------------------- 1 | @-webkit-keyframes bounceOutRight { 2 | 0% { 3 | -webkit-transform: translateX(0); 4 | } 5 | 6 | 20% { 7 | opacity: 1; 8 | -webkit-transform: translateX(-20px); 9 | } 10 | 11 | 100% { 12 | opacity: 0; 13 | -webkit-transform: translateX(2000px); 14 | } 15 | } 16 | 17 | @-moz-keyframes bounceOutRight { 18 | 0% { 19 | -moz-transform: translateX(0); 20 | } 21 | 22 | 20% { 23 | opacity: 1; 24 | -moz-transform: translateX(-20px); 25 | } 26 | 27 | 100% { 28 | opacity: 0; 29 | -moz-transform: translateX(2000px); 30 | } 31 | } 32 | 33 | @-o-keyframes bounceOutRight { 34 | 0% { 35 | -o-transform: translateX(0); 36 | } 37 | 38 | 20% { 39 | opacity: 1; 40 | -o-transform: translateX(-20px); 41 | } 42 | 43 | 100% { 44 | opacity: 0; 45 | -o-transform: translateX(2000px); 46 | } 47 | } 48 | 49 | @keyframes bounceOutRight { 50 | 0% { 51 | transform: translateX(0); 52 | } 53 | 54 | 20% { 55 | opacity: 1; 56 | transform: translateX(-20px); 57 | } 58 | 59 | 100% { 60 | opacity: 0; 61 | transform: translateX(2000px); 62 | } 63 | } 64 | 65 | .bounceOutRight { 66 | -webkit-animation-name: bounceOutRight; 67 | -moz-animation-name: bounceOutRight; 68 | -o-animation-name: bounceOutRight; 69 | animation-name: bounceOutRight; 70 | } -------------------------------------------------------------------------------- /lib/base/mixin/animate/bounceOutUp.less: -------------------------------------------------------------------------------- 1 | @-webkit-keyframes bounceOutUp { 2 | 0% { 3 | -webkit-transform: translateY(0); 4 | } 5 | 6 | 20% { 7 | opacity: 1; 8 | -webkit-transform: translateY(20px); 9 | } 10 | 11 | 100% { 12 | opacity: 0; 13 | -webkit-transform: translateY(-2000px); 14 | } 15 | } 16 | 17 | @-moz-keyframes bounceOutUp { 18 | 0% { 19 | -moz-transform: translateY(0); 20 | } 21 | 22 | 20% { 23 | opacity: 1; 24 | -moz-transform: translateY(20px); 25 | } 26 | 27 | 100% { 28 | opacity: 0; 29 | -moz-transform: translateY(-2000px); 30 | } 31 | } 32 | 33 | @-o-keyframes bounceOutUp { 34 | 0% { 35 | -o-transform: translateY(0); 36 | } 37 | 38 | 20% { 39 | opacity: 1; 40 | -o-transform: translateY(20px); 41 | } 42 | 43 | 100% { 44 | opacity: 0; 45 | -o-transform: translateY(-2000px); 46 | } 47 | } 48 | 49 | @keyframes bounceOutUp { 50 | 0% { 51 | transform: translateY(0); 52 | } 53 | 54 | 20% { 55 | opacity: 1; 56 | transform: translateY(20px); 57 | } 58 | 59 | 100% { 60 | opacity: 0; 61 | transform: translateY(-2000px); 62 | } 63 | } 64 | 65 | .bounceOutUp { 66 | -webkit-animation-name: bounceOutUp; 67 | -moz-animation-name: bounceOutUp; 68 | -o-animation-name: bounceOutUp; 69 | animation-name: bounceOutUp; 70 | } -------------------------------------------------------------------------------- /lib/base/mixin/animate/fadeIn.less: -------------------------------------------------------------------------------- 1 | @-webkit-keyframes fadeIn { 2 | 0% {opacity: 0;} 3 | 100% {opacity: 1;} 4 | } 5 | 6 | @-moz-keyframes fadeIn { 7 | 0% {opacity: 0;} 8 | 100% {opacity: 1;} 9 | } 10 | 11 | @-o-keyframes fadeIn { 12 | 0% {opacity: 0;} 13 | 100% {opacity: 1;} 14 | } 15 | 16 | @keyframes fadeIn { 17 | 0% {opacity: 0;} 18 | 100% {opacity: 1;} 19 | } 20 | 21 | .fadeIn { 22 | -webkit-animation-name: fadeIn; 23 | -moz-animation-name: fadeIn; 24 | -o-animation-name: fadeIn; 25 | animation-name: fadeIn; 26 | } -------------------------------------------------------------------------------- /lib/base/mixin/animate/fadeInDown.less: -------------------------------------------------------------------------------- 1 | @-webkit-keyframes fadeInDown { 2 | 0% { 3 | opacity: 0; 4 | -webkit-transform: translateY(-20px); 5 | } 6 | 7 | 100% { 8 | opacity: 1; 9 | -webkit-transform: translateY(0); 10 | } 11 | } 12 | 13 | @-moz-keyframes fadeInDown { 14 | 0% { 15 | opacity: 0; 16 | -moz-transform: translateY(-20px); 17 | } 18 | 19 | 100% { 20 | opacity: 1; 21 | -moz-transform: translateY(0); 22 | } 23 | } 24 | 25 | @-o-keyframes fadeInDown { 26 | 0% { 27 | opacity: 0; 28 | -ms-transform: translateY(-20px); 29 | } 30 | 31 | 100% { 32 | opacity: 1; 33 | -ms-transform: translateY(0); 34 | } 35 | } 36 | 37 | @keyframes fadeInDown { 38 | 0% { 39 | opacity: 0; 40 | transform: translateY(-20px); 41 | } 42 | 43 | 100% { 44 | opacity: 1; 45 | transform: translateY(0); 46 | } 47 | } 48 | 49 | .fadeInDown { 50 | -webkit-animation-name: fadeInDown; 51 | -moz-animation-name: fadeInDown; 52 | -o-animation-name: fadeInDown; 53 | animation-name: fadeInDown; 54 | } -------------------------------------------------------------------------------- /lib/base/mixin/animate/fadeInDownBig.less: -------------------------------------------------------------------------------- 1 | @-webkit-keyframes fadeInDownBig { 2 | 0% { 3 | opacity: 0; 4 | -webkit-transform: translateY(-2000px); 5 | } 6 | 7 | 100% { 8 | opacity: 1; 9 | -webkit-transform: translateY(0); 10 | } 11 | } 12 | 13 | @-moz-keyframes fadeInDownBig { 14 | 0% { 15 | opacity: 0; 16 | -moz-transform: translateY(-2000px); 17 | } 18 | 19 | 100% { 20 | opacity: 1; 21 | -moz-transform: translateY(0); 22 | } 23 | } 24 | 25 | @-o-keyframes fadeInDownBig { 26 | 0% { 27 | opacity: 0; 28 | -o-transform: translateY(-2000px); 29 | } 30 | 31 | 100% { 32 | opacity: 1; 33 | -o-transform: translateY(0); 34 | } 35 | } 36 | 37 | @keyframes fadeInDownBig { 38 | 0% { 39 | opacity: 0; 40 | transform: translateY(-2000px); 41 | } 42 | 43 | 100% { 44 | opacity: 1; 45 | transform: translateY(0); 46 | } 47 | } 48 | 49 | .fadeInDownBig { 50 | -webkit-animation-name: fadeInDownBig; 51 | -moz-animation-name: fadeInDownBig; 52 | -o-animation-name: fadeInDownBig; 53 | animation-name: fadeInDownBig; 54 | } -------------------------------------------------------------------------------- /lib/base/mixin/animate/fadeInLeft.less: -------------------------------------------------------------------------------- 1 | @-webkit-keyframes fadeInLeft { 2 | 0% { 3 | opacity: 0; 4 | -webkit-transform: translateX(-20px); 5 | } 6 | 7 | 100% { 8 | opacity: 1; 9 | -webkit-transform: translateX(0); 10 | } 11 | } 12 | 13 | @-moz-keyframes fadeInLeft { 14 | 0% { 15 | opacity: 0; 16 | -moz-transform: translateX(-20px); 17 | } 18 | 19 | 100% { 20 | opacity: 1; 21 | -moz-transform: translateX(0); 22 | } 23 | } 24 | 25 | @-o-keyframes fadeInLeft { 26 | 0% { 27 | opacity: 0; 28 | -o-transform: translateX(-20px); 29 | } 30 | 31 | 100% { 32 | opacity: 1; 33 | -o-transform: translateX(0); 34 | } 35 | } 36 | 37 | @keyframes fadeInLeft { 38 | 0% { 39 | opacity: 0; 40 | transform: translateX(-20px); 41 | } 42 | 43 | 100% { 44 | opacity: 1; 45 | transform: translateX(0); 46 | } 47 | } 48 | 49 | .fadeInLeft { 50 | -webkit-animation-name: fadeInLeft; 51 | -moz-animation-name: fadeInLeft; 52 | -o-animation-name: fadeInLeft; 53 | animation-name: fadeInLeft; 54 | } -------------------------------------------------------------------------------- /lib/base/mixin/animate/fadeInLeftBig.less: -------------------------------------------------------------------------------- 1 | @-webkit-keyframes fadeInLeftBig { 2 | 0% { 3 | opacity: 0; 4 | -webkit-transform: translateX(-2000px); 5 | } 6 | 7 | 100% { 8 | opacity: 1; 9 | -webkit-transform: translateX(0); 10 | } 11 | } 12 | @-moz-keyframes fadeInLeftBig { 13 | 0% { 14 | opacity: 0; 15 | -moz-transform: translateX(-2000px); 16 | } 17 | 18 | 100% { 19 | opacity: 1; 20 | -moz-transform: translateX(0); 21 | } 22 | } 23 | @-o-keyframes fadeInLeftBig { 24 | 0% { 25 | opacity: 0; 26 | -o-transform: translateX(-2000px); 27 | } 28 | 29 | 100% { 30 | opacity: 1; 31 | -o-transform: translateX(0); 32 | } 33 | } 34 | @keyframes fadeInLeftBig { 35 | 0% { 36 | opacity: 0; 37 | transform: translateX(-2000px); 38 | } 39 | 40 | 100% { 41 | opacity: 1; 42 | transform: translateX(0); 43 | } 44 | } 45 | 46 | .fadeInLeftBig { 47 | -webkit-animation-name: fadeInLeftBig; 48 | -moz-animation-name: fadeInLeftBig; 49 | -o-animation-name: fadeInLeftBig; 50 | animation-name: fadeInLeftBig; 51 | } -------------------------------------------------------------------------------- /lib/base/mixin/animate/fadeInRight.less: -------------------------------------------------------------------------------- 1 | @-webkit-keyframes fadeInRight { 2 | 0% { 3 | opacity: 0; 4 | -webkit-transform: translateX(20px); 5 | } 6 | 7 | 100% { 8 | opacity: 1; 9 | -webkit-transform: translateX(0); 10 | } 11 | } 12 | 13 | @-moz-keyframes fadeInRight { 14 | 0% { 15 | opacity: 0; 16 | -moz-transform: translateX(20px); 17 | } 18 | 19 | 100% { 20 | opacity: 1; 21 | -moz-transform: translateX(0); 22 | } 23 | } 24 | 25 | @-o-keyframes fadeInRight { 26 | 0% { 27 | opacity: 0; 28 | -o-transform: translateX(20px); 29 | } 30 | 31 | 100% { 32 | opacity: 1; 33 | -o-transform: translateX(0); 34 | } 35 | } 36 | 37 | @keyframes fadeInRight { 38 | 0% { 39 | opacity: 0; 40 | transform: translateX(20px); 41 | } 42 | 43 | 100% { 44 | opacity: 1; 45 | transform: translateX(0); 46 | } 47 | } 48 | 49 | .fadeInRight { 50 | -webkit-animation-name: fadeInRight; 51 | -moz-animation-name: fadeInRight; 52 | -o-animation-name: fadeInRight; 53 | animation-name: fadeInRight; 54 | } -------------------------------------------------------------------------------- /lib/base/mixin/animate/fadeInRightBig.less: -------------------------------------------------------------------------------- 1 | @-webkit-keyframes fadeInRightBig { 2 | 0% { 3 | opacity: 0; 4 | -webkit-transform: translateX(2000px); 5 | } 6 | 7 | 100% { 8 | opacity: 1; 9 | -webkit-transform: translateX(0); 10 | } 11 | } 12 | 13 | @-moz-keyframes fadeInRightBig { 14 | 0% { 15 | opacity: 0; 16 | -moz-transform: translateX(2000px); 17 | } 18 | 19 | 100% { 20 | opacity: 1; 21 | -moz-transform: translateX(0); 22 | } 23 | } 24 | 25 | @-o-keyframes fadeInRightBig { 26 | 0% { 27 | opacity: 0; 28 | -o-transform: translateX(2000px); 29 | } 30 | 31 | 100% { 32 | opacity: 1; 33 | -o-transform: translateX(0); 34 | } 35 | } 36 | 37 | @keyframes fadeInRightBig { 38 | 0% { 39 | opacity: 0; 40 | transform: translateX(2000px); 41 | } 42 | 43 | 100% { 44 | opacity: 1; 45 | transform: translateX(0); 46 | } 47 | } 48 | 49 | .fadeInRightBig { 50 | -webkit-animation-name: fadeInRightBig; 51 | -moz-animation-name: fadeInRightBig; 52 | -o-animation-name: fadeInRightBig; 53 | animation-name: fadeInRightBig; 54 | } -------------------------------------------------------------------------------- /lib/base/mixin/animate/fadeInUp.less: -------------------------------------------------------------------------------- 1 | @-webkit-keyframes fadeInUp { 2 | 0% { 3 | opacity: 0; 4 | -webkit-transform: translateY(20px); 5 | } 6 | 7 | 100% { 8 | opacity: 1; 9 | -webkit-transform: translateY(0); 10 | } 11 | } 12 | 13 | @-moz-keyframes fadeInUp { 14 | 0% { 15 | opacity: 0; 16 | -moz-transform: translateY(20px); 17 | } 18 | 19 | 100% { 20 | opacity: 1; 21 | -moz-transform: translateY(0); 22 | } 23 | } 24 | 25 | @-o-keyframes fadeInUp { 26 | 0% { 27 | opacity: 0; 28 | -o-transform: translateY(20px); 29 | } 30 | 31 | 100% { 32 | opacity: 1; 33 | -o-transform: translateY(0); 34 | } 35 | } 36 | 37 | @keyframes fadeInUp { 38 | 0% { 39 | opacity: 0; 40 | transform: translateY(20px); 41 | } 42 | 43 | 100% { 44 | opacity: 1; 45 | transform: translateY(0); 46 | } 47 | } 48 | 49 | .fadeInUp { 50 | -webkit-animation-name: fadeInUp; 51 | -moz-animation-name: fadeInUp; 52 | -o-animation-name: fadeInUp; 53 | animation-name: fadeInUp; 54 | } -------------------------------------------------------------------------------- /lib/base/mixin/animate/fadeInUpBig.less: -------------------------------------------------------------------------------- 1 | @-webkit-keyframes fadeInUpBig { 2 | 0% { 3 | opacity: 0; 4 | -webkit-transform: translateY(2000px); 5 | } 6 | 7 | 100% { 8 | opacity: 1; 9 | -webkit-transform: translateY(0); 10 | } 11 | } 12 | 13 | @-moz-keyframes fadeInUpBig { 14 | 0% { 15 | opacity: 0; 16 | -moz-transform: translateY(2000px); 17 | } 18 | 19 | 100% { 20 | opacity: 1; 21 | -moz-transform: translateY(0); 22 | } 23 | } 24 | 25 | @-o-keyframes fadeInUpBig { 26 | 0% { 27 | opacity: 0; 28 | -o-transform: translateY(2000px); 29 | } 30 | 31 | 100% { 32 | opacity: 1; 33 | -o-transform: translateY(0); 34 | } 35 | } 36 | 37 | @keyframes fadeInUpBig { 38 | 0% { 39 | opacity: 0; 40 | transform: translateY(2000px); 41 | } 42 | 43 | 100% { 44 | opacity: 1; 45 | transform: translateY(0); 46 | } 47 | } 48 | 49 | .fadeInUpBig { 50 | -webkit-animation-name: fadeInUpBig; 51 | -moz-animation-name: fadeInUpBig; 52 | -o-animation-name: fadeInUpBig; 53 | animation-name: fadeInUpBig; 54 | } -------------------------------------------------------------------------------- /lib/base/mixin/animate/fadeOut.less: -------------------------------------------------------------------------------- 1 | @-webkit-keyframes fadeOut { 2 | 0% {opacity: 1;} 3 | 100% {opacity: 0;} 4 | } 5 | 6 | @-moz-keyframes fadeOut { 7 | 0% {opacity: 1;} 8 | 100% {opacity: 0;} 9 | } 10 | 11 | @-o-keyframes fadeOut { 12 | 0% {opacity: 1;} 13 | 100% {opacity: 0;} 14 | } 15 | 16 | @keyframes fadeOut { 17 | 0% {opacity: 1;} 18 | 100% {opacity: 0;} 19 | } 20 | 21 | .fadeOut { 22 | -webkit-animation-name: fadeOut; 23 | -moz-animation-name: fadeOut; 24 | -o-animation-name: fadeOut; 25 | animation-name: fadeOut; 26 | } -------------------------------------------------------------------------------- /lib/base/mixin/animate/fadeOutDown.less: -------------------------------------------------------------------------------- 1 | @-webkit-keyframes fadeOutDown { 2 | 0% { 3 | opacity: 1; 4 | -webkit-transform: translateY(0); 5 | } 6 | 7 | 100% { 8 | opacity: 0; 9 | -webkit-transform: translateY(20px); 10 | } 11 | } 12 | 13 | @-moz-keyframes fadeOutDown { 14 | 0% { 15 | opacity: 1; 16 | -moz-transform: translateY(0); 17 | } 18 | 19 | 100% { 20 | opacity: 0; 21 | -moz-transform: translateY(20px); 22 | } 23 | } 24 | 25 | @-o-keyframes fadeOutDown { 26 | 0% { 27 | opacity: 1; 28 | -o-transform: translateY(0); 29 | } 30 | 31 | 100% { 32 | opacity: 0; 33 | -o-transform: translateY(20px); 34 | } 35 | } 36 | 37 | @keyframes fadeOutDown { 38 | 0% { 39 | opacity: 1; 40 | transform: translateY(0); 41 | } 42 | 43 | 100% { 44 | opacity: 0; 45 | transform: translateY(20px); 46 | } 47 | } 48 | 49 | .fadeOutDown { 50 | -webkit-animation-name: fadeOutDown; 51 | -moz-animation-name: fadeOutDown; 52 | -o-animation-name: fadeOutDown; 53 | animation-name: fadeOutDown; 54 | } -------------------------------------------------------------------------------- /lib/base/mixin/animate/fadeOutDownBig.less: -------------------------------------------------------------------------------- 1 | @-webkit-keyframes fadeOutDownBig { 2 | 0% { 3 | opacity: 1; 4 | -webkit-transform: translateY(0); 5 | } 6 | 7 | 100% { 8 | opacity: 0; 9 | -webkit-transform: translateY(2000px); 10 | } 11 | } 12 | 13 | @-moz-keyframes fadeOutDownBig { 14 | 0% { 15 | opacity: 1; 16 | -moz-transform: translateY(0); 17 | } 18 | 19 | 100% { 20 | opacity: 0; 21 | -moz-transform: translateY(2000px); 22 | } 23 | } 24 | 25 | @-o-keyframes fadeOutDownBig { 26 | 0% { 27 | opacity: 1; 28 | -o-transform: translateY(0); 29 | } 30 | 31 | 100% { 32 | opacity: 0; 33 | -o-transform: translateY(2000px); 34 | } 35 | } 36 | 37 | @keyframes fadeOutDownBig { 38 | 0% { 39 | opacity: 1; 40 | transform: translateY(0); 41 | } 42 | 43 | 100% { 44 | opacity: 0; 45 | transform: translateY(2000px); 46 | } 47 | } 48 | 49 | .fadeOutDownBig { 50 | -webkit-animation-name: fadeOutDownBig; 51 | -moz-animation-name: fadeOutDownBig; 52 | -o-animation-name: fadeOutDownBig; 53 | animation-name: fadeOutDownBig; 54 | } -------------------------------------------------------------------------------- /lib/base/mixin/animate/fadeOutLeft.less: -------------------------------------------------------------------------------- 1 | @-webkit-keyframes fadeOutLeft { 2 | 0% { 3 | opacity: 1; 4 | -webkit-transform: translateX(0); 5 | } 6 | 7 | 100% { 8 | opacity: 0; 9 | -webkit-transform: translateX(-20px); 10 | } 11 | } 12 | 13 | @-moz-keyframes fadeOutLeft { 14 | 0% { 15 | opacity: 1; 16 | -moz-transform: translateX(0); 17 | } 18 | 19 | 100% { 20 | opacity: 0; 21 | -moz-transform: translateX(-20px); 22 | } 23 | } 24 | 25 | @-o-keyframes fadeOutLeft { 26 | 0% { 27 | opacity: 1; 28 | -o-transform: translateX(0); 29 | } 30 | 31 | 100% { 32 | opacity: 0; 33 | -o-transform: translateX(-20px); 34 | } 35 | } 36 | 37 | @keyframes fadeOutLeft { 38 | 0% { 39 | opacity: 1; 40 | transform: translateX(0); 41 | } 42 | 43 | 100% { 44 | opacity: 0; 45 | transform: translateX(-20px); 46 | } 47 | } 48 | 49 | .fadeOutLeft { 50 | -webkit-animation-name: fadeOutLeft; 51 | -moz-animation-name: fadeOutLeft; 52 | -o-animation-name: fadeOutLeft; 53 | animation-name: fadeOutLeft; 54 | } -------------------------------------------------------------------------------- /lib/base/mixin/animate/fadeOutLeftBig.less: -------------------------------------------------------------------------------- 1 | @-webkit-keyframes fadeOutLeftBig { 2 | 0% { 3 | opacity: 1; 4 | -webkit-transform: translateX(0); 5 | } 6 | 7 | 100% { 8 | opacity: 0; 9 | -webkit-transform: translateX(-2000px); 10 | } 11 | } 12 | 13 | @-moz-keyframes fadeOutLeftBig { 14 | 0% { 15 | opacity: 1; 16 | -moz-transform: translateX(0); 17 | } 18 | 19 | 100% { 20 | opacity: 0; 21 | -moz-transform: translateX(-2000px); 22 | } 23 | } 24 | 25 | @-o-keyframes fadeOutLeftBig { 26 | 0% { 27 | opacity: 1; 28 | -o-transform: translateX(0); 29 | } 30 | 31 | 100% { 32 | opacity: 0; 33 | -o-transform: translateX(-2000px); 34 | } 35 | } 36 | 37 | @keyframes fadeOutLeftBig { 38 | 0% { 39 | opacity: 1; 40 | transform: translateX(0); 41 | } 42 | 43 | 100% { 44 | opacity: 0; 45 | transform: translateX(-2000px); 46 | } 47 | } 48 | 49 | .fadeOutLeftBig { 50 | -webkit-animation-name: fadeOutLeftBig; 51 | -moz-animation-name: fadeOutLeftBig; 52 | -o-animation-name: fadeOutLeftBig; 53 | animation-name: fadeOutLeftBig; 54 | } -------------------------------------------------------------------------------- /lib/base/mixin/animate/fadeOutRight.less: -------------------------------------------------------------------------------- 1 | @-webkit-keyframes fadeOutRight { 2 | 0% { 3 | opacity: 1; 4 | -webkit-transform: translateX(0); 5 | } 6 | 7 | 100% { 8 | opacity: 0; 9 | -webkit-transform: translateX(20px); 10 | } 11 | } 12 | 13 | @-moz-keyframes fadeOutRight { 14 | 0% { 15 | opacity: 1; 16 | -moz-transform: translateX(0); 17 | } 18 | 19 | 100% { 20 | opacity: 0; 21 | -moz-transform: translateX(20px); 22 | } 23 | } 24 | 25 | @-o-keyframes fadeOutRight { 26 | 0% { 27 | opacity: 1; 28 | -o-transform: translateX(0); 29 | } 30 | 31 | 100% { 32 | opacity: 0; 33 | -o-transform: translateX(20px); 34 | } 35 | } 36 | 37 | @keyframes fadeOutRight { 38 | 0% { 39 | opacity: 1; 40 | transform: translateX(0); 41 | } 42 | 43 | 100% { 44 | opacity: 0; 45 | transform: translateX(20px); 46 | } 47 | } 48 | 49 | .fadeOutRight { 50 | -webkit-animation-name: fadeOutRight; 51 | -moz-animation-name: fadeOutRight; 52 | -o-animation-name: fadeOutRight; 53 | animation-name: fadeOutRight; 54 | } -------------------------------------------------------------------------------- /lib/base/mixin/animate/fadeOutRightBig.less: -------------------------------------------------------------------------------- 1 | @-webkit-keyframes fadeOutRightBig { 2 | 0% { 3 | opacity: 1; 4 | -webkit-transform: translateX(0); 5 | } 6 | 7 | 100% { 8 | opacity: 0; 9 | -webkit-transform: translateX(2000px); 10 | } 11 | } 12 | @-moz-keyframes fadeOutRightBig { 13 | 0% { 14 | opacity: 1; 15 | -moz-transform: translateX(0); 16 | } 17 | 18 | 100% { 19 | opacity: 0; 20 | -moz-transform: translateX(2000px); 21 | } 22 | } 23 | @-o-keyframes fadeOutRightBig { 24 | 0% { 25 | opacity: 1; 26 | -o-transform: translateX(0); 27 | } 28 | 29 | 100% { 30 | opacity: 0; 31 | -o-transform: translateX(2000px); 32 | } 33 | } 34 | @keyframes fadeOutRightBig { 35 | 0% { 36 | opacity: 1; 37 | transform: translateX(0); 38 | } 39 | 40 | 100% { 41 | opacity: 0; 42 | transform: translateX(2000px); 43 | } 44 | } 45 | 46 | .fadeOutRightBig { 47 | -webkit-animation-name: fadeOutRightBig; 48 | -moz-animation-name: fadeOutRightBig; 49 | -o-animation-name: fadeOutRightBig; 50 | animation-name: fadeOutRightBig; 51 | } -------------------------------------------------------------------------------- /lib/base/mixin/animate/fadeOutUp.less: -------------------------------------------------------------------------------- 1 | @-webkit-keyframes fadeOutUp { 2 | 0% { 3 | opacity: 1; 4 | -webkit-transform: translateY(0); 5 | } 6 | 7 | 100% { 8 | opacity: 0; 9 | -webkit-transform: translateY(-20px); 10 | } 11 | } 12 | @-moz-keyframes fadeOutUp { 13 | 0% { 14 | opacity: 1; 15 | -moz-transform: translateY(0); 16 | } 17 | 18 | 100% { 19 | opacity: 0; 20 | -moz-transform: translateY(-20px); 21 | } 22 | } 23 | @-o-keyframes fadeOutUp { 24 | 0% { 25 | opacity: 1; 26 | -o-transform: translateY(0); 27 | } 28 | 29 | 100% { 30 | opacity: 0; 31 | -o-transform: translateY(-20px); 32 | } 33 | } 34 | @keyframes fadeOutUp { 35 | 0% { 36 | opacity: 1; 37 | transform: translateY(0); 38 | } 39 | 40 | 100% { 41 | opacity: 0; 42 | transform: translateY(-20px); 43 | } 44 | } 45 | 46 | .fadeOutUp { 47 | -webkit-animation-name: fadeOutUp; 48 | -moz-animation-name: fadeOutUp; 49 | -o-animation-name: fadeOutUp; 50 | animation-name: fadeOutUp; 51 | } -------------------------------------------------------------------------------- /lib/base/mixin/animate/fadeOutUpBig.less: -------------------------------------------------------------------------------- 1 | @-webkit-keyframes fadeOutUpBig { 2 | 0% { 3 | opacity: 1; 4 | -webkit-transform: translateY(0); 5 | } 6 | 7 | 100% { 8 | opacity: 0; 9 | -webkit-transform: translateY(-2000px); 10 | } 11 | } 12 | 13 | @-moz-keyframes fadeOutUpBig { 14 | 0% { 15 | opacity: 1; 16 | -moz-transform: translateY(0); 17 | } 18 | 19 | 100% { 20 | opacity: 0; 21 | -moz-transform: translateY(-2000px); 22 | } 23 | } 24 | 25 | @-o-keyframes fadeOutUpBig { 26 | 0% { 27 | opacity: 1; 28 | -o-transform: translateY(0); 29 | } 30 | 31 | 100% { 32 | opacity: 0; 33 | -o-transform: translateY(-2000px); 34 | } 35 | } 36 | 37 | @keyframes fadeOutUpBig { 38 | 0% { 39 | opacity: 1; 40 | transform: translateY(0); 41 | } 42 | 43 | 100% { 44 | opacity: 0; 45 | transform: translateY(-2000px); 46 | } 47 | } 48 | 49 | .fadeOutUpBig { 50 | -webkit-animation-name: fadeOutUpBig; 51 | -moz-animation-name: fadeOutUpBig; 52 | -o-animation-name: fadeOutUpBig; 53 | animation-name: fadeOutUpBig; 54 | } -------------------------------------------------------------------------------- /lib/base/mixin/animate/flash.less: -------------------------------------------------------------------------------- 1 | @-webkit-keyframes flash { 2 | 0%, 50%, 100% {opacity: 1;} 3 | 25%, 75% {opacity: 0;} 4 | } 5 | 6 | @-moz-keyframes flash { 7 | 0%, 50%, 100% {opacity: 1;} 8 | 25%, 75% {opacity: 0;} 9 | } 10 | 11 | @-o-keyframes flash { 12 | 0%, 50%, 100% {opacity: 1;} 13 | 25%, 75% {opacity: 0;} 14 | } 15 | 16 | @keyframes flash { 17 | 0%, 50%, 100% {opacity: 1;} 18 | 25%, 75% {opacity: 0;} 19 | } 20 | 21 | .flash { 22 | -webkit-animation-name: flash; 23 | -moz-animation-name: flash; 24 | -o-animation-name: flash; 25 | animation-name: flash; 26 | } -------------------------------------------------------------------------------- /lib/base/mixin/animate/flipOutX.less: -------------------------------------------------------------------------------- 1 | @-webkit-keyframes flipOutX { 2 | 0% { 3 | -webkit-transform: perspective(400px) rotateX(0deg); 4 | opacity: 1; 5 | } 6 | 100% { 7 | -webkit-transform: perspective(400px) rotateX(90deg); 8 | opacity: 0; 9 | } 10 | } 11 | 12 | @-moz-keyframes flipOutX { 13 | 0% { 14 | -moz-transform: perspective(400px) rotateX(0deg); 15 | opacity: 1; 16 | } 17 | 100% { 18 | -moz-transform: perspective(400px) rotateX(90deg); 19 | opacity: 0; 20 | } 21 | } 22 | 23 | @-o-keyframes flipOutX { 24 | 0% { 25 | -o-transform: perspective(400px) rotateX(0deg); 26 | opacity: 1; 27 | } 28 | 100% { 29 | -o-transform: perspective(400px) rotateX(90deg); 30 | opacity: 0; 31 | } 32 | } 33 | 34 | @keyframes flipOutX { 35 | 0% { 36 | transform: perspective(400px) rotateX(0deg); 37 | opacity: 1; 38 | } 39 | 100% { 40 | transform: perspective(400px) rotateX(90deg); 41 | opacity: 0; 42 | } 43 | } 44 | 45 | .flipOutX { 46 | -webkit-animation-name: flipOutX; 47 | -webkit-backface-visibility: visible !important; 48 | -moz-animation-name: flipOutX; 49 | -moz-backface-visibility: visible !important; 50 | -o-animation-name: flipOutX; 51 | -o-backface-visibility: visible !important; 52 | animation-name: flipOutX; 53 | backface-visibility: visible !important; 54 | } -------------------------------------------------------------------------------- /lib/base/mixin/animate/flipOutY.less: -------------------------------------------------------------------------------- 1 | @-webkit-keyframes flipOutY { 2 | 0% { 3 | -webkit-transform: perspective(400px) rotateY(0deg); 4 | opacity: 1; 5 | } 6 | 100% { 7 | -webkit-transform: perspective(400px) rotateY(90deg); 8 | opacity: 0; 9 | } 10 | } 11 | @-moz-keyframes flipOutY { 12 | 0% { 13 | -moz-transform: perspective(400px) rotateY(0deg); 14 | opacity: 1; 15 | } 16 | 100% { 17 | -moz-transform: perspective(400px) rotateY(90deg); 18 | opacity: 0; 19 | } 20 | } 21 | @-o-keyframes flipOutY { 22 | 0% { 23 | -o-transform: perspective(400px) rotateY(0deg); 24 | opacity: 1; 25 | } 26 | 100% { 27 | -o-transform: perspective(400px) rotateY(90deg); 28 | opacity: 0; 29 | } 30 | } 31 | @keyframes flipOutY { 32 | 0% { 33 | transform: perspective(400px) rotateY(0deg); 34 | opacity: 1; 35 | } 36 | 100% { 37 | transform: perspective(400px) rotateY(90deg); 38 | opacity: 0; 39 | } 40 | } 41 | 42 | .flipOutY { 43 | -webkit-backface-visibility: visible !important; 44 | -webkit-animation-name: flipOutY; 45 | -moz-backface-visibility: visible !important; 46 | -moz-animation-name: flipOutY; 47 | -o-backface-visibility: visible !important; 48 | -o-animation-name: flipOutY; 49 | backface-visibility: visible !important; 50 | animation-name: flipOutY; 51 | } -------------------------------------------------------------------------------- /lib/base/mixin/animate/lightSpeedOut.less: -------------------------------------------------------------------------------- 1 | @-webkit-keyframes lightSpeedOut { 2 | 0% { -webkit-transform: translateX(0%) skewX(0deg); opacity: 1; } 3 | 100% { -webkit-transform: translateX(100%) skewX(-30deg); opacity: 0; } 4 | } 5 | 6 | @-moz-keyframes lightSpeedOut { 7 | 0% { -moz-transform: translateX(0%) skewX(0deg); opacity: 1; } 8 | 100% { -moz-transform: translateX(100%) skewX(-30deg); opacity: 0; } 9 | } 10 | 11 | @-o-keyframes lightSpeedOut { 12 | 0% { -o-transform: translateX(0%) skewX(0deg); opacity: 1; } 13 | 100% { -o-transform: translateX(100%) skewX(-30deg); opacity: 0; } 14 | } 15 | 16 | @keyframes lightSpeedOut { 17 | 0% { transform: translateX(0%) skewX(0deg); opacity: 1; } 18 | 100% { transform: translateX(100%) skewX(-30deg); opacity: 0; } 19 | } 20 | 21 | .lightSpeedOut { 22 | -webkit-animation-name: lightSpeedOut; 23 | -moz-animation-name: lightSpeedOut; 24 | -o-animation-name: lightSpeedOut; 25 | animation-name: lightSpeedOut; 26 | 27 | -webkit-animation-timing-function: ease-in; 28 | -moz-animation-timing-function: ease-in; 29 | -o-animation-timing-function: ease-in; 30 | animation-timing-function: ease-in; 31 | } -------------------------------------------------------------------------------- /lib/base/mixin/animate/pulse.less: -------------------------------------------------------------------------------- 1 | /* originally authored by Nick Pettit - https://github.com/nickpettit/glide */ 2 | 3 | @-webkit-keyframes pulse { 4 | 0% { -webkit-transform: scale(1); } 5 | 50% { -webkit-transform: scale(1.1); } 6 | 100% { -webkit-transform: scale(1); } 7 | } 8 | @-moz-keyframes pulse { 9 | 0% { -moz-transform: scale(1); } 10 | 50% { -moz-transform: scale(1.1); } 11 | 100% { -moz-transform: scale(1); } 12 | } 13 | @-o-keyframes pulse { 14 | 0% { -o-transform: scale(1); } 15 | 50% { -o-transform: scale(1.1); } 16 | 100% { -o-transform: scale(1); } 17 | } 18 | @keyframes pulse { 19 | 0% { transform: scale(1); } 20 | 50% { transform: scale(1.1); } 21 | 100% { transform: scale(1); } 22 | } 23 | 24 | .pulse { 25 | -webkit-animation-name: pulse; 26 | -moz-animation-name: pulse; 27 | -o-animation-name: pulse; 28 | animation-name: pulse; 29 | } -------------------------------------------------------------------------------- /lib/base/mixin/animate/rollIn.less: -------------------------------------------------------------------------------- 1 | /* originally authored by Nick Pettit - https://github.com/nickpettit/glide */ 2 | 3 | @-webkit-keyframes rollIn { 4 | 0% { opacity: 0; -webkit-transform: translateX(-100%) rotate(-120deg); } 5 | 100% { opacity: 1; -webkit-transform: translateX(0px) rotate(0deg); } 6 | } 7 | 8 | @-moz-keyframes rollIn { 9 | 0% { opacity: 0; -moz-transform: translateX(-100%) rotate(-120deg); } 10 | 100% { opacity: 1; -moz-transform: translateX(0px) rotate(0deg); } 11 | } 12 | 13 | @-o-keyframes rollIn { 14 | 0% { opacity: 0; -o-transform: translateX(-100%) rotate(-120deg); } 15 | 100% { opacity: 1; -o-transform: translateX(0px) rotate(0deg); } 16 | } 17 | 18 | @keyframes rollIn { 19 | 0% { opacity: 0; transform: translateX(-100%) rotate(-120deg); } 20 | 100% { opacity: 1; transform: translateX(0px) rotate(0deg); } 21 | } 22 | 23 | .rollIn { 24 | -webkit-animation-name: rollIn; 25 | -moz-animation-name: rollIn; 26 | -o-animation-name: rollIn; 27 | animation-name: rollIn; 28 | } -------------------------------------------------------------------------------- /lib/base/mixin/animate/rollOut.less: -------------------------------------------------------------------------------- 1 | /* originally authored by Nick Pettit - https://github.com/nickpettit/glide */ 2 | 3 | @-webkit-keyframes rollOut { 4 | 0% { 5 | opacity: 1; 6 | -webkit-transform: translateX(0px) rotate(0deg); 7 | } 8 | 9 | 100% { 10 | opacity: 0; 11 | -webkit-transform: translateX(100%) rotate(120deg); 12 | } 13 | } 14 | 15 | @-moz-keyframes rollOut { 16 | 0% { 17 | opacity: 1; 18 | -moz-transform: translateX(0px) rotate(0deg); 19 | } 20 | 21 | 100% { 22 | opacity: 0; 23 | -moz-transform: translateX(100%) rotate(120deg); 24 | } 25 | } 26 | 27 | @-o-keyframes rollOut { 28 | 0% { 29 | opacity: 1; 30 | -o-transform: translateX(0px) rotate(0deg); 31 | } 32 | 33 | 100% { 34 | opacity: 0; 35 | -o-transform: translateX(100%) rotate(120deg); 36 | } 37 | } 38 | 39 | @keyframes rollOut { 40 | 0% { 41 | opacity: 1; 42 | transform: translateX(0px) rotate(0deg); 43 | } 44 | 45 | 100% { 46 | opacity: 0; 47 | transform: translateX(100%) rotate(120deg); 48 | } 49 | } 50 | 51 | .rollOut { 52 | -webkit-animation-name: rollOut; 53 | -moz-animation-name: rollOut; 54 | -o-animation-name: rollOut; 55 | animation-name: rollOut; 56 | } -------------------------------------------------------------------------------- /lib/base/mixin/animate/rotateIn.less: -------------------------------------------------------------------------------- 1 | @-webkit-keyframes rotateIn { 2 | 0% { 3 | -webkit-transform-origin: center center; 4 | -webkit-transform: rotate(-200deg); 5 | opacity: 0; 6 | } 7 | 8 | 100% { 9 | -webkit-transform-origin: center center; 10 | -webkit-transform: rotate(0); 11 | opacity: 1; 12 | } 13 | } 14 | @-moz-keyframes rotateIn { 15 | 0% { 16 | -moz-transform-origin: center center; 17 | -moz-transform: rotate(-200deg); 18 | opacity: 0; 19 | } 20 | 21 | 100% { 22 | -moz-transform-origin: center center; 23 | -moz-transform: rotate(0); 24 | opacity: 1; 25 | } 26 | } 27 | @-o-keyframes rotateIn { 28 | 0% { 29 | -o-transform-origin: center center; 30 | -o-transform: rotate(-200deg); 31 | opacity: 0; 32 | } 33 | 34 | 100% { 35 | -o-transform-origin: center center; 36 | -o-transform: rotate(0); 37 | opacity: 1; 38 | } 39 | } 40 | @keyframes rotateIn { 41 | 0% { 42 | transform-origin: center center; 43 | transform: rotate(-200deg); 44 | opacity: 0; 45 | } 46 | 47 | 100% { 48 | transform-origin: center center; 49 | transform: rotate(0); 50 | opacity: 1; 51 | } 52 | } 53 | 54 | .rotateIn { 55 | -webkit-animation-name: rotateIn; 56 | -moz-animation-name: rotateIn; 57 | -o-animation-name: rotateIn; 58 | animation-name: rotateIn; 59 | } -------------------------------------------------------------------------------- /lib/base/mixin/animate/rotateInDownLeft.less: -------------------------------------------------------------------------------- 1 | @-webkit-keyframes rotateInDownLeft { 2 | 0% { 3 | -webkit-transform-origin: left bottom; 4 | -webkit-transform: rotate(-90deg); 5 | opacity: 0; 6 | } 7 | 8 | 100% { 9 | -webkit-transform-origin: left bottom; 10 | -webkit-transform: rotate(0); 11 | opacity: 1; 12 | } 13 | } 14 | 15 | @-moz-keyframes rotateInDownLeft { 16 | 0% { 17 | -moz-transform-origin: left bottom; 18 | -moz-transform: rotate(-90deg); 19 | opacity: 0; 20 | } 21 | 22 | 100% { 23 | -moz-transform-origin: left bottom; 24 | -moz-transform: rotate(0); 25 | opacity: 1; 26 | } 27 | } 28 | 29 | @-o-keyframes rotateInDownLeft { 30 | 0% { 31 | -o-transform-origin: left bottom; 32 | -o-transform: rotate(-90deg); 33 | opacity: 0; 34 | } 35 | 36 | 100% { 37 | -o-transform-origin: left bottom; 38 | -o-transform: rotate(0); 39 | opacity: 1; 40 | } 41 | } 42 | 43 | @keyframes rotateInDownLeft { 44 | 0% { 45 | transform-origin: left bottom; 46 | transform: rotate(-90deg); 47 | opacity: 0; 48 | } 49 | 50 | 100% { 51 | transform-origin: left bottom; 52 | transform: rotate(0); 53 | opacity: 1; 54 | } 55 | } 56 | 57 | .rotateInDownLeft { 58 | -webkit-animation-name: rotateInDownLeft; 59 | -moz-animation-name: rotateInDownLeft; 60 | -o-animation-name: rotateInDownLeft; 61 | animation-name: rotateInDownLeft; 62 | } -------------------------------------------------------------------------------- /lib/base/mixin/animate/rotateInDownRight.less: -------------------------------------------------------------------------------- 1 | @-webkit-keyframes rotateInDownRight { 2 | 0% { 3 | -webkit-transform-origin: right bottom; 4 | -webkit-transform: rotate(90deg); 5 | opacity: 0; 6 | } 7 | 8 | 100% { 9 | -webkit-transform-origin: right bottom; 10 | -webkit-transform: rotate(0); 11 | opacity: 1; 12 | } 13 | } 14 | 15 | @-moz-keyframes rotateInDownRight { 16 | 0% { 17 | -moz-transform-origin: right bottom; 18 | -moz-transform: rotate(90deg); 19 | opacity: 0; 20 | } 21 | 22 | 100% { 23 | -moz-transform-origin: right bottom; 24 | -moz-transform: rotate(0); 25 | opacity: 1; 26 | } 27 | } 28 | 29 | @-o-keyframes rotateInDownRight { 30 | 0% { 31 | -o-transform-origin: right bottom; 32 | -o-transform: rotate(90deg); 33 | opacity: 0; 34 | } 35 | 36 | 100% { 37 | -o-transform-origin: right bottom; 38 | -o-transform: rotate(0); 39 | opacity: 1; 40 | } 41 | } 42 | 43 | @keyframes rotateInDownRight { 44 | 0% { 45 | transform-origin: right bottom; 46 | transform: rotate(90deg); 47 | opacity: 0; 48 | } 49 | 50 | 100% { 51 | transform-origin: right bottom; 52 | transform: rotate(0); 53 | opacity: 1; 54 | } 55 | } 56 | 57 | .rotateInDownRight { 58 | -webkit-animation-name: rotateInDownRight; 59 | -moz-animation-name: rotateInDownRight; 60 | -o-animation-name: rotateInDownRight; 61 | animation-name: rotateInDownRight; 62 | } -------------------------------------------------------------------------------- /lib/base/mixin/animate/rotateInUpLeft.less: -------------------------------------------------------------------------------- 1 | @-webkit-keyframes rotateInUpLeft { 2 | 0% { 3 | -webkit-transform-origin: left bottom; 4 | -webkit-transform: rotate(90deg); 5 | opacity: 0; 6 | } 7 | 8 | 100% { 9 | -webkit-transform-origin: left bottom; 10 | -webkit-transform: rotate(0); 11 | opacity: 1; 12 | } 13 | } 14 | 15 | @-moz-keyframes rotateInUpLeft { 16 | 0% { 17 | -moz-transform-origin: left bottom; 18 | -moz-transform: rotate(90deg); 19 | opacity: 0; 20 | } 21 | 22 | 100% { 23 | -moz-transform-origin: left bottom; 24 | -moz-transform: rotate(0); 25 | opacity: 1; 26 | } 27 | } 28 | 29 | @-o-keyframes rotateInUpLeft { 30 | 0% { 31 | -o-transform-origin: left bottom; 32 | -o-transform: rotate(90deg); 33 | opacity: 0; 34 | } 35 | 36 | 100% { 37 | -o-transform-origin: left bottom; 38 | -o-transform: rotate(0); 39 | opacity: 1; 40 | } 41 | } 42 | 43 | @keyframes rotateInUpLeft { 44 | 0% { 45 | transform-origin: left bottom; 46 | transform: rotate(90deg); 47 | opacity: 0; 48 | } 49 | 50 | 100% { 51 | transform-origin: left bottom; 52 | transform: rotate(0); 53 | opacity: 1; 54 | } 55 | } 56 | 57 | .rotateInUpLeft { 58 | -webkit-animation-name: rotateInUpLeft; 59 | -moz-animation-name: rotateInUpLeft; 60 | -o-animation-name: rotateInUpLeft; 61 | animation-name: rotateInUpLeft; 62 | } -------------------------------------------------------------------------------- /lib/base/mixin/animate/rotateInUpRight.less: -------------------------------------------------------------------------------- 1 | @-webkit-keyframes rotateInUpRight { 2 | 0% { 3 | -webkit-transform-origin: right bottom; 4 | -webkit-transform: rotate(-90deg); 5 | opacity: 0; 6 | } 7 | 8 | 100% { 9 | -webkit-transform-origin: right bottom; 10 | -webkit-transform: rotate(0); 11 | opacity: 1; 12 | } 13 | } 14 | 15 | @-moz-keyframes rotateInUpRight { 16 | 0% { 17 | -moz-transform-origin: right bottom; 18 | -moz-transform: rotate(-90deg); 19 | opacity: 0; 20 | } 21 | 22 | 100% { 23 | -moz-transform-origin: right bottom; 24 | -moz-transform: rotate(0); 25 | opacity: 1; 26 | } 27 | } 28 | 29 | @-o-keyframes rotateInUpRight { 30 | 0% { 31 | -o-transform-origin: right bottom; 32 | -o-transform: rotate(-90deg); 33 | opacity: 0; 34 | } 35 | 36 | 100% { 37 | -o-transform-origin: right bottom; 38 | -o-transform: rotate(0); 39 | opacity: 1; 40 | } 41 | } 42 | 43 | @keyframes rotateInUpRight { 44 | 0% { 45 | transform-origin: right bottom; 46 | transform: rotate(-90deg); 47 | opacity: 0; 48 | } 49 | 50 | 100% { 51 | transform-origin: right bottom; 52 | transform: rotate(0); 53 | opacity: 1; 54 | } 55 | } 56 | 57 | .rotateInUpRight { 58 | -webkit-animation-name: rotateInUpRight; 59 | -moz-animation-name: rotateInUpRight; 60 | -o-animation-name: rotateInUpRight; 61 | animation-name: rotateInUpRight; 62 | } -------------------------------------------------------------------------------- /lib/base/mixin/animate/rotateOut.less: -------------------------------------------------------------------------------- 1 | @-webkit-keyframes rotateOut { 2 | 0% { 3 | -webkit-transform-origin: center center; 4 | -webkit-transform: rotate(0); 5 | opacity: 1; 6 | } 7 | 8 | 100% { 9 | -webkit-transform-origin: center center; 10 | -webkit-transform: rotate(200deg); 11 | opacity: 0; 12 | } 13 | } 14 | 15 | @-moz-keyframes rotateOut { 16 | 0% { 17 | -moz-transform-origin: center center; 18 | -moz-transform: rotate(0); 19 | opacity: 1; 20 | } 21 | 22 | 100% { 23 | -moz-transform-origin: center center; 24 | -moz-transform: rotate(200deg); 25 | opacity: 0; 26 | } 27 | } 28 | 29 | @-o-keyframes rotateOut { 30 | 0% { 31 | -o-transform-origin: center center; 32 | -o-transform: rotate(0); 33 | opacity: 1; 34 | } 35 | 36 | 100% { 37 | -o-transform-origin: center center; 38 | -o-transform: rotate(200deg); 39 | opacity: 0; 40 | } 41 | } 42 | 43 | @keyframes rotateOut { 44 | 0% { 45 | transform-origin: center center; 46 | transform: rotate(0); 47 | opacity: 1; 48 | } 49 | 50 | 100% { 51 | transform-origin: center center; 52 | transform: rotate(200deg); 53 | opacity: 0; 54 | } 55 | } 56 | 57 | .rotateOut { 58 | -webkit-animation-name: rotateOut; 59 | -moz-animation-name: rotateOut; 60 | -o-animation-name: rotateOut; 61 | animation-name: rotateOut; 62 | } -------------------------------------------------------------------------------- /lib/base/mixin/animate/rotateOutDownLeft.less: -------------------------------------------------------------------------------- 1 | @-webkit-keyframes rotateOutDownLeft { 2 | 0% { 3 | -webkit-transform-origin: left bottom; 4 | -webkit-transform: rotate(0); 5 | opacity: 1; 6 | } 7 | 8 | 100% { 9 | -webkit-transform-origin: left bottom; 10 | -webkit-transform: rotate(90deg); 11 | opacity: 0; 12 | } 13 | } 14 | 15 | @-moz-keyframes rotateOutDownLeft { 16 | 0% { 17 | -moz-transform-origin: left bottom; 18 | -moz-transform: rotate(0); 19 | opacity: 1; 20 | } 21 | 22 | 100% { 23 | -moz-transform-origin: left bottom; 24 | -moz-transform: rotate(90deg); 25 | opacity: 0; 26 | } 27 | } 28 | 29 | @-o-keyframes rotateOutDownLeft { 30 | 0% { 31 | -o-transform-origin: left bottom; 32 | -o-transform: rotate(0); 33 | opacity: 1; 34 | } 35 | 36 | 100% { 37 | -o-transform-origin: left bottom; 38 | -o-transform: rotate(90deg); 39 | opacity: 0; 40 | } 41 | } 42 | 43 | @keyframes rotateOutDownLeft { 44 | 0% { 45 | transform-origin: left bottom; 46 | transform: rotate(0); 47 | opacity: 1; 48 | } 49 | 50 | 100% { 51 | transform-origin: left bottom; 52 | transform: rotate(90deg); 53 | opacity: 0; 54 | } 55 | } 56 | 57 | .rotateOutDownLeft { 58 | -webkit-animation-name: rotateOutDownLeft; 59 | -moz-animation-name: rotateOutDownLeft; 60 | -o-animation-name: rotateOutDownLeft; 61 | animation-name: rotateOutDownLeft; 62 | } -------------------------------------------------------------------------------- /lib/base/mixin/animate/rotateOutDownRight.less: -------------------------------------------------------------------------------- 1 | @-webkit-keyframes rotateOutDownRight { 2 | 0% { 3 | -webkit-transform-origin: right bottom; 4 | -webkit-transform: rotate(0); 5 | opacity: 1; 6 | } 7 | 8 | 100% { 9 | -webkit-transform-origin: right bottom; 10 | -webkit-transform: rotate(-90deg); 11 | opacity: 0; 12 | } 13 | } 14 | 15 | @-moz-keyframes rotateOutDownRight { 16 | 0% { 17 | -moz-transform-origin: right bottom; 18 | -moz-transform: rotate(0); 19 | opacity: 1; 20 | } 21 | 22 | 100% { 23 | -moz-transform-origin: right bottom; 24 | -moz-transform: rotate(-90deg); 25 | opacity: 0; 26 | } 27 | } 28 | 29 | @-o-keyframes rotateOutDownRight { 30 | 0% { 31 | -o-transform-origin: right bottom; 32 | -o-transform: rotate(0); 33 | opacity: 1; 34 | } 35 | 36 | 100% { 37 | -o-transform-origin: right bottom; 38 | -o-transform: rotate(-90deg); 39 | opacity: 0; 40 | } 41 | } 42 | 43 | @keyframes rotateOutDownRight { 44 | 0% { 45 | transform-origin: right bottom; 46 | transform: rotate(0); 47 | opacity: 1; 48 | } 49 | 50 | 100% { 51 | transform-origin: right bottom; 52 | transform: rotate(-90deg); 53 | opacity: 0; 54 | } 55 | } 56 | 57 | .rotateOutDownRight { 58 | -webkit-animation-name: rotateOutDownRight; 59 | -moz-animation-name: rotateOutDownRight; 60 | -o-animation-name: rotateOutDownRight; 61 | animation-name: rotateOutDownRight; 62 | } -------------------------------------------------------------------------------- /lib/base/mixin/animate/rotateOutUpLeft.less: -------------------------------------------------------------------------------- 1 | @-webkit-keyframes rotateOutUpLeft { 2 | 0% { 3 | -webkit-transform-origin: left bottom; 4 | -webkit-transform: rotate(0); 5 | opacity: 1; 6 | } 7 | 8 | 100% { 9 | -webkit-transform-origin: left bottom; 10 | -webkit-transform: rotate(-90deg); 11 | opacity: 0; 12 | } 13 | } 14 | 15 | @-moz-keyframes rotateOutUpLeft { 16 | 0% { 17 | -moz-transform-origin: left bottom; 18 | -moz-transform: rotate(0); 19 | opacity: 1; 20 | } 21 | 22 | 100% { 23 | -moz-transform-origin: left bottom; 24 | -moz-transform: rotate(-90deg); 25 | opacity: 0; 26 | } 27 | } 28 | 29 | @-o-keyframes rotateOutUpLeft { 30 | 0% { 31 | -o-transform-origin: left bottom; 32 | -o-transform: rotate(0); 33 | opacity: 1; 34 | } 35 | 36 | 100% { 37 | -o-transform-origin: left bottom; 38 | -o-transform: rotate(-90deg); 39 | opacity: 0; 40 | } 41 | } 42 | 43 | @keyframes rotateOutUpLeft { 44 | 0% { 45 | transform-origin: left bottom; 46 | transform: rotate(0); 47 | opacity: 1; 48 | } 49 | 50 | 100% { 51 | -transform-origin: left bottom; 52 | -transform: rotate(-90deg); 53 | opacity: 0; 54 | } 55 | } 56 | 57 | .rotateOutUpLeft { 58 | -webkit-animation-name: rotateOutUpLeft; 59 | -moz-animation-name: rotateOutUpLeft; 60 | -o-animation-name: rotateOutUpLeft; 61 | animation-name: rotateOutUpLeft; 62 | } -------------------------------------------------------------------------------- /lib/base/mixin/animate/rotateOutUpRight.less: -------------------------------------------------------------------------------- 1 | @-webkit-keyframes rotateOutUpRight { 2 | 0% { 3 | -webkit-transform-origin: right bottom; 4 | -webkit-transform: rotate(0); 5 | opacity: 1; 6 | } 7 | 8 | 100% { 9 | -webkit-transform-origin: right bottom; 10 | -webkit-transform: rotate(90deg); 11 | opacity: 0; 12 | } 13 | } 14 | 15 | @-moz-keyframes rotateOutUpRight { 16 | 0% { 17 | -moz-transform-origin: right bottom; 18 | -moz-transform: rotate(0); 19 | opacity: 1; 20 | } 21 | 22 | 100% { 23 | -moz-transform-origin: right bottom; 24 | -moz-transform: rotate(90deg); 25 | opacity: 0; 26 | } 27 | } 28 | 29 | @-o-keyframes rotateOutUpRight { 30 | 0% { 31 | -o-transform-origin: right bottom; 32 | -o-transform: rotate(0); 33 | opacity: 1; 34 | } 35 | 36 | 100% { 37 | -o-transform-origin: right bottom; 38 | -o-transform: rotate(90deg); 39 | opacity: 0; 40 | } 41 | } 42 | 43 | @keyframes rotateOutUpRight { 44 | 0% { 45 | transform-origin: right bottom; 46 | transform: rotate(0); 47 | opacity: 1; 48 | } 49 | 50 | 100% { 51 | transform-origin: right bottom; 52 | transform: rotate(90deg); 53 | opacity: 0; 54 | } 55 | } 56 | 57 | .rotateOutUpRight { 58 | -webkit-animation-name: rotateOutUpRight; 59 | -moz-animation-name: rotateOutUpRight; 60 | -o-animation-name: rotateOutUpRight; 61 | animation-name: rotateOutUpRight; 62 | } -------------------------------------------------------------------------------- /lib/base/mixin/animate/shake.less: -------------------------------------------------------------------------------- 1 | @-webkit-keyframes shake { 2 | 0%, 100% {-webkit-transform: translateX(0);} 3 | 10%, 30%, 50%, 70%, 90% {-webkit-transform: translateX(-10px);} 4 | 20%, 40%, 60%, 80% {-webkit-transform: translateX(10px);} 5 | } 6 | 7 | @-moz-keyframes shake { 8 | 0%, 100% {-moz-transform: translateX(0);} 9 | 10%, 30%, 50%, 70%, 90% {-moz-transform: translateX(-10px);} 10 | 20%, 40%, 60%, 80% {-moz-transform: translateX(10px);} 11 | } 12 | 13 | @-o-keyframes shake { 14 | 0%, 100% {-o-transform: translateX(0);} 15 | 10%, 30%, 50%, 70%, 90% {-o-transform: translateX(-10px);} 16 | 20%, 40%, 60%, 80% {-o-transform: translateX(10px);} 17 | } 18 | 19 | @keyframes shake { 20 | 0%, 100% {transform: translateX(0);} 21 | 10%, 30%, 50%, 70%, 90% {transform: translateX(-10px);} 22 | 20%, 40%, 60%, 80% {transform: translateX(10px);} 23 | } 24 | 25 | .shake { 26 | -webkit-animation-name: shake; 27 | -moz-animation-name: shake; 28 | -o-animation-name: shake; 29 | animation-name: shake; 30 | } -------------------------------------------------------------------------------- /lib/base/mixin/animate/swing.less: -------------------------------------------------------------------------------- 1 | @-webkit-keyframes swing { 2 | 20%, 40%, 60%, 80%, 100% { -webkit-transform-origin: top center; } 3 | 20% { -webkit-transform: rotate(15deg); } 4 | 40% { -webkit-transform: rotate(-10deg); } 5 | 60% { -webkit-transform: rotate(5deg); } 6 | 80% { -webkit-transform: rotate(-5deg); } 7 | 100% { -webkit-transform: rotate(0deg); } 8 | } 9 | 10 | @-moz-keyframes swing { 11 | 20% { -moz-transform: rotate(15deg); } 12 | 40% { -moz-transform: rotate(-10deg); } 13 | 60% { -moz-transform: rotate(5deg); } 14 | 80% { -moz-transform: rotate(-5deg); } 15 | 100% { -moz-transform: rotate(0deg); } 16 | } 17 | 18 | @-o-keyframes swing { 19 | 20% { -o-transform: rotate(15deg); } 20 | 40% { -o-transform: rotate(-10deg); } 21 | 60% { -o-transform: rotate(5deg); } 22 | 80% { -o-transform: rotate(-5deg); } 23 | 100% { -o-transform: rotate(0deg); } 24 | } 25 | 26 | @keyframes swing { 27 | 20% { transform: rotate(15deg); } 28 | 40% { transform: rotate(-10deg); } 29 | 60% { transform: rotate(5deg); } 30 | 80% { transform: rotate(-5deg); } 31 | 100% { transform: rotate(0deg); } 32 | } 33 | 34 | .swing { 35 | -webkit-transform-origin: top center; 36 | -moz-transform-origin: top center; 37 | -o-transform-origin: top center; 38 | transform-origin: top center; 39 | -webkit-animation-name: swing; 40 | -moz-animation-name: swing; 41 | -o-animation-name: swing; 42 | animation-name: swing; 43 | } -------------------------------------------------------------------------------- /lib/base/mixin/animate/tada.less: -------------------------------------------------------------------------------- 1 | @-webkit-keyframes tada { 2 | 0% {-webkit-transform: scale(1);} 3 | 10%, 20% {-webkit-transform: scale(0.9) rotate(-3deg);} 4 | 30%, 50%, 70%, 90% {-webkit-transform: scale(1.1) rotate(3deg);} 5 | 40%, 60%, 80% {-webkit-transform: scale(1.1) rotate(-3deg);} 6 | 100% {-webkit-transform: scale(1) rotate(0);} 7 | } 8 | 9 | @-moz-keyframes tada { 10 | 0% {-moz-transform: scale(1);} 11 | 10%, 20% {-moz-transform: scale(0.9) rotate(-3deg);} 12 | 30%, 50%, 70%, 90% {-moz-transform: scale(1.1) rotate(3deg);} 13 | 40%, 60%, 80% {-moz-transform: scale(1.1) rotate(-3deg);} 14 | 100% {-moz-transform: scale(1) rotate(0);} 15 | } 16 | 17 | @-o-keyframes tada { 18 | 0% {-o-transform: scale(1);} 19 | 10%, 20% {-o-transform: scale(0.9) rotate(-3deg);} 20 | 30%, 50%, 70%, 90% {-o-transform: scale(1.1) rotate(3deg);} 21 | 40%, 60%, 80% {-o-transform: scale(1.1) rotate(-3deg);} 22 | 100% {-o-transform: scale(1) rotate(0);} 23 | } 24 | 25 | @keyframes tada { 26 | 0% {transform: scale(1);} 27 | 10%, 20% {transform: scale(0.9) rotate(-3deg);} 28 | 30%, 50%, 70%, 90% {transform: scale(1.1) rotate(3deg);} 29 | 40%, 60%, 80% {transform: scale(1.1) rotate(-3deg);} 30 | 100% {transform: scale(1) rotate(0);} 31 | } 32 | 33 | .tada { 34 | -webkit-animation-name: tada; 35 | -moz-animation-name: tada; 36 | -o-animation-name: tada; 37 | animation-name: tada; 38 | } -------------------------------------------------------------------------------- /lib/base/mixin/mobile.less: -------------------------------------------------------------------------------- 1 | // tapcolor 2 | .setTapColor(@c:rgba(0,0,0,0)) { 3 | -webkit-tap-highlight-color: @c; 4 | } 5 | 6 | //user action 7 | .no_select() { 8 | -webkit-touch-callout: none; 9 | -webkit-user-select: none; 10 | -khtml-user-select: none; 11 | -moz-user-select: none; 12 | -ms-user-select: none; 13 | user-select: none; 14 | } 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | -------------------------------------------------------------------------------- /lib/base/mixin/setChecked.less: -------------------------------------------------------------------------------- 1 | .setChecked(@c:#FFFFFF) { 2 | display: inline-block; 3 | content: ''; 4 | width: 4px; 5 | height: 8px; 6 | border-bottom: 2px solid @c; 7 | border-right: 2px solid @c; 8 | transform: translate(0, 0) rotate(45deg); 9 | } 10 | 11 | .setCheckedAbs(@c:#FFFFFF) { 12 | position: absolute; 13 | top: 50%; 14 | left: 50%; 15 | content: ''; 16 | width: 4px; 17 | height: 8px; 18 | border-bottom: 2px solid @c; 19 | border-right: 2px solid @c; 20 | transform: translate(-50%, -65%) rotate(45deg); 21 | } -------------------------------------------------------------------------------- /lib/base/mixin/setOnepx.less: -------------------------------------------------------------------------------- 1 | .setTopLine(@c: #C7C7C7) { 2 | content: " "; 3 | position: absolute; 4 | left: 0; 5 | top: 0; 6 | width: 100%; 7 | height: 1px; 8 | border-top: 1px solid @c; 9 | transform-origin: 0 0; 10 | transform: scaleY(0.5); 11 | } 12 | 13 | .setBottomLine(@c: #C7C7C7) { 14 | content: " "; 15 | position: absolute; 16 | left: 0; 17 | bottom: 0; 18 | width: 100%; 19 | height: 1px; 20 | border-bottom: 1px solid @c; 21 | transform-origin: 0 100%; 22 | transform: scaleY(0.5); 23 | } 24 | 25 | .setLeftLine(@c: #C7C7C7) { 26 | content: " "; 27 | position: absolute; 28 | left: 0; 29 | top: 0; 30 | width: 1px; 31 | height: 100%; 32 | border-left: 1px solid @c; 33 | transform-origin: 0 0; 34 | transform: scaleX(0.5); 35 | } 36 | 37 | .setRightLine(@c: #C7C7C7) { 38 | content: " "; 39 | position: absolute; 40 | right: 0; 41 | top: 0; 42 | width: 1px; 43 | height: 100%; 44 | border-right: 1px solid @c; 45 | transform-origin: 0 100%; 46 | transform: scaleX(0.5); 47 | } -------------------------------------------------------------------------------- /lib/base/mixin/text.less: -------------------------------------------------------------------------------- 1 | .ellipsis(@w:auto) { 2 | width: @w; 3 | overflow: hidden; 4 | text-overflow: ellipsis; 5 | white-space: nowrap; 6 | word-wrap: normal; 7 | } 8 | 9 | .ellipsis(@type,@line) { 10 | overflow: hidden; 11 | text-overflow: ellipsis; 12 | display: -webkit-box; 13 | -webkit-box-orient: vertical; 14 | -webkit-line-clamp: @line; 15 | } -------------------------------------------------------------------------------- /lib/base/reset.less: -------------------------------------------------------------------------------- 1 | @import "fn"; 2 | 3 | html { 4 | -ms-text-size-adjust: 100%; 5 | -webkit-text-size-adjust: 100%; 6 | } 7 | 8 | body { 9 | line-height: 1.6; 10 | font-family: @sansFont; 11 | } 12 | 13 | * { 14 | margin: 0; 15 | padding: 0; 16 | } 17 | 18 | a img { 19 | border: 0; 20 | } 21 | 22 | a { 23 | text-decoration: none; 24 | } -------------------------------------------------------------------------------- /lib/base/variable/global.less: -------------------------------------------------------------------------------- 1 | // font family 2 | @sansFont:"Helvetica Neue",Helvetica,Arial,sans-serif; 3 | @serifFont:Georgia, "Times New Roman",Times,serif; 4 | @wpFont:"Microsoft YaHei",sans-serif; 5 | @bizFont:"Helvetica Neue",Helvetica,"Hiragino Sans GB","Microsoft YaHei","微软雅黑",Arial,sans-serif; 6 | @globalFont:@sansFont; 7 | @globalFontSize:14px; 8 | 9 | // font color 10 | @globalLinkColor: #61749B; 11 | @globalDescColor: #B2B2B2; 12 | @globalWarnColor: #E64340; 13 | @globalNickNameColor: #576B95; 14 | @globalTextColor: #888; 15 | @globalTitleColor: #000; 16 | 17 | //border 18 | @globalBorderColor: #BCBAB6; 19 | 20 | //arrow 21 | @globalArrowColor: #C7C7CC; 22 | 23 | //component 24 | @itemActiveColor: #E4E4E4; 25 | 26 | //page 27 | @pageDefaultBackgroundColor:#EFEFF4; 28 | @toolbarSize:44px; 29 | 30 | 31 | // gap 32 | @gap5:5px; 33 | @gap10:10px; 34 | @gap15:15px; 35 | -------------------------------------------------------------------------------- /lib/base/variable/monokai.less: -------------------------------------------------------------------------------- 1 | @monokaiCaret:#F8F8F0; 2 | @monokaiGreen:#A6E22E; 3 | @monokaiOrange:#FD971F; 4 | @monokaiBlue:#66D9EF; 5 | @monokaiRed:#F92672; 6 | @monokaiPurple:#AE81FF; 7 | @monokaiBrown:#E6DB74; 8 | @monokaiFindHighlight:#FFE792; 9 | @monokaiLineHighlight:#3E3D32; 10 | @monokaiSelection:#49483E; 11 | @monokaiBg:#272822; -------------------------------------------------------------------------------- /lib/base/variable/weui_button.less: -------------------------------------------------------------------------------- 1 | @weuiBtnDefaultGap:15px; 2 | @weuiBtnHeight:42px; 3 | @weuiBtnMiniHeight:25px; 4 | @weuiBtnFontSize:18px; 5 | @weuiBtnFontColor:#FFFFFF; 6 | @weuiBtnDisabledFontColor:rgba(255,255,255,.6); 7 | @weuiBtnActiveFontColor:rgba(255,255,255,.4); 8 | @weuiBtnMiniFontSize:14px; 9 | @weuiBtnBorderRadius:5px; 10 | 11 | @weuiBtnDefaultBg:#F7F7F7; 12 | @weuiBtnDefaultActiveBg:#DEDEDE; 13 | @weuiBtnDefaultFontColor:#454545; 14 | @weuiBtnDefaultDisabledFontColor:#C9C9C9; 15 | @weuiBtnDefaultActiveFontColor:#A1A1A1; 16 | 17 | @weuiBtnPrimaryBg:#04be02; 18 | @weuiBtnPrimaryActiveBg:#039702; 19 | 20 | @weuiBtnWarnBg:#ef4f4f; 21 | @weuiBtnWarnActiveBg:#c13e3e; -------------------------------------------------------------------------------- /lib/base/variable/weui_cell.less: -------------------------------------------------------------------------------- 1 | @weuiCellBg:#FFFFFF; 2 | @weuiCellBorderColor:#D9D9D9; 3 | @weuiCellGapV:10px; 4 | @weuiCellGapH:15px; 5 | @weuiCellInnerGapH:.35em; 6 | @weuiCellHeight: 44px; 7 | @weuiCellFontSize:17px; 8 | @weuiCellTipsFontSize:14px; 9 | 10 | @weuiCellLineHeight: unit((@weuiCellHeight - 2 * @weuiCellGapV) / @weuiCellFontSize); // 高度为44px,减去上下padding的行高 11 | @weuiCellsMarginTop:unit(20 / @weuiCellFontSize, em); -------------------------------------------------------------------------------- /lib/base/variable/weui_msg.less: -------------------------------------------------------------------------------- 1 | @weuiMsgPaddingTop:36px; 2 | @weuiMsgIconGap:30px; 3 | @weuiMsgTitleGap:5px; 4 | @weuiMsgTextGap:25px; 5 | @weuiMsgOprGap:25px; 6 | @weuiMsgExtraAreaGap:15px; 7 | @weuiMsgExtraAreaOfMinHeight:438px; -------------------------------------------------------------------------------- /lib/base/variable/weui_progress.less: -------------------------------------------------------------------------------- 1 | @weuiProgressBg: #ebebeb; 2 | @weuiProgressColor: #09bb07; 3 | @weuiProgressHeight: 3px; 4 | @weuiProgressCloseBg: #ef4f4f; 5 | @weuiProgressActiveBg: #c13e3e; -------------------------------------------------------------------------------- /lib/base/variable/weui_step_list.less: -------------------------------------------------------------------------------- 1 | @stepListPaddingLeft: 50px; 2 | @stepListNumColor: #09BA07; 3 | @stepListNumBgColor: #FFF; 4 | @stepListNumSize: 21px; -------------------------------------------------------------------------------- /lib/button/button-area.js: -------------------------------------------------------------------------------- 1 | 'use strict'; 2 | 3 | Object.defineProperty(exports, "__esModule", { 4 | value: true 5 | }); 6 | 7 | var _react = require('react'); 8 | 9 | var _react2 = _interopRequireDefault(_react); 10 | 11 | var _style = require('./style'); 12 | 13 | var _style2 = _interopRequireDefault(_style); 14 | 15 | function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } 16 | 17 | var ButtonArea = function ButtonArea(props) { 18 | var className = 'weui_btn_area'; 19 | 20 | if (props.className) className += ' ' + props.className; 21 | 22 | return _react2.default.createElement( 23 | 'div', 24 | { className: className }, 25 | props.children 26 | ); 27 | }; 28 | 29 | ButtonArea.propTypes = { 30 | className: _react2.default.PropTypes.string 31 | }; 32 | 33 | ButtonArea.defaultProps = { 34 | className: '' 35 | }; 36 | 37 | exports.default = ButtonArea; -------------------------------------------------------------------------------- /lib/button/weui_btn_default.less: -------------------------------------------------------------------------------- 1 | @import "../base/fn"; 2 | 3 | .weui_btn_default { 4 | background-color: @weuiBtnDefaultBg; 5 | color: @weuiBtnDefaultFontColor; 6 | &:not(.weui_btn_disabled):visited { 7 | color: @weuiBtnDefaultFontColor; 8 | } 9 | &:not(.weui_btn_disabled):active { 10 | color: @weuiBtnDefaultActiveFontColor; 11 | background-color: @weuiBtnDefaultActiveBg; 12 | } 13 | } -------------------------------------------------------------------------------- /lib/button/weui_btn_disabled.less: -------------------------------------------------------------------------------- 1 | @import "../base/fn"; 2 | 3 | .weui_btn_disabled { 4 | color: @weuiBtnDisabledFontColor; 5 | &.weui_btn_default { 6 | color: @weuiBtnDefaultDisabledFontColor; 7 | } 8 | } 9 | -------------------------------------------------------------------------------- /lib/button/weui_btn_global.less: -------------------------------------------------------------------------------- 1 | @import "../base/fn"; 2 | 3 | .weui_btn { 4 | position: relative; 5 | display: block; 6 | margin-left: auto; 7 | margin-right: auto; 8 | padding-left: 14px; 9 | padding-right: 14px; 10 | box-sizing: border-box; 11 | font-size: @weuiBtnFontSize; 12 | text-align: center; 13 | text-decoration: none; 14 | color: @weuiBtnFontColor; 15 | line-height: unit(@weuiBtnHeight/@weuiBtnFontSize); 16 | border-radius: @weuiBtnBorderRadius; 17 | .setTapColor(); 18 | overflow: hidden; 19 | &:after { 20 | content: " "; 21 | width: 200%; 22 | height: 200%; 23 | position: absolute; 24 | top: 0; 25 | left: 0; 26 | border: 1px solid rgba(0, 0, 0, .2); 27 | transform: scale(.5); 28 | transform-origin: 0 0; 29 | box-sizing: border-box; 30 | border-radius: @weuiBtnBorderRadius*2; 31 | } 32 | 33 | &.weui_btn_inline { 34 | display: inline-block; 35 | } 36 | } -------------------------------------------------------------------------------- /lib/button/weui_btn_plain.less: -------------------------------------------------------------------------------- 1 | @import "../base/fn"; 2 | 3 | .weui_btn_plain_primary { 4 | color: @weuiBtnPrimaryBg; 5 | border: 1px solid @weuiBtnPrimaryBg; 6 | button&, input& { 7 | border-width: 1px; 8 | background-color: transparent; 9 | } 10 | &:active { 11 | border-color: @weuiBtnPrimaryActiveBg; 12 | } 13 | &:after { 14 | border-width: 0; 15 | } 16 | } 17 | 18 | .weui_btn_plain_default { 19 | color: #5A5A5A; 20 | border: 1px solid #5A5A5A; 21 | button&, input& { 22 | border-width: 1px; 23 | background-color: transparent; 24 | } 25 | &:after { 26 | border-width: 0; 27 | } 28 | } -------------------------------------------------------------------------------- /lib/button/weui_btn_primary.less: -------------------------------------------------------------------------------- 1 | @import "../base/fn"; 2 | 3 | .weui_btn_primary { 4 | background-color: @weuiBtnPrimaryBg; 5 | &:not(.weui_btn_disabled):visited { 6 | color: @weuiBtnFontColor; 7 | } 8 | &:not(.weui_btn_disabled):active { 9 | color: @weuiBtnActiveFontColor; 10 | background-color: @weuiBtnPrimaryActiveBg; 11 | } 12 | } 13 | -------------------------------------------------------------------------------- /lib/button/weui_btn_warn.less: -------------------------------------------------------------------------------- 1 | @import "../base/fn"; 2 | 3 | .weui_btn_warn { 4 | background-color: @weuiBtnWarnBg; 5 | &:not(.weui_btn_disabled):visited { 6 | color: @weuiBtnFontColor; 7 | } 8 | &:not(.weui_btn_disabled):active { 9 | color: @weuiBtnActiveFontColor; 10 | background-color: @weuiBtnWarnActiveBg; 11 | } 12 | } 13 | -------------------------------------------------------------------------------- /lib/cells/cell-body.js: -------------------------------------------------------------------------------- 1 | 'use strict'; 2 | 3 | Object.defineProperty(exports, "__esModule", { 4 | value: true 5 | }); 6 | 7 | var _react = require('react'); 8 | 9 | var _react2 = _interopRequireDefault(_react); 10 | 11 | var _style = require('./style'); 12 | 13 | var _style2 = _interopRequireDefault(_style); 14 | 15 | var _classnames = require('classnames'); 16 | 17 | var _classnames2 = _interopRequireDefault(_classnames); 18 | 19 | function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } 20 | 21 | var CellBody = function CellBody(props) { 22 | var className = (0, _classnames2.default)('weui_cell_bd', { 23 | weui_cell_primary: props.primary 24 | }, props.className); 25 | 26 | return _react2.default.createElement( 27 | 'span', 28 | { className: className }, 29 | props.children 30 | ); 31 | }; 32 | 33 | CellBody.propTypes = { 34 | className: _react2.default.PropTypes.string, 35 | primary: _react2.default.PropTypes.bool 36 | }; 37 | 38 | CellBody.defaultProps = { 39 | className: '', 40 | primary: true 41 | }; 42 | 43 | exports.default = CellBody; -------------------------------------------------------------------------------- /lib/cells/cell-footer.js: -------------------------------------------------------------------------------- 1 | 'use strict'; 2 | 3 | Object.defineProperty(exports, "__esModule", { 4 | value: true 5 | }); 6 | 7 | var _react = require('react'); 8 | 9 | var _react2 = _interopRequireDefault(_react); 10 | 11 | var _style = require('./style'); 12 | 13 | var _style2 = _interopRequireDefault(_style); 14 | 15 | var _classnames = require('classnames'); 16 | 17 | var _classnames2 = _interopRequireDefault(_classnames); 18 | 19 | function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } 20 | 21 | var CellFooter = function CellFooter(props) { 22 | var className = (0, _classnames2.default)('weui_cell_ft', { 23 | weui_cell_primary: props.primary 24 | }, props.className); 25 | 26 | return _react2.default.createElement( 27 | 'span', 28 | { className: className }, 29 | props.children 30 | ); 31 | }; 32 | 33 | CellFooter.propTypes = { 34 | className: _react2.default.PropTypes.string, 35 | primary: _react2.default.PropTypes.bool 36 | }; 37 | 38 | CellFooter.defaultProps = { 39 | className: '', 40 | primary: false 41 | }; 42 | 43 | exports.default = CellFooter; -------------------------------------------------------------------------------- /lib/cells/cell-header.js: -------------------------------------------------------------------------------- 1 | 'use strict'; 2 | 3 | Object.defineProperty(exports, "__esModule", { 4 | value: true 5 | }); 6 | 7 | var _react = require('react'); 8 | 9 | var _react2 = _interopRequireDefault(_react); 10 | 11 | var _style = require('./style'); 12 | 13 | var _style2 = _interopRequireDefault(_style); 14 | 15 | var _classnames = require('classnames'); 16 | 17 | var _classnames2 = _interopRequireDefault(_classnames); 18 | 19 | function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } 20 | 21 | var CellHeader = function CellHeader(props) { 22 | var className = (0, _classnames2.default)('weui_cell_hd', { 23 | weui_cell_primary: props.primary 24 | }, props.className); 25 | 26 | return _react2.default.createElement( 27 | 'span', 28 | { className: className }, 29 | props.children 30 | ); 31 | }; 32 | 33 | CellHeader.propTypes = { 34 | className: _react2.default.PropTypes.string, 35 | primary: _react2.default.PropTypes.bool 36 | }; 37 | 38 | CellHeader.defaultProps = { 39 | className: '', 40 | primary: false 41 | }; 42 | 43 | exports.default = CellHeader; -------------------------------------------------------------------------------- /lib/cells/cells-tips.js: -------------------------------------------------------------------------------- 1 | 'use strict'; 2 | 3 | var _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; 4 | 5 | Object.defineProperty(exports, "__esModule", { 6 | value: true 7 | }); 8 | 9 | var _react = require('react'); 10 | 11 | var _react2 = _interopRequireDefault(_react); 12 | 13 | var _style = require('./style'); 14 | 15 | var _style2 = _interopRequireDefault(_style); 16 | 17 | var _classnames = require('classnames'); 18 | 19 | var _classnames2 = _interopRequireDefault(_classnames); 20 | 21 | function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } 22 | 23 | var CellsTips = function CellsTips(props) { 24 | var className = (0, _classnames2.default)('weui_cells_tips', props.className); 25 | return _react2.default.createElement( 26 | 'div', 27 | _extends({}, props, { 28 | className: className }), 29 | _react2.default.createElement( 30 | 'p', 31 | null, 32 | props.children 33 | ) 34 | ); 35 | }; 36 | 37 | exports.default = CellsTips; -------------------------------------------------------------------------------- /lib/cells/cells-title.js: -------------------------------------------------------------------------------- 1 | 'use strict'; 2 | 3 | var _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; 4 | 5 | Object.defineProperty(exports, "__esModule", { 6 | value: true 7 | }); 8 | 9 | var _react = require('react'); 10 | 11 | var _react2 = _interopRequireDefault(_react); 12 | 13 | var _style = require('./style'); 14 | 15 | var _style2 = _interopRequireDefault(_style); 16 | 17 | var _classnames = require('classnames'); 18 | 19 | var _classnames2 = _interopRequireDefault(_classnames); 20 | 21 | function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } 22 | 23 | var CellsTitle = function CellsTitle(props) { 24 | var className = (0, _classnames2.default)('weui_cells_title', props.className); 25 | return _react2.default.createElement( 26 | 'div', 27 | _extends({}, props, { 28 | className: className }), 29 | _react2.default.createElement( 30 | 'p', 31 | null, 32 | props.children 33 | ) 34 | ); 35 | }; 36 | 37 | exports.default = CellsTitle; -------------------------------------------------------------------------------- /lib/cells/index.js: -------------------------------------------------------------------------------- 1 | 'use strict'; 2 | 3 | Object.defineProperty(exports, "__esModule", { 4 | value: true 5 | }); 6 | 7 | var _cells = require('./cells'); 8 | 9 | var _cells2 = _interopRequireDefault(_cells); 10 | 11 | var _cell = require('./cell'); 12 | 13 | var _cell2 = _interopRequireDefault(_cell); 14 | 15 | var _radioCells = require('./radio-cells'); 16 | 17 | var _radioCells2 = _interopRequireDefault(_radioCells); 18 | 19 | var _radioCell = require('./radio-cell'); 20 | 21 | var _radioCell2 = _interopRequireDefault(_radioCell); 22 | 23 | var _cellHeader = require('./cell-header'); 24 | 25 | var _cellHeader2 = _interopRequireDefault(_cellHeader); 26 | 27 | var _cellBody = require('./cell-body'); 28 | 29 | var _cellBody2 = _interopRequireDefault(_cellBody); 30 | 31 | var _cellFooter = require('./cell-footer'); 32 | 33 | var _cellFooter2 = _interopRequireDefault(_cellFooter); 34 | 35 | var _cellsTitle = require('./cells-title'); 36 | 37 | var _cellsTitle2 = _interopRequireDefault(_cellsTitle); 38 | 39 | function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } 40 | 41 | exports.default = { 42 | Cells: _cells2.default, Cell: _cell2.default, RadioCell: _radioCell2.default, CellHeader: _cellHeader2.default, CellBody: _cellBody2.default, CellFooter: _cellFooter2.default 43 | }; -------------------------------------------------------------------------------- /lib/cells/weui_check.less: -------------------------------------------------------------------------------- 1 | @import "./weui_check/weui_check_common"; 2 | @import "./weui_check/weui_radio"; 3 | @import "./weui_check/weui_checkbox"; 4 | -------------------------------------------------------------------------------- /lib/cells/weui_check/weui_check_common.less: -------------------------------------------------------------------------------- 1 | 2 | .weui_check_label { 3 | .setTapColor(); 4 | } 5 | 6 | .weui_check{ 7 | position: absolute; 8 | left: -9999em; 9 | } -------------------------------------------------------------------------------- /lib/cells/weui_check/weui_checkbox.less: -------------------------------------------------------------------------------- 1 | 2 | 3 | .weui_cells_checkbox { 4 | .weui_cell_hd { 5 | padding-right: @weuiCellInnerGapH; 6 | } 7 | .weui_cell { 8 | &:active { 9 | background-color: #ECECEC; 10 | } 11 | } 12 | .weui_icon_checked { 13 | &:before { 14 | content: '\EA01'; 15 | color: #C9C9C9; 16 | font-size: 23px; 17 | display: block; 18 | } 19 | } 20 | } 21 | 22 | // method2 accessbility 23 | .weui_check { 24 | // checkbox 25 | .weui_cells_checkbox & { 26 | &:checked { 27 | & + .weui_icon_checked { 28 | &:before { 29 | content: '\EA06'; 30 | color: #09BB07; 31 | } 32 | } 33 | } 34 | } 35 | } -------------------------------------------------------------------------------- /lib/cells/weui_check/weui_radio.less: -------------------------------------------------------------------------------- 1 | 2 | 3 | // method2 accessbility 4 | .weui_cells_radio{ 5 | .weui_cell_ft { 6 | padding-left: @weuiCellInnerGapH; 7 | } 8 | .weui_cell { 9 | &:active { 10 | background-color: #ECECEC; 11 | } 12 | } 13 | } 14 | .weui_check { 15 | // radio 16 | .weui_cells_radio & { 17 | &:checked { 18 | & + .weui_icon_checked { 19 | &:before { 20 | content: '\EA08'; 21 | color: #09BB07; 22 | font-size: 16px; 23 | } 24 | } 25 | } 26 | } 27 | } -------------------------------------------------------------------------------- /lib/cells/weui_form.less: -------------------------------------------------------------------------------- 1 | @import "./weui_form/weui_form_common"; 2 | @import "./weui_form/weui_select"; 3 | @import "./weui_form/weui_select_before"; 4 | @import "./weui_form/weui_select_after"; 5 | @import "./weui_form/weui_vcode"; 6 | -------------------------------------------------------------------------------- /lib/cells/weui_form/weui_form_common.less: -------------------------------------------------------------------------------- 1 | 2 | 3 | .weui_label{display:block;width:3em;} 4 | .weui_input { 5 | width: 100%; 6 | border: 0; 7 | outline: 0; 8 | -webkit-appearance: none; 9 | background-color: transparent; 10 | font-size: inherit; 11 | color: inherit; 12 | height: unit(@weuiCellLineHeight, em); 13 | line-height: @weuiCellLineHeight; 14 | 15 | // hides the spin-button 16 | &::-webkit-outer-spin-button, &::-webkit-inner-spin-button{ 17 | -webkit-appearance: none; 18 | margin: 0; 19 | } 20 | } 21 | .weui_textarea { 22 | display: block; 23 | border: 0; 24 | resize: none; 25 | width: 100%; 26 | font-size: 1em; 27 | line-height: inherit; 28 | outline: 0; 29 | } 30 | 31 | .weui_toptips { 32 | display:none; 33 | position: fixed; 34 | -webkit-transform: translateZ(0); 35 | width: 100%; 36 | top: 0; 37 | line-height: 2.3; 38 | font-size:14px; 39 | text-align: center; 40 | color: #FFF; 41 | z-index: 2; 42 | &.weui_warn { 43 | background-color: @globalWarnColor; 44 | } 45 | } 46 | .weui_cells_form { 47 | .weui_cell_warn{ 48 | color:@globalWarnColor; 49 | .weui_icon_warn{display:inline-block;} 50 | } 51 | .weui_cell_hd { 52 | padding-right: .3em; 53 | } 54 | .weui_cell_ft{font-size:0;} 55 | .weui_icon_warn{ 56 | display:none; 57 | } 58 | } 59 | -------------------------------------------------------------------------------- /lib/cells/weui_form/weui_select.less: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | .weui_cell_select { 5 | padding: 0 !important; 6 | .weui_select { 7 | padding-right: 30px; 8 | } 9 | .weui_access_icon { 10 | 11 | } 12 | .weui_cell_bd{ 13 | &:after{ 14 | content: " "; 15 | .setArrow_Wap(right, 6px, #C8C8CD, 2px); 16 | 17 | position: absolute; 18 | top: 50%; 19 | right: @weuiCellGapH; 20 | margin-top: -3px; 21 | } 22 | } 23 | } 24 | 25 | .weui_select { 26 | -webkit-appearance: none; 27 | border: 0; 28 | outline: 0; 29 | background-color: transparent; 30 | width: 100%; 31 | font-size: inherit; 32 | height: 43px; 33 | position: relative; 34 | z-index: 1; 35 | padding-left: @weuiCellGapH; 36 | } -------------------------------------------------------------------------------- /lib/cells/weui_form/weui_select_after.less: -------------------------------------------------------------------------------- 1 | 2 | @import "./weui_select"; 3 | 4 | .weui_select_after { 5 | padding-left:@weuiCellGapH !important; 6 | } -------------------------------------------------------------------------------- /lib/cells/weui_form/weui_select_before.less: -------------------------------------------------------------------------------- 1 | 2 | @import "./weui_select"; 3 | 4 | .weui_select_before { 5 | padding-right:@weuiCellGapH !important; 6 | .weui_select{width:auto;} 7 | .weui_cell_hd { 8 | position:relative; 9 | &:after { 10 | .setRightLine(@weuiCellBorderColor); 11 | } 12 | &:before{ 13 | content: " "; 14 | .setArrow_Wap(right, 6px, #C8C8CD, 2px); 15 | 16 | position: absolute; 17 | top: 50%; 18 | right: @weuiCellGapH; 19 | margin-top: -3px; 20 | } 21 | } 22 | .weui_cell_bd { 23 | padding-left:@weuiCellGapH; 24 | &:after{ 25 | display:none; 26 | } 27 | } 28 | } -------------------------------------------------------------------------------- /lib/cells/weui_form/weui_vcode.less: -------------------------------------------------------------------------------- 1 | 2 | 3 | .weui_vcode { 4 | padding-top: 0 !important; 5 | padding-right: 0 !important; 6 | padding-bottom: 0 !important; 7 | .weui_cell_ft { 8 | img { 9 | margin-left: 5px; 10 | height: @weuiCellHeight; 11 | vertical-align: middle; 12 | } 13 | } 14 | } -------------------------------------------------------------------------------- /lib/cells/weui_switch.less: -------------------------------------------------------------------------------- 1 | 2 | @weuiSwitchHeight: 32px; 3 | .weui_cell_switch{ 4 | padding-top: (@weuiCellHeight - @weuiSwitchHeight) / 2 !important; 5 | padding-bottom: (@weuiCellHeight - @weuiSwitchHeight) / 2 !important; 6 | } 7 | .weui_switch{ 8 | appearance: none; 9 | position: relative; 10 | width: 52px; 11 | height: @weuiSwitchHeight; 12 | border: 1px solid #DFDFDF; 13 | outline: 0; 14 | border-radius: 16px; 15 | box-sizing: border-box; 16 | background: #DFDFDF; 17 | &:before{ 18 | content: " "; 19 | position: absolute; 20 | top: 0; 21 | left: 0; 22 | width: 50px; 23 | height: @weuiSwitchHeight - 2; 24 | border-radius: 15px; 25 | background-color: #FDFDFD; 26 | transition:transform .3s; 27 | } 28 | &:after{ 29 | content: " "; 30 | position: absolute; 31 | top: 0; 32 | left: 0; 33 | width: @weuiSwitchHeight - 2; 34 | height: @weuiSwitchHeight - 2; 35 | border-radius: 15px; 36 | background-color: #FFFFFF; 37 | box-shadow: 0 1px 3px rgba(0, 0, 0, 0.4); 38 | transition:transform .3s; 39 | } 40 | 41 | &:checked{ 42 | border-color: #04BE02; 43 | background-color: #04BE02; 44 | &:before{ 45 | transform: scale(0); 46 | } 47 | &:after{ 48 | transform: translateX(20px); 49 | } 50 | } 51 | } -------------------------------------------------------------------------------- /lib/mask/style.less: -------------------------------------------------------------------------------- 1 | @import "../base/fn"; 2 | 3 | .weui_mask { 4 | position: fixed; 5 | z-index: 1; 6 | width: 100%; 7 | height: 100%; 8 | top: 0; 9 | left: 0; 10 | background: rgba(0, 0, 0, .6); 11 | } 12 | 13 | .weui_mask_transparent { 14 | position: fixed; 15 | z-index: 1; 16 | width: 100%; 17 | height: 100%; 18 | top: 0; 19 | left: 0; 20 | } 21 | 22 | .weui_mask_transition_fade{ 23 | display: none; 24 | position: fixed; 25 | z-index: 1; 26 | width: 100%; 27 | height: 100%; 28 | top: 0; 29 | left: 0; 30 | background: rgba(0,0,0,.6); 31 | .animated; 32 | .fadeIn; 33 | } 34 | .weui_fade_toggle{ 35 | background: rgba(0,0,0,.6); 36 | } -------------------------------------------------------------------------------- /lib/message/style.less: -------------------------------------------------------------------------------- 1 | @import "../base/fn"; 2 | 3 | .weui_msg { 4 | padding-top: @weuiMsgPaddingTop; 5 | text-align: center; 6 | 7 | .weui_icon_area { 8 | margin-bottom: @weuiMsgIconGap; 9 | } 10 | 11 | .weui_text_area { 12 | margin-bottom: @weuiMsgTextGap; 13 | padding:0 20px; 14 | } 15 | .weui_msg_title { 16 | margin-bottom: @weuiMsgTitleGap; 17 | font-weight: 400; 18 | font-size: 20px; 19 | } 20 | .weui_msg_desc { 21 | font-size: 14px; 22 | color: @globalTextColor; 23 | } 24 | 25 | .weui_opr_area { 26 | margin-bottom: @weuiMsgOprGap; 27 | } 28 | 29 | .weui_extra_area { 30 | margin-bottom: @weuiMsgExtraAreaGap; 31 | font-size: 14px; 32 | color: @globalTextColor; 33 | a{color: @globalLinkColor;} 34 | } 35 | } 36 | 37 | @media screen and (min-height: @weuiMsgExtraAreaOfMinHeight) { 38 | .weui_extra_area { 39 | position: fixed; 40 | left: 0; 41 | bottom: 0; 42 | width: 100%; 43 | text-align: center; 44 | } 45 | } -------------------------------------------------------------------------------- /lib/page/page-header.js: -------------------------------------------------------------------------------- 1 | "use strict"; 2 | 3 | Object.defineProperty(exports, "__esModule", { 4 | value: true 5 | }); 6 | 7 | var _react = require("react"); 8 | 9 | var _react2 = _interopRequireDefault(_react); 10 | 11 | function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } 12 | 13 | var PageHeader = function PageHeader(props) { 14 | var desc = props.desc ? _react2.default.createElement( 15 | "p", 16 | { className: "page_desc" }, 17 | props.desc 18 | ) : null; 19 | return _react2.default.createElement( 20 | "div", 21 | { className: "hd" }, 22 | _react2.default.createElement( 23 | "h1", 24 | { className: "page_title" }, 25 | props.title 26 | ), 27 | desc 28 | ); 29 | }; 30 | 31 | exports.default = PageHeader; -------------------------------------------------------------------------------- /lib/progress/index.js: -------------------------------------------------------------------------------- 1 | 'use strict'; 2 | 3 | Object.defineProperty(exports, "__esModule", { 4 | value: true 5 | }); 6 | 7 | var _react = require('react'); 8 | 9 | var _react2 = _interopRequireDefault(_react); 10 | 11 | var _style = require('./style'); 12 | 13 | var _style2 = _interopRequireDefault(_style); 14 | 15 | var _classnames = require('classnames'); 16 | 17 | var _classnames2 = _interopRequireDefault(_classnames); 18 | 19 | function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } 20 | 21 | var Progress = function Progress(props) { 22 | var className = (0, _classnames2.default)('weui_progress', props.className); 23 | var prgstyle = { 24 | width: props.percent + '%' 25 | }; 26 | 27 | return _react2.default.createElement( 28 | 'div', 29 | { className: className }, 30 | _react2.default.createElement( 31 | 'div', 32 | { className: 'weui_progress_bar' }, 33 | _react2.default.createElement('div', { className: 'weui_progress_inner_bar', style: prgstyle }) 34 | ), 35 | _react2.default.createElement( 36 | 'a', 37 | { href: 'javascript:;', className: 'weui_progress_opr' }, 38 | props.children 39 | ) 40 | ); 41 | }; 42 | 43 | Progress.propTypes = { 44 | className: _react2.default.PropTypes.string, 45 | percent: _react2.default.PropTypes.number 46 | }; 47 | 48 | Progress.defaultProps = { 49 | className: '', 50 | percent: 0 51 | }; 52 | 53 | exports.default = Progress; -------------------------------------------------------------------------------- /lib/progress/style.less: -------------------------------------------------------------------------------- 1 | @import "../base/fn"; 2 | 3 | .weui_progress { 4 | display: flex; 5 | align-items: center; 6 | } 7 | 8 | .weui_progress_bar { 9 | background-color: @weuiProgressBg; 10 | height: @weuiProgressHeight; 11 | flex: 1; 12 | } 13 | 14 | .weui_progress_inner_bar { 15 | width: 0; 16 | height: 100%; 17 | background-color: @weuiProgressColor; 18 | } 19 | 20 | .weui_progress_opr { 21 | display: block; 22 | margin-left: 15px; 23 | font-size: 0; 24 | } -------------------------------------------------------------------------------- /lib/swiper/item.js: -------------------------------------------------------------------------------- 1 | 'use strict'; 2 | 3 | Object.defineProperty(exports, "__esModule", { 4 | value: true 5 | }); 6 | 7 | var _react = require('react'); 8 | 9 | var _react2 = _interopRequireDefault(_react); 10 | 11 | var _style = require('./style'); 12 | 13 | var _style2 = _interopRequireDefault(_style); 14 | 15 | var _classnames = require('classnames'); 16 | 17 | var _classnames2 = _interopRequireDefault(_classnames); 18 | 19 | function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } 20 | 21 | var SwiperItem = function SwiperItem(props) { 22 | var className = (0, _classnames2.default)('item', props.className); 23 | 24 | return _react2.default.createElement( 25 | 'div', 26 | { className: className }, 27 | props.children 28 | ); 29 | }; 30 | 31 | SwiperItem.propTypes = { 32 | className: _react2.default.PropTypes.string 33 | }; 34 | 35 | SwiperItem.defaultProps = { 36 | className: '' 37 | }; 38 | 39 | exports.default = SwiperItem; -------------------------------------------------------------------------------- /lib/swiper/style.less: -------------------------------------------------------------------------------- 1 | @import "../base/fn"; 2 | 3 | .swiperwrapper { 4 | position: relative; 5 | padding: 1px 0; 6 | background-color: @weuiCellBg; 7 | overflow: auto; 8 | &:before { 9 | .setTopLine(@weuiCellBorderColor); 10 | } 11 | &:after { 12 | .setBottomLine(@weuiCellBorderColor); 13 | } 14 | } 15 | 16 | .swiper { 17 | height: 100%; 18 | overflow: hidden; 19 | transition: all 0.3s ease; 20 | 21 | 22 | } 23 | .swipernav{ 24 | position: absolute; 25 | bottom: 0; 26 | right: 0; 27 | height: 20px; 28 | margin-right: 10px; 29 | 30 | .bullet{ 31 | width: 10px; 32 | height: 10px; 33 | border-radius: 5px; 34 | background-color: rgba(138, 138, 138, 0.25); 35 | display: inline-block; 36 | margin: 3px 1px; 37 | 38 | &.active{ 39 | background-color: @monokaiGreen; 40 | } 41 | } 42 | } 43 | .item { 44 | height: 100%; 45 | background-position: center center; 46 | background-size: cover; 47 | position: relative; 48 | overflow: hidden; 49 | float: left; 50 | 51 | &.active{ 52 | .animated{ 53 | animation-fill-mode: both; 54 | opacity: 1; 55 | } 56 | } 57 | &:not(.active){ 58 | .animated{ 59 | animation: none; 60 | opacity: 0; 61 | } 62 | } 63 | } 64 | 65 | .item{ 66 | color: @globalTextColor; 67 | background-color: @weuiCellBg; 68 | } 69 | -------------------------------------------------------------------------------- /lib/toast/style.less: -------------------------------------------------------------------------------- 1 | @import "../base/fn"; 2 | 3 | .weui_toast { 4 | position: fixed; 5 | z-index: 3; 6 | width: 7.6em; 7 | min-height: 7.6em; 8 | top: 180px; 9 | left: 50%; 10 | margin-left: -3.8em; 11 | background: rgba(40, 40, 40, 0.75); 12 | text-align: center; 13 | border-radius: 5px; 14 | color: #FFFFFF; 15 | } 16 | .weui_icon_toast { 17 | margin: 22px 0 0; 18 | display: block; 19 | &:before { 20 | content: '\EA08'; 21 | color: #FFFFFF; 22 | font-size: 55px; 23 | } 24 | } 25 | .weui_toast_content { 26 | margin: 0 0 15px; 27 | } 28 | 29 | 30 | 31 | // loading toast 32 | .weui_loading_toast{ 33 | .weui_toast_content{margin-top:64%;font-size:14px;} 34 | } 35 | .weui_loading{ 36 | position: absolute; width: 0px; z-index: 2000000000; left: 50%; top: 38%; 37 | } -------------------------------------------------------------------------------- /lib/utils/events.js: -------------------------------------------------------------------------------- 1 | "use strict"; 2 | 3 | module.exports = { 4 | getMousePosition: function getMousePosition(event) { 5 | return { 6 | x: event.pageX, 7 | y: event.pageY 8 | }; 9 | }, 10 | getTouchPosition: function getTouchPosition(event) { 11 | return { 12 | x: event.touches[0].pageX, 13 | y: event.touches[0].pageY 14 | }; 15 | }, 16 | pauseEvent: function pauseEvent(event) { 17 | event.stopPropagation(); 18 | event.preventDefault(); 19 | event.returnValue = false; 20 | event.cancelBubble = true; 21 | }, 22 | addEventsToDocument: function addEventsToDocument(eventMap) { 23 | for (var key in eventMap) { 24 | document.addEventListener(key, eventMap[key], false); 25 | } 26 | }, 27 | removeEventsFromDocument: function removeEventsFromDocument(eventMap) { 28 | for (var key in eventMap) { 29 | document.removeEventListener(key, eventMap[key], false); 30 | } 31 | }, 32 | targetIsDescendant: function targetIsDescendant(event, parent) { 33 | var node = event.target; 34 | while (node !== null) { 35 | if (node === parent) return true; 36 | node = node.parentNode; 37 | } 38 | return false; 39 | } 40 | }; -------------------------------------------------------------------------------- /lib/utils/mobiledetect.js: -------------------------------------------------------------------------------- 1 | 'use strict'; 2 | 3 | var _mobileDetect = require('mobile-detect'); 4 | 5 | var _mobileDetect2 = _interopRequireDefault(_mobileDetect); 6 | 7 | function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } 8 | 9 | var md = new _mobileDetect2.default(window.navigator.userAgent); 10 | 11 | module.exports = { 12 | iOSVer: md.version('iOS') ? md.version('iOS') : null, 13 | androidVer: md.version('Android') ? md.version('Android') : null, 14 | isIOS: md.os() === 'iOS', 15 | isIOS8: md.os() === 'iOS' && parseFloat(md.version('iOS')) >= 8 && parseFloat(md.version('iOS')) <= 9, 16 | isIOS9: md.os() === 'iOS' && parseFloat(md.version('iOS')) >= 9 && parseFloat(md.version('iOS')) <= 10, 17 | isAndroid: md.os() === 'AndroidOS', 18 | isWindow: md.os() === 'WindowsMobileOS' || md.os() === 'WindowsPhoneOS', 19 | isMobile: md.mobile() !== null ? true : false, 20 | isWechat: md.match('MicroMessenger') ? true : false, 21 | wechatVer: md.version('MicroMessenger') ? md.version('MicroMessenger') : null 22 | }; -------------------------------------------------------------------------------- /react-weui.sublime-project: -------------------------------------------------------------------------------- 1 | { 2 | "folders": 3 | [ 4 | { 5 | "path": "." 6 | } 7 | ], 8 | "settings": 9 | { 10 | "FuzzyFilePath": 11 | { 12 | } 13 | } 14 | } 15 | -------------------------------------------------------------------------------- /src/example/app-template.js: -------------------------------------------------------------------------------- 1 | import React from 'react'; 2 | 3 | 4 | export default ( props ) => { 5 | return ( 6 |
7 | { props.children } 8 |
9 | ) 10 | } -------------------------------------------------------------------------------- /src/example/pages/page-actionsheet.jsx: -------------------------------------------------------------------------------- 1 | import React from 'react'; 2 | import Button from '../../style/components/button'; 3 | import Page from '../../style/components/page'; 4 | import Actionsheet from '../../style/components/actionsheet'; 5 | 6 | class PageActionsheet extends React.Component { 7 | constructor(props) { 8 | super(props); 9 | this.toggleActionsheet = this.toggleActionsheet.bind(this); 10 | } 11 | 12 | toggleActionsheet(){ 13 | let as1 = this.refs.as1; 14 | as1.setState({'show':!as1.state.show}); 15 | } 16 | 17 | render() { 18 | let actions = [ 19 | {label:"取消",onClick:this.toggleActionsheet.bind(this)}, 20 | ]; 21 | let menus = [ 22 | {label:"示例菜单",onClick:this.toggleActionsheet}, 23 | {label:"示例菜单",onClick:this.toggleActionsheet}, 24 | {label:"示例菜单",onClick:this.toggleActionsheet}, 25 | {label:"示例菜单",onClick:this.toggleActionsheet} 26 | ]; 27 | 28 | return ( 29 | 30 |
31 | 36 | 37 |
38 |
39 | ); 40 | } 41 | } 42 | 43 | 44 | export default PageActionsheet; -------------------------------------------------------------------------------- /src/example/pages/page-button.jsx: -------------------------------------------------------------------------------- 1 | import React from 'react'; 2 | import Button from '../../style/components/button'; 3 | import Page from '../../style/components/page'; 4 | 5 | const PageButton = (props) => { 6 | 7 | return ( 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 |
22 |
23 |
24 | ); 25 | }; 26 | 27 | 28 | export default PageButton; -------------------------------------------------------------------------------- /src/example/pages/page-message.jsx: -------------------------------------------------------------------------------- 1 | import React from 'react'; 2 | import Message from '../../style/components/message'; 3 | import Page from '../../style/components/page'; 4 | 5 | class PageMessage extends React.Component { 6 | constructor(props) { 7 | super(props); 8 | } 9 | 10 | render() { 11 | let actions = [ 12 | {label:"确定",type:"primary"}, 13 | {label:"取消"}, 14 | ]; 15 | 16 | return ( 17 | 18 | } 20 | title="操作成功" 21 | extra={查看详情} 22 | actions={actions} 23 | > 24 | 内容详情,可根据实际需要安排 25 | 26 | 27 | ); 28 | } 29 | } 30 | 31 | 32 | export default PageMessage; -------------------------------------------------------------------------------- /src/example/pages/page-swiper.jsx: -------------------------------------------------------------------------------- 1 | import React from 'react'; 2 | import Swiper from '../../style/components/swiper'; 3 | import SwiperItem from '../../style/components/swiper/item'; 4 | import Page from '../../style/components/page'; 5 | 6 | const PageSwiper = (props) => { 7 | 8 | return ( 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | 31 | ); 32 | }; 33 | 34 | 35 | export default PageSwiper; -------------------------------------------------------------------------------- /src/example/pages/page-toast.jsx: -------------------------------------------------------------------------------- 1 | import React from 'react'; 2 | import ReactDOM from 'react-dom'; 3 | import Button from '../../style/components/button' 4 | import Page from '../../style/components/page'; 5 | import Toast from '../../style/components/toast' 6 | 7 | 8 | const toast1 = { 9 | text: "已完", 10 | loading: false, 11 | time:3000 12 | }; 13 | const toast2 = { 14 | text: "数据加载中", 15 | loading: true, 16 | time: 1500 17 | }; 18 | 19 | class PageToast extends React.Component { 20 | constructor(props) { 21 | super(props); 22 | } 23 | 24 | showToast(toast){ 25 | let container = document.getElementById('toasts') 26 | ReactDOM.unmountComponentAtNode(container); 27 | let toastinstance = ReactDOM.render({toast.text},container); 28 | } 29 | 30 | render() { 31 | return ( 32 | 33 |
34 | 39 | 44 |
45 |
46 | 47 | ); 48 | } 49 | } 50 | 51 | 52 | export default PageToast; -------------------------------------------------------------------------------- /src/style/components/actionsheet/style.less: -------------------------------------------------------------------------------- 1 | @import "../base/fn"; 2 | @bgColor:#ECECEC; 3 | .weui_actionsheet { 4 | position: fixed; 5 | left: 0; 6 | bottom: 0; 7 | transform: translate(0, 100%); 8 | backface-visibility: hidden; 9 | z-index: 2; 10 | width: 100%; 11 | background-color: @pageDefaultBackgroundColor; 12 | //slide up animation 13 | transition: transform .3s; 14 | } 15 | .weui_actionsheet_menu{ 16 | background-color: #FFFFFF; 17 | } 18 | .weui_actionsheet_action { 19 | margin-top: 6px; 20 | background-color: #FFFFFF; 21 | } 22 | .weui_actionsheet_cell { 23 | position: relative; 24 | padding: 10px 0; 25 | text-align: center; 26 | font-size: 18px; 27 | &:before { 28 | .setTopLine(@weuiCellBorderColor); 29 | } 30 | &:active{ 31 | background-color: @bgColor; 32 | } 33 | &:first-child{ 34 | &:before{ 35 | display: none; 36 | } 37 | } 38 | } 39 | 40 | //actionSheet aniamtion 41 | .weui_actionsheet_toggle{ 42 | transform: translate(0, 0); 43 | } -------------------------------------------------------------------------------- /src/style/components/article/__test__/index.spec.jsx: -------------------------------------------------------------------------------- 1 | import React from 'react'; 2 | import { shallow,describeWithDOM,mount,spyLifecycle, sinon } from 'enzyme'; 3 | import Article from '../index'; 4 | import {expect} from 'chai'; 5 | 6 | describe('Article', () => { 7 | it('[Shallow]should have default weui_article class', () => { 8 | const wrapper = shallow(
); 9 | expect(wrapper.hasClass('weui_article')).to.be.true; 10 | }); 11 | 12 | it('[Shallow]should have custom class', () => { 13 | const wrapper = shallow(
); 14 | expect(wrapper.hasClass('weui_article')).to.be.true; 15 | expect(wrapper.hasClass('test')).to.be.true; 16 | }); 17 | }); -------------------------------------------------------------------------------- /src/style/components/article/index.jsx: -------------------------------------------------------------------------------- 1 | import React from 'react'; 2 | import style from './style'; 3 | import classNames from 'classnames'; 4 | 5 | const Article = (props) => { 6 | let className = classNames('weui_article',props.className) 7 | 8 | return ( 9 |
10 | {props.children} 11 |
12 | ); 13 | } 14 | 15 | Article.propTypes = { 16 | className: React.PropTypes.string, 17 | }; 18 | 19 | Article.defaultProps = { 20 | className: '' 21 | }; 22 | 23 | export default Article; -------------------------------------------------------------------------------- /src/style/components/article/style.less: -------------------------------------------------------------------------------- 1 | @import "../base/fn"; 2 | 3 | .weui_article { 4 | padding: 20px 15px; 5 | font-size: 15px; 6 | section { 7 | margin-bottom: 1.5em; 8 | } 9 | h1 { 10 | font-size: 17px; 11 | font-weight:400; 12 | margin-bottom: .75em; 13 | } 14 | h2 { 15 | font-size: 16px; 16 | font-weight:400; 17 | margin-bottom: .3em; 18 | } 19 | h3 { 20 | font-weight:400; 21 | font-size: 15px; 22 | } 23 | } -------------------------------------------------------------------------------- /src/style/components/base/fn.less: -------------------------------------------------------------------------------- 1 | // mixin 2 | @import "./mixin/mobile"; 3 | @import "./mixin/setOnepx"; 4 | @import "./mixin/setArrow"; 5 | @import "./mixin/animate"; 6 | 7 | // variable 8 | @import "./variable/global"; 9 | @import "./variable/monokai"; 10 | 11 | 12 | @import "./variable/weui_cell"; 13 | @import "./variable/weui_button"; 14 | @import "./variable/weui_msg"; 15 | @import "./variable/weui_progress"; 16 | 17 | // icon 18 | @import "./icon/weui_font"; 19 | @import "./icon/weui_icon_font"; -------------------------------------------------------------------------------- /src/style/components/base/mixin/animate/animated.less: -------------------------------------------------------------------------------- 1 | body { 2 | -webkit-backface-visibility: hidden; 3 | } 4 | 5 | .animated(@animationDurationTime: 1s; @animationDelayTime: 0s; @animationFillMode: both) { 6 | -webkit-animation-duration: @animationDurationTime; 7 | -moz-animation-duration: @animationDurationTime; 8 | -o-animation-duration: @animationDurationTime; 9 | animation-duration: @animationDurationTime; 10 | -webkit-animation-delay: @animationDelayTime; 11 | -moz-animation-delay: @animationDelayTime; 12 | -o-animation-delay: @animationDelayTime; 13 | animation-delay: @animationDelayTime; 14 | -webkit-animation-fill-mode: @animationFillMode; 15 | -moz-animation-fill-mode: @animationFillMode; 16 | -o-animation-fill-mode: @animationFillMode; 17 | animation-fill-mode: @animationFillMode; 18 | } 19 | -------------------------------------------------------------------------------- /src/style/components/base/mixin/animate/bounce.less: -------------------------------------------------------------------------------- 1 | @-webkit-keyframes bounce { 2 | 0%, 20%, 50%, 80%, 100% {-webkit-transform: translateY(0);} 3 | 40% {-webkit-transform: translateY(-30px);} 4 | 60% {-webkit-transform: translateY(-15px);} 5 | } 6 | 7 | @-moz-keyframes bounce { 8 | 0%, 20%, 50%, 80%, 100% {-moz-transform: translateY(0);} 9 | 40% {-moz-transform: translateY(-30px);} 10 | 60% {-moz-transform: translateY(-15px);} 11 | } 12 | 13 | @-o-keyframes bounce { 14 | 0%, 20%, 50%, 80%, 100% {-o-transform: translateY(0);} 15 | 40% {-o-transform: translateY(-30px);} 16 | 60% {-o-transform: translateY(-15px);} 17 | } 18 | @keyframes bounce { 19 | 0%, 20%, 50%, 80%, 100% {transform: translateY(0);} 20 | 40% {transform: translateY(-30px);} 21 | 60% {transform: translateY(-15px);} 22 | } 23 | 24 | .bounce { 25 | -webkit-animation-name: bounce; 26 | -moz-animation-name: bounce; 27 | -o-animation-name: bounce; 28 | animation-name: bounce; 29 | } -------------------------------------------------------------------------------- /src/style/components/base/mixin/animate/bounceIn.less: -------------------------------------------------------------------------------- 1 | @-webkit-keyframes bounceIn { 2 | 0% { 3 | opacity: 0; 4 | -webkit-transform: scale(.3); 5 | } 6 | 7 | 50% { 8 | opacity: 1; 9 | -webkit-transform: scale(1.05); 10 | } 11 | 12 | 70% { 13 | -webkit-transform: scale(.9); 14 | } 15 | 16 | 100% { 17 | -webkit-transform: scale(1); 18 | } 19 | } 20 | 21 | @-moz-keyframes bounceIn { 22 | 0% { 23 | opacity: 0; 24 | -moz-transform: scale(.3); 25 | } 26 | 27 | 50% { 28 | opacity: 1; 29 | -moz-transform: scale(1.05); 30 | } 31 | 32 | 70% { 33 | -moz-transform: scale(.9); 34 | } 35 | 36 | 100% { 37 | -moz-transform: scale(1); 38 | } 39 | } 40 | 41 | @-o-keyframes bounceIn { 42 | 0% { 43 | opacity: 0; 44 | -o-transform: scale(.3); 45 | } 46 | 47 | 50% { 48 | opacity: 1; 49 | -o-transform: scale(1.05); 50 | } 51 | 52 | 70% { 53 | -o-transform: scale(.9); 54 | } 55 | 56 | 100% { 57 | -o-transform: scale(1); 58 | } 59 | } 60 | 61 | @keyframes bounceIn { 62 | 0% { 63 | opacity: 0; 64 | transform: scale(.3); 65 | } 66 | 67 | 50% { 68 | opacity: 1; 69 | transform: scale(1.05); 70 | } 71 | 72 | 70% { 73 | transform: scale(.9); 74 | } 75 | 76 | 100% { 77 | transform: scale(1); 78 | } 79 | } 80 | 81 | .bounceIn { 82 | -webkit-animation-name: bounceIn; 83 | -moz-animation-name: bounceIn; 84 | -o-animation-name: bounceIn; 85 | animation-name: bounceIn; 86 | } -------------------------------------------------------------------------------- /src/style/components/base/mixin/animate/bounceInUp.less: -------------------------------------------------------------------------------- 1 | @-webkit-keyframes bounceInUp { 2 | 0% { 3 | opacity: 0; 4 | -webkit-transform: translateY(2000px); 5 | } 6 | 7 | 60% { 8 | opacity: 1; 9 | -webkit-transform: translateY(-30px); 10 | } 11 | 12 | 80% { 13 | -webkit-transform: translateY(10px); 14 | } 15 | 16 | 100% { 17 | -webkit-transform: translateY(0); 18 | } 19 | } 20 | @-moz-keyframes bounceInUp { 21 | 0% { 22 | opacity: 0; 23 | -moz-transform: translateY(2000px); 24 | } 25 | 26 | 60% { 27 | opacity: 1; 28 | -moz-transform: translateY(-30px); 29 | } 30 | 31 | 80% { 32 | -moz-transform: translateY(10px); 33 | } 34 | 35 | 100% { 36 | -moz-transform: translateY(0); 37 | } 38 | } 39 | 40 | @-o-keyframes bounceInUp { 41 | 0% { 42 | opacity: 0; 43 | -o-transform: translateY(2000px); 44 | } 45 | 46 | 60% { 47 | opacity: 1; 48 | -o-transform: translateY(-30px); 49 | } 50 | 51 | 80% { 52 | -o-transform: translateY(10px); 53 | } 54 | 55 | 100% { 56 | -o-transform: translateY(0); 57 | } 58 | } 59 | 60 | @keyframes bounceInUp { 61 | 0% { 62 | opacity: 0; 63 | transform: translateY(2000px); 64 | } 65 | 66 | 60% { 67 | opacity: 1; 68 | transform: translateY(-30px); 69 | } 70 | 71 | 80% { 72 | transform: translateY(10px); 73 | } 74 | 75 | 100% { 76 | transform: translateY(0); 77 | } 78 | } 79 | 80 | .bounceInUp { 81 | -webkit-animation-name: bounceInUp; 82 | -moz-animation-name: bounceInUp; 83 | -o-animation-name: bounceInUp; 84 | animation-name: bounceInUp; 85 | } -------------------------------------------------------------------------------- /src/style/components/base/mixin/animate/bounceOut.less: -------------------------------------------------------------------------------- 1 | @-webkit-keyframes bounceOut { 2 | 0% { 3 | -webkit-transform: scale(1); 4 | } 5 | 6 | 25% { 7 | -webkit-transform: scale(.95); 8 | } 9 | 10 | 50% { 11 | opacity: 1; 12 | -webkit-transform: scale(1.1); 13 | } 14 | 15 | 100% { 16 | opacity: 0; 17 | -webkit-transform: scale(.3); 18 | } 19 | } 20 | 21 | @-moz-keyframes bounceOut { 22 | 0% { 23 | -moz-transform: scale(1); 24 | } 25 | 26 | 25% { 27 | -moz-transform: scale(.95); 28 | } 29 | 30 | 50% { 31 | opacity: 1; 32 | -moz-transform: scale(1.1); 33 | } 34 | 35 | 100% { 36 | opacity: 0; 37 | -moz-transform: scale(.3); 38 | } 39 | } 40 | 41 | @-o-keyframes bounceOut { 42 | 0% { 43 | -o-transform: scale(1); 44 | } 45 | 46 | 25% { 47 | -o-transform: scale(.95); 48 | } 49 | 50 | 50% { 51 | opacity: 1; 52 | -o-transform: scale(1.1); 53 | } 54 | 55 | 100% { 56 | opacity: 0; 57 | -o-transform: scale(.3); 58 | } 59 | } 60 | 61 | @keyframes bounceOut { 62 | 0% { 63 | transform: scale(1); 64 | } 65 | 66 | 25% { 67 | transform: scale(.95); 68 | } 69 | 70 | 50% { 71 | opacity: 1; 72 | transform: scale(1.1); 73 | } 74 | 75 | 100% { 76 | opacity: 0; 77 | transform: scale(.3); 78 | } 79 | } 80 | 81 | .bounceOut { 82 | -webkit-animation-name: bounceOut; 83 | -moz-animation-name: bounceOut; 84 | -o-animation-name: bounceOut; 85 | animation-name: bounceOut; 86 | } -------------------------------------------------------------------------------- /src/style/components/base/mixin/animate/bounceOutDown.less: -------------------------------------------------------------------------------- 1 | @-webkit-keyframes bounceOutDown { 2 | 0% { 3 | -webkit-transform: translateY(0); 4 | } 5 | 6 | 20% { 7 | opacity: 1; 8 | -webkit-transform: translateY(-20px); 9 | } 10 | 11 | 100% { 12 | opacity: 0; 13 | -webkit-transform: translateY(2000px); 14 | } 15 | } 16 | 17 | @-moz-keyframes bounceOutDown { 18 | 0% { 19 | -moz-transform: translateY(0); 20 | } 21 | 22 | 20% { 23 | opacity: 1; 24 | -moz-transform: translateY(-20px); 25 | } 26 | 27 | 100% { 28 | opacity: 0; 29 | -moz-transform: translateY(2000px); 30 | } 31 | } 32 | 33 | @-o-keyframes bounceOutDown { 34 | 0% { 35 | -o-transform: translateY(0); 36 | } 37 | 38 | 20% { 39 | opacity: 1; 40 | -o-transform: translateY(-20px); 41 | } 42 | 43 | 100% { 44 | opacity: 0; 45 | -o-transform: translateY(2000px); 46 | } 47 | } 48 | 49 | @keyframes bounceOutDown { 50 | 0% { 51 | transform: translateY(0); 52 | } 53 | 54 | 20% { 55 | opacity: 1; 56 | transform: translateY(-20px); 57 | } 58 | 59 | 100% { 60 | opacity: 0; 61 | transform: translateY(2000px); 62 | } 63 | } 64 | 65 | .bounceOutDown { 66 | -webkit-animation-name: bounceOutDown; 67 | -moz-animation-name: bounceOutDown; 68 | -o-animation-name: bounceOutDown; 69 | animation-name: bounceOutDown; 70 | } -------------------------------------------------------------------------------- /src/style/components/base/mixin/animate/bounceOutLeft.less: -------------------------------------------------------------------------------- 1 | @-webkit-keyframes bounceOutLeft { 2 | 0% { 3 | -webkit-transform: translateX(0); 4 | } 5 | 6 | 20% { 7 | opacity: 1; 8 | -webkit-transform: translateX(20px); 9 | } 10 | 11 | 100% { 12 | opacity: 0; 13 | -webkit-transform: translateX(-2000px); 14 | } 15 | } 16 | 17 | @-moz-keyframes bounceOutLeft { 18 | 0% { 19 | -moz-transform: translateX(0); 20 | } 21 | 22 | 20% { 23 | opacity: 1; 24 | -moz-transform: translateX(20px); 25 | } 26 | 27 | 100% { 28 | opacity: 0; 29 | -moz-transform: translateX(-2000px); 30 | } 31 | } 32 | 33 | @-o-keyframes bounceOutLeft { 34 | 0% { 35 | -o-transform: translateX(0); 36 | } 37 | 38 | 20% { 39 | opacity: 1; 40 | -o-transform: translateX(20px); 41 | } 42 | 43 | 100% { 44 | opacity: 0; 45 | -o-transform: translateX(-2000px); 46 | } 47 | } 48 | 49 | @keyframes bounceOutLeft { 50 | 0% { 51 | transform: translateX(0); 52 | } 53 | 54 | 20% { 55 | opacity: 1; 56 | transform: translateX(20px); 57 | } 58 | 59 | 100% { 60 | opacity: 0; 61 | transform: translateX(-2000px); 62 | } 63 | } 64 | 65 | .bounceOutLeft { 66 | -webkit-animation-name: bounceOutLeft; 67 | -moz-animation-name: bounceOutLeft; 68 | -o-animation-name: bounceOutLeft; 69 | animation-name: bounceOutLeft; 70 | } -------------------------------------------------------------------------------- /src/style/components/base/mixin/animate/bounceOutRight.less: -------------------------------------------------------------------------------- 1 | @-webkit-keyframes bounceOutRight { 2 | 0% { 3 | -webkit-transform: translateX(0); 4 | } 5 | 6 | 20% { 7 | opacity: 1; 8 | -webkit-transform: translateX(-20px); 9 | } 10 | 11 | 100% { 12 | opacity: 0; 13 | -webkit-transform: translateX(2000px); 14 | } 15 | } 16 | 17 | @-moz-keyframes bounceOutRight { 18 | 0% { 19 | -moz-transform: translateX(0); 20 | } 21 | 22 | 20% { 23 | opacity: 1; 24 | -moz-transform: translateX(-20px); 25 | } 26 | 27 | 100% { 28 | opacity: 0; 29 | -moz-transform: translateX(2000px); 30 | } 31 | } 32 | 33 | @-o-keyframes bounceOutRight { 34 | 0% { 35 | -o-transform: translateX(0); 36 | } 37 | 38 | 20% { 39 | opacity: 1; 40 | -o-transform: translateX(-20px); 41 | } 42 | 43 | 100% { 44 | opacity: 0; 45 | -o-transform: translateX(2000px); 46 | } 47 | } 48 | 49 | @keyframes bounceOutRight { 50 | 0% { 51 | transform: translateX(0); 52 | } 53 | 54 | 20% { 55 | opacity: 1; 56 | transform: translateX(-20px); 57 | } 58 | 59 | 100% { 60 | opacity: 0; 61 | transform: translateX(2000px); 62 | } 63 | } 64 | 65 | .bounceOutRight { 66 | -webkit-animation-name: bounceOutRight; 67 | -moz-animation-name: bounceOutRight; 68 | -o-animation-name: bounceOutRight; 69 | animation-name: bounceOutRight; 70 | } -------------------------------------------------------------------------------- /src/style/components/base/mixin/animate/bounceOutUp.less: -------------------------------------------------------------------------------- 1 | @-webkit-keyframes bounceOutUp { 2 | 0% { 3 | -webkit-transform: translateY(0); 4 | } 5 | 6 | 20% { 7 | opacity: 1; 8 | -webkit-transform: translateY(20px); 9 | } 10 | 11 | 100% { 12 | opacity: 0; 13 | -webkit-transform: translateY(-2000px); 14 | } 15 | } 16 | 17 | @-moz-keyframes bounceOutUp { 18 | 0% { 19 | -moz-transform: translateY(0); 20 | } 21 | 22 | 20% { 23 | opacity: 1; 24 | -moz-transform: translateY(20px); 25 | } 26 | 27 | 100% { 28 | opacity: 0; 29 | -moz-transform: translateY(-2000px); 30 | } 31 | } 32 | 33 | @-o-keyframes bounceOutUp { 34 | 0% { 35 | -o-transform: translateY(0); 36 | } 37 | 38 | 20% { 39 | opacity: 1; 40 | -o-transform: translateY(20px); 41 | } 42 | 43 | 100% { 44 | opacity: 0; 45 | -o-transform: translateY(-2000px); 46 | } 47 | } 48 | 49 | @keyframes bounceOutUp { 50 | 0% { 51 | transform: translateY(0); 52 | } 53 | 54 | 20% { 55 | opacity: 1; 56 | transform: translateY(20px); 57 | } 58 | 59 | 100% { 60 | opacity: 0; 61 | transform: translateY(-2000px); 62 | } 63 | } 64 | 65 | .bounceOutUp { 66 | -webkit-animation-name: bounceOutUp; 67 | -moz-animation-name: bounceOutUp; 68 | -o-animation-name: bounceOutUp; 69 | animation-name: bounceOutUp; 70 | } -------------------------------------------------------------------------------- /src/style/components/base/mixin/animate/fadeIn.less: -------------------------------------------------------------------------------- 1 | @-webkit-keyframes fadeIn { 2 | 0% {opacity: 0;} 3 | 100% {opacity: 1;} 4 | } 5 | 6 | @-moz-keyframes fadeIn { 7 | 0% {opacity: 0;} 8 | 100% {opacity: 1;} 9 | } 10 | 11 | @-o-keyframes fadeIn { 12 | 0% {opacity: 0;} 13 | 100% {opacity: 1;} 14 | } 15 | 16 | @keyframes fadeIn { 17 | 0% {opacity: 0;} 18 | 100% {opacity: 1;} 19 | } 20 | 21 | .fadeIn { 22 | -webkit-animation-name: fadeIn; 23 | -moz-animation-name: fadeIn; 24 | -o-animation-name: fadeIn; 25 | animation-name: fadeIn; 26 | } -------------------------------------------------------------------------------- /src/style/components/base/mixin/animate/fadeInDown.less: -------------------------------------------------------------------------------- 1 | @-webkit-keyframes fadeInDown { 2 | 0% { 3 | opacity: 0; 4 | -webkit-transform: translateY(-20px); 5 | } 6 | 7 | 100% { 8 | opacity: 1; 9 | -webkit-transform: translateY(0); 10 | } 11 | } 12 | 13 | @-moz-keyframes fadeInDown { 14 | 0% { 15 | opacity: 0; 16 | -moz-transform: translateY(-20px); 17 | } 18 | 19 | 100% { 20 | opacity: 1; 21 | -moz-transform: translateY(0); 22 | } 23 | } 24 | 25 | @-o-keyframes fadeInDown { 26 | 0% { 27 | opacity: 0; 28 | -ms-transform: translateY(-20px); 29 | } 30 | 31 | 100% { 32 | opacity: 1; 33 | -ms-transform: translateY(0); 34 | } 35 | } 36 | 37 | @keyframes fadeInDown { 38 | 0% { 39 | opacity: 0; 40 | transform: translateY(-20px); 41 | } 42 | 43 | 100% { 44 | opacity: 1; 45 | transform: translateY(0); 46 | } 47 | } 48 | 49 | .fadeInDown { 50 | -webkit-animation-name: fadeInDown; 51 | -moz-animation-name: fadeInDown; 52 | -o-animation-name: fadeInDown; 53 | animation-name: fadeInDown; 54 | } -------------------------------------------------------------------------------- /src/style/components/base/mixin/animate/fadeInDownBig.less: -------------------------------------------------------------------------------- 1 | @-webkit-keyframes fadeInDownBig { 2 | 0% { 3 | opacity: 0; 4 | -webkit-transform: translateY(-2000px); 5 | } 6 | 7 | 100% { 8 | opacity: 1; 9 | -webkit-transform: translateY(0); 10 | } 11 | } 12 | 13 | @-moz-keyframes fadeInDownBig { 14 | 0% { 15 | opacity: 0; 16 | -moz-transform: translateY(-2000px); 17 | } 18 | 19 | 100% { 20 | opacity: 1; 21 | -moz-transform: translateY(0); 22 | } 23 | } 24 | 25 | @-o-keyframes fadeInDownBig { 26 | 0% { 27 | opacity: 0; 28 | -o-transform: translateY(-2000px); 29 | } 30 | 31 | 100% { 32 | opacity: 1; 33 | -o-transform: translateY(0); 34 | } 35 | } 36 | 37 | @keyframes fadeInDownBig { 38 | 0% { 39 | opacity: 0; 40 | transform: translateY(-2000px); 41 | } 42 | 43 | 100% { 44 | opacity: 1; 45 | transform: translateY(0); 46 | } 47 | } 48 | 49 | .fadeInDownBig { 50 | -webkit-animation-name: fadeInDownBig; 51 | -moz-animation-name: fadeInDownBig; 52 | -o-animation-name: fadeInDownBig; 53 | animation-name: fadeInDownBig; 54 | } -------------------------------------------------------------------------------- /src/style/components/base/mixin/animate/fadeInLeft.less: -------------------------------------------------------------------------------- 1 | @-webkit-keyframes fadeInLeft { 2 | 0% { 3 | opacity: 0; 4 | -webkit-transform: translateX(-20px); 5 | } 6 | 7 | 100% { 8 | opacity: 1; 9 | -webkit-transform: translateX(0); 10 | } 11 | } 12 | 13 | @-moz-keyframes fadeInLeft { 14 | 0% { 15 | opacity: 0; 16 | -moz-transform: translateX(-20px); 17 | } 18 | 19 | 100% { 20 | opacity: 1; 21 | -moz-transform: translateX(0); 22 | } 23 | } 24 | 25 | @-o-keyframes fadeInLeft { 26 | 0% { 27 | opacity: 0; 28 | -o-transform: translateX(-20px); 29 | } 30 | 31 | 100% { 32 | opacity: 1; 33 | -o-transform: translateX(0); 34 | } 35 | } 36 | 37 | @keyframes fadeInLeft { 38 | 0% { 39 | opacity: 0; 40 | transform: translateX(-20px); 41 | } 42 | 43 | 100% { 44 | opacity: 1; 45 | transform: translateX(0); 46 | } 47 | } 48 | 49 | .fadeInLeft { 50 | -webkit-animation-name: fadeInLeft; 51 | -moz-animation-name: fadeInLeft; 52 | -o-animation-name: fadeInLeft; 53 | animation-name: fadeInLeft; 54 | } -------------------------------------------------------------------------------- /src/style/components/base/mixin/animate/fadeInLeftBig.less: -------------------------------------------------------------------------------- 1 | @-webkit-keyframes fadeInLeftBig { 2 | 0% { 3 | opacity: 0; 4 | -webkit-transform: translateX(-2000px); 5 | } 6 | 7 | 100% { 8 | opacity: 1; 9 | -webkit-transform: translateX(0); 10 | } 11 | } 12 | @-moz-keyframes fadeInLeftBig { 13 | 0% { 14 | opacity: 0; 15 | -moz-transform: translateX(-2000px); 16 | } 17 | 18 | 100% { 19 | opacity: 1; 20 | -moz-transform: translateX(0); 21 | } 22 | } 23 | @-o-keyframes fadeInLeftBig { 24 | 0% { 25 | opacity: 0; 26 | -o-transform: translateX(-2000px); 27 | } 28 | 29 | 100% { 30 | opacity: 1; 31 | -o-transform: translateX(0); 32 | } 33 | } 34 | @keyframes fadeInLeftBig { 35 | 0% { 36 | opacity: 0; 37 | transform: translateX(-2000px); 38 | } 39 | 40 | 100% { 41 | opacity: 1; 42 | transform: translateX(0); 43 | } 44 | } 45 | 46 | .fadeInLeftBig { 47 | -webkit-animation-name: fadeInLeftBig; 48 | -moz-animation-name: fadeInLeftBig; 49 | -o-animation-name: fadeInLeftBig; 50 | animation-name: fadeInLeftBig; 51 | } -------------------------------------------------------------------------------- /src/style/components/base/mixin/animate/fadeInRight.less: -------------------------------------------------------------------------------- 1 | @-webkit-keyframes fadeInRight { 2 | 0% { 3 | opacity: 0; 4 | -webkit-transform: translateX(20px); 5 | } 6 | 7 | 100% { 8 | opacity: 1; 9 | -webkit-transform: translateX(0); 10 | } 11 | } 12 | 13 | @-moz-keyframes fadeInRight { 14 | 0% { 15 | opacity: 0; 16 | -moz-transform: translateX(20px); 17 | } 18 | 19 | 100% { 20 | opacity: 1; 21 | -moz-transform: translateX(0); 22 | } 23 | } 24 | 25 | @-o-keyframes fadeInRight { 26 | 0% { 27 | opacity: 0; 28 | -o-transform: translateX(20px); 29 | } 30 | 31 | 100% { 32 | opacity: 1; 33 | -o-transform: translateX(0); 34 | } 35 | } 36 | 37 | @keyframes fadeInRight { 38 | 0% { 39 | opacity: 0; 40 | transform: translateX(20px); 41 | } 42 | 43 | 100% { 44 | opacity: 1; 45 | transform: translateX(0); 46 | } 47 | } 48 | 49 | .fadeInRight { 50 | -webkit-animation-name: fadeInRight; 51 | -moz-animation-name: fadeInRight; 52 | -o-animation-name: fadeInRight; 53 | animation-name: fadeInRight; 54 | } -------------------------------------------------------------------------------- /src/style/components/base/mixin/animate/fadeInRightBig.less: -------------------------------------------------------------------------------- 1 | @-webkit-keyframes fadeInRightBig { 2 | 0% { 3 | opacity: 0; 4 | -webkit-transform: translateX(2000px); 5 | } 6 | 7 | 100% { 8 | opacity: 1; 9 | -webkit-transform: translateX(0); 10 | } 11 | } 12 | 13 | @-moz-keyframes fadeInRightBig { 14 | 0% { 15 | opacity: 0; 16 | -moz-transform: translateX(2000px); 17 | } 18 | 19 | 100% { 20 | opacity: 1; 21 | -moz-transform: translateX(0); 22 | } 23 | } 24 | 25 | @-o-keyframes fadeInRightBig { 26 | 0% { 27 | opacity: 0; 28 | -o-transform: translateX(2000px); 29 | } 30 | 31 | 100% { 32 | opacity: 1; 33 | -o-transform: translateX(0); 34 | } 35 | } 36 | 37 | @keyframes fadeInRightBig { 38 | 0% { 39 | opacity: 0; 40 | transform: translateX(2000px); 41 | } 42 | 43 | 100% { 44 | opacity: 1; 45 | transform: translateX(0); 46 | } 47 | } 48 | 49 | .fadeInRightBig { 50 | -webkit-animation-name: fadeInRightBig; 51 | -moz-animation-name: fadeInRightBig; 52 | -o-animation-name: fadeInRightBig; 53 | animation-name: fadeInRightBig; 54 | } -------------------------------------------------------------------------------- /src/style/components/base/mixin/animate/fadeInUp.less: -------------------------------------------------------------------------------- 1 | @-webkit-keyframes fadeInUp { 2 | 0% { 3 | opacity: 0; 4 | -webkit-transform: translateY(20px); 5 | } 6 | 7 | 100% { 8 | opacity: 1; 9 | -webkit-transform: translateY(0); 10 | } 11 | } 12 | 13 | @-moz-keyframes fadeInUp { 14 | 0% { 15 | opacity: 0; 16 | -moz-transform: translateY(20px); 17 | } 18 | 19 | 100% { 20 | opacity: 1; 21 | -moz-transform: translateY(0); 22 | } 23 | } 24 | 25 | @-o-keyframes fadeInUp { 26 | 0% { 27 | opacity: 0; 28 | -o-transform: translateY(20px); 29 | } 30 | 31 | 100% { 32 | opacity: 1; 33 | -o-transform: translateY(0); 34 | } 35 | } 36 | 37 | @keyframes fadeInUp { 38 | 0% { 39 | opacity: 0; 40 | transform: translateY(20px); 41 | } 42 | 43 | 100% { 44 | opacity: 1; 45 | transform: translateY(0); 46 | } 47 | } 48 | 49 | .fadeInUp { 50 | -webkit-animation-name: fadeInUp; 51 | -moz-animation-name: fadeInUp; 52 | -o-animation-name: fadeInUp; 53 | animation-name: fadeInUp; 54 | } -------------------------------------------------------------------------------- /src/style/components/base/mixin/animate/fadeInUpBig.less: -------------------------------------------------------------------------------- 1 | @-webkit-keyframes fadeInUpBig { 2 | 0% { 3 | opacity: 0; 4 | -webkit-transform: translateY(2000px); 5 | } 6 | 7 | 100% { 8 | opacity: 1; 9 | -webkit-transform: translateY(0); 10 | } 11 | } 12 | 13 | @-moz-keyframes fadeInUpBig { 14 | 0% { 15 | opacity: 0; 16 | -moz-transform: translateY(2000px); 17 | } 18 | 19 | 100% { 20 | opacity: 1; 21 | -moz-transform: translateY(0); 22 | } 23 | } 24 | 25 | @-o-keyframes fadeInUpBig { 26 | 0% { 27 | opacity: 0; 28 | -o-transform: translateY(2000px); 29 | } 30 | 31 | 100% { 32 | opacity: 1; 33 | -o-transform: translateY(0); 34 | } 35 | } 36 | 37 | @keyframes fadeInUpBig { 38 | 0% { 39 | opacity: 0; 40 | transform: translateY(2000px); 41 | } 42 | 43 | 100% { 44 | opacity: 1; 45 | transform: translateY(0); 46 | } 47 | } 48 | 49 | .fadeInUpBig { 50 | -webkit-animation-name: fadeInUpBig; 51 | -moz-animation-name: fadeInUpBig; 52 | -o-animation-name: fadeInUpBig; 53 | animation-name: fadeInUpBig; 54 | } -------------------------------------------------------------------------------- /src/style/components/base/mixin/animate/fadeOut.less: -------------------------------------------------------------------------------- 1 | @-webkit-keyframes fadeOut { 2 | 0% {opacity: 1;} 3 | 100% {opacity: 0;} 4 | } 5 | 6 | @-moz-keyframes fadeOut { 7 | 0% {opacity: 1;} 8 | 100% {opacity: 0;} 9 | } 10 | 11 | @-o-keyframes fadeOut { 12 | 0% {opacity: 1;} 13 | 100% {opacity: 0;} 14 | } 15 | 16 | @keyframes fadeOut { 17 | 0% {opacity: 1;} 18 | 100% {opacity: 0;} 19 | } 20 | 21 | .fadeOut { 22 | -webkit-animation-name: fadeOut; 23 | -moz-animation-name: fadeOut; 24 | -o-animation-name: fadeOut; 25 | animation-name: fadeOut; 26 | } -------------------------------------------------------------------------------- /src/style/components/base/mixin/animate/fadeOutDown.less: -------------------------------------------------------------------------------- 1 | @-webkit-keyframes fadeOutDown { 2 | 0% { 3 | opacity: 1; 4 | -webkit-transform: translateY(0); 5 | } 6 | 7 | 100% { 8 | opacity: 0; 9 | -webkit-transform: translateY(20px); 10 | } 11 | } 12 | 13 | @-moz-keyframes fadeOutDown { 14 | 0% { 15 | opacity: 1; 16 | -moz-transform: translateY(0); 17 | } 18 | 19 | 100% { 20 | opacity: 0; 21 | -moz-transform: translateY(20px); 22 | } 23 | } 24 | 25 | @-o-keyframes fadeOutDown { 26 | 0% { 27 | opacity: 1; 28 | -o-transform: translateY(0); 29 | } 30 | 31 | 100% { 32 | opacity: 0; 33 | -o-transform: translateY(20px); 34 | } 35 | } 36 | 37 | @keyframes fadeOutDown { 38 | 0% { 39 | opacity: 1; 40 | transform: translateY(0); 41 | } 42 | 43 | 100% { 44 | opacity: 0; 45 | transform: translateY(20px); 46 | } 47 | } 48 | 49 | .fadeOutDown { 50 | -webkit-animation-name: fadeOutDown; 51 | -moz-animation-name: fadeOutDown; 52 | -o-animation-name: fadeOutDown; 53 | animation-name: fadeOutDown; 54 | } -------------------------------------------------------------------------------- /src/style/components/base/mixin/animate/fadeOutDownBig.less: -------------------------------------------------------------------------------- 1 | @-webkit-keyframes fadeOutDownBig { 2 | 0% { 3 | opacity: 1; 4 | -webkit-transform: translateY(0); 5 | } 6 | 7 | 100% { 8 | opacity: 0; 9 | -webkit-transform: translateY(2000px); 10 | } 11 | } 12 | 13 | @-moz-keyframes fadeOutDownBig { 14 | 0% { 15 | opacity: 1; 16 | -moz-transform: translateY(0); 17 | } 18 | 19 | 100% { 20 | opacity: 0; 21 | -moz-transform: translateY(2000px); 22 | } 23 | } 24 | 25 | @-o-keyframes fadeOutDownBig { 26 | 0% { 27 | opacity: 1; 28 | -o-transform: translateY(0); 29 | } 30 | 31 | 100% { 32 | opacity: 0; 33 | -o-transform: translateY(2000px); 34 | } 35 | } 36 | 37 | @keyframes fadeOutDownBig { 38 | 0% { 39 | opacity: 1; 40 | transform: translateY(0); 41 | } 42 | 43 | 100% { 44 | opacity: 0; 45 | transform: translateY(2000px); 46 | } 47 | } 48 | 49 | .fadeOutDownBig { 50 | -webkit-animation-name: fadeOutDownBig; 51 | -moz-animation-name: fadeOutDownBig; 52 | -o-animation-name: fadeOutDownBig; 53 | animation-name: fadeOutDownBig; 54 | } -------------------------------------------------------------------------------- /src/style/components/base/mixin/animate/fadeOutLeft.less: -------------------------------------------------------------------------------- 1 | @-webkit-keyframes fadeOutLeft { 2 | 0% { 3 | opacity: 1; 4 | -webkit-transform: translateX(0); 5 | } 6 | 7 | 100% { 8 | opacity: 0; 9 | -webkit-transform: translateX(-20px); 10 | } 11 | } 12 | 13 | @-moz-keyframes fadeOutLeft { 14 | 0% { 15 | opacity: 1; 16 | -moz-transform: translateX(0); 17 | } 18 | 19 | 100% { 20 | opacity: 0; 21 | -moz-transform: translateX(-20px); 22 | } 23 | } 24 | 25 | @-o-keyframes fadeOutLeft { 26 | 0% { 27 | opacity: 1; 28 | -o-transform: translateX(0); 29 | } 30 | 31 | 100% { 32 | opacity: 0; 33 | -o-transform: translateX(-20px); 34 | } 35 | } 36 | 37 | @keyframes fadeOutLeft { 38 | 0% { 39 | opacity: 1; 40 | transform: translateX(0); 41 | } 42 | 43 | 100% { 44 | opacity: 0; 45 | transform: translateX(-20px); 46 | } 47 | } 48 | 49 | .fadeOutLeft { 50 | -webkit-animation-name: fadeOutLeft; 51 | -moz-animation-name: fadeOutLeft; 52 | -o-animation-name: fadeOutLeft; 53 | animation-name: fadeOutLeft; 54 | } -------------------------------------------------------------------------------- /src/style/components/base/mixin/animate/fadeOutLeftBig.less: -------------------------------------------------------------------------------- 1 | @-webkit-keyframes fadeOutLeftBig { 2 | 0% { 3 | opacity: 1; 4 | -webkit-transform: translateX(0); 5 | } 6 | 7 | 100% { 8 | opacity: 0; 9 | -webkit-transform: translateX(-2000px); 10 | } 11 | } 12 | 13 | @-moz-keyframes fadeOutLeftBig { 14 | 0% { 15 | opacity: 1; 16 | -moz-transform: translateX(0); 17 | } 18 | 19 | 100% { 20 | opacity: 0; 21 | -moz-transform: translateX(-2000px); 22 | } 23 | } 24 | 25 | @-o-keyframes fadeOutLeftBig { 26 | 0% { 27 | opacity: 1; 28 | -o-transform: translateX(0); 29 | } 30 | 31 | 100% { 32 | opacity: 0; 33 | -o-transform: translateX(-2000px); 34 | } 35 | } 36 | 37 | @keyframes fadeOutLeftBig { 38 | 0% { 39 | opacity: 1; 40 | transform: translateX(0); 41 | } 42 | 43 | 100% { 44 | opacity: 0; 45 | transform: translateX(-2000px); 46 | } 47 | } 48 | 49 | .fadeOutLeftBig { 50 | -webkit-animation-name: fadeOutLeftBig; 51 | -moz-animation-name: fadeOutLeftBig; 52 | -o-animation-name: fadeOutLeftBig; 53 | animation-name: fadeOutLeftBig; 54 | } -------------------------------------------------------------------------------- /src/style/components/base/mixin/animate/fadeOutRight.less: -------------------------------------------------------------------------------- 1 | @-webkit-keyframes fadeOutRight { 2 | 0% { 3 | opacity: 1; 4 | -webkit-transform: translateX(0); 5 | } 6 | 7 | 100% { 8 | opacity: 0; 9 | -webkit-transform: translateX(20px); 10 | } 11 | } 12 | 13 | @-moz-keyframes fadeOutRight { 14 | 0% { 15 | opacity: 1; 16 | -moz-transform: translateX(0); 17 | } 18 | 19 | 100% { 20 | opacity: 0; 21 | -moz-transform: translateX(20px); 22 | } 23 | } 24 | 25 | @-o-keyframes fadeOutRight { 26 | 0% { 27 | opacity: 1; 28 | -o-transform: translateX(0); 29 | } 30 | 31 | 100% { 32 | opacity: 0; 33 | -o-transform: translateX(20px); 34 | } 35 | } 36 | 37 | @keyframes fadeOutRight { 38 | 0% { 39 | opacity: 1; 40 | transform: translateX(0); 41 | } 42 | 43 | 100% { 44 | opacity: 0; 45 | transform: translateX(20px); 46 | } 47 | } 48 | 49 | .fadeOutRight { 50 | -webkit-animation-name: fadeOutRight; 51 | -moz-animation-name: fadeOutRight; 52 | -o-animation-name: fadeOutRight; 53 | animation-name: fadeOutRight; 54 | } -------------------------------------------------------------------------------- /src/style/components/base/mixin/animate/fadeOutRightBig.less: -------------------------------------------------------------------------------- 1 | @-webkit-keyframes fadeOutRightBig { 2 | 0% { 3 | opacity: 1; 4 | -webkit-transform: translateX(0); 5 | } 6 | 7 | 100% { 8 | opacity: 0; 9 | -webkit-transform: translateX(2000px); 10 | } 11 | } 12 | @-moz-keyframes fadeOutRightBig { 13 | 0% { 14 | opacity: 1; 15 | -moz-transform: translateX(0); 16 | } 17 | 18 | 100% { 19 | opacity: 0; 20 | -moz-transform: translateX(2000px); 21 | } 22 | } 23 | @-o-keyframes fadeOutRightBig { 24 | 0% { 25 | opacity: 1; 26 | -o-transform: translateX(0); 27 | } 28 | 29 | 100% { 30 | opacity: 0; 31 | -o-transform: translateX(2000px); 32 | } 33 | } 34 | @keyframes fadeOutRightBig { 35 | 0% { 36 | opacity: 1; 37 | transform: translateX(0); 38 | } 39 | 40 | 100% { 41 | opacity: 0; 42 | transform: translateX(2000px); 43 | } 44 | } 45 | 46 | .fadeOutRightBig { 47 | -webkit-animation-name: fadeOutRightBig; 48 | -moz-animation-name: fadeOutRightBig; 49 | -o-animation-name: fadeOutRightBig; 50 | animation-name: fadeOutRightBig; 51 | } -------------------------------------------------------------------------------- /src/style/components/base/mixin/animate/fadeOutUp.less: -------------------------------------------------------------------------------- 1 | @-webkit-keyframes fadeOutUp { 2 | 0% { 3 | opacity: 1; 4 | -webkit-transform: translateY(0); 5 | } 6 | 7 | 100% { 8 | opacity: 0; 9 | -webkit-transform: translateY(-20px); 10 | } 11 | } 12 | @-moz-keyframes fadeOutUp { 13 | 0% { 14 | opacity: 1; 15 | -moz-transform: translateY(0); 16 | } 17 | 18 | 100% { 19 | opacity: 0; 20 | -moz-transform: translateY(-20px); 21 | } 22 | } 23 | @-o-keyframes fadeOutUp { 24 | 0% { 25 | opacity: 1; 26 | -o-transform: translateY(0); 27 | } 28 | 29 | 100% { 30 | opacity: 0; 31 | -o-transform: translateY(-20px); 32 | } 33 | } 34 | @keyframes fadeOutUp { 35 | 0% { 36 | opacity: 1; 37 | transform: translateY(0); 38 | } 39 | 40 | 100% { 41 | opacity: 0; 42 | transform: translateY(-20px); 43 | } 44 | } 45 | 46 | .fadeOutUp { 47 | -webkit-animation-name: fadeOutUp; 48 | -moz-animation-name: fadeOutUp; 49 | -o-animation-name: fadeOutUp; 50 | animation-name: fadeOutUp; 51 | } -------------------------------------------------------------------------------- /src/style/components/base/mixin/animate/fadeOutUpBig.less: -------------------------------------------------------------------------------- 1 | @-webkit-keyframes fadeOutUpBig { 2 | 0% { 3 | opacity: 1; 4 | -webkit-transform: translateY(0); 5 | } 6 | 7 | 100% { 8 | opacity: 0; 9 | -webkit-transform: translateY(-2000px); 10 | } 11 | } 12 | 13 | @-moz-keyframes fadeOutUpBig { 14 | 0% { 15 | opacity: 1; 16 | -moz-transform: translateY(0); 17 | } 18 | 19 | 100% { 20 | opacity: 0; 21 | -moz-transform: translateY(-2000px); 22 | } 23 | } 24 | 25 | @-o-keyframes fadeOutUpBig { 26 | 0% { 27 | opacity: 1; 28 | -o-transform: translateY(0); 29 | } 30 | 31 | 100% { 32 | opacity: 0; 33 | -o-transform: translateY(-2000px); 34 | } 35 | } 36 | 37 | @keyframes fadeOutUpBig { 38 | 0% { 39 | opacity: 1; 40 | transform: translateY(0); 41 | } 42 | 43 | 100% { 44 | opacity: 0; 45 | transform: translateY(-2000px); 46 | } 47 | } 48 | 49 | .fadeOutUpBig { 50 | -webkit-animation-name: fadeOutUpBig; 51 | -moz-animation-name: fadeOutUpBig; 52 | -o-animation-name: fadeOutUpBig; 53 | animation-name: fadeOutUpBig; 54 | } -------------------------------------------------------------------------------- /src/style/components/base/mixin/animate/flash.less: -------------------------------------------------------------------------------- 1 | @-webkit-keyframes flash { 2 | 0%, 50%, 100% {opacity: 1;} 3 | 25%, 75% {opacity: 0;} 4 | } 5 | 6 | @-moz-keyframes flash { 7 | 0%, 50%, 100% {opacity: 1;} 8 | 25%, 75% {opacity: 0;} 9 | } 10 | 11 | @-o-keyframes flash { 12 | 0%, 50%, 100% {opacity: 1;} 13 | 25%, 75% {opacity: 0;} 14 | } 15 | 16 | @keyframes flash { 17 | 0%, 50%, 100% {opacity: 1;} 18 | 25%, 75% {opacity: 0;} 19 | } 20 | 21 | .flash { 22 | -webkit-animation-name: flash; 23 | -moz-animation-name: flash; 24 | -o-animation-name: flash; 25 | animation-name: flash; 26 | } -------------------------------------------------------------------------------- /src/style/components/base/mixin/animate/flipOutX.less: -------------------------------------------------------------------------------- 1 | @-webkit-keyframes flipOutX { 2 | 0% { 3 | -webkit-transform: perspective(400px) rotateX(0deg); 4 | opacity: 1; 5 | } 6 | 100% { 7 | -webkit-transform: perspective(400px) rotateX(90deg); 8 | opacity: 0; 9 | } 10 | } 11 | 12 | @-moz-keyframes flipOutX { 13 | 0% { 14 | -moz-transform: perspective(400px) rotateX(0deg); 15 | opacity: 1; 16 | } 17 | 100% { 18 | -moz-transform: perspective(400px) rotateX(90deg); 19 | opacity: 0; 20 | } 21 | } 22 | 23 | @-o-keyframes flipOutX { 24 | 0% { 25 | -o-transform: perspective(400px) rotateX(0deg); 26 | opacity: 1; 27 | } 28 | 100% { 29 | -o-transform: perspective(400px) rotateX(90deg); 30 | opacity: 0; 31 | } 32 | } 33 | 34 | @keyframes flipOutX { 35 | 0% { 36 | transform: perspective(400px) rotateX(0deg); 37 | opacity: 1; 38 | } 39 | 100% { 40 | transform: perspective(400px) rotateX(90deg); 41 | opacity: 0; 42 | } 43 | } 44 | 45 | .flipOutX { 46 | -webkit-animation-name: flipOutX; 47 | -webkit-backface-visibility: visible !important; 48 | -moz-animation-name: flipOutX; 49 | -moz-backface-visibility: visible !important; 50 | -o-animation-name: flipOutX; 51 | -o-backface-visibility: visible !important; 52 | animation-name: flipOutX; 53 | backface-visibility: visible !important; 54 | } -------------------------------------------------------------------------------- /src/style/components/base/mixin/animate/flipOutY.less: -------------------------------------------------------------------------------- 1 | @-webkit-keyframes flipOutY { 2 | 0% { 3 | -webkit-transform: perspective(400px) rotateY(0deg); 4 | opacity: 1; 5 | } 6 | 100% { 7 | -webkit-transform: perspective(400px) rotateY(90deg); 8 | opacity: 0; 9 | } 10 | } 11 | @-moz-keyframes flipOutY { 12 | 0% { 13 | -moz-transform: perspective(400px) rotateY(0deg); 14 | opacity: 1; 15 | } 16 | 100% { 17 | -moz-transform: perspective(400px) rotateY(90deg); 18 | opacity: 0; 19 | } 20 | } 21 | @-o-keyframes flipOutY { 22 | 0% { 23 | -o-transform: perspective(400px) rotateY(0deg); 24 | opacity: 1; 25 | } 26 | 100% { 27 | -o-transform: perspective(400px) rotateY(90deg); 28 | opacity: 0; 29 | } 30 | } 31 | @keyframes flipOutY { 32 | 0% { 33 | transform: perspective(400px) rotateY(0deg); 34 | opacity: 1; 35 | } 36 | 100% { 37 | transform: perspective(400px) rotateY(90deg); 38 | opacity: 0; 39 | } 40 | } 41 | 42 | .flipOutY { 43 | -webkit-backface-visibility: visible !important; 44 | -webkit-animation-name: flipOutY; 45 | -moz-backface-visibility: visible !important; 46 | -moz-animation-name: flipOutY; 47 | -o-backface-visibility: visible !important; 48 | -o-animation-name: flipOutY; 49 | backface-visibility: visible !important; 50 | animation-name: flipOutY; 51 | } -------------------------------------------------------------------------------- /src/style/components/base/mixin/animate/lightSpeedOut.less: -------------------------------------------------------------------------------- 1 | @-webkit-keyframes lightSpeedOut { 2 | 0% { -webkit-transform: translateX(0%) skewX(0deg); opacity: 1; } 3 | 100% { -webkit-transform: translateX(100%) skewX(-30deg); opacity: 0; } 4 | } 5 | 6 | @-moz-keyframes lightSpeedOut { 7 | 0% { -moz-transform: translateX(0%) skewX(0deg); opacity: 1; } 8 | 100% { -moz-transform: translateX(100%) skewX(-30deg); opacity: 0; } 9 | } 10 | 11 | @-o-keyframes lightSpeedOut { 12 | 0% { -o-transform: translateX(0%) skewX(0deg); opacity: 1; } 13 | 100% { -o-transform: translateX(100%) skewX(-30deg); opacity: 0; } 14 | } 15 | 16 | @keyframes lightSpeedOut { 17 | 0% { transform: translateX(0%) skewX(0deg); opacity: 1; } 18 | 100% { transform: translateX(100%) skewX(-30deg); opacity: 0; } 19 | } 20 | 21 | .lightSpeedOut { 22 | -webkit-animation-name: lightSpeedOut; 23 | -moz-animation-name: lightSpeedOut; 24 | -o-animation-name: lightSpeedOut; 25 | animation-name: lightSpeedOut; 26 | 27 | -webkit-animation-timing-function: ease-in; 28 | -moz-animation-timing-function: ease-in; 29 | -o-animation-timing-function: ease-in; 30 | animation-timing-function: ease-in; 31 | } -------------------------------------------------------------------------------- /src/style/components/base/mixin/animate/pulse.less: -------------------------------------------------------------------------------- 1 | /* originally authored by Nick Pettit - https://github.com/nickpettit/glide */ 2 | 3 | @-webkit-keyframes pulse { 4 | 0% { -webkit-transform: scale(1); } 5 | 50% { -webkit-transform: scale(1.1); } 6 | 100% { -webkit-transform: scale(1); } 7 | } 8 | @-moz-keyframes pulse { 9 | 0% { -moz-transform: scale(1); } 10 | 50% { -moz-transform: scale(1.1); } 11 | 100% { -moz-transform: scale(1); } 12 | } 13 | @-o-keyframes pulse { 14 | 0% { -o-transform: scale(1); } 15 | 50% { -o-transform: scale(1.1); } 16 | 100% { -o-transform: scale(1); } 17 | } 18 | @keyframes pulse { 19 | 0% { transform: scale(1); } 20 | 50% { transform: scale(1.1); } 21 | 100% { transform: scale(1); } 22 | } 23 | 24 | .pulse { 25 | -webkit-animation-name: pulse; 26 | -moz-animation-name: pulse; 27 | -o-animation-name: pulse; 28 | animation-name: pulse; 29 | } -------------------------------------------------------------------------------- /src/style/components/base/mixin/animate/rollIn.less: -------------------------------------------------------------------------------- 1 | /* originally authored by Nick Pettit - https://github.com/nickpettit/glide */ 2 | 3 | @-webkit-keyframes rollIn { 4 | 0% { opacity: 0; -webkit-transform: translateX(-100%) rotate(-120deg); } 5 | 100% { opacity: 1; -webkit-transform: translateX(0px) rotate(0deg); } 6 | } 7 | 8 | @-moz-keyframes rollIn { 9 | 0% { opacity: 0; -moz-transform: translateX(-100%) rotate(-120deg); } 10 | 100% { opacity: 1; -moz-transform: translateX(0px) rotate(0deg); } 11 | } 12 | 13 | @-o-keyframes rollIn { 14 | 0% { opacity: 0; -o-transform: translateX(-100%) rotate(-120deg); } 15 | 100% { opacity: 1; -o-transform: translateX(0px) rotate(0deg); } 16 | } 17 | 18 | @keyframes rollIn { 19 | 0% { opacity: 0; transform: translateX(-100%) rotate(-120deg); } 20 | 100% { opacity: 1; transform: translateX(0px) rotate(0deg); } 21 | } 22 | 23 | .rollIn { 24 | -webkit-animation-name: rollIn; 25 | -moz-animation-name: rollIn; 26 | -o-animation-name: rollIn; 27 | animation-name: rollIn; 28 | } -------------------------------------------------------------------------------- /src/style/components/base/mixin/animate/rollOut.less: -------------------------------------------------------------------------------- 1 | /* originally authored by Nick Pettit - https://github.com/nickpettit/glide */ 2 | 3 | @-webkit-keyframes rollOut { 4 | 0% { 5 | opacity: 1; 6 | -webkit-transform: translateX(0px) rotate(0deg); 7 | } 8 | 9 | 100% { 10 | opacity: 0; 11 | -webkit-transform: translateX(100%) rotate(120deg); 12 | } 13 | } 14 | 15 | @-moz-keyframes rollOut { 16 | 0% { 17 | opacity: 1; 18 | -moz-transform: translateX(0px) rotate(0deg); 19 | } 20 | 21 | 100% { 22 | opacity: 0; 23 | -moz-transform: translateX(100%) rotate(120deg); 24 | } 25 | } 26 | 27 | @-o-keyframes rollOut { 28 | 0% { 29 | opacity: 1; 30 | -o-transform: translateX(0px) rotate(0deg); 31 | } 32 | 33 | 100% { 34 | opacity: 0; 35 | -o-transform: translateX(100%) rotate(120deg); 36 | } 37 | } 38 | 39 | @keyframes rollOut { 40 | 0% { 41 | opacity: 1; 42 | transform: translateX(0px) rotate(0deg); 43 | } 44 | 45 | 100% { 46 | opacity: 0; 47 | transform: translateX(100%) rotate(120deg); 48 | } 49 | } 50 | 51 | .rollOut { 52 | -webkit-animation-name: rollOut; 53 | -moz-animation-name: rollOut; 54 | -o-animation-name: rollOut; 55 | animation-name: rollOut; 56 | } -------------------------------------------------------------------------------- /src/style/components/base/mixin/animate/rotateIn.less: -------------------------------------------------------------------------------- 1 | @-webkit-keyframes rotateIn { 2 | 0% { 3 | -webkit-transform-origin: center center; 4 | -webkit-transform: rotate(-200deg); 5 | opacity: 0; 6 | } 7 | 8 | 100% { 9 | -webkit-transform-origin: center center; 10 | -webkit-transform: rotate(0); 11 | opacity: 1; 12 | } 13 | } 14 | @-moz-keyframes rotateIn { 15 | 0% { 16 | -moz-transform-origin: center center; 17 | -moz-transform: rotate(-200deg); 18 | opacity: 0; 19 | } 20 | 21 | 100% { 22 | -moz-transform-origin: center center; 23 | -moz-transform: rotate(0); 24 | opacity: 1; 25 | } 26 | } 27 | @-o-keyframes rotateIn { 28 | 0% { 29 | -o-transform-origin: center center; 30 | -o-transform: rotate(-200deg); 31 | opacity: 0; 32 | } 33 | 34 | 100% { 35 | -o-transform-origin: center center; 36 | -o-transform: rotate(0); 37 | opacity: 1; 38 | } 39 | } 40 | @keyframes rotateIn { 41 | 0% { 42 | transform-origin: center center; 43 | transform: rotate(-200deg); 44 | opacity: 0; 45 | } 46 | 47 | 100% { 48 | transform-origin: center center; 49 | transform: rotate(0); 50 | opacity: 1; 51 | } 52 | } 53 | 54 | .rotateIn { 55 | -webkit-animation-name: rotateIn; 56 | -moz-animation-name: rotateIn; 57 | -o-animation-name: rotateIn; 58 | animation-name: rotateIn; 59 | } -------------------------------------------------------------------------------- /src/style/components/base/mixin/animate/rotateInDownLeft.less: -------------------------------------------------------------------------------- 1 | @-webkit-keyframes rotateInDownLeft { 2 | 0% { 3 | -webkit-transform-origin: left bottom; 4 | -webkit-transform: rotate(-90deg); 5 | opacity: 0; 6 | } 7 | 8 | 100% { 9 | -webkit-transform-origin: left bottom; 10 | -webkit-transform: rotate(0); 11 | opacity: 1; 12 | } 13 | } 14 | 15 | @-moz-keyframes rotateInDownLeft { 16 | 0% { 17 | -moz-transform-origin: left bottom; 18 | -moz-transform: rotate(-90deg); 19 | opacity: 0; 20 | } 21 | 22 | 100% { 23 | -moz-transform-origin: left bottom; 24 | -moz-transform: rotate(0); 25 | opacity: 1; 26 | } 27 | } 28 | 29 | @-o-keyframes rotateInDownLeft { 30 | 0% { 31 | -o-transform-origin: left bottom; 32 | -o-transform: rotate(-90deg); 33 | opacity: 0; 34 | } 35 | 36 | 100% { 37 | -o-transform-origin: left bottom; 38 | -o-transform: rotate(0); 39 | opacity: 1; 40 | } 41 | } 42 | 43 | @keyframes rotateInDownLeft { 44 | 0% { 45 | transform-origin: left bottom; 46 | transform: rotate(-90deg); 47 | opacity: 0; 48 | } 49 | 50 | 100% { 51 | transform-origin: left bottom; 52 | transform: rotate(0); 53 | opacity: 1; 54 | } 55 | } 56 | 57 | .rotateInDownLeft { 58 | -webkit-animation-name: rotateInDownLeft; 59 | -moz-animation-name: rotateInDownLeft; 60 | -o-animation-name: rotateInDownLeft; 61 | animation-name: rotateInDownLeft; 62 | } -------------------------------------------------------------------------------- /src/style/components/base/mixin/animate/rotateInDownRight.less: -------------------------------------------------------------------------------- 1 | @-webkit-keyframes rotateInDownRight { 2 | 0% { 3 | -webkit-transform-origin: right bottom; 4 | -webkit-transform: rotate(90deg); 5 | opacity: 0; 6 | } 7 | 8 | 100% { 9 | -webkit-transform-origin: right bottom; 10 | -webkit-transform: rotate(0); 11 | opacity: 1; 12 | } 13 | } 14 | 15 | @-moz-keyframes rotateInDownRight { 16 | 0% { 17 | -moz-transform-origin: right bottom; 18 | -moz-transform: rotate(90deg); 19 | opacity: 0; 20 | } 21 | 22 | 100% { 23 | -moz-transform-origin: right bottom; 24 | -moz-transform: rotate(0); 25 | opacity: 1; 26 | } 27 | } 28 | 29 | @-o-keyframes rotateInDownRight { 30 | 0% { 31 | -o-transform-origin: right bottom; 32 | -o-transform: rotate(90deg); 33 | opacity: 0; 34 | } 35 | 36 | 100% { 37 | -o-transform-origin: right bottom; 38 | -o-transform: rotate(0); 39 | opacity: 1; 40 | } 41 | } 42 | 43 | @keyframes rotateInDownRight { 44 | 0% { 45 | transform-origin: right bottom; 46 | transform: rotate(90deg); 47 | opacity: 0; 48 | } 49 | 50 | 100% { 51 | transform-origin: right bottom; 52 | transform: rotate(0); 53 | opacity: 1; 54 | } 55 | } 56 | 57 | .rotateInDownRight { 58 | -webkit-animation-name: rotateInDownRight; 59 | -moz-animation-name: rotateInDownRight; 60 | -o-animation-name: rotateInDownRight; 61 | animation-name: rotateInDownRight; 62 | } -------------------------------------------------------------------------------- /src/style/components/base/mixin/animate/rotateInUpLeft.less: -------------------------------------------------------------------------------- 1 | @-webkit-keyframes rotateInUpLeft { 2 | 0% { 3 | -webkit-transform-origin: left bottom; 4 | -webkit-transform: rotate(90deg); 5 | opacity: 0; 6 | } 7 | 8 | 100% { 9 | -webkit-transform-origin: left bottom; 10 | -webkit-transform: rotate(0); 11 | opacity: 1; 12 | } 13 | } 14 | 15 | @-moz-keyframes rotateInUpLeft { 16 | 0% { 17 | -moz-transform-origin: left bottom; 18 | -moz-transform: rotate(90deg); 19 | opacity: 0; 20 | } 21 | 22 | 100% { 23 | -moz-transform-origin: left bottom; 24 | -moz-transform: rotate(0); 25 | opacity: 1; 26 | } 27 | } 28 | 29 | @-o-keyframes rotateInUpLeft { 30 | 0% { 31 | -o-transform-origin: left bottom; 32 | -o-transform: rotate(90deg); 33 | opacity: 0; 34 | } 35 | 36 | 100% { 37 | -o-transform-origin: left bottom; 38 | -o-transform: rotate(0); 39 | opacity: 1; 40 | } 41 | } 42 | 43 | @keyframes rotateInUpLeft { 44 | 0% { 45 | transform-origin: left bottom; 46 | transform: rotate(90deg); 47 | opacity: 0; 48 | } 49 | 50 | 100% { 51 | transform-origin: left bottom; 52 | transform: rotate(0); 53 | opacity: 1; 54 | } 55 | } 56 | 57 | .rotateInUpLeft { 58 | -webkit-animation-name: rotateInUpLeft; 59 | -moz-animation-name: rotateInUpLeft; 60 | -o-animation-name: rotateInUpLeft; 61 | animation-name: rotateInUpLeft; 62 | } -------------------------------------------------------------------------------- /src/style/components/base/mixin/animate/rotateInUpRight.less: -------------------------------------------------------------------------------- 1 | @-webkit-keyframes rotateInUpRight { 2 | 0% { 3 | -webkit-transform-origin: right bottom; 4 | -webkit-transform: rotate(-90deg); 5 | opacity: 0; 6 | } 7 | 8 | 100% { 9 | -webkit-transform-origin: right bottom; 10 | -webkit-transform: rotate(0); 11 | opacity: 1; 12 | } 13 | } 14 | 15 | @-moz-keyframes rotateInUpRight { 16 | 0% { 17 | -moz-transform-origin: right bottom; 18 | -moz-transform: rotate(-90deg); 19 | opacity: 0; 20 | } 21 | 22 | 100% { 23 | -moz-transform-origin: right bottom; 24 | -moz-transform: rotate(0); 25 | opacity: 1; 26 | } 27 | } 28 | 29 | @-o-keyframes rotateInUpRight { 30 | 0% { 31 | -o-transform-origin: right bottom; 32 | -o-transform: rotate(-90deg); 33 | opacity: 0; 34 | } 35 | 36 | 100% { 37 | -o-transform-origin: right bottom; 38 | -o-transform: rotate(0); 39 | opacity: 1; 40 | } 41 | } 42 | 43 | @keyframes rotateInUpRight { 44 | 0% { 45 | transform-origin: right bottom; 46 | transform: rotate(-90deg); 47 | opacity: 0; 48 | } 49 | 50 | 100% { 51 | transform-origin: right bottom; 52 | transform: rotate(0); 53 | opacity: 1; 54 | } 55 | } 56 | 57 | .rotateInUpRight { 58 | -webkit-animation-name: rotateInUpRight; 59 | -moz-animation-name: rotateInUpRight; 60 | -o-animation-name: rotateInUpRight; 61 | animation-name: rotateInUpRight; 62 | } -------------------------------------------------------------------------------- /src/style/components/base/mixin/animate/rotateOut.less: -------------------------------------------------------------------------------- 1 | @-webkit-keyframes rotateOut { 2 | 0% { 3 | -webkit-transform-origin: center center; 4 | -webkit-transform: rotate(0); 5 | opacity: 1; 6 | } 7 | 8 | 100% { 9 | -webkit-transform-origin: center center; 10 | -webkit-transform: rotate(200deg); 11 | opacity: 0; 12 | } 13 | } 14 | 15 | @-moz-keyframes rotateOut { 16 | 0% { 17 | -moz-transform-origin: center center; 18 | -moz-transform: rotate(0); 19 | opacity: 1; 20 | } 21 | 22 | 100% { 23 | -moz-transform-origin: center center; 24 | -moz-transform: rotate(200deg); 25 | opacity: 0; 26 | } 27 | } 28 | 29 | @-o-keyframes rotateOut { 30 | 0% { 31 | -o-transform-origin: center center; 32 | -o-transform: rotate(0); 33 | opacity: 1; 34 | } 35 | 36 | 100% { 37 | -o-transform-origin: center center; 38 | -o-transform: rotate(200deg); 39 | opacity: 0; 40 | } 41 | } 42 | 43 | @keyframes rotateOut { 44 | 0% { 45 | transform-origin: center center; 46 | transform: rotate(0); 47 | opacity: 1; 48 | } 49 | 50 | 100% { 51 | transform-origin: center center; 52 | transform: rotate(200deg); 53 | opacity: 0; 54 | } 55 | } 56 | 57 | .rotateOut { 58 | -webkit-animation-name: rotateOut; 59 | -moz-animation-name: rotateOut; 60 | -o-animation-name: rotateOut; 61 | animation-name: rotateOut; 62 | } -------------------------------------------------------------------------------- /src/style/components/base/mixin/animate/rotateOutDownLeft.less: -------------------------------------------------------------------------------- 1 | @-webkit-keyframes rotateOutDownLeft { 2 | 0% { 3 | -webkit-transform-origin: left bottom; 4 | -webkit-transform: rotate(0); 5 | opacity: 1; 6 | } 7 | 8 | 100% { 9 | -webkit-transform-origin: left bottom; 10 | -webkit-transform: rotate(90deg); 11 | opacity: 0; 12 | } 13 | } 14 | 15 | @-moz-keyframes rotateOutDownLeft { 16 | 0% { 17 | -moz-transform-origin: left bottom; 18 | -moz-transform: rotate(0); 19 | opacity: 1; 20 | } 21 | 22 | 100% { 23 | -moz-transform-origin: left bottom; 24 | -moz-transform: rotate(90deg); 25 | opacity: 0; 26 | } 27 | } 28 | 29 | @-o-keyframes rotateOutDownLeft { 30 | 0% { 31 | -o-transform-origin: left bottom; 32 | -o-transform: rotate(0); 33 | opacity: 1; 34 | } 35 | 36 | 100% { 37 | -o-transform-origin: left bottom; 38 | -o-transform: rotate(90deg); 39 | opacity: 0; 40 | } 41 | } 42 | 43 | @keyframes rotateOutDownLeft { 44 | 0% { 45 | transform-origin: left bottom; 46 | transform: rotate(0); 47 | opacity: 1; 48 | } 49 | 50 | 100% { 51 | transform-origin: left bottom; 52 | transform: rotate(90deg); 53 | opacity: 0; 54 | } 55 | } 56 | 57 | .rotateOutDownLeft { 58 | -webkit-animation-name: rotateOutDownLeft; 59 | -moz-animation-name: rotateOutDownLeft; 60 | -o-animation-name: rotateOutDownLeft; 61 | animation-name: rotateOutDownLeft; 62 | } -------------------------------------------------------------------------------- /src/style/components/base/mixin/animate/rotateOutDownRight.less: -------------------------------------------------------------------------------- 1 | @-webkit-keyframes rotateOutDownRight { 2 | 0% { 3 | -webkit-transform-origin: right bottom; 4 | -webkit-transform: rotate(0); 5 | opacity: 1; 6 | } 7 | 8 | 100% { 9 | -webkit-transform-origin: right bottom; 10 | -webkit-transform: rotate(-90deg); 11 | opacity: 0; 12 | } 13 | } 14 | 15 | @-moz-keyframes rotateOutDownRight { 16 | 0% { 17 | -moz-transform-origin: right bottom; 18 | -moz-transform: rotate(0); 19 | opacity: 1; 20 | } 21 | 22 | 100% { 23 | -moz-transform-origin: right bottom; 24 | -moz-transform: rotate(-90deg); 25 | opacity: 0; 26 | } 27 | } 28 | 29 | @-o-keyframes rotateOutDownRight { 30 | 0% { 31 | -o-transform-origin: right bottom; 32 | -o-transform: rotate(0); 33 | opacity: 1; 34 | } 35 | 36 | 100% { 37 | -o-transform-origin: right bottom; 38 | -o-transform: rotate(-90deg); 39 | opacity: 0; 40 | } 41 | } 42 | 43 | @keyframes rotateOutDownRight { 44 | 0% { 45 | transform-origin: right bottom; 46 | transform: rotate(0); 47 | opacity: 1; 48 | } 49 | 50 | 100% { 51 | transform-origin: right bottom; 52 | transform: rotate(-90deg); 53 | opacity: 0; 54 | } 55 | } 56 | 57 | .rotateOutDownRight { 58 | -webkit-animation-name: rotateOutDownRight; 59 | -moz-animation-name: rotateOutDownRight; 60 | -o-animation-name: rotateOutDownRight; 61 | animation-name: rotateOutDownRight; 62 | } -------------------------------------------------------------------------------- /src/style/components/base/mixin/animate/rotateOutUpLeft.less: -------------------------------------------------------------------------------- 1 | @-webkit-keyframes rotateOutUpLeft { 2 | 0% { 3 | -webkit-transform-origin: left bottom; 4 | -webkit-transform: rotate(0); 5 | opacity: 1; 6 | } 7 | 8 | 100% { 9 | -webkit-transform-origin: left bottom; 10 | -webkit-transform: rotate(-90deg); 11 | opacity: 0; 12 | } 13 | } 14 | 15 | @-moz-keyframes rotateOutUpLeft { 16 | 0% { 17 | -moz-transform-origin: left bottom; 18 | -moz-transform: rotate(0); 19 | opacity: 1; 20 | } 21 | 22 | 100% { 23 | -moz-transform-origin: left bottom; 24 | -moz-transform: rotate(-90deg); 25 | opacity: 0; 26 | } 27 | } 28 | 29 | @-o-keyframes rotateOutUpLeft { 30 | 0% { 31 | -o-transform-origin: left bottom; 32 | -o-transform: rotate(0); 33 | opacity: 1; 34 | } 35 | 36 | 100% { 37 | -o-transform-origin: left bottom; 38 | -o-transform: rotate(-90deg); 39 | opacity: 0; 40 | } 41 | } 42 | 43 | @keyframes rotateOutUpLeft { 44 | 0% { 45 | transform-origin: left bottom; 46 | transform: rotate(0); 47 | opacity: 1; 48 | } 49 | 50 | 100% { 51 | -transform-origin: left bottom; 52 | -transform: rotate(-90deg); 53 | opacity: 0; 54 | } 55 | } 56 | 57 | .rotateOutUpLeft { 58 | -webkit-animation-name: rotateOutUpLeft; 59 | -moz-animation-name: rotateOutUpLeft; 60 | -o-animation-name: rotateOutUpLeft; 61 | animation-name: rotateOutUpLeft; 62 | } -------------------------------------------------------------------------------- /src/style/components/base/mixin/animate/rotateOutUpRight.less: -------------------------------------------------------------------------------- 1 | @-webkit-keyframes rotateOutUpRight { 2 | 0% { 3 | -webkit-transform-origin: right bottom; 4 | -webkit-transform: rotate(0); 5 | opacity: 1; 6 | } 7 | 8 | 100% { 9 | -webkit-transform-origin: right bottom; 10 | -webkit-transform: rotate(90deg); 11 | opacity: 0; 12 | } 13 | } 14 | 15 | @-moz-keyframes rotateOutUpRight { 16 | 0% { 17 | -moz-transform-origin: right bottom; 18 | -moz-transform: rotate(0); 19 | opacity: 1; 20 | } 21 | 22 | 100% { 23 | -moz-transform-origin: right bottom; 24 | -moz-transform: rotate(90deg); 25 | opacity: 0; 26 | } 27 | } 28 | 29 | @-o-keyframes rotateOutUpRight { 30 | 0% { 31 | -o-transform-origin: right bottom; 32 | -o-transform: rotate(0); 33 | opacity: 1; 34 | } 35 | 36 | 100% { 37 | -o-transform-origin: right bottom; 38 | -o-transform: rotate(90deg); 39 | opacity: 0; 40 | } 41 | } 42 | 43 | @keyframes rotateOutUpRight { 44 | 0% { 45 | transform-origin: right bottom; 46 | transform: rotate(0); 47 | opacity: 1; 48 | } 49 | 50 | 100% { 51 | transform-origin: right bottom; 52 | transform: rotate(90deg); 53 | opacity: 0; 54 | } 55 | } 56 | 57 | .rotateOutUpRight { 58 | -webkit-animation-name: rotateOutUpRight; 59 | -moz-animation-name: rotateOutUpRight; 60 | -o-animation-name: rotateOutUpRight; 61 | animation-name: rotateOutUpRight; 62 | } -------------------------------------------------------------------------------- /src/style/components/base/mixin/animate/shake.less: -------------------------------------------------------------------------------- 1 | @-webkit-keyframes shake { 2 | 0%, 100% {-webkit-transform: translateX(0);} 3 | 10%, 30%, 50%, 70%, 90% {-webkit-transform: translateX(-10px);} 4 | 20%, 40%, 60%, 80% {-webkit-transform: translateX(10px);} 5 | } 6 | 7 | @-moz-keyframes shake { 8 | 0%, 100% {-moz-transform: translateX(0);} 9 | 10%, 30%, 50%, 70%, 90% {-moz-transform: translateX(-10px);} 10 | 20%, 40%, 60%, 80% {-moz-transform: translateX(10px);} 11 | } 12 | 13 | @-o-keyframes shake { 14 | 0%, 100% {-o-transform: translateX(0);} 15 | 10%, 30%, 50%, 70%, 90% {-o-transform: translateX(-10px);} 16 | 20%, 40%, 60%, 80% {-o-transform: translateX(10px);} 17 | } 18 | 19 | @keyframes shake { 20 | 0%, 100% {transform: translateX(0);} 21 | 10%, 30%, 50%, 70%, 90% {transform: translateX(-10px);} 22 | 20%, 40%, 60%, 80% {transform: translateX(10px);} 23 | } 24 | 25 | .shake { 26 | -webkit-animation-name: shake; 27 | -moz-animation-name: shake; 28 | -o-animation-name: shake; 29 | animation-name: shake; 30 | } -------------------------------------------------------------------------------- /src/style/components/base/mixin/animate/swing.less: -------------------------------------------------------------------------------- 1 | @-webkit-keyframes swing { 2 | 20%, 40%, 60%, 80%, 100% { -webkit-transform-origin: top center; } 3 | 20% { -webkit-transform: rotate(15deg); } 4 | 40% { -webkit-transform: rotate(-10deg); } 5 | 60% { -webkit-transform: rotate(5deg); } 6 | 80% { -webkit-transform: rotate(-5deg); } 7 | 100% { -webkit-transform: rotate(0deg); } 8 | } 9 | 10 | @-moz-keyframes swing { 11 | 20% { -moz-transform: rotate(15deg); } 12 | 40% { -moz-transform: rotate(-10deg); } 13 | 60% { -moz-transform: rotate(5deg); } 14 | 80% { -moz-transform: rotate(-5deg); } 15 | 100% { -moz-transform: rotate(0deg); } 16 | } 17 | 18 | @-o-keyframes swing { 19 | 20% { -o-transform: rotate(15deg); } 20 | 40% { -o-transform: rotate(-10deg); } 21 | 60% { -o-transform: rotate(5deg); } 22 | 80% { -o-transform: rotate(-5deg); } 23 | 100% { -o-transform: rotate(0deg); } 24 | } 25 | 26 | @keyframes swing { 27 | 20% { transform: rotate(15deg); } 28 | 40% { transform: rotate(-10deg); } 29 | 60% { transform: rotate(5deg); } 30 | 80% { transform: rotate(-5deg); } 31 | 100% { transform: rotate(0deg); } 32 | } 33 | 34 | .swing { 35 | -webkit-transform-origin: top center; 36 | -moz-transform-origin: top center; 37 | -o-transform-origin: top center; 38 | transform-origin: top center; 39 | -webkit-animation-name: swing; 40 | -moz-animation-name: swing; 41 | -o-animation-name: swing; 42 | animation-name: swing; 43 | } -------------------------------------------------------------------------------- /src/style/components/base/mixin/animate/tada.less: -------------------------------------------------------------------------------- 1 | @-webkit-keyframes tada { 2 | 0% {-webkit-transform: scale(1);} 3 | 10%, 20% {-webkit-transform: scale(0.9) rotate(-3deg);} 4 | 30%, 50%, 70%, 90% {-webkit-transform: scale(1.1) rotate(3deg);} 5 | 40%, 60%, 80% {-webkit-transform: scale(1.1) rotate(-3deg);} 6 | 100% {-webkit-transform: scale(1) rotate(0);} 7 | } 8 | 9 | @-moz-keyframes tada { 10 | 0% {-moz-transform: scale(1);} 11 | 10%, 20% {-moz-transform: scale(0.9) rotate(-3deg);} 12 | 30%, 50%, 70%, 90% {-moz-transform: scale(1.1) rotate(3deg);} 13 | 40%, 60%, 80% {-moz-transform: scale(1.1) rotate(-3deg);} 14 | 100% {-moz-transform: scale(1) rotate(0);} 15 | } 16 | 17 | @-o-keyframes tada { 18 | 0% {-o-transform: scale(1);} 19 | 10%, 20% {-o-transform: scale(0.9) rotate(-3deg);} 20 | 30%, 50%, 70%, 90% {-o-transform: scale(1.1) rotate(3deg);} 21 | 40%, 60%, 80% {-o-transform: scale(1.1) rotate(-3deg);} 22 | 100% {-o-transform: scale(1) rotate(0);} 23 | } 24 | 25 | @keyframes tada { 26 | 0% {transform: scale(1);} 27 | 10%, 20% {transform: scale(0.9) rotate(-3deg);} 28 | 30%, 50%, 70%, 90% {transform: scale(1.1) rotate(3deg);} 29 | 40%, 60%, 80% {transform: scale(1.1) rotate(-3deg);} 30 | 100% {transform: scale(1) rotate(0);} 31 | } 32 | 33 | .tada { 34 | -webkit-animation-name: tada; 35 | -moz-animation-name: tada; 36 | -o-animation-name: tada; 37 | animation-name: tada; 38 | } -------------------------------------------------------------------------------- /src/style/components/base/mixin/mobile.less: -------------------------------------------------------------------------------- 1 | // tapcolor 2 | .setTapColor(@c:rgba(0,0,0,0)) { 3 | -webkit-tap-highlight-color: @c; 4 | } 5 | 6 | //user action 7 | .no_select() { 8 | -webkit-touch-callout: none; 9 | -webkit-user-select: none; 10 | -khtml-user-select: none; 11 | -moz-user-select: none; 12 | -ms-user-select: none; 13 | user-select: none; 14 | } 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | -------------------------------------------------------------------------------- /src/style/components/base/mixin/setChecked.less: -------------------------------------------------------------------------------- 1 | .setChecked(@c:#FFFFFF) { 2 | display: inline-block; 3 | content: ''; 4 | width: 4px; 5 | height: 8px; 6 | border-bottom: 2px solid @c; 7 | border-right: 2px solid @c; 8 | transform: translate(0, 0) rotate(45deg); 9 | } 10 | 11 | .setCheckedAbs(@c:#FFFFFF) { 12 | position: absolute; 13 | top: 50%; 14 | left: 50%; 15 | content: ''; 16 | width: 4px; 17 | height: 8px; 18 | border-bottom: 2px solid @c; 19 | border-right: 2px solid @c; 20 | transform: translate(-50%, -65%) rotate(45deg); 21 | } -------------------------------------------------------------------------------- /src/style/components/base/mixin/setOnepx.less: -------------------------------------------------------------------------------- 1 | .setTopLine(@c: #C7C7C7) { 2 | content: " "; 3 | position: absolute; 4 | left: 0; 5 | top: 0; 6 | width: 100%; 7 | height: 1px; 8 | border-top: 1px solid @c; 9 | transform-origin: 0 0; 10 | transform: scaleY(0.5); 11 | } 12 | 13 | .setBottomLine(@c: #C7C7C7) { 14 | content: " "; 15 | position: absolute; 16 | left: 0; 17 | bottom: 0; 18 | width: 100%; 19 | height: 1px; 20 | border-bottom: 1px solid @c; 21 | transform-origin: 0 100%; 22 | transform: scaleY(0.5); 23 | } 24 | 25 | .setLeftLine(@c: #C7C7C7) { 26 | content: " "; 27 | position: absolute; 28 | left: 0; 29 | top: 0; 30 | width: 1px; 31 | height: 100%; 32 | border-left: 1px solid @c; 33 | transform-origin: 0 0; 34 | transform: scaleX(0.5); 35 | } 36 | 37 | .setRightLine(@c: #C7C7C7) { 38 | content: " "; 39 | position: absolute; 40 | right: 0; 41 | top: 0; 42 | width: 1px; 43 | height: 100%; 44 | border-right: 1px solid @c; 45 | transform-origin: 0 100%; 46 | transform: scaleX(0.5); 47 | } -------------------------------------------------------------------------------- /src/style/components/base/mixin/text.less: -------------------------------------------------------------------------------- 1 | .ellipsis(@w:auto) { 2 | width: @w; 3 | overflow: hidden; 4 | text-overflow: ellipsis; 5 | white-space: nowrap; 6 | word-wrap: normal; 7 | } 8 | 9 | .ellipsis(@type,@line) { 10 | overflow: hidden; 11 | text-overflow: ellipsis; 12 | display: -webkit-box; 13 | -webkit-box-orient: vertical; 14 | -webkit-line-clamp: @line; 15 | } -------------------------------------------------------------------------------- /src/style/components/base/reset.less: -------------------------------------------------------------------------------- 1 | @import "fn"; 2 | 3 | html { 4 | -ms-text-size-adjust: 100%; 5 | -webkit-text-size-adjust: 100%; 6 | } 7 | 8 | body { 9 | line-height: 1.6; 10 | font-family: @sansFont; 11 | } 12 | 13 | * { 14 | margin: 0; 15 | padding: 0; 16 | } 17 | 18 | a img { 19 | border: 0; 20 | } 21 | 22 | a { 23 | text-decoration: none; 24 | } -------------------------------------------------------------------------------- /src/style/components/base/variable/global.less: -------------------------------------------------------------------------------- 1 | // font family 2 | @sansFont:"Helvetica Neue",Helvetica,Arial,sans-serif; 3 | @serifFont:Georgia, "Times New Roman",Times,serif; 4 | @wpFont:"Microsoft YaHei",sans-serif; 5 | @bizFont:"Helvetica Neue",Helvetica,"Hiragino Sans GB","Microsoft YaHei","微软雅黑",Arial,sans-serif; 6 | @globalFont:@sansFont; 7 | @globalFontSize:14px; 8 | 9 | // font color 10 | @globalLinkColor: #61749B; 11 | @globalDescColor: #B2B2B2; 12 | @globalWarnColor: #E64340; 13 | @globalNickNameColor: #576B95; 14 | @globalTextColor: #888; 15 | @globalTitleColor: #000; 16 | 17 | //border 18 | @globalBorderColor: #BCBAB6; 19 | 20 | //arrow 21 | @globalArrowColor: #C7C7CC; 22 | 23 | //component 24 | @itemActiveColor: #E4E4E4; 25 | 26 | //page 27 | @pageDefaultBackgroundColor:#EFEFF4; 28 | @toolbarSize:44px; 29 | 30 | 31 | // gap 32 | @gap5:5px; 33 | @gap10:10px; 34 | @gap15:15px; 35 | -------------------------------------------------------------------------------- /src/style/components/base/variable/monokai.less: -------------------------------------------------------------------------------- 1 | @monokaiCaret:#F8F8F0; 2 | @monokaiGreen:#A6E22E; 3 | @monokaiOrange:#FD971F; 4 | @monokaiBlue:#66D9EF; 5 | @monokaiRed:#F92672; 6 | @monokaiPurple:#AE81FF; 7 | @monokaiBrown:#E6DB74; 8 | @monokaiFindHighlight:#FFE792; 9 | @monokaiLineHighlight:#3E3D32; 10 | @monokaiSelection:#49483E; 11 | @monokaiBg:#272822; -------------------------------------------------------------------------------- /src/style/components/base/variable/weui_button.less: -------------------------------------------------------------------------------- 1 | @weuiBtnDefaultGap:15px; 2 | @weuiBtnHeight:42px; 3 | @weuiBtnMiniHeight:25px; 4 | @weuiBtnFontSize:18px; 5 | @weuiBtnFontColor:#FFFFFF; 6 | @weuiBtnDisabledFontColor:rgba(255,255,255,.6); 7 | @weuiBtnActiveFontColor:rgba(255,255,255,.4); 8 | @weuiBtnMiniFontSize:14px; 9 | @weuiBtnBorderRadius:5px; 10 | 11 | @weuiBtnDefaultBg:#F7F7F7; 12 | @weuiBtnDefaultActiveBg:#DEDEDE; 13 | @weuiBtnDefaultFontColor:#454545; 14 | @weuiBtnDefaultDisabledFontColor:#C9C9C9; 15 | @weuiBtnDefaultActiveFontColor:#A1A1A1; 16 | 17 | @weuiBtnPrimaryBg:#04be02; 18 | @weuiBtnPrimaryActiveBg:#039702; 19 | 20 | @weuiBtnWarnBg:#ef4f4f; 21 | @weuiBtnWarnActiveBg:#c13e3e; -------------------------------------------------------------------------------- /src/style/components/base/variable/weui_cell.less: -------------------------------------------------------------------------------- 1 | @weuiCellBg:#FFFFFF; 2 | @weuiCellBorderColor:#D9D9D9; 3 | @weuiCellGapV:10px; 4 | @weuiCellGapH:15px; 5 | @weuiCellInnerGapH:.35em; 6 | @weuiCellHeight: 44px; 7 | @weuiCellFontSize:17px; 8 | @weuiCellTipsFontSize:14px; 9 | 10 | @weuiCellLineHeight: unit((@weuiCellHeight - 2 * @weuiCellGapV) / @weuiCellFontSize); // 高度为44px,减去上下padding的行高 11 | @weuiCellsMarginTop:unit(20 / @weuiCellFontSize, em); -------------------------------------------------------------------------------- /src/style/components/base/variable/weui_msg.less: -------------------------------------------------------------------------------- 1 | @weuiMsgPaddingTop:36px; 2 | @weuiMsgIconGap:30px; 3 | @weuiMsgTitleGap:5px; 4 | @weuiMsgTextGap:25px; 5 | @weuiMsgOprGap:25px; 6 | @weuiMsgExtraAreaGap:15px; 7 | @weuiMsgExtraAreaOfMinHeight:438px; -------------------------------------------------------------------------------- /src/style/components/base/variable/weui_progress.less: -------------------------------------------------------------------------------- 1 | @weuiProgressBg: #ebebeb; 2 | @weuiProgressColor: #09bb07; 3 | @weuiProgressHeight: 3px; 4 | @weuiProgressCloseBg: #ef4f4f; 5 | @weuiProgressActiveBg: #c13e3e; -------------------------------------------------------------------------------- /src/style/components/base/variable/weui_step_list.less: -------------------------------------------------------------------------------- 1 | @stepListPaddingLeft: 50px; 2 | @stepListNumColor: #09BA07; 3 | @stepListNumBgColor: #FFF; 4 | @stepListNumSize: 21px; -------------------------------------------------------------------------------- /src/style/components/button/button-area.jsx: -------------------------------------------------------------------------------- 1 | import React from 'react'; 2 | import style from './style'; 3 | 4 | 5 | const ButtonArea = (props) => { 6 | let className = 'weui_btn_area'; 7 | 8 | if(props.className) className += ` ${props.className}`; 9 | 10 | return ( 11 |
12 | {props.children} 13 |
14 | ); 15 | } 16 | 17 | ButtonArea.propTypes = { 18 | className: React.PropTypes.string, 19 | }; 20 | 21 | ButtonArea.defaultProps = { 22 | className: '', 23 | }; 24 | 25 | export default ButtonArea; -------------------------------------------------------------------------------- /src/style/components/button/index.jsx: -------------------------------------------------------------------------------- 1 | import React from 'react'; 2 | import style from './style'; 3 | import classNames from 'classnames'; 4 | 5 | var Button = (props) => { 6 | let className = classNames('weui_btn',{ 7 | [`weui_btn_${props.type}`]: !props.plain, 8 | [`weui_btn_plain_${props.type}`]: props.plain, 9 | weui_btn_disabled: props.disabled, 10 | weui_btn_mini: props.mini 11 | }); 12 | 13 | return ( 14 | 20 | {props.children} 21 | 22 | ); 23 | } 24 | 25 | Button.propTypes = { 26 | className: React.PropTypes.string, 27 | href: React.PropTypes.string, 28 | disabled: React.PropTypes.bool, 29 | plain: React.PropTypes.bool, 30 | mini: React.PropTypes.bool, 31 | loading: React.PropTypes.bool, 32 | type: React.PropTypes.string 33 | }; 34 | 35 | Button.defaultProps = { 36 | className: '', 37 | disabled: false, 38 | plain: false, 39 | min: false, 40 | loading: false, 41 | type: 'default', 42 | href: 'javascript:;' 43 | }; 44 | 45 | export default Button; -------------------------------------------------------------------------------- /src/style/components/button/weui_btn_default.less: -------------------------------------------------------------------------------- 1 | @import "../base/fn"; 2 | 3 | .weui_btn_default { 4 | background-color: @weuiBtnDefaultBg; 5 | color: @weuiBtnDefaultFontColor; 6 | &:not(.weui_btn_disabled):visited { 7 | color: @weuiBtnDefaultFontColor; 8 | } 9 | &:not(.weui_btn_disabled):active { 10 | color: @weuiBtnDefaultActiveFontColor; 11 | background-color: @weuiBtnDefaultActiveBg; 12 | } 13 | } -------------------------------------------------------------------------------- /src/style/components/button/weui_btn_disabled.less: -------------------------------------------------------------------------------- 1 | @import "../base/fn"; 2 | 3 | .weui_btn_disabled { 4 | color: @weuiBtnDisabledFontColor; 5 | &.weui_btn_default { 6 | color: @weuiBtnDefaultDisabledFontColor; 7 | } 8 | } 9 | -------------------------------------------------------------------------------- /src/style/components/button/weui_btn_global.less: -------------------------------------------------------------------------------- 1 | @import "../base/fn"; 2 | 3 | .weui_btn { 4 | position: relative; 5 | display: block; 6 | margin-left: auto; 7 | margin-right: auto; 8 | padding-left: 14px; 9 | padding-right: 14px; 10 | box-sizing: border-box; 11 | font-size: @weuiBtnFontSize; 12 | text-align: center; 13 | text-decoration: none; 14 | color: @weuiBtnFontColor; 15 | line-height: unit(@weuiBtnHeight/@weuiBtnFontSize); 16 | border-radius: @weuiBtnBorderRadius; 17 | .setTapColor(); 18 | overflow: hidden; 19 | &:after { 20 | content: " "; 21 | width: 200%; 22 | height: 200%; 23 | position: absolute; 24 | top: 0; 25 | left: 0; 26 | border: 1px solid rgba(0, 0, 0, .2); 27 | transform: scale(.5); 28 | transform-origin: 0 0; 29 | box-sizing: border-box; 30 | border-radius: @weuiBtnBorderRadius*2; 31 | } 32 | 33 | &.weui_btn_inline { 34 | display: inline-block; 35 | } 36 | } -------------------------------------------------------------------------------- /src/style/components/button/weui_btn_plain.less: -------------------------------------------------------------------------------- 1 | @import "../base/fn"; 2 | 3 | .weui_btn_plain_primary { 4 | color: @weuiBtnPrimaryBg; 5 | border: 1px solid @weuiBtnPrimaryBg; 6 | button&, input& { 7 | border-width: 1px; 8 | background-color: transparent; 9 | } 10 | &:active { 11 | border-color: @weuiBtnPrimaryActiveBg; 12 | } 13 | &:after { 14 | border-width: 0; 15 | } 16 | } 17 | 18 | .weui_btn_plain_default { 19 | color: #5A5A5A; 20 | border: 1px solid #5A5A5A; 21 | button&, input& { 22 | border-width: 1px; 23 | background-color: transparent; 24 | } 25 | &:after { 26 | border-width: 0; 27 | } 28 | } -------------------------------------------------------------------------------- /src/style/components/button/weui_btn_primary.less: -------------------------------------------------------------------------------- 1 | @import "../base/fn"; 2 | 3 | .weui_btn_primary { 4 | background-color: @weuiBtnPrimaryBg; 5 | &:not(.weui_btn_disabled):visited { 6 | color: @weuiBtnFontColor; 7 | } 8 | &:not(.weui_btn_disabled):active { 9 | color: @weuiBtnActiveFontColor; 10 | background-color: @weuiBtnPrimaryActiveBg; 11 | } 12 | } 13 | -------------------------------------------------------------------------------- /src/style/components/button/weui_btn_warn.less: -------------------------------------------------------------------------------- 1 | @import "../base/fn"; 2 | 3 | .weui_btn_warn { 4 | background-color: @weuiBtnWarnBg; 5 | &:not(.weui_btn_disabled):visited { 6 | color: @weuiBtnFontColor; 7 | } 8 | &:not(.weui_btn_disabled):active { 9 | color: @weuiBtnActiveFontColor; 10 | background-color: @weuiBtnWarnActiveBg; 11 | } 12 | } 13 | -------------------------------------------------------------------------------- /src/style/components/cells/cell-body.jsx: -------------------------------------------------------------------------------- 1 | import React from 'react'; 2 | import style from './style'; 3 | import classNames from 'classnames'; 4 | 5 | const CellBody = (props) => { 6 | let className = classNames('weui_cell_bd',{ 7 | weui_cell_primary : props.primary 8 | },props.className) 9 | 10 | return ( 11 | 12 | {props.children} 13 | 14 | ); 15 | } 16 | 17 | CellBody.propTypes = { 18 | className: React.PropTypes.string, 19 | primary: React.PropTypes.bool, 20 | }; 21 | 22 | CellBody.defaultProps = { 23 | className: '', 24 | primary: true 25 | }; 26 | 27 | export default CellBody; -------------------------------------------------------------------------------- /src/style/components/cells/cell-footer.jsx: -------------------------------------------------------------------------------- 1 | import React from 'react'; 2 | import style from './style'; 3 | import classNames from 'classnames'; 4 | 5 | const CellFooter = (props) => { 6 | let className = classNames('weui_cell_ft',{ 7 | weui_cell_primary: props.primary 8 | },props.className); 9 | 10 | return ( 11 | 12 | {props.children} 13 | 14 | ); 15 | } 16 | 17 | CellFooter.propTypes = { 18 | className: React.PropTypes.string, 19 | primary: React.PropTypes.bool, 20 | }; 21 | 22 | CellFooter.defaultProps = { 23 | className: '', 24 | primary: false 25 | }; 26 | 27 | export default CellFooter; -------------------------------------------------------------------------------- /src/style/components/cells/cell-header.jsx: -------------------------------------------------------------------------------- 1 | import React from 'react'; 2 | import style from './style'; 3 | import classNames from 'classnames'; 4 | 5 | const CellHeader = (props) => { 6 | let className = classNames('weui_cell_hd',{ 7 | weui_cell_primary: props.primary 8 | },props.className); 9 | 10 | return ( 11 | 12 | {props.children} 13 | 14 | ); 15 | } 16 | 17 | CellHeader.propTypes = { 18 | className: React.PropTypes.string, 19 | primary: React.PropTypes.bool, 20 | }; 21 | 22 | CellHeader.defaultProps = { 23 | className: '', 24 | primary: false 25 | }; 26 | 27 | export default CellHeader; -------------------------------------------------------------------------------- /src/style/components/cells/cell.jsx: -------------------------------------------------------------------------------- 1 | import React from 'react'; 2 | import style from './style'; 3 | import CellHeader from './cell-header'; 4 | import CellBody from './cell-body'; 5 | import CellFooter from './cell-footer'; 6 | import classNames from 'classnames'; 7 | 8 | const Cell = (props) => { 9 | let className = classNames('weui_cell',{ 10 | weui_cell_select : props.select || props.selectAfter || props.selectBefore, 11 | weui_select_after : props.selectAfter, 12 | weui_select_before : props.selectBefore 13 | }, props.className); 14 | 15 | if(props.link){ 16 | return ( 17 | 18 | {props.children} 19 | ); 20 | }else{ 21 | return ( 22 |
23 | {props.children} 24 |
); 25 | } 26 | } 27 | 28 | Cell.propTypes = { 29 | className: React.PropTypes.string, 30 | link: React.PropTypes.string, 31 | select: React.PropTypes.bool, 32 | selectAfter: React.PropTypes.bool, 33 | selectBefore: React.PropTypes.bool, 34 | }; 35 | 36 | Cell.defaultProps = { 37 | className: '', 38 | link: null, 39 | select: false, 40 | selectAfter: false, 41 | selectBefore: false 42 | }; 43 | 44 | export default Cell; -------------------------------------------------------------------------------- /src/style/components/cells/cells-tips.jsx: -------------------------------------------------------------------------------- 1 | import React from 'react'; 2 | import style from './style'; 3 | import classNames from 'classnames'; 4 | 5 | const CellsTips = (props) => { 6 | let className = classNames('weui_cells_tips', props.className); 7 | return ( 8 |
11 |

{props.children}

12 |
13 | ); 14 | } 15 | 16 | export default CellsTips; -------------------------------------------------------------------------------- /src/style/components/cells/cells-title.jsx: -------------------------------------------------------------------------------- 1 | import React from 'react'; 2 | import style from './style'; 3 | import classNames from 'classnames'; 4 | 5 | const CellsTitle = (props) => { 6 | let className = classNames('weui_cells_title', props.className); 7 | return ( 8 |
11 |

{props.children}

12 |
13 | ); 14 | } 15 | 16 | 17 | export default CellsTitle; -------------------------------------------------------------------------------- /src/style/components/cells/cells.jsx: -------------------------------------------------------------------------------- 1 | import React from 'react'; 2 | import style from './style'; 3 | import CellsTitle from './cells-title'; 4 | import CellsTips from './cells-tips'; 5 | import classNames from 'classnames'; 6 | 7 | const Cells = (props) => { 8 | 9 | let className = classNames('weui_cells', { 10 | weui_cells_access : props.access, 11 | weui_cells_radio : props.radio, 12 | weui_cells_checkbox : props.checkbox, 13 | weui_cells_form : props.form, 14 | }, props.className); 15 | 16 | let cellsTitle,cellsTips; 17 | if(props.title)cellsTitle = {props.title}; 18 | if(props.tips)cellsTips = {props.tips}; 19 | 20 | return ( 21 |
22 | {cellsTitle} 23 |
24 | {props.children} 25 |
26 | {cellsTips} 27 |
28 | ); 29 | } 30 | 31 | Cells.propTypes = { 32 | className: React.PropTypes.string, 33 | title: React.PropTypes.string, 34 | tips: React.PropTypes.string, 35 | access: React.PropTypes.bool, 36 | radio: React.PropTypes.bool, 37 | checkbox: React.PropTypes.bool, 38 | form: React.PropTypes.bool, 39 | }; 40 | 41 | Cells.defaultProps = { 42 | className: '', 43 | access: false, 44 | radio: false, 45 | checkbox: false, 46 | form: false, 47 | }; 48 | 49 | export default Cells; -------------------------------------------------------------------------------- /src/style/components/cells/index.jsx: -------------------------------------------------------------------------------- 1 | import Cells from './cells'; 2 | import Cell from './cell'; 3 | import RadioCells from './radio-cells'; 4 | import RadioCell from './radio-cell'; 5 | import CellHeader from './cell-header'; 6 | import CellBody from './cell-body'; 7 | import CellFooter from './cell-footer'; 8 | import CellsTitle from './cells-title'; 9 | 10 | export default{ 11 | Cells,Cell,RadioCell,CellHeader,CellBody,CellFooter 12 | }; 13 | 14 | -------------------------------------------------------------------------------- /src/style/components/cells/weui_check.less: -------------------------------------------------------------------------------- 1 | @import "./weui_check/weui_check_common"; 2 | @import "./weui_check/weui_radio"; 3 | @import "./weui_check/weui_checkbox"; 4 | -------------------------------------------------------------------------------- /src/style/components/cells/weui_check/weui_check_common.less: -------------------------------------------------------------------------------- 1 | 2 | .weui_check_label { 3 | .setTapColor(); 4 | } 5 | 6 | .weui_check{ 7 | position: absolute; 8 | left: -9999em; 9 | } -------------------------------------------------------------------------------- /src/style/components/cells/weui_check/weui_checkbox.less: -------------------------------------------------------------------------------- 1 | 2 | 3 | .weui_cells_checkbox { 4 | .weui_cell_hd { 5 | padding-right: @weuiCellInnerGapH; 6 | } 7 | .weui_cell { 8 | &:active { 9 | background-color: #ECECEC; 10 | } 11 | } 12 | .weui_icon_checked { 13 | &:before { 14 | content: '\EA01'; 15 | color: #C9C9C9; 16 | font-size: 23px; 17 | display: block; 18 | } 19 | } 20 | } 21 | 22 | // method2 accessbility 23 | .weui_check { 24 | // checkbox 25 | .weui_cells_checkbox & { 26 | &:checked { 27 | & + .weui_icon_checked { 28 | &:before { 29 | content: '\EA06'; 30 | color: #09BB07; 31 | } 32 | } 33 | } 34 | } 35 | } -------------------------------------------------------------------------------- /src/style/components/cells/weui_check/weui_radio.less: -------------------------------------------------------------------------------- 1 | 2 | 3 | // method2 accessbility 4 | .weui_cells_radio{ 5 | .weui_cell_ft { 6 | padding-left: @weuiCellInnerGapH; 7 | } 8 | .weui_cell { 9 | &:active { 10 | background-color: #ECECEC; 11 | } 12 | } 13 | } 14 | .weui_check { 15 | // radio 16 | .weui_cells_radio & { 17 | &:checked { 18 | & + .weui_icon_checked { 19 | &:before { 20 | content: '\EA08'; 21 | color: #09BB07; 22 | font-size: 16px; 23 | } 24 | } 25 | } 26 | } 27 | } -------------------------------------------------------------------------------- /src/style/components/cells/weui_form.less: -------------------------------------------------------------------------------- 1 | @import "./weui_form/weui_form_common"; 2 | @import "./weui_form/weui_select"; 3 | @import "./weui_form/weui_select_before"; 4 | @import "./weui_form/weui_select_after"; 5 | @import "./weui_form/weui_vcode"; 6 | -------------------------------------------------------------------------------- /src/style/components/cells/weui_form/weui_form_common.less: -------------------------------------------------------------------------------- 1 | 2 | 3 | .weui_label{display:block;width:3em;} 4 | .weui_input { 5 | width: 100%; 6 | border: 0; 7 | outline: 0; 8 | -webkit-appearance: none; 9 | background-color: transparent; 10 | font-size: inherit; 11 | color: inherit; 12 | height: unit(@weuiCellLineHeight, em); 13 | line-height: @weuiCellLineHeight; 14 | 15 | // hides the spin-button 16 | &::-webkit-outer-spin-button, &::-webkit-inner-spin-button{ 17 | -webkit-appearance: none; 18 | margin: 0; 19 | } 20 | } 21 | .weui_textarea { 22 | display: block; 23 | border: 0; 24 | resize: none; 25 | width: 100%; 26 | font-size: 1em; 27 | line-height: inherit; 28 | outline: 0; 29 | } 30 | 31 | .weui_toptips { 32 | display:none; 33 | position: fixed; 34 | -webkit-transform: translateZ(0); 35 | width: 100%; 36 | top: 0; 37 | line-height: 2.3; 38 | font-size:14px; 39 | text-align: center; 40 | color: #FFF; 41 | z-index: 2; 42 | &.weui_warn { 43 | background-color: @globalWarnColor; 44 | } 45 | } 46 | .weui_cells_form { 47 | .weui_cell_warn{ 48 | color:@globalWarnColor; 49 | .weui_icon_warn{display:inline-block;} 50 | } 51 | .weui_cell_hd { 52 | padding-right: .3em; 53 | } 54 | .weui_cell_ft{font-size:0;} 55 | .weui_icon_warn{ 56 | display:none; 57 | } 58 | } 59 | -------------------------------------------------------------------------------- /src/style/components/cells/weui_form/weui_select.less: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | .weui_cell_select { 5 | padding: 0 !important; 6 | .weui_select { 7 | padding-right: 30px; 8 | } 9 | .weui_access_icon { 10 | 11 | } 12 | .weui_cell_bd{ 13 | &:after{ 14 | content: " "; 15 | .setArrow_Wap(right, 6px, #C8C8CD, 2px); 16 | 17 | position: absolute; 18 | top: 50%; 19 | right: @weuiCellGapH; 20 | margin-top: -3px; 21 | } 22 | } 23 | } 24 | 25 | .weui_select { 26 | -webkit-appearance: none; 27 | border: 0; 28 | outline: 0; 29 | background-color: transparent; 30 | width: 100%; 31 | font-size: inherit; 32 | height: 43px; 33 | position: relative; 34 | z-index: 1; 35 | padding-left: @weuiCellGapH; 36 | } -------------------------------------------------------------------------------- /src/style/components/cells/weui_form/weui_select_after.less: -------------------------------------------------------------------------------- 1 | 2 | @import "./weui_select"; 3 | 4 | .weui_select_after { 5 | padding-left:@weuiCellGapH !important; 6 | } -------------------------------------------------------------------------------- /src/style/components/cells/weui_form/weui_select_before.less: -------------------------------------------------------------------------------- 1 | 2 | @import "./weui_select"; 3 | 4 | .weui_select_before { 5 | padding-right:@weuiCellGapH !important; 6 | .weui_select{width:auto;} 7 | .weui_cell_hd { 8 | position:relative; 9 | &:after { 10 | .setRightLine(@weuiCellBorderColor); 11 | } 12 | &:before{ 13 | content: " "; 14 | .setArrow_Wap(right, 6px, #C8C8CD, 2px); 15 | 16 | position: absolute; 17 | top: 50%; 18 | right: @weuiCellGapH; 19 | margin-top: -3px; 20 | } 21 | } 22 | .weui_cell_bd { 23 | padding-left:@weuiCellGapH; 24 | &:after{ 25 | display:none; 26 | } 27 | } 28 | } -------------------------------------------------------------------------------- /src/style/components/cells/weui_form/weui_vcode.less: -------------------------------------------------------------------------------- 1 | 2 | 3 | .weui_vcode { 4 | padding-top: 0 !important; 5 | padding-right: 0 !important; 6 | padding-bottom: 0 !important; 7 | .weui_cell_ft { 8 | img { 9 | margin-left: 5px; 10 | height: @weuiCellHeight; 11 | vertical-align: middle; 12 | } 13 | } 14 | } -------------------------------------------------------------------------------- /src/style/components/cells/weui_switch.less: -------------------------------------------------------------------------------- 1 | 2 | @weuiSwitchHeight: 32px; 3 | .weui_cell_switch{ 4 | padding-top: (@weuiCellHeight - @weuiSwitchHeight) / 2 !important; 5 | padding-bottom: (@weuiCellHeight - @weuiSwitchHeight) / 2 !important; 6 | } 7 | .weui_switch{ 8 | appearance: none; 9 | position: relative; 10 | width: 52px; 11 | height: @weuiSwitchHeight; 12 | border: 1px solid #DFDFDF; 13 | outline: 0; 14 | border-radius: 16px; 15 | box-sizing: border-box; 16 | background: #DFDFDF; 17 | &:before{ 18 | content: " "; 19 | position: absolute; 20 | top: 0; 21 | left: 0; 22 | width: 50px; 23 | height: @weuiSwitchHeight - 2; 24 | border-radius: 15px; 25 | background-color: #FDFDFD; 26 | transition:transform .3s; 27 | } 28 | &:after{ 29 | content: " "; 30 | position: absolute; 31 | top: 0; 32 | left: 0; 33 | width: @weuiSwitchHeight - 2; 34 | height: @weuiSwitchHeight - 2; 35 | border-radius: 15px; 36 | background-color: #FFFFFF; 37 | box-shadow: 0 1px 3px rgba(0, 0, 0, 0.4); 38 | transition:transform .3s; 39 | } 40 | 41 | &:checked{ 42 | border-color: #04BE02; 43 | background-color: #04BE02; 44 | &:before{ 45 | transform: scale(0); 46 | } 47 | &:after{ 48 | transform: translateX(20px); 49 | } 50 | } 51 | } -------------------------------------------------------------------------------- /src/style/components/index.js: -------------------------------------------------------------------------------- 1 | import Cells from './cells'; 2 | import CellBody from './cells/cell-body'; 3 | import CellFooter from './cells/cell-footer'; 4 | import CellHeader from './cells/cell-header'; 5 | import Cell from './cells/cell'; 6 | import CellsTips from './cells/cells-tips'; 7 | import CellsTitle from './cells/cells-title'; 8 | import CheckboxCell from './cells/checkbox-cell'; 9 | import InputCell from './cells/input-cell'; 10 | import Select from './cells/input-select'; 11 | import RadioCell from './cells/radio-cell'; 12 | import RadioCells from './cells/radio-cells'; 13 | import SwitchCell from './cells/switch-cell'; 14 | import Button from './button'; 15 | import ButtonArea from './button'; 16 | import Actionsheet from './actionsheet'; 17 | import Article from './article'; 18 | import Dialog from './dialog'; 19 | import Mask from './mask'; 20 | import Message from './message'; 21 | import Progress from './progress'; 22 | import Toast from './toast'; 23 | import Swiper from './swiper'; 24 | import SwiperItem from './swiper/item'; 25 | import Page from './page'; 26 | 27 | module.exports = {Page, Swiper, SwiperItem, Toast, Progress, Message, Mask, Dialog, Cells, CellBody, CellFooter, CellHeader, Cell, CellsTips, CellsTitle, CheckboxCell, InputCell, Button, Select, RadioCell, RadioCells, SwitchCell, ButtonArea, Actionsheet, Article} 28 | 29 | -------------------------------------------------------------------------------- /src/style/components/mask/index.jsx: -------------------------------------------------------------------------------- 1 | import React from 'react'; 2 | import ReactDOM from 'react-dom'; 3 | import style from './style'; 4 | import classNames from 'classnames'; 5 | 6 | class Mask extends React.Component { 7 | constructor(props) { 8 | super(props); 9 | } 10 | 11 | render() { 12 | let className = classNames({ 13 | 'weui_mask': !this.props.transparent && !this.props.fade, 14 | 'weui_mask_transparent' : this.props.transparent, 15 | 'weui_mask_transition_fade' : this.props.fade, 16 | }); 17 | 18 | let maskstyle = { 19 | display: this.props.show ? 'block' : 'none', 20 | }; 21 | 22 | return ( 23 |
27 | ); 28 | } 29 | } 30 | 31 | Mask.propTypes = { 32 | transparent: React.PropTypes.bool, 33 | fade: React.PropTypes.bool, 34 | className: React.PropTypes.string, 35 | onClick: React.PropTypes.func, 36 | show: React.PropTypes.bool, 37 | opacity: React.PropTypes.number 38 | }; 39 | 40 | Mask.defaultProps = { 41 | transparent: false, 42 | className: '', 43 | fade: false, 44 | show: false, 45 | opacity: 0.4 46 | }; 47 | 48 | export default Mask; -------------------------------------------------------------------------------- /src/style/components/mask/style.less: -------------------------------------------------------------------------------- 1 | @import "../base/fn"; 2 | 3 | .weui_mask { 4 | position: fixed; 5 | z-index: 1; 6 | width: 100%; 7 | height: 100%; 8 | top: 0; 9 | left: 0; 10 | background: rgba(0, 0, 0, .6); 11 | } 12 | 13 | .weui_mask_transparent { 14 | position: fixed; 15 | z-index: 1; 16 | width: 100%; 17 | height: 100%; 18 | top: 0; 19 | left: 0; 20 | } 21 | 22 | .weui_mask_transition_fade{ 23 | display: none; 24 | position: fixed; 25 | z-index: 1; 26 | width: 100%; 27 | height: 100%; 28 | top: 0; 29 | left: 0; 30 | background: rgba(0,0,0,.6); 31 | .animated; 32 | .fadeIn; 33 | } 34 | .weui_fade_toggle{ 35 | background: rgba(0,0,0,.6); 36 | } -------------------------------------------------------------------------------- /src/style/components/message/index.jsx: -------------------------------------------------------------------------------- 1 | import React from 'react'; 2 | import style from './style'; 3 | import classNames from 'classnames'; 4 | import Button from '../button'; 5 | 6 | const Message = (props) => { 7 | let actions = props.actions.map((action,idx)=>{ 8 | return (); 9 | }); 10 | 11 | let className = classNames('weui_msg',props.className); 12 | return ( 13 |
14 |
{props.icon}
15 |
16 |

{props.title}

17 |

{props.children}

18 |
19 |
20 |

21 | {actions} 22 |

23 |
24 |
25 | {props.extra} 26 |
27 |
28 | ); 29 | } 30 | 31 | Message.propTypes = { 32 | className: React.PropTypes.string, 33 | icon: React.PropTypes.any, 34 | title: React.PropTypes.string, 35 | actions: React.PropTypes.array, 36 | extra: React.PropTypes.any 37 | }; 38 | 39 | Message.defaultProps = { 40 | className: '', 41 | actions:[] 42 | }; 43 | 44 | export default Message; -------------------------------------------------------------------------------- /src/style/components/message/style.less: -------------------------------------------------------------------------------- 1 | @import "../base/fn"; 2 | 3 | .weui_msg { 4 | padding-top: @weuiMsgPaddingTop; 5 | text-align: center; 6 | 7 | .weui_icon_area { 8 | margin-bottom: @weuiMsgIconGap; 9 | } 10 | 11 | .weui_text_area { 12 | margin-bottom: @weuiMsgTextGap; 13 | padding:0 20px; 14 | } 15 | .weui_msg_title { 16 | margin-bottom: @weuiMsgTitleGap; 17 | font-weight: 400; 18 | font-size: 20px; 19 | } 20 | .weui_msg_desc { 21 | font-size: 14px; 22 | color: @globalTextColor; 23 | } 24 | 25 | .weui_opr_area { 26 | margin-bottom: @weuiMsgOprGap; 27 | } 28 | 29 | .weui_extra_area { 30 | margin-bottom: @weuiMsgExtraAreaGap; 31 | font-size: 14px; 32 | color: @globalTextColor; 33 | a{color: @globalLinkColor;} 34 | } 35 | } 36 | 37 | @media screen and (min-height: @weuiMsgExtraAreaOfMinHeight) { 38 | .weui_extra_area { 39 | position: fixed; 40 | left: 0; 41 | bottom: 0; 42 | width: 100%; 43 | text-align: center; 44 | } 45 | } -------------------------------------------------------------------------------- /src/style/components/page/page-header.jsx: -------------------------------------------------------------------------------- 1 | import React from 'react'; 2 | 3 | const PageHeader = (props) => { 4 | let desc = props.desc ?

{props.desc}

: null; 5 | return ( 6 |
7 |

{props.title}

8 | {desc} 9 |
10 | ) 11 | }; 12 | 13 | export default PageHeader; -------------------------------------------------------------------------------- /src/style/components/progress/index.jsx: -------------------------------------------------------------------------------- 1 | import React from 'react'; 2 | import style from './style'; 3 | import classNames from 'classnames'; 4 | 5 | const Progress = (props) => { 6 | let className = classNames('weui_progress',props.className); 7 | let prgstyle = { 8 | width: props.percent + '%' 9 | }; 10 | 11 | return ( 12 |
13 |
14 |
15 |
16 | 17 | {props.children} 18 | 19 |
20 | ); 21 | } 22 | 23 | Progress.propTypes = { 24 | className: React.PropTypes.string, 25 | percent: React.PropTypes.number, 26 | }; 27 | 28 | Progress.defaultProps = { 29 | className: '', 30 | percent:0 31 | }; 32 | 33 | export default Progress; -------------------------------------------------------------------------------- /src/style/components/progress/style.less: -------------------------------------------------------------------------------- 1 | @import "../base/fn"; 2 | 3 | .weui_progress { 4 | display: flex; 5 | align-items: center; 6 | } 7 | 8 | .weui_progress_bar { 9 | background-color: @weuiProgressBg; 10 | height: @weuiProgressHeight; 11 | flex: 1; 12 | } 13 | 14 | .weui_progress_inner_bar { 15 | width: 0; 16 | height: 100%; 17 | background-color: @weuiProgressColor; 18 | } 19 | 20 | .weui_progress_opr { 21 | display: block; 22 | margin-left: 15px; 23 | font-size: 0; 24 | } -------------------------------------------------------------------------------- /src/style/components/swiper/index.jsx: -------------------------------------------------------------------------------- 1 | import React from 'react'; 2 | import style from './style'; 3 | import classNames from 'classnames'; 4 | import SwiperJS from './swiper'; 5 | 6 | 7 | class Swiper extends React.Component { 8 | constructor(props) { 9 | super(props); 10 | 11 | } 12 | 13 | componentDidMount() { 14 | this.swiper = new SwiperJS({ 15 | container: '#'+this.props.id, 16 | direction:'horizontal' 17 | }); 18 | } 19 | 20 | render() { 21 | let className = classNames('swipercontainer',this.props.className); 22 | let style={ 23 | height: this.props.height 24 | }; 25 | 26 | return ( 27 |
28 |
29 |
30 | {this.props.children} 31 |
32 |
33 |
34 |
35 |
36 | ); 37 | } 38 | } 39 | 40 | 41 | Swiper.propTypes = { 42 | className: React.PropTypes.string, 43 | id:React.PropTypes.string.isRequired, 44 | height:React.PropTypes.number 45 | 46 | }; 47 | 48 | Swiper.defaultProps = { 49 | className: '', 50 | height: 200 51 | }; 52 | 53 | 54 | export default Swiper; 55 | -------------------------------------------------------------------------------- /src/style/components/swiper/item.jsx: -------------------------------------------------------------------------------- 1 | import React from 'react'; 2 | import style from './style'; 3 | import classNames from 'classnames'; 4 | 5 | const SwiperItem = (props) => { 6 | let className = classNames('item',props.className); 7 | 8 | return ( 9 |
10 | {props.children} 11 |
12 | ); 13 | } 14 | 15 | SwiperItem.propTypes = { 16 | className: React.PropTypes.string, 17 | }; 18 | 19 | SwiperItem.defaultProps = { 20 | className: '', 21 | }; 22 | 23 | export default SwiperItem; -------------------------------------------------------------------------------- /src/style/components/swiper/style.less: -------------------------------------------------------------------------------- 1 | @import "../base/fn"; 2 | 3 | .swiperwrapper { 4 | position: relative; 5 | padding: 1px 0; 6 | background-color: @weuiCellBg; 7 | overflow: auto; 8 | &:before { 9 | .setTopLine(@weuiCellBorderColor); 10 | } 11 | &:after { 12 | .setBottomLine(@weuiCellBorderColor); 13 | } 14 | } 15 | 16 | .swiper { 17 | height: 100%; 18 | overflow: hidden; 19 | transition: all 0.3s ease; 20 | 21 | 22 | } 23 | .swipernav{ 24 | position: absolute; 25 | bottom: 0; 26 | right: 0; 27 | height: 20px; 28 | margin-right: 10px; 29 | 30 | .bullet{ 31 | width: 10px; 32 | height: 10px; 33 | border-radius: 5px; 34 | background-color: rgba(138, 138, 138, 0.25); 35 | display: inline-block; 36 | margin: 3px 1px; 37 | 38 | &.active{ 39 | background-color: @monokaiGreen; 40 | } 41 | } 42 | } 43 | .item { 44 | height: 100%; 45 | background-position: center center; 46 | background-size: cover; 47 | position: relative; 48 | overflow: hidden; 49 | float: left; 50 | 51 | &.active{ 52 | .animated{ 53 | animation-fill-mode: both; 54 | opacity: 1; 55 | } 56 | } 57 | &:not(.active){ 58 | .animated{ 59 | animation: none; 60 | opacity: 0; 61 | } 62 | } 63 | } 64 | 65 | .item{ 66 | color: @globalTextColor; 67 | background-color: @weuiCellBg; 68 | } 69 | -------------------------------------------------------------------------------- /src/style/components/toast/style.less: -------------------------------------------------------------------------------- 1 | @import "../base/fn"; 2 | 3 | .weui_toast { 4 | position: fixed; 5 | z-index: 3; 6 | width: 7.6em; 7 | min-height: 7.6em; 8 | top: 180px; 9 | left: 50%; 10 | margin-left: -3.8em; 11 | background: rgba(40, 40, 40, 0.75); 12 | text-align: center; 13 | border-radius: 5px; 14 | color: #FFFFFF; 15 | } 16 | .weui_icon_toast { 17 | margin: 22px 0 0; 18 | display: block; 19 | &:before { 20 | content: '\EA08'; 21 | color: #FFFFFF; 22 | font-size: 55px; 23 | } 24 | } 25 | .weui_toast_content { 26 | margin: 0 0 15px; 27 | } 28 | 29 | 30 | 31 | // loading toast 32 | .weui_loading_toast{ 33 | .weui_toast_content{margin-top:64%;font-size:14px;} 34 | } 35 | .weui_loading{ 36 | position: absolute; width: 0px; z-index: 2000000000; left: 50%; top: 38%; 37 | } -------------------------------------------------------------------------------- /src/style/components/utils/events.jsx: -------------------------------------------------------------------------------- 1 | module.exports = { 2 | 3 | getMousePosition (event) { 4 | return { 5 | x: event.pageX, 6 | y: event.pageY 7 | }; 8 | }, 9 | 10 | getTouchPosition (event) { 11 | return { 12 | x: event.touches[0].pageX, 13 | y: event.touches[0].pageY 14 | }; 15 | }, 16 | 17 | pauseEvent (event) { 18 | event.stopPropagation(); 19 | event.preventDefault(); 20 | event.returnValue = false; 21 | event.cancelBubble = true; 22 | }, 23 | 24 | addEventsToDocument (eventMap) { 25 | for (const key in eventMap) { 26 | document.addEventListener(key, eventMap[key], false); 27 | } 28 | }, 29 | 30 | removeEventsFromDocument (eventMap) { 31 | for (const key in eventMap) { 32 | document.removeEventListener(key, eventMap[key], false); 33 | } 34 | }, 35 | 36 | targetIsDescendant (event, parent) { 37 | let node = event.target; 38 | while (node !== null) { 39 | if (node === parent) return true; 40 | node = node.parentNode; 41 | } 42 | return false; 43 | } 44 | 45 | }; -------------------------------------------------------------------------------- /src/style/components/utils/mobiledetect.jsx: -------------------------------------------------------------------------------- 1 | import MobileDetect from 'mobile-detect'; 2 | const md = new MobileDetect(window.navigator.userAgent); 3 | 4 | module.exports = { 5 | iOSVer: md.version('iOS') ? md.version('iOS') : null, 6 | androidVer : md.version('Android') ? md.version('Android') : null, 7 | isIOS : md.os() === 'iOS', 8 | isIOS8 : md.os() === 'iOS' && parseFloat(md.version('iOS')) >= 8 && parseFloat(md.version('iOS')) <= 9, 9 | isIOS9 : md.os() === 'iOS' && parseFloat(md.version('iOS')) >= 9 && parseFloat(md.version('iOS')) <= 10, 10 | isAndroid : md.os() === 'AndroidOS', 11 | isWindow: md.os() === 'WindowsMobileOS' || md.os() === 'WindowsPhoneOS', 12 | isMobile: md.mobile() !== null ? true : false, 13 | isWechat: md.match('MicroMessenger') ? true : false, 14 | wechatVer: md.version('MicroMessenger') ? md.version('MicroMessenger') : null, 15 | }; -------------------------------------------------------------------------------- /tests.webpack.js: -------------------------------------------------------------------------------- 1 | var context = require.context('./src/style/components', true, /(.spec\.cjsx?|.spec\.jsx?)$/); 2 | context.keys().forEach(context); 3 | 4 | -------------------------------------------------------------------------------- /webpack.config.js: -------------------------------------------------------------------------------- 1 | var path = require('path'); 2 | var webpack = require('webpack'); 3 | 4 | module.exports = { 5 | entry: [ 6 | 'babel-polyfill', 7 | './src/example/index.js', 8 | 'webpack-dev-server/client?http://localhost:8080' 9 | ], 10 | output: { 11 | path:'./dist', 12 | publicPath: '/', 13 | filename: 'bundle.js' 14 | }, 15 | devServer:{ 16 | inline:true, 17 | contentBase: './dist' 18 | }, 19 | resolve: { 20 | extensions: ['', '.jsx', '.less', '.js', '.json'] 21 | }, 22 | debug: true, 23 | devtool: 'source-map', 24 | module: { 25 | loaders: [ 26 | { 27 | test: /\.jsx?$/, 28 | include: path.join(__dirname, 'src'), 29 | loader: 'babel', 30 | query: { 31 | presets: ['es2015','react'] 32 | } 33 | }, 34 | { 35 | test: /\.less$/, 36 | loader: "style!css!autoprefixer!less" 37 | }, 38 | ] 39 | } 40 | }; 41 | -------------------------------------------------------------------------------- /webpack.config.test.js: -------------------------------------------------------------------------------- 1 | var path = require('path'); 2 | const webpack = require('webpack'); 3 | 4 | module.exports = { 5 | module: { 6 | loaders: [ 7 | { 8 | test: /\.jsx?$/, 9 | include: path.join(__dirname, 'src'), 10 | loader: 'babel', 11 | query: { 12 | presets: ['es2015','react'] 13 | } 14 | }, 15 | { 16 | test: /\.less$/, 17 | loader: "style!css!autoprefixer!less" 18 | }, 19 | ], 20 | noParse: [ 21 | /node_modules\/sinon\//, 22 | ] 23 | }, 24 | resolve: { 25 | extensions: ['', '.jsx', '.less', '.js', '.json'], 26 | alias: { 27 | 'sinon': 'sinon/pkg/sinon' 28 | } 29 | }, 30 | watch: true, 31 | plugins: [ 32 | new webpack.DefinePlugin({ 33 | 'process.env.NODE_ENV': JSON.stringify('test') 34 | }) 35 | ], 36 | externals: { 37 | 'jsdom': 'window', 38 | 'cheerio': 'window', 39 | 'react/lib/ExecutionEnvironment': true 40 | }, 41 | devtool: 'inline-source-map', // sourcemap support 42 | debug: true, 43 | }; -------------------------------------------------------------------------------- /webpack.production.config.js: -------------------------------------------------------------------------------- 1 | var path = require('path'); 2 | var webpack = require('webpack'); 3 | 4 | module.exports = { 5 | entry: [ 6 | 'babel-polyfill', 7 | './src/example/index.js', 8 | ], 9 | output: { 10 | path:'./dist', 11 | filename: 'bundle.js' 12 | }, 13 | resolve: { 14 | extensions: ['', '.jsx', '.less', '.js', '.json'] 15 | }, 16 | module: { 17 | loaders: [ 18 | { 19 | test: /\.jsx?$/, 20 | include: path.join(__dirname, 'src'), 21 | loader: 'babel', 22 | query: { 23 | presets: ['es2015','react'] 24 | } 25 | }, 26 | { 27 | test: /\.less$/, 28 | loader: "style!css!autoprefixer!less" 29 | }, 30 | ] 31 | } 32 | }; 33 | --------------------------------------------------------------------------------