phoenix-ui
Version:
future team ui for app with react
1,748 lines (1,392 loc) • 700 kB
JavaScript
(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(