0.0.21 • Published 1 year ago

@jinyyy/simple-modal v0.0.21

Weekly downloads
-
License
MIT
Repository
-
Last release
1 year ago

Modal

Displays a dialog with a custom content that requires attention or provides additional information.

installation

npm install @jinyyy/simple-modal

Component spec

Modal

The main component to display a modal.

prop nametypedefault valuedescription
childrenReactNodeChildren of the modal component
isOpenbooleanThe state of the modal being open or closed
onToggle() => voidHandler function to toggle modal
position'center' \| 'bottom''center'Position of the modal on display
device'mobile' \| 'tablet' \| 'desktop''mobile'serving responsive modal backdrop sizes
size'small' \| 'medium' \| 'large''small'serving responsive modal sizes
styleReact.CSSPropertiesHow to define inline CSS in React
classNamestringHow to use class names for DOM elements in React

ModalHeader

The header of the modal.

prop nametypedefault valuedescription
childrenReactNodeChildren of ModalHeader component
titlestringTitle of the modal
styleReact.CSSPropertiesHow to define inline CSS in React
classNamestringHow to use class names for DOM elements in React

ModalContent

The body of the modal. (example - checkbox, input, textarea)

prop nametypedefault valuedescription
childrenReactNodeChildren of ModalContent component
styleReact.CSSPropertiesHow to define inline CSS in React
classNamestringHow to use class names for DOM elements in React

ModalFooter

The footer of the modal. (example - buttons)

prop nametypedefault valuedescription
childrenReactNodeChildren of ModalFooter component
direction'column' \| 'row''row'Flex direction of the footer
styleReact.CSSPropertiesHow to define inline CSS in React
classNamestringHow to use class names for DOM elements in React

ModalCloseButton

Buttons used within a modal footer.

prop nametypedefault valuedescription
onClickReact.MouseEventHandler<HTMLButtonElement>Handlers for closing modals
type'submit' \| 'button' \| 'reset'button type
styleReact.CSSPropertiesHow to define inline CSS in React
classNamestringHow to use class names for DOM elements in React

ModalButton

Buttons for use in modal footer

prop nametypedefault valuedescription
childrenReactNodeChildren of ModalButton component
color'primary' \| 'secondary' \| 'danger''primary'Determine the background color of the button
onClickReact.MouseEventHandler<HTMLButtonElement>Handlers for closing and confirm modals
styleReact.CSSPropertiesHow to define inline CSS in React
classNamestringHow to use class names for DOM elements in React

ModalInput

Input for use in modal content

prop nametypedefault valuedescription
valueReactNodeChildren of ModalButton component
onChangeReact.ChangeEventHandler<HTMLInputElement>Handlers for handling of change value
styleReact.CSSPropertiesHow to define inline CSS in React
classNamestringHow to use class names for DOM elements in React

ModalLabel

label for use in modal content

prop nametypedefault valuedescription
childrenReactNodeChildren of ModalLabel component
styleReact.CSSPropertiesHow to define inline CSS in React
classNamestringHow to use class names for DOM elements in React

AlertModal

Modals that convey a message to the user and only provide an confirm button

prop nametypedefault valuedescription
titlestringtitle of alert modal
contentLabelstringcontent label of alert modal
confirmButtonTextstringconfirm button text of alert modal
styleReact.CSSPropertiesHow to define inline CSS in React
classNamestringHow to use class names for DOM elements in React

ConfirmModal

Modals that give users choices and provide confirm/cancel button

prop nametypedefault valuedescription
childrenReactNodeChildren of ModalLabel component
titlestringtitle of confirm modal
contentLabelstringcontent label of confirm modal
cancelButtonTextstringcancel button text of confirm modal
confirmButtonTextstringconfirm button text of confirm modal
styleReact.CSSPropertiesHow to define inline CSS in React
classNamestringHow to use class names for DOM elements in React

PromptModal

Modal that provides an input field to receive input from the user and an confirm/cancel button

prop nametypedefault valuedescription
titlestringtitle of confirm modal
contentLabelstringcontent label of confirm modal
cancelButtonTextstringcancel button text of confirm modal
confirmButtonTextstringconfirm button text of confirm modal
styleReact.CSSPropertiesHow to define inline CSS in React
classNamestringHow to use class names for DOM elements in React

use example

Modal

import React from 'react';
import { Modal } from '@jinyyy/simple-modal';

const OtherModal = () => {
  const [isOpen, setIsOpen] = useState(false);
  const handleToggle = () => setIsOpen((prev) => !prev);

  return (
    <div className="app">
      <Modal position="bottom" isOpen={isOpen} onToggle={handleToggle}>
        <Modal.ModalHeader title="약관에 동의해 주세요" />
        <Modal.ModalContent style={{ margin: '12px 0px' }}>
          <div style={{ height: '300px', width: '100%', backgroundColor: 'black' }} />
        </Modal.ModalContent>
        <Modal.ModalFooter direction="row">
          <Modal.ModalButton onClick={args.onToggle} color="primary">
            동의하고 저장하기
          </Modal.ModalButton>
          <Modal.ModalButton onClick={args.onToggle} color="secondary">
            닫기
          </Modal.ModalButton>
        </Modal.ModalFooter>
      </Modal>
    </div>
  );
};

AlertModal

import React from 'react';
import { AlertModal } from '@jinyyy/simple-modal';

function App() {
  const [isOpen, setIsOpen] = React.useState(false);
  const handleToggle = () => setIsOpen((prev) => !prev);

  return (
    <div style={{ height: '100vh', width: 'width: 600px', margin: 'auto' }}>
      <AlertModal
        position="bottom"
        isOpen={isOpen}
        onToggle={handleToggle}
        title="아이디를 입력해주세요."
        contentLabel="아이디는 필수로 입력해야 합니다."
      />

      <button onClick={handleToggle}>모달 클릭!</button>
    </div>
  );
}

export default App;

ConfirmModal

import React from 'react';
import { ConfirmModal } from '@jinyyy/simple-modal';

function App() {
  const [isOpen, setIsOpen] = React.useState(false);
  const handleToggle = () => setIsOpen((prev) => !prev);

  return (
    <div style={{ height: '100vh', width: '600px', margin: 'auto' }}>
      <ConfirmModal
        position="center"
        isOpen={isOpen}
        onToggle={handleToggle}
        title="아이디를 입력해주세요."
        onConfirm={handleToggle}
      >
        <p style={{ fontSize: '12px', fontWeight: '500', lineHeight: '16px' }}>삭제하면 복구하실 수 없습니다.</p>
      </ConfirmModal>
      <button onClick={handleToggle}>모달 클릭!</button>
    </div>
  );
}

export default App;

PromptModal

import React from 'react';
import { PromptModal } from '@jinyyy/simple-modal';

function App() {
  const [isOpen, setIsOpen] = React.useState(false);
  const handleToggle = () => setIsOpen((prev) => !prev);

  return (
    <div style={{ height: '100vh', width: '600px', margin: 'auto' }}>
      <PromptModal
        position="center"
        isOpen={isOpen}
        onToggle={handleToggle}
        title="쿠폰 번호를 입력해 주세요."
        onConfirm={handleToggle}
      />
      <button onClick={handleToggle}>모달 클릭!</button>
    </div>
  );
}

export default App;

Features

When the modal opens

  • Dimmed outside the modal
  • Content behind a modal is inert, meaning that users cannot interact with it.

When the modal closes

  • Pressing ESC key closes the modal
  • Click dimmed to close
0.0.21

1 year ago

0.0.20

1 year ago

0.0.14

1 year ago

0.0.15

1 year ago

0.0.16

1 year ago

0.0.17

1 year ago

0.0.18

1 year ago

0.0.19

1 year ago

0.0.11

1 year ago

0.0.12

1 year ago

0.0.13

1 year ago

0.0.10

1 year ago

0.0.9

1 year ago

0.0.8

1 year ago

0.0.5

1 year ago

0.0.7

1 year ago

0.0.6

1 year ago

0.0.3

1 year ago

0.0.2

1 year ago

0.0.4

1 year ago

0.0.1

1 year ago