@chayns-components/date 5.0.0-beta.835 → 5.0.0-beta.836
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/lib/cjs/components/opening-times/opening-inputs/OpeningInputs.js +2 -2
- package/lib/cjs/components/opening-times/opening-inputs/OpeningInputs.js.map +1 -1
- package/lib/cjs/index.js +7 -0
- package/lib/cjs/index.js.map +1 -1
- package/lib/esm/components/opening-times/opening-inputs/OpeningInputs.js +2 -2
- package/lib/esm/components/opening-times/opening-inputs/OpeningInputs.js.map +1 -1
- package/lib/esm/index.js +1 -0
- package/lib/esm/index.js.map +1 -1
- package/lib/types/components/opening-times/opening-inputs/OpeningInputs.d.ts +32 -2
- package/lib/types/index.d.ts +1 -0
- package/package.json +2 -2
|
@@ -22,8 +22,8 @@ const OpeningInputs = ({
|
|
|
22
22
|
id,
|
|
23
23
|
onChange,
|
|
24
24
|
currentDayId,
|
|
25
|
-
editMode,
|
|
26
|
-
closedText
|
|
25
|
+
editMode = false,
|
|
26
|
+
closedText = ''
|
|
27
27
|
}) => {
|
|
28
28
|
const [newTimes, setNewTimes] = (0, _react.useState)();
|
|
29
29
|
const [invalidTimes, setInvalidTimes] = (0, _react.useState)([]);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"OpeningInputs.js","names":["_framerMotion","require","_react","_interopRequireWildcard","_uuid","_openingTimes","_OpeningInput","_interopRequireDefault","_OpeningInputs","e","__esModule","default","_getRequireWildcardCache","WeakMap","r","t","has","get","n","__proto__","a","Object","defineProperty","getOwnPropertyDescriptor","u","hasOwnProperty","call","i","set","OpeningInputs","times","isDisabled","onRemove","onAdd","onInvalid","id","onChange","currentDayId","editMode","closedText","newTimes","setNewTimes","useState","invalidTimes","setInvalidTimes","useEffect","handleAdd","useCallback","defaultTime","start","end","uuidV4","prevState","handleRemove","timeId","filter","time","result","length","currentTime","prevTime","currStart","Date","currEnd","push","prevEnd","invalidTimeIds","map","invalidId","handleChange","newTime","updatedTimes","content","useMemo","items","forEach","index","text","createElement","StyledOpeningInputPreview","key","buttonType","OpeningTimesButtonType","NONE","ADD","REMOVE","isInvalid","includes","gap","StyledOpeningInputs","$editMode","animate","initial","AnimatePresence","displayName","_default","exports"],"sources":["../../../../../src/components/opening-times/opening-inputs/OpeningInputs.tsx"],"sourcesContent":["import { AnimatePresence } from 'framer-motion';\nimport React, { FC, useCallback, useEffect, useMemo, useState, type ReactElement } from 'react';\nimport { v4 as uuidV4 } from 'uuid';\nimport { OpeningTimesButtonType, type OpeningTime, type Time } from '../../../types/openingTimes';\nimport OpeningInput from './opening-input/OpeningInput';\nimport { StyledOpeningInputPreview, StyledOpeningInputs } from './OpeningInputs.styles';\n\nexport type OpeningInputsProps = {\n times: Time[];\n isDisabled?: boolean;\n onChange?: (time: Time) => void;\n onAdd?: (time: Time, id: string) => void;\n onRemove?: (id: Time['id']) => void;\n onInvalid?: (openingTimeId: string, timeIds: string[]) => void;\n id: string;\n currentDayId?: OpeningTime['id'];\n editMode: boolean;\n closedText: string;\n};\n\nconst OpeningInputs: FC<OpeningInputsProps> = ({\n times,\n isDisabled,\n onRemove,\n onAdd,\n onInvalid,\n id,\n onChange,\n currentDayId,\n editMode,\n closedText,\n}) => {\n const [newTimes, setNewTimes] = useState<Time[]>();\n const [invalidTimes, setInvalidTimes] = useState<string[]>([]);\n\n useEffect(() => {\n setNewTimes(times);\n }, [times]);\n\n const handleAdd = useCallback(() => {\n const defaultTime: Time = { start: '08:00', end: '18:00', id: uuidV4() };\n\n setNewTimes((prevState) => (prevState ? [...prevState, defaultTime] : [defaultTime]));\n\n if (typeof onAdd === 'function') {\n onAdd(defaultTime, id);\n }\n }, [id, onAdd]);\n\n const handleRemove = useCallback(\n (timeId: string) => {\n setNewTimes((prevState) => (prevState ?? []).filter((time) => time.id !== timeId));\n\n if (typeof onRemove === 'function') {\n onRemove(timeId);\n }\n },\n [onRemove],\n );\n\n useEffect(() => {\n const result: Time[] = [];\n\n for (let i = 0; i < times.length; i++) {\n const currentTime = times[i];\n const prevTime = times[i - 1];\n\n if (currentTime) {\n const currStart = new Date(`2000-01-01T${currentTime.start}`);\n const currEnd = new Date(`2000-01-01T${currentTime.end}`);\n\n if (currStart >= currEnd) {\n result.push(currentTime);\n }\n\n if (prevTime) {\n const prevEnd = new Date(`2000-01-01T${prevTime.end}`);\n\n if (prevEnd > currStart) {\n result.push(prevTime, currentTime);\n }\n }\n }\n }\n\n const invalidTimeIds = result.map(({ id: invalidId }) => invalidId);\n\n setInvalidTimes(invalidTimeIds);\n\n if (typeof onInvalid === 'function') {\n onInvalid(id, invalidTimeIds);\n }\n }, [id, onInvalid, times]);\n\n const handleChange = useCallback(\n (newTime: Time) => {\n setNewTimes((prevState) => {\n const updatedTimes = (prevState ?? []).map((time) => {\n if (time.id === newTime.id) {\n return newTime;\n }\n return time;\n });\n\n if (typeof onChange === 'function') {\n onChange(newTime);\n }\n\n return updatedTimes;\n });\n },\n [onChange],\n );\n\n const content = useMemo(() => {\n const items: ReactElement[] = [];\n\n if (!newTimes) {\n return items;\n }\n\n newTimes.forEach(({ end, start, id: timeId }, index) => {\n if (!editMode) {\n const text = isDisabled ? closedText : `${start} - ${end}`;\n\n items.push(\n <StyledOpeningInputPreview key={`opening-times-preview__${id}.${timeId}`}>\n {`${text}${currentDayId && newTimes.length > 1 && index === 0 ? ', ' : ''}`}\n </StyledOpeningInputPreview>,\n );\n\n return;\n }\n\n if (index > 1) {\n return;\n }\n\n let buttonType = OpeningTimesButtonType.NONE;\n\n if (index === 0 && times.length === 1 && !isDisabled) {\n buttonType = OpeningTimesButtonType.ADD;\n } else if (index === 1 && !isDisabled) {\n buttonType = OpeningTimesButtonType.REMOVE;\n }\n\n items.push(\n <OpeningInput\n key={`opening-times-input__${id}.${timeId}`}\n start={start}\n id={timeId}\n end={end}\n isDisabled={isDisabled}\n isInvalid={invalidTimes.includes(timeId)}\n buttonType={buttonType}\n onAdd={handleAdd}\n onChange={(time) => handleChange(time)}\n onRemove={() => handleRemove(timeId)}\n />,\n );\n });\n\n return items;\n }, [\n closedText,\n currentDayId,\n editMode,\n handleAdd,\n handleChange,\n handleRemove,\n id,\n invalidTimes,\n isDisabled,\n newTimes,\n times.length,\n ]);\n\n const gap = useMemo(() => {\n if ((newTimes && newTimes.length > 1 && editMode) || (!editMode && currentDayId)) {\n return '8px';\n }\n\n return 0;\n }, [currentDayId, editMode, newTimes]);\n\n return useMemo(\n () => (\n <StyledOpeningInputs\n $editMode={!currentDayId}\n key={`opening-inputs__${id}`}\n animate={{ gap }}\n initial={{ gap: 0 }}\n >\n <AnimatePresence initial={false}>{content}</AnimatePresence>\n </StyledOpeningInputs>\n ),\n [content, currentDayId, gap, id],\n );\n};\n\nOpeningInputs.displayName = 'OpeningInputs';\n\nexport default OpeningInputs;\n"],"mappings":"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","ignoreList":[]}
|
|
1
|
+
{"version":3,"file":"OpeningInputs.js","names":["_framerMotion","require","_react","_interopRequireWildcard","_uuid","_openingTimes","_OpeningInput","_interopRequireDefault","_OpeningInputs","e","__esModule","default","_getRequireWildcardCache","WeakMap","r","t","has","get","n","__proto__","a","Object","defineProperty","getOwnPropertyDescriptor","u","hasOwnProperty","call","i","set","OpeningInputs","times","isDisabled","onRemove","onAdd","onInvalid","id","onChange","currentDayId","editMode","closedText","newTimes","setNewTimes","useState","invalidTimes","setInvalidTimes","useEffect","handleAdd","useCallback","defaultTime","start","end","uuidV4","prevState","handleRemove","timeId","filter","time","result","length","currentTime","prevTime","currStart","Date","currEnd","push","prevEnd","invalidTimeIds","map","invalidId","handleChange","newTime","updatedTimes","content","useMemo","items","forEach","index","text","createElement","StyledOpeningInputPreview","key","buttonType","OpeningTimesButtonType","NONE","ADD","REMOVE","isInvalid","includes","gap","StyledOpeningInputs","$editMode","animate","initial","AnimatePresence","displayName","_default","exports"],"sources":["../../../../../src/components/opening-times/opening-inputs/OpeningInputs.tsx"],"sourcesContent":["import { AnimatePresence } from 'framer-motion';\nimport React, { FC, useCallback, useEffect, useMemo, useState, type ReactElement } from 'react';\nimport { v4 as uuidV4 } from 'uuid';\nimport { OpeningTimesButtonType, type OpeningTime, type Time } from '../../../types/openingTimes';\nimport OpeningInput from './opening-input/OpeningInput';\nimport { StyledOpeningInputPreview, StyledOpeningInputs } from './OpeningInputs.styles';\n\nexport type OpeningInputsProps = {\n /**\n * Array of opening times\n */\n times: Time[];\n /**\n * If the inputs are disabled\n */\n isDisabled?: boolean;\n /**\n * Function that is called when a time is changed\n */\n onChange?: (time: Time) => void;\n /**\n * Function that is called when a new time is added\n */\n onAdd?: (time: Time, id: string) => void;\n /**\n * Function that is called when a time is removed\n */\n onRemove?: (id: Time['id']) => void;\n /**\n * Function that is called when the times are invalid\n */\n onInvalid?: (openingTimeId: string, timeIds: string[]) => void;\n /**\n * The id of the opening time\n */\n id: string;\n /**\n * The id of the current day\n */\n currentDayId?: OpeningTime['id'];\n /**\n * If the edit mode is enabled\n */\n editMode?: boolean;\n /**\n * The text to show when the inputs are disabled\n */\n closedText?: string;\n};\n\nconst OpeningInputs: FC<OpeningInputsProps> = ({\n times,\n isDisabled,\n onRemove,\n onAdd,\n onInvalid,\n id,\n onChange,\n currentDayId,\n editMode = false,\n closedText = '',\n}) => {\n const [newTimes, setNewTimes] = useState<Time[]>();\n const [invalidTimes, setInvalidTimes] = useState<string[]>([]);\n\n useEffect(() => {\n setNewTimes(times);\n }, [times]);\n\n const handleAdd = useCallback(() => {\n const defaultTime: Time = { start: '08:00', end: '18:00', id: uuidV4() };\n\n setNewTimes((prevState) => (prevState ? [...prevState, defaultTime] : [defaultTime]));\n\n if (typeof onAdd === 'function') {\n onAdd(defaultTime, id);\n }\n }, [id, onAdd]);\n\n const handleRemove = useCallback(\n (timeId: string) => {\n setNewTimes((prevState) => (prevState ?? []).filter((time) => time.id !== timeId));\n\n if (typeof onRemove === 'function') {\n onRemove(timeId);\n }\n },\n [onRemove],\n );\n\n useEffect(() => {\n const result: Time[] = [];\n\n for (let i = 0; i < times.length; i++) {\n const currentTime = times[i];\n const prevTime = times[i - 1];\n\n if (currentTime) {\n const currStart = new Date(`2000-01-01T${currentTime.start}`);\n const currEnd = new Date(`2000-01-01T${currentTime.end}`);\n\n if (currStart >= currEnd) {\n result.push(currentTime);\n }\n\n if (prevTime) {\n const prevEnd = new Date(`2000-01-01T${prevTime.end}`);\n\n if (prevEnd > currStart) {\n result.push(prevTime, currentTime);\n }\n }\n }\n }\n\n const invalidTimeIds = result.map(({ id: invalidId }) => invalidId);\n\n setInvalidTimes(invalidTimeIds);\n\n if (typeof onInvalid === 'function') {\n onInvalid(id, invalidTimeIds);\n }\n }, [id, onInvalid, times]);\n\n const handleChange = useCallback(\n (newTime: Time) => {\n setNewTimes((prevState) => {\n const updatedTimes = (prevState ?? []).map((time) => {\n if (time.id === newTime.id) {\n return newTime;\n }\n return time;\n });\n\n if (typeof onChange === 'function') {\n onChange(newTime);\n }\n\n return updatedTimes;\n });\n },\n [onChange],\n );\n\n const content = useMemo(() => {\n const items: ReactElement[] = [];\n\n if (!newTimes) {\n return items;\n }\n\n newTimes.forEach(({ end, start, id: timeId }, index) => {\n if (!editMode) {\n const text = isDisabled ? closedText : `${start} - ${end}`;\n\n items.push(\n <StyledOpeningInputPreview key={`opening-times-preview__${id}.${timeId}`}>\n {`${text}${currentDayId && newTimes.length > 1 && index === 0 ? ', ' : ''}`}\n </StyledOpeningInputPreview>,\n );\n\n return;\n }\n\n if (index > 1) {\n return;\n }\n\n let buttonType = OpeningTimesButtonType.NONE;\n\n if (index === 0 && times.length === 1 && !isDisabled) {\n buttonType = OpeningTimesButtonType.ADD;\n } else if (index === 1 && !isDisabled) {\n buttonType = OpeningTimesButtonType.REMOVE;\n }\n\n items.push(\n <OpeningInput\n key={`opening-times-input__${id}.${timeId}`}\n start={start}\n id={timeId}\n end={end}\n isDisabled={isDisabled}\n isInvalid={invalidTimes.includes(timeId)}\n buttonType={buttonType}\n onAdd={handleAdd}\n onChange={(time) => handleChange(time)}\n onRemove={() => handleRemove(timeId)}\n />,\n );\n });\n\n return items;\n }, [\n closedText,\n currentDayId,\n editMode,\n handleAdd,\n handleChange,\n handleRemove,\n id,\n invalidTimes,\n isDisabled,\n newTimes,\n times.length,\n ]);\n\n const gap = useMemo(() => {\n if ((newTimes && newTimes.length > 1 && editMode) || (!editMode && currentDayId)) {\n return '8px';\n }\n\n return 0;\n }, [currentDayId, editMode, newTimes]);\n\n return useMemo(\n () => (\n <StyledOpeningInputs\n $editMode={!currentDayId}\n key={`opening-inputs__${id}`}\n animate={{ gap }}\n initial={{ gap: 0 }}\n >\n <AnimatePresence initial={false}>{content}</AnimatePresence>\n </StyledOpeningInputs>\n ),\n [content, currentDayId, gap, id],\n );\n};\n\nOpeningInputs.displayName = 'OpeningInputs';\n\nexport default OpeningInputs;\n"],"mappings":"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","ignoreList":[]}
|
package/lib/cjs/index.js
CHANGED
|
@@ -15,6 +15,12 @@ Object.defineProperty(exports, "DateInfo", {
|
|
|
15
15
|
return _DateInfo.default;
|
|
16
16
|
}
|
|
17
17
|
});
|
|
18
|
+
Object.defineProperty(exports, "OpeningInputs", {
|
|
19
|
+
enumerable: true,
|
|
20
|
+
get: function () {
|
|
21
|
+
return _OpeningInputs.default;
|
|
22
|
+
}
|
|
23
|
+
});
|
|
18
24
|
Object.defineProperty(exports, "OpeningTimes", {
|
|
19
25
|
enumerable: true,
|
|
20
26
|
get: function () {
|
|
@@ -29,6 +35,7 @@ Object.defineProperty(exports, "useDateInfo", {
|
|
|
29
35
|
});
|
|
30
36
|
var _Calendar = _interopRequireDefault(require("./components/calendar/Calendar"));
|
|
31
37
|
var _DateInfo = _interopRequireDefault(require("./components/date-info/DateInfo"));
|
|
38
|
+
var _OpeningInputs = _interopRequireDefault(require("./components/opening-times/opening-inputs/OpeningInputs"));
|
|
32
39
|
var _OpeningTimes = _interopRequireDefault(require("./components/opening-times/OpeningTimes"));
|
|
33
40
|
var _useDateInfo = require("./hooks/useDateInfo");
|
|
34
41
|
function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
|
package/lib/cjs/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","names":["_Calendar","_interopRequireDefault","require","_DateInfo","_OpeningTimes","_useDateInfo","e","__esModule","default"],"sources":["../../src/index.ts"],"sourcesContent":["export { default as Calendar } from './components/calendar/Calendar';\nexport { default as DateInfo } from './components/date-info/DateInfo';\nexport { default as OpeningTimes } from './components/opening-times/OpeningTimes';\nexport { useDateInfo } from './hooks/useDateInfo';\nexport type {\n CalendarType,\n Categories,\n HighlightedDates,\n HighlightedDateStyles,\n} from './types/calendar';\nexport type { HintTextPosition, OpeningTime, Time, Weekday } from './types/openingTimes';\n"],"mappings":"
|
|
1
|
+
{"version":3,"file":"index.js","names":["_Calendar","_interopRequireDefault","require","_DateInfo","_OpeningInputs","_OpeningTimes","_useDateInfo","e","__esModule","default"],"sources":["../../src/index.ts"],"sourcesContent":["export { default as Calendar } from './components/calendar/Calendar';\nexport { default as DateInfo } from './components/date-info/DateInfo';\nexport { default as OpeningInputs } from './components/opening-times/opening-inputs/OpeningInputs';\nexport { default as OpeningTimes } from './components/opening-times/OpeningTimes';\nexport { useDateInfo } from './hooks/useDateInfo';\nexport type {\n CalendarType,\n Categories,\n HighlightedDates,\n HighlightedDateStyles,\n} from './types/calendar';\nexport type { HintTextPosition, OpeningTime, Time, Weekday } from './types/openingTimes';\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,IAAAA,SAAA,GAAAC,sBAAA,CAAAC,OAAA;AACA,IAAAC,SAAA,GAAAF,sBAAA,CAAAC,OAAA;AACA,IAAAE,cAAA,GAAAH,sBAAA,CAAAC,OAAA;AACA,IAAAG,aAAA,GAAAJ,sBAAA,CAAAC,OAAA;AACA,IAAAI,YAAA,GAAAJ,OAAA;AAAkD,SAAAD,uBAAAM,CAAA,WAAAA,CAAA,IAAAA,CAAA,CAAAC,UAAA,GAAAD,CAAA,KAAAE,OAAA,EAAAF,CAAA","ignoreList":[]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"OpeningInputs.js","names":["AnimatePresence","React","useCallback","useEffect","useMemo","useState","v4","uuidV4","OpeningTimesButtonType","OpeningInput","StyledOpeningInputPreview","StyledOpeningInputs","OpeningInputs","_ref","times","isDisabled","onRemove","onAdd","onInvalid","id","onChange","currentDayId","editMode","closedText","newTimes","setNewTimes","invalidTimes","setInvalidTimes","handleAdd","defaultTime","start","end","prevState","handleRemove","timeId","filter","time","result","i","length","currentTime","prevTime","currStart","Date","currEnd","push","prevEnd","invalidTimeIds","map","_ref2","invalidId","handleChange","newTime","updatedTimes","content","items","forEach","_ref3","index","text","createElement","key","buttonType","NONE","ADD","REMOVE","isInvalid","includes","gap","$editMode","animate","initial","displayName"],"sources":["../../../../../src/components/opening-times/opening-inputs/OpeningInputs.tsx"],"sourcesContent":["import { AnimatePresence } from 'framer-motion';\nimport React, { FC, useCallback, useEffect, useMemo, useState, type ReactElement } from 'react';\nimport { v4 as uuidV4 } from 'uuid';\nimport { OpeningTimesButtonType, type OpeningTime, type Time } from '../../../types/openingTimes';\nimport OpeningInput from './opening-input/OpeningInput';\nimport { StyledOpeningInputPreview, StyledOpeningInputs } from './OpeningInputs.styles';\n\nexport type OpeningInputsProps = {\n times: Time[];\n isDisabled?: boolean;\n onChange?: (time: Time) => void;\n onAdd?: (time: Time, id: string) => void;\n onRemove?: (id: Time['id']) => void;\n onInvalid?: (openingTimeId: string, timeIds: string[]) => void;\n id: string;\n currentDayId?: OpeningTime['id'];\n editMode: boolean;\n closedText: string;\n};\n\nconst OpeningInputs: FC<OpeningInputsProps> = ({\n times,\n isDisabled,\n onRemove,\n onAdd,\n onInvalid,\n id,\n onChange,\n currentDayId,\n editMode,\n closedText,\n}) => {\n const [newTimes, setNewTimes] = useState<Time[]>();\n const [invalidTimes, setInvalidTimes] = useState<string[]>([]);\n\n useEffect(() => {\n setNewTimes(times);\n }, [times]);\n\n const handleAdd = useCallback(() => {\n const defaultTime: Time = { start: '08:00', end: '18:00', id: uuidV4() };\n\n setNewTimes((prevState) => (prevState ? [...prevState, defaultTime] : [defaultTime]));\n\n if (typeof onAdd === 'function') {\n onAdd(defaultTime, id);\n }\n }, [id, onAdd]);\n\n const handleRemove = useCallback(\n (timeId: string) => {\n setNewTimes((prevState) => (prevState ?? []).filter((time) => time.id !== timeId));\n\n if (typeof onRemove === 'function') {\n onRemove(timeId);\n }\n },\n [onRemove],\n );\n\n useEffect(() => {\n const result: Time[] = [];\n\n for (let i = 0; i < times.length; i++) {\n const currentTime = times[i];\n const prevTime = times[i - 1];\n\n if (currentTime) {\n const currStart = new Date(`2000-01-01T${currentTime.start}`);\n const currEnd = new Date(`2000-01-01T${currentTime.end}`);\n\n if (currStart >= currEnd) {\n result.push(currentTime);\n }\n\n if (prevTime) {\n const prevEnd = new Date(`2000-01-01T${prevTime.end}`);\n\n if (prevEnd > currStart) {\n result.push(prevTime, currentTime);\n }\n }\n }\n }\n\n const invalidTimeIds = result.map(({ id: invalidId }) => invalidId);\n\n setInvalidTimes(invalidTimeIds);\n\n if (typeof onInvalid === 'function') {\n onInvalid(id, invalidTimeIds);\n }\n }, [id, onInvalid, times]);\n\n const handleChange = useCallback(\n (newTime: Time) => {\n setNewTimes((prevState) => {\n const updatedTimes = (prevState ?? []).map((time) => {\n if (time.id === newTime.id) {\n return newTime;\n }\n return time;\n });\n\n if (typeof onChange === 'function') {\n onChange(newTime);\n }\n\n return updatedTimes;\n });\n },\n [onChange],\n );\n\n const content = useMemo(() => {\n const items: ReactElement[] = [];\n\n if (!newTimes) {\n return items;\n }\n\n newTimes.forEach(({ end, start, id: timeId }, index) => {\n if (!editMode) {\n const text = isDisabled ? closedText : `${start} - ${end}`;\n\n items.push(\n <StyledOpeningInputPreview key={`opening-times-preview__${id}.${timeId}`}>\n {`${text}${currentDayId && newTimes.length > 1 && index === 0 ? ', ' : ''}`}\n </StyledOpeningInputPreview>,\n );\n\n return;\n }\n\n if (index > 1) {\n return;\n }\n\n let buttonType = OpeningTimesButtonType.NONE;\n\n if (index === 0 && times.length === 1 && !isDisabled) {\n buttonType = OpeningTimesButtonType.ADD;\n } else if (index === 1 && !isDisabled) {\n buttonType = OpeningTimesButtonType.REMOVE;\n }\n\n items.push(\n <OpeningInput\n key={`opening-times-input__${id}.${timeId}`}\n start={start}\n id={timeId}\n end={end}\n isDisabled={isDisabled}\n isInvalid={invalidTimes.includes(timeId)}\n buttonType={buttonType}\n onAdd={handleAdd}\n onChange={(time) => handleChange(time)}\n onRemove={() => handleRemove(timeId)}\n />,\n );\n });\n\n return items;\n }, [\n closedText,\n currentDayId,\n editMode,\n handleAdd,\n handleChange,\n handleRemove,\n id,\n invalidTimes,\n isDisabled,\n newTimes,\n times.length,\n ]);\n\n const gap = useMemo(() => {\n if ((newTimes && newTimes.length > 1 && editMode) || (!editMode && currentDayId)) {\n return '8px';\n }\n\n return 0;\n }, [currentDayId, editMode, newTimes]);\n\n return useMemo(\n () => (\n <StyledOpeningInputs\n $editMode={!currentDayId}\n key={`opening-inputs__${id}`}\n animate={{ gap }}\n initial={{ gap: 0 }}\n >\n <AnimatePresence initial={false}>{content}</AnimatePresence>\n </StyledOpeningInputs>\n ),\n [content, currentDayId, gap, id],\n );\n};\n\nOpeningInputs.displayName = 'OpeningInputs';\n\nexport default OpeningInputs;\n"],"mappings":"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","ignoreList":[]}
|
|
1
|
+
{"version":3,"file":"OpeningInputs.js","names":["AnimatePresence","React","useCallback","useEffect","useMemo","useState","v4","uuidV4","OpeningTimesButtonType","OpeningInput","StyledOpeningInputPreview","StyledOpeningInputs","OpeningInputs","_ref","times","isDisabled","onRemove","onAdd","onInvalid","id","onChange","currentDayId","editMode","closedText","newTimes","setNewTimes","invalidTimes","setInvalidTimes","handleAdd","defaultTime","start","end","prevState","handleRemove","timeId","filter","time","result","i","length","currentTime","prevTime","currStart","Date","currEnd","push","prevEnd","invalidTimeIds","map","_ref2","invalidId","handleChange","newTime","updatedTimes","content","items","forEach","_ref3","index","text","createElement","key","buttonType","NONE","ADD","REMOVE","isInvalid","includes","gap","$editMode","animate","initial","displayName"],"sources":["../../../../../src/components/opening-times/opening-inputs/OpeningInputs.tsx"],"sourcesContent":["import { AnimatePresence } from 'framer-motion';\nimport React, { FC, useCallback, useEffect, useMemo, useState, type ReactElement } from 'react';\nimport { v4 as uuidV4 } from 'uuid';\nimport { OpeningTimesButtonType, type OpeningTime, type Time } from '../../../types/openingTimes';\nimport OpeningInput from './opening-input/OpeningInput';\nimport { StyledOpeningInputPreview, StyledOpeningInputs } from './OpeningInputs.styles';\n\nexport type OpeningInputsProps = {\n /**\n * Array of opening times\n */\n times: Time[];\n /**\n * If the inputs are disabled\n */\n isDisabled?: boolean;\n /**\n * Function that is called when a time is changed\n */\n onChange?: (time: Time) => void;\n /**\n * Function that is called when a new time is added\n */\n onAdd?: (time: Time, id: string) => void;\n /**\n * Function that is called when a time is removed\n */\n onRemove?: (id: Time['id']) => void;\n /**\n * Function that is called when the times are invalid\n */\n onInvalid?: (openingTimeId: string, timeIds: string[]) => void;\n /**\n * The id of the opening time\n */\n id: string;\n /**\n * The id of the current day\n */\n currentDayId?: OpeningTime['id'];\n /**\n * If the edit mode is enabled\n */\n editMode?: boolean;\n /**\n * The text to show when the inputs are disabled\n */\n closedText?: string;\n};\n\nconst OpeningInputs: FC<OpeningInputsProps> = ({\n times,\n isDisabled,\n onRemove,\n onAdd,\n onInvalid,\n id,\n onChange,\n currentDayId,\n editMode = false,\n closedText = '',\n}) => {\n const [newTimes, setNewTimes] = useState<Time[]>();\n const [invalidTimes, setInvalidTimes] = useState<string[]>([]);\n\n useEffect(() => {\n setNewTimes(times);\n }, [times]);\n\n const handleAdd = useCallback(() => {\n const defaultTime: Time = { start: '08:00', end: '18:00', id: uuidV4() };\n\n setNewTimes((prevState) => (prevState ? [...prevState, defaultTime] : [defaultTime]));\n\n if (typeof onAdd === 'function') {\n onAdd(defaultTime, id);\n }\n }, [id, onAdd]);\n\n const handleRemove = useCallback(\n (timeId: string) => {\n setNewTimes((prevState) => (prevState ?? []).filter((time) => time.id !== timeId));\n\n if (typeof onRemove === 'function') {\n onRemove(timeId);\n }\n },\n [onRemove],\n );\n\n useEffect(() => {\n const result: Time[] = [];\n\n for (let i = 0; i < times.length; i++) {\n const currentTime = times[i];\n const prevTime = times[i - 1];\n\n if (currentTime) {\n const currStart = new Date(`2000-01-01T${currentTime.start}`);\n const currEnd = new Date(`2000-01-01T${currentTime.end}`);\n\n if (currStart >= currEnd) {\n result.push(currentTime);\n }\n\n if (prevTime) {\n const prevEnd = new Date(`2000-01-01T${prevTime.end}`);\n\n if (prevEnd > currStart) {\n result.push(prevTime, currentTime);\n }\n }\n }\n }\n\n const invalidTimeIds = result.map(({ id: invalidId }) => invalidId);\n\n setInvalidTimes(invalidTimeIds);\n\n if (typeof onInvalid === 'function') {\n onInvalid(id, invalidTimeIds);\n }\n }, [id, onInvalid, times]);\n\n const handleChange = useCallback(\n (newTime: Time) => {\n setNewTimes((prevState) => {\n const updatedTimes = (prevState ?? []).map((time) => {\n if (time.id === newTime.id) {\n return newTime;\n }\n return time;\n });\n\n if (typeof onChange === 'function') {\n onChange(newTime);\n }\n\n return updatedTimes;\n });\n },\n [onChange],\n );\n\n const content = useMemo(() => {\n const items: ReactElement[] = [];\n\n if (!newTimes) {\n return items;\n }\n\n newTimes.forEach(({ end, start, id: timeId }, index) => {\n if (!editMode) {\n const text = isDisabled ? closedText : `${start} - ${end}`;\n\n items.push(\n <StyledOpeningInputPreview key={`opening-times-preview__${id}.${timeId}`}>\n {`${text}${currentDayId && newTimes.length > 1 && index === 0 ? ', ' : ''}`}\n </StyledOpeningInputPreview>,\n );\n\n return;\n }\n\n if (index > 1) {\n return;\n }\n\n let buttonType = OpeningTimesButtonType.NONE;\n\n if (index === 0 && times.length === 1 && !isDisabled) {\n buttonType = OpeningTimesButtonType.ADD;\n } else if (index === 1 && !isDisabled) {\n buttonType = OpeningTimesButtonType.REMOVE;\n }\n\n items.push(\n <OpeningInput\n key={`opening-times-input__${id}.${timeId}`}\n start={start}\n id={timeId}\n end={end}\n isDisabled={isDisabled}\n isInvalid={invalidTimes.includes(timeId)}\n buttonType={buttonType}\n onAdd={handleAdd}\n onChange={(time) => handleChange(time)}\n onRemove={() => handleRemove(timeId)}\n />,\n );\n });\n\n return items;\n }, [\n closedText,\n currentDayId,\n editMode,\n handleAdd,\n handleChange,\n handleRemove,\n id,\n invalidTimes,\n isDisabled,\n newTimes,\n times.length,\n ]);\n\n const gap = useMemo(() => {\n if ((newTimes && newTimes.length > 1 && editMode) || (!editMode && currentDayId)) {\n return '8px';\n }\n\n return 0;\n }, [currentDayId, editMode, newTimes]);\n\n return useMemo(\n () => (\n <StyledOpeningInputs\n $editMode={!currentDayId}\n key={`opening-inputs__${id}`}\n animate={{ gap }}\n initial={{ gap: 0 }}\n >\n <AnimatePresence initial={false}>{content}</AnimatePresence>\n </StyledOpeningInputs>\n ),\n [content, currentDayId, gap, id],\n );\n};\n\nOpeningInputs.displayName = 'OpeningInputs';\n\nexport default OpeningInputs;\n"],"mappings":"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","ignoreList":[]}
|
package/lib/esm/index.js
CHANGED
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
export { default as Calendar } from './components/calendar/Calendar';
|
|
2
2
|
export { default as DateInfo } from './components/date-info/DateInfo';
|
|
3
|
+
export { default as OpeningInputs } from './components/opening-times/opening-inputs/OpeningInputs';
|
|
3
4
|
export { default as OpeningTimes } from './components/opening-times/OpeningTimes';
|
|
4
5
|
export { useDateInfo } from './hooks/useDateInfo';
|
|
5
6
|
//# sourceMappingURL=index.js.map
|
package/lib/esm/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","names":["default","Calendar","DateInfo","OpeningTimes","useDateInfo"],"sources":["../../src/index.ts"],"sourcesContent":["export { default as Calendar } from './components/calendar/Calendar';\nexport { default as DateInfo } from './components/date-info/DateInfo';\nexport { default as OpeningTimes } from './components/opening-times/OpeningTimes';\nexport { useDateInfo } from './hooks/useDateInfo';\nexport type {\n CalendarType,\n Categories,\n HighlightedDates,\n HighlightedDateStyles,\n} from './types/calendar';\nexport type { HintTextPosition, OpeningTime, Time, Weekday } from './types/openingTimes';\n"],"mappings":"AAAA,SAASA,OAAO,IAAIC,QAAQ,QAAQ,gCAAgC;AACpE,SAASD,OAAO,IAAIE,QAAQ,QAAQ,iCAAiC;AACrE,SAASF,OAAO,IAAIG,YAAY,QAAQ,yCAAyC;AACjF,SAASC,WAAW,QAAQ,qBAAqB","ignoreList":[]}
|
|
1
|
+
{"version":3,"file":"index.js","names":["default","Calendar","DateInfo","OpeningInputs","OpeningTimes","useDateInfo"],"sources":["../../src/index.ts"],"sourcesContent":["export { default as Calendar } from './components/calendar/Calendar';\nexport { default as DateInfo } from './components/date-info/DateInfo';\nexport { default as OpeningInputs } from './components/opening-times/opening-inputs/OpeningInputs';\nexport { default as OpeningTimes } from './components/opening-times/OpeningTimes';\nexport { useDateInfo } from './hooks/useDateInfo';\nexport type {\n CalendarType,\n Categories,\n HighlightedDates,\n HighlightedDateStyles,\n} from './types/calendar';\nexport type { HintTextPosition, OpeningTime, Time, Weekday } from './types/openingTimes';\n"],"mappings":"AAAA,SAASA,OAAO,IAAIC,QAAQ,QAAQ,gCAAgC;AACpE,SAASD,OAAO,IAAIE,QAAQ,QAAQ,iCAAiC;AACrE,SAASF,OAAO,IAAIG,aAAa,QAAQ,yDAAyD;AAClG,SAASH,OAAO,IAAII,YAAY,QAAQ,yCAAyC;AACjF,SAASC,WAAW,QAAQ,qBAAqB","ignoreList":[]}
|
|
@@ -1,16 +1,46 @@
|
|
|
1
1
|
import { FC } from 'react';
|
|
2
2
|
import { type OpeningTime, type Time } from '../../../types/openingTimes';
|
|
3
3
|
export type OpeningInputsProps = {
|
|
4
|
+
/**
|
|
5
|
+
* Array of opening times
|
|
6
|
+
*/
|
|
4
7
|
times: Time[];
|
|
8
|
+
/**
|
|
9
|
+
* If the inputs are disabled
|
|
10
|
+
*/
|
|
5
11
|
isDisabled?: boolean;
|
|
12
|
+
/**
|
|
13
|
+
* Function that is called when a time is changed
|
|
14
|
+
*/
|
|
6
15
|
onChange?: (time: Time) => void;
|
|
16
|
+
/**
|
|
17
|
+
* Function that is called when a new time is added
|
|
18
|
+
*/
|
|
7
19
|
onAdd?: (time: Time, id: string) => void;
|
|
20
|
+
/**
|
|
21
|
+
* Function that is called when a time is removed
|
|
22
|
+
*/
|
|
8
23
|
onRemove?: (id: Time['id']) => void;
|
|
24
|
+
/**
|
|
25
|
+
* Function that is called when the times are invalid
|
|
26
|
+
*/
|
|
9
27
|
onInvalid?: (openingTimeId: string, timeIds: string[]) => void;
|
|
28
|
+
/**
|
|
29
|
+
* The id of the opening time
|
|
30
|
+
*/
|
|
10
31
|
id: string;
|
|
32
|
+
/**
|
|
33
|
+
* The id of the current day
|
|
34
|
+
*/
|
|
11
35
|
currentDayId?: OpeningTime['id'];
|
|
12
|
-
|
|
13
|
-
|
|
36
|
+
/**
|
|
37
|
+
* If the edit mode is enabled
|
|
38
|
+
*/
|
|
39
|
+
editMode?: boolean;
|
|
40
|
+
/**
|
|
41
|
+
* The text to show when the inputs are disabled
|
|
42
|
+
*/
|
|
43
|
+
closedText?: string;
|
|
14
44
|
};
|
|
15
45
|
declare const OpeningInputs: FC<OpeningInputsProps>;
|
|
16
46
|
export default OpeningInputs;
|
package/lib/types/index.d.ts
CHANGED
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
export { default as Calendar } from './components/calendar/Calendar';
|
|
2
2
|
export { default as DateInfo } from './components/date-info/DateInfo';
|
|
3
|
+
export { default as OpeningInputs } from './components/opening-times/opening-inputs/OpeningInputs';
|
|
3
4
|
export { default as OpeningTimes } from './components/opening-times/OpeningTimes';
|
|
4
5
|
export { useDateInfo } from './hooks/useDateInfo';
|
|
5
6
|
export type { CalendarType, Categories, HighlightedDates, HighlightedDateStyles, } from './types/calendar';
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@chayns-components/date",
|
|
3
|
-
"version": "5.0.0-beta.
|
|
3
|
+
"version": "5.0.0-beta.836",
|
|
4
4
|
"description": "A set of beautiful React components for developing your own applications with chayns.",
|
|
5
5
|
"sideEffects": false,
|
|
6
6
|
"browserslist": [
|
|
@@ -83,5 +83,5 @@
|
|
|
83
83
|
"publishConfig": {
|
|
84
84
|
"access": "public"
|
|
85
85
|
},
|
|
86
|
-
"gitHead": "
|
|
86
|
+
"gitHead": "fb583966654269315123795c20217b7bf9f11961"
|
|
87
87
|
}
|