@chayns-components/date 5.0.0-beta.1016 → 5.0.0-beta.1018

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.
@@ -23,8 +23,7 @@ const OpeningTimes = ({
23
23
  weekdays,
24
24
  onChange,
25
25
  onTimeAdd,
26
- onTimeRemove,
27
- shouldNotValidate = false
26
+ onTimeRemove
28
27
  }) => {
29
28
  const [newOpeningTimes, setNewOpeningTimes] = (0, _react.useState)();
30
29
  const [invalidOpeningTimes, setInvalidOpeningTimes] = (0, _react.useState)([]);
@@ -36,7 +35,7 @@ const OpeningTimes = ({
36
35
  }, [openingTimes]);
37
36
  const validateTime = (0, _react.useCallback)((newTime, dayId) => {
38
37
  var _newOpeningTimes$find;
39
- if (newTime.start === newTime.end) {
38
+ if (newTime.start === newTime.end || newTime.start >= newTime.end) {
40
39
  return false;
41
40
  }
42
41
  const dayTimes = (newOpeningTimes === null || newOpeningTimes === void 0 || (_newOpeningTimes$find = newOpeningTimes.find(day => day.id === dayId)) === null || _newOpeningTimes$find === void 0 ? void 0 : _newOpeningTimes$find.times) || [];
@@ -62,10 +61,7 @@ const OpeningTimes = ({
62
61
  });
63
62
  }, [onChange]);
64
63
  const handleChange = (0, _react.useCallback)((newTime, id) => {
65
- const isValid = shouldNotValidate || validateTime(newTime, id);
66
- if (!isValid) {
67
- return;
68
- }
64
+ const isValid = validateTime(newTime, id);
69
65
  setNewOpeningTimes(prevOpeningTimes => {
70
66
  const updatedOpeningTimes = (prevOpeningTimes ?? []).map(openingTime => {
71
67
  if (openingTime.id === id) {
@@ -83,21 +79,23 @@ const OpeningTimes = ({
83
79
  return openingTime;
84
80
  });
85
81
  const changedOpeningTime = updatedOpeningTimes.find(updatedOpeningTime => updatedOpeningTime.id === id);
86
- if (isValid && typeof onChange === 'function') {
82
+ if (typeof onChange === 'function') {
87
83
  onChange({
84
+ isValid,
88
85
  dayId: changedOpeningTime === null || changedOpeningTime === void 0 ? void 0 : changedOpeningTime.id,
89
86
  time: newTime
90
87
  });
91
88
  }
92
89
  return updatedOpeningTimes;
93
90
  });
94
- }, [onChange, shouldNotValidate, validateTime]);
91
+ }, [onChange, validateTime]);
95
92
  const handleAdd = (0, _react.useCallback)((time, id) => {
96
- const isValid = shouldNotValidate || validateTime(time, id);
97
- if (isValid && typeof onTimeAdd === 'function') {
93
+ const isValid = validateTime(time, id);
94
+ if (typeof onTimeAdd === 'function') {
98
95
  onTimeAdd({
99
96
  time,
100
- dayId: id
97
+ dayId: id,
98
+ isValid
101
99
  });
102
100
  }
103
101
  setNewOpeningTimes(prevOpeningTimes => (prevOpeningTimes ?? []).map(openingTime => {
@@ -109,7 +107,7 @@ const OpeningTimes = ({
109
107
  }
110
108
  return openingTime;
111
109
  }));
112
- }, [onTimeAdd, shouldNotValidate, validateTime]);
110
+ }, [onTimeAdd, validateTime]);
113
111
  const handleUpdateInvalidIds = (0, _react.useCallback)((openingTimeId, invalidTimeIds) => {
114
112
  setInvalidOpeningTimes(prevState => {
115
113
  const updatedInvalidOpeningTimes = prevState.map(invalidOpeningTime => {
@@ -1 +1 @@
1
- {"version":3,"file":"OpeningTimes.js","names":["_core","require","_react","_interopRequireWildcard","_openingTimes","_HintText","_interopRequireDefault","_OpeningInputs","_OpeningTimes","e","__esModule","default","_getRequireWildcardCache","WeakMap","r","t","has","get","n","__proto__","a","Object","defineProperty","getOwnPropertyDescriptor","u","hasOwnProperty","call","i","set","OpeningTimes","closedText","currentDayId","editMode","hintText","hintTextPosition","HintTextPosition","Bottom","openingTimes","weekdays","onChange","onTimeAdd","onTimeRemove","shouldNotValidate","newOpeningTimes","setNewOpeningTimes","useState","invalidOpeningTimes","setInvalidOpeningTimes","isPopupOpen","setIsPopupOpen","ref","useRef","popupRef","useEffect","validateTime","useCallback","newTime","dayId","_newOpeningTimes$find","start","end","dayTimes","find","day","id","times","every","time","handleCheckBoxChange","prevOpeningTimes","updatedOpeningTimes","map","openingTime","isDisabled","enabledDays","filter","item","handleChange","isValid","newTimes","changedOpeningTime","updatedOpeningTime","handleAdd","handleUpdateInvalidIds","openingTimeId","invalidTimeIds","prevState","updatedInvalidOpeningTimes","invalidOpeningTime","some","updatedInvalidOpeningId","length","push","updatedInvalidOpeningTime","handleRemove","content","useMemo","items","forEach","weekdayId","_weekdays$find","weekday","weekDay","name","createElement","StyledOpeningTimesWrapper","key","Checkbox","isChecked","StyledOpeningTimesWeekDay","onInvalid","onRemove","onAdd","size","useElementSize","hidePopup","_popupRef$current","current","hide","showPopup","_popupRef$current2","show","displayedContent","_weekdays$find2","singleDay","style","width","onMouseEnter","onMouseLeave","onClick","Popup","onShow","onHide","StyledOpeningTimesTooltipContent","shouldShowHint","StyledOpeningTimes","Top","text","displayName","_default","exports"],"sources":["../../../../src/components/opening-times/OpeningTimes.tsx"],"sourcesContent":["import { Checkbox, Popup, useElementSize, type PopupRef } from '@chayns-components/core';\nimport React, {\n FC,\n useCallback,\n useEffect,\n useMemo,\n useRef,\n useState,\n type ReactElement,\n} from 'react';\nimport {\n HintTextPosition,\n type OnChange,\n type OnTimeAdd,\n type OpeningTime,\n type Time,\n type Weekday,\n} from '../../types/openingTimes';\nimport HintText from './hint-text/HintText';\nimport OpeningInputs from './opening-inputs/OpeningInputs';\nimport {\n StyledOpeningTimes,\n StyledOpeningTimesTooltipContent,\n StyledOpeningTimesWeekDay,\n StyledOpeningTimesWrapper,\n} from './OpeningTimes.styles';\n\nexport type OpeningTimesProps = {\n /**\n * The text that should be displayed when a day is closed.\n */\n closedText?: string;\n /**\n * If set just the current day is displayed and the whole week in a tooltip.\n */\n currentDayId?: OpeningTime['id'];\n /**\n * Whether the opening times can be edited.\n */\n editMode?: boolean;\n /**\n * The text that should be displayed if times are colliding.\n */\n hintText?: string;\n /**\n * The position of the hint text.\n */\n hintTextPosition?: HintTextPosition;\n /**\n * Function to be executed when a time is changed or a day is enabled/disabled.\n * @param openingTimes\n */\n onChange?: ({ time, enabledDays, dayId }: OnChange) => void;\n /**\n * Function to be executed when a time is added.\n */\n onTimeAdd?: ({ time, dayId }: OnTimeAdd) => void;\n /**\n * Function to be executed when a time is removed.\n */\n onTimeRemove?: (id: string) => void;\n /**\n * The opening times corresponding to its weekday.\n */\n openingTimes: OpeningTime[];\n /**\n * The weekdays that should be displayed.\n */\n weekdays: Weekday[];\n /**\n * When set to true, events are triggered without validation.\n */\n shouldNotValidate?: boolean;\n};\n\nconst OpeningTimes: FC<OpeningTimesProps> = ({\n closedText = 'closed',\n currentDayId,\n editMode = false,\n hintText,\n hintTextPosition = HintTextPosition.Bottom,\n openingTimes,\n weekdays,\n onChange,\n onTimeAdd,\n onTimeRemove,\n shouldNotValidate = false,\n}) => {\n const [newOpeningTimes, setNewOpeningTimes] = useState<OpeningTime[]>();\n const [invalidOpeningTimes, setInvalidOpeningTimes] = useState<\n { openingTimeId: string; invalidTimeIds: string[] }[]\n >([]);\n const [isPopupOpen, setIsPopupOpen] = useState(false);\n\n const ref = useRef<HTMLDivElement>(null);\n const popupRef = useRef<PopupRef>(null);\n\n useEffect(() => {\n setNewOpeningTimes(openingTimes);\n }, [openingTimes]);\n\n const validateTime = useCallback(\n (newTime: Time, dayId: string): boolean => {\n if (newTime.start === newTime.end) {\n return false;\n }\n const dayTimes = newOpeningTimes?.find((day) => day.id === dayId)?.times || [];\n\n return dayTimes.every(\n (time) =>\n time.id === newTime.id ||\n newTime.end <= time.start ||\n newTime.start >= time.end,\n );\n },\n [newOpeningTimes],\n );\n\n const handleCheckBoxChange = useCallback(\n (id: string) => {\n setNewOpeningTimes((prevOpeningTimes) => {\n const updatedOpeningTimes = (prevOpeningTimes ?? []).map((openingTime) => {\n if (openingTime.id === id) {\n return { ...openingTime, isDisabled: !openingTime.isDisabled };\n }\n return openingTime;\n });\n\n if (typeof onChange === 'function') {\n onChange({\n enabledDays: updatedOpeningTimes\n .filter((item) => !item.isDisabled)\n .map((item) => item.id),\n });\n }\n\n return updatedOpeningTimes;\n });\n },\n [onChange],\n );\n\n const handleChange = useCallback(\n (newTime: Time, id: string) => {\n const isValid = shouldNotValidate || validateTime(newTime, id);\n if (!isValid) {\n return;\n }\n\n setNewOpeningTimes((prevOpeningTimes) => {\n const updatedOpeningTimes = (prevOpeningTimes ?? []).map((openingTime) => {\n if (openingTime.id === id) {\n const newTimes = openingTime.times.map((time) => {\n if (time.id === newTime.id) {\n return newTime;\n }\n return time;\n });\n return { ...openingTime, times: newTimes };\n }\n return openingTime;\n });\n\n const changedOpeningTime = updatedOpeningTimes.find(\n (updatedOpeningTime) => updatedOpeningTime.id === id,\n );\n\n if (isValid && typeof onChange === 'function') {\n onChange({\n dayId: changedOpeningTime?.id,\n time: newTime,\n });\n }\n\n return updatedOpeningTimes;\n });\n },\n [onChange, shouldNotValidate, validateTime],\n );\n\n const handleAdd = useCallback(\n (time: Time, id: string) => {\n const isValid = shouldNotValidate || validateTime(time, id);\n\n if (isValid && typeof onTimeAdd === 'function') {\n onTimeAdd({ time, dayId: id });\n }\n\n setNewOpeningTimes((prevOpeningTimes) =>\n (prevOpeningTimes ?? []).map((openingTime) => {\n if (openingTime.id === id) {\n return { ...openingTime, times: [...openingTime.times, time] };\n }\n return openingTime;\n }),\n );\n },\n [onTimeAdd, shouldNotValidate, validateTime],\n );\n\n const handleUpdateInvalidIds = useCallback(\n (openingTimeId: string, invalidTimeIds: string[]) => {\n setInvalidOpeningTimes((prevState) => {\n const updatedInvalidOpeningTimes = prevState.map((invalidOpeningTime) => {\n if (invalidOpeningTime.openingTimeId === openingTimeId) {\n return {\n openingTimeId,\n invalidTimeIds,\n };\n }\n return invalidOpeningTime;\n });\n\n if (\n !updatedInvalidOpeningTimes.some(\n ({ openingTimeId: updatedInvalidOpeningId }) =>\n updatedInvalidOpeningId === openingTimeId,\n ) &&\n invalidTimeIds.length > 0\n ) {\n updatedInvalidOpeningTimes.push({ openingTimeId, invalidTimeIds });\n }\n\n return updatedInvalidOpeningTimes.filter(\n (updatedInvalidOpeningTime) =>\n updatedInvalidOpeningTime.invalidTimeIds.length !== 0,\n );\n });\n },\n [],\n );\n\n const handleRemove = useCallback(\n (id: string) => {\n setNewOpeningTimes((prevOpeningTimes) =>\n (prevOpeningTimes ?? []).map((openingTime) => {\n const newTimes = openingTime.times.filter((time) => time.id !== id);\n\n return { ...openingTime, times: newTimes };\n }),\n );\n\n if (typeof onTimeRemove === 'function') {\n onTimeRemove(id);\n }\n },\n [onTimeRemove],\n );\n\n const content = useMemo(() => {\n const items: ReactElement[] = [];\n\n if (!newOpeningTimes) {\n return items;\n }\n\n newOpeningTimes.forEach(({ times, id, weekdayId, isDisabled }) => {\n const weekday = weekdays.find((weekDay) => weekDay.id === weekdayId)?.name;\n\n if (!weekday) {\n return;\n }\n\n items.push(\n <StyledOpeningTimesWrapper key={`openingTimes__${id}`}>\n {editMode ? (\n <Checkbox isChecked={!isDisabled} onChange={() => handleCheckBoxChange(id)}>\n {weekday}\n </Checkbox>\n ) : (\n <StyledOpeningTimesWeekDay>{weekday}</StyledOpeningTimesWeekDay>\n )}\n <OpeningInputs\n closedText={closedText}\n currentDayId={currentDayId}\n id={id}\n times={times}\n isDisabled={isDisabled}\n onInvalid={handleUpdateInvalidIds}\n onChange={(newTime) => handleChange(newTime, id)}\n onRemove={handleRemove}\n onAdd={handleAdd}\n editMode={editMode}\n />\n </StyledOpeningTimesWrapper>,\n );\n });\n\n return items;\n }, [\n closedText,\n currentDayId,\n editMode,\n handleAdd,\n handleChange,\n handleCheckBoxChange,\n handleRemove,\n handleUpdateInvalidIds,\n newOpeningTimes,\n weekdays,\n ]);\n\n const size = useElementSize(ref);\n\n const hidePopup = useCallback(() => {\n setIsPopupOpen(false);\n popupRef.current?.hide();\n }, []);\n\n const showPopup = useCallback(() => {\n setIsPopupOpen(true);\n popupRef.current?.show();\n }, []);\n\n const displayedContent = useMemo(() => {\n if (!currentDayId || editMode) {\n return content;\n }\n\n const singleDay = newOpeningTimes?.find(({ id }) => id === currentDayId);\n\n if (!singleDay) {\n return content;\n }\n\n const { id, times, weekdayId } = singleDay;\n\n const weekday = weekdays.find((weekDay) => weekDay.id === weekdayId)?.name;\n\n return (\n <StyledOpeningTimesWrapper\n key={`currentDay__${currentDayId}`}\n style={size && { width: size.width }}\n onMouseEnter={showPopup}\n onMouseLeave={hidePopup}\n onClick={() => (isPopupOpen ? hidePopup() : showPopup())}\n >\n <Popup\n onShow={() => setIsPopupOpen(true)}\n onHide={() => setIsPopupOpen(false)}\n ref={popupRef}\n content={\n <StyledOpeningTimesTooltipContent key=\"opening-time-tooltip\">\n {content}\n </StyledOpeningTimesTooltipContent>\n }\n >\n <StyledOpeningTimesWeekDay>{weekday}</StyledOpeningTimesWeekDay>\n </Popup>\n <OpeningInputs\n closedText={closedText}\n currentDayId={currentDayId}\n onInvalid={handleUpdateInvalidIds}\n id={id}\n times={times}\n editMode={editMode}\n />\n </StyledOpeningTimesWrapper>\n );\n }, [\n currentDayId,\n editMode,\n newOpeningTimes,\n weekdays,\n size,\n showPopup,\n hidePopup,\n content,\n closedText,\n handleUpdateInvalidIds,\n isPopupOpen,\n ]);\n\n const shouldShowHint = useMemo(\n () => invalidOpeningTimes.length > 0,\n [invalidOpeningTimes.length],\n );\n\n return useMemo(\n () => (\n <StyledOpeningTimes ref={ref}>\n {shouldShowHint && hintText && hintTextPosition === HintTextPosition.Top && (\n <HintText text={hintText} />\n )}\n {displayedContent}\n {shouldShowHint && hintText && hintTextPosition === HintTextPosition.Bottom && (\n <HintText text={hintText} />\n )}\n </StyledOpeningTimes>\n ),\n [displayedContent, hintText, hintTextPosition, shouldShowHint],\n );\n};\n\nOpeningTimes.displayName = 'OpeningTimes';\n\nexport default OpeningTimes;\n"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"file":"OpeningTimes.js","names":["_core","require","_react","_interopRequireWildcard","_openingTimes","_HintText","_interopRequireDefault","_OpeningInputs","_OpeningTimes","e","__esModule","default","_getRequireWildcardCache","WeakMap","r","t","has","get","n","__proto__","a","Object","defineProperty","getOwnPropertyDescriptor","u","hasOwnProperty","call","i","set","OpeningTimes","closedText","currentDayId","editMode","hintText","hintTextPosition","HintTextPosition","Bottom","openingTimes","weekdays","onChange","onTimeAdd","onTimeRemove","newOpeningTimes","setNewOpeningTimes","useState","invalidOpeningTimes","setInvalidOpeningTimes","isPopupOpen","setIsPopupOpen","ref","useRef","popupRef","useEffect","validateTime","useCallback","newTime","dayId","_newOpeningTimes$find","start","end","dayTimes","find","day","id","times","every","time","handleCheckBoxChange","prevOpeningTimes","updatedOpeningTimes","map","openingTime","isDisabled","enabledDays","filter","item","handleChange","isValid","newTimes","changedOpeningTime","updatedOpeningTime","handleAdd","handleUpdateInvalidIds","openingTimeId","invalidTimeIds","prevState","updatedInvalidOpeningTimes","invalidOpeningTime","some","updatedInvalidOpeningId","length","push","updatedInvalidOpeningTime","handleRemove","content","useMemo","items","forEach","weekdayId","_weekdays$find","weekday","weekDay","name","createElement","StyledOpeningTimesWrapper","key","Checkbox","isChecked","StyledOpeningTimesWeekDay","onInvalid","onRemove","onAdd","size","useElementSize","hidePopup","_popupRef$current","current","hide","showPopup","_popupRef$current2","show","displayedContent","_weekdays$find2","singleDay","style","width","onMouseEnter","onMouseLeave","onClick","Popup","onShow","onHide","StyledOpeningTimesTooltipContent","shouldShowHint","StyledOpeningTimes","Top","text","displayName","_default","exports"],"sources":["../../../../src/components/opening-times/OpeningTimes.tsx"],"sourcesContent":["import { Checkbox, Popup, useElementSize, type PopupRef } from '@chayns-components/core';\nimport React, {\n FC,\n useCallback,\n useEffect,\n useMemo,\n useRef,\n useState,\n type ReactElement,\n} from 'react';\nimport {\n HintTextPosition,\n type OnChange,\n type OnTimeAdd,\n type OpeningTime,\n type Time,\n type Weekday,\n} from '../../types/openingTimes';\nimport HintText from './hint-text/HintText';\nimport OpeningInputs from './opening-inputs/OpeningInputs';\nimport {\n StyledOpeningTimes,\n StyledOpeningTimesTooltipContent,\n StyledOpeningTimesWeekDay,\n StyledOpeningTimesWrapper,\n} from './OpeningTimes.styles';\n\nexport type OpeningTimesProps = {\n /**\n * The text that should be displayed when a day is closed.\n */\n closedText?: string;\n /**\n * If set just the current day is displayed and the whole week in a tooltip.\n */\n currentDayId?: OpeningTime['id'];\n /**\n * Whether the opening times can be edited.\n */\n editMode?: boolean;\n /**\n * The text that should be displayed if times are colliding.\n */\n hintText?: string;\n /**\n * The position of the hint text.\n */\n hintTextPosition?: HintTextPosition;\n /**\n * Function to be executed when a time is changed or a day is enabled/disabled.\n * @param openingTimes\n */\n onChange?: ({ time, enabledDays, dayId, isValid }: OnChange) => void;\n /**\n * Function to be executed when a time is added.\n */\n onTimeAdd?: ({ time, dayId, isValid }: OnTimeAdd) => void;\n /**\n * Function to be executed when a time is removed.\n */\n onTimeRemove?: (id: string) => void;\n /**\n * The opening times corresponding to its weekday.\n */\n openingTimes: OpeningTime[];\n /**\n * The weekdays that should be displayed.\n */\n weekdays: Weekday[];\n};\n\nconst OpeningTimes: FC<OpeningTimesProps> = ({\n closedText = 'closed',\n currentDayId,\n editMode = false,\n hintText,\n hintTextPosition = HintTextPosition.Bottom,\n openingTimes,\n weekdays,\n onChange,\n onTimeAdd,\n onTimeRemove,\n}) => {\n const [newOpeningTimes, setNewOpeningTimes] = useState<OpeningTime[]>();\n const [invalidOpeningTimes, setInvalidOpeningTimes] = useState<\n { openingTimeId: string; invalidTimeIds: string[] }[]\n >([]);\n const [isPopupOpen, setIsPopupOpen] = useState(false);\n\n const ref = useRef<HTMLDivElement>(null);\n const popupRef = useRef<PopupRef>(null);\n\n useEffect(() => {\n setNewOpeningTimes(openingTimes);\n }, [openingTimes]);\n\n const validateTime = useCallback(\n (newTime: Time, dayId: string): boolean => {\n if (newTime.start === newTime.end || newTime.start >= newTime.end) {\n return false;\n }\n const dayTimes = newOpeningTimes?.find((day) => day.id === dayId)?.times || [];\n\n return dayTimes.every(\n (time) =>\n time.id === newTime.id ||\n newTime.end <= time.start ||\n newTime.start >= time.end,\n );\n },\n [newOpeningTimes],\n );\n\n const handleCheckBoxChange = useCallback(\n (id: string) => {\n setNewOpeningTimes((prevOpeningTimes) => {\n const updatedOpeningTimes = (prevOpeningTimes ?? []).map((openingTime) => {\n if (openingTime.id === id) {\n return { ...openingTime, isDisabled: !openingTime.isDisabled };\n }\n return openingTime;\n });\n\n if (typeof onChange === 'function') {\n onChange({\n enabledDays: updatedOpeningTimes\n .filter((item) => !item.isDisabled)\n .map((item) => item.id),\n });\n }\n\n return updatedOpeningTimes;\n });\n },\n [onChange],\n );\n\n const handleChange = useCallback(\n (newTime: Time, id: string) => {\n const isValid = validateTime(newTime, id);\n\n setNewOpeningTimes((prevOpeningTimes) => {\n const updatedOpeningTimes = (prevOpeningTimes ?? []).map((openingTime) => {\n if (openingTime.id === id) {\n const newTimes = openingTime.times.map((time) => {\n if (time.id === newTime.id) {\n return newTime;\n }\n return time;\n });\n return { ...openingTime, times: newTimes };\n }\n return openingTime;\n });\n\n const changedOpeningTime = updatedOpeningTimes.find(\n (updatedOpeningTime) => updatedOpeningTime.id === id,\n );\n\n if (typeof onChange === 'function') {\n onChange({\n isValid,\n dayId: changedOpeningTime?.id,\n time: newTime,\n });\n }\n\n return updatedOpeningTimes;\n });\n },\n [onChange, validateTime],\n );\n\n const handleAdd = useCallback(\n (time: Time, id: string) => {\n const isValid = validateTime(time, id);\n\n if (typeof onTimeAdd === 'function') {\n onTimeAdd({ time, dayId: id, isValid });\n }\n\n setNewOpeningTimes((prevOpeningTimes) =>\n (prevOpeningTimes ?? []).map((openingTime) => {\n if (openingTime.id === id) {\n return { ...openingTime, times: [...openingTime.times, time] };\n }\n return openingTime;\n }),\n );\n },\n [onTimeAdd, validateTime],\n );\n\n const handleUpdateInvalidIds = useCallback(\n (openingTimeId: string, invalidTimeIds: string[]) => {\n setInvalidOpeningTimes((prevState) => {\n const updatedInvalidOpeningTimes = prevState.map((invalidOpeningTime) => {\n if (invalidOpeningTime.openingTimeId === openingTimeId) {\n return {\n openingTimeId,\n invalidTimeIds,\n };\n }\n return invalidOpeningTime;\n });\n\n if (\n !updatedInvalidOpeningTimes.some(\n ({ openingTimeId: updatedInvalidOpeningId }) =>\n updatedInvalidOpeningId === openingTimeId,\n ) &&\n invalidTimeIds.length > 0\n ) {\n updatedInvalidOpeningTimes.push({ openingTimeId, invalidTimeIds });\n }\n\n return updatedInvalidOpeningTimes.filter(\n (updatedInvalidOpeningTime) =>\n updatedInvalidOpeningTime.invalidTimeIds.length !== 0,\n );\n });\n },\n [],\n );\n\n const handleRemove = useCallback(\n (id: string) => {\n setNewOpeningTimes((prevOpeningTimes) =>\n (prevOpeningTimes ?? []).map((openingTime) => {\n const newTimes = openingTime.times.filter((time) => time.id !== id);\n\n return { ...openingTime, times: newTimes };\n }),\n );\n\n if (typeof onTimeRemove === 'function') {\n onTimeRemove(id);\n }\n },\n [onTimeRemove],\n );\n\n const content = useMemo(() => {\n const items: ReactElement[] = [];\n\n if (!newOpeningTimes) {\n return items;\n }\n\n newOpeningTimes.forEach(({ times, id, weekdayId, isDisabled }) => {\n const weekday = weekdays.find((weekDay) => weekDay.id === weekdayId)?.name;\n\n if (!weekday) {\n return;\n }\n\n items.push(\n <StyledOpeningTimesWrapper key={`openingTimes__${id}`}>\n {editMode ? (\n <Checkbox isChecked={!isDisabled} onChange={() => handleCheckBoxChange(id)}>\n {weekday}\n </Checkbox>\n ) : (\n <StyledOpeningTimesWeekDay>{weekday}</StyledOpeningTimesWeekDay>\n )}\n <OpeningInputs\n closedText={closedText}\n currentDayId={currentDayId}\n id={id}\n times={times}\n isDisabled={isDisabled}\n onInvalid={handleUpdateInvalidIds}\n onChange={(newTime) => handleChange(newTime, id)}\n onRemove={handleRemove}\n onAdd={handleAdd}\n editMode={editMode}\n />\n </StyledOpeningTimesWrapper>,\n );\n });\n\n return items;\n }, [\n closedText,\n currentDayId,\n editMode,\n handleAdd,\n handleChange,\n handleCheckBoxChange,\n handleRemove,\n handleUpdateInvalidIds,\n newOpeningTimes,\n weekdays,\n ]);\n\n const size = useElementSize(ref);\n\n const hidePopup = useCallback(() => {\n setIsPopupOpen(false);\n popupRef.current?.hide();\n }, []);\n\n const showPopup = useCallback(() => {\n setIsPopupOpen(true);\n popupRef.current?.show();\n }, []);\n\n const displayedContent = useMemo(() => {\n if (!currentDayId || editMode) {\n return content;\n }\n\n const singleDay = newOpeningTimes?.find(({ id }) => id === currentDayId);\n\n if (!singleDay) {\n return content;\n }\n\n const { id, times, weekdayId } = singleDay;\n\n const weekday = weekdays.find((weekDay) => weekDay.id === weekdayId)?.name;\n\n return (\n <StyledOpeningTimesWrapper\n key={`currentDay__${currentDayId}`}\n style={size && { width: size.width }}\n onMouseEnter={showPopup}\n onMouseLeave={hidePopup}\n onClick={() => (isPopupOpen ? hidePopup() : showPopup())}\n >\n <Popup\n onShow={() => setIsPopupOpen(true)}\n onHide={() => setIsPopupOpen(false)}\n ref={popupRef}\n content={\n <StyledOpeningTimesTooltipContent key=\"opening-time-tooltip\">\n {content}\n </StyledOpeningTimesTooltipContent>\n }\n >\n <StyledOpeningTimesWeekDay>{weekday}</StyledOpeningTimesWeekDay>\n </Popup>\n <OpeningInputs\n closedText={closedText}\n currentDayId={currentDayId}\n onInvalid={handleUpdateInvalidIds}\n id={id}\n times={times}\n editMode={editMode}\n />\n </StyledOpeningTimesWrapper>\n );\n }, [\n currentDayId,\n editMode,\n newOpeningTimes,\n weekdays,\n size,\n showPopup,\n hidePopup,\n content,\n closedText,\n handleUpdateInvalidIds,\n isPopupOpen,\n ]);\n\n const shouldShowHint = useMemo(\n () => invalidOpeningTimes.length > 0,\n [invalidOpeningTimes.length],\n );\n\n return useMemo(\n () => (\n <StyledOpeningTimes ref={ref}>\n {shouldShowHint && hintText && hintTextPosition === HintTextPosition.Top && (\n <HintText text={hintText} />\n )}\n {displayedContent}\n {shouldShowHint && hintText && hintTextPosition === HintTextPosition.Bottom && (\n <HintText text={hintText} />\n )}\n </StyledOpeningTimes>\n ),\n [displayedContent, hintText, hintTextPosition, shouldShowHint],\n );\n};\n\nOpeningTimes.displayName = 'OpeningTimes';\n\nexport default OpeningTimes;\n"],"mappings":"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","ignoreList":[]}
@@ -1 +1 @@
1
- {"version":3,"file":"openingTimes.js","names":["OpeningTimesButtonType","exports","HintTextPosition"],"sources":["../../../src/types/openingTimes.ts"],"sourcesContent":["export interface Weekday {\n name: string;\n id: number;\n}\n\nexport interface Time {\n id: string;\n start: string;\n end: string;\n}\n\nexport interface OpeningTime {\n weekdayId: Weekday['id'];\n id: string;\n isDisabled?: boolean;\n times: Time[];\n}\n\nexport interface OnTimeAdd {\n dayId: OpeningTime['id'];\n time: Time;\n}\n\nexport interface OnChange {\n enabledDays?: OpeningTime['id'][];\n dayId?: OpeningTime['id'];\n time?: Time;\n}\n\nexport enum OpeningTimesButtonType {\n NONE,\n ADD,\n REMOVE,\n}\n\nexport enum HintTextPosition {\n Top,\n Bottom,\n}\n"],"mappings":";;;;;;IA6BYA,sBAAsB,GAAAC,OAAA,CAAAD,sBAAA,0BAAtBA,sBAAsB;EAAtBA,sBAAsB,CAAtBA,sBAAsB;EAAtBA,sBAAsB,CAAtBA,sBAAsB;EAAtBA,sBAAsB,CAAtBA,sBAAsB;EAAA,OAAtBA,sBAAsB;AAAA;AAAA,IAMtBE,gBAAgB,GAAAD,OAAA,CAAAC,gBAAA,0BAAhBA,gBAAgB;EAAhBA,gBAAgB,CAAhBA,gBAAgB;EAAhBA,gBAAgB,CAAhBA,gBAAgB;EAAA,OAAhBA,gBAAgB;AAAA","ignoreList":[]}
1
+ {"version":3,"file":"openingTimes.js","names":["OpeningTimesButtonType","exports","HintTextPosition"],"sources":["../../../src/types/openingTimes.ts"],"sourcesContent":["export interface Weekday {\n name: string;\n id: number;\n}\n\nexport interface Time {\n id: string;\n start: string;\n end: string;\n}\n\nexport interface OpeningTime {\n weekdayId: Weekday['id'];\n id: string;\n isDisabled?: boolean;\n times: Time[];\n}\n\nexport interface OnTimeAdd {\n dayId: OpeningTime['id'];\n time: Time;\n isValid: boolean;\n}\n\nexport interface OnChange {\n enabledDays?: OpeningTime['id'][];\n dayId?: OpeningTime['id'];\n time?: Time;\n isValid?: boolean;\n}\n\nexport enum OpeningTimesButtonType {\n NONE,\n ADD,\n REMOVE,\n}\n\nexport enum HintTextPosition {\n Top,\n Bottom,\n}\n"],"mappings":";;;;;;IA+BYA,sBAAsB,GAAAC,OAAA,CAAAD,sBAAA,0BAAtBA,sBAAsB;EAAtBA,sBAAsB,CAAtBA,sBAAsB;EAAtBA,sBAAsB,CAAtBA,sBAAsB;EAAtBA,sBAAsB,CAAtBA,sBAAsB;EAAA,OAAtBA,sBAAsB;AAAA;AAAA,IAMtBE,gBAAgB,GAAAD,OAAA,CAAAC,gBAAA,0BAAhBA,gBAAgB;EAAhBA,gBAAgB,CAAhBA,gBAAgB;EAAhBA,gBAAgB,CAAhBA,gBAAgB;EAAA,OAAhBA,gBAAgB;AAAA","ignoreList":[]}
@@ -15,8 +15,7 @@ const OpeningTimes = _ref => {
15
15
  weekdays,
16
16
  onChange,
17
17
  onTimeAdd,
18
- onTimeRemove,
19
- shouldNotValidate = false
18
+ onTimeRemove
20
19
  } = _ref;
21
20
  const [newOpeningTimes, setNewOpeningTimes] = useState();
22
21
  const [invalidOpeningTimes, setInvalidOpeningTimes] = useState([]);
@@ -27,7 +26,7 @@ const OpeningTimes = _ref => {
27
26
  setNewOpeningTimes(openingTimes);
28
27
  }, [openingTimes]);
29
28
  const validateTime = useCallback((newTime, dayId) => {
30
- if (newTime.start === newTime.end) {
29
+ if (newTime.start === newTime.end || newTime.start >= newTime.end) {
31
30
  return false;
32
31
  }
33
32
  const dayTimes = newOpeningTimes?.find(day => day.id === dayId)?.times || [];
@@ -53,10 +52,7 @@ const OpeningTimes = _ref => {
53
52
  });
54
53
  }, [onChange]);
55
54
  const handleChange = useCallback((newTime, id) => {
56
- const isValid = shouldNotValidate || validateTime(newTime, id);
57
- if (!isValid) {
58
- return;
59
- }
55
+ const isValid = validateTime(newTime, id);
60
56
  setNewOpeningTimes(prevOpeningTimes => {
61
57
  const updatedOpeningTimes = (prevOpeningTimes ?? []).map(openingTime => {
62
58
  if (openingTime.id === id) {
@@ -74,21 +70,23 @@ const OpeningTimes = _ref => {
74
70
  return openingTime;
75
71
  });
76
72
  const changedOpeningTime = updatedOpeningTimes.find(updatedOpeningTime => updatedOpeningTime.id === id);
77
- if (isValid && typeof onChange === 'function') {
73
+ if (typeof onChange === 'function') {
78
74
  onChange({
75
+ isValid,
79
76
  dayId: changedOpeningTime?.id,
80
77
  time: newTime
81
78
  });
82
79
  }
83
80
  return updatedOpeningTimes;
84
81
  });
85
- }, [onChange, shouldNotValidate, validateTime]);
82
+ }, [onChange, validateTime]);
86
83
  const handleAdd = useCallback((time, id) => {
87
- const isValid = shouldNotValidate || validateTime(time, id);
88
- if (isValid && typeof onTimeAdd === 'function') {
84
+ const isValid = validateTime(time, id);
85
+ if (typeof onTimeAdd === 'function') {
89
86
  onTimeAdd({
90
87
  time,
91
- dayId: id
88
+ dayId: id,
89
+ isValid
92
90
  });
93
91
  }
94
92
  setNewOpeningTimes(prevOpeningTimes => (prevOpeningTimes ?? []).map(openingTime => {
@@ -100,7 +98,7 @@ const OpeningTimes = _ref => {
100
98
  }
101
99
  return openingTime;
102
100
  }));
103
- }, [onTimeAdd, shouldNotValidate, validateTime]);
101
+ }, [onTimeAdd, validateTime]);
104
102
  const handleUpdateInvalidIds = useCallback((openingTimeId, invalidTimeIds) => {
105
103
  setInvalidOpeningTimes(prevState => {
106
104
  const updatedInvalidOpeningTimes = prevState.map(invalidOpeningTime => {
@@ -1 +1 @@
1
- {"version":3,"file":"OpeningTimes.js","names":["Checkbox","Popup","useElementSize","React","useCallback","useEffect","useMemo","useRef","useState","HintTextPosition","HintText","OpeningInputs","StyledOpeningTimes","StyledOpeningTimesTooltipContent","StyledOpeningTimesWeekDay","StyledOpeningTimesWrapper","OpeningTimes","_ref","closedText","currentDayId","editMode","hintText","hintTextPosition","Bottom","openingTimes","weekdays","onChange","onTimeAdd","onTimeRemove","shouldNotValidate","newOpeningTimes","setNewOpeningTimes","invalidOpeningTimes","setInvalidOpeningTimes","isPopupOpen","setIsPopupOpen","ref","popupRef","validateTime","newTime","dayId","start","end","dayTimes","find","day","id","times","every","time","handleCheckBoxChange","prevOpeningTimes","updatedOpeningTimes","map","openingTime","isDisabled","enabledDays","filter","item","handleChange","isValid","newTimes","changedOpeningTime","updatedOpeningTime","handleAdd","handleUpdateInvalidIds","openingTimeId","invalidTimeIds","prevState","updatedInvalidOpeningTimes","invalidOpeningTime","some","_ref2","updatedInvalidOpeningId","length","push","updatedInvalidOpeningTime","handleRemove","content","items","forEach","_ref3","weekdayId","weekday","weekDay","name","createElement","key","isChecked","onInvalid","onRemove","onAdd","size","hidePopup","current","hide","showPopup","show","displayedContent","singleDay","_ref4","style","width","onMouseEnter","onMouseLeave","onClick","onShow","onHide","shouldShowHint","Top","text","displayName"],"sources":["../../../../src/components/opening-times/OpeningTimes.tsx"],"sourcesContent":["import { Checkbox, Popup, useElementSize, type PopupRef } from '@chayns-components/core';\nimport React, {\n FC,\n useCallback,\n useEffect,\n useMemo,\n useRef,\n useState,\n type ReactElement,\n} from 'react';\nimport {\n HintTextPosition,\n type OnChange,\n type OnTimeAdd,\n type OpeningTime,\n type Time,\n type Weekday,\n} from '../../types/openingTimes';\nimport HintText from './hint-text/HintText';\nimport OpeningInputs from './opening-inputs/OpeningInputs';\nimport {\n StyledOpeningTimes,\n StyledOpeningTimesTooltipContent,\n StyledOpeningTimesWeekDay,\n StyledOpeningTimesWrapper,\n} from './OpeningTimes.styles';\n\nexport type OpeningTimesProps = {\n /**\n * The text that should be displayed when a day is closed.\n */\n closedText?: string;\n /**\n * If set just the current day is displayed and the whole week in a tooltip.\n */\n currentDayId?: OpeningTime['id'];\n /**\n * Whether the opening times can be edited.\n */\n editMode?: boolean;\n /**\n * The text that should be displayed if times are colliding.\n */\n hintText?: string;\n /**\n * The position of the hint text.\n */\n hintTextPosition?: HintTextPosition;\n /**\n * Function to be executed when a time is changed or a day is enabled/disabled.\n * @param openingTimes\n */\n onChange?: ({ time, enabledDays, dayId }: OnChange) => void;\n /**\n * Function to be executed when a time is added.\n */\n onTimeAdd?: ({ time, dayId }: OnTimeAdd) => void;\n /**\n * Function to be executed when a time is removed.\n */\n onTimeRemove?: (id: string) => void;\n /**\n * The opening times corresponding to its weekday.\n */\n openingTimes: OpeningTime[];\n /**\n * The weekdays that should be displayed.\n */\n weekdays: Weekday[];\n /**\n * When set to true, events are triggered without validation.\n */\n shouldNotValidate?: boolean;\n};\n\nconst OpeningTimes: FC<OpeningTimesProps> = ({\n closedText = 'closed',\n currentDayId,\n editMode = false,\n hintText,\n hintTextPosition = HintTextPosition.Bottom,\n openingTimes,\n weekdays,\n onChange,\n onTimeAdd,\n onTimeRemove,\n shouldNotValidate = false,\n}) => {\n const [newOpeningTimes, setNewOpeningTimes] = useState<OpeningTime[]>();\n const [invalidOpeningTimes, setInvalidOpeningTimes] = useState<\n { openingTimeId: string; invalidTimeIds: string[] }[]\n >([]);\n const [isPopupOpen, setIsPopupOpen] = useState(false);\n\n const ref = useRef<HTMLDivElement>(null);\n const popupRef = useRef<PopupRef>(null);\n\n useEffect(() => {\n setNewOpeningTimes(openingTimes);\n }, [openingTimes]);\n\n const validateTime = useCallback(\n (newTime: Time, dayId: string): boolean => {\n if (newTime.start === newTime.end) {\n return false;\n }\n const dayTimes = newOpeningTimes?.find((day) => day.id === dayId)?.times || [];\n\n return dayTimes.every(\n (time) =>\n time.id === newTime.id ||\n newTime.end <= time.start ||\n newTime.start >= time.end,\n );\n },\n [newOpeningTimes],\n );\n\n const handleCheckBoxChange = useCallback(\n (id: string) => {\n setNewOpeningTimes((prevOpeningTimes) => {\n const updatedOpeningTimes = (prevOpeningTimes ?? []).map((openingTime) => {\n if (openingTime.id === id) {\n return { ...openingTime, isDisabled: !openingTime.isDisabled };\n }\n return openingTime;\n });\n\n if (typeof onChange === 'function') {\n onChange({\n enabledDays: updatedOpeningTimes\n .filter((item) => !item.isDisabled)\n .map((item) => item.id),\n });\n }\n\n return updatedOpeningTimes;\n });\n },\n [onChange],\n );\n\n const handleChange = useCallback(\n (newTime: Time, id: string) => {\n const isValid = shouldNotValidate || validateTime(newTime, id);\n if (!isValid) {\n return;\n }\n\n setNewOpeningTimes((prevOpeningTimes) => {\n const updatedOpeningTimes = (prevOpeningTimes ?? []).map((openingTime) => {\n if (openingTime.id === id) {\n const newTimes = openingTime.times.map((time) => {\n if (time.id === newTime.id) {\n return newTime;\n }\n return time;\n });\n return { ...openingTime, times: newTimes };\n }\n return openingTime;\n });\n\n const changedOpeningTime = updatedOpeningTimes.find(\n (updatedOpeningTime) => updatedOpeningTime.id === id,\n );\n\n if (isValid && typeof onChange === 'function') {\n onChange({\n dayId: changedOpeningTime?.id,\n time: newTime,\n });\n }\n\n return updatedOpeningTimes;\n });\n },\n [onChange, shouldNotValidate, validateTime],\n );\n\n const handleAdd = useCallback(\n (time: Time, id: string) => {\n const isValid = shouldNotValidate || validateTime(time, id);\n\n if (isValid && typeof onTimeAdd === 'function') {\n onTimeAdd({ time, dayId: id });\n }\n\n setNewOpeningTimes((prevOpeningTimes) =>\n (prevOpeningTimes ?? []).map((openingTime) => {\n if (openingTime.id === id) {\n return { ...openingTime, times: [...openingTime.times, time] };\n }\n return openingTime;\n }),\n );\n },\n [onTimeAdd, shouldNotValidate, validateTime],\n );\n\n const handleUpdateInvalidIds = useCallback(\n (openingTimeId: string, invalidTimeIds: string[]) => {\n setInvalidOpeningTimes((prevState) => {\n const updatedInvalidOpeningTimes = prevState.map((invalidOpeningTime) => {\n if (invalidOpeningTime.openingTimeId === openingTimeId) {\n return {\n openingTimeId,\n invalidTimeIds,\n };\n }\n return invalidOpeningTime;\n });\n\n if (\n !updatedInvalidOpeningTimes.some(\n ({ openingTimeId: updatedInvalidOpeningId }) =>\n updatedInvalidOpeningId === openingTimeId,\n ) &&\n invalidTimeIds.length > 0\n ) {\n updatedInvalidOpeningTimes.push({ openingTimeId, invalidTimeIds });\n }\n\n return updatedInvalidOpeningTimes.filter(\n (updatedInvalidOpeningTime) =>\n updatedInvalidOpeningTime.invalidTimeIds.length !== 0,\n );\n });\n },\n [],\n );\n\n const handleRemove = useCallback(\n (id: string) => {\n setNewOpeningTimes((prevOpeningTimes) =>\n (prevOpeningTimes ?? []).map((openingTime) => {\n const newTimes = openingTime.times.filter((time) => time.id !== id);\n\n return { ...openingTime, times: newTimes };\n }),\n );\n\n if (typeof onTimeRemove === 'function') {\n onTimeRemove(id);\n }\n },\n [onTimeRemove],\n );\n\n const content = useMemo(() => {\n const items: ReactElement[] = [];\n\n if (!newOpeningTimes) {\n return items;\n }\n\n newOpeningTimes.forEach(({ times, id, weekdayId, isDisabled }) => {\n const weekday = weekdays.find((weekDay) => weekDay.id === weekdayId)?.name;\n\n if (!weekday) {\n return;\n }\n\n items.push(\n <StyledOpeningTimesWrapper key={`openingTimes__${id}`}>\n {editMode ? (\n <Checkbox isChecked={!isDisabled} onChange={() => handleCheckBoxChange(id)}>\n {weekday}\n </Checkbox>\n ) : (\n <StyledOpeningTimesWeekDay>{weekday}</StyledOpeningTimesWeekDay>\n )}\n <OpeningInputs\n closedText={closedText}\n currentDayId={currentDayId}\n id={id}\n times={times}\n isDisabled={isDisabled}\n onInvalid={handleUpdateInvalidIds}\n onChange={(newTime) => handleChange(newTime, id)}\n onRemove={handleRemove}\n onAdd={handleAdd}\n editMode={editMode}\n />\n </StyledOpeningTimesWrapper>,\n );\n });\n\n return items;\n }, [\n closedText,\n currentDayId,\n editMode,\n handleAdd,\n handleChange,\n handleCheckBoxChange,\n handleRemove,\n handleUpdateInvalidIds,\n newOpeningTimes,\n weekdays,\n ]);\n\n const size = useElementSize(ref);\n\n const hidePopup = useCallback(() => {\n setIsPopupOpen(false);\n popupRef.current?.hide();\n }, []);\n\n const showPopup = useCallback(() => {\n setIsPopupOpen(true);\n popupRef.current?.show();\n }, []);\n\n const displayedContent = useMemo(() => {\n if (!currentDayId || editMode) {\n return content;\n }\n\n const singleDay = newOpeningTimes?.find(({ id }) => id === currentDayId);\n\n if (!singleDay) {\n return content;\n }\n\n const { id, times, weekdayId } = singleDay;\n\n const weekday = weekdays.find((weekDay) => weekDay.id === weekdayId)?.name;\n\n return (\n <StyledOpeningTimesWrapper\n key={`currentDay__${currentDayId}`}\n style={size && { width: size.width }}\n onMouseEnter={showPopup}\n onMouseLeave={hidePopup}\n onClick={() => (isPopupOpen ? hidePopup() : showPopup())}\n >\n <Popup\n onShow={() => setIsPopupOpen(true)}\n onHide={() => setIsPopupOpen(false)}\n ref={popupRef}\n content={\n <StyledOpeningTimesTooltipContent key=\"opening-time-tooltip\">\n {content}\n </StyledOpeningTimesTooltipContent>\n }\n >\n <StyledOpeningTimesWeekDay>{weekday}</StyledOpeningTimesWeekDay>\n </Popup>\n <OpeningInputs\n closedText={closedText}\n currentDayId={currentDayId}\n onInvalid={handleUpdateInvalidIds}\n id={id}\n times={times}\n editMode={editMode}\n />\n </StyledOpeningTimesWrapper>\n );\n }, [\n currentDayId,\n editMode,\n newOpeningTimes,\n weekdays,\n size,\n showPopup,\n hidePopup,\n content,\n closedText,\n handleUpdateInvalidIds,\n isPopupOpen,\n ]);\n\n const shouldShowHint = useMemo(\n () => invalidOpeningTimes.length > 0,\n [invalidOpeningTimes.length],\n );\n\n return useMemo(\n () => (\n <StyledOpeningTimes ref={ref}>\n {shouldShowHint && hintText && hintTextPosition === HintTextPosition.Top && (\n <HintText text={hintText} />\n )}\n {displayedContent}\n {shouldShowHint && hintText && hintTextPosition === HintTextPosition.Bottom && (\n <HintText text={hintText} />\n )}\n </StyledOpeningTimes>\n ),\n [displayedContent, hintText, hintTextPosition, shouldShowHint],\n );\n};\n\nOpeningTimes.displayName = 'OpeningTimes';\n\nexport default OpeningTimes;\n"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"file":"OpeningTimes.js","names":["Checkbox","Popup","useElementSize","React","useCallback","useEffect","useMemo","useRef","useState","HintTextPosition","HintText","OpeningInputs","StyledOpeningTimes","StyledOpeningTimesTooltipContent","StyledOpeningTimesWeekDay","StyledOpeningTimesWrapper","OpeningTimes","_ref","closedText","currentDayId","editMode","hintText","hintTextPosition","Bottom","openingTimes","weekdays","onChange","onTimeAdd","onTimeRemove","newOpeningTimes","setNewOpeningTimes","invalidOpeningTimes","setInvalidOpeningTimes","isPopupOpen","setIsPopupOpen","ref","popupRef","validateTime","newTime","dayId","start","end","dayTimes","find","day","id","times","every","time","handleCheckBoxChange","prevOpeningTimes","updatedOpeningTimes","map","openingTime","isDisabled","enabledDays","filter","item","handleChange","isValid","newTimes","changedOpeningTime","updatedOpeningTime","handleAdd","handleUpdateInvalidIds","openingTimeId","invalidTimeIds","prevState","updatedInvalidOpeningTimes","invalidOpeningTime","some","_ref2","updatedInvalidOpeningId","length","push","updatedInvalidOpeningTime","handleRemove","content","items","forEach","_ref3","weekdayId","weekday","weekDay","name","createElement","key","isChecked","onInvalid","onRemove","onAdd","size","hidePopup","current","hide","showPopup","show","displayedContent","singleDay","_ref4","style","width","onMouseEnter","onMouseLeave","onClick","onShow","onHide","shouldShowHint","Top","text","displayName"],"sources":["../../../../src/components/opening-times/OpeningTimes.tsx"],"sourcesContent":["import { Checkbox, Popup, useElementSize, type PopupRef } from '@chayns-components/core';\nimport React, {\n FC,\n useCallback,\n useEffect,\n useMemo,\n useRef,\n useState,\n type ReactElement,\n} from 'react';\nimport {\n HintTextPosition,\n type OnChange,\n type OnTimeAdd,\n type OpeningTime,\n type Time,\n type Weekday,\n} from '../../types/openingTimes';\nimport HintText from './hint-text/HintText';\nimport OpeningInputs from './opening-inputs/OpeningInputs';\nimport {\n StyledOpeningTimes,\n StyledOpeningTimesTooltipContent,\n StyledOpeningTimesWeekDay,\n StyledOpeningTimesWrapper,\n} from './OpeningTimes.styles';\n\nexport type OpeningTimesProps = {\n /**\n * The text that should be displayed when a day is closed.\n */\n closedText?: string;\n /**\n * If set just the current day is displayed and the whole week in a tooltip.\n */\n currentDayId?: OpeningTime['id'];\n /**\n * Whether the opening times can be edited.\n */\n editMode?: boolean;\n /**\n * The text that should be displayed if times are colliding.\n */\n hintText?: string;\n /**\n * The position of the hint text.\n */\n hintTextPosition?: HintTextPosition;\n /**\n * Function to be executed when a time is changed or a day is enabled/disabled.\n * @param openingTimes\n */\n onChange?: ({ time, enabledDays, dayId, isValid }: OnChange) => void;\n /**\n * Function to be executed when a time is added.\n */\n onTimeAdd?: ({ time, dayId, isValid }: OnTimeAdd) => void;\n /**\n * Function to be executed when a time is removed.\n */\n onTimeRemove?: (id: string) => void;\n /**\n * The opening times corresponding to its weekday.\n */\n openingTimes: OpeningTime[];\n /**\n * The weekdays that should be displayed.\n */\n weekdays: Weekday[];\n};\n\nconst OpeningTimes: FC<OpeningTimesProps> = ({\n closedText = 'closed',\n currentDayId,\n editMode = false,\n hintText,\n hintTextPosition = HintTextPosition.Bottom,\n openingTimes,\n weekdays,\n onChange,\n onTimeAdd,\n onTimeRemove,\n}) => {\n const [newOpeningTimes, setNewOpeningTimes] = useState<OpeningTime[]>();\n const [invalidOpeningTimes, setInvalidOpeningTimes] = useState<\n { openingTimeId: string; invalidTimeIds: string[] }[]\n >([]);\n const [isPopupOpen, setIsPopupOpen] = useState(false);\n\n const ref = useRef<HTMLDivElement>(null);\n const popupRef = useRef<PopupRef>(null);\n\n useEffect(() => {\n setNewOpeningTimes(openingTimes);\n }, [openingTimes]);\n\n const validateTime = useCallback(\n (newTime: Time, dayId: string): boolean => {\n if (newTime.start === newTime.end || newTime.start >= newTime.end) {\n return false;\n }\n const dayTimes = newOpeningTimes?.find((day) => day.id === dayId)?.times || [];\n\n return dayTimes.every(\n (time) =>\n time.id === newTime.id ||\n newTime.end <= time.start ||\n newTime.start >= time.end,\n );\n },\n [newOpeningTimes],\n );\n\n const handleCheckBoxChange = useCallback(\n (id: string) => {\n setNewOpeningTimes((prevOpeningTimes) => {\n const updatedOpeningTimes = (prevOpeningTimes ?? []).map((openingTime) => {\n if (openingTime.id === id) {\n return { ...openingTime, isDisabled: !openingTime.isDisabled };\n }\n return openingTime;\n });\n\n if (typeof onChange === 'function') {\n onChange({\n enabledDays: updatedOpeningTimes\n .filter((item) => !item.isDisabled)\n .map((item) => item.id),\n });\n }\n\n return updatedOpeningTimes;\n });\n },\n [onChange],\n );\n\n const handleChange = useCallback(\n (newTime: Time, id: string) => {\n const isValid = validateTime(newTime, id);\n\n setNewOpeningTimes((prevOpeningTimes) => {\n const updatedOpeningTimes = (prevOpeningTimes ?? []).map((openingTime) => {\n if (openingTime.id === id) {\n const newTimes = openingTime.times.map((time) => {\n if (time.id === newTime.id) {\n return newTime;\n }\n return time;\n });\n return { ...openingTime, times: newTimes };\n }\n return openingTime;\n });\n\n const changedOpeningTime = updatedOpeningTimes.find(\n (updatedOpeningTime) => updatedOpeningTime.id === id,\n );\n\n if (typeof onChange === 'function') {\n onChange({\n isValid,\n dayId: changedOpeningTime?.id,\n time: newTime,\n });\n }\n\n return updatedOpeningTimes;\n });\n },\n [onChange, validateTime],\n );\n\n const handleAdd = useCallback(\n (time: Time, id: string) => {\n const isValid = validateTime(time, id);\n\n if (typeof onTimeAdd === 'function') {\n onTimeAdd({ time, dayId: id, isValid });\n }\n\n setNewOpeningTimes((prevOpeningTimes) =>\n (prevOpeningTimes ?? []).map((openingTime) => {\n if (openingTime.id === id) {\n return { ...openingTime, times: [...openingTime.times, time] };\n }\n return openingTime;\n }),\n );\n },\n [onTimeAdd, validateTime],\n );\n\n const handleUpdateInvalidIds = useCallback(\n (openingTimeId: string, invalidTimeIds: string[]) => {\n setInvalidOpeningTimes((prevState) => {\n const updatedInvalidOpeningTimes = prevState.map((invalidOpeningTime) => {\n if (invalidOpeningTime.openingTimeId === openingTimeId) {\n return {\n openingTimeId,\n invalidTimeIds,\n };\n }\n return invalidOpeningTime;\n });\n\n if (\n !updatedInvalidOpeningTimes.some(\n ({ openingTimeId: updatedInvalidOpeningId }) =>\n updatedInvalidOpeningId === openingTimeId,\n ) &&\n invalidTimeIds.length > 0\n ) {\n updatedInvalidOpeningTimes.push({ openingTimeId, invalidTimeIds });\n }\n\n return updatedInvalidOpeningTimes.filter(\n (updatedInvalidOpeningTime) =>\n updatedInvalidOpeningTime.invalidTimeIds.length !== 0,\n );\n });\n },\n [],\n );\n\n const handleRemove = useCallback(\n (id: string) => {\n setNewOpeningTimes((prevOpeningTimes) =>\n (prevOpeningTimes ?? []).map((openingTime) => {\n const newTimes = openingTime.times.filter((time) => time.id !== id);\n\n return { ...openingTime, times: newTimes };\n }),\n );\n\n if (typeof onTimeRemove === 'function') {\n onTimeRemove(id);\n }\n },\n [onTimeRemove],\n );\n\n const content = useMemo(() => {\n const items: ReactElement[] = [];\n\n if (!newOpeningTimes) {\n return items;\n }\n\n newOpeningTimes.forEach(({ times, id, weekdayId, isDisabled }) => {\n const weekday = weekdays.find((weekDay) => weekDay.id === weekdayId)?.name;\n\n if (!weekday) {\n return;\n }\n\n items.push(\n <StyledOpeningTimesWrapper key={`openingTimes__${id}`}>\n {editMode ? (\n <Checkbox isChecked={!isDisabled} onChange={() => handleCheckBoxChange(id)}>\n {weekday}\n </Checkbox>\n ) : (\n <StyledOpeningTimesWeekDay>{weekday}</StyledOpeningTimesWeekDay>\n )}\n <OpeningInputs\n closedText={closedText}\n currentDayId={currentDayId}\n id={id}\n times={times}\n isDisabled={isDisabled}\n onInvalid={handleUpdateInvalidIds}\n onChange={(newTime) => handleChange(newTime, id)}\n onRemove={handleRemove}\n onAdd={handleAdd}\n editMode={editMode}\n />\n </StyledOpeningTimesWrapper>,\n );\n });\n\n return items;\n }, [\n closedText,\n currentDayId,\n editMode,\n handleAdd,\n handleChange,\n handleCheckBoxChange,\n handleRemove,\n handleUpdateInvalidIds,\n newOpeningTimes,\n weekdays,\n ]);\n\n const size = useElementSize(ref);\n\n const hidePopup = useCallback(() => {\n setIsPopupOpen(false);\n popupRef.current?.hide();\n }, []);\n\n const showPopup = useCallback(() => {\n setIsPopupOpen(true);\n popupRef.current?.show();\n }, []);\n\n const displayedContent = useMemo(() => {\n if (!currentDayId || editMode) {\n return content;\n }\n\n const singleDay = newOpeningTimes?.find(({ id }) => id === currentDayId);\n\n if (!singleDay) {\n return content;\n }\n\n const { id, times, weekdayId } = singleDay;\n\n const weekday = weekdays.find((weekDay) => weekDay.id === weekdayId)?.name;\n\n return (\n <StyledOpeningTimesWrapper\n key={`currentDay__${currentDayId}`}\n style={size && { width: size.width }}\n onMouseEnter={showPopup}\n onMouseLeave={hidePopup}\n onClick={() => (isPopupOpen ? hidePopup() : showPopup())}\n >\n <Popup\n onShow={() => setIsPopupOpen(true)}\n onHide={() => setIsPopupOpen(false)}\n ref={popupRef}\n content={\n <StyledOpeningTimesTooltipContent key=\"opening-time-tooltip\">\n {content}\n </StyledOpeningTimesTooltipContent>\n }\n >\n <StyledOpeningTimesWeekDay>{weekday}</StyledOpeningTimesWeekDay>\n </Popup>\n <OpeningInputs\n closedText={closedText}\n currentDayId={currentDayId}\n onInvalid={handleUpdateInvalidIds}\n id={id}\n times={times}\n editMode={editMode}\n />\n </StyledOpeningTimesWrapper>\n );\n }, [\n currentDayId,\n editMode,\n newOpeningTimes,\n weekdays,\n size,\n showPopup,\n hidePopup,\n content,\n closedText,\n handleUpdateInvalidIds,\n isPopupOpen,\n ]);\n\n const shouldShowHint = useMemo(\n () => invalidOpeningTimes.length > 0,\n [invalidOpeningTimes.length],\n );\n\n return useMemo(\n () => (\n <StyledOpeningTimes ref={ref}>\n {shouldShowHint && hintText && hintTextPosition === HintTextPosition.Top && (\n <HintText text={hintText} />\n )}\n {displayedContent}\n {shouldShowHint && hintText && hintTextPosition === HintTextPosition.Bottom && (\n <HintText text={hintText} />\n )}\n </StyledOpeningTimes>\n ),\n [displayedContent, hintText, hintTextPosition, shouldShowHint],\n );\n};\n\nOpeningTimes.displayName = 'OpeningTimes';\n\nexport default OpeningTimes;\n"],"mappings":"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","ignoreList":[]}
@@ -1 +1 @@
1
- {"version":3,"file":"openingTimes.js","names":["OpeningTimesButtonType","HintTextPosition"],"sources":["../../../src/types/openingTimes.ts"],"sourcesContent":["export interface Weekday {\n name: string;\n id: number;\n}\n\nexport interface Time {\n id: string;\n start: string;\n end: string;\n}\n\nexport interface OpeningTime {\n weekdayId: Weekday['id'];\n id: string;\n isDisabled?: boolean;\n times: Time[];\n}\n\nexport interface OnTimeAdd {\n dayId: OpeningTime['id'];\n time: Time;\n}\n\nexport interface OnChange {\n enabledDays?: OpeningTime['id'][];\n dayId?: OpeningTime['id'];\n time?: Time;\n}\n\nexport enum OpeningTimesButtonType {\n NONE,\n ADD,\n REMOVE,\n}\n\nexport enum HintTextPosition {\n Top,\n Bottom,\n}\n"],"mappings":"AA6BA,WAAYA,sBAAsB,0BAAtBA,sBAAsB;EAAtBA,sBAAsB,CAAtBA,sBAAsB;EAAtBA,sBAAsB,CAAtBA,sBAAsB;EAAtBA,sBAAsB,CAAtBA,sBAAsB;EAAA,OAAtBA,sBAAsB;AAAA;AAMlC,WAAYC,gBAAgB,0BAAhBA,gBAAgB;EAAhBA,gBAAgB,CAAhBA,gBAAgB;EAAhBA,gBAAgB,CAAhBA,gBAAgB;EAAA,OAAhBA,gBAAgB;AAAA","ignoreList":[]}
1
+ {"version":3,"file":"openingTimes.js","names":["OpeningTimesButtonType","HintTextPosition"],"sources":["../../../src/types/openingTimes.ts"],"sourcesContent":["export interface Weekday {\n name: string;\n id: number;\n}\n\nexport interface Time {\n id: string;\n start: string;\n end: string;\n}\n\nexport interface OpeningTime {\n weekdayId: Weekday['id'];\n id: string;\n isDisabled?: boolean;\n times: Time[];\n}\n\nexport interface OnTimeAdd {\n dayId: OpeningTime['id'];\n time: Time;\n isValid: boolean;\n}\n\nexport interface OnChange {\n enabledDays?: OpeningTime['id'][];\n dayId?: OpeningTime['id'];\n time?: Time;\n isValid?: boolean;\n}\n\nexport enum OpeningTimesButtonType {\n NONE,\n ADD,\n REMOVE,\n}\n\nexport enum HintTextPosition {\n Top,\n Bottom,\n}\n"],"mappings":"AA+BA,WAAYA,sBAAsB,0BAAtBA,sBAAsB;EAAtBA,sBAAsB,CAAtBA,sBAAsB;EAAtBA,sBAAsB,CAAtBA,sBAAsB;EAAtBA,sBAAsB,CAAtBA,sBAAsB;EAAA,OAAtBA,sBAAsB;AAAA;AAMlC,WAAYC,gBAAgB,0BAAhBA,gBAAgB;EAAhBA,gBAAgB,CAAhBA,gBAAgB;EAAhBA,gBAAgB,CAAhBA,gBAAgB;EAAA,OAAhBA,gBAAgB;AAAA","ignoreList":[]}
@@ -25,11 +25,11 @@ export type OpeningTimesProps = {
25
25
  * Function to be executed when a time is changed or a day is enabled/disabled.
26
26
  * @param openingTimes
27
27
  */
28
- onChange?: ({ time, enabledDays, dayId }: OnChange) => void;
28
+ onChange?: ({ time, enabledDays, dayId, isValid }: OnChange) => void;
29
29
  /**
30
30
  * Function to be executed when a time is added.
31
31
  */
32
- onTimeAdd?: ({ time, dayId }: OnTimeAdd) => void;
32
+ onTimeAdd?: ({ time, dayId, isValid }: OnTimeAdd) => void;
33
33
  /**
34
34
  * Function to be executed when a time is removed.
35
35
  */
@@ -42,10 +42,6 @@ export type OpeningTimesProps = {
42
42
  * The weekdays that should be displayed.
43
43
  */
44
44
  weekdays: Weekday[];
45
- /**
46
- * When set to true, events are triggered without validation.
47
- */
48
- shouldNotValidate?: boolean;
49
45
  };
50
46
  declare const OpeningTimes: FC<OpeningTimesProps>;
51
47
  export default OpeningTimes;
@@ -16,11 +16,13 @@ export interface OpeningTime {
16
16
  export interface OnTimeAdd {
17
17
  dayId: OpeningTime['id'];
18
18
  time: Time;
19
+ isValid: boolean;
19
20
  }
20
21
  export interface OnChange {
21
22
  enabledDays?: OpeningTime['id'][];
22
23
  dayId?: OpeningTime['id'];
23
24
  time?: Time;
25
+ isValid?: boolean;
24
26
  }
25
27
  export declare enum OpeningTimesButtonType {
26
28
  NONE = 0,
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@chayns-components/date",
3
- "version": "5.0.0-beta.1016",
3
+ "version": "5.0.0-beta.1018",
4
4
  "description": "A set of beautiful React components for developing your own applications with chayns.",
5
5
  "sideEffects": false,
6
6
  "browserslist": [
@@ -70,7 +70,7 @@
70
70
  "typescript": "^5.7.3"
71
71
  },
72
72
  "dependencies": {
73
- "@chayns-components/core": "^5.0.0-beta.1016",
73
+ "@chayns-components/core": "^5.0.0-beta.1017",
74
74
  "uuid": "^10.0.0"
75
75
  },
76
76
  "peerDependencies": {
@@ -83,5 +83,5 @@
83
83
  "publishConfig": {
84
84
  "access": "public"
85
85
  },
86
- "gitHead": "9e8c729e2286f6a9de3f6d6c0c78785ed0444376"
86
+ "gitHead": "17263a1ae1713dc1409ddaadaa1449a5af4fa81a"
87
87
  }