MCPcopy Index your code
hub / github.com/DylanVann/ant-design-draggable-modal

github.com/DylanVann/ant-design-draggable-modal @v1.0.0

Chat with this repo
repository ↗ · DeepWiki ↗ · release v1.0.0 ↗ · + Follow
31 symbols 67 edges 16 files 0 documented · 0%
What it actually does AI analysis from the code graph — generated when you open this
loading…
README

Ant Design Draggable Modal

Modal from Ant Design, draggable.

Version Downloads BundlePhobia MIT License

Watch on GitHub Star on GitHub Tweet

Example of ant-design-draggable-modal.

🌎 Example

✨ Features

  • [x] Drag with title bar.
  • [x] Resize with handle.
  • [x] Keep in bounds.
    • [x] During drag.
    • [x] During resize.
    • [x] During resize window.
  • [x] Multiple modals with managed zIndex.
  • [x] Open from center.
  • [ ] Better API for using as a controlled component.
  • [ ] Open from quadrants.
  • [ ] Better escape key management.
  • [ ] Resize with option key.

📦 Install

yarn add ant-design-draggable-modal

NOTE: You must use react@16.8.0 and react-dom@16.8.0 or higher.

🔨 Usage

import React, { useState, useCallback } from 'react'
import { Button } from 'antd'
import { DraggableModal, DraggableModalProvider } from 'ant-design-draggable-modal'
import 'antd/dist/antd.css'
import 'ant-design-draggable-modal/dist/index.css'

const ModalWithButton = () => {
    const [visible, setVisible] = useState(false)
    const onOk = useCallback(() => setVisible(true), [])
    const onCancel = useCallback(() => setVisible(false), [])
    return (
        <>
            <Button onClick={onOk}>Open</Button>
            <DraggableModal visible={visible} onOk={onOk} onCancel={onCancel}>
                Body text.
            </DraggableModal>
        </>
    )
}

// DraggableModalProvider manages the zIndex
// of DraggableModals rendered beneath it.
const App = () => (
    <DraggableModalProvider>
        <ModalWithButton />
        <ModalWithButton />
        <ModalWithButton />
    </DraggableModalProvider>
)

⚠️ User Experience Warning

You should probably try to design your app not to need to use this, apps should usually not be window managers.

License

MIT © DylanVann

Extension points exported contracts — how you extend this code

ModalWithButtonProps (Interface)
(no doc)
packages/example/src/App.tsx
InitialState (Interface)
(no doc)
packages/ant-design-draggable-modal/src/useResize.ts
ContextProps (Interface)
(no doc)
packages/ant-design-draggable-modal/src/DraggableModalInner.tsx
DraggableModalProps (Interface)
(no doc)
packages/ant-design-draggable-modal/src/DraggableModal.tsx
DraggableModalContextMethods (Interface)
(no doc)
packages/ant-design-draggable-modal/src/DraggableModalContext.ts
DraggableModalContextValue (Interface)
(no doc)
packages/ant-design-draggable-modal/src/DraggableModalContext.ts

Core symbols most depended-on inside this repo

clamp
called by 4
packages/ant-design-draggable-modal/src/clamp.ts
getNextZIndex
called by 4
packages/ant-design-draggable-modal/src/draggableModalReducer.ts
clampDrag
called by 3
packages/ant-design-draggable-modal/src/draggableModalReducer.ts
clampResize
called by 3
packages/ant-design-draggable-modal/src/draggableModalReducer.ts
getWindowSize
called by 2
packages/ant-design-draggable-modal/src/getWindowSize.ts
onResize
called by 2
packages/ant-design-draggable-modal/src/DraggableModalProvider.tsx
getInitialModalState
called by 2
packages/ant-design-draggable-modal/src/draggableModalReducer.ts
getModalState
called by 2
packages/ant-design-draggable-modal/src/draggableModalReducer.ts

Shape

Function 23
Interface 8

Languages

TypeScript100%

Modules by API surface

packages/ant-design-draggable-modal/src/draggableModalReducer.ts9 symbols
packages/ant-design-draggable-modal/src/useResize.ts4 symbols
packages/example/src/App.tsx3 symbols
packages/ant-design-draggable-modal/src/useDrag.ts3 symbols
packages/ant-design-draggable-modal/src/DraggableModalProvider.tsx2 symbols
packages/ant-design-draggable-modal/src/DraggableModalInner.tsx2 symbols
packages/ant-design-draggable-modal/src/DraggableModalContext.ts2 symbols
packages/ant-design-draggable-modal/src/DraggableModal.tsx2 symbols
packages/ant-design-draggable-modal/src/usePrevious.ts1 symbols
packages/ant-design-draggable-modal/src/getWindowSize.ts1 symbols
packages/ant-design-draggable-modal/src/clamp.ts1 symbols
packages/ant-design-draggable-modal/src/ResizeHandle.tsx1 symbols

For agents

$ claude mcp add ant-design-draggable-modal \
  -- python -m otcore.mcp_server <graph>

⬇ download graph artifact

Ask about this repo answers extend the page