@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.
- package/lib/cjs/components/opening-times/OpeningTimes.js +20 -10
- package/lib/cjs/components/opening-times/OpeningTimes.js.map +1 -1
- package/lib/cjs/components/opening-times/OpeningTimes.styles.js +1 -1
- package/lib/cjs/components/opening-times/OpeningTimes.styles.js.map +1 -1
- package/lib/cjs/components/opening-times/opening-inputs/OpeningInputs.js +12 -4
- package/lib/cjs/components/opening-times/opening-inputs/OpeningInputs.js.map +1 -1
- package/lib/cjs/components/opening-times/opening-inputs/OpeningInputs.styles.js +8 -4
- package/lib/cjs/components/opening-times/opening-inputs/OpeningInputs.styles.js.map +1 -1
- package/lib/esm/components/opening-times/OpeningTimes.js +18 -4
- package/lib/esm/components/opening-times/OpeningTimes.js.map +1 -1
- package/lib/esm/components/opening-times/OpeningTimes.styles.js +1 -1
- package/lib/esm/components/opening-times/OpeningTimes.styles.js.map +1 -1
- package/lib/esm/components/opening-times/opening-inputs/OpeningInputs.js +12 -4
- package/lib/esm/components/opening-times/opening-inputs/OpeningInputs.js.map +1 -1
- package/lib/esm/components/opening-times/opening-inputs/OpeningInputs.styles.js +11 -5
- package/lib/esm/components/opening-times/opening-inputs/OpeningInputs.styles.js.map +1 -1
- package/lib/types/components/opening-times/opening-inputs/OpeningInputs.d.ts +2 -1
- package/lib/types/components/opening-times/opening-inputs/OpeningInputs.styles.d.ts +7 -2
- package/package.json +3 -3
|
@@ -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
|
-
|
|
191
|
-
|
|
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,
|
|
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":";;;;;;AAAA,IAAAA,KAAA,GAAAC,OAAA;AACA,IAAAC,MAAA,GAAAC,uBAAA,CAAAF,OAAA;AASA,IAAAG,aAAA,GAAAH,OAAA;AAQA,IAAAI,SAAA,GAAAC,sBAAA,CAAAL,OAAA;AACA,IAAAM,cAAA,GAAAD,sBAAA,CAAAL,OAAA;AACA,IAAAO,aAAA,GAAAP,OAAA;AAK+B,SAAAK,uBAAAG,GAAA,WAAAA,GAAA,IAAAA,GAAA,CAAAC,UAAA,GAAAD,GAAA,KAAAE,OAAA,EAAAF,GAAA;AAAA,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,SAAAV,wBAAAU,CAAA,EAAAE,CAAA,SAAAA,CAAA,IAAAF,CAAA,IAAAA,CAAA,CAAAH,UAAA,SAAAG,CAAA,eAAAA,CAAA,uBAAAA,CAAA,yBAAAA,CAAA,WAAAF,OAAA,EAAAE,CAAA,QAAAG,CAAA,GAAAJ,wBAAA,CAAAG,CAAA,OAAAC,CAAA,IAAAA,CAAA,CAAAC,GAAA,CAAAJ,CAAA,UAAAG,CAAA,CAAAE,GAAA,CAAAL,CAAA,OAAAM,CAAA,KAAAC,SAAA,UAAAC,CAAA,GAAAC,MAAA,CAAAC,cAAA,IAAAD,MAAA,CAAAE,wBAAA,WAAAC,CAAA,IAAAZ,CAAA,oBAAAY,CAAA,OAAAC,cAAA,CAAAC,IAAA,CAAAd,CAAA,EAAAY,CAAA,SAAAG,CAAA,GAAAP,CAAA,GAAAC,MAAA,CAAAE,wBAAA,CAAAX,CAAA,EAAAY,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,IAAAZ,CAAA,CAAAY,CAAA,YAAAN,CAAA,CAAAR,OAAA,GAAAE,CAAA,EAAAG,CAAA,IAAAA,CAAA,CAAAa,GAAA,CAAAhB,CAAA,EAAAM,CAAA,GAAAA,CAAA;AA8C/B,MAAMW,YAAmC,GAAGA,CAAC;EACzCC,UAAU,GAAG,QAAQ;EACrBC,YAAY;EACZC,QAAQ,GAAG,KAAK;EAChBC,QAAQ;EACRC,gBAAgB,GAAGC,8BAAgB,CAACC,MAAM;EAC1CC,YAAY;EACZC,QAAQ;EACRC,QAAQ;EACRC,SAAS;EACTC;AACJ,CAAC,KAAK;EACF,MAAM,CAACC,eAAe,EAAEC,kBAAkB,CAAC,GAAG,IAAAC,eAAQ,EAAgB,CAAC;EACvE,MAAM,CAACC,mBAAmB,EAAEC,sBAAsB,CAAC,GAAG,IAAAF,eAAQ,EAE5D,EAAE,CAAC;EAEL,MAAMG,GAAG,GAAG,IAAAC,aAAM,EAAiB,IAAI,CAAC;EACxC,MAAMC,QAAQ,GAAG,IAAAD,aAAM,EAAW,IAAI,CAAC;EAEvC,IAAAE,gBAAS,EAAC,MAAM;IACZP,kBAAkB,CAACN,YAAY,CAAC;EACpC,CAAC,EAAE,CAACA,YAAY,CAAC,CAAC;EAElB,MAAMc,oBAAoB,GAAG,IAAAC,kBAAW,EACnCC,EAAU,IAAK;IACZV,kBAAkB,CAAEW,gBAAgB,IAAK;MACrC,MAAMC,mBAAmB,GAAG,CAACD,gBAAgB,IAAI,EAAE,EAAEE,GAAG,CAAEC,WAAW,IAAK;QACtE,IAAIA,WAAW,CAACJ,EAAE,KAAKA,EAAE,EAAE;UACvB,OAAO;YAAE,GAAGI,WAAW;YAAEC,UAAU,EAAE,CAACD,WAAW,CAACC;UAAW,CAAC;QAClE;QACA,OAAOD,WAAW;MACtB,CAAC,CAAC;MAEF,IAAI,OAAOlB,QAAQ,KAAK,UAAU,EAAE;QAChCA,QAAQ,CAAC;UACLoB,WAAW,EAAEJ,mBAAmB,CAC3BK,MAAM,CAAEC,IAAI,IAAK,CAACA,IAAI,CAACH,UAAU,CAAC,CAClCF,GAAG,CAAEK,IAAI,IAAKA,IAAI,CAACR,EAAE;QAC9B,CAAC,CAAC;MACN;MAEA,OAAOE,mBAAmB;IAC9B,CAAC,CAAC;EACN,CAAC,EACD,CAAChB,QAAQ,CACb,CAAC;EAED,MAAMuB,YAAY,GAAG,IAAAV,kBAAW,EAC5B,CAACW,OAAa,EAAEV,EAAU,KAAK;IAC3BV,kBAAkB,CAAEW,gBAAgB,IAAK;MACrC,MAAMC,mBAAmB,GAAG,CAACD,gBAAgB,IAAI,EAAE,EAAEE,GAAG,CAAEC,WAAW,IAAK;QACtE,IAAIA,WAAW,CAACJ,EAAE,KAAKA,EAAE,EAAE;UACvB,MAAMW,QAAQ,GAAGP,WAAW,CAACQ,KAAK,CAACT,GAAG,CAAEU,IAAI,IAAK;YAC7C,IAAIA,IAAI,CAACb,EAAE,KAAKU,OAAO,CAACV,EAAE,EAAE;cACxB,OAAOU,OAAO;YAClB;YAEA,OAAOG,IAAI;UACf,CAAC,CAAC;UAEF,OAAO;YAAE,GAAGT,WAAW;YAAEQ,KAAK,EAAED;UAAS,CAAC;QAC9C;QACA,OAAOP,WAAW;MACtB,CAAC,CAAC;MAEF,IAAI,OAAOlB,QAAQ,KAAK,UAAU,EAAE;QAChCA,QAAQ,CAAC;UAAE2B,IAAI,EAAEH;QAAQ,CAAC,CAAC;MAC/B;MAEA,OAAOR,mBAAmB;IAC9B,CAAC,CAAC;EACN,CAAC,EACD,CAAChB,QAAQ,CACb,CAAC;EAED,MAAM4B,SAAS,GAAG,IAAAf,kBAAW,EACzB,CAACc,IAAU,EAAEb,EAAU,KAAK;IACxBV,kBAAkB,CAAEW,gBAAgB,IAChC,CAACA,gBAAgB,IAAI,EAAE,EAAEE,GAAG,CAAEC,WAAW,IAAK;MAC1C,IAAIA,WAAW,CAACJ,EAAE,KAAKA,EAAE,EAAE;QACvB,OAAO;UAAE,GAAGI,WAAW;UAAEQ,KAAK,EAAE,CAAC,GAAGR,WAAW,CAACQ,KAAK,EAAEC,IAAI;QAAE,CAAC;MAClE;MACA,OAAOT,WAAW;IACtB,CAAC,CACL,CAAC;IAED,IAAI,OAAOjB,SAAS,KAAK,UAAU,EAAE;MACjCA,SAAS,CAAC;QAAE4B,KAAK,EAAEf,EAAE;QAAEa;MAAK,CAAC,CAAC;IAClC;EACJ,CAAC,EACD,CAAC1B,SAAS,CACd,CAAC;EAED,MAAM6B,sBAAsB,GAAG,IAAAjB,kBAAW,EACtC,CAACkB,aAAqB,EAAEC,cAAwB,KAAK;IACjDzB,sBAAsB,CAAE0B,SAAS,IAAK;MAClC,IAAIC,0BAA0B,GAAGD,SAAS,CAAChB,GAAG,CAAEkB,kBAAkB,IAAK;QACnE,IAAIA,kBAAkB,CAACJ,aAAa,KAAKA,aAAa,EAAE;UACpD,OAAO;YACHA,aAAa;YACbC;UACJ,CAAC;QACL;QAEA,OAAOG,kBAAkB;MAC7B,CAAC,CAAC;MAEF,IACI,CAACD,0BAA0B,CAACE,IAAI,CAC5B,CAAC;QAAEL,aAAa,EAAEM;MAAwB,CAAC,KACvCA,uBAAuB,KAAKN,aACpC,CAAC,IACDC,cAAc,CAACM,MAAM,GAAG,CAAC,EAC3B;QACEJ,0BAA0B,CAACK,IAAI,CAAC;UAAER,aAAa;UAAEC;QAAe,CAAC,CAAC;MACtE;MAEAE,0BAA0B,GAAGA,0BAA0B,CAACb,MAAM,CACzDmB,yBAAyB,IACtBA,yBAAyB,CAACR,cAAc,CAACM,MAAM,KAAK,CAC5D,CAAC;MAED,OAAOJ,0BAA0B;IACrC,CAAC,CAAC;EACN,CAAC,EACD,EACJ,CAAC;EAED,MAAMO,YAAY,GAAG,IAAA5B,kBAAW,EAC3BC,EAAU,IAAK;IACZV,kBAAkB,CAAEW,gBAAgB,IAChC,CAACA,gBAAgB,IAAI,EAAE,EAAEE,GAAG,CAAEC,WAAW,IAAK;MAC1C,MAAMO,QAAQ,GAAGP,WAAW,CAACQ,KAAK,CAACL,MAAM,CAAEM,IAAI,IAAKA,IAAI,CAACb,EAAE,KAAKA,EAAE,CAAC;MAEnE,OAAO;QAAE,GAAGI,WAAW;QAAEQ,KAAK,EAAED;MAAS,CAAC;IAC9C,CAAC,CACL,CAAC;IAED,IAAI,OAAOvB,YAAY,KAAK,UAAU,EAAE;MACpCA,YAAY,CAACY,EAAE,CAAC;IACpB;EACJ,CAAC,EACD,CAACZ,YAAY,CACjB,CAAC;EAED,MAAMwC,OAAO,GAAG,IAAAC,cAAO,EAAC,MAAM;IAC1B,MAAMC,KAAqB,GAAG,EAAE;IAEhC,IAAI,CAACzC,eAAe,EAAE;MAClB,OAAOyC,KAAK;IAChB;IAEAzC,eAAe,CAAC0C,OAAO,CAAC,CAAC;MAAEnB,KAAK;MAAEZ,EAAE;MAAEgC,SAAS;MAAE3B;IAAW,CAAC,KAAK;MAAA,IAAA4B,cAAA;MAC9D,MAAMC,OAAO,IAAAD,cAAA,GAAGhD,QAAQ,CAACkD,IAAI,CAAEC,OAAO,IAAKA,OAAO,CAACpC,EAAE,KAAKgC,SAAS,CAAC,cAAAC,cAAA,uBAApDA,cAAA,CAAsDI,IAAI;MAE1E,IAAI,CAACH,OAAO,EAAE;QACV;MACJ;MAEAJ,KAAK,CAACL,IAAI,eACN7E,MAAA,CAAAS,OAAA,CAAAiF,aAAA,CAACpF,aAAA,CAAAqF,yBAAyB;QAACC,GAAG,EAAG,iBAAgBxC,EAAG;MAAE,GACjDrB,QAAQ,gBACL/B,MAAA,CAAAS,OAAA,CAAAiF,aAAA,CAAC5F,KAAA,CAAA+F,QAAQ;QAACC,SAAS,EAAE,CAACrC,UAAW;QAACnB,QAAQ,EAAEA,CAAA,KAAMY,oBAAoB,CAACE,EAAE;MAAE,GACtEkC,OACK,CAAC,gBAEXtF,MAAA,CAAAS,OAAA,CAAAiF,aAAA,CAACpF,aAAA,CAAAyF,yBAAyB,QAAET,OAAmC,CAClE,eACDtF,MAAA,CAAAS,OAAA,CAAAiF,aAAA,CAACrF,cAAA,CAAAI,OAAa;QACVoB,UAAU,EAAEA,UAAW;QACvBuB,EAAE,EAAEA,EAAG;QACPY,KAAK,EAAEA,KAAM;QACbP,UAAU,EAAEA,UAAW;QACvBuC,SAAS,EAAE5B,sBAAuB;QAClC9B,QAAQ,EAAGwB,OAAO,IAAKD,YAAY,CAACC,OAAO,EAAEV,EAAE,CAAE;QACjD6C,QAAQ,EAAElB,YAAa;QACvBmB,KAAK,EAAEhC,SAAU;QACjBnC,QAAQ,EAAEA;MAAS,CACtB,CACsB,CAC/B,CAAC;IACL,CAAC,CAAC;IAEF,OAAOmD,KAAK;EAChB,CAAC,EAAE,CACCrD,UAAU,EACVE,QAAQ,EACRmC,SAAS,EACTL,YAAY,EACZX,oBAAoB,EACpB6B,YAAY,EACZX,sBAAsB,EACtB3B,eAAe,EACfJ,QAAQ,CACX,CAAC;EAEF,MAAM8D,IAAI,GAAG,IAAAC,oBAAc,EAACtD,GAAG,CAAC;EAEhC,MAAMuD,gBAAgB,GAAG,IAAApB,cAAO,EAAC,MAAM;IAAA,IAAAqB,eAAA;IACnC,IAAI,CAACxE,YAAY,IAAIC,QAAQ,EAAE;MAC3B,OAAOiD,OAAO;IAClB;IAEA,MAAMuB,SAAS,GAAG9D,eAAe,aAAfA,eAAe,uBAAfA,eAAe,CAAE8C,IAAI,CAAC,CAAC;MAAEnC;IAAG,CAAC,KAAKA,EAAE,KAAKtB,YAAY,CAAC;IAExE,IAAI,CAACyE,SAAS,EAAE;MACZ,OAAOvB,OAAO;IAClB;IAEA,MAAM;MAAE5B,EAAE;MAAEY,KAAK;MAAEoB;IAAU,CAAC,GAAGmB,SAAS;IAE1C,MAAMjB,OAAO,IAAAgB,eAAA,GAAGjE,QAAQ,CAACkD,IAAI,CAAEC,OAAO,IAAKA,OAAO,CAACpC,EAAE,KAAKgC,SAAS,CAAC,cAAAkB,eAAA,uBAApDA,eAAA,CAAsDb,IAAI;IAE1E,oBACIzF,MAAA,CAAAS,OAAA,CAAAiF,aAAA,CAACpF,aAAA,CAAAqF,yBAAyB;MACtBC,GAAG,EAAG,eAAc9D,YAAa,EAAE;MACnC0E,KAAK,EAAEL,IAAI,IAAI;QAAEM,KAAK,EAAEN,IAAI,CAACM;MAAM,CAAE;MACrCC,YAAY,EAAEA,CAAA;QAAA,IAAAC,iBAAA;QAAA,QAAAA,iBAAA,GAAM3D,QAAQ,CAAC4D,OAAO,cAAAD,iBAAA,uBAAhBA,iBAAA,CAAkBE,IAAI,CAAC,CAAC;MAAA,CAAC;MAC7CC,YAAY,EAAEA,CAAA;QAAA,IAAAC,kBAAA;QAAA,QAAAA,kBAAA,GAAM/D,QAAQ,CAAC4D,OAAO,cAAAG,kBAAA,uBAAhBA,kBAAA,CAAkBC,IAAI,CAAC,CAAC;MAAA;IAAC,gBAE7ChH,MAAA,CAAAS,OAAA,CAAAiF,aAAA,CAAC5F,KAAA,CAAAmH,KAAK;MACFnE,GAAG,EAAEE,QAAS;MACdgC,OAAO,eACHhF,MAAA,CAAAS,OAAA,CAAAiF,aAAA,CAACpF,aAAA,CAAA4G,gCAAgC;QAACtB,GAAG,EAAC;MAAsB,GACvDZ,OAC6B;IACrC,gBAEDhF,MAAA,CAAAS,OAAA,CAAAiF,aAAA,CAACpF,aAAA,CAAAyF,yBAAyB,QAAET,OAAmC,CAC5D,CAAC,eACRtF,MAAA,CAAAS,OAAA,CAAAiF,aAAA,CAACrF,cAAA,CAAAI,OAAa;MACVoB,UAAU,EAAEA,UAAW;MACvBmE,SAAS,EAAE5B,sBAAuB;MAClChB,EAAE,EAAEA,EAAG;MACPY,KAAK,EAAEA,KAAM;MACbjC,QAAQ,EAAEA;IAAS,CACtB,CACsB,CAAC;EAEpC,CAAC,EAAE,CACCD,YAAY,EACZC,QAAQ,EACRU,eAAe,EACfJ,QAAQ,EACR8D,IAAI,EACJtE,UAAU,EACVuC,sBAAsB,EACtBY,OAAO,CACV,CAAC;EAEF,MAAMmC,cAAc,GAAG,IAAAlC,cAAO,EAC1B,MAAMrC,mBAAmB,CAACgC,MAAM,GAAG,CAAC,EACpC,CAAChC,mBAAmB,CAACgC,MAAM,CAC/B,CAAC;EAED,OAAO,IAAAK,cAAO,EACV,mBACIjF,MAAA,CAAAS,OAAA,CAAAiF,aAAA,CAACpF,aAAA,CAAA8G,kBAAkB;IAACtE,GAAG,EAAEA;EAAI,GACxBqE,cAAc,IAAInF,QAAQ,IAAIC,gBAAgB,KAAKC,8BAAgB,CAACmF,GAAG,iBACpErH,MAAA,CAAAS,OAAA,CAAAiF,aAAA,CAACvF,SAAA,CAAAM,OAAQ;IAAC6G,IAAI,EAAEtF;EAAS,CAAE,CAC9B,EACAqE,gBAAgB,EAChBc,cAAc,IAAInF,QAAQ,IAAIC,gBAAgB,KAAKC,8BAAgB,CAACC,MAAM,iBACvEnC,MAAA,CAAAS,OAAA,CAAAiF,aAAA,CAACvF,SAAA,CAAAM,OAAQ;IAAC6G,IAAI,EAAEtF;EAAS,CAAE,CAEf,CACvB,EACD,CAACqE,gBAAgB,EAAErE,QAAQ,EAAEC,gBAAgB,EAAEkF,cAAc,CACjE,CAAC;AACL,CAAC;AAEDvF,YAAY,CAAC2F,WAAW,GAAG,cAAc;AAAC,IAAAC,QAAA,GAAAC,OAAA,CAAAhH,OAAA,GAE3BmB,YAAY","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
|
-
|
|
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
|
|
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
|
|
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,
|
|
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 =
|
|
9
|
-
function
|
|
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
|
-
|
|
13
|
-
|
|
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","
|
|
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:
|
|
187
|
-
onMouseLeave:
|
|
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,
|
|
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":[]}
|
|
@@ -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
|
|
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
|
|
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,
|
|
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":"AAAA,SAASA,eAAe,QAAQ,eAAe;AAC/C,OAAOC,KAAK,IAAQC,WAAW,EAAEC,SAAS,EAAEC,OAAO,EAAEC,QAAQ,QAA2B,OAAO;AAC/F,SAASC,EAAE,IAAIC,MAAM,QAAQ,MAAM;AACnC,SAASC,sBAAsB,QAAqC,6BAA6B;AACjG,OAAOC,YAAY,MAAM,8BAA8B;AACvD,SAASC,yBAAyB,EAAEC,mBAAmB,QAAQ,wBAAwB;AAevF,MAAMC,aAAqC,GAAGC,IAAA,IAWxC;EAAA,IAXyC;IAC3CC,KAAK;IACLC,UAAU;IACVC,QAAQ;IACRC,KAAK;IACLC,SAAS;IACTC,EAAE;IACFC,QAAQ;IACRC,YAAY;IACZC,QAAQ;IACRC;EACJ,CAAC,GAAAV,IAAA;EACG,MAAM,CAACW,QAAQ,EAAEC,WAAW,CAAC,GAAGpB,QAAQ,CAAS,CAAC;EAClD,MAAM,CAACqB,YAAY,EAAEC,eAAe,CAAC,GAAGtB,QAAQ,CAAW,EAAE,CAAC;EAE9DF,SAAS,CAAC,MAAM;IACZsB,WAAW,CAACX,KAAK,CAAC;EACtB,CAAC,EAAE,CAACA,KAAK,CAAC,CAAC;EAEX,MAAMc,SAAS,GAAG1B,WAAW,CAAC,MAAM;IAChC,MAAM2B,WAAiB,GAAG;MAAEC,KAAK,EAAE,OAAO;MAAEC,GAAG,EAAE,OAAO;MAAEZ,EAAE,EAAEZ,MAAM,CAAC;IAAE,CAAC;IAExEkB,WAAW,CAAEO,SAAS,IAAMA,SAAS,GAAG,CAAC,GAAGA,SAAS,EAAEH,WAAW,CAAC,GAAG,CAACA,WAAW,CAAE,CAAC;IAErF,IAAI,OAAOZ,KAAK,KAAK,UAAU,EAAE;MAC7BA,KAAK,CAACY,WAAW,EAAEV,EAAE,CAAC;IAC1B;EACJ,CAAC,EAAE,CAACA,EAAE,EAAEF,KAAK,CAAC,CAAC;EAEf,MAAMgB,YAAY,GAAG/B,WAAW,CAC3BgC,MAAc,IAAK;IAChBT,WAAW,CAAEO,SAAS,IAAK,CAACA,SAAS,IAAI,EAAE,EAAEG,MAAM,CAAEC,IAAI,IAAKA,IAAI,CAACjB,EAAE,KAAKe,MAAM,CAAC,CAAC;IAElF,IAAI,OAAOlB,QAAQ,KAAK,UAAU,EAAE;MAChCA,QAAQ,CAACkB,MAAM,CAAC;IACpB;EACJ,CAAC,EACD,CAAClB,QAAQ,CACb,CAAC;EAEDb,SAAS,CAAC,MAAM;IACZ,MAAMkC,MAAc,GAAG,EAAE;IAEzB,KAAK,IAAIC,CAAC,GAAG,CAAC,EAAEA,CAAC,GAAGxB,KAAK,CAACyB,MAAM,EAAED,CAAC,EAAE,EAAE;MACnC,MAAME,WAAW,GAAG1B,KAAK,CAACwB,CAAC,CAAC;MAC5B,MAAMG,QAAQ,GAAG3B,KAAK,CAACwB,CAAC,GAAG,CAAC,CAAC;MAE7B,IAAIE,WAAW,EAAE;QACb,MAAME,SAAS,GAAG,IAAIC,IAAI,CAAE,cAAaH,WAAW,CAACV,KAAM,EAAC,CAAC;QAC7D,MAAMc,OAAO,GAAG,IAAID,IAAI,CAAE,cAAaH,WAAW,CAACT,GAAI,EAAC,CAAC;QAEzD,IAAIW,SAAS,IAAIE,OAAO,EAAE;UACtBP,MAAM,CAACQ,IAAI,CAACL,WAAW,CAAC;QAC5B;QAEA,IAAIC,QAAQ,EAAE;UACV,MAAMK,OAAO,GAAG,IAAIH,IAAI,CAAE,cAAaF,QAAQ,CAACV,GAAI,EAAC,CAAC;UAEtD,IAAIe,OAAO,GAAGJ,SAAS,EAAE;YACrBL,MAAM,CAACQ,IAAI,CAACJ,QAAQ,EAAED,WAAW,CAAC;UACtC;QACJ;MACJ;IACJ;IAEA,MAAMO,cAAc,GAAGV,MAAM,CAACW,GAAG,CAACC,KAAA;MAAA,IAAC;QAAE9B,EAAE,EAAE+B;MAAU,CAAC,GAAAD,KAAA;MAAA,OAAKC,SAAS;IAAA,EAAC;IAEnEvB,eAAe,CAACoB,cAAc,CAAC;IAE/B,IAAI,OAAO7B,SAAS,KAAK,UAAU,EAAE;MACjCA,SAAS,CAACC,EAAE,EAAE4B,cAAc,CAAC;IACjC;EACJ,CAAC,EAAE,CAAC5B,EAAE,EAAED,SAAS,EAAEJ,KAAK,CAAC,CAAC;EAE1B,MAAMqC,YAAY,GAAGjD,WAAW,CAC3BkD,OAAa,IAAK;IACf3B,WAAW,CAAEO,SAAS,IAAK;MACvB,MAAMqB,YAAY,GAAG,CAACrB,SAAS,IAAI,EAAE,EAAEgB,GAAG,CAAEZ,IAAI,IAAK;QACjD,IAAIA,IAAI,CAACjB,EAAE,KAAKiC,OAAO,CAACjC,EAAE,EAAE;UACxB,OAAOiC,OAAO;QAClB;QACA,OAAOhB,IAAI;MACf,CAAC,CAAC;MAEF,IAAI,OAAOhB,QAAQ,KAAK,UAAU,EAAE;QAChCA,QAAQ,CAACgC,OAAO,CAAC;MACrB;MAEA,OAAOC,YAAY;IACvB,CAAC,CAAC;EACN,CAAC,EACD,CAACjC,QAAQ,CACb,CAAC;EAED,MAAMkC,OAAO,GAAGlD,OAAO,CAAC,MAAM;IAC1B,MAAMmD,KAAqB,GAAG,EAAE;IAEhC,IAAI,CAAC/B,QAAQ,EAAE;MACX,OAAO+B,KAAK;IAChB;IAEA/B,QAAQ,CAACgC,OAAO,CAAC,CAAAC,KAAA,EAA6BC,KAAK,KAAK;MAAA,IAAtC;QAAE3B,GAAG;QAAED,KAAK;QAAEX,EAAE,EAAEe;MAAO,CAAC,GAAAuB,KAAA;MACxC,IAAI,CAACnC,QAAQ,EAAE;QACX,MAAMqC,IAAI,GAAG5C,UAAU,GAAGQ,UAAU,GAAI,GAAEO,KAAM,MAAKC,GAAI,EAAC;QAE1DwB,KAAK,CAACV,IAAI,eACN5C,KAAA,CAAA2D,aAAA,CAAClD,yBAAyB;UAACmD,GAAG,EAAG,0BAAyB1C,EAAG,IAAGe,MAAO;QAAE,GACnE,GAAEyB,IAAK,GAAEtC,YAAY,IAAIG,QAAQ,CAACe,MAAM,GAAG,CAAC,IAAImB,KAAK,KAAK,CAAC,GAAG,IAAI,GAAG,EAAG,EACnD,CAC/B,CAAC;QAED;MACJ;MAEA,IAAIA,KAAK,GAAG,CAAC,EAAE;QACX;MACJ;MAEA,IAAII,UAAU,GAAGtD,sBAAsB,CAACuD,IAAI;MAE5C,IAAIL,KAAK,KAAK,CAAC,IAAI5C,KAAK,CAACyB,MAAM,KAAK,CAAC,IAAI,CAACxB,UAAU,EAAE;QAClD+C,UAAU,GAAGtD,sBAAsB,CAACwD,GAAG;MAC3C,CAAC,MAAM,IAAIN,KAAK,KAAK,CAAC,IAAI,CAAC3C,UAAU,EAAE;QACnC+C,UAAU,GAAGtD,sBAAsB,CAACyD,MAAM;MAC9C;MAEAV,KAAK,CAACV,IAAI,eACN5C,KAAA,CAAA2D,aAAA,CAACnD,YAAY;QACToD,GAAG,EAAG,wBAAuB1C,EAAG,IAAGe,MAAO,EAAE;QAC5CJ,KAAK,EAAEA,KAAM;QACbX,EAAE,EAAEe,MAAO;QACXH,GAAG,EAAEA,GAAI;QACThB,UAAU,EAAEA,UAAW;QACvBmD,SAAS,EAAExC,YAAY,CAACyC,QAAQ,CAACjC,MAAM,CAAE;QACzC4B,UAAU,EAAEA,UAAW;QACvB7C,KAAK,EAAEW,SAAU;QACjBR,QAAQ,EAAGgB,IAAI,IAAKe,YAAY,CAACf,IAAI,CAAE;QACvCpB,QAAQ,EAAEA,CAAA,KAAMiB,YAAY,CAACC,MAAM;MAAE,CACxC,CACL,CAAC;IACL,CAAC,CAAC;IAEF,OAAOqB,KAAK;EAChB,CAAC,EAAE,CACChC,UAAU,EACVF,YAAY,EACZC,QAAQ,EACRM,SAAS,EACTuB,YAAY,EACZlB,YAAY,EACZd,EAAE,EACFO,YAAY,EACZX,UAAU,EACVS,QAAQ,EACRV,KAAK,CAACyB,MAAM,CACf,CAAC;EAEF,MAAM6B,GAAG,GAAGhE,OAAO,CAAC,MAAM;IACtB,IAAKoB,QAAQ,IAAIA,QAAQ,CAACe,MAAM,GAAG,CAAC,IAAIjB,QAAQ,IAAM,CAACA,QAAQ,IAAID,YAAa,EAAE;MAC9E,OAAO,KAAK;IAChB;IAEA,OAAO,CAAC;EACZ,CAAC,EAAE,CAACA,YAAY,EAAEC,QAAQ,EAAEE,QAAQ,CAAC,CAAC;EAEtC,OAAOpB,OAAO,CACV,mBACIH,KAAA,CAAA2D,aAAA,CAACjD,mBAAmB;IAChB0D,SAAS,EAAE,CAAChD,YAAa;IACzBwC,GAAG,EAAG,mBAAkB1C,EAAG,EAAE;IAC7BmD,OAAO,EAAE;MAAEF;IAAI,CAAE;IACjBG,OAAO,EAAE;MAAEH,GAAG,EAAE;IAAE;EAAE,gBAEpBnE,KAAA,CAAA2D,aAAA,CAAC5D,eAAe;IAACuE,OAAO,EAAE;EAAM,GAAEjB,OAAyB,CAC1C,CACxB,EACD,CAACA,OAAO,EAAEjC,YAAY,EAAE+C,GAAG,EAAEjD,EAAE,CACnC,CAAC;AACL,CAAC;AAEDP,aAAa,CAAC4D,WAAW,GAAG,eAAe;AAE3C,eAAe5D,aAAa","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
|
-
|
|
6
|
-
|
|
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: ${
|
|
15
|
+
color: ${_ref2 => {
|
|
10
16
|
let {
|
|
11
17
|
theme
|
|
12
|
-
} =
|
|
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","
|
|
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
|
-
|
|
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
|
-
},
|
|
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.
|
|
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.
|
|
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": "
|
|
84
|
+
"gitHead": "27622e0a3cdfa133c9d2eba12153d76e87d0eb90"
|
|
85
85
|
}
|