2.0.15 โ€ข Published 12 months ago

noah-modal v2.0.15

Weekly downloads
-
License
-
Repository
-
Last release
12 months ago

noah-modal

๐ŸŒณ ๋ชจ๋‹ฌ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ ๋งŒ๋“ค๊ธฐ

noah-modal ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋Š” ์šฐ์•„ํ•œํ…Œํฌ์ฝ”์Šค 5๊ธฐ์˜ ๋ ˆ๋ฒจ2 ๋ฏธ์…˜ ์š”๊ตฌ์‚ฌํ•ญ ์ค‘ ํ•˜๋‚˜๋กœ ๊ธฐ์กด ๋ฏธ์…˜์—์„œ ์‚ฌ์šฉํ•˜๋˜ ๋ชจ๋‹ฌ์„ ๋ถ„๋ฆฌํ•˜์—ฌ npm์œผ๋กœ ๋ฐฐํฌํ•˜๊ณ , ๊ทธ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋ฅผ ์ง์ ‘ importํ•ด์„œ ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ์ด ๋ชฉํ‘œ์ž…๋‹ˆ๋‹ค.

๐Ÿ—’๏ธ ๋ชฉ์ฐจ

๐Ÿš€ ์„ค์น˜
๐Ÿ“š ์‚ฌ์šฉ๋ฒ•
๐ŸŽฅ ์œ„์˜ ์˜ˆ์‹œ ๋ณด๊ธฐ
๐Ÿ‘จโ€๐Ÿ’ป ๋งŒ๋“ ์ด

๐Ÿš€ ์„ค์น˜

npm ๋˜๋Š” yarn์„ ์‚ฌ์šฉํ•˜์—ฌ ์„ค์น˜ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

$ npm install noah-modal
$ yarn add noah-modal

๐Ÿ“š ์‚ฌ์šฉ๋ฒ•

noah-modal์€ ModalProvider์™€ useModal๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ๋ชจ๋‹ฌ์„ ๋“ฑ๋กํ•˜๊ณ  ๋ชจ๋‹ฌ์„ ์—ด๊ณ  ๋‹ซ์„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

1๏ธ. ModalProvider๋กœ ๋ชจ๋‹ฌ ๋“ฑ๋กํ•˜๊ธฐ

๋‹ค์Œ๊ณผ ๊ฐ™์ด src/index.tsx์— ModalProvider๋ฅผ ๋“ฑ๋กํ•˜์„ธ์š”.

// NoahModal.tsx

const NoahModal = () => {
  return <div>๋…ธ์•„ ๋ชจ๋‹ฌ์ž…๋‹ˆ๋‹ค.</div>;
};

export default NoahModal;
import React from 'react';
import ReactDOM from 'react-dom/client';
import { ModalProvider } from 'noah-modal'; // noah-modal ๋ถˆ๋Ÿฌ์˜ค๊ธฐ

import App from './App';

ReactDOM.createRoot(document.getElementById('root') as HTMLElement).render(
  <React.StrictMode>
    <ModalProvider
      modals={[
        {
          title: 'noah modal',
          component: <NoahModal />,
          name: 'myModal',
          delayMsTime: 500,
        },
      ]}
    >
      <App />
    </ModalProvider>
  </React.StrictMode>
);

ModalProvider๋Š” modal์„ ๋งค๊ฐœ๋ณ€์ˆ˜๋กœ ๋ฐ›์Šต๋‹ˆ๋‹ค. modal์€ ๋ฐฐ์—ด์ด๋ฉฐ ์•ฑ์— ๋“ฑ๋กํ•˜๊ณ ์ž ํ•˜๋Š” ๋ชจ๋‹ฌ์„ ์š”์†Œ๋กœ ๊ฐ€์ง‘๋‹ˆ๋‹ค. ๊ฐ ์š”์†Œ๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™์€ ์†์„ฑ์„ ๊ฐ€์ง‘๋‹ˆ๋‹ค.

keyvalue typeํ•„์ˆ˜์ธ๊ฐ€์š”?๊ธฐ๋ณธ๊ฐ’์„ค๋ช…
titlestringyes-๋ชจ๋‹ฌ์˜ ์ œ๋ชฉ์ž…๋‹ˆ๋‹ค.
componentJSX.Elementyes-๋ชจ๋‹ฌ ๋‚ด ์ปจํ…์ธ ์ž…๋‹ˆ๋‹ค.
namestringyes-๋ชจ๋‹ฌ ์ด๋ฆ„์ž…๋‹ˆ๋‹ค. ํ•ด๋‹น ๊ฐ’์€ ๋ชจ๋‹ฌ์„ ์—ด๊ณ  ๋‹ซ์„ ๋•Œ ์‚ฌ์šฉ๋˜๋Š” ๊ฐ’์ž…๋‹ˆ๋‹ค.
isAbleBackdropClickbooleannotrue๋ชจ๋‹ฌ ๋ฐ– ๋ฐฐ๊ฒฝ์„ ํด๋ฆญํ–ˆ์„ ๋•Œ, ๋ชจ๋‹ฌ์„ ๋‹ซ์„์ง€ ๋‹ซ์ง€ ์•Š์„์ง€์— ๋Œ€ํ•œ ์—ฌ๋ถ€์ž…๋‹ˆ๋‹ค.
delayMsTimenumberno0๋ชจ๋‹ฌ์ด ์—ด๊ณ  ๋‹ซ์„ ๋•Œ ๊ฑธ๋ฆฌ๋Š” ์‹œ๊ฐ„(ms)์ž…๋‹ˆ๋‹ค. ํ•ด๋‹น ๊ฐ’์„ ์„ค์ •ํ•˜๋ฉด ์• ๋‹ˆ๋ฉ”์ด์…˜ ํšจ๊ณผ๊ฐ€ ๋‚˜ํƒ€๋‚ฉ๋‹ˆ๋‹ค.

2. useModal์˜ Modal๋กœ ๋ชจ๋‹ฌ ์œ„์น˜ ์ •ํ•˜๊ธฐ

๋ณดํ†ต ํ•˜๋‚˜์˜ ์•ฑ์—์„œ ํ•˜๋‚˜์˜ ๋ชจ๋‹ฌ์ด ์กด์žฌํ•ฉ๋‹ˆ๋‹ค. ๋•Œ๋ฌธ์— ModalProvider๋ณด๋‹จ ํ•˜์œ„ ์ปดํฌ๋„ŒํŠธ์— ๊ทธ๋ฆฌ๊ณ  ๋‹ค๋ฅธ ์ปดํฌ๋„ŒํŠธ๋“ค ๋ณด๋‹จ ์ƒ์œ„ ์ปดํฌ๋„ŒํŠธ์— Modal์˜ ์œ„์น˜๋ฅผ ์ •ํ•˜๋Š” ๊ฒƒ์„ ๊ถŒ์žฅํ•ฉ๋‹ˆ๋‹ค.

๋‹ค์Œ์€ ์ „์—ญ์ ์œผ๋กœ ํ•„์š”ํ•œ ๊ฒƒ๋“ค์„ ์„ค์ •ํ•˜๋Š” ๊ณณ์ธ App.tsx์— Modal์˜ ์œ„์น˜๋ฅผ ์ •ํ•œ ์˜ˆ์‹œ์ž…๋‹ˆ๋‹ค.

import { useModal } from 'noah-modal'; // noah-modal ๋ถˆ๋Ÿฌ์˜ค๊ธฐ
import { Outlet } from 'react-router-dom';
import GlobalStyle, { GlobalLayout } from 'styles/globalStyle';

function App() {
  const { Modal } = useModal(); // useModal ํ›…์„ ํ†ตํ•ด ๋žœ๋”๋ง์„ ํ•  Modal ๊ฐ€์ ธ์˜ค๊ธฐ

  return (
    <>
      <GlobalStyle />
      <GlobalLayout>
        <Outlet />
        {Modal && <Modal />}
      </GlobalLayout>
    </>
  );
}

export default App;

3๏ธ. useModal์˜ openModal๋กœ ๋ชจ๋‹ฌ ์—ด๊ธฐ

openModal ํ•จ์ˆ˜๋ฅผ ํ†ตํ•ด ๋ชจ๋‹ฌ์„ ์—ด ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๋งค๊ฐœ๋ณ€์ˆ˜๋กœ๋Š” ์•ž์„œ ๋“ฑ๋กํ•œ ๋ชจ๋‹ฌ์˜ name์„ ์ „๋‹ฌํ•ฉ๋‹ˆ๋‹ค.

import { useModal } from 'noah-modal';

function Home() {
  const { openModal } = useModal();

  const handleClickButton = () => {
    openModal('noahModal'); // ๋ชจ๋‹ฌ ์—ด๊ธฐ
  };
  return (
    <div>
      <button onClick={handleClickButton}>๋…ธ์•„ ๋ชจ๋‹ฌ ์—ด๊ธฐ</button>
    </div>
  );
}

export default Home;

4๏ธ. useModal์˜ closeModal๋กœ ๋ชจ๋‹ฌ ๋‹ซ๊ธฐ

closeModal ํ•จ์ˆ˜๋ฅผ ํ†ตํ•ด ๋ชจ๋‹ฌ์„ ๋‹ซ์„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. openModal ๊ณผ ๋งˆ์ฐฌ๊ฐ€์ง€๋กœ ๋งค๊ฐœ๋ณ€์ˆ˜๋กœ name์„ ์ „๋‹ฌํ•ฉ๋‹ˆ๋‹ค.

// NoahModal.tsx
import { useModal } from 'noah-modal';

function NoahModal() {
  const { closeModal } = useModal();

  return (
    <div>
      <div>๋…ธ์•„ ๋ชจ๋‹ฌ์ž…๋‹ˆ๋‹ค.</div>
      <button onClick={() => closeModal('noahModal')}>๋ชจ๋‹ฌ ๋‹ซ๊ธฐ</button>
    </div>
  );
}

export default NoahModal;

๐ŸŽฅ ์œ„์˜ ์˜ˆ์‹œ ๋ณด๊ธฐ

๋‹ค์Œ์€ ๋…ธ์•„ ๋ชจ๋‹ฌ์ด ์—ด๊ณ  ๋‹ซ๋Š” ๋ชจ์Šต์„ ๋‚˜ํƒ€๋‚ธ ์˜์ƒ์ž…๋‹ˆ๋‹ค.

๋ชจ๋‹ฌ ์‹œ์—ฐ ์˜์ƒ

๐Ÿ‘จโ€๐Ÿ’ป ๋งŒ๋“ ์ด

2.0.15

12 months ago

2.0.3

12 months ago

2.0.2

12 months ago

2.0.13

12 months ago

2.0.5

12 months ago

2.0.14

12 months ago

2.0.4

12 months ago

2.0.11

12 months ago

2.0.7

12 months ago

2.0.12

12 months ago

2.0.6

12 months ago

2.0.9

12 months ago

2.0.10

12 months ago

2.0.8

12 months ago

2.0.1

12 months ago

2.0.0

12 months ago

1.0.10

1 year ago

1.0.9

1 year ago

1.0.8

1 year ago

1.0.7

1 year ago

1.0.6

1 year ago

1.0.5

1 year ago

1.0.4

1 year ago

1.0.3

1 year ago

1.0.2

1 year ago

1.0.1

1 year ago

1.0.0

1 year ago

0.0.12

1 year ago

0.0.11

1 year ago

0.0.10

1 year ago

0.0.9

1 year ago

0.0.8

1 year ago

0.0.7

1 year ago

0.0.6

1 year ago

0.0.5

1 year ago

0.0.4

1 year ago

0.0.3

1 year ago

0.0.2

1 year ago

0.0.1

1 year ago