UNPKG

phoenix-ui

Version:
1,748 lines (1,392 loc) 700 kB
(function webpackUniversalModuleDefinition(root, factory) { if(typeof exports === 'object' && typeof module === 'object') module.exports = factory(require("react"), require("ReactCSSTransitionGroup"), require("react-dom")); else if(typeof define === 'function' && define.amd) define(["react", "ReactCSSTransitionGroup", "react-dom"], factory); else if(typeof exports === 'object') exports["Phoenix"] = factory(require("react"), require("ReactCSSTransitionGroup"), require("react-dom")); else root["Phoenix"] = factory(root["React"], root["ReactCSSTransitionGroup"], root["ReactDOM"]); })(this, function(__WEBPACK_EXTERNAL_MODULE_26__, __WEBPACK_EXTERNAL_MODULE_96__, __WEBPACK_EXTERNAL_MODULE_104__) { return /******/ (function(modules) { // webpackBootstrap /******/ // The module cache /******/ var installedModules = {}; /******/ // The require function /******/ function __webpack_require__(moduleId) { /******/ // Check if module is in cache /******/ if(installedModules[moduleId]) /******/ return installedModules[moduleId].exports; /******/ // Create a new module (and put it into the cache) /******/ var module = installedModules[moduleId] = { /******/ exports: {}, /******/ id: moduleId, /******/ loaded: false /******/ }; /******/ // Execute the module function /******/ modules[moduleId].call(module.exports, module, module.exports, __webpack_require__); /******/ // Flag the module as loaded /******/ module.loaded = true; /******/ // Return the exports of the module /******/ return module.exports; /******/ } /******/ // expose the modules object (__webpack_modules__) /******/ __webpack_require__.m = modules; /******/ // expose the module cache /******/ __webpack_require__.c = installedModules; /******/ // __webpack_public_path__ /******/ __webpack_require__.p = ""; /******/ // Load entry module and return exports /******/ return __webpack_require__(0); /******/ }) /************************************************************************/ /******/ ([ /* 0 */ /***/ (function(module, exports, __webpack_require__) { module.exports = __webpack_require__(24); /***/ }), /* 1 */, /* 2 */, /* 3 */, /* 4 */, /* 5 */, /* 6 */, /* 7 */, /* 8 */, /* 9 */, /* 10 */, /* 11 */, /* 12 */, /* 13 */, /* 14 */, /* 15 */, /* 16 */, /* 17 */, /* 18 */, /* 19 */, /* 20 */, /* 21 */, /* 22 */, /* 23 */, /* 24 */ /***/ (function(module, exports, __webpack_require__) { 'use strict'; exports.__esModule = true; function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; } var _button = __webpack_require__(25); var _button2 = _interopRequireDefault(_button); exports.Button = _button2['default']; var _buttonGroup = __webpack_require__(56); var _buttonGroup2 = _interopRequireDefault(_buttonGroup); exports.ButtonGroup = _buttonGroup2['default']; var _input = __webpack_require__(59); var _input2 = _interopRequireDefault(_input); exports.Input = _input2['default']; var _checkbox = __webpack_require__(62); var _checkbox2 = _interopRequireDefault(_checkbox); exports.Checkbox = _checkbox2['default']; var _radio = __webpack_require__(65); var _radio2 = _interopRequireDefault(_radio); exports.Radio = _radio2['default']; var _textarea = __webpack_require__(66); var _textarea2 = _interopRequireDefault(_textarea); exports.Textarea = _textarea2['default']; var _switch = __webpack_require__(69); var _switch2 = _interopRequireDefault(_switch); exports.Switch = _switch2['default']; var _gridGrid = __webpack_require__(72); var _gridGrid2 = _interopRequireDefault(_gridGrid); exports.Grid = _gridGrid2['default']; var _gridRow = __webpack_require__(75); var _gridRow2 = _interopRequireDefault(_gridRow); exports.Row = _gridRow2['default']; var _gridCol = __webpack_require__(76); var _gridCol2 = _interopRequireDefault(_gridCol); exports.Col = _gridCol2['default']; var _tabTab = __webpack_require__(77); var _tabTab2 = _interopRequireDefault(_tabTab); exports.Tab = _tabTab2['default']; var _tabTabset = __webpack_require__(78); var _tabTabset2 = _interopRequireDefault(_tabTabset); exports.Tabset = _tabTabset2['default']; var _label = __webpack_require__(81); var _label2 = _interopRequireDefault(_label); exports.Label = _label2['default']; var _badge = __webpack_require__(84); var _badge2 = _interopRequireDefault(_badge); exports.Badge = _badge2['default']; var _star = __webpack_require__(87); var _star2 = _interopRequireDefault(_star); exports.Star = _star2['default']; var _drag = __webpack_require__(90); var _drag2 = _interopRequireDefault(_drag); exports.Drag = _drag2['default']; var _swipe = __webpack_require__(91); var _swipe2 = _interopRequireDefault(_swipe); exports.Swipe = _swipe2['default']; var _modalDialog = __webpack_require__(94); var _modalDialog2 = _interopRequireDefault(_modalDialog); exports.Dialog = _modalDialog2['default']; var _modalAlert = __webpack_require__(101); var _modalAlert2 = _interopRequireDefault(_modalAlert); exports.Alert = _modalAlert2['default']; var _modalPrompt = __webpack_require__(102); var _modalPrompt2 = _interopRequireDefault(_modalPrompt); exports.Prompt = _modalPrompt2['default']; var _toast = __webpack_require__(103); var _toast2 = _interopRequireDefault(_toast); exports.Toast = _toast2['default']; var _popup = __webpack_require__(107); var _popup2 = _interopRequireDefault(_popup); exports.Popup = _popup2['default']; var _accordion = __webpack_require__(110); var _accordion2 = _interopRequireDefault(_accordion); exports.Accordion = _accordion2['default']; var _popover = __webpack_require__(113); var _popover2 = _interopRequireDefault(_popover); exports.Popover = _popover2['default']; var _slider = __webpack_require__(116); var _slider2 = _interopRequireDefault(_slider); exports.Slider = _slider2['default']; var _animate = __webpack_require__(95); var _animate2 = _interopRequireDefault(_animate); exports.Animate = _animate2['default']; var _icon = __webpack_require__(36); var _icon2 = _interopRequireDefault(_icon); exports.Icon = _icon2['default']; var _menu = __webpack_require__(119); var _menu2 = _interopRequireDefault(_menu); exports.Menu = _menu2['default']; var _imageList = __webpack_require__(129); var _imageList2 = _interopRequireDefault(_imageList); exports.ImageList = _imageList2['default']; var _image = __webpack_require__(132); var _image2 = _interopRequireDefault(_image); exports.Image = _image2['default']; var _steps = __webpack_require__(135); var _steps2 = _interopRequireDefault(_steps); exports.Steps = _steps2['default']; var _list = __webpack_require__(123); var _list2 = _interopRequireDefault(_list); exports.List = _list2['default']; var _searchBar = __webpack_require__(138); var _searchBar2 = _interopRequireDefault(_searchBar); exports.SearchBar = _searchBar2['default']; var _pullup = __webpack_require__(141); var _pullup2 = _interopRequireDefault(_pullup); exports.PullUp = _pullup2['default']; // 控件 var _phFilter = __webpack_require__(144); var _phFilter2 = _interopRequireDefault(_phFilter); exports.PhFilter = _phFilter2['default']; /***/ }), /* 25 */ /***/ (function(module, exports, __webpack_require__) { 'use strict'; exports.__esModule = true; 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; }; var _createClass = (function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ('value' in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; })(); function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; } function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError('Cannot call a class as a function'); } } function _inherits(subClass, superClass) { if (typeof superClass !== 'function' && superClass !== null) { throw new TypeError('Super expression must either be null or a function, not ' + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; } var _react = __webpack_require__(26); var _react2 = _interopRequireDefault(_react); var _utilsComponent = __webpack_require__(27); var _utilsComponent2 = _interopRequireDefault(_utilsComponent); var _classnames = __webpack_require__(28); var _classnames2 = _interopRequireDefault(_classnames); var _icon = __webpack_require__(36); var _icon2 = _interopRequireDefault(_icon); __webpack_require__(37); __webpack_require__(54); /** * 按钮组件<br/> * - 按钮组件提供所有properties中内置的颜色及字体大小样式供选择。 * - 也可以自定义行内样式和className名字定义UI展示。 * - 通过phSize设置大小, 可选sm、md、lg。 * - 通过phStyle选择按钮颜色,可选primary、info、error、warning、danger、link、gray、success。 * - 支持disabled, active属性定义。 * - 按钮内容默认居中,可通过stable属性设置按钮不占位,只有内容部分居中,适用于动态添加icon且不希望文字移位的情况。 * * 主要属性和接口: * - phSize:按钮大小, 默认sm <br/> * 如: `<Button phSize='lg'>button</Button>` * - phStyle:按钮颜色, 默认primary <br/> * 如: `<Button phStyle='info'>button</Button>` * - block:是否块级显示,默认false <br/> * 如: `<Button block>button</Button>` * - phIcon:icon符号类型,默认没有符号 <br/> * 如: `<Button phIcon='search'>button</Button>` * - stable: icon不占位 <br/> * 如: `<Button phIcon='search' stable>button</Button>` * * @class Button * @module 基础组件 * @extends Component * @constructor * @since 0.1.0 * @demo button|button.js {展示} * @show true * */ var Button = (function (_Component) { _inherits(Button, _Component); _createClass(Button, null, [{ key: 'propTypes', value: { /** * 按钮尺寸[sm、md、lg], 默认为sm * @property phSize * @type String * @default 'sm' * */ phSize: _react.PropTypes.string, /** * 按钮颜色[primary、warning、danger、info、error、success、link、gray], 默认primary * @property phStyle * @type Boolean * @default 'primary' * */ phStyle: _react.PropTypes.string, /** * 样式前缀 * @property classPrefix * @type String * @default 'button' * */ classPrefix: _react.PropTypes.string, /** * 标签tagName * @property componentTag * @type String * */ componentTag: _react.PropTypes.string, /** * 块级显示 * @property block * @type Boolean * @default false * */ block: _react.PropTypes.bool, /** * 空背景 * @property hollow * @type Boolean * @default false * */ hollow: _react.PropTypes.bool, /** * 不可点状态 * @property disabled * @type Boolean * @default false * */ disabled: _react.PropTypes.bool, /** * 激活状态 * @property active * @type Boolean * @default false * */ active: _react.PropTypes.bool, /** * icon符号类型 * @property phIcon * @type string * @default '' **/ phIcon: _react.PropTypes.string, /** * icon占位情况,默认占位,设置之后不影响文字居中 * @property stable * @type Boolean * @default false * */ stable: _react.PropTypes.bool }, enumerable: true }, { key: 'defaultProps', value: { phSize: 'sm', phStyle: 'primary', classPrefix: 'button', componentTag: 'button', classMapping: { 'primary': 'primary', 'info': 'info', 'success': 'success', 'error': 'error', 'warning': 'warning', 'danger': 'danger', 'link': 'link', 'gray': 'gray' } }, enumerable: true }]); function Button(props, context) { _classCallCheck(this, Button); _Component.call(this, props, context); } Button.prototype.clickCallback = function clickCallback(e) { var _props = this.props; var clickCallback = _props.clickCallback; var onClick = _props.onClick; if (clickCallback) clickCallback(e); if (onClick) onClick(e); }; Button.prototype.renderIcon = function renderIcon() { var phIcon = this.props.phIcon; if (phIcon) { return _react2['default'].createElement(_icon2['default'], { phIcon: phIcon }); } else { return ''; } }; Button.prototype.renderButton = function renderButton() { var _props2 = this.props; var Component = _props2.componentTag; var className = _props2.className; var style = _props2.style; var children = _props2.children; return _react2['default'].createElement( Component, _extends({}, this.otherProps, { className: _classnames2['default'](this.getProperty(true), className), style: this.getStyles(style), onClick: this.clickCallback.bind(this) }), _react2['default'].createElement( 'span', { className: this.setPhPrefix('inner') }, this.renderIcon(), children ) ); }; Button.prototype.render = function render() { return this.renderButton(); }; return Button; })(_utilsComponent2['default']); exports['default'] = Button; module.exports = exports['default']; /***/ }), /* 26 */ /***/ (function(module, exports) { module.exports = __WEBPACK_EXTERNAL_MODULE_26__; /***/ }), /* 27 */ /***/ (function(module, exports, __webpack_require__) { 'use strict'; exports.__esModule = true; function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; } function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError('Cannot call a class as a function'); } } function _inherits(subClass, superClass) { if (typeof superClass !== 'function' && superClass !== null) { throw new TypeError('Super expression must either be null or a function, not ' + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; } var _react = __webpack_require__(26); var _react2 = _interopRequireDefault(_react); var _classnames = __webpack_require__(28); var _classnames2 = _interopRequireDefault(_classnames); var _ClassNameMixin = __webpack_require__(29); var _ClassNameMixin2 = _interopRequireDefault(_ClassNameMixin); var _PropertyMixin = __webpack_require__(31); var _PropertyMixin2 = _interopRequireDefault(_PropertyMixin); var _MethodMixin = __webpack_require__(33); var _MethodMixin2 = _interopRequireDefault(_MethodMixin); var _extend = __webpack_require__(34); var _extend2 = _interopRequireDefault(_extend); var _constants = __webpack_require__(30); //import 'babel-polyfill'; var _fastclick = __webpack_require__(35); var _fastclick2 = _interopRequireDefault(_fastclick); // import {ModuleLogger} from 'pmlogger' // import packageJSON from '../../package.json' document.addEventListener('DOMContentLoaded', function () { _fastclick2['default'].attach(document.body); }, false); // new ModuleLogger('phoenix-ui') var BaseComponent = (function (_Component) { _inherits(BaseComponent, _Component); function BaseComponent(props, context, defaultState) { _classCallCheck(this, _BaseComponent); _Component.call(this, props, context); if (defaultState) { this.setDefaultState(defaultState); } this._properties = []; this._styles = []; this.otherProps = {}; this.initCallback(this); //验证 this.replaceProperties(); //注册 this.registerMethod(this.otherProps); } BaseComponent.prototype.setPhPrefix = function setPhPrefix(name, onlyPh) { if (onlyPh) return 'ph-' + name;else return 'ph-' + this.classPrefix + '-' + name; }; BaseComponent.prototype.setDefaultState = function setDefaultState(obj) { this.state = _extend2['default']({}, { _isShow: false, _checked: false, _active: false }, obj || {}); }; BaseComponent.prototype.uniqueId = function uniqueId() { return (this.classPrefix || 'unique') + '_' + (new Date().getTime() + (Math.random() * 1e10).toFixed(0)); }; BaseComponent.prototype.initCallback = function initCallback() { this.props.initCallback && this.props.initCallback(this); }; BaseComponent.prototype.componentWillMount = function componentWillMount() {}; BaseComponent.prototype.shouldComponentUpdate = function shouldComponentUpdate(nextProps, nextState) { this.replaceProperties(nextProps); return true; }; BaseComponent.prototype.componentDidMount = function componentDidMount() { this.loadedCallback && this.loadedCallback(this); }; //注册回调 BaseComponent.prototype.registerMethod = function registerMethod(methods) { //注册回调 var method = null, methodName = '', other = {}; for (var item in methods) { method = this.methods[item]; if (method) { this.setMethod(item, methods[item]); } } }; BaseComponent.prototype.setMethod = function setMethod(methodName, method) { if (methodName.match('Callback') == null) { throw new Error('The callback method name format is wrong, should be ' + methodName + 'Callback'); } if (!this[methodName]) { this[methodName] = (function (method) { var m = method; return function () { return m.apply(m, Array.prototype.slice.call(arguments, 0)); }; })(method); } }; BaseComponent.prototype.execMethod = function execMethod(method) { var data, args$2$0 = arguments; return regeneratorRuntime.async(function execMethod$(context$2$0) { while (1) switch (context$2$0.prev = context$2$0.next) { case 0: data = null; method = method.indexOf('Callback') != -1 ? method : method + 'Callback'; if (!this[method]) { context$2$0.next = 6; break; } context$2$0.next = 5; return regeneratorRuntime.awrap(this[method].apply(this[method], Array.prototype.slice.call(args$2$0, 1).concat(this))); case 5: data = context$2$0.sent; case 6: return context$2$0.abrupt('return', data); case 7: case 'end': return context$2$0.stop(); } }, null, this); }; BaseComponent.prototype.setProperty = function setProperty(prop, val) { if (val !== undefined) { this.properties[prop] = val; if (this.props[prop] !== undefined && !this.props[prop]) { this.updateProperty({ key: prop, value: val }, this._properties, this._styles, this.otherProps); } } }; BaseComponent.prototype.filterClass = function filterClass(key) { var value = typeof key == 'string' ? this.props.classMapping[key] : key; return value ? value : key; }; BaseComponent.prototype.updateProperty = function updateProperty(props, propList, styleList, otherProps) { var propKey = props.key, propValue = props.value, propConfig = this.properties[propKey]; var type = 'property'; if (propConfig) { switch (typeof propConfig) { case 'boolean': if (propValue) { propList.push(this.filterClass(propKey)); } break; case 'function': var param = propConfig.call(this, propValue); if (typeof param == 'string') { propList.push(this.filterClass(param)); } else if (param.type && param.type == type) { this[propKey] = param.value; } else { styleList.push(param); } break; default: propList.push(this.filterClass(propConfig)); break; } } else { if (!_constants.propsConstants[propKey]) otherProps[propKey] = propValue; } }; BaseComponent.prototype.replaceProperties = function replaceProperties(props) { // 整体替换 var propList = [], styleList = [], otherProps = {}; props = props ? props : this.props; for (var key in props) { this.updateProperty({ key: key, value: props[key] }, propList, styleList, otherProps); } this._properties = propList; this._styles = styleList; this.otherProps = otherProps; }; BaseComponent.prototype.getProperty = function getProperty() { var withPrefix = arguments.length <= 0 || arguments[0] === undefined ? false : arguments[0]; var withConstPrefix = arguments.length <= 1 || arguments[1] === undefined ? true : arguments[1]; var p = this.classPrefix ? this.classPrefix + ' ' : ''; p += this._properties.join(' '); return this.getClassName(p, withPrefix, withConstPrefix); //+' '+this.getClassName(p); }; BaseComponent.prototype.getStyles = function getStyles() { var style = arguments.length <= 0 || arguments[0] === undefined ? {} : arguments[0]; var obj = {}, styles = this._styles; /*propertyMixn里设置的和style相关的属性,比如*/ for (var i = 0, len = styles.length; i < len; i++) { obj = _extend2['default']({}, obj, styles[i]); } /*用户设置的style*/ return _extend2['default']({}, obj, style); }; BaseComponent.prototype.show = function show() { this.setState({ _isShow: true }); }; BaseComponent.prototype.hide = function hide() { this.setState({ _isShow: false }); }; BaseComponent.prototype.trim = function trim(str) { return str.replace(/(^\s*)|(\s*$)/g, ""); }; BaseComponent.prototype.getDisplay = function getDisplay() { return this.state._isShow; }; BaseComponent.prototype.render = function render() { return _react2['default'].createElement( 'h1', null, '请重写父类render()方法' ); }; var _BaseComponent = BaseComponent; BaseComponent = _MethodMixin2['default'](BaseComponent) || BaseComponent; BaseComponent = _PropertyMixin2['default'](BaseComponent) || BaseComponent; BaseComponent = _ClassNameMixin2['default'](BaseComponent) || BaseComponent; return BaseComponent; })(_react.Component); exports['default'] = BaseComponent; module.exports = exports['default']; /***/ }), /* 28 */ /***/ (function(module, exports, __webpack_require__) { var __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;/*! Copyright (c) 2016 Jed Watson. Licensed under the MIT License (MIT), see http://jedwatson.github.io/classnames */ /* global define */ (function () { 'use strict'; var hasOwn = {}.hasOwnProperty; function classNames () { var classes = []; for (var i = 0; i < arguments.length; i++) { var arg = arguments[i]; if (!arg) continue; var argType = typeof arg; if (argType === 'string' || argType === 'number') { classes.push(arg); } else if (Array.isArray(arg)) { classes.push(classNames.apply(null, arg)); } else if (argType === 'object') { for (var key in arg) { if (hasOwn.call(arg, key) && arg[key]) { classes.push(key); } } } } return classes.join(' '); } if (typeof module !== 'undefined' && module.exports) { module.exports = classNames; } else if (true) { // register as 'classnames', consistent with npm package name !(__WEBPACK_AMD_DEFINE_ARRAY__ = [], __WEBPACK_AMD_DEFINE_RESULT__ = function () { return classNames; }.apply(exports, __WEBPACK_AMD_DEFINE_ARRAY__), __WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__)); } else { window.classNames = classNames; } }()); /***/ }), /* 29 */ /***/ (function(module, exports, __webpack_require__) { /** * Created by mac on 15/9/7. */ 'use strict'; exports.__esModule = true; var _constantsJs = __webpack_require__(30); var consts = _constantsJs.classConstants; var PREFIX = 'ph-'; exports['default'] = function (obj) { /* * 给className添加前缀后返回className * @method getClassName * @param name {String} 从该字符串中去查找 * @param pre {Boolean} 是否添加Component中定义的class前缀,默认添加 * @return {String} * */ obj.prototype.getClassName = function (name) { var pre = arguments.length <= 1 || arguments[1] === undefined ? true : arguments[1]; var constPre = arguments.length <= 2 || arguments[2] === undefined ? true : arguments[2]; name = name ? name : ''; name = (name + '').split(' '); var list = [], _this = this; name.forEach(function (item) { if (item) { if (constPre) list.push(PREFIX + _this.setPrefix(item, pre));else list.push(_this.setPrefix(item, pre)); } }); return list.join(' '); }; /* * 验证props中的样式是否符合规则 * @method getClassNames * @param props {Object} 从该对象中去查找 * @param pre {Boolean} 是否添加Component中定义的class前缀,默认添加 * @return {String} * */ obj.prototype.getClassNames = function (props) { var pre = arguments.length <= 1 || arguments[1] === undefined ? true : arguments[1]; var clazz = {}; for (var item in props) { if (props[item] && item === consts[item]) { clazz[this.getClassName(item, pre)] = true; } } return clazz; }; /* * 给多个className添加前缀后返回 * @method getClassNamesForArguments * @param arguments {Arguments String} 多个class参数 * @return {String} * */ obj.prototype.getClassNamesForArguments = function () { var arg = arguments; var arr = []; var _this = this; if (arg && arg.length > 0) { for (var i = 0, len = arg.length; i < len; i++) { if (arg[i]) { arr.push(_this.getClassName(arg[i])); } } } return arr.join(' '); }; /* * 设置css类名前缀 * @method setPrefix * @param name{String} class名字 * @param pre{Boolean} 是否添加前缀 * @return {String} * */ obj.prototype.setPrefix = function (name) { var pre = arguments.length <= 1 || arguments[1] === undefined ? true : arguments[1]; var classArray = consts.classNameNamespace ? [consts.classNameNamespace] : []; if (pre && this.props.classPrefix) { classArray.push(this.props.classPrefix); } if (name && name != this.props.classPrefix) { classArray.push(name); } return classArray.join(classArray.length > 1 ? '-' : ''); }; /* * 检查元素是否存在样式名 * @method hasClass * @param obj {Object} 元素 * @param cls {String} 需要检查的样式名 * @return {Boolean} * */ obj.prototype.hasClass = function (obj, cls) { return obj.className.match(new RegExp('(\\s|^)' + cls + '(\\s|$)')); }; /* * 给元素增加一个样式名 * @method addClass * @param obj {Object} 元素 * @param cls {String} 样式名 * */ obj.prototype.addClass = function (obj, cls) { if (!this.hasClass(obj, cls)) obj.className += " " + cls; }; /* * 给元素删除一个样式名 * @method removeClass * @param obj {Object} 元素 * @param cls {String} 样式名 * */ obj.prototype.removeClass = function (obj, cls) { if (this.hasClass(obj, cls)) { var reg = new RegExp('(\\s|^)' + cls + '(\\s|$)'); obj.className = obj.className.replace(reg, ' '); } }; }; module.exports = exports['default']; /***/ }), /* 30 */ /***/ (function(module, exports) { /** * Created by mac on 15/9/7. */ //classname前缀 'use strict'; exports.__esModule = true; function setNamespace(className) { return '' + className; } var CLASS_NAME_NAMESPACE = ''; var classConstants = { /** * 状态 * */ //标签新增命名空间 //标签启用 positive: setNamespace('positive'), //标签灰色 negative: setNamespace('negative'), //标签灰白 modest: setNamespace('modest'), //提示框暖色(黄色) warm: setNamespace('warm'), //标签灰色 //标签无背景色 neutral: setNamespace('neutral'), //theme // 白色 light: setNamespace('light'), // 橘红色 assertive: setNamespace('assertive'), //绿色 balanced: setNamespace('balanced'), //按钮是否需要添加边框 outline: setNamespace('outline'), //按钮是否处于待唤醒状态 awaiting: setNamespace('awaiting'), //禁用 disabled: setNamespace('disabled'), //启用 enable: setNamespace('enable'), block: setNamespace('block'), //垂直 tacked: setNamespace('tacked'), //宽度自适应 justify: setNamespace('justify'), //选中 active: setNamespace('active'), //行内样式 inline: setNamespace('inline'), //大小 size: setNamespace('size'), //圆形样式 radius: setNamespace('radius'), //隨圆 round: setNamespace('round'), //向上箭头 'arrow-up': setNamespace('arrow-up'), //向下箭头 'arrow-down': setNamespace('arrow-down'), /** * 颜色 * */ //成功样式 success: setNamespace('success'), //错误红色 error: setNamespace('error'), //警告warning warning: setNamespace('warning'), //危险danger danger: setNamespace('danger'), //展示 show: setNamespace('show'), white: setNamespace('white'), /** * form列表相关 * */ //必填 require: setNamespace('require'), //跳转链接 jump: setNamespace('link'), //最后一个item是否浮动 right: setNamespace('lastItem'), classNameNamespace: CLASS_NAME_NAMESPACE, /** * tab * */ vertical: setNamespace('vertical') }; exports.classConstants = classConstants; // 自定义属性集合 var propsConstants = { classPrefix: 'classPrefix', componentTag: 'componentTag', classMapping: 'classMapping', phIcon: 'phIcon', phReg: 'phReg', phLabel: 'phLabel', index: 'index', activeIndex: 'activeIndex', vertical: 'vertical', visible: 'visible', error: 'error', clear: 'clear', closeButton: 'closeButton', shadowDisabled: 'shadowDisabled', count: 'count', navigate: 'navigate', clickable: 'clickable', getTarget: 'getTarget', distance: 'distance', changeActive: 'changeActive', hideIcon: 'hideIcon', changeVisible: 'changeVisible', progress: 'progress', range: 'range', showRange: 'showRange', duration: 'duration', tipMode: 'tipMode', tipStay: 'tipStay', buttons: 'buttons', tips: 'tips', status: 'status', column: 'column', defaultSrc: 'defaultSrc', lazy: 'lazy', buttonText: 'buttonText', // fn closeCallback: 'closeCallback', clickCallback: 'clickCallback', focusCallback: 'focusCallback', blurCallback: 'blurCallback', slideCallback: 'slideCallback', dragCallback: 'dragCallback', dropCallback: 'dropCallback', loadCallback: 'loadCallback', queryCallback: 'queryCallback', // menu ceiling: 'ceiling', headerHeight: 'headerHeight', activeName: 'activeName' }; exports.propsConstants = propsConstants; /***/ }), /* 31 */ /***/ (function(module, exports, __webpack_require__) { /** * Created by mac on 16/1/3. */ 'use strict'; exports.__esModule = true; var _Tool = __webpack_require__(32); exports['default'] = function (obj) { var getVal = function getVal(vals, val) { var result = (vals.join(',') + ',').match(val.toLowerCase() + ',') != null ? val : ''; if (!result) { _Tool.warning('属性的取值 %s 不在设定集合 %s 里', val, vals.join(',')); } return result; }; var properties = { /*以下属性都是数组里固定值*/ //类型 phType: function phType(val) { return getVal(['default', 'tacked', 'justify', 'segmente', 'footer'], val); }, phSize: function phSize(val) { return getVal(['default', 'xlg', 'lg', 'md', 'sm', 'xs', 'cover', 'contain'], val); }, phStyle: function phStyle(val) { return getVal(['default', 'primary', 'info', 'success', 'error', 'warning', 'danger', 'link', 'gray', 'light', 'positive', 'calm', 'balanced', 'energized', 'assertive', 'lightbrown', 'lightgray', 'tip'], val); }, phStatus: function phStatus(val) { getVal(['diabled', 'active', 'enable'], val); }, align: function align(val) { return getVal(['center', 'left', 'middle', 'auto', 'top', 'right', 'bottom', 'stretch', 'baseline', 'start', 'end'], val); }, placement: function placement(val) { return getVal(['top', 'bottom', 'right', 'left', 'left-full', 'right-full', 'full-screen'], val); }, /*以下属性没有取值,需要的时候添加对应的属性即可*/ disabled: true, active: true, radius: true, round: true, clearfix: true, phHref: true, show: true, hide: true, block: true, hollow: true, heading: true, tail: true, required: true, stable: true, // error: true, // clear:true, // visible:true, /*以下属性相当于css属性的快速赋值,比如设置zIndex="2",则会被merge进style里,如果只有属性zIndex没有设置取值,则会被放入props列表中*/ zIndex: function zIndex(val) { if (typeof val == 'string') { return { zIndex: val }; } return 'zindex'; }, border: function border(val) { if (typeof val == 'string') { return { border: val }; } return 'border'; }, padding: function padding(val) { if (typeof val == 'string') { return { padding: val }; } return 'padding'; }, margin: function margin(val) { if (typeof val == 'string') { return { margin: val }; } return 'margin'; }, radiusSize: function radiusSize(val) { return { WebkitBorderRadius: val, borderRadius: val }; }, width: (function (val) { return '' + val; }).bind(obj), offset: (function (val) { return 'offset-' + val; }).bind(obj), /*以下属性会被直接挂载在component上,可以不用通过component.props获取*/ classPrefix: function classPrefix(val) { return { type: 'property', value: val }; }, componentTag: function componentTag(val) { return { type: 'property', value: val }; }, params: function params(val) { return { type: 'property', value: val }; } }; obj.prototype.properties = properties; }; module.exports = exports['default']; /***/ }), /* 32 */ /***/ (function(module, exports) { /** * Created by mac on 16/11/28. */ 'use strict'; exports.__esModule = true; var _arguments = arguments; var Tool = { closest: function closest(el, selector) { var matchesFn; // find vendor prefix ['matches', 'webkitMatchesSelector', 'mozMatchesSelector', 'msMatchesSelector', 'oMatchesSelector'].some(function (fn) { if (typeof document.body[fn] == 'function') { matchesFn = fn; return true; } return false; }); var parent; // traverse parents while (el) { if (el[matchesFn](selector)) return el; parent = el.parentElement; if (parent && parent[matchesFn](selector)) return parent; el = parent; } return null; }, contains: function contains(root, el) { if (root.compareDocumentPosition) return root === el || !!(root.compareDocumentPosition(el) & 16); if (root.contains && el.nodeType === 1) { return root.contains(el) && root !== el; } while (el = el.parentNode) if (el === root) return true; return false; }, setPhPrefix: function setPhPrefix(val) { return 'ph-' + val; }, getDeviceInfo: function getDeviceInfo(type) { var u = navigator.userAgent; var typeList = { trident: u.indexOf('Trident') > -1, //IE内核 presto: u.indexOf('Presto') > -1, //opera内核 webKit: u.indexOf('AppleWebKit') > -1, //苹果、谷歌内核 gecko: u.indexOf('Gecko') > -1 && u.indexOf('KHTML') == -1, //火狐内核 mobile: !!u.match(/AppleWebKit.*Mobile.*/), //是否为移动终端 ios: !!u.match(/\(i[^;]+;( U;)? CPU.+Mac OS X/), //ios终端 android: u.indexOf('Android') > -1 || u.indexOf('Linux') > -1, //android终端或者uc浏览器 iPhone: u.indexOf('iPhone') > -1, //是否为iPhone或者QQHD浏览器 iPad: u.indexOf('iPad') > -1, //是否iPad webApp: u.indexOf('Safari') == -1 //是否web应该程序,没有头部与底部 }; return typeList[type]; }, transToArray: function transToArray(val) { switch (typeof val) { case 'string': var arr = []; arr = val.split(','); return arr; case 'number': return val.toString(); default: return val; } }, warning: function warning(format) { for (var _len = _arguments.length, args = Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) { args[_key - 1] = _arguments[_key]; } if (format === undefined) { throw new Error('`warning(format, ...args)` requires a warning ' + 'message argument'); } var argIndex = 0; var message = 'Warning: ' + format.replace(/%s/g, function () { return args[argIndex++]; }); if (typeof console !== 'undefined') { console.warn(message); } try { // --- Welcome to debugging React --- // This error was thrown as a convenience so that you can use this stack // to find the callsite that caused this warning to fire. throw new Error(message); } catch (x) {} }, getClientHeight: function getClientHeight() { return document.compatMode == "BackCompat" ? document.body.clientHeight : document.documentElement.clientHeight; }, preventDefault: function preventDefault(event) { // 判断默认行为是否可以被禁用 if (event.cancelable) { // 判断默认行为是否已经被禁用 if (!event.defaultPrevented) { event.preventDefault(); } } } }; exports['default'] = Tool; module.exports = exports['default']; /***/ }), /* 33 */ /***/ (function(module, exports) { /** * Created by mac on 16/1/3. */ "use strict"; exports.__esModule = true; exports["default"] = function (obj) { var methods = { initCallback: true, loadedCallback: true, closeCallback: true, successCallback: true, cancelCallback: true, checkedCallback: true, activeCallback: true, getValueCallback: true, updateCallback: true, deleteCallback: true, queryCallback: true, addCallback: true, insertCallback: true, ajaxCallback: true, defaultCallback: true //method }; obj.prototype.methods = methods; }; module.exports = exports["default"]; /***/ }), /* 34 */ /***/ (function(module, exports) { 'use strict'; var hasOwn = Object.prototype.hasOwnProperty; var toStr = Object.prototype.toString; var isArray = function isArray(arr) { if (typeof Array.isArray === 'function') { return Array.isArray(arr); } return toStr.call(arr) === '[object Array]'; }; var isPlainObject = function isPlainObject(obj) { if (!obj || toStr.call(obj) !== '[object Object]') { return false; } var hasOwnConstructor = hasOwn.call(obj, 'constructor'); var hasIsPrototypeOf = obj.constructor && obj.constructor.prototype && hasOwn.call(obj.constructor.prototype, 'isPrototypeOf'); // Not own constructor property must be Object if (obj.constructor && !hasOwnConstructor && !hasIsPrototypeOf) { return false; } // Own properties are enumerated firstly, so to speed up, // if last one is own, then all properties are own. var key; for (key in obj) { /**/ } return typeof key === 'undefined' || hasOwn.call(obj, key); }; module.exports = function extend() { var options, name, src, copy, copyIsArray, clone; var target = arguments[0]; var i = 1; var length = arguments.length; var deep = false; // Handle a deep copy situation if (typeof target === 'boolean') { deep = target; target = arguments[1] || {}; // skip the boolean and the target i = 2; } if (target == null || (typeof target !== 'object' && typeof target !== 'function')) { target = {}; } for (; i < length; ++i) { options = arguments[i]; // Only deal with non-null/undefined values if (options != null) { // Extend the base object for (name in options) { src = target[name]; copy = options[name]; // Prevent never-ending loop if (target !== copy) { // Recurse if we're merging plain objects or arrays if (deep && copy && (isPlainObject(copy) || (copyIsArray = isArray(copy)))) { if (copyIsArray) { copyIsArray = false; clone = src && isArray(src) ? src : []; } else { clone = src && isPlainObject(src) ? src : {}; } // Never move original objects, clone them target[name] = extend(deep, clone, copy); // Don't bring in undefined values } else if (typeof copy !== 'undefined') { target[name] = copy; } } } } } // Return the modified object return target; }; /***/ }), /* 35 */ /***/ (function(module, exports, __webpack_require__) { var __WEBPACK_AMD_DEFINE_RESULT__;;(function () { 'use strict'; /** * @preserve FastClick: polyfill to remove click delays on browsers with touch UIs. * * @codingstandard ftlabs-jsv2 * @copyright The Financial Times Limited [All Rights Reserved] * @license MIT License (see LICENSE.txt) */ /*jslint browser:true, node:true*/ /*global define, Event, Node*/ /** * Instantiate fast-clicking listeners on the specified layer. * * @constructor * @param {Element} layer The layer to listen on * @param {Object} [options={}] The options to override the defaults */ function FastClick(layer, options) { var oldOnClick; options = options || {}; /** * Whether a click is currently being tracked. * * @type boolean */ this.trackingClick = false; /** * Timestamp for when click tracking started. * * @type number */ this.trackingClickStart = 0; /** * The element being tracked for a click. * * @type EventTarget */ this.targetElement = null; /** * X-coordinate of touch start event. * * @type number */ this.touchStartX = 0; /** * Y-coordinate of touch start event. * * @type number */ this.touchStartY = 0; /** * ID of the last touch, retrieved from Touch.identifier. * * @type number */ this.lastTouchIdentifier = 0; /** * Touchmove boundary, beyond which a click will be cancelled. * * @type number */ this.touchBoundary = options.touchBoundary || 10; /** * The FastClick layer. * * @type Element */ this.layer = layer; /** * The minimum time between tap(touchstart and touchend) events * * @type number */ this.tapDelay = options.tapDelay || 200; /** * The maximum time for a tap * * @type number */ this.tapTimeout = options.tapTimeout || 700; if (FastClick.notNeeded(layer)) { return; } // Some old versions of Android don't have Function.prototype.bind function bind(method, context) { return function() { return method.apply(context, arguments); }; } var methods = ['onMouse', 'onClick', 'onTouchStart', 'onTouchMove', 'onTouchEnd', 'onTouchCancel']; var context = this; for (var i = 0, l = methods.length; i < l; i++) { context[methods[i]] = bind(context[methods[i]], context); } // Set up event handlers as required if (deviceIsAndroid) { layer.addEventListener('mouseover', this.onMouse, true); layer.addEventListener('mousedown', this.onMouse, true); layer.addEventListener('mouseup', this.onMouse, true); } layer.addEventListener('click', this.onClick, true); layer.addEventListener('touchstart', this.onTouchStart, false); layer.addEventListener('touchmove', this.onTouchMove, false); layer.addEventListener('touchend', this.onTouchEnd, false); layer.addEventListener('touchcancel', this.onTouchCancel, false); // Hack is required for browsers that don't support Event#stopImmediatePropagation (e.g. Android 2) // which is how FastClick normally stops click events bubbling to callbacks registered on the FastClick // layer when they are cancelled. if (!Event.prototype.stopImmediatePropagation) { layer.removeEventListener = function(type, callback, capture) { var rmv = Node.prototype.removeEventListener; if (type === 'click') { rmv.call(layer, type, callback.hijacked || callback, capture); } else { rmv.call(layer, type, callback, capture); } }; layer.addEventListener = function(type, callback, capture) { var adv = Node.prototype.addEventListener; if (type === 'click') { adv.call(layer, type, callback.hijacked || (callback.hijacked = function(event) { if (!event.propagationStopped) { callback(event); } }), capture); } else { adv.call(layer, type, callback, capture); } }; } // If a handler is already declared in the element's onclick attribute, it will be fired before // FastClick's onClick handler. Fix this by pulling out the user-defined handler function and // adding it as listener. if (typeof layer.onclick === 'function') { // Android browser on at least 3.2 requires a new reference to the function in layer.onclick // - the old one won't work if passed to addEventListener directly. oldOnClick = layer.onclick; layer.addEventListener('click', function(event) { oldOnClick(event); }, false); layer.onclick = null; } } /** * Windows Phone 8.1 fakes user agent string to look like Android and iPhone. * * @type boolean */ var deviceIsWindowsPhone = navigator.userAgent.indexOf(