@chayns-components/date 5.0.0-beta.834 → 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.
@@ -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 }; }
@@ -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":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,IAAAA,SAAA,GAAAC,sBAAA,CAAAC,OAAA;AACA,IAAAC,SAAA,GAAAF,sBAAA,CAAAC,OAAA;AACA,IAAAE,aAAA,GAAAH,sBAAA,CAAAC,OAAA;AACA,IAAAG,YAAA,GAAAH,OAAA;AAAkD,SAAAD,uBAAAK,CAAA,WAAAA,CAAA,IAAAA,CAAA,CAAAC,UAAA,GAAAD,CAAA,KAAAE,OAAA,EAAAF,CAAA","ignoreList":[]}
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":[]}
@@ -14,8 +14,8 @@ const OpeningInputs = _ref => {
14
14
  id,
15
15
  onChange,
16
16
  currentDayId,
17
- editMode,
18
- closedText
17
+ editMode = false,
18
+ closedText = ''
19
19
  } = _ref;
20
20
  const [newTimes, setNewTimes] = useState();
21
21
  const [invalidTimes, setInvalidTimes] = useState([]);
@@ -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
@@ -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
- editMode: boolean;
13
- closedText: string;
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;
@@ -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.834",
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": [
@@ -69,7 +69,7 @@
69
69
  "typescript": "^5.6.2"
70
70
  },
71
71
  "dependencies": {
72
- "@chayns-components/core": "^5.0.0-beta.834",
72
+ "@chayns-components/core": "^5.0.0-beta.835",
73
73
  "date-fns": "^3.6.0",
74
74
  "uuid": "^10.0.0"
75
75
  },
@@ -83,5 +83,5 @@
83
83
  "publishConfig": {
84
84
  "access": "public"
85
85
  },
86
- "gitHead": "0ce2e9008d19b661a2c02fe3187eddf8ebb7caa4"
86
+ "gitHead": "fb583966654269315123795c20217b7bf9f11961"
87
87
  }