@chayns-components/date 5.0.0-beta.588 → 5.0.0-beta.589

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.
@@ -27,6 +27,7 @@ const OpeningTimes = ({
27
27
  }) => {
28
28
  const [newOpeningTimes, setNewOpeningTimes] = (0, _react.useState)();
29
29
  const [invalidOpeningTimes, setInvalidOpeningTimes] = (0, _react.useState)([]);
30
+ const [isPopupOpen, setIsPopupOpen] = (0, _react.useState)(false);
30
31
  const ref = (0, _react.useRef)(null);
31
32
  const popupRef = (0, _react.useRef)(null);
32
33
  (0, _react.useEffect)(() => {
@@ -151,6 +152,7 @@ const OpeningTimes = ({
151
152
  onChange: () => handleCheckBoxChange(id)
152
153
  }, weekday) : /*#__PURE__*/_react.default.createElement(_OpeningTimes.StyledOpeningTimesWeekDay, null, weekday), /*#__PURE__*/_react.default.createElement(_OpeningInputs.default, {
153
154
  closedText: closedText,
155
+ currentDayId: currentDayId,
154
156
  id: id,
155
157
  times: times,
156
158
  isDisabled: isDisabled,
@@ -162,8 +164,18 @@ const OpeningTimes = ({
162
164
  })));
163
165
  });
164
166
  return items;
165
- }, [closedText, editMode, handleAdd, handleChange, handleCheckBoxChange, handleRemove, handleUpdateInvalidIds, newOpeningTimes, weekdays]);
167
+ }, [closedText, currentDayId, editMode, handleAdd, handleChange, handleCheckBoxChange, handleRemove, handleUpdateInvalidIds, newOpeningTimes, weekdays]);
166
168
  const size = (0, _core.useElementSize)(ref);
169
+ const hidePopup = (0, _react.useCallback)(() => {
170
+ var _popupRef$current;
171
+ setIsPopupOpen(false);
172
+ (_popupRef$current = popupRef.current) === null || _popupRef$current === void 0 || _popupRef$current.hide();
173
+ }, []);
174
+ const showPopup = (0, _react.useCallback)(() => {
175
+ var _popupRef$current2;
176
+ setIsPopupOpen(true);
177
+ (_popupRef$current2 = popupRef.current) === null || _popupRef$current2 === void 0 || _popupRef$current2.show();
178
+ }, []);
167
179
  const displayedContent = (0, _react.useMemo)(() => {
168
180
  var _weekdays$find2;
169
181
  if (!currentDayId || editMode) {
@@ -186,27 +198,25 @@ const OpeningTimes = ({
186
198
  style: size && {
187
199
  width: size.width
188
200
  },
189
- onMouseEnter: () => {
190
- var _popupRef$current;
191
- return (_popupRef$current = popupRef.current) === null || _popupRef$current === void 0 ? void 0 : _popupRef$current.show();
192
- },
193
- onMouseLeave: () => {
194
- var _popupRef$current2;
195
- return (_popupRef$current2 = popupRef.current) === null || _popupRef$current2 === void 0 ? void 0 : _popupRef$current2.hide();
196
- }
201
+ onMouseEnter: showPopup,
202
+ onMouseLeave: hidePopup,
203
+ onClick: () => isPopupOpen ? hidePopup() : showPopup()
197
204
  }, /*#__PURE__*/_react.default.createElement(_core.Popup, {
205
+ onShow: () => setIsPopupOpen(true),
206
+ onHide: () => setIsPopupOpen(false),
198
207
  ref: popupRef,
199
208
  content: /*#__PURE__*/_react.default.createElement(_OpeningTimes.StyledOpeningTimesTooltipContent, {
200
209
  key: "opening-time-tooltip"
201
210
  }, content)
202
211
  }, /*#__PURE__*/_react.default.createElement(_OpeningTimes.StyledOpeningTimesWeekDay, null, weekday)), /*#__PURE__*/_react.default.createElement(_OpeningInputs.default, {
203
212
  closedText: closedText,
213
+ currentDayId: currentDayId,
204
214
  onInvalid: handleUpdateInvalidIds,
205
215
  id: id,
206
216
  times: times,
207
217
  editMode: editMode
208
218
  }));
209
- }, [currentDayId, editMode, newOpeningTimes, weekdays, size, closedText, handleUpdateInvalidIds, content]);
219
+ }, [currentDayId, editMode, newOpeningTimes, weekdays, size, showPopup, hidePopup, content, closedText, handleUpdateInvalidIds, isPopupOpen]);
210
220
  const shouldShowHint = (0, _react.useMemo)(() => invalidOpeningTimes.length > 0, [invalidOpeningTimes.length]);
211
221
  return (0, _react.useMemo)(() => /*#__PURE__*/_react.default.createElement(_OpeningTimes.StyledOpeningTimes, {
212
222
  ref: ref
@@ -1 +1 @@
1
- {"version":3,"file":"OpeningTimes.js","names":["_core","require","_react","_interopRequireWildcard","_openingTimes","_HintText","_interopRequireDefault","_OpeningInputs","_OpeningTimes","obj","__esModule","default","_getRequireWildcardCache","e","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","ref","useRef","popupRef","useEffect","handleCheckBoxChange","useCallback","id","prevOpeningTimes","updatedOpeningTimes","map","openingTime","isDisabled","enabledDays","filter","item","handleChange","newTime","newTimes","times","time","handleAdd","dayId","handleUpdateInvalidIds","openingTimeId","invalidTimeIds","prevState","updatedInvalidOpeningTimes","invalidOpeningTime","some","updatedInvalidOpeningId","length","push","updatedInvalidOpeningTime","handleRemove","content","useMemo","items","forEach","weekdayId","_weekdays$find","weekday","find","weekDay","name","createElement","StyledOpeningTimesWrapper","key","Checkbox","isChecked","StyledOpeningTimesWeekDay","onInvalid","onRemove","onAdd","size","useElementSize","displayedContent","_weekdays$find2","singleDay","style","width","onMouseEnter","_popupRef$current","current","show","onMouseLeave","_popupRef$current2","hide","Popup","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 }: 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\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\n const ref = useRef<HTMLDivElement>(null);\n const popupRef = useRef<PopupRef>(null);\n\n useEffect(() => {\n setNewOpeningTimes(openingTimes);\n }, [openingTimes]);\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 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\n return time;\n });\n\n return { ...openingTime, times: newTimes };\n }\n return openingTime;\n });\n\n if (typeof onChange === 'function') {\n onChange({ time: newTime });\n }\n\n return updatedOpeningTimes;\n });\n },\n [onChange],\n );\n\n const handleAdd = useCallback(\n (time: Time, id: string) => {\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 if (typeof onTimeAdd === 'function') {\n onTimeAdd({ dayId: id, time });\n }\n },\n [onTimeAdd],\n );\n\n const handleUpdateInvalidIds = useCallback(\n (openingTimeId: string, invalidTimeIds: string[]) => {\n setInvalidOpeningTimes((prevState) => {\n let updatedInvalidOpeningTimes = prevState.map((invalidOpeningTime) => {\n if (invalidOpeningTime.openingTimeId === openingTimeId) {\n return {\n openingTimeId,\n invalidTimeIds,\n };\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 updatedInvalidOpeningTimes = updatedInvalidOpeningTimes.filter(\n (updatedInvalidOpeningTime) =>\n updatedInvalidOpeningTime.invalidTimeIds.length !== 0,\n );\n\n return updatedInvalidOpeningTimes;\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 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 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 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={() => popupRef.current?.show()}\n onMouseLeave={() => popupRef.current?.hide()}\n >\n <Popup\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 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 closedText,\n handleUpdateInvalidIds,\n content,\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","obj","__esModule","default","_getRequireWildcardCache","e","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","handleCheckBoxChange","useCallback","id","prevOpeningTimes","updatedOpeningTimes","map","openingTime","isDisabled","enabledDays","filter","item","handleChange","newTime","newTimes","times","time","handleAdd","dayId","handleUpdateInvalidIds","openingTimeId","invalidTimeIds","prevState","updatedInvalidOpeningTimes","invalidOpeningTime","some","updatedInvalidOpeningId","length","push","updatedInvalidOpeningTime","handleRemove","content","useMemo","items","forEach","weekdayId","_weekdays$find","weekday","find","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 }: 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\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 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 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\n return time;\n });\n\n return { ...openingTime, times: newTimes };\n }\n return openingTime;\n });\n\n if (typeof onChange === 'function') {\n onChange({ time: newTime });\n }\n\n return updatedOpeningTimes;\n });\n },\n [onChange],\n );\n\n const handleAdd = useCallback(\n (time: Time, id: string) => {\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 if (typeof onTimeAdd === 'function') {\n onTimeAdd({ dayId: id, time });\n }\n },\n [onTimeAdd],\n );\n\n const handleUpdateInvalidIds = useCallback(\n (openingTimeId: string, invalidTimeIds: string[]) => {\n setInvalidOpeningTimes((prevState) => {\n let updatedInvalidOpeningTimes = prevState.map((invalidOpeningTime) => {\n if (invalidOpeningTime.openingTimeId === openingTimeId) {\n return {\n openingTimeId,\n invalidTimeIds,\n };\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 updatedInvalidOpeningTimes = updatedInvalidOpeningTimes.filter(\n (updatedInvalidOpeningTime) =>\n updatedInvalidOpeningTime.invalidTimeIds.length !== 0,\n );\n\n return updatedInvalidOpeningTimes;\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":[]}
@@ -15,7 +15,7 @@ const StyledOpeningTimesWrapper = exports.StyledOpeningTimesWrapper = _styledCom
15
15
  display: flex;
16
16
  align-items: baseline;
17
17
  justify-content: space-between;
18
- gap: 16px;
18
+ min-width: 300px;
19
19
  `;
20
20
  const StyledOpeningTimesTooltipContent = exports.StyledOpeningTimesTooltipContent = _styledComponents.default.div`
21
21
  padding: 8px;
@@ -1 +1 @@
1
- {"version":3,"file":"OpeningTimes.styles.js","names":["_styledComponents","_interopRequireDefault","require","obj","__esModule","default","StyledOpeningTimes","exports","styled","div","StyledOpeningTimesWrapper","StyledOpeningTimesTooltipContent","StyledOpeningTimesWeekDay","theme","text"],"sources":["../../../../src/components/opening-times/OpeningTimes.styles.ts"],"sourcesContent":["import type { WithTheme } from '@chayns-components/core';\nimport styled from 'styled-components';\n\ntype StyledSliderButtonProps = WithTheme<{ $isDisabled?: boolean }>;\n\nexport const StyledOpeningTimes = styled.div<StyledSliderButtonProps>`\n display: flex;\n flex-direction: column;\n gap: 8px;\n`;\n\nexport const StyledOpeningTimesWrapper = styled.div`\n display: flex;\n align-items: baseline;\n justify-content: space-between;\n gap: 16px;\n`;\n\nexport const StyledOpeningTimesTooltipContent = styled.div`\n padding: 8px;\n`;\n\ntype StyledOpeningTimesWeekDayProps = WithTheme<unknown>;\n\nexport const StyledOpeningTimesWeekDay = styled.div<StyledOpeningTimesWeekDayProps>`\n color: ${({ theme }: StyledOpeningTimesWeekDayProps) => theme.text};\n`;\n"],"mappings":";;;;;;AACA,IAAAA,iBAAA,GAAAC,sBAAA,CAAAC,OAAA;AAAuC,SAAAD,uBAAAE,GAAA,WAAAA,GAAA,IAAAA,GAAA,CAAAC,UAAA,GAAAD,GAAA,KAAAE,OAAA,EAAAF,GAAA;AAIhC,MAAMG,kBAAkB,GAAAC,OAAA,CAAAD,kBAAA,GAAGE,yBAAM,CAACC,GAA6B;AACtE;AACA;AACA;AACA,CAAC;AAEM,MAAMC,yBAAyB,GAAAH,OAAA,CAAAG,yBAAA,GAAGF,yBAAM,CAACC,GAAI;AACpD;AACA;AACA;AACA;AACA,CAAC;AAEM,MAAME,gCAAgC,GAAAJ,OAAA,CAAAI,gCAAA,GAAGH,yBAAM,CAACC,GAAI;AAC3D;AACA,CAAC;AAIM,MAAMG,yBAAyB,GAAAL,OAAA,CAAAK,yBAAA,GAAGJ,yBAAM,CAACC,GAAoC;AACpF,aAAa,CAAC;EAAEI;AAAsC,CAAC,KAAKA,KAAK,CAACC,IAAK;AACvE,CAAC","ignoreList":[]}
1
+ {"version":3,"file":"OpeningTimes.styles.js","names":["_styledComponents","_interopRequireDefault","require","obj","__esModule","default","StyledOpeningTimes","exports","styled","div","StyledOpeningTimesWrapper","StyledOpeningTimesTooltipContent","StyledOpeningTimesWeekDay","theme","text"],"sources":["../../../../src/components/opening-times/OpeningTimes.styles.ts"],"sourcesContent":["import type { WithTheme } from '@chayns-components/core';\nimport styled from 'styled-components';\n\ntype StyledSliderButtonProps = WithTheme<{ $isDisabled?: boolean }>;\n\nexport const StyledOpeningTimes = styled.div<StyledSliderButtonProps>`\n display: flex;\n flex-direction: column;\n gap: 8px;\n`;\n\nexport const StyledOpeningTimesWrapper = styled.div`\n display: flex;\n align-items: baseline;\n justify-content: space-between;\n min-width: 300px;\n`;\n\nexport const StyledOpeningTimesTooltipContent = styled.div`\n padding: 8px;\n`;\n\ntype StyledOpeningTimesWeekDayProps = WithTheme<unknown>;\n\nexport const StyledOpeningTimesWeekDay = styled.div<StyledOpeningTimesWeekDayProps>`\n color: ${({ theme }: StyledOpeningTimesWeekDayProps) => theme.text};\n`;\n"],"mappings":";;;;;;AACA,IAAAA,iBAAA,GAAAC,sBAAA,CAAAC,OAAA;AAAuC,SAAAD,uBAAAE,GAAA,WAAAA,GAAA,IAAAA,GAAA,CAAAC,UAAA,GAAAD,GAAA,KAAAE,OAAA,EAAAF,GAAA;AAIhC,MAAMG,kBAAkB,GAAAC,OAAA,CAAAD,kBAAA,GAAGE,yBAAM,CAACC,GAA6B;AACtE;AACA;AACA;AACA,CAAC;AAEM,MAAMC,yBAAyB,GAAAH,OAAA,CAAAG,yBAAA,GAAGF,yBAAM,CAACC,GAAI;AACpD;AACA;AACA;AACA;AACA,CAAC;AAEM,MAAME,gCAAgC,GAAAJ,OAAA,CAAAI,gCAAA,GAAGH,yBAAM,CAACC,GAAI;AAC3D;AACA,CAAC;AAIM,MAAMG,yBAAyB,GAAAL,OAAA,CAAAK,yBAAA,GAAGJ,yBAAM,CAACC,GAAoC;AACpF,aAAa,CAAC;EAAEI;AAAsC,CAAC,KAAKA,KAAK,CAACC,IAAK;AACvE,CAAC","ignoreList":[]}
@@ -21,6 +21,7 @@ const OpeningInputs = ({
21
21
  onInvalid,
22
22
  id,
23
23
  onChange,
24
+ currentDayId,
24
25
  editMode,
25
26
  closedText
26
27
  }) => {
@@ -101,7 +102,7 @@ const OpeningInputs = ({
101
102
  const text = isDisabled ? closedText : `${start} - ${end}`;
102
103
  items.push( /*#__PURE__*/_react.default.createElement(_OpeningInputs.StyledOpeningInputPreview, {
103
104
  key: `opening-times-preview__${id}.${timeId}`
104
- }, text));
105
+ }, `${text}${currentDayId && newTimes.length > 1 && index === 0 ? ', ' : ''}`));
105
106
  return;
106
107
  }
107
108
  if (index > 1) {
@@ -127,18 +128,25 @@ const OpeningInputs = ({
127
128
  }));
128
129
  });
129
130
  return items;
130
- }, [closedText, editMode, handleAdd, handleChange, handleRemove, id, invalidTimes, isDisabled, newTimes, times.length]);
131
+ }, [closedText, currentDayId, editMode, handleAdd, handleChange, handleRemove, id, invalidTimes, isDisabled, newTimes, times.length]);
132
+ const gap = (0, _react.useMemo)(() => {
133
+ if (newTimes && newTimes.length > 1 && editMode || !editMode && currentDayId) {
134
+ return '8px';
135
+ }
136
+ return 0;
137
+ }, [currentDayId, editMode, newTimes]);
131
138
  return (0, _react.useMemo)(() => /*#__PURE__*/_react.default.createElement(_OpeningInputs.StyledOpeningInputs, {
139
+ $editMode: !currentDayId,
132
140
  key: `opening-inputs__${id}`,
133
141
  animate: {
134
- gap: newTimes && newTimes.length > 1 ? '8px' : 0
142
+ gap
135
143
  },
136
144
  initial: {
137
145
  gap: 0
138
146
  }
139
147
  }, /*#__PURE__*/_react.default.createElement(_framerMotion.AnimatePresence, {
140
148
  initial: false
141
- }, content)), [content, id, newTimes]);
149
+ }, content)), [content, currentDayId, gap, id]);
142
150
  };
143
151
  OpeningInputs.displayName = 'OpeningInputs';
144
152
  var _default = exports.default = OpeningInputs;
@@ -1 +1 @@
1
- {"version":3,"file":"OpeningInputs.js","names":["_framerMotion","require","_react","_interopRequireWildcard","_uuid","_openingTimes","_OpeningInput","_interopRequireDefault","_OpeningInputs","obj","__esModule","default","_getRequireWildcardCache","e","WeakMap","r","t","has","get","n","__proto__","a","Object","defineProperty","getOwnPropertyDescriptor","u","hasOwnProperty","call","i","set","OpeningInputs","times","isDisabled","onRemove","onAdd","onInvalid","id","onChange","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","StyledOpeningInputs","animate","gap","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 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 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 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}\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 editMode,\n handleAdd,\n handleChange,\n handleRemove,\n id,\n invalidTimes,\n isDisabled,\n newTimes,\n times.length,\n ]);\n\n return useMemo(\n () => (\n <StyledOpeningInputs\n key={`opening-inputs__${id}`}\n animate={{ gap: newTimes && newTimes.length > 1 ? '8px' : 0 }}\n initial={{ gap: 0 }}\n >\n <AnimatePresence initial={false}>{content}</AnimatePresence>\n </StyledOpeningInputs>\n ),\n [content, id, newTimes],\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","obj","__esModule","default","_getRequireWildcardCache","e","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":[]}
@@ -5,12 +5,16 @@ Object.defineProperty(exports, "__esModule", {
5
5
  });
6
6
  exports.StyledOpeningInputs = exports.StyledOpeningInputPreview = void 0;
7
7
  var _framerMotion = require("framer-motion");
8
- var _styledComponents = _interopRequireDefault(require("styled-components"));
9
- function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
8
+ var _styledComponents = _interopRequireWildcard(require("styled-components"));
9
+ function _getRequireWildcardCache(e) { if ("function" != typeof WeakMap) return null; var r = new WeakMap(), t = new WeakMap(); return (_getRequireWildcardCache = function (e) { return e ? t : r; })(e); }
10
+ function _interopRequireWildcard(e, r) { if (!r && e && e.__esModule) return e; if (null === e || "object" != typeof e && "function" != typeof e) return { default: e }; var t = _getRequireWildcardCache(r); if (t && t.has(e)) return t.get(e); var n = { __proto__: null }, a = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var u in e) if ("default" !== u && {}.hasOwnProperty.call(e, u)) { var i = a ? Object.getOwnPropertyDescriptor(e, u) : null; i && (i.get || i.set) ? Object.defineProperty(n, u, i) : n[u] = e[u]; } return n.default = e, t && t.set(e, n), n; }
10
11
  const StyledOpeningInputs = exports.StyledOpeningInputs = (0, _styledComponents.default)(_framerMotion.motion.div)`
11
12
  display: flex;
12
- flex-direction: column;
13
- //gap: 8px;
13
+ ${({
14
+ $editMode
15
+ }) => $editMode && (0, _styledComponents.css)`
16
+ flex-direction: column;
17
+ `}
14
18
  `;
15
19
  const StyledOpeningInputPreview = exports.StyledOpeningInputPreview = _styledComponents.default.div`
16
20
  color: ${({
@@ -1 +1 @@
1
- {"version":3,"file":"OpeningInputs.styles.js","names":["_framerMotion","require","_styledComponents","_interopRequireDefault","obj","__esModule","default","StyledOpeningInputs","exports","styled","motion","div","StyledOpeningInputPreview","theme","text"],"sources":["../../../../../src/components/opening-times/opening-inputs/OpeningInputs.styles.ts"],"sourcesContent":["import type { WithTheme } from '@chayns-components/core';\nimport { motion } from 'framer-motion';\nimport styled from 'styled-components';\n\nexport const StyledOpeningInputs = styled(motion.div)`\n display: flex;\n flex-direction: column;\n //gap: 8px;\n`;\n\ntype StyledOpeningInputPreviewProps = WithTheme<unknown>;\n\nexport const StyledOpeningInputPreview = styled.div<StyledOpeningInputPreviewProps>`\n color: ${({ theme }: StyledOpeningInputPreviewProps) => theme.text};\n`;\n"],"mappings":";;;;;;AACA,IAAAA,aAAA,GAAAC,OAAA;AACA,IAAAC,iBAAA,GAAAC,sBAAA,CAAAF,OAAA;AAAuC,SAAAE,uBAAAC,GAAA,WAAAA,GAAA,IAAAA,GAAA,CAAAC,UAAA,GAAAD,GAAA,KAAAE,OAAA,EAAAF,GAAA;AAEhC,MAAMG,mBAAmB,GAAAC,OAAA,CAAAD,mBAAA,GAAG,IAAAE,yBAAM,EAACC,oBAAM,CAACC,GAAG,CAAE;AACtD;AACA;AACA;AACA,CAAC;AAIM,MAAMC,yBAAyB,GAAAJ,OAAA,CAAAI,yBAAA,GAAGH,yBAAM,CAACE,GAAoC;AACpF,aAAa,CAAC;EAAEE;AAAsC,CAAC,KAAKA,KAAK,CAACC,IAAK;AACvE,CAAC","ignoreList":[]}
1
+ {"version":3,"file":"OpeningInputs.styles.js","names":["_framerMotion","require","_styledComponents","_interopRequireWildcard","_getRequireWildcardCache","e","WeakMap","r","t","__esModule","default","has","get","n","__proto__","a","Object","defineProperty","getOwnPropertyDescriptor","u","hasOwnProperty","call","i","set","StyledOpeningInputs","exports","styled","motion","div","$editMode","css","StyledOpeningInputPreview","theme","text"],"sources":["../../../../../src/components/opening-times/opening-inputs/OpeningInputs.styles.ts"],"sourcesContent":["import type { WithTheme } from '@chayns-components/core';\nimport { motion } from 'framer-motion';\nimport styled, { css } from 'styled-components';\n\ntype StyledOpeningInputsProps = WithTheme<{ $editMode: boolean }>;\n\nexport const StyledOpeningInputs = styled(motion.div)<StyledOpeningInputsProps>`\n display: flex;\n ${({ $editMode }) =>\n $editMode &&\n css`\n flex-direction: column;\n `}\n`;\n\ntype StyledOpeningInputPreviewProps = WithTheme<unknown>;\n\nexport const StyledOpeningInputPreview = styled.div<StyledOpeningInputPreviewProps>`\n color: ${({ theme }: StyledOpeningInputPreviewProps) => theme.text};\n`;\n"],"mappings":";;;;;;AACA,IAAAA,aAAA,GAAAC,OAAA;AACA,IAAAC,iBAAA,GAAAC,uBAAA,CAAAF,OAAA;AAAgD,SAAAG,yBAAAC,CAAA,6BAAAC,OAAA,mBAAAC,CAAA,OAAAD,OAAA,IAAAE,CAAA,OAAAF,OAAA,YAAAF,wBAAA,YAAAA,CAAAC,CAAA,WAAAA,CAAA,GAAAG,CAAA,GAAAD,CAAA,KAAAF,CAAA;AAAA,SAAAF,wBAAAE,CAAA,EAAAE,CAAA,SAAAA,CAAA,IAAAF,CAAA,IAAAA,CAAA,CAAAI,UAAA,SAAAJ,CAAA,eAAAA,CAAA,uBAAAA,CAAA,yBAAAA,CAAA,WAAAK,OAAA,EAAAL,CAAA,QAAAG,CAAA,GAAAJ,wBAAA,CAAAG,CAAA,OAAAC,CAAA,IAAAA,CAAA,CAAAG,GAAA,CAAAN,CAAA,UAAAG,CAAA,CAAAI,GAAA,CAAAP,CAAA,OAAAQ,CAAA,KAAAC,SAAA,UAAAC,CAAA,GAAAC,MAAA,CAAAC,cAAA,IAAAD,MAAA,CAAAE,wBAAA,WAAAC,CAAA,IAAAd,CAAA,oBAAAc,CAAA,OAAAC,cAAA,CAAAC,IAAA,CAAAhB,CAAA,EAAAc,CAAA,SAAAG,CAAA,GAAAP,CAAA,GAAAC,MAAA,CAAAE,wBAAA,CAAAb,CAAA,EAAAc,CAAA,UAAAG,CAAA,KAAAA,CAAA,CAAAV,GAAA,IAAAU,CAAA,CAAAC,GAAA,IAAAP,MAAA,CAAAC,cAAA,CAAAJ,CAAA,EAAAM,CAAA,EAAAG,CAAA,IAAAT,CAAA,CAAAM,CAAA,IAAAd,CAAA,CAAAc,CAAA,YAAAN,CAAA,CAAAH,OAAA,GAAAL,CAAA,EAAAG,CAAA,IAAAA,CAAA,CAAAe,GAAA,CAAAlB,CAAA,EAAAQ,CAAA,GAAAA,CAAA;AAIzC,MAAMW,mBAAmB,GAAAC,OAAA,CAAAD,mBAAA,GAAG,IAAAE,yBAAM,EAACC,oBAAM,CAACC,GAAG,CAA4B;AAChF;AACA,MAAM,CAAC;EAAEC;AAAU,CAAC,KACZA,SAAS,IACT,IAAAC,qBAAG,CAAC;AACZ;AACA,SAAU;AACV,CAAC;AAIM,MAAMC,yBAAyB,GAAAN,OAAA,CAAAM,yBAAA,GAAGL,yBAAM,CAACE,GAAoC;AACpF,aAAa,CAAC;EAAEI;AAAsC,CAAC,KAAKA,KAAK,CAACC,IAAK;AACvE,CAAC","ignoreList":[]}
@@ -19,6 +19,7 @@ const OpeningTimes = _ref => {
19
19
  } = _ref;
20
20
  const [newOpeningTimes, setNewOpeningTimes] = useState();
21
21
  const [invalidOpeningTimes, setInvalidOpeningTimes] = useState([]);
22
+ const [isPopupOpen, setIsPopupOpen] = useState(false);
22
23
  const ref = useRef(null);
23
24
  const popupRef = useRef(null);
24
25
  useEffect(() => {
@@ -146,6 +147,7 @@ const OpeningTimes = _ref => {
146
147
  onChange: () => handleCheckBoxChange(id)
147
148
  }, weekday) : /*#__PURE__*/React.createElement(StyledOpeningTimesWeekDay, null, weekday), /*#__PURE__*/React.createElement(OpeningInputs, {
148
149
  closedText: closedText,
150
+ currentDayId: currentDayId,
149
151
  id: id,
150
152
  times: times,
151
153
  isDisabled: isDisabled,
@@ -157,8 +159,16 @@ const OpeningTimes = _ref => {
157
159
  })));
158
160
  });
159
161
  return items;
160
- }, [closedText, editMode, handleAdd, handleChange, handleCheckBoxChange, handleRemove, handleUpdateInvalidIds, newOpeningTimes, weekdays]);
162
+ }, [closedText, currentDayId, editMode, handleAdd, handleChange, handleCheckBoxChange, handleRemove, handleUpdateInvalidIds, newOpeningTimes, weekdays]);
161
163
  const size = useElementSize(ref);
164
+ const hidePopup = useCallback(() => {
165
+ setIsPopupOpen(false);
166
+ popupRef.current?.hide();
167
+ }, []);
168
+ const showPopup = useCallback(() => {
169
+ setIsPopupOpen(true);
170
+ popupRef.current?.show();
171
+ }, []);
162
172
  const displayedContent = useMemo(() => {
163
173
  if (!currentDayId || editMode) {
164
174
  return content;
@@ -183,21 +193,25 @@ const OpeningTimes = _ref => {
183
193
  style: size && {
184
194
  width: size.width
185
195
  },
186
- onMouseEnter: () => popupRef.current?.show(),
187
- onMouseLeave: () => popupRef.current?.hide()
196
+ onMouseEnter: showPopup,
197
+ onMouseLeave: hidePopup,
198
+ onClick: () => isPopupOpen ? hidePopup() : showPopup()
188
199
  }, /*#__PURE__*/React.createElement(Popup, {
200
+ onShow: () => setIsPopupOpen(true),
201
+ onHide: () => setIsPopupOpen(false),
189
202
  ref: popupRef,
190
203
  content: /*#__PURE__*/React.createElement(StyledOpeningTimesTooltipContent, {
191
204
  key: "opening-time-tooltip"
192
205
  }, content)
193
206
  }, /*#__PURE__*/React.createElement(StyledOpeningTimesWeekDay, null, weekday)), /*#__PURE__*/React.createElement(OpeningInputs, {
194
207
  closedText: closedText,
208
+ currentDayId: currentDayId,
195
209
  onInvalid: handleUpdateInvalidIds,
196
210
  id: id,
197
211
  times: times,
198
212
  editMode: editMode
199
213
  }));
200
- }, [currentDayId, editMode, newOpeningTimes, weekdays, size, closedText, handleUpdateInvalidIds, content]);
214
+ }, [currentDayId, editMode, newOpeningTimes, weekdays, size, showPopup, hidePopup, content, closedText, handleUpdateInvalidIds, isPopupOpen]);
201
215
  const shouldShowHint = useMemo(() => invalidOpeningTimes.length > 0, [invalidOpeningTimes.length]);
202
216
  return useMemo(() => /*#__PURE__*/React.createElement(StyledOpeningTimes, {
203
217
  ref: ref
@@ -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","newOpeningTimes","setNewOpeningTimes","invalidOpeningTimes","setInvalidOpeningTimes","ref","popupRef","handleCheckBoxChange","id","prevOpeningTimes","updatedOpeningTimes","map","openingTime","isDisabled","enabledDays","filter","item","handleChange","newTime","newTimes","times","time","handleAdd","dayId","handleUpdateInvalidIds","openingTimeId","invalidTimeIds","prevState","updatedInvalidOpeningTimes","invalidOpeningTime","some","_ref2","updatedInvalidOpeningId","length","push","updatedInvalidOpeningTime","handleRemove","content","items","forEach","_ref3","weekdayId","weekday","find","weekDay","name","createElement","key","isChecked","onInvalid","onRemove","onAdd","size","displayedContent","singleDay","_ref4","style","width","onMouseEnter","current","show","onMouseLeave","hide","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 }: 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\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\n const ref = useRef<HTMLDivElement>(null);\n const popupRef = useRef<PopupRef>(null);\n\n useEffect(() => {\n setNewOpeningTimes(openingTimes);\n }, [openingTimes]);\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 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\n return time;\n });\n\n return { ...openingTime, times: newTimes };\n }\n return openingTime;\n });\n\n if (typeof onChange === 'function') {\n onChange({ time: newTime });\n }\n\n return updatedOpeningTimes;\n });\n },\n [onChange],\n );\n\n const handleAdd = useCallback(\n (time: Time, id: string) => {\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 if (typeof onTimeAdd === 'function') {\n onTimeAdd({ dayId: id, time });\n }\n },\n [onTimeAdd],\n );\n\n const handleUpdateInvalidIds = useCallback(\n (openingTimeId: string, invalidTimeIds: string[]) => {\n setInvalidOpeningTimes((prevState) => {\n let updatedInvalidOpeningTimes = prevState.map((invalidOpeningTime) => {\n if (invalidOpeningTime.openingTimeId === openingTimeId) {\n return {\n openingTimeId,\n invalidTimeIds,\n };\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 updatedInvalidOpeningTimes = updatedInvalidOpeningTimes.filter(\n (updatedInvalidOpeningTime) =>\n updatedInvalidOpeningTime.invalidTimeIds.length !== 0,\n );\n\n return updatedInvalidOpeningTimes;\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 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 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 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={() => popupRef.current?.show()}\n onMouseLeave={() => popupRef.current?.hide()}\n >\n <Popup\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 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 closedText,\n handleUpdateInvalidIds,\n content,\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","handleCheckBoxChange","id","prevOpeningTimes","updatedOpeningTimes","map","openingTime","isDisabled","enabledDays","filter","item","handleChange","newTime","newTimes","times","time","handleAdd","dayId","handleUpdateInvalidIds","openingTimeId","invalidTimeIds","prevState","updatedInvalidOpeningTimes","invalidOpeningTime","some","_ref2","updatedInvalidOpeningId","length","push","updatedInvalidOpeningTime","handleRemove","content","items","forEach","_ref3","weekdayId","weekday","find","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 }: 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\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 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 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\n return time;\n });\n\n return { ...openingTime, times: newTimes };\n }\n return openingTime;\n });\n\n if (typeof onChange === 'function') {\n onChange({ time: newTime });\n }\n\n return updatedOpeningTimes;\n });\n },\n [onChange],\n );\n\n const handleAdd = useCallback(\n (time: Time, id: string) => {\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 if (typeof onTimeAdd === 'function') {\n onTimeAdd({ dayId: id, time });\n }\n },\n [onTimeAdd],\n );\n\n const handleUpdateInvalidIds = useCallback(\n (openingTimeId: string, invalidTimeIds: string[]) => {\n setInvalidOpeningTimes((prevState) => {\n let updatedInvalidOpeningTimes = prevState.map((invalidOpeningTime) => {\n if (invalidOpeningTime.openingTimeId === openingTimeId) {\n return {\n openingTimeId,\n invalidTimeIds,\n };\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 updatedInvalidOpeningTimes = updatedInvalidOpeningTimes.filter(\n (updatedInvalidOpeningTime) =>\n updatedInvalidOpeningTime.invalidTimeIds.length !== 0,\n );\n\n return updatedInvalidOpeningTimes;\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":[]}
@@ -8,7 +8,7 @@ export const StyledOpeningTimesWrapper = styled.div`
8
8
  display: flex;
9
9
  align-items: baseline;
10
10
  justify-content: space-between;
11
- gap: 16px;
11
+ min-width: 300px;
12
12
  `;
13
13
  export const StyledOpeningTimesTooltipContent = styled.div`
14
14
  padding: 8px;
@@ -1 +1 @@
1
- {"version":3,"file":"OpeningTimes.styles.js","names":["styled","StyledOpeningTimes","div","StyledOpeningTimesWrapper","StyledOpeningTimesTooltipContent","StyledOpeningTimesWeekDay","_ref","theme","text"],"sources":["../../../../src/components/opening-times/OpeningTimes.styles.ts"],"sourcesContent":["import type { WithTheme } from '@chayns-components/core';\nimport styled from 'styled-components';\n\ntype StyledSliderButtonProps = WithTheme<{ $isDisabled?: boolean }>;\n\nexport const StyledOpeningTimes = styled.div<StyledSliderButtonProps>`\n display: flex;\n flex-direction: column;\n gap: 8px;\n`;\n\nexport const StyledOpeningTimesWrapper = styled.div`\n display: flex;\n align-items: baseline;\n justify-content: space-between;\n gap: 16px;\n`;\n\nexport const StyledOpeningTimesTooltipContent = styled.div`\n padding: 8px;\n`;\n\ntype StyledOpeningTimesWeekDayProps = WithTheme<unknown>;\n\nexport const StyledOpeningTimesWeekDay = styled.div<StyledOpeningTimesWeekDayProps>`\n color: ${({ theme }: StyledOpeningTimesWeekDayProps) => theme.text};\n`;\n"],"mappings":"AACA,OAAOA,MAAM,MAAM,mBAAmB;AAItC,OAAO,MAAMC,kBAAkB,GAAGD,MAAM,CAACE,GAA6B;AACtE;AACA;AACA;AACA,CAAC;AAED,OAAO,MAAMC,yBAAyB,GAAGH,MAAM,CAACE,GAAI;AACpD;AACA;AACA;AACA;AACA,CAAC;AAED,OAAO,MAAME,gCAAgC,GAAGJ,MAAM,CAACE,GAAI;AAC3D;AACA,CAAC;AAID,OAAO,MAAMG,yBAAyB,GAAGL,MAAM,CAACE,GAAoC;AACpF,aAAaI,IAAA;EAAA,IAAC;IAAEC;EAAsC,CAAC,GAAAD,IAAA;EAAA,OAAKC,KAAK,CAACC,IAAI;AAAA,CAAC;AACvE,CAAC","ignoreList":[]}
1
+ {"version":3,"file":"OpeningTimes.styles.js","names":["styled","StyledOpeningTimes","div","StyledOpeningTimesWrapper","StyledOpeningTimesTooltipContent","StyledOpeningTimesWeekDay","_ref","theme","text"],"sources":["../../../../src/components/opening-times/OpeningTimes.styles.ts"],"sourcesContent":["import type { WithTheme } from '@chayns-components/core';\nimport styled from 'styled-components';\n\ntype StyledSliderButtonProps = WithTheme<{ $isDisabled?: boolean }>;\n\nexport const StyledOpeningTimes = styled.div<StyledSliderButtonProps>`\n display: flex;\n flex-direction: column;\n gap: 8px;\n`;\n\nexport const StyledOpeningTimesWrapper = styled.div`\n display: flex;\n align-items: baseline;\n justify-content: space-between;\n min-width: 300px;\n`;\n\nexport const StyledOpeningTimesTooltipContent = styled.div`\n padding: 8px;\n`;\n\ntype StyledOpeningTimesWeekDayProps = WithTheme<unknown>;\n\nexport const StyledOpeningTimesWeekDay = styled.div<StyledOpeningTimesWeekDayProps>`\n color: ${({ theme }: StyledOpeningTimesWeekDayProps) => theme.text};\n`;\n"],"mappings":"AACA,OAAOA,MAAM,MAAM,mBAAmB;AAItC,OAAO,MAAMC,kBAAkB,GAAGD,MAAM,CAACE,GAA6B;AACtE;AACA;AACA;AACA,CAAC;AAED,OAAO,MAAMC,yBAAyB,GAAGH,MAAM,CAACE,GAAI;AACpD;AACA;AACA;AACA;AACA,CAAC;AAED,OAAO,MAAME,gCAAgC,GAAGJ,MAAM,CAACE,GAAI;AAC3D;AACA,CAAC;AAID,OAAO,MAAMG,yBAAyB,GAAGL,MAAM,CAACE,GAAoC;AACpF,aAAaI,IAAA;EAAA,IAAC;IAAEC;EAAsC,CAAC,GAAAD,IAAA;EAAA,OAAKC,KAAK,CAACC,IAAI;AAAA,CAAC;AACvE,CAAC","ignoreList":[]}
@@ -13,6 +13,7 @@ const OpeningInputs = _ref => {
13
13
  onInvalid,
14
14
  id,
15
15
  onChange,
16
+ currentDayId,
16
17
  editMode,
17
18
  closedText
18
19
  } = _ref;
@@ -97,7 +98,7 @@ const OpeningInputs = _ref => {
97
98
  const text = isDisabled ? closedText : `${start} - ${end}`;
98
99
  items.push( /*#__PURE__*/React.createElement(StyledOpeningInputPreview, {
99
100
  key: `opening-times-preview__${id}.${timeId}`
100
- }, text));
101
+ }, `${text}${currentDayId && newTimes.length > 1 && index === 0 ? ', ' : ''}`));
101
102
  return;
102
103
  }
103
104
  if (index > 1) {
@@ -123,18 +124,25 @@ const OpeningInputs = _ref => {
123
124
  }));
124
125
  });
125
126
  return items;
126
- }, [closedText, editMode, handleAdd, handleChange, handleRemove, id, invalidTimes, isDisabled, newTimes, times.length]);
127
+ }, [closedText, currentDayId, editMode, handleAdd, handleChange, handleRemove, id, invalidTimes, isDisabled, newTimes, times.length]);
128
+ const gap = useMemo(() => {
129
+ if (newTimes && newTimes.length > 1 && editMode || !editMode && currentDayId) {
130
+ return '8px';
131
+ }
132
+ return 0;
133
+ }, [currentDayId, editMode, newTimes]);
127
134
  return useMemo(() => /*#__PURE__*/React.createElement(StyledOpeningInputs, {
135
+ $editMode: !currentDayId,
128
136
  key: `opening-inputs__${id}`,
129
137
  animate: {
130
- gap: newTimes && newTimes.length > 1 ? '8px' : 0
138
+ gap
131
139
  },
132
140
  initial: {
133
141
  gap: 0
134
142
  }
135
143
  }, /*#__PURE__*/React.createElement(AnimatePresence, {
136
144
  initial: false
137
- }, content)), [content, id, newTimes]);
145
+ }, content)), [content, currentDayId, gap, id]);
138
146
  };
139
147
  OpeningInputs.displayName = 'OpeningInputs';
140
148
  export default OpeningInputs;
@@ -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","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","animate","gap","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 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 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 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}\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 editMode,\n handleAdd,\n handleChange,\n handleRemove,\n id,\n invalidTimes,\n isDisabled,\n newTimes,\n times.length,\n ]);\n\n return useMemo(\n () => (\n <StyledOpeningInputs\n key={`opening-inputs__${id}`}\n animate={{ gap: newTimes && newTimes.length > 1 ? '8px' : 0 }}\n initial={{ gap: 0 }}\n >\n <AnimatePresence initial={false}>{content}</AnimatePresence>\n </StyledOpeningInputs>\n ),\n [content, id, newTimes],\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 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,15 +1,21 @@
1
1
  import { motion } from 'framer-motion';
2
- import styled from 'styled-components';
2
+ import styled, { css } from 'styled-components';
3
3
  export const StyledOpeningInputs = styled(motion.div)`
4
4
  display: flex;
5
- flex-direction: column;
6
- //gap: 8px;
5
+ ${_ref => {
6
+ let {
7
+ $editMode
8
+ } = _ref;
9
+ return $editMode && css`
10
+ flex-direction: column;
11
+ `;
12
+ }}
7
13
  `;
8
14
  export const StyledOpeningInputPreview = styled.div`
9
- color: ${_ref => {
15
+ color: ${_ref2 => {
10
16
  let {
11
17
  theme
12
- } = _ref;
18
+ } = _ref2;
13
19
  return theme.text;
14
20
  }};
15
21
  `;
@@ -1 +1 @@
1
- {"version":3,"file":"OpeningInputs.styles.js","names":["motion","styled","StyledOpeningInputs","div","StyledOpeningInputPreview","_ref","theme","text"],"sources":["../../../../../src/components/opening-times/opening-inputs/OpeningInputs.styles.ts"],"sourcesContent":["import type { WithTheme } from '@chayns-components/core';\nimport { motion } from 'framer-motion';\nimport styled from 'styled-components';\n\nexport const StyledOpeningInputs = styled(motion.div)`\n display: flex;\n flex-direction: column;\n //gap: 8px;\n`;\n\ntype StyledOpeningInputPreviewProps = WithTheme<unknown>;\n\nexport const StyledOpeningInputPreview = styled.div<StyledOpeningInputPreviewProps>`\n color: ${({ theme }: StyledOpeningInputPreviewProps) => theme.text};\n`;\n"],"mappings":"AACA,SAASA,MAAM,QAAQ,eAAe;AACtC,OAAOC,MAAM,MAAM,mBAAmB;AAEtC,OAAO,MAAMC,mBAAmB,GAAGD,MAAM,CAACD,MAAM,CAACG,GAAG,CAAE;AACtD;AACA;AACA;AACA,CAAC;AAID,OAAO,MAAMC,yBAAyB,GAAGH,MAAM,CAACE,GAAoC;AACpF,aAAaE,IAAA;EAAA,IAAC;IAAEC;EAAsC,CAAC,GAAAD,IAAA;EAAA,OAAKC,KAAK,CAACC,IAAI;AAAA,CAAC;AACvE,CAAC","ignoreList":[]}
1
+ {"version":3,"file":"OpeningInputs.styles.js","names":["motion","styled","css","StyledOpeningInputs","div","_ref","$editMode","StyledOpeningInputPreview","_ref2","theme","text"],"sources":["../../../../../src/components/opening-times/opening-inputs/OpeningInputs.styles.ts"],"sourcesContent":["import type { WithTheme } from '@chayns-components/core';\nimport { motion } from 'framer-motion';\nimport styled, { css } from 'styled-components';\n\ntype StyledOpeningInputsProps = WithTheme<{ $editMode: boolean }>;\n\nexport const StyledOpeningInputs = styled(motion.div)<StyledOpeningInputsProps>`\n display: flex;\n ${({ $editMode }) =>\n $editMode &&\n css`\n flex-direction: column;\n `}\n`;\n\ntype StyledOpeningInputPreviewProps = WithTheme<unknown>;\n\nexport const StyledOpeningInputPreview = styled.div<StyledOpeningInputPreviewProps>`\n color: ${({ theme }: StyledOpeningInputPreviewProps) => theme.text};\n`;\n"],"mappings":"AACA,SAASA,MAAM,QAAQ,eAAe;AACtC,OAAOC,MAAM,IAAIC,GAAG,QAAQ,mBAAmB;AAI/C,OAAO,MAAMC,mBAAmB,GAAGF,MAAM,CAACD,MAAM,CAACI,GAAG,CAA4B;AAChF;AACA,MAAMC,IAAA;EAAA,IAAC;IAAEC;EAAU,CAAC,GAAAD,IAAA;EAAA,OACZC,SAAS,IACTJ,GAAI;AACZ;AACA,SAAS;AAAA,CAAC;AACV,CAAC;AAID,OAAO,MAAMK,yBAAyB,GAAGN,MAAM,CAACG,GAAoC;AACpF,aAAaI,KAAA;EAAA,IAAC;IAAEC;EAAsC,CAAC,GAAAD,KAAA;EAAA,OAAKC,KAAK,CAACC,IAAI;AAAA,CAAC;AACvE,CAAC","ignoreList":[]}
@@ -1,5 +1,5 @@
1
1
  import { FC } from 'react';
2
- import { type Time } from '../../../types/openingTimes';
2
+ import { type OpeningTime, type Time } from '../../../types/openingTimes';
3
3
  export type OpeningInputsProps = {
4
4
  times: Time[];
5
5
  isDisabled?: boolean;
@@ -8,6 +8,7 @@ export type OpeningInputsProps = {
8
8
  onRemove?: (id: Time['id']) => void;
9
9
  onInvalid?: (openingTimeId: string, timeIds: string[]) => void;
10
10
  id: string;
11
+ currentDayId?: OpeningTime['id'];
11
12
  editMode: boolean;
12
13
  closedText: string;
13
14
  };
@@ -1,6 +1,10 @@
1
1
  /// <reference types="react" />
2
2
  /// <reference types="react" />
3
- export declare const StyledOpeningInputs: import("styled-components").IStyledComponent<"web", import("styled-components/dist/types").FastOmit<Omit<{
3
+ import type { WithTheme } from '@chayns-components/core';
4
+ type StyledOpeningInputsProps = WithTheme<{
5
+ $editMode: boolean;
6
+ }>;
7
+ export declare const StyledOpeningInputs: import("styled-components").IStyledComponent<"web", import("styled-components/dist/types").Substitute<Omit<{
4
8
  color?: string | undefined;
5
9
  defaultChecked?: boolean | undefined;
6
10
  defaultValue?: string | number | readonly string[] | undefined;
@@ -262,7 +266,8 @@ export declare const StyledOpeningInputs: import("styled-components").IStyledCom
262
266
  onTransitionEndCapture?: import("react").TransitionEventHandler<HTMLDivElement> | undefined;
263
267
  } & import("framer-motion").MotionProps & import("react").RefAttributes<HTMLDivElement>, "ref"> & {
264
268
  ref?: ((instance: HTMLDivElement | null) => void) | import("react").RefObject<HTMLDivElement> | null | undefined;
265
- }, never>> & Omit<import("framer-motion").ForwardRefComponent<HTMLDivElement, import("framer-motion").HTMLMotionProps<"div">>, keyof import("react").Component<any, {}, any>>;
269
+ }, StyledOpeningInputsProps>> & Omit<import("framer-motion").ForwardRefComponent<HTMLDivElement, import("framer-motion").HTMLMotionProps<"div">>, keyof import("react").Component<any, {}, any>>;
266
270
  export declare const StyledOpeningInputPreview: import("styled-components").IStyledComponent<"web", import("styled-components/dist/types").Substitute<import("react").DetailedHTMLProps<import("react").HTMLAttributes<HTMLDivElement>, HTMLDivElement>, {
267
271
  theme: import("@chayns-components/core/lib/types/components/color-scheme-provider/ColorSchemeProvider").Theme;
268
272
  }>>;
273
+ export {};
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@chayns-components/date",
3
- "version": "5.0.0-beta.588",
3
+ "version": "5.0.0-beta.589",
4
4
  "description": "A set of beautiful React components for developing your own applications with chayns.",
5
5
  "sideEffects": false,
6
6
  "browserslist": [
@@ -67,7 +67,7 @@
67
67
  "typescript": "^5.4.5"
68
68
  },
69
69
  "dependencies": {
70
- "@chayns-components/core": "^5.0.0-beta.588",
70
+ "@chayns-components/core": "^5.0.0-beta.589",
71
71
  "date-fns": "^2.30.0",
72
72
  "uuid": "^9.0.1"
73
73
  },
@@ -81,5 +81,5 @@
81
81
  "publishConfig": {
82
82
  "access": "public"
83
83
  },
84
- "gitHead": "b9221aca396a2b31d289b677d5cb21b67938df02"
84
+ "gitHead": "27622e0a3cdfa133c9d2eba12153d76e87d0eb90"
85
85
  }