• 티스토리 홈
  • 프로필사진
    루루개발자
  • 방명록
  • 공지사항
  • 태그
  • 블로그 관리
  • 글 작성
루루개발자
  • 프로필사진
    루루개발자
    • 분류 전체보기 (213)
      • react & next.js (13)
      • Node.js & Javascript & Type.. (24)
        • d3.js (10)
      • 차트 만들기 (1)
      • 티스토리 스킨 개발 (7)
      • 내가 만든 패키지 (3)
      • 내가 만든 CSS (1)
      • CSS (7)
      • 도커 & 쿠버네티스 (3)
      • 개인 프로젝트 (7)
      • 리뷰 & 추천 (2)
      • 알고리즘 (1)
      • IT 기타 (18)
      • 잡동사니 (1)
      • Spring Boot (5)
      • 취미로 그리는 그림들 (120)
      • 개인적인 생각들 (0)
  • 반응형
  • 방문자 수
    • 전체:
    • 오늘:
    • 어제:
  • 최근 댓글
      등록된 댓글이 없습니다.
    • 최근 공지
        등록된 공지가 없습니다.
      # Home
      # 공지사항
      #
      # 태그
      # 검색결과
      # 방명록
      • [react-calendar] DatePicker 찾으시나요?
        2023년 09월 09일
        • 루루개발자
        • 작성자
        • 2023.09.09.:43
        반응형

        ✪  설치 방법

        npm i @wisdomstar94/react-calendar

        https://www.npmjs.com/package/@wisdomstar94/react-calendar

         

        ✪  예제 코드

        https://github.com/wisdomstar94/react-calendar/blob/main/src/app/test-date-picker/page.tsx

        https://github.com/wisdomstar94/react-calendar/blob/main/src/app/test-date-picker-wrapper/page.tsx

         

        https://github.com/wisdomstar94/react-calendar 을 로컬에 pull 받아 프로젝트 루트 경로에서 터미널에 "npm run dev" 명령어 입력 후 "http://localhost:3330/" 에 접근하시면 직접 DatePicker 동작을 테스트 및 파악해보실 수 있습니다.

         

        ✪  주요 기능

        ✔ month, date, datetime, time 다양한 선택 모드 제공

        월단위 혹은 일 단위, 시분초 등 다양한 선택 모드를 제공합니다.

        ✔  range date pick 기능 제공

        시작날짜, 종료날짜를 하나의 input 및 UI 에서 선택 할 수 있도록 range date pick 기능을 제공합니다.

        ✔  input 날짜 타이핑 연동 기능 제공

        캘린더에서 날짜 및 시간을 선택해도 되지만, input element 에 입력된 날짜 문자열을 직접 타이핑하여 수정해도 캘린더와 연동되는 기능을 제공합니다.

        ✔  부모 요소 overflow: hidden 대응

        부모 요소에 overflow: hidden 스타일이 적용되어 있으면 DatePicker 가 표시될 때 제대로 표시되지 않을 수 있습니다. 이 부분은 DatePicker 가 루트에서 렌더링 되도록 하여 부모 요소에 의해 제대로 표시되지 않을 수 있는 부분을 대응하였습니다.

         

        ✪  참고 사항

        ✔ react 전용 패키지

        본 패키지는 react 에서만 사용 가능한 패키지입니다. 따라서 사전에 react 가 설치되어 있으셔야 합니다.

        ✔ DatePicker 랩핑 컴포넌트로 사용 권장

        본 패키지에서 제공하는 DatePicker 컴포넌트를 바로 사용하셔도 무방하지만, 프로젝트에서 사용하시는 커스텀 Input 태그 혹은 컴포넌트와 본 패키지의 DatePicker 컴포넌트를 랩핑한 커스텀 DatePicker 컴포넌트를 만들어 사용하시는 것을 추천드립니다. 랩핑 컴포넌트에 대한 예제 소스는 다음과 같습니다. 

        https://github.com/wisdomstar94/react-calendar/tree/main/src/components/date-picker-wrapper

         

        ✪  제공되는 컴포넌트

        ✔  DatePicker

        property description
        inputSelector DatePicker 컴포넌트와 함께 사용할 input 에 대한 선택자 값입니다. ref 를 할당할 수도 있고, selector 문자열을 할당할 수도 있고, element 자체를 할당할 수도 있습니다. 또한 DatePicker 의 너비를 Input 요소와 동일하게 설정할 것인지에 대한 값도 설정 할 수 있습니다.
        pickType DatePicker 의 선택 모드 입니다. 
        - month : 년도와 월만 표시되며 월 단위로 선택 가능합니다.
        - date : 년도, 월, 일이 표시되며 일 단위로 선택 가능합니다.
        - datetime: 년도, 월, 일, 시간이 표시되며 일 단위와 시간까지 선택 가능합니다.
        - time : 시간만 표시되며 시간 단위로 선택 가능합니다.
        timeType pickType 이 "datetime" 또는 "time" 일 경우 시간 선택 모드에 대한 값입니다.
        - hour : "시" 까지만 선택 가능합니다.
        - hour-minute : "시", "분" 까지 선택 가능합니다.
        - hour-minute-second : "시", "분", "초" 까지 선택 가능합니다.
        rangeType 날짜 선택을 단일로 할 것인지 range 로 할 것인지에 대한 값입니다.
        - range : DatePicker 에서 시작날짜, 종료날짜를 선택할 수 있게 합니다.
        - single : DatePicker 에서 하나의 날짜만 선택할 수 있게 합니다.
        rangeDivideString rangeType 이 "range" 일 경우, input 에 두 날짜가 표시될 때 날짜 사이의 구분 문자 값 입니다.
        - 예시 1) 이 속성 값을 "->" 으로 지정할 경우 input 에는 "시작날짜 ~ 종료날짜" 로 표시됩니다.
        - 예시 2) 이 속성 값을 ":::" 으로 지정할 경우 Input 에는 "시작날짜 ::: 종료날짜" 로 표시됩니다.
        selectedDate 현재 선택되어 있는 date 상태값 입니다. rangeType 이 "single" 일 때만 필수입니다.
        setSelectedDate 현재 선택되어 있는 date 상태값의 setter 함수입니다. rangeType 이 "single" 일 때만 필수입니다.
        selectedRangeDate 현재 선택되어 있는 range date 상태값 입니다. rangeType 이 "range" 일 때만 필수입니다.
        setSelectedRangeDate 현재 선택되어 있는range date 상태값의 setter 함수입니다. rangeType 이 "range" 일 때만 필수입니다.
        defaultValues 일, 시, 분, 초에 대한 기본 값입니다.
        - single : rangeType 이 "single" 일 경우에 해당하는 기본 값들을 설정합니다.
        - range : rangeType 이 "range" 일 경우에 해당하는 기본 값들을 설정합니다.
        - isForce : 기본 값은 사용자가 선택 가능한 상태에 해당하거나 부모 요소에서 선택된 날짜의 상태 값을 변경 하였을 경우에는 적용되지 않지만 이 값이 true 이면 예외 없이 항상 명시된 기본 값들을 적용합니다. 
        isShow DatePicker 를 표시할지 말지에 대한 상태 값입니다.
        setIsShow DatePicker 를 표시할지 말지에 대한 상태 값의 setter 함수 입니다.
        onValueChange 캘린더에서 날짜가 선택되거나 부모 요소에서 선택된 날짜 상태 값을 변경하였을 경우 input 에 표시되어야 할 날짜 문자열을 넘겨주는 있는 콜백함수 입니다.
        onRangeDateDiffDays rangeType 이 "range" 일 경우, 두 날짜가 모두 선택되었을 때 두 날짜 사이의 총 일수를 넘겨주는 콜백함수 입니다.
        outputFormat input 에 표시되는 날짜 포맷을 직접 설정 할 수 있습니다. 포맷 형식은 luxon 의 toFormat 메서드에 해당하는 포맷 형식과 동일합니다.
        isApplyFullSizeWhenDisplayEscape 만약 DatePicker 가 화면 영역을 벗어나 일부가 잘린 채로 표시가 될 경우, DatePicker 가 전체화면에 모달 형식으로 표시되도록 할 것인지에 대한 값입니다.
        allowSelectDates DatePicker 에서 선택 가능한 날짜 범위를 지정할 수 있습니다.
        width DatePicker 의 너비 값을 설정할 수 있습니다. 혹은 inputSelector 속성의 isMatchInputWidth 값을 true 로 주면 DatePicker 의 너비를 Input 너비로 고정시킬 수 있습니다.

         

        ✪  이 패키지를 만든 이유

        다른 DatePicker 패키지들을 사용해봤을 때 레이아웃이 깨지거나, 원하는 기능이 일부 없는 경우가 있어서 맞춤형으로 직접 하나 만들어 보고 싶단 생각에 이 패키지를 만들어보았습니다. 그리고 npm 패키지 저장소에 공개하여 마음에 드시는 분들은 사용하실 수 있도록 해보았습니다. 

        반응형

        '내가 만든 패키지' 카테고리의 다른 글

        [react-circle-wheel-select-box] 리액트용 원형 휠 선택 박스  (2) 2024.02.19
        [react-add-event-listener] 리액트용 addEventListener 훅  (0) 2023.10.16
        다음글
        다음 글이 없습니다.
        이전글
        이전 글이 없습니다.
        댓글
      조회된 결과가 없습니다.
      스킨 업데이트 안내
      현재 이용하고 계신 스킨의 버전보다 더 높은 최신 버전이 감지 되었습니다. 최신버전 스킨 파일을 다운로드 받을 수 있는 페이지로 이동하시겠습니까?
      ("아니오" 를 선택할 시 30일 동안 최신 버전이 감지되어도 모달 창이 표시되지 않습니다.)
      목차
      표시할 목차가 없습니다.
        • 안녕하세요
        • 감사해요
        • 잘있어요

        티스토리툴바