@vibe/date-picker 4.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/DatePicker/DateContentHoverContext.d.ts +12 -0
- package/dist/DatePicker/DateContentHoverContext.js +2 -0
- package/dist/DatePicker/DateContentHoverContext.js.map +1 -0
- package/dist/DatePicker/DatePicker.d.ts +8 -0
- package/dist/DatePicker/DatePicker.js +2 -0
- package/dist/DatePicker/DatePicker.js.map +1 -0
- package/dist/DatePicker/DatePicker.module.scss.js +2 -0
- package/dist/DatePicker/DatePicker.module.scss.js.map +1 -0
- package/dist/DatePicker/DatePicker.types.d.ts +34 -0
- package/dist/DatePicker/DatePickerHeader.d.ts +17 -0
- package/dist/DatePicker/DatePickerHeader.js +2 -0
- package/dist/DatePicker/DatePickerHeader.js.map +1 -0
- package/dist/DatePicker/DatePickerHeader.module.scss.js +2 -0
- package/dist/DatePicker/DatePickerHeader.module.scss.js.map +1 -0
- package/dist/DatePicker/RangeDayContent.d.ts +3 -0
- package/dist/DatePicker/RangeDayContent.js +2 -0
- package/dist/DatePicker/RangeDayContent.js.map +1 -0
- package/dist/DatePicker/SingleDayContent.d.ts +3 -0
- package/dist/DatePicker/SingleDayContent.js +2 -0
- package/dist/DatePicker/SingleDayContent.js.map +1 -0
- package/dist/DatePicker/datePickerHooks.d.ts +18 -0
- package/dist/DatePicker/datePickerHooks.js +2 -0
- package/dist/DatePicker/datePickerHooks.js.map +1 -0
- package/dist/DatePicker/index.d.ts +2 -0
- package/dist/DatePicker/utils.d.ts +13 -0
- package/dist/DatePicker/utils.js +2 -0
- package/dist/DatePicker/utils.js.map +1 -0
- package/dist/index.d.ts +1 -0
- package/dist/index.js +2 -0
- package/dist/index.js.map +1 -0
- package/dist/mocked_classnames/DatePicker/DateContentHoverContext.d.ts +12 -0
- package/dist/mocked_classnames/DatePicker/DateContentHoverContext.js +2 -0
- package/dist/mocked_classnames/DatePicker/DateContentHoverContext.js.map +1 -0
- package/dist/mocked_classnames/DatePicker/DatePicker.d.ts +8 -0
- package/dist/mocked_classnames/DatePicker/DatePicker.js +2 -0
- package/dist/mocked_classnames/DatePicker/DatePicker.js.map +1 -0
- package/dist/mocked_classnames/DatePicker/DatePicker.module.scss.js +2 -0
- package/dist/mocked_classnames/DatePicker/DatePicker.module.scss.js.map +1 -0
- package/dist/mocked_classnames/DatePicker/DatePicker.types.d.ts +34 -0
- package/dist/mocked_classnames/DatePicker/DatePickerHeader.d.ts +17 -0
- package/dist/mocked_classnames/DatePicker/DatePickerHeader.js +2 -0
- package/dist/mocked_classnames/DatePicker/DatePickerHeader.js.map +1 -0
- package/dist/mocked_classnames/DatePicker/DatePickerHeader.module.scss.js +2 -0
- package/dist/mocked_classnames/DatePicker/DatePickerHeader.module.scss.js.map +1 -0
- package/dist/mocked_classnames/DatePicker/RangeDayContent.d.ts +3 -0
- package/dist/mocked_classnames/DatePicker/RangeDayContent.js +2 -0
- package/dist/mocked_classnames/DatePicker/RangeDayContent.js.map +1 -0
- package/dist/mocked_classnames/DatePicker/SingleDayContent.d.ts +3 -0
- package/dist/mocked_classnames/DatePicker/SingleDayContent.js +2 -0
- package/dist/mocked_classnames/DatePicker/SingleDayContent.js.map +1 -0
- package/dist/mocked_classnames/DatePicker/datePickerHooks.d.ts +18 -0
- package/dist/mocked_classnames/DatePicker/datePickerHooks.js +2 -0
- package/dist/mocked_classnames/DatePicker/datePickerHooks.js.map +1 -0
- package/dist/mocked_classnames/DatePicker/index.d.ts +2 -0
- package/dist/mocked_classnames/DatePicker/utils.d.ts +13 -0
- package/dist/mocked_classnames/DatePicker/utils.js +2 -0
- package/dist/mocked_classnames/DatePicker/utils.js.map +1 -0
- package/dist/mocked_classnames/index.d.ts +1 -0
- package/dist/mocked_classnames/index.js +2 -0
- package/dist/mocked_classnames/index.js.map +1 -0
- package/package.json +77 -0
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import React from "react";
|
|
2
|
+
export declare const DayContentHoverContext: React.Context<{
|
|
3
|
+
hover: Date | undefined;
|
|
4
|
+
setHover: (_hover: Date | undefined) => void;
|
|
5
|
+
}>;
|
|
6
|
+
export declare const DayContentHoverProvider: ({ children }: {
|
|
7
|
+
children: React.ReactNode;
|
|
8
|
+
}) => React.JSX.Element;
|
|
9
|
+
export declare const useDayContentHoverContext: () => {
|
|
10
|
+
hover: Date | undefined;
|
|
11
|
+
setHover: (_hover: Date | undefined) => void;
|
|
12
|
+
};
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
import e,{createContext as o,useState as r,useMemo as t,useContext as v}from"react";import{noop as i}from"es-toolkit";const c=o({hover:void 0,setHover:i}),m=({children:o})=>{const[v,i]=r(void 0),m=t((()=>({hover:v,setHover:i})),[v]);return e.createElement(c.Provider,{value:m},o)},n=()=>v(c);export{c as DayContentHoverContext,m as DayContentHoverProvider,n as useDayContentHoverContext};
|
|
2
|
+
//# sourceMappingURL=DateContentHoverContext.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"DateContentHoverContext.js","sources":["../../src/DatePicker/DateContentHoverContext.tsx"],"sourcesContent":["import React, { createContext, useContext, useMemo, useState } from \"react\";\nimport { noop } from \"es-toolkit\";\n\nexport const DayContentHoverContext = createContext<{\n hover: Date | undefined;\n setHover: (_hover: Date | undefined) => void;\n}>({ hover: undefined, setHover: noop });\n\nexport const DayContentHoverProvider = ({ children }: { children: React.ReactNode }) => {\n const [hover, setHover] = useState<Date | undefined>(undefined);\n const value = useMemo(() => ({ hover, setHover }), [hover]);\n return <DayContentHoverContext.Provider value={value}>{children}</DayContentHoverContext.Provider>;\n};\n\nexport const useDayContentHoverContext = () => useContext(DayContentHoverContext);\n"],"names":["DayContentHoverContext","createContext","hover","undefined","setHover","noop","DayContentHoverProvider","children","useState","value","useMemo","React","createElement","Provider","useDayContentHoverContext","useContext"],"mappings":"sHAGaA,MAAAA,EAAyBC,EAGnC,CAAEC,WAAOC,EAAWC,SAAUC,IAEpBC,EAA0BA,EAAGC,eACxC,MAAOL,EAAOE,GAAYI,OAA2BL,GAC/CM,EAAQC,GAAQ,KAAO,CAAER,QAAOE,cAAa,CAACF,IACpD,OAAOS,EAAAC,cAACZ,EAAuBa,SAAQ,CAACJ,MAAOA,GAAQF,EAA2C,EAGvFO,EAA4BA,IAAMC,EAAWf"}
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
import e,{createContext as t,useMemo as a,useState as r,useRef as n,useEffect as o,useCallback as i}from"react";import s from"classnames";import{InternalModifier as d,DayPicker as l}from"react-day-picker";import c from"./DatePicker.module.scss.js";import m from"./DatePickerHeader.js";import{AddToRangeMiddle as u,AddToRangeStart as k,AddToRangeEnd as D,RemoveFromRange as g,HoveredDayExists as y,HalfRangeSelected as P,addToRange as b,addToRangeModifiers as f}from"./utils.js";import{RangeDayContent as h}from"./RangeDayContent.js";import{SingleDayContent as p}from"./SingleDayContent.js";import{DayContentHoverProvider as C,DayContentHoverContext as S}from"./DateContentHoverContext.js";const v={hours:9,minutes:0},R={[d.Outside]:c.datePickerDayOutside,[d.Selected]:c.datePickerDaySelected,[d.Today]:c.datePickerDayToday,[d.Disabled]:c.datePickerDayDisabled,[d.RangeStart]:c.datePickerDayRangeStart,[d.RangeEnd]:c.datePickerDayRangeEnd,[d.RangeMiddle]:c.datePickerDayRangeMiddle,[u]:c.datePickerAddToRangeMiddle,[k]:c.datePickerAddToRangeStart,[D]:c.datePickerAddToRangeEnd,[g]:c.datePickerRemoveFromRange,[y]:c.datePickerHoveredDayExists,[P]:c.datePickerHalfRangeSelected},N=t({}),A=()=>e.createElement(N.Consumer,null,(t=>e.createElement(m,Object.assign({},t)))),E=({className:t,dayClassName:m,selectedDayClassName:u,id:k,"data-testid":D,mode:g="single",date:y,endDate:P,onDateChange:E,firstDayOfWeek:j=0,showWeekNumber:w,isDateDisabled:L,locale:M,nextButtonAriaLabel:O="Next",prevButtonAriaLabel:x="Previous",monthSelectionAriaLabel:H="Month",yearSelectionAriaLabel:T="Year",dropdownsClassName:B,intent:W="to",dialogContainerSelector:q})=>{const F=a((()=>"single"===g?y:{from:y,to:P}),[y,P,g]),[Y,z]=r(y||new Date),G=n(),I=n(),J=n(!1);o((()=>{const e=+I.current!=+P,t=!J.current;+G.current!=+y?t&&y&&z(y):e&&t&&P&&z(P),G.current=y,I.current=P,J.current=!1}),[y,P]);const K=i(((e,t)=>{if(J.current=!0,"range"===g){const e=b(t,F,W);E({date:null==e?void 0:e.from,endDate:null==e?void 0:e.to})}else{const t=e,{hours:a,minutes:r}=y?{hours:y.getHours(),minutes:y.getMinutes()}:v;t.setHours(a,r),E(t)}}),[y,W,g,E,F]),Q=a((()=>({setDisplayMonth:z,locale:M,nextButtonAriaLabel:O,prevButtonAriaLabel:x,monthSelectionAriaLabel:H,yearSelectionAriaLabel:T,dropdownsClassName:B,dialogContainerSelector:q})),[M,H,O,z,x,T,B,q]),U=a((()=>Object.assign(Object.assign({},R),{[d.Selected]:s(R[d.Selected],u)})),[u]),V=a((()=>({months:c.datePickerMonths,head:c.datePickerHead,table:c.datePickerTable,tbody:c.datePickerBody,day:s(c.datePickerDay,m)})),[m]);return e.createElement("div",{id:k,className:s(c.datePicker,{[c.withWeekNumber]:w},t),"data-testid":D,"data-vibe":"DatePicker"},e.createElement(C,null,e.createElement(N.Provider,{value:Q},e.createElement(S.Consumer,null,(({hover:t})=>{const a=f(t,F,W);return e.createElement(l,{fixedWeeks:!0,showOutsideDays:!0,showWeekNumber:w,mode:g,required:!0,weekStartsOn:j,disabled:L,selected:F,onSelect:K,month:Y,onMonthChange:z,components:{Caption:A,DayContent:"single"===g?p:h},classNames:V,modifiers:a,modifiersClassNames:U,locale:M})})))))};export{v as DEFAULT_TIME,E as default};
|
|
2
|
+
//# sourceMappingURL=DatePicker.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"DatePicker.js","sources":["../../src/DatePicker/DatePicker.tsx"],"sourcesContent":["import React, { type FC, createContext, useCallback, useEffect, useMemo, useRef, useState } from \"react\";\nimport cx from \"classnames\";\nimport { type DateRange, DayPicker as ReactDatePicker, InternalModifier as DayModifier } from \"react-day-picker\";\nimport styles from \"./DatePicker.module.scss\";\nimport DatePickerHeader, { type DatePickerHeaderProps } from \"./DatePickerHeader\";\nimport { type DatePickerProps, type DatePickerRange } from \"./DatePicker.types\";\nimport {\n AddToRangeEnd,\n AddToRangeMiddle,\n AddToRangeStart,\n HalfRangeSelected,\n HoveredDayExists,\n RemoveFromRange,\n addToRange,\n addToRangeModifiers\n} from \"./utils\";\nimport { RangeDayContent } from \"./RangeDayContent\";\nimport { SingleDayContent } from \"./SingleDayContent\";\nimport { DayContentHoverContext, DayContentHoverProvider } from \"./DateContentHoverContext\";\n\nexport const DEFAULT_TIME = { hours: 9, minutes: 0 };\n\nconst MODIFIERS_CLASS_NAMES = {\n [DayModifier.Outside]: styles.datePickerDayOutside,\n [DayModifier.Selected]: styles.datePickerDaySelected,\n [DayModifier.Today]: styles.datePickerDayToday,\n [DayModifier.Disabled]: styles.datePickerDayDisabled,\n [DayModifier.RangeStart]: styles.datePickerDayRangeStart,\n [DayModifier.RangeEnd]: styles.datePickerDayRangeEnd,\n [DayModifier.RangeMiddle]: styles.datePickerDayRangeMiddle,\n [AddToRangeMiddle]: styles.datePickerAddToRangeMiddle,\n [AddToRangeStart]: styles.datePickerAddToRangeStart,\n [AddToRangeEnd]: styles.datePickerAddToRangeEnd,\n [RemoveFromRange]: styles.datePickerRemoveFromRange,\n [HoveredDayExists]: styles.datePickerHoveredDayExists,\n [HalfRangeSelected]: styles.datePickerHalfRangeSelected\n};\n\nconst DatePickerHeaderContext = createContext<DatePickerHeaderProps>({} as DatePickerHeaderProps);\n\nconst Caption = () => (\n <DatePickerHeaderContext.Consumer>{props => <DatePickerHeader {...props} />}</DatePickerHeaderContext.Consumer>\n);\n\nconst DatePicker: FC<DatePickerProps> = ({\n className,\n dayClassName,\n selectedDayClassName,\n id,\n \"data-testid\": dataTestId,\n mode = \"single\",\n date,\n endDate,\n onDateChange,\n firstDayOfWeek = 0,\n showWeekNumber,\n isDateDisabled,\n locale,\n nextButtonAriaLabel = \"Next\",\n prevButtonAriaLabel = \"Previous\",\n monthSelectionAriaLabel = \"Month\",\n yearSelectionAriaLabel = \"Year\",\n dropdownsClassName,\n intent = \"to\",\n dialogContainerSelector\n}) => {\n const selected = useMemo(() => (mode === \"single\" ? date : { from: date, to: endDate }), [date, endDate, mode]);\n const [displayMonth, setDisplayMonth] = useState(date || new Date());\n\n const prevDateRef = useRef<Date | undefined>();\n const prevEndDateRef = useRef<Date | undefined>();\n const lastChangeByInnerSelection = useRef(false);\n useEffect(() => {\n const dateChanged = +prevDateRef.current !== +date;\n const endDateChanged = +prevEndDateRef.current !== +endDate;\n const shouldSetDisplayMonth = !lastChangeByInnerSelection.current;\n\n if (dateChanged) {\n shouldSetDisplayMonth && date && setDisplayMonth(date);\n } else if (endDateChanged) {\n shouldSetDisplayMonth && endDate && setDisplayMonth(endDate);\n }\n\n prevDateRef.current = date;\n prevEndDateRef.current = endDate;\n lastChangeByInnerSelection.current = false;\n }, [date, endDate]);\n\n const onPickerDateChange = useCallback(\n (newValue: Date | DateRange, selectedDay: Date) => {\n lastChangeByInnerSelection.current = true;\n\n if (mode === \"range\") {\n const newRange = addToRange(selectedDay, selected as DateRange, intent);\n (onDateChange as (range: DatePickerRange) => void)({ date: newRange?.from, endDate: newRange?.to });\n } else {\n const newDate = newValue as Date;\n const { hours, minutes } = date ? { hours: date.getHours(), minutes: date.getMinutes() } : DEFAULT_TIME;\n newDate.setHours(hours, minutes);\n (onDateChange as (date: Date | undefined) => void)(newDate);\n }\n },\n [date, intent, mode, onDateChange, selected]\n );\n\n const DatePickerHeaderContextValue = useMemo<DatePickerHeaderProps>(\n () => ({\n setDisplayMonth,\n locale,\n nextButtonAriaLabel,\n prevButtonAriaLabel,\n monthSelectionAriaLabel,\n yearSelectionAriaLabel,\n dropdownsClassName,\n dialogContainerSelector\n }),\n [\n locale,\n monthSelectionAriaLabel,\n nextButtonAriaLabel,\n setDisplayMonth,\n prevButtonAriaLabel,\n yearSelectionAriaLabel,\n dropdownsClassName,\n dialogContainerSelector\n ]\n );\n\n const modifiersClassNames = useMemo(\n () => ({\n ...MODIFIERS_CLASS_NAMES,\n [DayModifier.Selected]: cx(MODIFIERS_CLASS_NAMES[DayModifier.Selected], selectedDayClassName)\n }),\n [selectedDayClassName]\n );\n\n const classNames = useMemo(\n () => ({\n months: styles.datePickerMonths,\n head: styles.datePickerHead,\n table: styles.datePickerTable,\n tbody: styles.datePickerBody,\n day: cx(styles.datePickerDay, dayClassName)\n }),\n [dayClassName]\n );\n\n return (\n <div\n id={id}\n className={cx(styles.datePicker, { [styles.withWeekNumber]: showWeekNumber }, className)}\n data-testid={dataTestId}\n data-vibe=\"DatePicker\"\n >\n <DayContentHoverProvider>\n <DatePickerHeaderContext.Provider value={DatePickerHeaderContextValue}>\n <DayContentHoverContext.Consumer>\n {({ hover }) => {\n const modifiers = addToRangeModifiers(hover, selected as DateRange, intent);\n return (\n <ReactDatePicker\n fixedWeeks\n showOutsideDays\n showWeekNumber={showWeekNumber}\n mode={mode as \"single\"} // cast to avoid type errors from ReactDatePicker\n required\n weekStartsOn={firstDayOfWeek}\n disabled={isDateDisabled}\n selected={selected as Date} // cast to avoid type errors from ReactDatePicker\n onSelect={onPickerDateChange}\n month={displayMonth}\n onMonthChange={setDisplayMonth}\n components={{ Caption, DayContent: mode === \"single\" ? SingleDayContent : RangeDayContent }}\n classNames={classNames}\n modifiers={modifiers}\n modifiersClassNames={modifiersClassNames}\n locale={locale}\n />\n );\n }}\n </DayContentHoverContext.Consumer>\n </DatePickerHeaderContext.Provider>\n </DayContentHoverProvider>\n </div>\n );\n};\n\nexport default DatePicker;\n"],"names":["DEFAULT_TIME","hours","minutes","MODIFIERS_CLASS_NAMES","DayModifier","Outside","styles","datePickerDayOutside","Selected","datePickerDaySelected","Today","datePickerDayToday","Disabled","datePickerDayDisabled","RangeStart","datePickerDayRangeStart","RangeEnd","datePickerDayRangeEnd","RangeMiddle","datePickerDayRangeMiddle","AddToRangeMiddle","datePickerAddToRangeMiddle","AddToRangeStart","datePickerAddToRangeStart","AddToRangeEnd","datePickerAddToRangeEnd","RemoveFromRange","datePickerRemoveFromRange","HoveredDayExists","datePickerHoveredDayExists","HalfRangeSelected","datePickerHalfRangeSelected","DatePickerHeaderContext","createContext","Caption","React","createElement","Consumer","props","DatePickerHeader","DatePicker","className","dayClassName","selectedDayClassName","id","dataTestId","mode","date","endDate","onDateChange","firstDayOfWeek","showWeekNumber","isDateDisabled","locale","nextButtonAriaLabel","prevButtonAriaLabel","monthSelectionAriaLabel","yearSelectionAriaLabel","dropdownsClassName","intent","dialogContainerSelector","selected","useMemo","from","to","displayMonth","setDisplayMonth","useState","Date","prevDateRef","useRef","prevEndDateRef","lastChangeByInnerSelection","useEffect","endDateChanged","current","shouldSetDisplayMonth","onPickerDateChange","useCallback","newValue","selectedDay","newRange","addToRange","newDate","getHours","getMinutes","setHours","DatePickerHeaderContextValue","modifiersClassNames","Object","assign","cx","classNames","months","datePickerMonths","head","datePickerHead","table","datePickerTable","tbody","datePickerBody","day","datePickerDay","datePicker","withWeekNumber","DayContentHoverProvider","Provider","value","DayContentHoverContext","hover","modifiers","addToRangeModifiers","ReactDatePicker","fixedWeeks","showOutsideDays","required","weekStartsOn","disabled","onSelect","month","onMonthChange","components","DayContent","SingleDayContent","RangeDayContent"],"mappings":"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"}
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
var e={datePicker:"datePicker_bf75fc73ed",datePickerMonths:"datePickerMonths_29f4b5a057",withWeekNumber:"withWeekNumber_a5ad281a86",datePickerHead:"datePickerHead_a341e64e0c",datePickerBody:"datePickerBody_a341e64e0c",datePickerTable:"datePickerTable_9b954bb3d0",datePickerDay:"datePickerDay_86a4b03509",datePickerDayContent:"datePickerDayContent_9f006d2c0f",datePickerDayDisabled:"datePickerDayDisabled_af3b838d0a",datePickerAddToRangeStart:"datePickerAddToRangeStart_b69e898f0e",datePickerAddToRangeEnd:"datePickerAddToRangeEnd_ac6f59c328",datePickerAddToRangeMiddle:"datePickerAddToRangeMiddle_98c2d0392a",datePickerDayRangeStart:"datePickerDayRangeStart_1c67b236e9",datePickerDayRangeEnd:"datePickerDayRangeEnd_8e1d884565",datePickerDayOutside:"datePickerDayOutside_d765fcfcb4",datePickerDaySelected:"datePickerDaySelected_8e1d884565",datePickerDayRangeMiddle:"datePickerDayRangeMiddle_04f0cd241f",datePickerRemoveFromRange:"datePickerRemoveFromRange_621ddd6b64",datePickerHalfRangeSelected:"datePickerHalfRangeSelected_17c06b983e"};!function(e){const a="s_id-601bce29f4a5_4_0_0";if("undefined"!=typeof document){const d=document.head||document.getElementsByTagName("head")[0];if(d.querySelector("#"+a))return;const r=document.createElement("style");r.id=a,d.firstChild?d.insertBefore(r,d.firstChild):d.appendChild(r),r.appendChild(document.createTextNode(e))}else globalThis.injectedStyles&&(globalThis.injectedStyles[a]=e)}('/* stylelint-disable */\n/* stylelint-enable */\n.datePicker_bf75fc73ed {\n --day-picker-header-height: 34px;\n --day-picker-content-height: 234px;\n --day-picker-day-width: 30px;\n --day-picker-day-height: 30px;\n --day-picker-days-horizontal-gap: 4px;\n --day-picker-days-vertical-gap: 2px;\n --day-picker-day-change-range: var(--primary-surface-color);\n}\n.datePicker_bf75fc73ed .datePickerMonths_29f4b5a057 {\n display: flex;\n flex-direction: row;\n gap: var(--space-16);\n align-items: flex-start;\n}\n.datePicker_bf75fc73ed.withWeekNumber_a5ad281a86 {\n --day-picker-days-horizontal-gap: 2px;\n width: 284px;\n margin: 0;\n}\n.datePicker_bf75fc73ed.withWeekNumber_a5ad281a86 .datePickerHead_a341e64e0c td:first-child {\n width: var(--day-picker-day-width);\n border-start-start-radius: var(--border-radius-medium);\n border-start-end-radius: var(--border-radius-medium);\n background-color: var(--primary-background-hover-color);\n}\n.datePicker_bf75fc73ed.withWeekNumber_a5ad281a86 .datePickerHead_a341e64e0c td:first-child::after {\n color: var(--secondary-text-color);\n font: var(--font-text2-normal);\n display: flex;\n justify-content: center;\n content: "No.";\n}\n.datePicker_bf75fc73ed.withWeekNumber_a5ad281a86 .datePickerBody_a341e64e0c td:first-child {\n background-color: var(--primary-background-hover-color);\n}\n.datePicker_bf75fc73ed.withWeekNumber_a5ad281a86 .datePickerBody_a341e64e0c tr:last-child td:first-child {\n border-end-start-radius: var(--border-radius-medium);\n border-end-end-radius: var(--border-radius-medium);\n}\n.datePicker_bf75fc73ed .datePickerTable_9b954bb3d0 {\n margin-top: var(--space-8);\n border-collapse: collapse;\n height: var(--day-picker-content-height);\n}\n.datePicker_bf75fc73ed .datePickerHead_a341e64e0c th {\n color: var(--secondary-text-color);\n font: var(--font-text2-normal);\n padding-block: var(--space-2);\n text-align: center;\n height: var(--day-picker-day-height);\n}\n.datePicker_bf75fc73ed .datePickerBody_a341e64e0c td {\n color: var(--secondary-text-color);\n font: var(--font-text2-normal);\n text-align: center;\n padding: 0;\n}\n.datePicker_bf75fc73ed .datePickerBody_a341e64e0c .datePickerDay_86a4b03509 {\n color: var(--primary-text-color);\n font: var(--font-text2-normal);\n width: var(--day-picker-day-width);\n height: var(--day-picker-day-height);\n background: none;\n border: none;\n cursor: pointer;\n border-radius: var(--border-radius-small);\n margin: var(--day-picker-days-vertical-gap) var(--day-picker-days-horizontal-gap);\n padding: 0;\n}\n.datePicker_bf75fc73ed .datePickerBody_a341e64e0c .datePickerDay_86a4b03509 .datePickerDayContent_9f006d2c0f {\n display: flex;\n justify-content: center;\n align-items: center;\n width: 100%;\n height: 100%;\n border-radius: var(--border-radius-small);\n}\n.datePicker_bf75fc73ed .datePickerBody_a341e64e0c .datePickerDay_86a4b03509:focus-visible {\n outline: none;\n}\n.datePicker_bf75fc73ed .datePickerBody_a341e64e0c .datePickerDay_86a4b03509:focus-visible .datePickerDayContent_9f006d2c0f {\n outline: 2px solid var(--primary-color);\n}\n.datePicker_bf75fc73ed .datePickerBody_a341e64e0c .datePickerDay_86a4b03509.datePickerDayDisabled_af3b838d0a {\n color: var(--disabled-text-color);\n cursor: not-allowed;\n}\n.datePicker_bf75fc73ed .datePickerBody_a341e64e0c .datePickerDay_86a4b03509:not(.datePickerDayDisabled_af3b838d0a):not(.datePickerAddToRangeStart_b69e898f0e):not(.datePickerAddToRangeEnd_ac6f59c328):not(.datePickerAddToRangeMiddle_98c2d0392a):not(.datePickerDayRangeStart_1c67b236e9):not(.datePickerDayRangeEnd_8e1d884565) .datePickerDayContent_9f006d2c0f:hover {\n background: var(--primary-background-hover-color);\n}\n.datePicker_bf75fc73ed .datePickerBody_a341e64e0c .datePickerDay_86a4b03509.datePickerDayOutside_d765fcfcb4 {\n color: var(--disabled-text-color);\n}\n.datePicker_bf75fc73ed .datePickerBody_a341e64e0c .datePickerDay_86a4b03509.datePickerDaySelected_8e1d884565:not(.datePickerDayRangeMiddle_04f0cd241f):not(.datePickerRemoveFromRange_621ddd6b64) {\n background: var(--primary-color);\n color: var(--text-color-on-primary);\n}\n.datePicker_bf75fc73ed .datePickerBody_a341e64e0c .datePickerDay_86a4b03509.datePickerDayRangeStart_1c67b236e9:not(.datePickerDayRangeEnd_8e1d884565):not(.datePickerRemoveFromRange_621ddd6b64), .datePicker_bf75fc73ed .datePickerBody_a341e64e0c .datePickerDay_86a4b03509.datePickerDayRangeEnd_8e1d884565:not(.datePickerDayRangeStart_1c67b236e9):not(.datePickerRemoveFromRange_621ddd6b64) {\n background: var(--primary-color);\n width: calc(var(--day-picker-day-width) + var(--day-picker-days-horizontal-gap));\n}\n.datePicker_bf75fc73ed .datePickerBody_a341e64e0c .datePickerDay_86a4b03509.datePickerDayRangeStart_1c67b236e9.datePickerRemoveFromRange_621ddd6b64, .datePicker_bf75fc73ed .datePickerBody_a341e64e0c .datePickerDay_86a4b03509.datePickerDayRangeEnd_8e1d884565.datePickerRemoveFromRange_621ddd6b64 {\n background: var(--primary-color);\n color: var(--text-color-on-primary);\n}\n.datePicker_bf75fc73ed .datePickerBody_a341e64e0c .datePickerDay_86a4b03509.datePickerDayRangeStart_1c67b236e9.datePickerRemoveFromRange_621ddd6b64:not(.datePickerDayRangeEnd_8e1d884565), .datePicker_bf75fc73ed .datePickerBody_a341e64e0c .datePickerDay_86a4b03509.datePickerDayRangeEnd_8e1d884565.datePickerRemoveFromRange_621ddd6b64:not(.datePickerDayRangeStart_1c67b236e9) {\n width: calc(var(--day-picker-day-width) + var(--day-picker-days-horizontal-gap));\n}\n.datePicker_bf75fc73ed .datePickerBody_a341e64e0c .datePickerDay_86a4b03509.datePickerAddToRangeStart_b69e898f0e, .datePicker_bf75fc73ed .datePickerBody_a341e64e0c .datePickerDay_86a4b03509.datePickerDayRangeStart_1c67b236e9:not(.datePickerDayRangeEnd_8e1d884565) {\n margin-inline-end: 0;\n border-start-end-radius: 0;\n border-end-end-radius: 0;\n}\n.datePicker_bf75fc73ed .datePickerBody_a341e64e0c .datePickerDay_86a4b03509.datePickerAddToRangeEnd_ac6f59c328, .datePicker_bf75fc73ed .datePickerBody_a341e64e0c .datePickerDay_86a4b03509.datePickerDayRangeEnd_8e1d884565:not(.datePickerDayRangeStart_1c67b236e9) {\n margin-inline-start: 0;\n border-start-start-radius: 0;\n border-end-start-radius: 0;\n}\n.datePicker_bf75fc73ed .datePickerBody_a341e64e0c .datePickerDay_86a4b03509.datePickerAddToRangeStart_b69e898f0e, .datePicker_bf75fc73ed .datePickerBody_a341e64e0c .datePickerDay_86a4b03509.datePickerAddToRangeEnd_ac6f59c328, .datePicker_bf75fc73ed .datePickerBody_a341e64e0c .datePickerDay_86a4b03509.datePickerAddToRangeMiddle_98c2d0392a {\n margin: var(--day-picker-days-vertical-gap) 0;\n}\n.datePicker_bf75fc73ed .datePickerBody_a341e64e0c .datePickerDay_86a4b03509.datePickerAddToRangeStart_b69e898f0e:not(.datePickerDayRangeStart_1c67b236e9):not(.datePickerDayRangeEnd_8e1d884565), .datePicker_bf75fc73ed .datePickerBody_a341e64e0c .datePickerDay_86a4b03509.datePickerAddToRangeEnd_ac6f59c328:not(.datePickerDayRangeStart_1c67b236e9):not(.datePickerDayRangeEnd_8e1d884565), .datePicker_bf75fc73ed .datePickerBody_a341e64e0c .datePickerDay_86a4b03509.datePickerAddToRangeMiddle_98c2d0392a, .datePicker_bf75fc73ed .datePickerBody_a341e64e0c .datePickerDay_86a4b03509.datePickerDayRangeMiddle_04f0cd241f:not(.datePickerAddToRangeStart_b69e898f0e):not(.datePickerAddToRangeEnd_ac6f59c328) {\n background-color: var(--primary-selected-color);\n border: var(--day-picker-days-horizontal-gap) var(--border-style) var(--primary-selected-color);\n border-top: none;\n border-bottom: none;\n width: calc(var(--day-picker-day-width) + 2 * var(--day-picker-days-horizontal-gap));\n}\n.datePicker_bf75fc73ed .datePickerBody_a341e64e0c .datePickerDay_86a4b03509.datePickerAddToRangeMiddle_98c2d0392a, .datePicker_bf75fc73ed .datePickerBody_a341e64e0c .datePickerDay_86a4b03509.datePickerDayRangeMiddle_04f0cd241f:not(.datePickerAddToRangeStart_b69e898f0e):not(.datePickerAddToRangeEnd_ac6f59c328) {\n background: var(--primary-selected-color);\n margin: var(--day-picker-days-vertical-gap) 0;\n border-radius: 0;\n}\n.datePicker_bf75fc73ed .datePickerBody_a341e64e0c .datePickerDay_86a4b03509.datePickerRemoveFromRange_621ddd6b64:not(.datePickerDayRangeStart_1c67b236e9):not(.datePickerDayRangeEnd_8e1d884565), .datePicker_bf75fc73ed .datePickerBody_a341e64e0c .datePickerDay_86a4b03509.datePickerAddToRangeStart_b69e898f0e:not(.datePickerDayRangeMiddle_04f0cd241f):not(.datePickerDayRangeEnd_8e1d884565), .datePicker_bf75fc73ed .datePickerBody_a341e64e0c .datePickerDay_86a4b03509.datePickerAddToRangeEnd_ac6f59c328:not(.datePickerDayRangeMiddle_04f0cd241f):not(.datePickerDayRangeStart_1c67b236e9), .datePicker_bf75fc73ed .datePickerBody_a341e64e0c .datePickerDay_86a4b03509.datePickerAddToRangeMiddle_98c2d0392a {\n background: var(--day-picker-day-change-range);\n border-color: var(--day-picker-day-change-range);\n}\n.datePicker_bf75fc73ed .datePickerBody_a341e64e0c tr td:first-child .datePickerDay_86a4b03509.datePickerDayRangeMiddle_04f0cd241f, .datePicker_bf75fc73ed .datePickerBody_a341e64e0c tr td:first-child .datePickerDay_86a4b03509.datePickerAddToRangeStart_b69e898f0e:not(.datePickerDayRangeStart_1c67b236e9):not(.datePickerDayRangeEnd_8e1d884565), .datePicker_bf75fc73ed .datePickerBody_a341e64e0c tr td:first-child .datePickerDay_86a4b03509.datePickerAddToRangeMiddle_98c2d0392a, .datePicker_bf75fc73ed .datePickerBody_a341e64e0c tr td:first-child .datePickerDay_86a4b03509.datePickerAddToRangeEnd_ac6f59c328:not(.datePickerDayRangeStart_1c67b236e9):not(.datePickerDayRangeEnd_8e1d884565) {\n border: none;\n width: calc(var(--day-picker-day-width) + var(--day-picker-days-horizontal-gap));\n margin-inline-start: var(--day-picker-days-horizontal-gap);\n border-inline-end: var(--day-picker-days-horizontal-gap) solid var(--primary-selected-color);\n border-start-start-radius: var(--border-radius-small);\n border-end-start-radius: var(--border-radius-small);\n}\n.datePicker_bf75fc73ed .datePickerBody_a341e64e0c tr td:first-child .datePickerDay_86a4b03509.datePickerRemoveFromRange_621ddd6b64 {\n border-color: var(--day-picker-day-change-range);\n}\n.datePicker_bf75fc73ed .datePickerBody_a341e64e0c tr td:first-child .datePickerDay_86a4b03509.datePickerAddToRangeEnd_ac6f59c328, .datePicker_bf75fc73ed .datePickerBody_a341e64e0c tr td:first-child .datePickerDay_86a4b03509.datePickerDayRangeEnd_8e1d884565:not(.datePickerDayRangeStart_1c67b236e9) {\n margin-inline-end: 0;\n}\n.datePicker_bf75fc73ed .datePickerBody_a341e64e0c tr td:last-child .datePickerDay_86a4b03509.datePickerDayRangeMiddle_04f0cd241f, .datePicker_bf75fc73ed .datePickerBody_a341e64e0c tr td:last-child .datePickerDay_86a4b03509.datePickerAddToRangeStart_b69e898f0e:not(.datePickerDayRangeStart_1c67b236e9):not(.datePickerDayRangeEnd_8e1d884565), .datePicker_bf75fc73ed .datePickerBody_a341e64e0c tr td:last-child .datePickerDay_86a4b03509.datePickerAddToRangeMiddle_98c2d0392a, .datePicker_bf75fc73ed .datePickerBody_a341e64e0c tr td:last-child .datePickerDay_86a4b03509.datePickerAddToRangeEnd_ac6f59c328:not(.datePickerDayRangeStart_1c67b236e9):not(.datePickerDayRangeEnd_8e1d884565) {\n border: none;\n width: calc(var(--day-picker-day-width) + var(--day-picker-days-horizontal-gap));\n margin-inline-end: var(--day-picker-days-horizontal-gap);\n border-inline-start: var(--day-picker-days-horizontal-gap) solid var(--primary-selected-color);\n border-start-end-radius: var(--border-radius-small);\n border-end-end-radius: var(--border-radius-small);\n}\n.datePicker_bf75fc73ed .datePickerBody_a341e64e0c tr td:last-child .datePickerDay_86a4b03509.datePickerRemoveFromRange_621ddd6b64 {\n border-color: var(--day-picker-day-change-range);\n}\n.datePicker_bf75fc73ed .datePickerBody_a341e64e0c tr td:last-child .datePickerDay_86a4b03509.datePickerAddToRangeStart_b69e898f0e, .datePicker_bf75fc73ed .datePickerBody_a341e64e0c tr td:last-child .datePickerDay_86a4b03509.datePickerDayRangeStart_1c67b236e9:not(.datePickerDayRangeEnd_8e1d884565) {\n margin-inline-start: 0;\n}\n.datePicker_bf75fc73ed .datePickerBody_a341e64e0c tr td:first-child .datePickerDay_86a4b03509.datePickerAddToRangeStart_b69e898f0e:not(.datePickerDayRangeMiddle_04f0cd241f), .datePicker_bf75fc73ed .datePickerBody_a341e64e0c tr td:first-child .datePickerDay_86a4b03509.datePickerAddToRangeMiddle_98c2d0392a, .datePicker_bf75fc73ed .datePickerBody_a341e64e0c tr td:first-child .datePickerDay_86a4b03509.datePickerAddToRangeEnd_ac6f59c328:not(.datePickerDayRangeMiddle_04f0cd241f),\n.datePicker_bf75fc73ed .datePickerBody_a341e64e0c tr td:last-child .datePickerDay_86a4b03509.datePickerAddToRangeStart_b69e898f0e:not(.datePickerDayRangeMiddle_04f0cd241f),\n.datePicker_bf75fc73ed .datePickerBody_a341e64e0c tr td:last-child .datePickerDay_86a4b03509.datePickerAddToRangeMiddle_98c2d0392a,\n.datePicker_bf75fc73ed .datePickerBody_a341e64e0c tr td:last-child .datePickerDay_86a4b03509.datePickerAddToRangeEnd_ac6f59c328:not(.datePickerDayRangeMiddle_04f0cd241f) {\n border-color: var(--day-picker-day-change-range);\n}\n.datePicker_bf75fc73ed .datePickerBody_a341e64e0c tr td:first-child .datePickerDay_86a4b03509.datePickerDaySelected_8e1d884565.datePickerDayRangeEnd_8e1d884565.datePickerAddToRangeStart_b69e898f0e,\n.datePicker_bf75fc73ed .datePickerBody_a341e64e0c tr td:last-child .datePickerDay_86a4b03509.datePickerDaySelected_8e1d884565.datePickerDayRangeEnd_8e1d884565.datePickerAddToRangeStart_b69e898f0e {\n border-inline-start-width: 0;\n}\n.datePicker_bf75fc73ed .datePickerBody_a341e64e0c tr td:first-child .datePickerDay_86a4b03509.datePickerDaySelected_8e1d884565.datePickerDayRangeStart_1c67b236e9.datePickerAddToRangeEnd_ac6f59c328,\n.datePicker_bf75fc73ed .datePickerBody_a341e64e0c tr td:last-child .datePickerDay_86a4b03509.datePickerDaySelected_8e1d884565.datePickerDayRangeStart_1c67b236e9.datePickerAddToRangeEnd_ac6f59c328 {\n border-inline-end-width: 0;\n}\n.datePicker_bf75fc73ed .datePickerBody_a341e64e0c .datePickerDaySelected_8e1d884565.datePickerDayRangeEnd_8e1d884565.datePickerAddToRangeStart_b69e898f0e {\n border-radius: var(--border-radius-small) !important;\n border-color: var(--primary-color) !important;\n background-color: var(--primary-color) !important;\n}\n.datePicker_bf75fc73ed .datePickerBody_a341e64e0c .datePickerDaySelected_8e1d884565.datePickerDayRangeEnd_8e1d884565.datePickerAddToRangeStart_b69e898f0e:not(.datePickerHalfRangeSelected_17c06b983e) {\n margin-inline-start: calc(var(--day-picker-days-horizontal-gap) * -1);\n}\n.datePicker_bf75fc73ed .datePickerBody_a341e64e0c .datePickerDaySelected_8e1d884565.datePickerDayRangeStart_1c67b236e9.datePickerAddToRangeEnd_ac6f59c328 {\n border-radius: var(--border-radius-small) !important;\n border-color: var(--primary-color) !important;\n background-color: var(--primary-color) !important;\n}\n.datePicker_bf75fc73ed .datePickerBody_a341e64e0c .datePickerDaySelected_8e1d884565.datePickerDayRangeStart_1c67b236e9.datePickerAddToRangeEnd_ac6f59c328:not(.datePickerHalfRangeSelected_17c06b983e) {\n margin-inline-end: calc(var(--day-picker-days-horizontal-gap) * -1);\n}');export{e as default};
|
|
2
|
+
//# sourceMappingURL=DatePicker.module.scss.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"DatePicker.module.scss.js","sources":[],"sourcesContent":[],"names":[],"mappings":""}
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
import type { VibeComponentProps } from "@vibe/shared";
|
|
2
|
+
import type { Intent } from "./utils";
|
|
3
|
+
interface DatePickerBaseProps extends VibeComponentProps {
|
|
4
|
+
mode?: "single" | "range";
|
|
5
|
+
date: Date | undefined;
|
|
6
|
+
endDate?: Date | undefined;
|
|
7
|
+
firstDayOfWeek?: 0 | 1 | 2 | 3 | 4 | 5 | 6;
|
|
8
|
+
showWeekNumber?: boolean;
|
|
9
|
+
isDateDisabled?: (date: Date) => boolean;
|
|
10
|
+
locale?: Locale;
|
|
11
|
+
monthSelectionAriaLabel?: string;
|
|
12
|
+
yearSelectionAriaLabel?: string;
|
|
13
|
+
nextButtonAriaLabel?: string;
|
|
14
|
+
prevButtonAriaLabel?: string;
|
|
15
|
+
dayClassName?: string;
|
|
16
|
+
selectedDayClassName?: string;
|
|
17
|
+
dropdownsClassName?: string;
|
|
18
|
+
intent?: Intent;
|
|
19
|
+
dialogContainerSelector?: string;
|
|
20
|
+
}
|
|
21
|
+
interface DatePickerSingleProps extends DatePickerBaseProps {
|
|
22
|
+
mode?: "single";
|
|
23
|
+
onDateChange: (date: Date | undefined) => void;
|
|
24
|
+
}
|
|
25
|
+
export type DatePickerRange = {
|
|
26
|
+
date: Date | undefined;
|
|
27
|
+
endDate: Date | undefined;
|
|
28
|
+
};
|
|
29
|
+
interface DatePickerRangeProps extends DatePickerBaseProps {
|
|
30
|
+
mode: "range";
|
|
31
|
+
onDateChange: (range: DatePickerRange) => void;
|
|
32
|
+
}
|
|
33
|
+
export type DatePickerProps = DatePickerSingleProps | DatePickerRangeProps;
|
|
34
|
+
export {};
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
import { type FC } from "react";
|
|
2
|
+
import { type Locale } from "date-fns";
|
|
3
|
+
export interface DatePickerHeaderProps {
|
|
4
|
+
setDisplayMonth: (displayMonth: Date) => void;
|
|
5
|
+
monthSelectionAriaLabel?: string;
|
|
6
|
+
yearSelectionAriaLabel?: string;
|
|
7
|
+
nextButtonAriaLabel?: string;
|
|
8
|
+
prevButtonAriaLabel?: string;
|
|
9
|
+
locale?: Locale;
|
|
10
|
+
className?: string;
|
|
11
|
+
dropdownsClassName?: string;
|
|
12
|
+
dialogContainerSelector?: string;
|
|
13
|
+
}
|
|
14
|
+
declare const DatePickerHeader: FC<DatePickerHeaderProps>;
|
|
15
|
+
export default DatePickerHeader;
|
|
16
|
+
export declare function getYearButtonLabel(displayMonth: Date, locale: Locale): string;
|
|
17
|
+
export declare function getMonthButtonLabel(displayMonth: Date, locale: Locale): string;
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
import e,{useCallback as a,useMemo as t}from"react";import o from"classnames";import{useDayPicker as r,useNavigation as l}from"react-day-picker";import{IconButton as n}from"@vibe/icon-button";import{Flex as s}from"@vibe/layout";import{Dropdown as i}from"@vibe/dropdown";import{DropdownChevronLeft as m,DropdownChevronRight as c}from"@vibe/icons";import u from"./DatePickerHeader.module.scss.js";import{useMonthsOptionItems as p,useYearsOptionItems as d}from"./datePickerHooks.js";import{format as b}from"date-fns";const v=({setDisplayMonth:b,monthSelectionAriaLabel:v,yearSelectionAriaLabel:y,nextButtonAriaLabel:g,prevButtonAriaLabel:k,locale:M,className:D})=>{const{month:w}=r(),{goToMonth:E,nextMonth:j,previousMonth:B}=l(),C=a((()=>E(j)),[E,j]),N=a((()=>E(B)),[E,B]),z=p({locale:M}),A=d({locale:M}),L=t((()=>z.map((e=>Object.assign(Object.assign({},e),{value:e.id})))),[z]),O=t((()=>A.map((e=>Object.assign(Object.assign({},e),{value:e.id})))),[A]),x=t((()=>h(w,M)),[w,M]),H=t((()=>f(w,M)),[w,M]),P=a((e=>{const a=e.value,t=new Date(w);t.setMonth(+a),b(t)}),[w,b]),F=a((e=>{const a=e.value,t=new Date(w);t.setFullYear(+a),b(t)}),[w,b]),R=t((()=>L.find((e=>e.value===""+w.getMonth()))),[L,w]),S=t((()=>O.find((e=>e.value===""+w.getFullYear()))),[O,w]);return e.createElement("div",{className:o(u.datePickerHeader,D)},e.createElement(s,{gap:"small"},e.createElement(i,{className:u.monthButtonDropdown,"aria-label":v,options:L,value:R,onChange:P,menuWrapperClassName:u.monthButtonDropdown,size:"small",valueRenderer:e=>x,searchable:!1,clearable:!1,borderless:!0}),e.createElement(i,{className:u.yearButtonDropdown,"aria-label":y,options:O,value:S,onChange:F,menuWrapperClassName:u.yearButtonDropdown,size:"small",valueRenderer:e=>H,searchable:!1,clearable:!1,borderless:!0})),e.createElement(s,null,e.createElement(n,{kind:"tertiary",size:"small","aria-label":k,onClick:N,icon:m}),e.createElement(n,{kind:"tertiary",size:"small","aria-label":g,onClick:C,icon:c})))};function f(e,a){return b(e,"yyyy",{locale:a})}function h(e,a){return b(e,"MMM",{locale:a})}export{v as default,h as getMonthButtonLabel,f as getYearButtonLabel};
|
|
2
|
+
//# sourceMappingURL=DatePickerHeader.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"DatePickerHeader.js","sources":["../../src/DatePicker/DatePickerHeader.tsx"],"sourcesContent":["import React, { type FC, useCallback, useMemo } from \"react\";\nimport cx from \"classnames\";\nimport { useDayPicker, useNavigation } from \"react-day-picker\";\nimport { IconButton } from \"@vibe/icon-button\";\nimport { Flex } from \"@vibe/layout\";\nimport { Dropdown } from \"@vibe/dropdown\";\nimport { DropdownChevronRight, DropdownChevronLeft } from \"@vibe/icons\";\nimport styles from \"./DatePickerHeader.module.scss\";\nimport { useMonthsOptionItems, useYearsOptionItems, type DatePickerDropdownItem } from \"./datePickerHooks\";\nimport { format, type Locale } from \"date-fns\";\n\nexport interface DatePickerHeaderProps {\n setDisplayMonth: (displayMonth: Date) => void;\n monthSelectionAriaLabel?: string;\n yearSelectionAriaLabel?: string;\n nextButtonAriaLabel?: string;\n prevButtonAriaLabel?: string;\n locale?: Locale;\n className?: string;\n dropdownsClassName?: string;\n dialogContainerSelector?: string;\n}\n\nconst DatePickerHeader: FC<DatePickerHeaderProps> = ({\n setDisplayMonth,\n monthSelectionAriaLabel,\n yearSelectionAriaLabel,\n nextButtonAriaLabel,\n prevButtonAriaLabel,\n locale,\n className,\n dialogContainerSelector: _dialogContainerSelector\n}) => {\n const { month: displayMonth } = useDayPicker();\n const { goToMonth, nextMonth, previousMonth } = useNavigation();\n const goToNextMonth = useCallback(() => goToMonth(nextMonth), [goToMonth, nextMonth]);\n const goToPreviousMonth = useCallback(() => goToMonth(previousMonth), [goToMonth, previousMonth]);\n const monthsData = useMonthsOptionItems({ locale });\n const yearsData = useYearsOptionItems({ locale });\n\n const months = useMemo(() => monthsData.map(item => ({ ...item, value: item.id })), [monthsData]);\n const years = useMemo(() => yearsData.map(item => ({ ...item, value: item.id })), [yearsData]);\n const monthButtonLabel = useMemo(() => getMonthButtonLabel(displayMonth, locale), [displayMonth, locale]);\n const yearsButtonLabel = useMemo(() => getYearButtonLabel(displayMonth, locale), [displayMonth, locale]);\n\n const onMonthSelect = useCallback(\n (option: DatePickerDropdownItem) => {\n const month = option.value;\n const date = new Date(displayMonth);\n date.setMonth(+month);\n setDisplayMonth(date);\n },\n [displayMonth, setDisplayMonth]\n );\n\n const onYearSelect = useCallback(\n (option: DatePickerDropdownItem) => {\n const year = option.value;\n const date = new Date(displayMonth);\n date.setFullYear(+year);\n setDisplayMonth(date);\n },\n [displayMonth, setDisplayMonth]\n );\n\n const selectedMonth = useMemo(\n () => months.find(month => month.value === displayMonth.getMonth().toString()),\n [months, displayMonth]\n );\n const selectedYear = useMemo(\n () => years.find(year => year.value === displayMonth.getFullYear().toString()),\n [years, displayMonth]\n );\n\n return (\n <div className={cx(styles.datePickerHeader, className)}>\n <Flex gap=\"small\">\n <Dropdown\n className={styles.monthButtonDropdown}\n aria-label={monthSelectionAriaLabel}\n options={months}\n value={selectedMonth}\n onChange={onMonthSelect}\n menuWrapperClassName={styles.monthButtonDropdown}\n size=\"small\"\n valueRenderer={(_option: DatePickerDropdownItem) => monthButtonLabel}\n searchable={false}\n clearable={false}\n borderless\n />\n <Dropdown\n className={styles.yearButtonDropdown}\n aria-label={yearSelectionAriaLabel}\n options={years}\n value={selectedYear}\n onChange={onYearSelect}\n menuWrapperClassName={styles.yearButtonDropdown}\n size=\"small\"\n valueRenderer={(_option: DatePickerDropdownItem) => yearsButtonLabel}\n searchable={false}\n clearable={false}\n borderless\n />\n </Flex>\n <Flex>\n <IconButton\n kind=\"tertiary\"\n size=\"small\"\n aria-label={prevButtonAriaLabel}\n onClick={goToPreviousMonth}\n icon={DropdownChevronLeft}\n />\n <IconButton\n kind=\"tertiary\"\n size=\"small\"\n aria-label={nextButtonAriaLabel}\n onClick={goToNextMonth}\n icon={DropdownChevronRight}\n />\n </Flex>\n </div>\n );\n};\n\nexport default DatePickerHeader;\n\nexport function getYearButtonLabel(displayMonth: Date, locale: Locale) {\n return format(displayMonth, \"yyyy\", { locale });\n}\n\nexport function getMonthButtonLabel(displayMonth: Date, locale: Locale) {\n return format(displayMonth, \"MMM\", { locale });\n}\n"],"names":["DatePickerHeader","setDisplayMonth","monthSelectionAriaLabel","yearSelectionAriaLabel","nextButtonAriaLabel","prevButtonAriaLabel","locale","className","month","displayMonth","useDayPicker","goToMonth","nextMonth","previousMonth","useNavigation","goToNextMonth","useCallback","goToPreviousMonth","monthsData","useMonthsOptionItems","yearsData","useYearsOptionItems","months","useMemo","map","item","Object","assign","value","id","years","monthButtonLabel","getMonthButtonLabel","yearsButtonLabel","getYearButtonLabel","onMonthSelect","option","date","Date","setMonth","onYearSelect","year","setFullYear","selectedMonth","find","getMonth","selectedYear","getFullYear","React","createElement","cx","styles","datePickerHeader","Flex","gap","Dropdown","monthButtonDropdown","options","onChange","menuWrapperClassName","size","valueRenderer","_option","searchable","clearable","borderless","yearButtonDropdown","IconButton","kind","onClick","icon","DropdownChevronLeft","DropdownChevronRight","format"],"mappings":"kgBAuBMA,MAAAA,EAA8CA,EAClDC,kBACAC,0BACAC,yBACAC,sBACAC,sBACAC,SACAC,gBAGA,MAAQC,MAAOC,GAAiBC,KAC1BC,UAAEA,EAASC,UAAEA,EAASC,cAAEA,GAAkBC,IAC1CC,EAAgBC,GAAY,IAAML,EAAUC,IAAY,CAACD,EAAWC,IACpEK,EAAoBD,GAAY,IAAML,EAAUE,IAAgB,CAACF,EAAWE,IAC5EK,EAAaC,EAAqB,CAAEb,WACpCc,EAAYC,EAAoB,CAAEf,WAElCgB,EAASC,GAAQ,IAAML,EAAWM,KAAIC,GAAcC,OAAAC,OAAAD,OAAAC,OAAA,CAAA,EAAAF,GAAM,CAAAG,MAAOH,EAAKI,QAAQ,CAACX,IAC/EY,EAAQP,GAAQ,IAAMH,EAAUI,KAAIC,GAAcC,OAAAC,OAAAD,OAAAC,OAAA,CAAA,EAAAF,GAAM,CAAAG,MAAOH,EAAKI,QAAQ,CAACT,IAC7EW,EAAmBR,GAAQ,IAAMS,EAAoBvB,EAAcH,IAAS,CAACG,EAAcH,IAC3F2B,EAAmBV,GAAQ,IAAMW,EAAmBzB,EAAcH,IAAS,CAACG,EAAcH,IAE1F6B,EAAgBnB,GACnBoB,IACC,MAAM5B,EAAQ4B,EAAOR,MACfS,EAAO,IAAIC,KAAK7B,GACtB4B,EAAKE,UAAU/B,GACfP,EAAgBoC,EAAK,GAEvB,CAAC5B,EAAcR,IAGXuC,EAAexB,GAClBoB,IACC,MAAMK,EAAOL,EAAOR,MACdS,EAAO,IAAIC,KAAK7B,GACtB4B,EAAKK,aAAaD,GAClBxC,EAAgBoC,EAAK,GAEvB,CAAC5B,EAAcR,IAGX0C,EAAgBpB,GACpB,IAAMD,EAAOsB,MAAKpC,GAASA,EAAMoB,QAAUnB,KAAaoC,cACxD,CAACvB,EAAQb,IAELqC,EAAevB,GACnB,IAAMO,EAAMc,MAAKH,GAAQA,EAAKb,QAAUnB,KAAasC,iBACrD,CAACjB,EAAOrB,IAGV,OACEuC,EAAKC,cAAA,MAAA,CAAA1C,UAAW2C,EAAGC,EAAOC,iBAAkB7C,IAC1CyC,EAAAC,cAACI,EAAI,CAACC,IAAI,SACRN,EAACC,cAAAM,GACChD,UAAW4C,EAAOK,oBACN,aAAAtD,EACZuD,QAASnC,EACTM,MAAOe,EACPe,SAAUvB,EACVwB,qBAAsBR,EAAOK,oBAC7BI,KAAK,QACLC,cAAgBC,GAAoC/B,EACpDgC,YAAY,EACZC,WAAW,EACXC,YACA,IACFjB,EAACC,cAAAM,GACChD,UAAW4C,EAAOe,mBACN,aAAA/D,EACZsD,QAAS3B,EACTF,MAAOkB,EACPY,SAAUlB,EACVmB,qBAAsBR,EAAOe,mBAC7BN,KAAK,QACLC,cAAgBC,GAAoC7B,EACpD8B,YAAY,EACZC,WAAW,EACXC,YAAU,KAGdjB,EAAAC,cAACI,EAAI,KACHL,EAAAC,cAACkB,EACC,CAAAC,KAAK,WACLR,KAAK,qBACOvD,EACZgE,QAASpD,EACTqD,KAAMC,IAERvB,EAACC,cAAAkB,GACCC,KAAK,WACLR,KAAK,QACO,aAAAxD,EACZiE,QAAStD,EACTuD,KAAME,KAGN,EAMM,SAAAtC,EAAmBzB,EAAoBH,GACrD,OAAOmE,EAAOhE,EAAc,OAAQ,CAAEH,UACxC,CAEgB,SAAA0B,EAAoBvB,EAAoBH,GACtD,OAAOmE,EAAOhE,EAAc,MAAO,CAAEH,UACvC"}
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
var e={monthButtonDropdown:"monthButtonDropdown_21461b5e9a",yearButtonDropdown:"yearButtonDropdown_77baae1d4f",datePickerHeader:"datePickerHeader_a604270d95"};!function(e){const t="s_id-a12251d5376d_4_0_0";if("undefined"!=typeof document){const n=document.head||document.getElementsByTagName("head")[0];if(n.querySelector("#"+t))return;const o=document.createElement("style");o.id=t,n.firstChild?n.insertBefore(o,n.firstChild):n.appendChild(o),o.appendChild(document.createTextNode(e))}else globalThis.injectedStyles&&(globalThis.injectedStyles[t]=e)}("/* stylelint-disable */\n/* stylelint-enable */\n.monthButtonDropdown_21461b5e9a {\n min-width: 70px;\n justify-content: space-between;\n}\n.yearButtonDropdown_77baae1d4f {\n justify-content: space-between;\n}\n.datePickerHeader_a604270d95 {\n font: var(--font-text2-normal);\n height: var(--day-picker-header-height);\n color: var(--primary-text-color);\n display: flex;\n flex-direction: row;\n align-items: center;\n justify-content: space-between;\n}\n.datePickerHeader_a604270d95 button:focus:not(:active), .datePickerHeader_a604270d95 button:focus-visible {\n box-shadow: 0 0 0 2px var(--primary-color);\n background: var(--primary-background-color) !important;\n}");export{e as default};
|
|
2
|
+
//# sourceMappingURL=DatePickerHeader.module.scss.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"DatePickerHeader.module.scss.js","sources":[],"sourcesContent":[],"names":[],"mappings":""}
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
import e from"classnames";import t,{useRef as r,useEffect as n}from"react";import{DayContent as o}from"react-day-picker";import{useDayContentHoverContext as s}from"./DateContentHoverContext.js";import m from"./DatePicker.module.scss.js";const a=a=>{const{date:i,activeModifiers:l}=a,{setHover:c}=s(),u=r(null);return n((()=>{const e=u.current.closest("td"),t=()=>c(i),r=()=>c(void 0);return null==e||e.addEventListener("mouseenter",t),null==e||e.addEventListener("mouseleave",r),()=>{null==e||e.removeEventListener("mouseenter",t),null==e||e.removeEventListener("mouseleave",r)}}),[i,c]),t.createElement("div",{ref:u,className:e(m.datePickerDayContent,l)},t.createElement(o,Object.assign({},a)))};export{a as RangeDayContent};
|
|
2
|
+
//# sourceMappingURL=RangeDayContent.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"RangeDayContent.js","sources":["../../src/DatePicker/RangeDayContent.tsx"],"sourcesContent":["import cx from \"classnames\";\nimport React, { useEffect, useRef } from \"react\";\nimport {\n type DayContentProps as DatePickerDayContentProps,\n DayContent as DatePickerDayContent\n} from \"react-day-picker\";\nimport { useDayContentHoverContext } from \"./DateContentHoverContext\";\nimport styles from \"./DatePicker.module.scss\";\n\nexport const RangeDayContent = (props: DatePickerDayContentProps) => {\n const { date, activeModifiers } = props;\n const { setHover } = useDayContentHoverContext();\n\n const ref = useRef<HTMLDivElement>(null);\n useEffect(() => {\n const td = ref.current.closest(\"td\");\n const onMouseEnter = () => setHover(date);\n const onMouseLeave = () => setHover(undefined);\n\n td?.addEventListener(\"mouseenter\", onMouseEnter);\n td?.addEventListener(\"mouseleave\", onMouseLeave);\n\n return () => {\n td?.removeEventListener(\"mouseenter\", onMouseEnter);\n td?.removeEventListener(\"mouseleave\", onMouseLeave);\n };\n }, [date, setHover]);\n\n return (\n <div ref={ref} className={cx(styles.datePickerDayContent, activeModifiers)}>\n <DatePickerDayContent {...props} />\n </div>\n );\n};\n"],"names":["RangeDayContent","props","date","activeModifiers","setHover","useDayContentHoverContext","ref","useRef","useEffect","td","current","closest","onMouseEnter","onMouseLeave","undefined","addEventListener","removeEventListener","React","createElement","className","cx","styles","datePickerDayContent","DatePickerDayContent","Object","assign"],"mappings":"6OASaA,MAAAA,EAAmBC,IAC9B,MAAMC,KAAEA,EAAIC,gBAAEA,GAAoBF,GAC5BG,SAAEA,GAAaC,IAEfC,EAAMC,EAAuB,MAenC,OAdAC,GAAU,KACR,MAAMC,EAAKH,EAAII,QAAQC,QAAQ,MACzBC,EAAeA,IAAMR,EAASF,GAC9BW,EAAeA,IAAMT,OAASU,GAKpC,OAHAL,SAAAA,EAAIM,iBAAiB,aAAcH,GACnCH,SAAAA,EAAIM,iBAAiB,aAAcF,GAE5B,KACLJ,SAAAA,EAAIO,oBAAoB,aAAcJ,GACtCH,SAAAA,EAAIO,oBAAoB,aAAcH,EAAa,CACpD,GACA,CAACX,EAAME,IAGRa,EAAAC,cAAA,MAAA,CAAKZ,IAAKA,EAAKa,UAAWC,EAAGC,EAAOC,qBAAsBnB,IACxDc,EAAAC,cAACK,EAAyBC,OAAAC,OAAA,CAAA,EAAAxB,IACtB"}
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
import e from"react";import{DayContent as t}from"react-day-picker";import r from"./DatePicker.module.scss.js";const a=a=>e.createElement("div",{className:r.datePickerDayContent},e.createElement(t,Object.assign({},a)));export{a as SingleDayContent};
|
|
2
|
+
//# sourceMappingURL=SingleDayContent.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"SingleDayContent.js","sources":["../../src/DatePicker/SingleDayContent.tsx"],"sourcesContent":["import React from \"react\";\nimport {\n type DayContentProps as DatePickerDayContentProps,\n DayContent as DatePickerDayContent\n} from \"react-day-picker\";\nimport styles from \"./DatePicker.module.scss\";\n\nexport const SingleDayContent = (dayContentProps: DatePickerDayContentProps) => (\n <div className={styles.datePickerDayContent}>\n <DatePickerDayContent {...dayContentProps} />\n </div>\n);\n"],"names":["SingleDayContent","dayContentProps","React","createElement","className","styles","datePickerDayContent","DatePickerDayContent","Object","assign"],"mappings":"8GAOO,MAAMA,EAAoBC,GAC/BC,EAAKC,cAAA,MAAA,CAAAC,UAAWC,EAAOC,sBACrBJ,EAAAC,cAACI,EAAyBC,OAAAC,OAAA,CAAA,EAAAR"}
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
import { type Locale } from "date-fns";
|
|
2
|
+
export interface DatePickerDropdownItem {
|
|
3
|
+
id: string;
|
|
4
|
+
label: string;
|
|
5
|
+
value: string;
|
|
6
|
+
}
|
|
7
|
+
export declare const useMonthsOptionItems: ({ locale }: {
|
|
8
|
+
locale?: Locale;
|
|
9
|
+
}) => {
|
|
10
|
+
id: string;
|
|
11
|
+
label: string;
|
|
12
|
+
}[];
|
|
13
|
+
export declare const useYearsOptionItems: ({ locale }: {
|
|
14
|
+
locale?: Locale;
|
|
15
|
+
}) => {
|
|
16
|
+
id: string;
|
|
17
|
+
label: string;
|
|
18
|
+
}[];
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
import{useMemo as e}from"react";import{format as l}from"date-fns";const t=[0,1,2,3,4,5,6,7,8,9,10,11],a=({locale:a})=>e((()=>t.map((e=>{const t=new Date;return t.setMonth(e,1),{id:""+e,label:l(t,"LLL",{locale:a})}}))),[a]),r=({locale:t})=>e((()=>Array.from({length:201},((e,l)=>{const t=new Date;return t.setFullYear(t.getFullYear()-100+l),t})).map((e=>({id:""+e.getFullYear(),label:l(e,"yyyy",{locale:t})})))),[t]);export{a as useMonthsOptionItems,r as useYearsOptionItems};
|
|
2
|
+
//# sourceMappingURL=datePickerHooks.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"datePickerHooks.js","sources":["../../src/DatePicker/datePickerHooks.tsx"],"sourcesContent":["import { useMemo } from \"react\";\nimport { format, type Locale } from \"date-fns\";\n\nexport interface DatePickerDropdownItem {\n id: string;\n label: string;\n value: string;\n}\n\nconst monthsIndexes = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11];\nexport const useMonthsOptionItems = ({ locale }: { locale?: Locale }) =>\n useMemo(\n () =>\n monthsIndexes.map(monthIndex => {\n const month = new Date();\n month.setMonth(monthIndex, 1);\n return { id: monthIndex.toString(), label: format(month, \"LLL\", { locale }) };\n }),\n [locale]\n );\n\n// returns a list of all years from 100 years ago to 100 years in the future\nconst YEARS_AGO = 100;\nconst YEARS_IN_FUTURE = 100;\nexport const useYearsOptionItems = ({ locale }: { locale?: Locale }) =>\n useMemo(\n () =>\n Array.from({ length: YEARS_AGO + YEARS_IN_FUTURE + 1 }, (_, i) => {\n const date = new Date();\n date.setFullYear(date.getFullYear() - YEARS_AGO + i);\n return date;\n }).map(year => ({\n id: year.getFullYear().toString(),\n label: format(year, \"yyyy\", { locale })\n })),\n [locale]\n );\n"],"names":["monthsIndexes","useMonthsOptionItems","locale","useMemo","map","monthIndex","month","Date","setMonth","id","label","format","useYearsOptionItems","Array","from","length","YEARS_AGO","_","i","date","setFullYear","getFullYear","year"],"mappings":"kEASA,MAAMA,EAAgB,CAAC,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,IAC5CC,EAAuBA,EAAGC,YACrCC,GACE,IACEH,EAAcI,KAAIC,IAChB,MAAMC,EAAQ,IAAIC,KAElB,OADAD,EAAME,SAASH,EAAY,GACpB,CAAEI,GAAIJ,KAAuBK,MAAOC,EAAOL,EAAO,MAAO,CAAEJ,WAAW,KAEjF,CAACA,IAMQU,EAAsBA,EAAGV,YACpCC,GACE,IACEU,MAAMC,KAAK,CAAEC,OAAQC,MAAmC,CAACC,EAAGC,KAC1D,MAAMC,EAAO,IAAIZ,KAEjB,OADAY,EAAKC,YAAYD,EAAKE,cAPZ,IAOwCH,GAC3CC,CAAI,IACVf,KAAIkB,IAAS,CACdb,GAAIa,KAAKD,cACTX,MAAOC,EAAOW,EAAM,OAAQ,CAAEpB,gBAElC,CAACA"}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import { type DateRange, type Matcher } from "react-day-picker";
|
|
2
|
+
export type Intent = "to" | "from";
|
|
3
|
+
export declare function addToRange(day: Date, { from, to }: DateRange, intent: Intent): DateRange;
|
|
4
|
+
export declare const AddToRangeMiddle = "addToRangeMiddle";
|
|
5
|
+
export declare const AddToRangeStart = "addToRangeStart";
|
|
6
|
+
export declare const AddToRangeEnd = "addToRangeEnd";
|
|
7
|
+
export declare const RemoveFromRange = "removeFromRange";
|
|
8
|
+
export declare const HoveredDayExists = "HoveredDayExists";
|
|
9
|
+
export declare const HalfRangeSelected = "HalfRangeSelected";
|
|
10
|
+
type GetDateNextStateResult = typeof AddToRangeMiddle | typeof AddToRangeStart | typeof AddToRangeEnd | typeof RemoveFromRange | undefined;
|
|
11
|
+
export declare function addToRangeNextState(day: Date, dayToAdd: Date, range: DateRange, intent: Intent): GetDateNextStateResult;
|
|
12
|
+
export declare function addToRangeModifiers(dayToAdd: Date, range: DateRange, intent: Intent): Record<string, Matcher>;
|
|
13
|
+
export {};
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
import{isBefore as r,isSameDay as o,isAfter as t}from"date-fns";function f(f,{from:e,to:n},i){if(!e&&!n)return"from"===i?{from:f,to:void 0}:{from:void 0,to:f};if(!e)return r(f,n)?{from:f,to:n}:{from:n,to:f};if(!n)return r(f,e)?{from:f,to:e}:{from:e,to:f};if("to"===i){if(o(f,e)&&o(f,n))return{from:void 0};if(o(f,e))return{from:void 0};if(r(f,e))return{from:f,to:n};if(t(f,e)&&r(f,n))return{from:e,to:f};if(t(f,n)||o(f,n))return{from:e,to:f}}else{if(o(f,e)&&o(f,n))return{from:void 0};if(o(f,n))return{from:f,to:f};if(t(f,n))return{from:e,to:f};if(r(f,n)&&t(f,e))return{from:f,to:n};if(r(f,e))return{from:f,to:n};if(o(f,n))return{from:f}}return{from:e,to:f}}const e=(f,e)=>!(!e.from||!e.to)&&((t(f,e.from)||o(f,e.from))&&(r(f,e.to)||o(f,e.to))),n="addToRangeMiddle",i="addToRangeStart",m="addToRangeEnd",u="removeFromRange",d="HoveredDayExists",a="HalfRangeSelected";function v(r,t,d,a){if(!t)return;const v=f(t,d,a);if(e(r,v)||e(r,d)){if(o(r,v.to)&&!o(r,d.to))return m;if(o(r,v.from)&&!o(r,d.from))return i;if(e(r,v)){if(e(r,d))return;return o(r,v.from)?i:o(r,v.to)?m:e(t,d)?void 0:n}return e(t,d)?u:void 0}}function c(r,o,t){return{[d]:()=>!!r,[a]:()=>!(!o||!(!o.from&&o.to||o.from&&!o.to)),[n]:f=>v(f,r,o,t)===n,[i]:f=>v(f,r,o,t)===i,[m]:f=>v(f,r,o,t)===m,[u]:f=>v(f,r,o,t)===u}}export{m as AddToRangeEnd,n as AddToRangeMiddle,i as AddToRangeStart,a as HalfRangeSelected,d as HoveredDayExists,u as RemoveFromRange,f as addToRange,c as addToRangeModifiers,v as addToRangeNextState};
|
|
2
|
+
//# sourceMappingURL=utils.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"utils.js","sources":["../../src/DatePicker/utils.ts"],"sourcesContent":["import { isAfter, isBefore, isSameDay } from \"date-fns\";\nimport { type DateRange, type Matcher } from \"react-day-picker\";\n\nexport type Intent = \"to\" | \"from\";\n\nexport function addToRange(day: Date, { from, to }: DateRange, intent: Intent): DateRange {\n if (!from && !to) {\n return intent === \"from\" ? { from: day, to: undefined } : { from: undefined, to: day };\n }\n\n if (!from) {\n if (isBefore(day, to)) {\n return { from: day, to };\n }\n\n return { from: to, to: day };\n }\n\n if (!to) {\n if (isBefore(day, from)) {\n return { from: day, to: from };\n }\n\n return { from, to: day };\n }\n\n if (intent === \"to\") {\n if (isSameDay(day, from) && isSameDay(day, to)) {\n return { from: undefined };\n }\n\n if (isSameDay(day, from)) {\n // both from & to selected + user clicks on start -> clear selection\n return { from: undefined };\n }\n\n if (isBefore(day, from)) {\n return { from: day, to };\n }\n\n if (isAfter(day, from) && isBefore(day, to)) {\n return { from, to: day };\n }\n\n if (isAfter(day, to) || isSameDay(day, to)) {\n return { from, to: day };\n }\n } else {\n // intent is from\n if (isSameDay(day, from) && isSameDay(day, to)) {\n return { from: undefined };\n }\n\n if (isSameDay(day, to)) {\n return { from: day, to: day };\n }\n\n if (isAfter(day, to)) {\n return { from, to: day };\n }\n\n if (isBefore(day, to) && isAfter(day, from)) {\n return { from: day, to };\n }\n\n if (isBefore(day, from)) {\n return { from: day, to };\n }\n\n if (isSameDay(day, to)) {\n // both from & to selected + user clicks on end -> end becomes start\n return { from: day };\n }\n }\n\n return { from, to: day };\n}\n\nconst isInRange = (day: Date, range: DateRange): boolean => {\n if (!range.from || !range.to) {\n return false;\n }\n\n return (\n (isAfter(day, range.from) || isSameDay(day, range.from)) && (isBefore(day, range.to) || isSameDay(day, range.to))\n );\n};\n\nexport const AddToRangeMiddle = \"addToRangeMiddle\";\nexport const AddToRangeStart = \"addToRangeStart\";\nexport const AddToRangeEnd = \"addToRangeEnd\";\nexport const RemoveFromRange = \"removeFromRange\";\nexport const HoveredDayExists = \"HoveredDayExists\";\nexport const HalfRangeSelected = \"HalfRangeSelected\";\n\ntype GetDateNextStateResult =\n | typeof AddToRangeMiddle\n | typeof AddToRangeStart\n | typeof AddToRangeEnd\n | typeof RemoveFromRange\n | undefined;\n\nexport function addToRangeNextState(\n day: Date,\n dayToAdd: Date,\n range: DateRange,\n intent: Intent\n): GetDateNextStateResult {\n if (!dayToAdd) {\n return undefined;\n }\n\n const nextRange = addToRange(dayToAdd, range, intent);\n\n if (!isInRange(day, nextRange) && !isInRange(day, range)) {\n return undefined;\n }\n\n if (isSameDay(day, nextRange.to) && !isSameDay(day, range.to)) {\n return AddToRangeEnd;\n }\n\n if (isSameDay(day, nextRange.from) && !isSameDay(day, range.from)) {\n return AddToRangeStart;\n }\n\n if (isInRange(day, nextRange)) {\n if (isInRange(day, range)) {\n return undefined;\n }\n\n if (isSameDay(day, nextRange.from)) {\n return AddToRangeStart;\n }\n\n if (isSameDay(day, nextRange.to)) {\n return AddToRangeEnd;\n }\n\n return !isInRange(dayToAdd, range) ? AddToRangeMiddle : undefined;\n }\n\n return isInRange(dayToAdd, range) ? RemoveFromRange : undefined;\n}\n\nexport function addToRangeModifiers(dayToAdd: Date, range: DateRange, intent: Intent): Record<string, Matcher> {\n return {\n [HoveredDayExists]: () => !!dayToAdd,\n [HalfRangeSelected]: () => !!(range && ((!range.from && range.to) || (range.from && !range.to))),\n [AddToRangeMiddle]: (day: Date) => addToRangeNextState(day, dayToAdd, range, intent) === AddToRangeMiddle,\n [AddToRangeStart]: (day: Date) => addToRangeNextState(day, dayToAdd, range, intent) === AddToRangeStart,\n [AddToRangeEnd]: (day: Date) => addToRangeNextState(day, dayToAdd, range, intent) === AddToRangeEnd,\n [RemoveFromRange]: (day: Date) => addToRangeNextState(day, dayToAdd, range, intent) === RemoveFromRange\n };\n}\n"],"names":["addToRange","day","from","to","intent","undefined","isBefore","isSameDay","isAfter","isInRange","range","AddToRangeMiddle","AddToRangeStart","AddToRangeEnd","RemoveFromRange","HoveredDayExists","HalfRangeSelected","addToRangeNextState","dayToAdd","nextRange","addToRangeModifiers"],"mappings":"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"}
|
package/dist/index.d.ts
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export * from "./DatePicker";
|
package/dist/index.js
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sources":[],"sourcesContent":[],"names":[],"mappings":""}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import React from "react";
|
|
2
|
+
export declare const DayContentHoverContext: React.Context<{
|
|
3
|
+
hover: Date | undefined;
|
|
4
|
+
setHover: (_hover: Date | undefined) => void;
|
|
5
|
+
}>;
|
|
6
|
+
export declare const DayContentHoverProvider: ({ children }: {
|
|
7
|
+
children: React.ReactNode;
|
|
8
|
+
}) => React.JSX.Element;
|
|
9
|
+
export declare const useDayContentHoverContext: () => {
|
|
10
|
+
hover: Date | undefined;
|
|
11
|
+
setHover: (_hover: Date | undefined) => void;
|
|
12
|
+
};
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
import e,{createContext as o,useState as r,useMemo as t,useContext as v}from"react";import{noop as i}from"es-toolkit";const c=o({hover:void 0,setHover:i}),m=({children:o})=>{const[v,i]=r(void 0),m=t((()=>({hover:v,setHover:i})),[v]);return e.createElement(c.Provider,{value:m},o)},n=()=>v(c);export{c as DayContentHoverContext,m as DayContentHoverProvider,n as useDayContentHoverContext};
|
|
2
|
+
//# sourceMappingURL=DateContentHoverContext.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"DateContentHoverContext.js","sources":["../../../src/DatePicker/DateContentHoverContext.tsx"],"sourcesContent":["import React, { createContext, useContext, useMemo, useState } from \"react\";\nimport { noop } from \"es-toolkit\";\n\nexport const DayContentHoverContext = createContext<{\n hover: Date | undefined;\n setHover: (_hover: Date | undefined) => void;\n}>({ hover: undefined, setHover: noop });\n\nexport const DayContentHoverProvider = ({ children }: { children: React.ReactNode }) => {\n const [hover, setHover] = useState<Date | undefined>(undefined);\n const value = useMemo(() => ({ hover, setHover }), [hover]);\n return <DayContentHoverContext.Provider value={value}>{children}</DayContentHoverContext.Provider>;\n};\n\nexport const useDayContentHoverContext = () => useContext(DayContentHoverContext);\n"],"names":["DayContentHoverContext","createContext","hover","undefined","setHover","noop","DayContentHoverProvider","children","useState","value","useMemo","React","createElement","Provider","useDayContentHoverContext","useContext"],"mappings":"sHAGaA,MAAAA,EAAyBC,EAGnC,CAAEC,WAAOC,EAAWC,SAAUC,IAEpBC,EAA0BA,EAAGC,eACxC,MAAOL,EAAOE,GAAYI,OAA2BL,GAC/CM,EAAQC,GAAQ,KAAO,CAAER,QAAOE,cAAa,CAACF,IACpD,OAAOS,EAAAC,cAACZ,EAAuBa,SAAQ,CAACJ,MAAOA,GAAQF,EAA2C,EAGvFO,EAA4BA,IAAMC,EAAWf"}
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
import e,{createContext as t,useMemo as a,useState as r,useRef as n,useEffect as o,useCallback as i}from"react";import s from"classnames";import{InternalModifier as d,DayPicker as l}from"react-day-picker";import c from"./DatePicker.module.scss.js";import m from"./DatePickerHeader.js";import{AddToRangeMiddle as u,AddToRangeStart as k,AddToRangeEnd as D,RemoveFromRange as g,HoveredDayExists as y,HalfRangeSelected as P,addToRange as b,addToRangeModifiers as f}from"./utils.js";import{RangeDayContent as h}from"./RangeDayContent.js";import{SingleDayContent as p}from"./SingleDayContent.js";import{DayContentHoverProvider as C,DayContentHoverContext as S}from"./DateContentHoverContext.js";const v={hours:9,minutes:0},R={[d.Outside]:c.datePickerDayOutside,[d.Selected]:c.datePickerDaySelected,[d.Today]:c.datePickerDayToday,[d.Disabled]:c.datePickerDayDisabled,[d.RangeStart]:c.datePickerDayRangeStart,[d.RangeEnd]:c.datePickerDayRangeEnd,[d.RangeMiddle]:c.datePickerDayRangeMiddle,[u]:c.datePickerAddToRangeMiddle,[k]:c.datePickerAddToRangeStart,[D]:c.datePickerAddToRangeEnd,[g]:c.datePickerRemoveFromRange,[y]:c.datePickerHoveredDayExists,[P]:c.datePickerHalfRangeSelected},N=t({}),A=()=>e.createElement(N.Consumer,null,(t=>e.createElement(m,Object.assign({},t)))),E=({className:t,dayClassName:m,selectedDayClassName:u,id:k,"data-testid":D,mode:g="single",date:y,endDate:P,onDateChange:E,firstDayOfWeek:j=0,showWeekNumber:w,isDateDisabled:L,locale:M,nextButtonAriaLabel:O="Next",prevButtonAriaLabel:x="Previous",monthSelectionAriaLabel:H="Month",yearSelectionAriaLabel:T="Year",dropdownsClassName:B,intent:W="to",dialogContainerSelector:q})=>{const F=a((()=>"single"===g?y:{from:y,to:P}),[y,P,g]),[Y,z]=r(y||new Date),G=n(),I=n(),J=n(!1);o((()=>{const e=+I.current!=+P,t=!J.current;+G.current!=+y?t&&y&&z(y):e&&t&&P&&z(P),G.current=y,I.current=P,J.current=!1}),[y,P]);const K=i(((e,t)=>{if(J.current=!0,"range"===g){const e=b(t,F,W);E({date:null==e?void 0:e.from,endDate:null==e?void 0:e.to})}else{const t=e,{hours:a,minutes:r}=y?{hours:y.getHours(),minutes:y.getMinutes()}:v;t.setHours(a,r),E(t)}}),[y,W,g,E,F]),Q=a((()=>({setDisplayMonth:z,locale:M,nextButtonAriaLabel:O,prevButtonAriaLabel:x,monthSelectionAriaLabel:H,yearSelectionAriaLabel:T,dropdownsClassName:B,dialogContainerSelector:q})),[M,H,O,z,x,T,B,q]),U=a((()=>Object.assign(Object.assign({},R),{[d.Selected]:s(R[d.Selected],u)})),[u]),V=a((()=>({months:c.datePickerMonths,head:c.datePickerHead,table:c.datePickerTable,tbody:c.datePickerBody,day:s(c.datePickerDay,m)})),[m]);return e.createElement("div",{id:k,className:s(c.datePicker,{[c.withWeekNumber]:w},t),"data-testid":D,"data-vibe":"DatePicker"},e.createElement(C,null,e.createElement(N.Provider,{value:Q},e.createElement(S.Consumer,null,(({hover:t})=>{const a=f(t,F,W);return e.createElement(l,{fixedWeeks:!0,showOutsideDays:!0,showWeekNumber:w,mode:g,required:!0,weekStartsOn:j,disabled:L,selected:F,onSelect:K,month:Y,onMonthChange:z,components:{Caption:A,DayContent:"single"===g?p:h},classNames:V,modifiers:a,modifiersClassNames:U,locale:M})})))))};export{v as DEFAULT_TIME,E as default};
|
|
2
|
+
//# sourceMappingURL=DatePicker.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"DatePicker.js","sources":["../../../src/DatePicker/DatePicker.tsx"],"sourcesContent":["import React, { type FC, createContext, useCallback, useEffect, useMemo, useRef, useState } from \"react\";\nimport cx from \"classnames\";\nimport { type DateRange, DayPicker as ReactDatePicker, InternalModifier as DayModifier } from \"react-day-picker\";\nimport styles from \"./DatePicker.module.scss\";\nimport DatePickerHeader, { type DatePickerHeaderProps } from \"./DatePickerHeader\";\nimport { type DatePickerProps, type DatePickerRange } from \"./DatePicker.types\";\nimport {\n AddToRangeEnd,\n AddToRangeMiddle,\n AddToRangeStart,\n HalfRangeSelected,\n HoveredDayExists,\n RemoveFromRange,\n addToRange,\n addToRangeModifiers\n} from \"./utils\";\nimport { RangeDayContent } from \"./RangeDayContent\";\nimport { SingleDayContent } from \"./SingleDayContent\";\nimport { DayContentHoverContext, DayContentHoverProvider } from \"./DateContentHoverContext\";\n\nexport const DEFAULT_TIME = { hours: 9, minutes: 0 };\n\nconst MODIFIERS_CLASS_NAMES = {\n [DayModifier.Outside]: styles.datePickerDayOutside,\n [DayModifier.Selected]: styles.datePickerDaySelected,\n [DayModifier.Today]: styles.datePickerDayToday,\n [DayModifier.Disabled]: styles.datePickerDayDisabled,\n [DayModifier.RangeStart]: styles.datePickerDayRangeStart,\n [DayModifier.RangeEnd]: styles.datePickerDayRangeEnd,\n [DayModifier.RangeMiddle]: styles.datePickerDayRangeMiddle,\n [AddToRangeMiddle]: styles.datePickerAddToRangeMiddle,\n [AddToRangeStart]: styles.datePickerAddToRangeStart,\n [AddToRangeEnd]: styles.datePickerAddToRangeEnd,\n [RemoveFromRange]: styles.datePickerRemoveFromRange,\n [HoveredDayExists]: styles.datePickerHoveredDayExists,\n [HalfRangeSelected]: styles.datePickerHalfRangeSelected\n};\n\nconst DatePickerHeaderContext = createContext<DatePickerHeaderProps>({} as DatePickerHeaderProps);\n\nconst Caption = () => (\n <DatePickerHeaderContext.Consumer>{props => <DatePickerHeader {...props} />}</DatePickerHeaderContext.Consumer>\n);\n\nconst DatePicker: FC<DatePickerProps> = ({\n className,\n dayClassName,\n selectedDayClassName,\n id,\n \"data-testid\": dataTestId,\n mode = \"single\",\n date,\n endDate,\n onDateChange,\n firstDayOfWeek = 0,\n showWeekNumber,\n isDateDisabled,\n locale,\n nextButtonAriaLabel = \"Next\",\n prevButtonAriaLabel = \"Previous\",\n monthSelectionAriaLabel = \"Month\",\n yearSelectionAriaLabel = \"Year\",\n dropdownsClassName,\n intent = \"to\",\n dialogContainerSelector\n}) => {\n const selected = useMemo(() => (mode === \"single\" ? date : { from: date, to: endDate }), [date, endDate, mode]);\n const [displayMonth, setDisplayMonth] = useState(date || new Date());\n\n const prevDateRef = useRef<Date | undefined>();\n const prevEndDateRef = useRef<Date | undefined>();\n const lastChangeByInnerSelection = useRef(false);\n useEffect(() => {\n const dateChanged = +prevDateRef.current !== +date;\n const endDateChanged = +prevEndDateRef.current !== +endDate;\n const shouldSetDisplayMonth = !lastChangeByInnerSelection.current;\n\n if (dateChanged) {\n shouldSetDisplayMonth && date && setDisplayMonth(date);\n } else if (endDateChanged) {\n shouldSetDisplayMonth && endDate && setDisplayMonth(endDate);\n }\n\n prevDateRef.current = date;\n prevEndDateRef.current = endDate;\n lastChangeByInnerSelection.current = false;\n }, [date, endDate]);\n\n const onPickerDateChange = useCallback(\n (newValue: Date | DateRange, selectedDay: Date) => {\n lastChangeByInnerSelection.current = true;\n\n if (mode === \"range\") {\n const newRange = addToRange(selectedDay, selected as DateRange, intent);\n (onDateChange as (range: DatePickerRange) => void)({ date: newRange?.from, endDate: newRange?.to });\n } else {\n const newDate = newValue as Date;\n const { hours, minutes } = date ? { hours: date.getHours(), minutes: date.getMinutes() } : DEFAULT_TIME;\n newDate.setHours(hours, minutes);\n (onDateChange as (date: Date | undefined) => void)(newDate);\n }\n },\n [date, intent, mode, onDateChange, selected]\n );\n\n const DatePickerHeaderContextValue = useMemo<DatePickerHeaderProps>(\n () => ({\n setDisplayMonth,\n locale,\n nextButtonAriaLabel,\n prevButtonAriaLabel,\n monthSelectionAriaLabel,\n yearSelectionAriaLabel,\n dropdownsClassName,\n dialogContainerSelector\n }),\n [\n locale,\n monthSelectionAriaLabel,\n nextButtonAriaLabel,\n setDisplayMonth,\n prevButtonAriaLabel,\n yearSelectionAriaLabel,\n dropdownsClassName,\n dialogContainerSelector\n ]\n );\n\n const modifiersClassNames = useMemo(\n () => ({\n ...MODIFIERS_CLASS_NAMES,\n [DayModifier.Selected]: cx(MODIFIERS_CLASS_NAMES[DayModifier.Selected], selectedDayClassName)\n }),\n [selectedDayClassName]\n );\n\n const classNames = useMemo(\n () => ({\n months: styles.datePickerMonths,\n head: styles.datePickerHead,\n table: styles.datePickerTable,\n tbody: styles.datePickerBody,\n day: cx(styles.datePickerDay, dayClassName)\n }),\n [dayClassName]\n );\n\n return (\n <div\n id={id}\n className={cx(styles.datePicker, { [styles.withWeekNumber]: showWeekNumber }, className)}\n data-testid={dataTestId}\n data-vibe=\"DatePicker\"\n >\n <DayContentHoverProvider>\n <DatePickerHeaderContext.Provider value={DatePickerHeaderContextValue}>\n <DayContentHoverContext.Consumer>\n {({ hover }) => {\n const modifiers = addToRangeModifiers(hover, selected as DateRange, intent);\n return (\n <ReactDatePicker\n fixedWeeks\n showOutsideDays\n showWeekNumber={showWeekNumber}\n mode={mode as \"single\"} // cast to avoid type errors from ReactDatePicker\n required\n weekStartsOn={firstDayOfWeek}\n disabled={isDateDisabled}\n selected={selected as Date} // cast to avoid type errors from ReactDatePicker\n onSelect={onPickerDateChange}\n month={displayMonth}\n onMonthChange={setDisplayMonth}\n components={{ Caption, DayContent: mode === \"single\" ? SingleDayContent : RangeDayContent }}\n classNames={classNames}\n modifiers={modifiers}\n modifiersClassNames={modifiersClassNames}\n locale={locale}\n />\n );\n }}\n </DayContentHoverContext.Consumer>\n </DatePickerHeaderContext.Provider>\n </DayContentHoverProvider>\n </div>\n );\n};\n\nexport default DatePicker;\n"],"names":["DEFAULT_TIME","hours","minutes","MODIFIERS_CLASS_NAMES","DayModifier","Outside","styles","datePickerDayOutside","Selected","datePickerDaySelected","Today","datePickerDayToday","Disabled","datePickerDayDisabled","RangeStart","datePickerDayRangeStart","RangeEnd","datePickerDayRangeEnd","RangeMiddle","datePickerDayRangeMiddle","AddToRangeMiddle","datePickerAddToRangeMiddle","AddToRangeStart","datePickerAddToRangeStart","AddToRangeEnd","datePickerAddToRangeEnd","RemoveFromRange","datePickerRemoveFromRange","HoveredDayExists","datePickerHoveredDayExists","HalfRangeSelected","datePickerHalfRangeSelected","DatePickerHeaderContext","createContext","Caption","React","createElement","Consumer","props","DatePickerHeader","DatePicker","className","dayClassName","selectedDayClassName","id","dataTestId","mode","date","endDate","onDateChange","firstDayOfWeek","showWeekNumber","isDateDisabled","locale","nextButtonAriaLabel","prevButtonAriaLabel","monthSelectionAriaLabel","yearSelectionAriaLabel","dropdownsClassName","intent","dialogContainerSelector","selected","useMemo","from","to","displayMonth","setDisplayMonth","useState","Date","prevDateRef","useRef","prevEndDateRef","lastChangeByInnerSelection","useEffect","endDateChanged","current","shouldSetDisplayMonth","onPickerDateChange","useCallback","newValue","selectedDay","newRange","addToRange","newDate","getHours","getMinutes","setHours","DatePickerHeaderContextValue","modifiersClassNames","Object","assign","cx","classNames","months","datePickerMonths","head","datePickerHead","table","datePickerTable","tbody","datePickerBody","day","datePickerDay","datePicker","withWeekNumber","DayContentHoverProvider","Provider","value","DayContentHoverContext","hover","modifiers","addToRangeModifiers","ReactDatePicker","fixedWeeks","showOutsideDays","required","weekStartsOn","disabled","onSelect","month","onMonthChange","components","DayContent","SingleDayContent","RangeDayContent"],"mappings":"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"}
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
var e={datePicker:"datePicker",datePickerMonths:"datePickerMonths",withWeekNumber:"withWeekNumber",datePickerHead:"datePickerHead",datePickerBody:"datePickerBody",datePickerTable:"datePickerTable",datePickerDay:"datePickerDay",datePickerDayContent:"datePickerDayContent",datePickerDayDisabled:"datePickerDayDisabled",datePickerAddToRangeStart:"datePickerAddToRangeStart",datePickerAddToRangeEnd:"datePickerAddToRangeEnd",datePickerAddToRangeMiddle:"datePickerAddToRangeMiddle",datePickerDayRangeStart:"datePickerDayRangeStart",datePickerDayRangeEnd:"datePickerDayRangeEnd",datePickerDayOutside:"datePickerDayOutside",datePickerDaySelected:"datePickerDaySelected",datePickerDayRangeMiddle:"datePickerDayRangeMiddle",datePickerRemoveFromRange:"datePickerRemoveFromRange",datePickerHalfRangeSelected:"datePickerHalfRangeSelected"};!function(e){const a="s_id-601bce29f4a5_4_0_0";if("undefined"!=typeof document){const d=document.head||document.getElementsByTagName("head")[0];if(d.querySelector("#"+a))return;const r=document.createElement("style");r.id=a,d.firstChild?d.insertBefore(r,d.firstChild):d.appendChild(r),r.appendChild(document.createTextNode(e))}else globalThis.injectedStyles&&(globalThis.injectedStyles[a]=e)}('/* stylelint-disable */\n/* stylelint-enable */\n.datePicker {\n --day-picker-header-height: 34px;\n --day-picker-content-height: 234px;\n --day-picker-day-width: 30px;\n --day-picker-day-height: 30px;\n --day-picker-days-horizontal-gap: 4px;\n --day-picker-days-vertical-gap: 2px;\n --day-picker-day-change-range: var(--primary-surface-color);\n}\n.datePicker .datePickerMonths {\n display: flex;\n flex-direction: row;\n gap: var(--space-16);\n align-items: flex-start;\n}\n.datePicker.withWeekNumber {\n --day-picker-days-horizontal-gap: 2px;\n width: 284px;\n margin: 0;\n}\n.datePicker.withWeekNumber .datePickerHead td:first-child {\n width: var(--day-picker-day-width);\n border-start-start-radius: var(--border-radius-medium);\n border-start-end-radius: var(--border-radius-medium);\n background-color: var(--primary-background-hover-color);\n}\n.datePicker.withWeekNumber .datePickerHead td:first-child::after {\n color: var(--secondary-text-color);\n font: var(--font-text2-normal);\n display: flex;\n justify-content: center;\n content: "No.";\n}\n.datePicker.withWeekNumber .datePickerBody td:first-child {\n background-color: var(--primary-background-hover-color);\n}\n.datePicker.withWeekNumber .datePickerBody tr:last-child td:first-child {\n border-end-start-radius: var(--border-radius-medium);\n border-end-end-radius: var(--border-radius-medium);\n}\n.datePicker .datePickerTable {\n margin-top: var(--space-8);\n border-collapse: collapse;\n height: var(--day-picker-content-height);\n}\n.datePicker .datePickerHead th {\n color: var(--secondary-text-color);\n font: var(--font-text2-normal);\n padding-block: var(--space-2);\n text-align: center;\n height: var(--day-picker-day-height);\n}\n.datePicker .datePickerBody td {\n color: var(--secondary-text-color);\n font: var(--font-text2-normal);\n text-align: center;\n padding: 0;\n}\n.datePicker .datePickerBody .datePickerDay {\n color: var(--primary-text-color);\n font: var(--font-text2-normal);\n width: var(--day-picker-day-width);\n height: var(--day-picker-day-height);\n background: none;\n border: none;\n cursor: pointer;\n border-radius: var(--border-radius-small);\n margin: var(--day-picker-days-vertical-gap) var(--day-picker-days-horizontal-gap);\n padding: 0;\n}\n.datePicker .datePickerBody .datePickerDay .datePickerDayContent {\n display: flex;\n justify-content: center;\n align-items: center;\n width: 100%;\n height: 100%;\n border-radius: var(--border-radius-small);\n}\n.datePicker .datePickerBody .datePickerDay:focus-visible {\n outline: none;\n}\n.datePicker .datePickerBody .datePickerDay:focus-visible .datePickerDayContent {\n outline: 2px solid var(--primary-color);\n}\n.datePicker .datePickerBody .datePickerDay.datePickerDayDisabled {\n color: var(--disabled-text-color);\n cursor: not-allowed;\n}\n.datePicker .datePickerBody .datePickerDay:not(.datePickerDayDisabled):not(.datePickerAddToRangeStart):not(.datePickerAddToRangeEnd):not(.datePickerAddToRangeMiddle):not(.datePickerDayRangeStart):not(.datePickerDayRangeEnd) .datePickerDayContent:hover {\n background: var(--primary-background-hover-color);\n}\n.datePicker .datePickerBody .datePickerDay.datePickerDayOutside {\n color: var(--disabled-text-color);\n}\n.datePicker .datePickerBody .datePickerDay.datePickerDaySelected:not(.datePickerDayRangeMiddle):not(.datePickerRemoveFromRange) {\n background: var(--primary-color);\n color: var(--text-color-on-primary);\n}\n.datePicker .datePickerBody .datePickerDay.datePickerDayRangeStart:not(.datePickerDayRangeEnd):not(.datePickerRemoveFromRange), .datePicker .datePickerBody .datePickerDay.datePickerDayRangeEnd:not(.datePickerDayRangeStart):not(.datePickerRemoveFromRange) {\n background: var(--primary-color);\n width: calc(var(--day-picker-day-width) + var(--day-picker-days-horizontal-gap));\n}\n.datePicker .datePickerBody .datePickerDay.datePickerDayRangeStart.datePickerRemoveFromRange, .datePicker .datePickerBody .datePickerDay.datePickerDayRangeEnd.datePickerRemoveFromRange {\n background: var(--primary-color);\n color: var(--text-color-on-primary);\n}\n.datePicker .datePickerBody .datePickerDay.datePickerDayRangeStart.datePickerRemoveFromRange:not(.datePickerDayRangeEnd), .datePicker .datePickerBody .datePickerDay.datePickerDayRangeEnd.datePickerRemoveFromRange:not(.datePickerDayRangeStart) {\n width: calc(var(--day-picker-day-width) + var(--day-picker-days-horizontal-gap));\n}\n.datePicker .datePickerBody .datePickerDay.datePickerAddToRangeStart, .datePicker .datePickerBody .datePickerDay.datePickerDayRangeStart:not(.datePickerDayRangeEnd) {\n margin-inline-end: 0;\n border-start-end-radius: 0;\n border-end-end-radius: 0;\n}\n.datePicker .datePickerBody .datePickerDay.datePickerAddToRangeEnd, .datePicker .datePickerBody .datePickerDay.datePickerDayRangeEnd:not(.datePickerDayRangeStart) {\n margin-inline-start: 0;\n border-start-start-radius: 0;\n border-end-start-radius: 0;\n}\n.datePicker .datePickerBody .datePickerDay.datePickerAddToRangeStart, .datePicker .datePickerBody .datePickerDay.datePickerAddToRangeEnd, .datePicker .datePickerBody .datePickerDay.datePickerAddToRangeMiddle {\n margin: var(--day-picker-days-vertical-gap) 0;\n}\n.datePicker .datePickerBody .datePickerDay.datePickerAddToRangeStart:not(.datePickerDayRangeStart):not(.datePickerDayRangeEnd), .datePicker .datePickerBody .datePickerDay.datePickerAddToRangeEnd:not(.datePickerDayRangeStart):not(.datePickerDayRangeEnd), .datePicker .datePickerBody .datePickerDay.datePickerAddToRangeMiddle, .datePicker .datePickerBody .datePickerDay.datePickerDayRangeMiddle:not(.datePickerAddToRangeStart):not(.datePickerAddToRangeEnd) {\n background-color: var(--primary-selected-color);\n border: var(--day-picker-days-horizontal-gap) var(--border-style) var(--primary-selected-color);\n border-top: none;\n border-bottom: none;\n width: calc(var(--day-picker-day-width) + 2 * var(--day-picker-days-horizontal-gap));\n}\n.datePicker .datePickerBody .datePickerDay.datePickerAddToRangeMiddle, .datePicker .datePickerBody .datePickerDay.datePickerDayRangeMiddle:not(.datePickerAddToRangeStart):not(.datePickerAddToRangeEnd) {\n background: var(--primary-selected-color);\n margin: var(--day-picker-days-vertical-gap) 0;\n border-radius: 0;\n}\n.datePicker .datePickerBody .datePickerDay.datePickerRemoveFromRange:not(.datePickerDayRangeStart):not(.datePickerDayRangeEnd), .datePicker .datePickerBody .datePickerDay.datePickerAddToRangeStart:not(.datePickerDayRangeMiddle):not(.datePickerDayRangeEnd), .datePicker .datePickerBody .datePickerDay.datePickerAddToRangeEnd:not(.datePickerDayRangeMiddle):not(.datePickerDayRangeStart), .datePicker .datePickerBody .datePickerDay.datePickerAddToRangeMiddle {\n background: var(--day-picker-day-change-range);\n border-color: var(--day-picker-day-change-range);\n}\n.datePicker .datePickerBody tr td:first-child .datePickerDay.datePickerDayRangeMiddle, .datePicker .datePickerBody tr td:first-child .datePickerDay.datePickerAddToRangeStart:not(.datePickerDayRangeStart):not(.datePickerDayRangeEnd), .datePicker .datePickerBody tr td:first-child .datePickerDay.datePickerAddToRangeMiddle, .datePicker .datePickerBody tr td:first-child .datePickerDay.datePickerAddToRangeEnd:not(.datePickerDayRangeStart):not(.datePickerDayRangeEnd) {\n border: none;\n width: calc(var(--day-picker-day-width) + var(--day-picker-days-horizontal-gap));\n margin-inline-start: var(--day-picker-days-horizontal-gap);\n border-inline-end: var(--day-picker-days-horizontal-gap) solid var(--primary-selected-color);\n border-start-start-radius: var(--border-radius-small);\n border-end-start-radius: var(--border-radius-small);\n}\n.datePicker .datePickerBody tr td:first-child .datePickerDay.datePickerRemoveFromRange {\n border-color: var(--day-picker-day-change-range);\n}\n.datePicker .datePickerBody tr td:first-child .datePickerDay.datePickerAddToRangeEnd, .datePicker .datePickerBody tr td:first-child .datePickerDay.datePickerDayRangeEnd:not(.datePickerDayRangeStart) {\n margin-inline-end: 0;\n}\n.datePicker .datePickerBody tr td:last-child .datePickerDay.datePickerDayRangeMiddle, .datePicker .datePickerBody tr td:last-child .datePickerDay.datePickerAddToRangeStart:not(.datePickerDayRangeStart):not(.datePickerDayRangeEnd), .datePicker .datePickerBody tr td:last-child .datePickerDay.datePickerAddToRangeMiddle, .datePicker .datePickerBody tr td:last-child .datePickerDay.datePickerAddToRangeEnd:not(.datePickerDayRangeStart):not(.datePickerDayRangeEnd) {\n border: none;\n width: calc(var(--day-picker-day-width) + var(--day-picker-days-horizontal-gap));\n margin-inline-end: var(--day-picker-days-horizontal-gap);\n border-inline-start: var(--day-picker-days-horizontal-gap) solid var(--primary-selected-color);\n border-start-end-radius: var(--border-radius-small);\n border-end-end-radius: var(--border-radius-small);\n}\n.datePicker .datePickerBody tr td:last-child .datePickerDay.datePickerRemoveFromRange {\n border-color: var(--day-picker-day-change-range);\n}\n.datePicker .datePickerBody tr td:last-child .datePickerDay.datePickerAddToRangeStart, .datePicker .datePickerBody tr td:last-child .datePickerDay.datePickerDayRangeStart:not(.datePickerDayRangeEnd) {\n margin-inline-start: 0;\n}\n.datePicker .datePickerBody tr td:first-child .datePickerDay.datePickerAddToRangeStart:not(.datePickerDayRangeMiddle), .datePicker .datePickerBody tr td:first-child .datePickerDay.datePickerAddToRangeMiddle, .datePicker .datePickerBody tr td:first-child .datePickerDay.datePickerAddToRangeEnd:not(.datePickerDayRangeMiddle),\n.datePicker .datePickerBody tr td:last-child .datePickerDay.datePickerAddToRangeStart:not(.datePickerDayRangeMiddle),\n.datePicker .datePickerBody tr td:last-child .datePickerDay.datePickerAddToRangeMiddle,\n.datePicker .datePickerBody tr td:last-child .datePickerDay.datePickerAddToRangeEnd:not(.datePickerDayRangeMiddle) {\n border-color: var(--day-picker-day-change-range);\n}\n.datePicker .datePickerBody tr td:first-child .datePickerDay.datePickerDaySelected.datePickerDayRangeEnd.datePickerAddToRangeStart,\n.datePicker .datePickerBody tr td:last-child .datePickerDay.datePickerDaySelected.datePickerDayRangeEnd.datePickerAddToRangeStart {\n border-inline-start-width: 0;\n}\n.datePicker .datePickerBody tr td:first-child .datePickerDay.datePickerDaySelected.datePickerDayRangeStart.datePickerAddToRangeEnd,\n.datePicker .datePickerBody tr td:last-child .datePickerDay.datePickerDaySelected.datePickerDayRangeStart.datePickerAddToRangeEnd {\n border-inline-end-width: 0;\n}\n.datePicker .datePickerBody .datePickerDaySelected.datePickerDayRangeEnd.datePickerAddToRangeStart {\n border-radius: var(--border-radius-small) !important;\n border-color: var(--primary-color) !important;\n background-color: var(--primary-color) !important;\n}\n.datePicker .datePickerBody .datePickerDaySelected.datePickerDayRangeEnd.datePickerAddToRangeStart:not(.datePickerHalfRangeSelected) {\n margin-inline-start: calc(var(--day-picker-days-horizontal-gap) * -1);\n}\n.datePicker .datePickerBody .datePickerDaySelected.datePickerDayRangeStart.datePickerAddToRangeEnd {\n border-radius: var(--border-radius-small) !important;\n border-color: var(--primary-color) !important;\n background-color: var(--primary-color) !important;\n}\n.datePicker .datePickerBody .datePickerDaySelected.datePickerDayRangeStart.datePickerAddToRangeEnd:not(.datePickerHalfRangeSelected) {\n margin-inline-end: calc(var(--day-picker-days-horizontal-gap) * -1);\n}');export{e as default};
|
|
2
|
+
//# sourceMappingURL=DatePicker.module.scss.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"DatePicker.module.scss.js","sources":[],"sourcesContent":[],"names":[],"mappings":""}
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
import type { VibeComponentProps } from "@vibe/shared";
|
|
2
|
+
import type { Intent } from "./utils";
|
|
3
|
+
interface DatePickerBaseProps extends VibeComponentProps {
|
|
4
|
+
mode?: "single" | "range";
|
|
5
|
+
date: Date | undefined;
|
|
6
|
+
endDate?: Date | undefined;
|
|
7
|
+
firstDayOfWeek?: 0 | 1 | 2 | 3 | 4 | 5 | 6;
|
|
8
|
+
showWeekNumber?: boolean;
|
|
9
|
+
isDateDisabled?: (date: Date) => boolean;
|
|
10
|
+
locale?: Locale;
|
|
11
|
+
monthSelectionAriaLabel?: string;
|
|
12
|
+
yearSelectionAriaLabel?: string;
|
|
13
|
+
nextButtonAriaLabel?: string;
|
|
14
|
+
prevButtonAriaLabel?: string;
|
|
15
|
+
dayClassName?: string;
|
|
16
|
+
selectedDayClassName?: string;
|
|
17
|
+
dropdownsClassName?: string;
|
|
18
|
+
intent?: Intent;
|
|
19
|
+
dialogContainerSelector?: string;
|
|
20
|
+
}
|
|
21
|
+
interface DatePickerSingleProps extends DatePickerBaseProps {
|
|
22
|
+
mode?: "single";
|
|
23
|
+
onDateChange: (date: Date | undefined) => void;
|
|
24
|
+
}
|
|
25
|
+
export type DatePickerRange = {
|
|
26
|
+
date: Date | undefined;
|
|
27
|
+
endDate: Date | undefined;
|
|
28
|
+
};
|
|
29
|
+
interface DatePickerRangeProps extends DatePickerBaseProps {
|
|
30
|
+
mode: "range";
|
|
31
|
+
onDateChange: (range: DatePickerRange) => void;
|
|
32
|
+
}
|
|
33
|
+
export type DatePickerProps = DatePickerSingleProps | DatePickerRangeProps;
|
|
34
|
+
export {};
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
import { type FC } from "react";
|
|
2
|
+
import { type Locale } from "date-fns";
|
|
3
|
+
export interface DatePickerHeaderProps {
|
|
4
|
+
setDisplayMonth: (displayMonth: Date) => void;
|
|
5
|
+
monthSelectionAriaLabel?: string;
|
|
6
|
+
yearSelectionAriaLabel?: string;
|
|
7
|
+
nextButtonAriaLabel?: string;
|
|
8
|
+
prevButtonAriaLabel?: string;
|
|
9
|
+
locale?: Locale;
|
|
10
|
+
className?: string;
|
|
11
|
+
dropdownsClassName?: string;
|
|
12
|
+
dialogContainerSelector?: string;
|
|
13
|
+
}
|
|
14
|
+
declare const DatePickerHeader: FC<DatePickerHeaderProps>;
|
|
15
|
+
export default DatePickerHeader;
|
|
16
|
+
export declare function getYearButtonLabel(displayMonth: Date, locale: Locale): string;
|
|
17
|
+
export declare function getMonthButtonLabel(displayMonth: Date, locale: Locale): string;
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
import e,{useCallback as a,useMemo as t}from"react";import o from"classnames";import{useDayPicker as r,useNavigation as l}from"react-day-picker";import{IconButton as n}from"@vibe/icon-button";import{Flex as s}from"@vibe/layout";import{Dropdown as i}from"@vibe/dropdown";import{DropdownChevronLeft as m,DropdownChevronRight as c}from"@vibe/icons";import u from"./DatePickerHeader.module.scss.js";import{useMonthsOptionItems as p,useYearsOptionItems as d}from"./datePickerHooks.js";import{format as b}from"date-fns";const v=({setDisplayMonth:b,monthSelectionAriaLabel:v,yearSelectionAriaLabel:y,nextButtonAriaLabel:g,prevButtonAriaLabel:k,locale:M,className:D})=>{const{month:w}=r(),{goToMonth:E,nextMonth:j,previousMonth:B}=l(),C=a((()=>E(j)),[E,j]),N=a((()=>E(B)),[E,B]),z=p({locale:M}),A=d({locale:M}),L=t((()=>z.map((e=>Object.assign(Object.assign({},e),{value:e.id})))),[z]),O=t((()=>A.map((e=>Object.assign(Object.assign({},e),{value:e.id})))),[A]),x=t((()=>h(w,M)),[w,M]),H=t((()=>f(w,M)),[w,M]),P=a((e=>{const a=e.value,t=new Date(w);t.setMonth(+a),b(t)}),[w,b]),F=a((e=>{const a=e.value,t=new Date(w);t.setFullYear(+a),b(t)}),[w,b]),R=t((()=>L.find((e=>e.value===""+w.getMonth()))),[L,w]),S=t((()=>O.find((e=>e.value===""+w.getFullYear()))),[O,w]);return e.createElement("div",{className:o(u.datePickerHeader,D)},e.createElement(s,{gap:"small"},e.createElement(i,{className:u.monthButtonDropdown,"aria-label":v,options:L,value:R,onChange:P,menuWrapperClassName:u.monthButtonDropdown,size:"small",valueRenderer:e=>x,searchable:!1,clearable:!1,borderless:!0}),e.createElement(i,{className:u.yearButtonDropdown,"aria-label":y,options:O,value:S,onChange:F,menuWrapperClassName:u.yearButtonDropdown,size:"small",valueRenderer:e=>H,searchable:!1,clearable:!1,borderless:!0})),e.createElement(s,null,e.createElement(n,{kind:"tertiary",size:"small","aria-label":k,onClick:N,icon:m}),e.createElement(n,{kind:"tertiary",size:"small","aria-label":g,onClick:C,icon:c})))};function f(e,a){return b(e,"yyyy",{locale:a})}function h(e,a){return b(e,"MMM",{locale:a})}export{v as default,h as getMonthButtonLabel,f as getYearButtonLabel};
|
|
2
|
+
//# sourceMappingURL=DatePickerHeader.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"DatePickerHeader.js","sources":["../../../src/DatePicker/DatePickerHeader.tsx"],"sourcesContent":["import React, { type FC, useCallback, useMemo } from \"react\";\nimport cx from \"classnames\";\nimport { useDayPicker, useNavigation } from \"react-day-picker\";\nimport { IconButton } from \"@vibe/icon-button\";\nimport { Flex } from \"@vibe/layout\";\nimport { Dropdown } from \"@vibe/dropdown\";\nimport { DropdownChevronRight, DropdownChevronLeft } from \"@vibe/icons\";\nimport styles from \"./DatePickerHeader.module.scss\";\nimport { useMonthsOptionItems, useYearsOptionItems, type DatePickerDropdownItem } from \"./datePickerHooks\";\nimport { format, type Locale } from \"date-fns\";\n\nexport interface DatePickerHeaderProps {\n setDisplayMonth: (displayMonth: Date) => void;\n monthSelectionAriaLabel?: string;\n yearSelectionAriaLabel?: string;\n nextButtonAriaLabel?: string;\n prevButtonAriaLabel?: string;\n locale?: Locale;\n className?: string;\n dropdownsClassName?: string;\n dialogContainerSelector?: string;\n}\n\nconst DatePickerHeader: FC<DatePickerHeaderProps> = ({\n setDisplayMonth,\n monthSelectionAriaLabel,\n yearSelectionAriaLabel,\n nextButtonAriaLabel,\n prevButtonAriaLabel,\n locale,\n className,\n dialogContainerSelector: _dialogContainerSelector\n}) => {\n const { month: displayMonth } = useDayPicker();\n const { goToMonth, nextMonth, previousMonth } = useNavigation();\n const goToNextMonth = useCallback(() => goToMonth(nextMonth), [goToMonth, nextMonth]);\n const goToPreviousMonth = useCallback(() => goToMonth(previousMonth), [goToMonth, previousMonth]);\n const monthsData = useMonthsOptionItems({ locale });\n const yearsData = useYearsOptionItems({ locale });\n\n const months = useMemo(() => monthsData.map(item => ({ ...item, value: item.id })), [monthsData]);\n const years = useMemo(() => yearsData.map(item => ({ ...item, value: item.id })), [yearsData]);\n const monthButtonLabel = useMemo(() => getMonthButtonLabel(displayMonth, locale), [displayMonth, locale]);\n const yearsButtonLabel = useMemo(() => getYearButtonLabel(displayMonth, locale), [displayMonth, locale]);\n\n const onMonthSelect = useCallback(\n (option: DatePickerDropdownItem) => {\n const month = option.value;\n const date = new Date(displayMonth);\n date.setMonth(+month);\n setDisplayMonth(date);\n },\n [displayMonth, setDisplayMonth]\n );\n\n const onYearSelect = useCallback(\n (option: DatePickerDropdownItem) => {\n const year = option.value;\n const date = new Date(displayMonth);\n date.setFullYear(+year);\n setDisplayMonth(date);\n },\n [displayMonth, setDisplayMonth]\n );\n\n const selectedMonth = useMemo(\n () => months.find(month => month.value === displayMonth.getMonth().toString()),\n [months, displayMonth]\n );\n const selectedYear = useMemo(\n () => years.find(year => year.value === displayMonth.getFullYear().toString()),\n [years, displayMonth]\n );\n\n return (\n <div className={cx(styles.datePickerHeader, className)}>\n <Flex gap=\"small\">\n <Dropdown\n className={styles.monthButtonDropdown}\n aria-label={monthSelectionAriaLabel}\n options={months}\n value={selectedMonth}\n onChange={onMonthSelect}\n menuWrapperClassName={styles.monthButtonDropdown}\n size=\"small\"\n valueRenderer={(_option: DatePickerDropdownItem) => monthButtonLabel}\n searchable={false}\n clearable={false}\n borderless\n />\n <Dropdown\n className={styles.yearButtonDropdown}\n aria-label={yearSelectionAriaLabel}\n options={years}\n value={selectedYear}\n onChange={onYearSelect}\n menuWrapperClassName={styles.yearButtonDropdown}\n size=\"small\"\n valueRenderer={(_option: DatePickerDropdownItem) => yearsButtonLabel}\n searchable={false}\n clearable={false}\n borderless\n />\n </Flex>\n <Flex>\n <IconButton\n kind=\"tertiary\"\n size=\"small\"\n aria-label={prevButtonAriaLabel}\n onClick={goToPreviousMonth}\n icon={DropdownChevronLeft}\n />\n <IconButton\n kind=\"tertiary\"\n size=\"small\"\n aria-label={nextButtonAriaLabel}\n onClick={goToNextMonth}\n icon={DropdownChevronRight}\n />\n </Flex>\n </div>\n );\n};\n\nexport default DatePickerHeader;\n\nexport function getYearButtonLabel(displayMonth: Date, locale: Locale) {\n return format(displayMonth, \"yyyy\", { locale });\n}\n\nexport function getMonthButtonLabel(displayMonth: Date, locale: Locale) {\n return format(displayMonth, \"MMM\", { locale });\n}\n"],"names":["DatePickerHeader","setDisplayMonth","monthSelectionAriaLabel","yearSelectionAriaLabel","nextButtonAriaLabel","prevButtonAriaLabel","locale","className","month","displayMonth","useDayPicker","goToMonth","nextMonth","previousMonth","useNavigation","goToNextMonth","useCallback","goToPreviousMonth","monthsData","useMonthsOptionItems","yearsData","useYearsOptionItems","months","useMemo","map","item","Object","assign","value","id","years","monthButtonLabel","getMonthButtonLabel","yearsButtonLabel","getYearButtonLabel","onMonthSelect","option","date","Date","setMonth","onYearSelect","year","setFullYear","selectedMonth","find","getMonth","selectedYear","getFullYear","React","createElement","cx","styles","datePickerHeader","Flex","gap","Dropdown","monthButtonDropdown","options","onChange","menuWrapperClassName","size","valueRenderer","_option","searchable","clearable","borderless","yearButtonDropdown","IconButton","kind","onClick","icon","DropdownChevronLeft","DropdownChevronRight","format"],"mappings":"kgBAuBMA,MAAAA,EAA8CA,EAClDC,kBACAC,0BACAC,yBACAC,sBACAC,sBACAC,SACAC,gBAGA,MAAQC,MAAOC,GAAiBC,KAC1BC,UAAEA,EAASC,UAAEA,EAASC,cAAEA,GAAkBC,IAC1CC,EAAgBC,GAAY,IAAML,EAAUC,IAAY,CAACD,EAAWC,IACpEK,EAAoBD,GAAY,IAAML,EAAUE,IAAgB,CAACF,EAAWE,IAC5EK,EAAaC,EAAqB,CAAEb,WACpCc,EAAYC,EAAoB,CAAEf,WAElCgB,EAASC,GAAQ,IAAML,EAAWM,KAAIC,GAAcC,OAAAC,OAAAD,OAAAC,OAAA,CAAA,EAAAF,GAAM,CAAAG,MAAOH,EAAKI,QAAQ,CAACX,IAC/EY,EAAQP,GAAQ,IAAMH,EAAUI,KAAIC,GAAcC,OAAAC,OAAAD,OAAAC,OAAA,CAAA,EAAAF,GAAM,CAAAG,MAAOH,EAAKI,QAAQ,CAACT,IAC7EW,EAAmBR,GAAQ,IAAMS,EAAoBvB,EAAcH,IAAS,CAACG,EAAcH,IAC3F2B,EAAmBV,GAAQ,IAAMW,EAAmBzB,EAAcH,IAAS,CAACG,EAAcH,IAE1F6B,EAAgBnB,GACnBoB,IACC,MAAM5B,EAAQ4B,EAAOR,MACfS,EAAO,IAAIC,KAAK7B,GACtB4B,EAAKE,UAAU/B,GACfP,EAAgBoC,EAAK,GAEvB,CAAC5B,EAAcR,IAGXuC,EAAexB,GAClBoB,IACC,MAAMK,EAAOL,EAAOR,MACdS,EAAO,IAAIC,KAAK7B,GACtB4B,EAAKK,aAAaD,GAClBxC,EAAgBoC,EAAK,GAEvB,CAAC5B,EAAcR,IAGX0C,EAAgBpB,GACpB,IAAMD,EAAOsB,MAAKpC,GAASA,EAAMoB,QAAUnB,KAAaoC,cACxD,CAACvB,EAAQb,IAELqC,EAAevB,GACnB,IAAMO,EAAMc,MAAKH,GAAQA,EAAKb,QAAUnB,KAAasC,iBACrD,CAACjB,EAAOrB,IAGV,OACEuC,EAAKC,cAAA,MAAA,CAAA1C,UAAW2C,EAAGC,EAAOC,iBAAkB7C,IAC1CyC,EAAAC,cAACI,EAAI,CAACC,IAAI,SACRN,EAACC,cAAAM,GACChD,UAAW4C,EAAOK,oBACN,aAAAtD,EACZuD,QAASnC,EACTM,MAAOe,EACPe,SAAUvB,EACVwB,qBAAsBR,EAAOK,oBAC7BI,KAAK,QACLC,cAAgBC,GAAoC/B,EACpDgC,YAAY,EACZC,WAAW,EACXC,YACA,IACFjB,EAACC,cAAAM,GACChD,UAAW4C,EAAOe,mBACN,aAAA/D,EACZsD,QAAS3B,EACTF,MAAOkB,EACPY,SAAUlB,EACVmB,qBAAsBR,EAAOe,mBAC7BN,KAAK,QACLC,cAAgBC,GAAoC7B,EACpD8B,YAAY,EACZC,WAAW,EACXC,YAAU,KAGdjB,EAAAC,cAACI,EAAI,KACHL,EAAAC,cAACkB,EACC,CAAAC,KAAK,WACLR,KAAK,qBACOvD,EACZgE,QAASpD,EACTqD,KAAMC,IAERvB,EAACC,cAAAkB,GACCC,KAAK,WACLR,KAAK,QACO,aAAAxD,EACZiE,QAAStD,EACTuD,KAAME,KAGN,EAMM,SAAAtC,EAAmBzB,EAAoBH,GACrD,OAAOmE,EAAOhE,EAAc,OAAQ,CAAEH,UACxC,CAEgB,SAAA0B,EAAoBvB,EAAoBH,GACtD,OAAOmE,EAAOhE,EAAc,MAAO,CAAEH,UACvC"}
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
var e={monthButtonDropdown:"monthButtonDropdown",yearButtonDropdown:"yearButtonDropdown",datePickerHeader:"datePickerHeader"};!function(e){const t="s_id-a12251d5376d_4_0_0";if("undefined"!=typeof document){const n=document.head||document.getElementsByTagName("head")[0];if(n.querySelector("#"+t))return;const o=document.createElement("style");o.id=t,n.firstChild?n.insertBefore(o,n.firstChild):n.appendChild(o),o.appendChild(document.createTextNode(e))}else globalThis.injectedStyles&&(globalThis.injectedStyles[t]=e)}("/* stylelint-disable */\n/* stylelint-enable */\n.monthButtonDropdown {\n min-width: 70px;\n justify-content: space-between;\n}\n.yearButtonDropdown {\n justify-content: space-between;\n}\n.datePickerHeader {\n font: var(--font-text2-normal);\n height: var(--day-picker-header-height);\n color: var(--primary-text-color);\n display: flex;\n flex-direction: row;\n align-items: center;\n justify-content: space-between;\n}\n.datePickerHeader button:focus:not(:active), .datePickerHeader button:focus-visible {\n box-shadow: 0 0 0 2px var(--primary-color);\n background: var(--primary-background-color) !important;\n}");export{e as default};
|
|
2
|
+
//# sourceMappingURL=DatePickerHeader.module.scss.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"DatePickerHeader.module.scss.js","sources":[],"sourcesContent":[],"names":[],"mappings":""}
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
import e from"classnames";import t,{useRef as r,useEffect as n}from"react";import{DayContent as o}from"react-day-picker";import{useDayContentHoverContext as s}from"./DateContentHoverContext.js";import m from"./DatePicker.module.scss.js";const a=a=>{const{date:i,activeModifiers:l}=a,{setHover:c}=s(),u=r(null);return n((()=>{const e=u.current.closest("td"),t=()=>c(i),r=()=>c(void 0);return null==e||e.addEventListener("mouseenter",t),null==e||e.addEventListener("mouseleave",r),()=>{null==e||e.removeEventListener("mouseenter",t),null==e||e.removeEventListener("mouseleave",r)}}),[i,c]),t.createElement("div",{ref:u,className:e(m.datePickerDayContent,l)},t.createElement(o,Object.assign({},a)))};export{a as RangeDayContent};
|
|
2
|
+
//# sourceMappingURL=RangeDayContent.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"RangeDayContent.js","sources":["../../../src/DatePicker/RangeDayContent.tsx"],"sourcesContent":["import cx from \"classnames\";\nimport React, { useEffect, useRef } from \"react\";\nimport {\n type DayContentProps as DatePickerDayContentProps,\n DayContent as DatePickerDayContent\n} from \"react-day-picker\";\nimport { useDayContentHoverContext } from \"./DateContentHoverContext\";\nimport styles from \"./DatePicker.module.scss\";\n\nexport const RangeDayContent = (props: DatePickerDayContentProps) => {\n const { date, activeModifiers } = props;\n const { setHover } = useDayContentHoverContext();\n\n const ref = useRef<HTMLDivElement>(null);\n useEffect(() => {\n const td = ref.current.closest(\"td\");\n const onMouseEnter = () => setHover(date);\n const onMouseLeave = () => setHover(undefined);\n\n td?.addEventListener(\"mouseenter\", onMouseEnter);\n td?.addEventListener(\"mouseleave\", onMouseLeave);\n\n return () => {\n td?.removeEventListener(\"mouseenter\", onMouseEnter);\n td?.removeEventListener(\"mouseleave\", onMouseLeave);\n };\n }, [date, setHover]);\n\n return (\n <div ref={ref} className={cx(styles.datePickerDayContent, activeModifiers)}>\n <DatePickerDayContent {...props} />\n </div>\n );\n};\n"],"names":["RangeDayContent","props","date","activeModifiers","setHover","useDayContentHoverContext","ref","useRef","useEffect","td","current","closest","onMouseEnter","onMouseLeave","undefined","addEventListener","removeEventListener","React","createElement","className","cx","styles","datePickerDayContent","DatePickerDayContent","Object","assign"],"mappings":"6OASaA,MAAAA,EAAmBC,IAC9B,MAAMC,KAAEA,EAAIC,gBAAEA,GAAoBF,GAC5BG,SAAEA,GAAaC,IAEfC,EAAMC,EAAuB,MAenC,OAdAC,GAAU,KACR,MAAMC,EAAKH,EAAII,QAAQC,QAAQ,MACzBC,EAAeA,IAAMR,EAASF,GAC9BW,EAAeA,IAAMT,OAASU,GAKpC,OAHAL,SAAAA,EAAIM,iBAAiB,aAAcH,GACnCH,SAAAA,EAAIM,iBAAiB,aAAcF,GAE5B,KACLJ,SAAAA,EAAIO,oBAAoB,aAAcJ,GACtCH,SAAAA,EAAIO,oBAAoB,aAAcH,EAAa,CACpD,GACA,CAACX,EAAME,IAGRa,EAAAC,cAAA,MAAA,CAAKZ,IAAKA,EAAKa,UAAWC,EAAGC,EAAOC,qBAAsBnB,IACxDc,EAAAC,cAACK,EAAyBC,OAAAC,OAAA,CAAA,EAAAxB,IACtB"}
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
import e from"react";import{DayContent as t}from"react-day-picker";import r from"./DatePicker.module.scss.js";const a=a=>e.createElement("div",{className:r.datePickerDayContent},e.createElement(t,Object.assign({},a)));export{a as SingleDayContent};
|
|
2
|
+
//# sourceMappingURL=SingleDayContent.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"SingleDayContent.js","sources":["../../../src/DatePicker/SingleDayContent.tsx"],"sourcesContent":["import React from \"react\";\nimport {\n type DayContentProps as DatePickerDayContentProps,\n DayContent as DatePickerDayContent\n} from \"react-day-picker\";\nimport styles from \"./DatePicker.module.scss\";\n\nexport const SingleDayContent = (dayContentProps: DatePickerDayContentProps) => (\n <div className={styles.datePickerDayContent}>\n <DatePickerDayContent {...dayContentProps} />\n </div>\n);\n"],"names":["SingleDayContent","dayContentProps","React","createElement","className","styles","datePickerDayContent","DatePickerDayContent","Object","assign"],"mappings":"8GAOO,MAAMA,EAAoBC,GAC/BC,EAAKC,cAAA,MAAA,CAAAC,UAAWC,EAAOC,sBACrBJ,EAAAC,cAACI,EAAyBC,OAAAC,OAAA,CAAA,EAAAR"}
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
import { type Locale } from "date-fns";
|
|
2
|
+
export interface DatePickerDropdownItem {
|
|
3
|
+
id: string;
|
|
4
|
+
label: string;
|
|
5
|
+
value: string;
|
|
6
|
+
}
|
|
7
|
+
export declare const useMonthsOptionItems: ({ locale }: {
|
|
8
|
+
locale?: Locale;
|
|
9
|
+
}) => {
|
|
10
|
+
id: string;
|
|
11
|
+
label: string;
|
|
12
|
+
}[];
|
|
13
|
+
export declare const useYearsOptionItems: ({ locale }: {
|
|
14
|
+
locale?: Locale;
|
|
15
|
+
}) => {
|
|
16
|
+
id: string;
|
|
17
|
+
label: string;
|
|
18
|
+
}[];
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
import{useMemo as e}from"react";import{format as l}from"date-fns";const t=[0,1,2,3,4,5,6,7,8,9,10,11],a=({locale:a})=>e((()=>t.map((e=>{const t=new Date;return t.setMonth(e,1),{id:""+e,label:l(t,"LLL",{locale:a})}}))),[a]),r=({locale:t})=>e((()=>Array.from({length:201},((e,l)=>{const t=new Date;return t.setFullYear(t.getFullYear()-100+l),t})).map((e=>({id:""+e.getFullYear(),label:l(e,"yyyy",{locale:t})})))),[t]);export{a as useMonthsOptionItems,r as useYearsOptionItems};
|
|
2
|
+
//# sourceMappingURL=datePickerHooks.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"datePickerHooks.js","sources":["../../../src/DatePicker/datePickerHooks.tsx"],"sourcesContent":["import { useMemo } from \"react\";\nimport { format, type Locale } from \"date-fns\";\n\nexport interface DatePickerDropdownItem {\n id: string;\n label: string;\n value: string;\n}\n\nconst monthsIndexes = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11];\nexport const useMonthsOptionItems = ({ locale }: { locale?: Locale }) =>\n useMemo(\n () =>\n monthsIndexes.map(monthIndex => {\n const month = new Date();\n month.setMonth(monthIndex, 1);\n return { id: monthIndex.toString(), label: format(month, \"LLL\", { locale }) };\n }),\n [locale]\n );\n\n// returns a list of all years from 100 years ago to 100 years in the future\nconst YEARS_AGO = 100;\nconst YEARS_IN_FUTURE = 100;\nexport const useYearsOptionItems = ({ locale }: { locale?: Locale }) =>\n useMemo(\n () =>\n Array.from({ length: YEARS_AGO + YEARS_IN_FUTURE + 1 }, (_, i) => {\n const date = new Date();\n date.setFullYear(date.getFullYear() - YEARS_AGO + i);\n return date;\n }).map(year => ({\n id: year.getFullYear().toString(),\n label: format(year, \"yyyy\", { locale })\n })),\n [locale]\n );\n"],"names":["monthsIndexes","useMonthsOptionItems","locale","useMemo","map","monthIndex","month","Date","setMonth","id","label","format","useYearsOptionItems","Array","from","length","YEARS_AGO","_","i","date","setFullYear","getFullYear","year"],"mappings":"kEASA,MAAMA,EAAgB,CAAC,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GAAI,IAC5CC,EAAuBA,EAAGC,YACrCC,GACE,IACEH,EAAcI,KAAIC,IAChB,MAAMC,EAAQ,IAAIC,KAElB,OADAD,EAAME,SAASH,EAAY,GACpB,CAAEI,GAAIJ,KAAuBK,MAAOC,EAAOL,EAAO,MAAO,CAAEJ,WAAW,KAEjF,CAACA,IAMQU,EAAsBA,EAAGV,YACpCC,GACE,IACEU,MAAMC,KAAK,CAAEC,OAAQC,MAAmC,CAACC,EAAGC,KAC1D,MAAMC,EAAO,IAAIZ,KAEjB,OADAY,EAAKC,YAAYD,EAAKE,cAPZ,IAOwCH,GAC3CC,CAAI,IACVf,KAAIkB,IAAS,CACdb,GAAIa,KAAKD,cACTX,MAAOC,EAAOW,EAAM,OAAQ,CAAEpB,gBAElC,CAACA"}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import { type DateRange, type Matcher } from "react-day-picker";
|
|
2
|
+
export type Intent = "to" | "from";
|
|
3
|
+
export declare function addToRange(day: Date, { from, to }: DateRange, intent: Intent): DateRange;
|
|
4
|
+
export declare const AddToRangeMiddle = "addToRangeMiddle";
|
|
5
|
+
export declare const AddToRangeStart = "addToRangeStart";
|
|
6
|
+
export declare const AddToRangeEnd = "addToRangeEnd";
|
|
7
|
+
export declare const RemoveFromRange = "removeFromRange";
|
|
8
|
+
export declare const HoveredDayExists = "HoveredDayExists";
|
|
9
|
+
export declare const HalfRangeSelected = "HalfRangeSelected";
|
|
10
|
+
type GetDateNextStateResult = typeof AddToRangeMiddle | typeof AddToRangeStart | typeof AddToRangeEnd | typeof RemoveFromRange | undefined;
|
|
11
|
+
export declare function addToRangeNextState(day: Date, dayToAdd: Date, range: DateRange, intent: Intent): GetDateNextStateResult;
|
|
12
|
+
export declare function addToRangeModifiers(dayToAdd: Date, range: DateRange, intent: Intent): Record<string, Matcher>;
|
|
13
|
+
export {};
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
import{isBefore as r,isSameDay as o,isAfter as t}from"date-fns";function f(f,{from:e,to:n},i){if(!e&&!n)return"from"===i?{from:f,to:void 0}:{from:void 0,to:f};if(!e)return r(f,n)?{from:f,to:n}:{from:n,to:f};if(!n)return r(f,e)?{from:f,to:e}:{from:e,to:f};if("to"===i){if(o(f,e)&&o(f,n))return{from:void 0};if(o(f,e))return{from:void 0};if(r(f,e))return{from:f,to:n};if(t(f,e)&&r(f,n))return{from:e,to:f};if(t(f,n)||o(f,n))return{from:e,to:f}}else{if(o(f,e)&&o(f,n))return{from:void 0};if(o(f,n))return{from:f,to:f};if(t(f,n))return{from:e,to:f};if(r(f,n)&&t(f,e))return{from:f,to:n};if(r(f,e))return{from:f,to:n};if(o(f,n))return{from:f}}return{from:e,to:f}}const e=(f,e)=>!(!e.from||!e.to)&&((t(f,e.from)||o(f,e.from))&&(r(f,e.to)||o(f,e.to))),n="addToRangeMiddle",i="addToRangeStart",m="addToRangeEnd",u="removeFromRange",d="HoveredDayExists",a="HalfRangeSelected";function v(r,t,d,a){if(!t)return;const v=f(t,d,a);if(e(r,v)||e(r,d)){if(o(r,v.to)&&!o(r,d.to))return m;if(o(r,v.from)&&!o(r,d.from))return i;if(e(r,v)){if(e(r,d))return;return o(r,v.from)?i:o(r,v.to)?m:e(t,d)?void 0:n}return e(t,d)?u:void 0}}function c(r,o,t){return{[d]:()=>!!r,[a]:()=>!(!o||!(!o.from&&o.to||o.from&&!o.to)),[n]:f=>v(f,r,o,t)===n,[i]:f=>v(f,r,o,t)===i,[m]:f=>v(f,r,o,t)===m,[u]:f=>v(f,r,o,t)===u}}export{m as AddToRangeEnd,n as AddToRangeMiddle,i as AddToRangeStart,a as HalfRangeSelected,d as HoveredDayExists,u as RemoveFromRange,f as addToRange,c as addToRangeModifiers,v as addToRangeNextState};
|
|
2
|
+
//# sourceMappingURL=utils.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"utils.js","sources":["../../../src/DatePicker/utils.ts"],"sourcesContent":["import { isAfter, isBefore, isSameDay } from \"date-fns\";\nimport { type DateRange, type Matcher } from \"react-day-picker\";\n\nexport type Intent = \"to\" | \"from\";\n\nexport function addToRange(day: Date, { from, to }: DateRange, intent: Intent): DateRange {\n if (!from && !to) {\n return intent === \"from\" ? { from: day, to: undefined } : { from: undefined, to: day };\n }\n\n if (!from) {\n if (isBefore(day, to)) {\n return { from: day, to };\n }\n\n return { from: to, to: day };\n }\n\n if (!to) {\n if (isBefore(day, from)) {\n return { from: day, to: from };\n }\n\n return { from, to: day };\n }\n\n if (intent === \"to\") {\n if (isSameDay(day, from) && isSameDay(day, to)) {\n return { from: undefined };\n }\n\n if (isSameDay(day, from)) {\n // both from & to selected + user clicks on start -> clear selection\n return { from: undefined };\n }\n\n if (isBefore(day, from)) {\n return { from: day, to };\n }\n\n if (isAfter(day, from) && isBefore(day, to)) {\n return { from, to: day };\n }\n\n if (isAfter(day, to) || isSameDay(day, to)) {\n return { from, to: day };\n }\n } else {\n // intent is from\n if (isSameDay(day, from) && isSameDay(day, to)) {\n return { from: undefined };\n }\n\n if (isSameDay(day, to)) {\n return { from: day, to: day };\n }\n\n if (isAfter(day, to)) {\n return { from, to: day };\n }\n\n if (isBefore(day, to) && isAfter(day, from)) {\n return { from: day, to };\n }\n\n if (isBefore(day, from)) {\n return { from: day, to };\n }\n\n if (isSameDay(day, to)) {\n // both from & to selected + user clicks on end -> end becomes start\n return { from: day };\n }\n }\n\n return { from, to: day };\n}\n\nconst isInRange = (day: Date, range: DateRange): boolean => {\n if (!range.from || !range.to) {\n return false;\n }\n\n return (\n (isAfter(day, range.from) || isSameDay(day, range.from)) && (isBefore(day, range.to) || isSameDay(day, range.to))\n );\n};\n\nexport const AddToRangeMiddle = \"addToRangeMiddle\";\nexport const AddToRangeStart = \"addToRangeStart\";\nexport const AddToRangeEnd = \"addToRangeEnd\";\nexport const RemoveFromRange = \"removeFromRange\";\nexport const HoveredDayExists = \"HoveredDayExists\";\nexport const HalfRangeSelected = \"HalfRangeSelected\";\n\ntype GetDateNextStateResult =\n | typeof AddToRangeMiddle\n | typeof AddToRangeStart\n | typeof AddToRangeEnd\n | typeof RemoveFromRange\n | undefined;\n\nexport function addToRangeNextState(\n day: Date,\n dayToAdd: Date,\n range: DateRange,\n intent: Intent\n): GetDateNextStateResult {\n if (!dayToAdd) {\n return undefined;\n }\n\n const nextRange = addToRange(dayToAdd, range, intent);\n\n if (!isInRange(day, nextRange) && !isInRange(day, range)) {\n return undefined;\n }\n\n if (isSameDay(day, nextRange.to) && !isSameDay(day, range.to)) {\n return AddToRangeEnd;\n }\n\n if (isSameDay(day, nextRange.from) && !isSameDay(day, range.from)) {\n return AddToRangeStart;\n }\n\n if (isInRange(day, nextRange)) {\n if (isInRange(day, range)) {\n return undefined;\n }\n\n if (isSameDay(day, nextRange.from)) {\n return AddToRangeStart;\n }\n\n if (isSameDay(day, nextRange.to)) {\n return AddToRangeEnd;\n }\n\n return !isInRange(dayToAdd, range) ? AddToRangeMiddle : undefined;\n }\n\n return isInRange(dayToAdd, range) ? RemoveFromRange : undefined;\n}\n\nexport function addToRangeModifiers(dayToAdd: Date, range: DateRange, intent: Intent): Record<string, Matcher> {\n return {\n [HoveredDayExists]: () => !!dayToAdd,\n [HalfRangeSelected]: () => !!(range && ((!range.from && range.to) || (range.from && !range.to))),\n [AddToRangeMiddle]: (day: Date) => addToRangeNextState(day, dayToAdd, range, intent) === AddToRangeMiddle,\n [AddToRangeStart]: (day: Date) => addToRangeNextState(day, dayToAdd, range, intent) === AddToRangeStart,\n [AddToRangeEnd]: (day: Date) => addToRangeNextState(day, dayToAdd, range, intent) === AddToRangeEnd,\n [RemoveFromRange]: (day: Date) => addToRangeNextState(day, dayToAdd, range, intent) === RemoveFromRange\n };\n}\n"],"names":["addToRange","day","from","to","intent","undefined","isBefore","isSameDay","isAfter","isInRange","range","AddToRangeMiddle","AddToRangeStart","AddToRangeEnd","RemoveFromRange","HoveredDayExists","HalfRangeSelected","addToRangeNextState","dayToAdd","nextRange","addToRangeModifiers"],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export * from "./DatePicker";
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sources":[],"sourcesContent":[],"names":[],"mappings":""}
|
package/package.json
ADDED
|
@@ -0,0 +1,77 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "@vibe/date-picker",
|
|
3
|
+
"version": "4.0.0",
|
|
4
|
+
"description": "Vibe sub-package for DatePicker component",
|
|
5
|
+
"repository": {
|
|
6
|
+
"type": "git",
|
|
7
|
+
"url": "git+https://github.com/mondaycom/vibe.git",
|
|
8
|
+
"directory": "packages/components/date-picker"
|
|
9
|
+
},
|
|
10
|
+
"bugs": {
|
|
11
|
+
"url": "https://github.com/mondaycom/vibe/issues"
|
|
12
|
+
},
|
|
13
|
+
"homepage": "https://github.com/mondaycom/vibe#readme",
|
|
14
|
+
"author": "monday.com",
|
|
15
|
+
"license": "MIT",
|
|
16
|
+
"type": "module",
|
|
17
|
+
"main": "dist/index.js",
|
|
18
|
+
"types": "dist/index.d.ts",
|
|
19
|
+
"files": [
|
|
20
|
+
"dist"
|
|
21
|
+
],
|
|
22
|
+
"exports": {
|
|
23
|
+
"./package.json": "./package.json",
|
|
24
|
+
".": {
|
|
25
|
+
"types": "./dist/index.d.ts",
|
|
26
|
+
"import": "./dist/index.js",
|
|
27
|
+
"default": "./dist/index.js"
|
|
28
|
+
},
|
|
29
|
+
"./mockedClassNames": {
|
|
30
|
+
"import": "./dist/mocked_classnames/index.js",
|
|
31
|
+
"default": "./dist/mocked_classnames/index.js"
|
|
32
|
+
}
|
|
33
|
+
},
|
|
34
|
+
"scripts": {
|
|
35
|
+
"build": "rollup -c && yarn build:mocked-classnames",
|
|
36
|
+
"build:mocked-classnames": "[ \"$SKIP_RELEASE_ARTIFACTS\" = \"true\" ] || mock_classnames=on rollup -c",
|
|
37
|
+
"test": "vitest run",
|
|
38
|
+
"lint": "eslint \"./src/**/*.{js,jsx,ts,tsx}\""
|
|
39
|
+
},
|
|
40
|
+
"dependencies": {
|
|
41
|
+
"@vibe/dropdown": "4.0.1",
|
|
42
|
+
"@vibe/icon-button": "4.0.17",
|
|
43
|
+
"@vibe/icons": "4.1.0",
|
|
44
|
+
"@vibe/layout": "4.0.11",
|
|
45
|
+
"@vibe/shared": "4.0.9",
|
|
46
|
+
"@vibe/style": "4.1.0",
|
|
47
|
+
"classnames": "^2.5.1",
|
|
48
|
+
"date-fns": "^2.30.0",
|
|
49
|
+
"es-toolkit": "^1.39.10",
|
|
50
|
+
"react-day-picker": "^8.10.2"
|
|
51
|
+
},
|
|
52
|
+
"devDependencies": {
|
|
53
|
+
"@testing-library/jest-dom": "^6.4.6",
|
|
54
|
+
"@testing-library/react": "^12.1.2",
|
|
55
|
+
"@vibe/config": "4.0.2",
|
|
56
|
+
"react": "^16.13.0",
|
|
57
|
+
"react-dom": "^16.13.0",
|
|
58
|
+
"react-test-renderer": "16",
|
|
59
|
+
"typescript": "^5.9.3",
|
|
60
|
+
"vitest": "^1.6.0"
|
|
61
|
+
},
|
|
62
|
+
"peerDependencies": {
|
|
63
|
+
"react": ">=16.9.0",
|
|
64
|
+
"react-dom": ">=16.9.0"
|
|
65
|
+
},
|
|
66
|
+
"sideEffects": [
|
|
67
|
+
"*.scss",
|
|
68
|
+
"*.css",
|
|
69
|
+
"*.scss.js",
|
|
70
|
+
"*.css.js"
|
|
71
|
+
],
|
|
72
|
+
"eslintConfig": {
|
|
73
|
+
"extends": [
|
|
74
|
+
"../../../node_modules/@vibe/config/.eslintrc.cjs"
|
|
75
|
+
]
|
|
76
|
+
}
|
|
77
|
+
}
|