0.1.2 • Published 2 years ago

@dckj/react-better-modal v0.1.2

Weekly downloads
-
License
MIT
Repository
github
Last release
2 years ago

因作者原仓库404,npm下载有问题,因此备份这一份

原作者npm: https://www.npmjs.com/package/react-better-modal

原作者github:https://github.com/malakirti/react-modal#react-better-modal

react-better-modal

🎉 A powerful modal dialog component for React.

🔥 一个功能强大的 React 弹窗组件。支持缩放、拖拽、最大化最小化、键盘事件移动弹窗位置(↑→↓←)、键盘事件缩放(CTRL + ↑→↓←)、键盘事件最大化最小化(ALT + ↑↓)。

Table of Contents

Installation

> npm i @dckj/react-better-modal

# or

> yarn add @dckj/react-better-modal

Usage

import React from "react";
import Modal from "@dckj/react-better-modal";
import "@dckj/react-better-modal/dist/index.css";
function onHandleMove(e) {
  console.log(e, "--->>> onHandleMove");
}
function onHandleResize(e) {
  console.log(e, "--->>> onHandleResize");
}

function onHandleOk() {
  console.log("onOk callback");
}

function onHandleCancel() {
  console.log("onCancel callback");
}

<Modal
  visible
  keyboard
  draggable
  resizable
  title="Hello Modal"
  cancelText={"自定义取消文字"}
  okText={"自定义确定文字"}
  onMove={onHandleMove}
  onResize={onHandleResize}
  onCancel={onHandleCancel}
  onOk={onHandleOk}
  onStageChange={console.log}
>
  Hello Modal!
</Modal>;

API documentation

属性说明类型默认值
appendContainer设置 Modal 的 z-indexnumber-
visible对话框是否可见booleanfalse
theme皮肤(内置 dark 可选)string-
keyboard是否支持键盘事件(关闭(ESC)、移动(↑→↓←)、缩放(CTRL + ↑→↓←)、最大最小化(ALT + ↑↓))booleantrue
useEsc是否支持键盘 esc 关闭,优先级低于 keyboard 参数booleantrue
mask是否展示遮罩booleantrue
maskStyle遮罩样式CSSProperties-
maskClassName遮罩 classstring-
maskClosable点击蒙层是否允许关闭booleanfalse
shouldUpdateOnDrag拖拽过程是否允许视图元素更新booleanfalse
stage对话框展示状态,默认(DEFAULT)、最大化(FULLSCREEN)、最小化(MINIMIZED)。受控属性,自动切换将无效,自行根据 onStageChange 回调控制stringDEFAULT
initialStage对话框初始展示状态。值同 stage 但优先级低于 stagestringDEFAULT
onCancel点击遮罩层或右上角叉或取消按钮的回调function(e)-
onOk点击确定回调function(e)-
draggable对话框是否可拖拽(只支持标题部分拖拽)booleantrue
resizable对话框是否可缩放booleantrue
stageChangeByDoubleClick对话框是否可通过双击改变状态booleantrue
onMove拖动对话框的回调function(e)-
onResize缩放对话框的回调function(e)-
onStageChange对话框状态改变的回调function(e)-
style可用于设置对话框样式,调位置等CSSProperties-
className对话框容器的类名string-
width对话框宽度(受控属性,自动缩放宽度将无效,自行根据 onResize 回调控制)number-
height对话框高度(受控属性,自动缩放高度将无效,自行根据 onResize 回调控制)number-
top对话框距离顶部位置(受控属性,垂直拖动将无效,自行根据 onMove 回调控制)number-
left对话框距离左侧位置(受控属性,水平拖动将无效,自行根据 onMove 回调控制)number-
initialWidth对话框初始宽度number520
initialHeight对话框初始高度number400
initialTop对话框初始距离顶部位置number-
initialLeft对话框初始距离左侧位置number-
minWidth对话框最小宽度number256
minHeight对话框最小高度number256
zIndex设置 Modal 的 z-indexnumber1000
title标题ReactNode-
titleBarClassName对话框标题容器的类名string-
minimizeButton自定义最小化图标ReactNode-
maximizeButton自定义最大化图标ReactNode-
restoreButton自定义复原图标ReactNode-
closeButton自定义关闭图标ReactNode-
contentClassName对话框内容容器类名string-
footerClassName对话框底部容器类名string-
showCancel取消按钮是否可见booleantrue
showOk确定按钮是否可见booleantrue
cancelText取消按钮文字ReactNode取消
okText确认按钮文字ReactNode确定
footer底部内容,当不需要默认底部按钮时,可以设为 footer={null}ReactNode-

Demos

There are several demos hosted on CodeSandbox which demonstrate various features of react-better-modal.

  1. 基础用法
  2. 非受控初始宽高
  3. 受控宽高
  4. 非受控初始位置
  5. 受控位置
  6. 非受控弹窗状态
  7. 受控弹窗状态
  8. 键盘事件
  9. 内置主题
  10. 未覆盖部分请参考 API Documentation

TODOS

  • animation
  • Testing
  • more themes