@chayns-components/date 5.0.0-beta.517 → 5.0.0-beta.519
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/components/opening-times/OpeningTimes.js +36 -23
- package/lib/components/opening-times/OpeningTimes.js.map +1 -1
- package/lib/components/opening-times/opening-inputs/OpeningInputs.d.ts +1 -0
- package/lib/components/opening-times/opening-inputs/OpeningInputs.js +36 -3
- package/lib/components/opening-times/opening-inputs/OpeningInputs.js.map +1 -1
- package/lib/components/opening-times/opening-inputs/opening-input/OpeningInput.d.ts +1 -0
- package/lib/components/opening-times/opening-inputs/opening-input/OpeningInput.js +8 -5
- package/lib/components/opening-times/opening-inputs/opening-input/OpeningInput.js.map +1 -1
- package/package.json +3 -3
|
@@ -18,6 +18,7 @@ const OpeningTimes = _ref => {
|
|
|
18
18
|
onTimeRemove
|
|
19
19
|
} = _ref;
|
|
20
20
|
const [newOpeningTimes, setNewOpeningTimes] = useState();
|
|
21
|
+
const [invalidOpeningTimes, setInvalidOpeningTimes] = useState([]);
|
|
21
22
|
const ref = useRef(null);
|
|
22
23
|
useEffect(() => {
|
|
23
24
|
setNewOpeningTimes(openingTimes);
|
|
@@ -83,6 +84,32 @@ const OpeningTimes = _ref => {
|
|
|
83
84
|
});
|
|
84
85
|
}
|
|
85
86
|
}, [onTimeAdd]);
|
|
87
|
+
const handleUpdateInvalidIds = useCallback((openingTimeId, invalidTimeIds) => {
|
|
88
|
+
setInvalidOpeningTimes(prevState => {
|
|
89
|
+
let updatedInvalidOpeningTimes = prevState.map(invalidOpeningTime => {
|
|
90
|
+
if (invalidOpeningTime.openingTimeId === openingTimeId) {
|
|
91
|
+
return {
|
|
92
|
+
openingTimeId,
|
|
93
|
+
invalidTimeIds
|
|
94
|
+
};
|
|
95
|
+
}
|
|
96
|
+
return invalidOpeningTime;
|
|
97
|
+
});
|
|
98
|
+
if (!updatedInvalidOpeningTimes.some(_ref2 => {
|
|
99
|
+
let {
|
|
100
|
+
openingTimeId: updatedInvalidOpeningId
|
|
101
|
+
} = _ref2;
|
|
102
|
+
return updatedInvalidOpeningId === openingTimeId;
|
|
103
|
+
}) && invalidTimeIds.length > 0) {
|
|
104
|
+
updatedInvalidOpeningTimes.push({
|
|
105
|
+
openingTimeId,
|
|
106
|
+
invalidTimeIds
|
|
107
|
+
});
|
|
108
|
+
}
|
|
109
|
+
updatedInvalidOpeningTimes = updatedInvalidOpeningTimes.filter(updatedInvalidOpeningTime => updatedInvalidOpeningTime.invalidTimeIds.length !== 0);
|
|
110
|
+
return updatedInvalidOpeningTimes;
|
|
111
|
+
});
|
|
112
|
+
}, []);
|
|
86
113
|
const handleRemove = useCallback(id => {
|
|
87
114
|
setNewOpeningTimes(prevOpeningTimes => (prevOpeningTimes ?? []).map(openingTime => {
|
|
88
115
|
const newTimes = openingTime.times.filter(time => time.id !== id);
|
|
@@ -100,13 +127,13 @@ const OpeningTimes = _ref => {
|
|
|
100
127
|
if (!newOpeningTimes) {
|
|
101
128
|
return items;
|
|
102
129
|
}
|
|
103
|
-
newOpeningTimes.forEach(
|
|
130
|
+
newOpeningTimes.forEach(_ref3 => {
|
|
104
131
|
let {
|
|
105
132
|
times,
|
|
106
133
|
id,
|
|
107
134
|
weekdayId,
|
|
108
135
|
isDisabled
|
|
109
|
-
} =
|
|
136
|
+
} = _ref3;
|
|
110
137
|
const weekday = weekdays.find(weekDay => weekDay.id === weekdayId)?.name;
|
|
111
138
|
if (!weekday) {
|
|
112
139
|
return;
|
|
@@ -121,6 +148,7 @@ const OpeningTimes = _ref => {
|
|
|
121
148
|
id: id,
|
|
122
149
|
times: times,
|
|
123
150
|
isDisabled: isDisabled,
|
|
151
|
+
onInvalid: handleUpdateInvalidIds,
|
|
124
152
|
onChange: newTime => handleChange(newTime, id),
|
|
125
153
|
onRemove: handleRemove,
|
|
126
154
|
onAdd: handleAdd,
|
|
@@ -128,16 +156,16 @@ const OpeningTimes = _ref => {
|
|
|
128
156
|
})));
|
|
129
157
|
});
|
|
130
158
|
return items;
|
|
131
|
-
}, [closedText, editMode, handleAdd, handleChange, handleCheckBoxChange, handleRemove, newOpeningTimes, weekdays]);
|
|
159
|
+
}, [closedText, editMode, handleAdd, handleChange, handleCheckBoxChange, handleRemove, handleUpdateInvalidIds, newOpeningTimes, weekdays]);
|
|
132
160
|
const size = useElementSize(ref);
|
|
133
161
|
const displayedContent = useMemo(() => {
|
|
134
162
|
if (!currentDayId || editMode) {
|
|
135
163
|
return content;
|
|
136
164
|
}
|
|
137
|
-
const singleDay = newOpeningTimes?.find(
|
|
165
|
+
const singleDay = newOpeningTimes?.find(_ref4 => {
|
|
138
166
|
let {
|
|
139
167
|
id
|
|
140
|
-
} =
|
|
168
|
+
} = _ref4;
|
|
141
169
|
return id === currentDayId;
|
|
142
170
|
});
|
|
143
171
|
if (!singleDay) {
|
|
@@ -156,6 +184,7 @@ const OpeningTimes = _ref => {
|
|
|
156
184
|
}
|
|
157
185
|
}, /*#__PURE__*/React.createElement(StyledOpeningTimesWeekDay, null, weekday), /*#__PURE__*/React.createElement(OpeningInputs, {
|
|
158
186
|
closedText: closedText,
|
|
187
|
+
onInvalid: handleUpdateInvalidIds,
|
|
159
188
|
id: id,
|
|
160
189
|
times: times,
|
|
161
190
|
editMode: editMode
|
|
@@ -165,24 +194,8 @@ const OpeningTimes = _ref => {
|
|
|
165
194
|
key: "opening-time-tooltip"
|
|
166
195
|
}, content)
|
|
167
196
|
}, element);
|
|
168
|
-
}, [
|
|
169
|
-
const shouldShowHint = useMemo(() =>
|
|
170
|
-
let tmp = false;
|
|
171
|
-
openingTimes.forEach(_ref4 => {
|
|
172
|
-
let {
|
|
173
|
-
times
|
|
174
|
-
} = _ref4;
|
|
175
|
-
if (times.length > 1) {
|
|
176
|
-
if (!times[0] || !times[1]) {
|
|
177
|
-
return;
|
|
178
|
-
}
|
|
179
|
-
if (times[0].start >= times[1].end) {
|
|
180
|
-
tmp = true;
|
|
181
|
-
}
|
|
182
|
-
}
|
|
183
|
-
});
|
|
184
|
-
return tmp;
|
|
185
|
-
}, [openingTimes]);
|
|
197
|
+
}, [currentDayId, editMode, newOpeningTimes, weekdays, size, closedText, handleUpdateInvalidIds, content]);
|
|
198
|
+
const shouldShowHint = useMemo(() => invalidOpeningTimes.length > 0, [invalidOpeningTimes.length]);
|
|
186
199
|
return useMemo(() => /*#__PURE__*/React.createElement(StyledOpeningTimes, {
|
|
187
200
|
ref: ref
|
|
188
201
|
}, shouldShowHint && hintText && hintTextPosition === HintTextPosition.Top && /*#__PURE__*/React.createElement(HintText, {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"OpeningTimes.js","names":["Checkbox","Tooltip","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","ref","handleCheckBoxChange","id","prevOpeningTimes","updatedOpeningTimes","map","openingTime","isDisabled","enabledDays","filter","item","handleChange","newTime","newTimes","times","time","handleAdd","dayId","handleRemove","content","items","forEach","_ref2","weekdayId","weekday","find","weekDay","name","push","createElement","key","isChecked","onRemove","onAdd","size","displayedContent","singleDay","_ref3","element","style","width","shouldShowHint","tmp","_ref4","length","start","end","Top","text","displayName"],"sources":["../../../src/components/opening-times/OpeningTimes.tsx"],"sourcesContent":["import { Checkbox, Tooltip, useElementSize } 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\n const ref = useRef<HTMLDivElement>(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 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 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 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 const element = (\n <StyledOpeningTimesWrapper\n key={`currentDay__${currentDayId}`}\n style={size && { width: size.width }}\n >\n <StyledOpeningTimesWeekDay>{weekday}</StyledOpeningTimesWeekDay>\n <OpeningInputs closedText={closedText} id={id} times={times} editMode={editMode} />\n </StyledOpeningTimesWrapper>\n );\n\n return (\n <Tooltip\n item={\n <StyledOpeningTimesTooltipContent key=\"opening-time-tooltip\">\n {content}\n </StyledOpeningTimesTooltipContent>\n }\n >\n {element}\n </Tooltip>\n );\n }, [closedText, content, currentDayId, editMode, newOpeningTimes, weekdays, size]);\n\n const shouldShowHint = useMemo(() => {\n let tmp = false;\n\n openingTimes.forEach(({ times }) => {\n if (times.length > 1) {\n if (!times[0] || !times[1]) {\n return;\n }\n\n if (times[0].start >= times[1].end) {\n tmp = true;\n }\n }\n });\n\n return tmp;\n }, [openingTimes]);\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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"}
|
|
1
|
+
{"version":3,"file":"OpeningTimes.js","names":["Checkbox","Tooltip","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","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","element","style","width","shouldShowHint","Top","text","displayName"],"sources":["../../../src/components/opening-times/OpeningTimes.tsx"],"sourcesContent":["import { Checkbox, Tooltip, useElementSize } 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\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 const element = (\n <StyledOpeningTimesWrapper\n key={`currentDay__${currentDayId}`}\n style={size && { width: size.width }}\n >\n <StyledOpeningTimesWeekDay>{weekday}</StyledOpeningTimesWeekDay>\n <OpeningInputs\n closedText={closedText}\n onInvalid={handleUpdateInvalidIds}\n id={id}\n times={times}\n editMode={editMode}\n />\n </StyledOpeningTimesWrapper>\n );\n\n return (\n <Tooltip\n item={\n <StyledOpeningTimesTooltipContent key=\"opening-time-tooltip\">\n {content}\n </StyledOpeningTimesTooltipContent>\n }\n >\n {element}\n </Tooltip>\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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"}
|
|
@@ -6,6 +6,7 @@ export type OpeningInputsProps = {
|
|
|
6
6
|
onChange?: (time: Time) => void;
|
|
7
7
|
onAdd?: (time: Time, id: string) => void;
|
|
8
8
|
onRemove?: (id: Time['id']) => void;
|
|
9
|
+
onInvalid?: (openingTimeId: string, timeIds: string[]) => void;
|
|
9
10
|
id: string;
|
|
10
11
|
editMode: boolean;
|
|
11
12
|
closedText: string;
|
|
@@ -10,12 +10,14 @@ const OpeningInputs = _ref => {
|
|
|
10
10
|
isDisabled,
|
|
11
11
|
onRemove,
|
|
12
12
|
onAdd,
|
|
13
|
+
onInvalid,
|
|
13
14
|
id,
|
|
14
15
|
onChange,
|
|
15
16
|
editMode,
|
|
16
17
|
closedText
|
|
17
18
|
} = _ref;
|
|
18
19
|
const [newTimes, setNewTimes] = useState();
|
|
20
|
+
const [invalidTimes, setInvalidTimes] = useState([]);
|
|
19
21
|
useEffect(() => {
|
|
20
22
|
setNewTimes(times);
|
|
21
23
|
}, [times]);
|
|
@@ -36,6 +38,36 @@ const OpeningInputs = _ref => {
|
|
|
36
38
|
onRemove(timeId);
|
|
37
39
|
}
|
|
38
40
|
}, [onRemove]);
|
|
41
|
+
useEffect(() => {
|
|
42
|
+
const result = [];
|
|
43
|
+
for (let i = 0; i < times.length; i++) {
|
|
44
|
+
const currentTime = times[i];
|
|
45
|
+
const prevTime = times[i - 1];
|
|
46
|
+
if (currentTime) {
|
|
47
|
+
const currStart = new Date(`2000-01-01T${currentTime.start}`);
|
|
48
|
+
const currEnd = new Date(`2000-01-01T${currentTime.end}`);
|
|
49
|
+
if (currStart >= currEnd) {
|
|
50
|
+
result.push(currentTime);
|
|
51
|
+
}
|
|
52
|
+
if (prevTime) {
|
|
53
|
+
const prevEnd = new Date(`2000-01-01T${prevTime.end}`);
|
|
54
|
+
if (prevEnd > currStart) {
|
|
55
|
+
result.push(prevTime, currentTime);
|
|
56
|
+
}
|
|
57
|
+
}
|
|
58
|
+
}
|
|
59
|
+
}
|
|
60
|
+
const invalidTimeIds = result.map(_ref2 => {
|
|
61
|
+
let {
|
|
62
|
+
id: invalidId
|
|
63
|
+
} = _ref2;
|
|
64
|
+
return invalidId;
|
|
65
|
+
});
|
|
66
|
+
setInvalidTimes(invalidTimeIds);
|
|
67
|
+
if (typeof onInvalid === 'function') {
|
|
68
|
+
onInvalid(id, invalidTimeIds);
|
|
69
|
+
}
|
|
70
|
+
}, [id, onInvalid, times]);
|
|
39
71
|
const handleChange = useCallback(newTime => {
|
|
40
72
|
setNewTimes(prevState => {
|
|
41
73
|
const updatedTimes = (prevState ?? []).map(time => {
|
|
@@ -55,12 +87,12 @@ const OpeningInputs = _ref => {
|
|
|
55
87
|
if (!newTimes) {
|
|
56
88
|
return items;
|
|
57
89
|
}
|
|
58
|
-
newTimes.forEach((
|
|
90
|
+
newTimes.forEach((_ref3, index) => {
|
|
59
91
|
let {
|
|
60
92
|
end,
|
|
61
93
|
start,
|
|
62
94
|
id: timeId
|
|
63
|
-
} =
|
|
95
|
+
} = _ref3;
|
|
64
96
|
if (!editMode) {
|
|
65
97
|
const text = isDisabled ? closedText : `${start} - ${end}`;
|
|
66
98
|
items.push( /*#__PURE__*/React.createElement(StyledOpeningInputPreview, {
|
|
@@ -83,6 +115,7 @@ const OpeningInputs = _ref => {
|
|
|
83
115
|
id: timeId,
|
|
84
116
|
end: end,
|
|
85
117
|
isDisabled: isDisabled,
|
|
118
|
+
isInvalid: invalidTimes.includes(timeId),
|
|
86
119
|
buttonType: buttonType,
|
|
87
120
|
onAdd: handleAdd,
|
|
88
121
|
onChange: time => handleChange(time),
|
|
@@ -90,7 +123,7 @@ const OpeningInputs = _ref => {
|
|
|
90
123
|
}));
|
|
91
124
|
});
|
|
92
125
|
return items;
|
|
93
|
-
}, [closedText, editMode, handleAdd, handleChange, handleRemove, id, isDisabled, newTimes, times.length]);
|
|
126
|
+
}, [closedText, editMode, handleAdd, handleChange, handleRemove, id, invalidTimes, isDisabled, newTimes, times.length]);
|
|
94
127
|
return useMemo(() => /*#__PURE__*/React.createElement(StyledOpeningInputs, null, /*#__PURE__*/React.createElement(AnimatePresence, {
|
|
95
128
|
initial: false
|
|
96
129
|
}, content)), [content]);
|
|
@@ -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","id","onChange","editMode","closedText","newTimes","setNewTimes","handleAdd","defaultTime","start","end","prevState","handleRemove","timeId","filter","time","handleChange","newTime","updatedTimes","map","content","items","forEach","_ref2","index","text","push","createElement","key","buttonType","NONE","length","ADD","REMOVE","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 id: string;\n editMode: boolean;\n closedText: string;\n};\n\nconst OpeningInputs: FC<OpeningInputsProps> = ({\n times,\n isDisabled,\n onRemove,\n onAdd,\n id,\n onChange,\n editMode,\n closedText,\n}) => {\n const [newTimes, setNewTimes] = useState<Time[]>();\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 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 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 isDisabled,\n newTimes,\n times.length,\n ]);\n\n return useMemo(\n () => (\n <StyledOpeningInputs>\n <AnimatePresence initial={false}>{content}</AnimatePresence>\n </StyledOpeningInputs>\n ),\n [content],\n );\n};\n\nOpeningInputs.displayName = 'OpeningInputs';\n\nexport default OpeningInputs;\n"],"mappings":"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"}
|
|
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","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 <AnimatePresence initial={false}>{content}</AnimatePresence>\n </StyledOpeningInputs>\n ),\n [content],\n );\n};\n\nOpeningInputs.displayName = 'OpeningInputs';\n\nexport default OpeningInputs;\n"],"mappings":"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"}
|
|
@@ -7,6 +7,7 @@ const OpeningInput = _ref => {
|
|
|
7
7
|
end,
|
|
8
8
|
start,
|
|
9
9
|
isDisabled,
|
|
10
|
+
isInvalid,
|
|
10
11
|
buttonType,
|
|
11
12
|
onRemove,
|
|
12
13
|
onAdd,
|
|
@@ -35,8 +36,8 @@ const OpeningInput = _ref => {
|
|
|
35
36
|
return /*#__PURE__*/React.createElement(StyledOpeningInputPseudoButton, null);
|
|
36
37
|
}
|
|
37
38
|
}, [buttonType, onAdd, onRemove]);
|
|
38
|
-
const handleStartTimeBlur = useCallback((value,
|
|
39
|
-
if (
|
|
39
|
+
const handleStartTimeBlur = useCallback((value, isTimeInvalid) => {
|
|
40
|
+
if (isTimeInvalid || typeof value === 'number' || !value) {
|
|
40
41
|
return;
|
|
41
42
|
}
|
|
42
43
|
setStartTime(value);
|
|
@@ -46,8 +47,8 @@ const OpeningInput = _ref => {
|
|
|
46
47
|
id
|
|
47
48
|
});
|
|
48
49
|
}, [endTime, id, onChange]);
|
|
49
|
-
const handleEndTimeBlur = useCallback((value,
|
|
50
|
-
if (
|
|
50
|
+
const handleEndTimeBlur = useCallback((value, isTimeInvalid) => {
|
|
51
|
+
if (isTimeInvalid || typeof value === 'number' || !value) {
|
|
51
52
|
return;
|
|
52
53
|
}
|
|
53
54
|
setEndTime(value);
|
|
@@ -74,6 +75,7 @@ const OpeningInput = _ref => {
|
|
|
74
75
|
}, /*#__PURE__*/React.createElement(StyledOpeningInputWrapper, null, /*#__PURE__*/React.createElement(NumberInput, {
|
|
75
76
|
shouldShowOnlyBottomBorder: true,
|
|
76
77
|
isTimeInput: true,
|
|
78
|
+
isInvalid: isInvalid,
|
|
77
79
|
value: startTime,
|
|
78
80
|
onBlur: handleStartTimeBlur,
|
|
79
81
|
isDisabled: isDisabled
|
|
@@ -82,10 +84,11 @@ const OpeningInput = _ref => {
|
|
|
82
84
|
}, "-"), /*#__PURE__*/React.createElement(StyledOpeningInputWrapper, null, /*#__PURE__*/React.createElement(NumberInput, {
|
|
83
85
|
shouldShowOnlyBottomBorder: true,
|
|
84
86
|
isTimeInput: true,
|
|
87
|
+
isInvalid: isInvalid,
|
|
85
88
|
value: endTime,
|
|
86
89
|
onBlur: handleEndTimeBlur,
|
|
87
90
|
isDisabled: isDisabled
|
|
88
|
-
})), button), [button, endTime, handleEndTimeBlur, handleStartTimeBlur, id, isDisabled, startTime]);
|
|
91
|
+
})), button), [button, endTime, handleEndTimeBlur, handleStartTimeBlur, id, isDisabled, isInvalid, startTime]);
|
|
89
92
|
};
|
|
90
93
|
OpeningInput.displayName = 'OpeningInput';
|
|
91
94
|
export default OpeningInput;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"OpeningInput.js","names":["Icon","NumberInput","React","useCallback","useMemo","useState","OpeningTimesButtonType","StyledOpeningInput","StyledOpeningInputButtonWrapper","StyledOpeningInputPseudoButton","StyledOpeningInputText","StyledOpeningInputWrapper","OpeningInput","_ref","end","start","isDisabled","buttonType","onRemove","onAdd","onChange","id","startTime","setStartTime","endTime","setEndTime","button","ADD","createElement","onClick","icons","size","REMOVE","handleStartTimeBlur","value","
|
|
1
|
+
{"version":3,"file":"OpeningInput.js","names":["Icon","NumberInput","React","useCallback","useMemo","useState","OpeningTimesButtonType","StyledOpeningInput","StyledOpeningInputButtonWrapper","StyledOpeningInputPseudoButton","StyledOpeningInputText","StyledOpeningInputWrapper","OpeningInput","_ref","end","start","isDisabled","isInvalid","buttonType","onRemove","onAdd","onChange","id","startTime","setStartTime","endTime","setEndTime","button","ADD","createElement","onClick","icons","size","REMOVE","handleStartTimeBlur","value","isTimeInvalid","handleEndTimeBlur","key","animate","opacity","height","initial","exit","shouldShowOnlyBottomBorder","isTimeInput","onBlur","$isDisabled","displayName"],"sources":["../../../../../src/components/opening-times/opening-inputs/opening-input/OpeningInput.tsx"],"sourcesContent":["import { Icon, NumberInput } from '@chayns-components/core';\nimport React, { FC, useCallback, useMemo, useState } from 'react';\nimport { OpeningTimesButtonType, type Time } from '../../../../types/openingTimes';\nimport {\n StyledOpeningInput,\n StyledOpeningInputButtonWrapper,\n StyledOpeningInputPseudoButton,\n StyledOpeningInputText,\n StyledOpeningInputWrapper,\n} from './OpeningInput.styles';\n\nexport type OpeningInputProps = {\n start: Time['start'];\n end: Time['end'];\n isDisabled?: boolean;\n isInvalid?: boolean;\n id: string;\n buttonType: OpeningTimesButtonType;\n onAdd: () => void;\n onRemove: () => void;\n onChange: (time: Time) => void;\n};\n\nconst OpeningInput: FC<OpeningInputProps> = ({\n end,\n start,\n isDisabled,\n isInvalid,\n buttonType,\n onRemove,\n onAdd,\n onChange,\n id,\n}) => {\n const [startTime, setStartTime] = useState(start);\n const [endTime, setEndTime] = useState(end);\n\n const button = useMemo(() => {\n switch (buttonType) {\n case OpeningTimesButtonType.ADD:\n return (\n <StyledOpeningInputButtonWrapper onClick={onAdd}>\n <Icon icons={['ts-plus']} size={15} />\n </StyledOpeningInputButtonWrapper>\n );\n case OpeningTimesButtonType.REMOVE:\n return (\n <StyledOpeningInputButtonWrapper onClick={onRemove}>\n <Icon icons={['ts-wrong']} size={15} />\n </StyledOpeningInputButtonWrapper>\n );\n default:\n return <StyledOpeningInputPseudoButton />;\n }\n }, [buttonType, onAdd, onRemove]);\n\n const handleStartTimeBlur = useCallback(\n (value: string | number | null, isTimeInvalid: boolean) => {\n if (isTimeInvalid || typeof value === 'number' || !value) {\n return;\n }\n\n setStartTime(value);\n\n onChange({ end: endTime, start: value, id });\n },\n [endTime, id, onChange],\n );\n\n const handleEndTimeBlur = useCallback(\n (value: string | number | null, isTimeInvalid: boolean) => {\n if (isTimeInvalid || typeof value === 'number' || !value) {\n return;\n }\n\n setEndTime(value);\n\n onChange({ end: value, start: startTime, id });\n },\n [id, onChange, startTime],\n );\n\n return useMemo(\n () => (\n <StyledOpeningInput\n key={id}\n animate={{ opacity: 1, height: 'auto' }}\n initial={{ opacity: 0, height: 0 }}\n exit={{ opacity: 0, height: 0 }}\n >\n <StyledOpeningInputWrapper>\n <NumberInput\n shouldShowOnlyBottomBorder\n isTimeInput\n isInvalid={isInvalid}\n value={startTime}\n onBlur={handleStartTimeBlur}\n isDisabled={isDisabled}\n />\n </StyledOpeningInputWrapper>\n <StyledOpeningInputText $isDisabled={isDisabled}>-</StyledOpeningInputText>\n <StyledOpeningInputWrapper>\n <NumberInput\n shouldShowOnlyBottomBorder\n isTimeInput\n isInvalid={isInvalid}\n value={endTime}\n onBlur={handleEndTimeBlur}\n isDisabled={isDisabled}\n />\n </StyledOpeningInputWrapper>\n {button}\n </StyledOpeningInput>\n ),\n [\n button,\n endTime,\n handleEndTimeBlur,\n handleStartTimeBlur,\n id,\n isDisabled,\n isInvalid,\n startTime,\n ],\n );\n};\n\nOpeningInput.displayName = 'OpeningInput';\n\nexport default OpeningInput;\n"],"mappings":"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"}
|
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.519",
|
|
4
4
|
"description": "A set of beautiful React components for developing your own applications with chayns.",
|
|
5
5
|
"sideEffects": false,
|
|
6
6
|
"browserslist": [
|
|
@@ -57,7 +57,7 @@
|
|
|
57
57
|
"typescript": "^5.3.3"
|
|
58
58
|
},
|
|
59
59
|
"dependencies": {
|
|
60
|
-
"@chayns-components/core": "^5.0.0-beta.
|
|
60
|
+
"@chayns-components/core": "^5.0.0-beta.519",
|
|
61
61
|
"date-fns": "^2.30.0",
|
|
62
62
|
"uuid": "^9.0.1"
|
|
63
63
|
},
|
|
@@ -71,5 +71,5 @@
|
|
|
71
71
|
"publishConfig": {
|
|
72
72
|
"access": "public"
|
|
73
73
|
},
|
|
74
|
-
"gitHead": "
|
|
74
|
+
"gitHead": "bac868dc6109d2afe6951c66dbc1a33457de959d"
|
|
75
75
|
}
|