UNPKG

phoenix-ui

Version:
729 lines (558 loc) 24.2 kB
<!DOCTYPE html> <html lang="en"> <head> <meta charset="utf-8"> <meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1.0, minimal-ui" /> <title>src/modal/Dialog.js - phoenix-ui</title> <link rel="stylesheet" href="../assets/vendor/prettify/prettify-min.css"> <link rel="stylesheet" href="../assets/vendor/bootstrap/css/bootstrap.css"> <link rel="stylesheet" href="../assets/css/main.css" id="site_styles"> <link rel="shortcut icon" type="image/png" href="../assets/favicon.png"> </head> <body class="yui3-smart" _assetsPath="../assets"> <nav class="navbar navbar-inverse navbar-fixed-top custom-navbar" role="navigation"> <div class="container-fluid"> <div class="navbar-header"> <button type="button" class="navbar-toggle collapsed" data-toggle="collapse" data-target="#navbar" aria-expanded="false" aria-controls="navbar"> <span class="sr-only">Toggle navigation</span> <span class="icon-bar"></span> <span class="icon-bar"></span> <span class="icon-bar"></span> </button> <a class="navbar-brand mainlogo" href=""> <img alt="phoenix-ui" src="../assets/css/logo.png" title="phoenix-ui"> phoenix-ui </a> </div> <div id="navbar" class="navbar-collapse collapse"> <ul class="nav navbar-nav"> <li><a href="index.html">主页</a> </li> </ul> <div class="navbar-form navbar-right filterAPi" autocomplete="off"> <input type="text" id='txtSearchAPI' class="form-control search-query" placeholder="Search for API" /> <ul id="filterList" class="filterItems dropdown-menu" role="menu"></ul> </div> </div> </div> </nav> <div id="sidebar"> <h3>模块/类</h3> <div id="api-tabview-filter"> <input id='txtSearch' type="search" class="form-control" placeholder="Type to filter Modules/Classes"> </div> <dl id="sidebar_list"> <dt> <span class="glyphicon glyphicon-minus"></span> <a href="../modules/基础组件.html">基础组件</a> </dt> <dd> <ul> <li> <a href="../classes/Button.html">Button</a> <ul> </ul> </li> <li> <a href="../classes/ButtonGroup.html">ButtonGroup</a> <ul> </ul> </li> <li> <a href="../classes/Star.html">Star</a> <ul> </ul> </li> </ul> </dd> <dt> <span class="glyphicon glyphicon-minus"></span> <a href="../modules/布局组件.html">布局组件</a> </dt> <dd> <ul> <li> <a href="../classes/Row.html">Row</a> <ul> </ul> </li> <li> <a href="../classes/TableView.html">TableView</a> <ul> </ul> </li> <li> <a href="../classes/Col.html">Col</a> <ul> </ul> </li> <li> <a href="../classes/Grid.html">Grid</a> <ul> </ul> </li> </ul> </dd> <dt> <span class="glyphicon glyphicon-minus"></span> <a href="../modules/弹出框组件.html">弹出框组件</a> </dt> <dd> <ul> <li> <a href="../classes/Alert.html">Alert</a> <ul> </ul> </li> <li> <a href="../classes/Dialog.html">Dialog</a> <ul> </ul> </li> <li> <a href="../classes/Prompt.html">Prompt</a> <ul> </ul> </li> </ul> </dd> <dt> <span class="glyphicon glyphicon-minus"></span> <a href="../modules/提示组件.html">提示组件</a> </dt> <dd> <ul> <li> <a href="../classes/Popover.html">Popover</a> <ul> </ul> </li> <li> <a href="../classes/Whisper.html">Whisper</a> <ul> </ul> </li> </ul> </dd> <dt> <span class="glyphicon glyphicon-minus"></span> <a href="../modules/操作类组件.html">操作类组件</a> </dt> <dd> <ul> <li> <a href="../classes/ImageList.html">ImageList</a> <ul> </ul> </li> <li> <a href="../classes/LoadingList.html">LoadingList</a> <ul> </ul> </li> <li> <a href="../classes/Popup.html">Popup</a> <ul> </ul> </li> <li> <a href="../classes/Slider.html">Slider</a> <ul> </ul> </li> <li> <a href="../classes/Steps.html">Steps</a> <ul> </ul> </li> <li> <a href="../classes/Toast.html">Toast</a> <ul> </ul> </li> <li> <a href="../classes/Accordion.html">Accordion</a> <ul> </ul> </li> <li> <a href="../classes/Swipe.html">Swipe</a> <ul> </ul> </li> </ul> </dd> <dt> <span class="glyphicon glyphicon-minus"></span> <a href="../modules/标签组件.html">标签组件</a> </dt> <dd> <ul> <li> <a href="../classes/Icon.html">Icon</a> <ul> </ul> </li> <li> <a href="../classes/Badge.html">Badge</a> <ul> </ul> </li> <li> <a href="../classes/Label.html">Label</a> <ul> </ul> </li> </ul> </dd> <dt> <span class="glyphicon glyphicon-minus"></span> <a href="../modules/菜单组件.html">菜单组件</a> </dt> <dd> <ul> <li> <a href="../classes/Menu.html">Menu</a> <ul> </ul> </li> <li> <a href="../classes/MenuBody.html">MenuBody</a> <ul> </ul> </li> <li> <a href="../classes/MenuHeader.html">MenuHeader</a> <ul> </ul> </li> <li> <a href="../classes/MenuItem.html">MenuItem</a> <ul> </ul> </li> <li> <a href="../classes/MenuList.html">MenuList</a> <ul> </ul> </li> <li> <a href="../classes/MenuNav.html">MenuNav</a> <ul> </ul> </li> </ul> </dd> <dt> <span class="glyphicon glyphicon-minus"></span> <a href="../modules/表单组件.html">表单组件</a> </dt> <dd> <ul> <li> <a href="../classes/Input.html">Input</a> <ul> </ul> </li> <li> <a href="../classes/Switch.html">Switch</a> <ul> </ul> </li> <li> <a href="../classes/FormGroup.html">FormGroup</a> <ul> </ul> </li> <li> <a href="../classes/TextArea.html">TextArea</a> <ul> </ul> </li> </ul> </dd> <dt> <span class="glyphicon glyphicon-minus"></span> <a href="../modules/辅助组件.html">辅助组件</a> </dt> <dd> <ul> <li> <a href="../classes/Drag.html">Drag</a> <ul> </ul> </li> <li> <a href="../classes/Animate.html">Animate</a> <ul> </ul> </li> </ul> </dd> <dt> <span class="glyphicon glyphicon-minus"></span> <a href="../modules/选项卡.html">选项卡</a> </dt> <dd> <ul> <li> <a href="../classes/Tab.html">Tab</a> <ul> </ul> </li> <li> <a href="../classes/Tabset.html">Tabset</a> <ul> </ul> </li> </ul> </dd> </dl> <div class="icon-sidebar-btn icon-sidebar-btn-open"><span class="glyphicon glyphicon-chevron-left"></span>收起</div> </div> <div class="stdoc-content"> <div class="apidocs"> <div id="docs-main"> <div class="content"> <div class="page-header"> <h1>src/modal/Dialog.js <small>File</small></h1> </div> <div class="file"> <pre class="prettyprint linenums" id='src_code'> import React,{PropTypes} from &#x27;react&#x27;; import Component from &#x27;../utils/Component&#x27;; import classnames from &#x27;classnames&#x27;; import {setPhoenixPrefix} from &#x27;../utils/Tool&#x27;; import Animate from &#x27;../Animate&#x27;; /** * &lt;h5&gt;弹出框组件,主要包括组件:&lt;/h5&gt; * &lt;strong&gt;&lt;a href=&#x27;../classes/Dialog.html&#x27;&gt;Dialog 基础弹框&lt;/a&gt;&lt;/strong&gt;&lt;br/&gt; * &lt;strong&gt;&lt;a href=&#x27;../classes/Alert.html&#x27;&gt;Alert弹框&lt;/a&gt;&lt;/strong&gt;&lt;br&gt; * &lt;strong&gt;&lt;a href=&#x27;../classes/Prompt.html&#x27;&gt;Prompt弹框&lt;/a&gt;&lt;/strong&gt; * &lt;h6&gt;点击以上链接或者左侧导航栏的组件名称链接进行查看&lt;/h6&gt; * @module 弹出框组件 * @main 弹出框组件 * @static */ /** * 弹框组件&lt;br/&gt; * - 由于弹框的显示操作在组件以外, 所以需要在使用时自定义&#x60;visible&#x60;&#x60;onClose&#x60;函数。 * - 通过visible设置弹框是否显示, 可选true/false, 必需。 * - 可通过onClose配置点击弹框阴影部分以及弹框右上角X按钮来关闭弹框。 * - 可通过closeButton来配置弹框右上角X按钮是否显示, 默认不显示。 * - 默认传了onClose之后阴影部分就具备点击关闭弹框的按钮, 如果需要去掉该功能需要额外传shadowDisabled作为标识。 * * 主要属性和接口: * - visible:弹框是否显示标识, 默认false不可见&lt;br/&gt; * - onClose:关闭弹框的功能函数&lt;br/&gt; * - closeButton:右上角关闭按钮是否显示的标识, 默认不显示&lt;br/&gt; * - shadowDisabled:阴影部分是否可点击关闭按钮, 默认传了onClose函数就可以关闭&lt;br/&gt; * * 示例: * &#x60;&#x60;&#x60;code * &lt;Dialog visible={this.state.visible} onClose={::this.onClose} closeButton shadowDisabled&gt; * &lt;Dialog.Title&gt;标题标题&lt;/Dialog.Title&gt; * &lt;Dialog.Body&gt; * &lt;p&gt;可自定义表格内容&lt;/p&gt; * &lt;/Dialog.Body&gt; * &lt;Dialog.Footer&gt; * &lt;Button hollow phSize=&quot;lg&quot; phStyle=&quot;gray&quot; onClick={::this.onClose}&gt;取消&lt;/Button&gt; * &lt;/Dialog.Footer&gt; * &lt;/Dialog&gt; * &#x60;&#x60;&#x60; * &#x60;&#x60;&#x60;code * onShow(){ * this.setState({ * visible: true * }); * } * onClose(){ * this.setState({ * visible: false * }); * } * &#x60;&#x60;&#x60; * * @class Dialog * @module 弹出框组件 * @extends Component * @constructor * @since 0.4.0 * @demo dialog|dialog.js {展示} * @show true * */ class Dialog extends Component{ static propTypes = { /** * 样式前缀 * @property classPrefix * @type String * @default &#x27;dialog&#x27; * */ classPrefix: PropTypes.string, /** * 标签tagName * @property componentTag * @type String * */ componentTag:PropTypes.string, /** * 是否可见标识 * @property visible * @type Boolean * */ visible: PropTypes.bool, /** * 关闭弹框的执行函数 * @method onClose * @type Function * */ onClose: PropTypes.func, /** * 右上角按钮是否可见, 默认不可见 * @property closeButton * @type Boolean * */ closeButton: PropTypes.bool, /** * 阴影部分是否点击可关闭弹框, 默认传了onClose之后可关闭 * @property shadowDisabled * @type Boolean * */ shadowDisabled: PropTypes.bool, }; static defaultProps = { visible: false, classPrefix:&#x27;dialog&#x27;, componentTag:&#x27;div&#x27;, classMapping : {} }; constructor(props, context) { super(props, context); } onShadowClose(){ let {shadowDisabled, onClose} = this.props; if(shadowDisabled) return; onClose(); } renderShadow(){ let {visible} = this.props; if(visible){ return &lt;div className={classnames(setPhoenixPrefix(&quot;dialog-shadow&quot;), &quot;animated&quot;)} onClick={::this.onShadowClose}&gt;&lt;/div&gt;; }else{ return &#x27;&#x27;; } } renderContent(){ let {visible, closeButton, onClose} = this.props; if(visible){ return ( &lt;div className={classnames(setPhoenixPrefix(&quot;dialog-main&quot;), &quot;animated&quot;)}&gt; &lt;div className={classnames(setPhoenixPrefix(&quot;dialog-content&quot;), &quot;animated&quot;)}&gt; &lt;a href=&quot;javascript:;&quot; onClick={onClose} className={classnames( setPhoenixPrefix(&quot;dialog-close&quot;), closeButton ? &quot;show&quot;:&quot;hide&quot;, &quot;gfs-icon icon-close&quot; )}&gt;&lt;/a&gt; {this.renderDialog()} &lt;/div&gt; &lt;/div&gt; ); }else{ return &#x27;&#x27;; } } renderDialog(){ let newChildren = []; let {visible, children} = this.props; React.Children.forEach(children, function(child, index){ // console.log(child.type.name); newChildren.push(React.cloneElement(child,{ key: index, visible: visible })); }); return newChildren; } render(){ let {componentTag:Component, className} = this.props; return ( &lt;Component {...this.props} className={classnames( this.getProperty(true), className )}&gt; &lt;Animate&gt; {this.renderShadow()} &lt;/Animate&gt; &lt;Animate&gt; {this.renderContent()} &lt;/Animate&gt; &lt;/Component&gt; ); } } class DialogTitle extends Component{ constructor(props, context) { super(props, context); } render(){ return ( &lt;h2 {...this.props} className={classnames( setPhoenixPrefix(&#x27;dialog-title&#x27;), this.props.className )}&gt; {this.props.children} &lt;/h2&gt; ); } } class DialogBody extends Component{ constructor(props, context) { super(props, context); } render(){ return ( &lt;div {...this.props} className={classnames( setPhoenixPrefix(&#x27;dialog-body&#x27;), this.props.className )}&gt; {this.props.children} &lt;/div&gt; ); } } class DialogFooter extends Component{ constructor(props, context) { super(props, context); } render(){ return ( &lt;div {...this.props} className={classnames( setPhoenixPrefix(&#x27;dialog-footer&#x27;), this.props.className, &#x27;clearfix&#x27; )}&gt; {this.props.children} &lt;/div&gt; ); } } Dialog.Title = DialogTitle; Dialog.Body = DialogBody; Dialog.Footer = DialogFooter; export default Dialog; </pre> </div> </div> </div> </div> </div> <a id="gotoTop" class='well well-small' href='#'> </a> <script src="../assets/vendor/jquery/jquery-1.8.2.js"></script> <script src="../assets/vendor/bootstrap/js/bootstrap.js"></script> <script src="../assets/vendor/prettify/prettify-min.js"></script> <script src="../assets/js/config.js"></script> <script src="../assets/js/doc.js"></script> </body> </html>