@bigbinary/neeto-molecules 4.0.150 → 4.0.152
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/dist/CalendarView.js +27 -4
- package/dist/CalendarView.js.map +1 -1
- package/dist/EmailForm.js +2 -2
- package/dist/EmailForm.js.map +1 -1
- package/dist/cjs/CalendarView.js +27 -4
- package/dist/cjs/CalendarView.js.map +1 -1
- package/dist/cjs/EmailForm.js +2 -2
- package/dist/cjs/EmailForm.js.map +1 -1
- package/package.json +1 -1
- package/src/translations/en.json +11 -1
package/dist/CalendarView.js
CHANGED
|
@@ -129,6 +129,8 @@ var CustomDatePicker = function CustomDatePicker(_ref) {
|
|
|
129
129
|
picker = _ref.picker,
|
|
130
130
|
validDates = _ref.validDates,
|
|
131
131
|
otherProps = _objectWithoutProperties(_ref, _excluded$1);
|
|
132
|
+
var _useTranslation = useTranslation(),
|
|
133
|
+
t = _useTranslation.t;
|
|
132
134
|
var _useState = useState(false),
|
|
133
135
|
_useState2 = _slicedToArray(_useState, 2),
|
|
134
136
|
isOpen = _useState2[0],
|
|
@@ -165,12 +167,15 @@ var CustomDatePicker = function CustomDatePicker(_ref) {
|
|
|
165
167
|
return /*#__PURE__*/jsxs("div", {
|
|
166
168
|
className: "flex items-center justify-start gap-x-4",
|
|
167
169
|
children: [/*#__PURE__*/jsx(Button, {
|
|
170
|
+
"aria-label": t("neetoMolecules.calendarView.aria.goToToday"),
|
|
168
171
|
"data-testid": "neeto-molecules-calendar-view-today-button",
|
|
169
|
-
label: "
|
|
172
|
+
label: t("neetoMolecules.calendarView.today"),
|
|
170
173
|
style: "secondary",
|
|
171
174
|
onClick: onToday
|
|
172
175
|
}), /*#__PURE__*/jsxs("div", {
|
|
176
|
+
"aria-label": t("neetoMolecules.calendarView.aria.dateNavigation"),
|
|
173
177
|
className: "flex",
|
|
178
|
+
role: "group",
|
|
174
179
|
children: [/*#__PURE__*/jsx(Button, {
|
|
175
180
|
className: "me-1",
|
|
176
181
|
"data-testid": "neeto-molecules-calendar-view-previous-button",
|
|
@@ -182,13 +187,21 @@ var CustomDatePicker = function CustomDatePicker(_ref) {
|
|
|
182
187
|
});
|
|
183
188
|
},
|
|
184
189
|
style: "text",
|
|
190
|
+
"aria-label": t("neetoMolecules.calendarView.aria.previousPeriod", {
|
|
191
|
+
period: picker
|
|
192
|
+
}),
|
|
185
193
|
onClick: onPrevious
|
|
186
194
|
}), /*#__PURE__*/jsx(Button, {
|
|
195
|
+
"aria-expanded": isOpen,
|
|
196
|
+
"aria-haspopup": "dialog",
|
|
187
197
|
className: "min-w-52 justify-center",
|
|
188
198
|
"data-testid": "neeto-molecules-calendar-view-date-picker-button",
|
|
189
199
|
icon: Down,
|
|
190
200
|
ref: buttonRef,
|
|
191
201
|
style: "text",
|
|
202
|
+
"aria-label": t("neetoMolecules.calendarView.aria.selectDate", {
|
|
203
|
+
currentDate: selectedRangeStr
|
|
204
|
+
}),
|
|
192
205
|
onClick: function onClick() {
|
|
193
206
|
return setIsOpen(function (isOpen) {
|
|
194
207
|
return !isOpen;
|
|
@@ -223,6 +236,9 @@ var CustomDatePicker = function CustomDatePicker(_ref) {
|
|
|
223
236
|
});
|
|
224
237
|
},
|
|
225
238
|
style: "text",
|
|
239
|
+
"aria-label": t("neetoMolecules.calendarView.aria.nextPeriod", {
|
|
240
|
+
period: picker
|
|
241
|
+
}),
|
|
226
242
|
onClick: onNext
|
|
227
243
|
})]
|
|
228
244
|
})]
|
|
@@ -237,6 +253,8 @@ var Header = function Header(_ref) {
|
|
|
237
253
|
selectedDate = _ref.selectedDate,
|
|
238
254
|
calendarViewOptions = _ref.calendarViewOptions,
|
|
239
255
|
validDates = _ref.validDates;
|
|
256
|
+
var _useTranslation = useTranslation(),
|
|
257
|
+
t = _useTranslation.t;
|
|
240
258
|
var Menu = Dropdown.Menu,
|
|
241
259
|
MenuItem = Dropdown.MenuItem;
|
|
242
260
|
var handleViewSelection = function handleViewSelection(option) {
|
|
@@ -251,7 +269,9 @@ var Header = function Header(_ref) {
|
|
|
251
269
|
setTimeout(navigateToSelectedDate);
|
|
252
270
|
}, [selectedDate]);
|
|
253
271
|
return /*#__PURE__*/jsxs("div", {
|
|
272
|
+
"aria-label": t("neetoMolecules.calendarView.aria.calendarControls"),
|
|
254
273
|
className: "flex gap-x-4",
|
|
274
|
+
role: "group",
|
|
255
275
|
children: [/*#__PURE__*/jsx(CustomDatePicker, {
|
|
256
276
|
selectedDate: selectedDate,
|
|
257
277
|
setSelectedDate: setSelectedDate,
|
|
@@ -259,11 +279,14 @@ var Header = function Header(_ref) {
|
|
|
259
279
|
getPopupContainer: prop("parentNode"),
|
|
260
280
|
picker: selectedView.picker
|
|
261
281
|
}), Object.keys(calendarViewOptions).length > 1 && /*#__PURE__*/jsx(Dropdown, {
|
|
262
|
-
buttonProps: {
|
|
263
|
-
"data-testid": "calendar-view-dropdown"
|
|
264
|
-
},
|
|
265
282
|
buttonStyle: "secondary",
|
|
266
283
|
label: capitalize(selectedView.label),
|
|
284
|
+
buttonProps: {
|
|
285
|
+
"data-testid": "calendar-view-dropdown",
|
|
286
|
+
"aria-label": t("neetoMolecules.calendarView.aria.viewSelector", {
|
|
287
|
+
view: capitalize(selectedView.label)
|
|
288
|
+
})
|
|
289
|
+
},
|
|
267
290
|
children: /*#__PURE__*/jsx(Menu, {
|
|
268
291
|
children: values(calendarViewOptions).map(function (option, idx) {
|
|
269
292
|
return /*#__PURE__*/jsx(MenuItem.Button, {
|
package/dist/CalendarView.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"CalendarView.js","sources":["../src/components/CalendarView/constants.js","../src/components/CalendarView/utils.js","../src/components/CalendarView/CustomDatePicker.jsx","../src/components/CalendarView/Header.jsx","../src/components/CalendarView/index.jsx"],"sourcesContent":["import { t } from \"i18next\";\n\nconst WEEKLY_VIEW = t(\"neetoMolecules.calendarView.weekly\");\nconst MONTHLY_VIEW = t(\"neetoMolecules.calendarView.monthly\");\nconst DAILY_VIEW = t(\"neetoMolecules.calendarView.daily\");\n\nexport const VIEW_OPTIONS = {\n [DAILY_VIEW]: {\n label: DAILY_VIEW,\n fullCalendarView: \"timeGridDay\",\n picker: \"day\",\n },\n [WEEKLY_VIEW]: {\n label: WEEKLY_VIEW,\n fullCalendarView: \"timeGridWeek\",\n picker: \"week\",\n },\n [MONTHLY_VIEW]: {\n label: MONTHLY_VIEW,\n fullCalendarView: \"dayGridMonth\",\n picker: \"month\",\n },\n};\n","import { dayjs } from \"neetocommons/utils\";\n\nconst getWeekString = ({\n date,\n isStartOfWeek = true,\n showMonth = false,\n showYear = false,\n}) =>\n `${showMonth || isStartOfWeek ? date.format(\"MMM\") : \"\"} ${date.date()} ${\n showYear || !isStartOfWeek ? date.format(\"YYYY\") : \"\"\n }`;\n\nexport const getStartOfWeek = date => dayjs(date).startOf(\"week\");\n\nexport const getEndOfWeek = date => dayjs(date).endOf(\"week\");\n\nexport const getFormattedMonthStr = date => date.format(\"MMM YYYY\");\n\nexport const getFormattedWeekRangeStr = date => {\n const startOfWeek = getStartOfWeek(date);\n const endOfWeek = getEndOfWeek(date);\n\n const shouldShowMonthsSeparately = startOfWeek.month() !== endOfWeek.month();\n const shouldShowYearsSeparately = startOfWeek.year() !== endOfWeek.year();\n\n const startOfWeekStr = getWeekString({\n date: startOfWeek,\n showMonth: shouldShowMonthsSeparately,\n showYear: shouldShowYearsSeparately,\n });\n\n const endOfWeekStr = getWeekString({\n date: endOfWeek,\n isStartOfWeek: false,\n showMonth: shouldShowMonthsSeparately,\n showYear: shouldShowYearsSeparately,\n });\n\n return `${startOfWeekStr} - ${endOfWeekStr}`;\n};\n\nexport const getFormattedDayStr = date => date.format(\"DD MMM YYYY\");\n\nexport const getFormattedRangeStr = (date, picker) => {\n const formatFunctions = {\n month: getFormattedMonthStr,\n week: getFormattedWeekRangeStr,\n day: getFormattedDayStr,\n };\n const selectedFormatter = formatFunctions[picker];\n\n return selectedFormatter(date);\n};\n\nexport const mergeRefs =\n (...refs) =>\n node =>\n refs\n .filter(Boolean)\n .forEach(ref =>\n typeof ref === \"function\" ? ref(node) : (ref.current = node)\n );\n","import { useRef, useState } from \"react\";\n\nimport { dayjs } from \"neetocommons/utils\";\nimport { Down, Left, Right } from \"neetoicons\";\nimport { Typography, Button, DatePicker } from \"neetoui\";\n\nimport { getFormattedRangeStr } from \"./utils\";\n\nconst CustomDatePicker = ({\n selectedDate,\n setSelectedDate,\n picker,\n validDates,\n ...otherProps\n}) => {\n const [isOpen, setIsOpen] = useState(false);\n\n const datePickerRef = useRef(null);\n const buttonRef = useRef(null);\n\n const selectedRangeStr = getFormattedRangeStr(selectedDate, picker);\n\n const { start, end } = validDates;\n\n const isDateLessThanStart =\n start && selectedDate.isSameOrBefore(dayjs(start), picker);\n\n const isDateGreaterThanEnd =\n end && selectedDate.isSameOrAfter(dayjs(end), picker);\n\n const onPrevious = () =>\n setSelectedDate(selectedDate => selectedDate.subtract(1, picker));\n\n const onNext = () =>\n setSelectedDate(selectedDate => selectedDate.add(1, picker));\n\n const onToday = () => setSelectedDate(dayjs());\n\n const getDisabledDates = date => {\n if (!date) return false;\n\n return (start && date <= start) || (end && date >= end);\n };\n\n const handleButtonMouseDown = e => {\n if (!(buttonRef.current && buttonRef.current.contains(e.target))) return;\n e.stopPropagation();\n if (isOpen) datePickerRef.current.focus();\n };\n\n return (\n <div className=\"flex items-center justify-start gap-x-4\">\n <Button\n data-testid=\"neeto-molecules-calendar-view-today-button\"\n label=\"Today\"\n style=\"secondary\"\n onClick={onToday}\n />\n <div className=\"flex\">\n <Button\n className=\"me-1\"\n data-testid=\"neeto-molecules-calendar-view-previous-button\"\n disabled={isDateLessThanStart}\n icon={() => <Left className=\"rtl:scale-x-[-1]\" size={20} />}\n style=\"text\"\n onClick={onPrevious}\n />\n <Button\n className=\"min-w-52 justify-center\"\n data-testid=\"neeto-molecules-calendar-view-date-picker-button\"\n icon={Down}\n ref={buttonRef}\n style=\"text\"\n onClick={() => setIsOpen(isOpen => !isOpen)}\n onMouseDown={handleButtonMouseDown}\n >\n <Typography\n data-testid=\"neeto-molecules-calendar-view-date-picker-button-label\"\n style=\"h5\"\n >\n {selectedRangeStr}\n </Typography>\n </Button>\n <DatePicker\n className=\"invisible w-0 px-0\"\n defaultValue={selectedDate}\n disabledDate={getDisabledDates}\n open={isOpen}\n placement=\"topRight\"\n ref={datePickerRef}\n value={selectedDate}\n onChange={setSelectedDate}\n onOpenChange={setIsOpen}\n {...{ picker, ...otherProps }}\n />\n <Button\n className=\"ms-1\"\n data-testid=\"neeto-molecules-calendar-view-next-button\"\n disabled={isDateGreaterThanEnd}\n icon={() => <Right className=\"rtl:scale-x-[-1]\" size={20} />}\n style=\"text\"\n onClick={onNext}\n />\n </div>\n </div>\n );\n};\n\nexport default CustomDatePicker;\n","import { useEffect } from \"react\";\n\nimport { capitalize } from \"neetocist\";\nimport { Dropdown } from \"neetoui\";\nimport { prop, values } from \"ramda\";\n\nimport CustomDatePicker from \"./CustomDatePicker\";\n\nconst Header = ({\n calendarRef,\n selectedView,\n setSelectedView,\n setSelectedDate,\n selectedDate,\n calendarViewOptions,\n validDates,\n}) => {\n const { Menu, MenuItem } = Dropdown;\n\n const handleViewSelection = option => {\n setSelectedView(option);\n calendarRef.current.calendar.changeView(option.fullCalendarView);\n };\n\n const navigateToSelectedDate = () =>\n calendarRef?.current?.calendar?.gotoDate(selectedDate.format(\"YYYY-MM-DD\"));\n\n useEffect(() => {\n setTimeout(navigateToSelectedDate);\n }, [selectedDate]);\n\n return (\n <div className=\"flex gap-x-4\">\n <CustomDatePicker\n {...{ selectedDate, setSelectedDate, validDates }}\n getPopupContainer={prop(\"parentNode\")}\n picker={selectedView.picker}\n />\n {Object.keys(calendarViewOptions).length > 1 && (\n <Dropdown\n buttonProps={{ \"data-testid\": \"calendar-view-dropdown\" }}\n buttonStyle=\"secondary\"\n label={capitalize(selectedView.label)}\n >\n <Menu>\n {values(calendarViewOptions).map((option, idx) => (\n <MenuItem.Button\n isActive={selectedView === option}\n key={idx}\n onClick={() => handleViewSelection(option)}\n >\n {capitalize(option.label)}\n </MenuItem.Button>\n ))}\n </Menu>\n </Dropdown>\n )}\n </div>\n );\n};\n\nexport default Header;\n","import { forwardRef, useRef, useState, useEffect } from \"react\";\n\nimport dayGridPlugin from \"@fullcalendar/daygrid\";\nimport interactionPlugin from \"@fullcalendar/interaction\";\nimport FullCalendar from \"@fullcalendar/react\";\nimport timeGridPlugin from \"@fullcalendar/timegrid\";\nimport i18next from \"i18next\";\nimport { noop } from \"neetocist\";\nimport { dayjs } from \"neetocommons/utils\";\nimport { Typography } from \"neetoui\";\nimport PropTypes from \"prop-types\";\nimport { prop } from \"ramda\";\nimport { useTranslation } from \"react-i18next\";\n\nimport SubHeader from \"components/SubHeader\";\n\nimport \"./calendar-view.scss\";\nimport { VIEW_OPTIONS } from \"./constants\";\nimport Header from \"./Header\";\nimport { mergeRefs } from \"./utils\";\n\nconst direction = i18next.dir() || \"ltr\";\n\nconst CalendarView = forwardRef(\n (\n {\n viewOptions = VIEW_OPTIONS,\n events = [],\n handleDateClick = noop,\n handleEventClick = noop,\n eventClassNames = \"\",\n dayCellClassNames = \"\",\n validDates = { start: null, end: null },\n onDateChange = noop,\n dayMaxEvents,\n eventMaxStack,\n hideHeader = false,\n ...otherProps\n },\n ref\n ) => {\n const calendarViewOptions = viewOptions || VIEW_OPTIONS;\n\n const defaultView =\n Object.values(calendarViewOptions).find(prop(\"default\")) ||\n calendarViewOptions[Object.keys(calendarViewOptions)[0]];\n\n const [selectedView, setSelectedView] = useState(defaultView);\n\n const [selectedDate, setSelectedDate] = useState(dayjs());\n\n const { t } = useTranslation();\n\n const handleDateChange = date => {\n setSelectedDate(prevDate => {\n const newDate = typeof date === \"function\" ? date(prevDate) : date;\n onDateChange(newDate);\n\n return newDate;\n });\n };\n const calendarWrapperRef = useRef(null);\n const calendarRef = useRef();\n\n useEffect(() => {\n const calendarApi = calendarRef.current?.getApi?.();\n const wrapperElement = calendarWrapperRef.current;\n\n if (!calendarApi || !wrapperElement) return undefined;\n\n const handleResize = () => {\n calendarApi.updateSize();\n };\n\n const observer = new ResizeObserver(handleResize);\n\n observer.observe(wrapperElement);\n\n return () => {\n observer.disconnect();\n };\n }, []);\n\n return (\n <div\n className=\"flex-col\"\n data-testid=\"calendar-view\"\n ref={calendarWrapperRef}\n >\n {!hideHeader && (\n <SubHeader\n leftActionBlock={\n <Typography style=\"h2\">\n {selectedDate.format(\"MMMM, YYYY\")}\n </Typography>\n }\n rightActionBlock={\n <Header\n {...{\n calendarRef,\n calendarViewOptions,\n selectedDate,\n selectedView,\n setSelectedDate,\n setSelectedView,\n validDates,\n }}\n setSelectedDate={handleDateChange}\n />\n }\n />\n )}\n <FullCalendar\n expandRows\n allDayText={t(\"neetoMolecules.calendarView.allDay\")}\n dateClick={handleDateClick}\n dayHeaderClassNames=\"p-2\"\n displayEventTime={false}\n eventClick={handleEventClick}\n headerToolbar={false}\n height=\"auto\"\n initialView={selectedView.fullCalendarView}\n plugins={[dayGridPlugin, timeGridPlugin, interactionPlugin]}\n ref={mergeRefs(ref, calendarRef)}\n {...{\n dayCellClassNames,\n dayMaxEvents,\n direction,\n eventClassNames,\n eventMaxStack,\n events,\n ...otherProps,\n }}\n />\n </div>\n );\n }\n);\n\nCalendarView.displayName = \"CalendarView\";\n\nCalendarView.propTypes = {\n /**\n * Views to be listed in the dropdown. The default selected view can be set by adding `default: true` to the required view.\n */\n viewOptions: PropTypes.object,\n /**\n * An array of event objects that will be displayed on the calendar.\n */\n events: PropTypes.array,\n /**\n * Function to be triggered when the user clicks on a date or a time.\n */\n handleDateClick: PropTypes.func,\n /**\n * Function to be triggered when the user clicks an event.\n */\n handleEventClick: PropTypes.func,\n /**\n * A className input for adding classNames to the outermost event element.\n */\n eventClassNames: PropTypes.string,\n /**\n * A className input for adding classNames to the <td> cell.\n */\n dayCellClassNames: PropTypes.string,\n /**\n * In dayGrid view, the max number of events within a given day, not counting the +more link.\n */\n dayMaxEvents: PropTypes.number,\n /**\n * For timeline view, the maximum number of events that stack top-to-bottom. For timeGrid view, the maximum number of events that stack left-to-right.\n */\n eventMaxStack: PropTypes.number,\n /**\n * This function will be triggered with the new selected date passed as argument\n */\n onDateChange: PropTypes.func,\n /**\n * An object containing the start and end dates in which the range given is the valid range of selectable dates.\n */\n validDates: PropTypes.shape({\n start: PropTypes.instanceOf(Date),\n end: PropTypes.instanceOf(Date),\n }),\n /**\n * This prop can be used to hide the header\n */\n hideHeader: PropTypes.bool,\n};\n\nexport default CalendarView;\n"],"names":["WEEKLY_VIEW","t","MONTHLY_VIEW","DAILY_VIEW","VIEW_OPTIONS","_defineProperty","label","fullCalendarView","picker","getWeekString","_ref","date","_ref$isStartOfWeek","isStartOfWeek","_ref$showMonth","showMonth","_ref$showYear","showYear","concat","format","getStartOfWeek","dayjs","startOf","getEndOfWeek","endOf","getFormattedMonthStr","getFormattedWeekRangeStr","startOfWeek","endOfWeek","shouldShowMonthsSeparately","month","shouldShowYearsSeparately","year","startOfWeekStr","endOfWeekStr","getFormattedDayStr","getFormattedRangeStr","formatFunctions","week","day","selectedFormatter","mergeRefs","_len","arguments","length","refs","Array","_key","node","filter","Boolean","forEach","ref","current","CustomDatePicker","selectedDate","setSelectedDate","validDates","otherProps","_objectWithoutProperties","_excluded","_useState","useState","_useState2","_slicedToArray","isOpen","setIsOpen","datePickerRef","useRef","buttonRef","selectedRangeStr","start","end","isDateLessThanStart","isSameOrBefore","isDateGreaterThanEnd","isSameOrAfter","onPrevious","subtract","onNext","add","onToday","getDisabledDates","handleButtonMouseDown","e","contains","target","stopPropagation","focus","_jsxs","className","children","_jsx","Button","style","onClick","disabled","icon","Left","size","Down","onMouseDown","Typography","DatePicker","_objectSpread","defaultValue","disabledDate","open","placement","value","onChange","onOpenChange","Right","Header","calendarRef","selectedView","setSelectedView","calendarViewOptions","Menu","Dropdown","MenuItem","handleViewSelection","option","calendar","changeView","navigateToSelectedDate","_calendarRef$current","gotoDate","useEffect","setTimeout","getPopupContainer","prop","Object","keys","buttonProps","buttonStyle","capitalize","values","map","idx","isActive","direction","i18next","dir","CalendarView","forwardRef","_ref$viewOptions","viewOptions","_ref$events","events","_ref$handleDateClick","handleDateClick","noop","_ref$handleEventClick","handleEventClick","_ref$eventClassNames","eventClassNames","_ref$dayCellClassName","dayCellClassNames","_ref$validDates","_ref$onDateChange","onDateChange","dayMaxEvents","eventMaxStack","_ref$hideHeader","hideHeader","defaultView","find","_useState3","_useState4","_useTranslation","useTranslation","handleDateChange","prevDate","newDate","calendarWrapperRef","_calendarRef$current$","calendarApi","getApi","call","wrapperElement","undefined","handleResize","updateSize","observer","ResizeObserver","observe","disconnect","SubHeader","leftActionBlock","rightActionBlock","FullCalendar","expandRows","allDayText","dateClick","dayHeaderClassNames","displayEventTime","eventClick","headerToolbar","height","initialView","plugins","dayGridPlugin","timeGridPlugin","interactionPlugin","displayName"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"CalendarView.js","sources":["../src/components/CalendarView/constants.js","../src/components/CalendarView/utils.js","../src/components/CalendarView/CustomDatePicker.jsx","../src/components/CalendarView/Header.jsx","../src/components/CalendarView/index.jsx"],"sourcesContent":["import { t } from \"i18next\";\n\nconst WEEKLY_VIEW = t(\"neetoMolecules.calendarView.weekly\");\nconst MONTHLY_VIEW = t(\"neetoMolecules.calendarView.monthly\");\nconst DAILY_VIEW = t(\"neetoMolecules.calendarView.daily\");\n\nexport const VIEW_OPTIONS = {\n [DAILY_VIEW]: {\n label: DAILY_VIEW,\n fullCalendarView: \"timeGridDay\",\n picker: \"day\",\n },\n [WEEKLY_VIEW]: {\n label: WEEKLY_VIEW,\n fullCalendarView: \"timeGridWeek\",\n picker: \"week\",\n },\n [MONTHLY_VIEW]: {\n label: MONTHLY_VIEW,\n fullCalendarView: \"dayGridMonth\",\n picker: \"month\",\n },\n};\n","import { dayjs } from \"neetocommons/utils\";\n\nconst getWeekString = ({\n date,\n isStartOfWeek = true,\n showMonth = false,\n showYear = false,\n}) =>\n `${showMonth || isStartOfWeek ? date.format(\"MMM\") : \"\"} ${date.date()} ${\n showYear || !isStartOfWeek ? date.format(\"YYYY\") : \"\"\n }`;\n\nexport const getStartOfWeek = date => dayjs(date).startOf(\"week\");\n\nexport const getEndOfWeek = date => dayjs(date).endOf(\"week\");\n\nexport const getFormattedMonthStr = date => date.format(\"MMM YYYY\");\n\nexport const getFormattedWeekRangeStr = date => {\n const startOfWeek = getStartOfWeek(date);\n const endOfWeek = getEndOfWeek(date);\n\n const shouldShowMonthsSeparately = startOfWeek.month() !== endOfWeek.month();\n const shouldShowYearsSeparately = startOfWeek.year() !== endOfWeek.year();\n\n const startOfWeekStr = getWeekString({\n date: startOfWeek,\n showMonth: shouldShowMonthsSeparately,\n showYear: shouldShowYearsSeparately,\n });\n\n const endOfWeekStr = getWeekString({\n date: endOfWeek,\n isStartOfWeek: false,\n showMonth: shouldShowMonthsSeparately,\n showYear: shouldShowYearsSeparately,\n });\n\n return `${startOfWeekStr} - ${endOfWeekStr}`;\n};\n\nexport const getFormattedDayStr = date => date.format(\"DD MMM YYYY\");\n\nexport const getFormattedRangeStr = (date, picker) => {\n const formatFunctions = {\n month: getFormattedMonthStr,\n week: getFormattedWeekRangeStr,\n day: getFormattedDayStr,\n };\n const selectedFormatter = formatFunctions[picker];\n\n return selectedFormatter(date);\n};\n\nexport const mergeRefs =\n (...refs) =>\n node =>\n refs\n .filter(Boolean)\n .forEach(ref =>\n typeof ref === \"function\" ? ref(node) : (ref.current = node)\n );\n","import { useRef, useState } from \"react\";\n\nimport { dayjs } from \"neetocommons/utils\";\nimport { Down, Left, Right } from \"neetoicons\";\nimport { Typography, Button, DatePicker } from \"neetoui\";\nimport { useTranslation } from \"react-i18next\";\n\nimport { getFormattedRangeStr } from \"./utils\";\n\nconst CustomDatePicker = ({\n selectedDate,\n setSelectedDate,\n picker,\n validDates,\n ...otherProps\n}) => {\n const { t } = useTranslation();\n const [isOpen, setIsOpen] = useState(false);\n\n const datePickerRef = useRef(null);\n const buttonRef = useRef(null);\n\n const selectedRangeStr = getFormattedRangeStr(selectedDate, picker);\n\n const { start, end } = validDates;\n\n const isDateLessThanStart =\n start && selectedDate.isSameOrBefore(dayjs(start), picker);\n\n const isDateGreaterThanEnd =\n end && selectedDate.isSameOrAfter(dayjs(end), picker);\n\n const onPrevious = () =>\n setSelectedDate(selectedDate => selectedDate.subtract(1, picker));\n\n const onNext = () =>\n setSelectedDate(selectedDate => selectedDate.add(1, picker));\n\n const onToday = () => setSelectedDate(dayjs());\n\n const getDisabledDates = date => {\n if (!date) return false;\n\n return (start && date <= start) || (end && date >= end);\n };\n\n const handleButtonMouseDown = e => {\n if (!(buttonRef.current && buttonRef.current.contains(e.target))) return;\n e.stopPropagation();\n if (isOpen) datePickerRef.current.focus();\n };\n\n return (\n <div className=\"flex items-center justify-start gap-x-4\">\n <Button\n aria-label={t(\"neetoMolecules.calendarView.aria.goToToday\")}\n data-testid=\"neeto-molecules-calendar-view-today-button\"\n label={t(\"neetoMolecules.calendarView.today\")}\n style=\"secondary\"\n onClick={onToday}\n />\n <div\n aria-label={t(\"neetoMolecules.calendarView.aria.dateNavigation\")}\n className=\"flex\"\n role=\"group\"\n >\n <Button\n className=\"me-1\"\n data-testid=\"neeto-molecules-calendar-view-previous-button\"\n disabled={isDateLessThanStart}\n icon={() => <Left className=\"rtl:scale-x-[-1]\" size={20} />}\n style=\"text\"\n aria-label={t(\"neetoMolecules.calendarView.aria.previousPeriod\", {\n period: picker,\n })}\n onClick={onPrevious}\n />\n <Button\n aria-expanded={isOpen}\n aria-haspopup=\"dialog\"\n className=\"min-w-52 justify-center\"\n data-testid=\"neeto-molecules-calendar-view-date-picker-button\"\n icon={Down}\n ref={buttonRef}\n style=\"text\"\n aria-label={t(\"neetoMolecules.calendarView.aria.selectDate\", {\n currentDate: selectedRangeStr,\n })}\n onClick={() => setIsOpen(isOpen => !isOpen)}\n onMouseDown={handleButtonMouseDown}\n >\n <Typography\n data-testid=\"neeto-molecules-calendar-view-date-picker-button-label\"\n style=\"h5\"\n >\n {selectedRangeStr}\n </Typography>\n </Button>\n <DatePicker\n className=\"invisible w-0 px-0\"\n defaultValue={selectedDate}\n disabledDate={getDisabledDates}\n open={isOpen}\n placement=\"topRight\"\n ref={datePickerRef}\n value={selectedDate}\n onChange={setSelectedDate}\n onOpenChange={setIsOpen}\n {...{ picker, ...otherProps }}\n />\n <Button\n className=\"ms-1\"\n data-testid=\"neeto-molecules-calendar-view-next-button\"\n disabled={isDateGreaterThanEnd}\n icon={() => <Right className=\"rtl:scale-x-[-1]\" size={20} />}\n style=\"text\"\n aria-label={t(\"neetoMolecules.calendarView.aria.nextPeriod\", {\n period: picker,\n })}\n onClick={onNext}\n />\n </div>\n </div>\n );\n};\n\nexport default CustomDatePicker;\n","import { useEffect } from \"react\";\n\nimport { capitalize } from \"neetocist\";\nimport { Dropdown } from \"neetoui\";\nimport { prop, values } from \"ramda\";\nimport { useTranslation } from \"react-i18next\";\n\nimport CustomDatePicker from \"./CustomDatePicker\";\n\nconst Header = ({\n calendarRef,\n selectedView,\n setSelectedView,\n setSelectedDate,\n selectedDate,\n calendarViewOptions,\n validDates,\n}) => {\n const { t } = useTranslation();\n const { Menu, MenuItem } = Dropdown;\n\n const handleViewSelection = option => {\n setSelectedView(option);\n calendarRef.current.calendar.changeView(option.fullCalendarView);\n };\n\n const navigateToSelectedDate = () =>\n calendarRef?.current?.calendar?.gotoDate(selectedDate.format(\"YYYY-MM-DD\"));\n\n useEffect(() => {\n setTimeout(navigateToSelectedDate);\n }, [selectedDate]);\n\n return (\n <div\n aria-label={t(\"neetoMolecules.calendarView.aria.calendarControls\")}\n className=\"flex gap-x-4\"\n role=\"group\"\n >\n <CustomDatePicker\n {...{ selectedDate, setSelectedDate, validDates }}\n getPopupContainer={prop(\"parentNode\")}\n picker={selectedView.picker}\n />\n {Object.keys(calendarViewOptions).length > 1 && (\n <Dropdown\n buttonStyle=\"secondary\"\n label={capitalize(selectedView.label)}\n buttonProps={{\n \"data-testid\": \"calendar-view-dropdown\",\n \"aria-label\": t(\"neetoMolecules.calendarView.aria.viewSelector\", {\n view: capitalize(selectedView.label),\n }),\n }}\n >\n <Menu>\n {values(calendarViewOptions).map((option, idx) => (\n <MenuItem.Button\n isActive={selectedView === option}\n key={idx}\n onClick={() => handleViewSelection(option)}\n >\n {capitalize(option.label)}\n </MenuItem.Button>\n ))}\n </Menu>\n </Dropdown>\n )}\n </div>\n );\n};\n\nexport default Header;\n","import { forwardRef, useRef, useState, useEffect } from \"react\";\n\nimport dayGridPlugin from \"@fullcalendar/daygrid\";\nimport interactionPlugin from \"@fullcalendar/interaction\";\nimport FullCalendar from \"@fullcalendar/react\";\nimport timeGridPlugin from \"@fullcalendar/timegrid\";\nimport i18next from \"i18next\";\nimport { noop } from \"neetocist\";\nimport { dayjs } from \"neetocommons/utils\";\nimport { Typography } from \"neetoui\";\nimport PropTypes from \"prop-types\";\nimport { prop } from \"ramda\";\nimport { useTranslation } from \"react-i18next\";\n\nimport SubHeader from \"components/SubHeader\";\n\nimport \"./calendar-view.scss\";\nimport { VIEW_OPTIONS } from \"./constants\";\nimport Header from \"./Header\";\nimport { mergeRefs } from \"./utils\";\n\nconst direction = i18next.dir() || \"ltr\";\n\nconst CalendarView = forwardRef(\n (\n {\n viewOptions = VIEW_OPTIONS,\n events = [],\n handleDateClick = noop,\n handleEventClick = noop,\n eventClassNames = \"\",\n dayCellClassNames = \"\",\n validDates = { start: null, end: null },\n onDateChange = noop,\n dayMaxEvents,\n eventMaxStack,\n hideHeader = false,\n ...otherProps\n },\n ref\n ) => {\n const calendarViewOptions = viewOptions || VIEW_OPTIONS;\n\n const defaultView =\n Object.values(calendarViewOptions).find(prop(\"default\")) ||\n calendarViewOptions[Object.keys(calendarViewOptions)[0]];\n\n const [selectedView, setSelectedView] = useState(defaultView);\n\n const [selectedDate, setSelectedDate] = useState(dayjs());\n\n const { t } = useTranslation();\n\n const handleDateChange = date => {\n setSelectedDate(prevDate => {\n const newDate = typeof date === \"function\" ? date(prevDate) : date;\n onDateChange(newDate);\n\n return newDate;\n });\n };\n const calendarWrapperRef = useRef(null);\n const calendarRef = useRef();\n\n useEffect(() => {\n const calendarApi = calendarRef.current?.getApi?.();\n const wrapperElement = calendarWrapperRef.current;\n\n if (!calendarApi || !wrapperElement) return undefined;\n\n const handleResize = () => {\n calendarApi.updateSize();\n };\n\n const observer = new ResizeObserver(handleResize);\n\n observer.observe(wrapperElement);\n\n return () => {\n observer.disconnect();\n };\n }, []);\n\n return (\n <div\n className=\"flex-col\"\n data-testid=\"calendar-view\"\n ref={calendarWrapperRef}\n >\n {!hideHeader && (\n <SubHeader\n leftActionBlock={\n <Typography style=\"h2\">\n {selectedDate.format(\"MMMM, YYYY\")}\n </Typography>\n }\n rightActionBlock={\n <Header\n {...{\n calendarRef,\n calendarViewOptions,\n selectedDate,\n selectedView,\n setSelectedDate,\n setSelectedView,\n validDates,\n }}\n setSelectedDate={handleDateChange}\n />\n }\n />\n )}\n <FullCalendar\n expandRows\n allDayText={t(\"neetoMolecules.calendarView.allDay\")}\n dateClick={handleDateClick}\n dayHeaderClassNames=\"p-2\"\n displayEventTime={false}\n eventClick={handleEventClick}\n headerToolbar={false}\n height=\"auto\"\n initialView={selectedView.fullCalendarView}\n plugins={[dayGridPlugin, timeGridPlugin, interactionPlugin]}\n ref={mergeRefs(ref, calendarRef)}\n {...{\n dayCellClassNames,\n dayMaxEvents,\n direction,\n eventClassNames,\n eventMaxStack,\n events,\n ...otherProps,\n }}\n />\n </div>\n );\n }\n);\n\nCalendarView.displayName = \"CalendarView\";\n\nCalendarView.propTypes = {\n /**\n * Views to be listed in the dropdown. The default selected view can be set by adding `default: true` to the required view.\n */\n viewOptions: PropTypes.object,\n /**\n * An array of event objects that will be displayed on the calendar.\n */\n events: PropTypes.array,\n /**\n * Function to be triggered when the user clicks on a date or a time.\n */\n handleDateClick: PropTypes.func,\n /**\n * Function to be triggered when the user clicks an event.\n */\n handleEventClick: PropTypes.func,\n /**\n * A className input for adding classNames to the outermost event element.\n */\n eventClassNames: PropTypes.string,\n /**\n * A className input for adding classNames to the <td> cell.\n */\n dayCellClassNames: PropTypes.string,\n /**\n * In dayGrid view, the max number of events within a given day, not counting the +more link.\n */\n dayMaxEvents: PropTypes.number,\n /**\n * For timeline view, the maximum number of events that stack top-to-bottom. For timeGrid view, the maximum number of events that stack left-to-right.\n */\n eventMaxStack: PropTypes.number,\n /**\n * This function will be triggered with the new selected date passed as argument\n */\n onDateChange: PropTypes.func,\n /**\n * An object containing the start and end dates in which the range given is the valid range of selectable dates.\n */\n validDates: PropTypes.shape({\n start: PropTypes.instanceOf(Date),\n end: PropTypes.instanceOf(Date),\n }),\n /**\n * This prop can be used to hide the header\n */\n hideHeader: PropTypes.bool,\n};\n\nexport default CalendarView;\n"],"names":["WEEKLY_VIEW","t","MONTHLY_VIEW","DAILY_VIEW","VIEW_OPTIONS","_defineProperty","label","fullCalendarView","picker","getWeekString","_ref","date","_ref$isStartOfWeek","isStartOfWeek","_ref$showMonth","showMonth","_ref$showYear","showYear","concat","format","getStartOfWeek","dayjs","startOf","getEndOfWeek","endOf","getFormattedMonthStr","getFormattedWeekRangeStr","startOfWeek","endOfWeek","shouldShowMonthsSeparately","month","shouldShowYearsSeparately","year","startOfWeekStr","endOfWeekStr","getFormattedDayStr","getFormattedRangeStr","formatFunctions","week","day","selectedFormatter","mergeRefs","_len","arguments","length","refs","Array","_key","node","filter","Boolean","forEach","ref","current","CustomDatePicker","selectedDate","setSelectedDate","validDates","otherProps","_objectWithoutProperties","_excluded","_useTranslation","useTranslation","_useState","useState","_useState2","_slicedToArray","isOpen","setIsOpen","datePickerRef","useRef","buttonRef","selectedRangeStr","start","end","isDateLessThanStart","isSameOrBefore","isDateGreaterThanEnd","isSameOrAfter","onPrevious","subtract","onNext","add","onToday","getDisabledDates","handleButtonMouseDown","e","contains","target","stopPropagation","focus","_jsxs","className","children","_jsx","Button","style","onClick","role","disabled","icon","Left","size","period","Down","currentDate","onMouseDown","Typography","DatePicker","_objectSpread","defaultValue","disabledDate","open","placement","value","onChange","onOpenChange","Right","Header","calendarRef","selectedView","setSelectedView","calendarViewOptions","Menu","Dropdown","MenuItem","handleViewSelection","option","calendar","changeView","navigateToSelectedDate","_calendarRef$current","gotoDate","useEffect","setTimeout","getPopupContainer","prop","Object","keys","buttonStyle","capitalize","buttonProps","view","values","map","idx","isActive","direction","i18next","dir","CalendarView","forwardRef","_ref$viewOptions","viewOptions","_ref$events","events","_ref$handleDateClick","handleDateClick","noop","_ref$handleEventClick","handleEventClick","_ref$eventClassNames","eventClassNames","_ref$dayCellClassName","dayCellClassNames","_ref$validDates","_ref$onDateChange","onDateChange","dayMaxEvents","eventMaxStack","_ref$hideHeader","hideHeader","defaultView","find","_useState3","_useState4","handleDateChange","prevDate","newDate","calendarWrapperRef","_calendarRef$current$","calendarApi","getApi","call","wrapperElement","undefined","handleResize","updateSize","observer","ResizeObserver","observe","disconnect","SubHeader","leftActionBlock","rightActionBlock","FullCalendar","expandRows","allDayText","dateClick","dayHeaderClassNames","displayEventTime","eventClick","headerToolbar","height","initialView","plugins","dayGridPlugin","timeGridPlugin","interactionPlugin","displayName"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAEA,IAAMA,WAAW,GAAGC,CAAC,CAAC,oCAAoC,CAAC;AAC3D,IAAMC,YAAY,GAAGD,CAAC,CAAC,qCAAqC,CAAC;AAC7D,IAAME,UAAU,GAAGF,CAAC,CAAC,mCAAmC,CAAC;AAElD,IAAMG,YAAY,GAAAC,eAAA,CAAAA,eAAA,CAAAA,eAAA,CAAA,EAAA,EACtBF,UAAU,EAAG;AACZG,EAAAA,KAAK,EAAEH,UAAU;AACjBI,EAAAA,gBAAgB,EAAE,aAAa;AAC/BC,EAAAA,MAAM,EAAE;AACV,CAAC,CAAA,EACAR,WAAW,EAAG;AACbM,EAAAA,KAAK,EAAEN,WAAW;AAClBO,EAAAA,gBAAgB,EAAE,cAAc;AAChCC,EAAAA,MAAM,EAAE;AACV,CAAC,CAAA,EACAN,YAAY,EAAG;AACdI,EAAAA,KAAK,EAAEJ,YAAY;AACnBK,EAAAA,gBAAgB,EAAE,cAAc;AAChCC,EAAAA,MAAM,EAAE;AACV,CAAC,CACF;;ACpBD,IAAMC,aAAa,GAAG,SAAhBA,aAAaA,CAAAC,IAAA,EAAA;AAAA,EAAA,IACjBC,IAAI,GAAAD,IAAA,CAAJC,IAAI;IAAAC,kBAAA,GAAAF,IAAA,CACJG,aAAa;AAAbA,IAAAA,aAAa,GAAAD,kBAAA,KAAA,MAAA,GAAG,IAAI,GAAAA,kBAAA;IAAAE,cAAA,GAAAJ,IAAA,CACpBK,SAAS;AAATA,IAAAA,SAAS,GAAAD,cAAA,KAAA,MAAA,GAAG,KAAK,GAAAA,cAAA;IAAAE,aAAA,GAAAN,IAAA,CACjBO,QAAQ;AAARA,IAAAA,QAAQ,GAAAD,aAAA,KAAA,MAAA,GAAG,KAAK,GAAAA,aAAA;AAAA,EAAA,OAAA,EAAA,CAAAE,MAAA,CAEbH,SAAS,IAAIF,aAAa,GAAGF,IAAI,CAACQ,MAAM,CAAC,KAAK,CAAC,GAAG,EAAE,EAAA,GAAA,CAAA,CAAAD,MAAA,CAAIP,IAAI,CAACA,IAAI,EAAE,EAAA,GAAA,CAAA,CAAAO,MAAA,CACpED,QAAQ,IAAI,CAACJ,aAAa,GAAGF,IAAI,CAACQ,MAAM,CAAC,MAAM,CAAC,GAAG,EAAE,CAAA;AAAA,CACrD;AAEG,IAAMC,cAAc,GAAG,SAAjBA,cAAcA,CAAGT,IAAI,EAAA;EAAA,OAAIU,KAAK,CAACV,IAAI,CAAC,CAACW,OAAO,CAAC,MAAM,CAAC;AAAA,CAAA;AAE1D,IAAMC,YAAY,GAAG,SAAfA,YAAYA,CAAGZ,IAAI,EAAA;EAAA,OAAIU,KAAK,CAACV,IAAI,CAAC,CAACa,KAAK,CAAC,MAAM,CAAC;AAAA,CAAA;AAEtD,IAAMC,oBAAoB,GAAG,SAAvBA,oBAAoBA,CAAGd,IAAI,EAAA;AAAA,EAAA,OAAIA,IAAI,CAACQ,MAAM,CAAC,UAAU,CAAC;AAAA,CAAA;AAE5D,IAAMO,wBAAwB,GAAG,SAA3BA,wBAAwBA,CAAGf,IAAI,EAAI;AAC9C,EAAA,IAAMgB,WAAW,GAAGP,cAAc,CAACT,IAAI,CAAC;AACxC,EAAA,IAAMiB,SAAS,GAAGL,YAAY,CAACZ,IAAI,CAAC;AAEpC,EAAA,IAAMkB,0BAA0B,GAAGF,WAAW,CAACG,KAAK,EAAE,KAAKF,SAAS,CAACE,KAAK,EAAE;AAC5E,EAAA,IAAMC,yBAAyB,GAAGJ,WAAW,CAACK,IAAI,EAAE,KAAKJ,SAAS,CAACI,IAAI,EAAE;EAEzE,IAAMC,cAAc,GAAGxB,aAAa,CAAC;AACnCE,IAAAA,IAAI,EAAEgB,WAAW;AACjBZ,IAAAA,SAAS,EAAEc,0BAA0B;AACrCZ,IAAAA,QAAQ,EAAEc;AACZ,GAAC,CAAC;EAEF,IAAMG,YAAY,GAAGzB,aAAa,CAAC;AACjCE,IAAAA,IAAI,EAAEiB,SAAS;AACff,IAAAA,aAAa,EAAE,KAAK;AACpBE,IAAAA,SAAS,EAAEc,0BAA0B;AACrCZ,IAAAA,QAAQ,EAAEc;AACZ,GAAC,CAAC;AAEF,EAAA,OAAA,EAAA,CAAAb,MAAA,CAAUe,cAAc,EAAA,KAAA,CAAA,CAAAf,MAAA,CAAMgB,YAAY,CAAA;AAC5C,CAAC;AAEM,IAAMC,kBAAkB,GAAG,SAArBA,kBAAkBA,CAAGxB,IAAI,EAAA;AAAA,EAAA,OAAIA,IAAI,CAACQ,MAAM,CAAC,aAAa,CAAC;AAAA,CAAA;AAE7D,IAAMiB,oBAAoB,GAAG,SAAvBA,oBAAoBA,CAAIzB,IAAI,EAAEH,MAAM,EAAK;AACpD,EAAA,IAAM6B,eAAe,GAAG;AACtBP,IAAAA,KAAK,EAAEL,oBAAoB;AAC3Ba,IAAAA,IAAI,EAAEZ,wBAAwB;AAC9Ba,IAAAA,GAAG,EAAEJ;GACN;AACD,EAAA,IAAMK,iBAAiB,GAAGH,eAAe,CAAC7B,MAAM,CAAC;EAEjD,OAAOgC,iBAAiB,CAAC7B,IAAI,CAAC;AAChC,CAAC;AAEM,IAAM8B,SAAS,GACpB,SADWA,SAASA,GAAA;AAAA,EAAA,KAAA,IAAAC,IAAA,GAAAC,SAAA,CAAAC,MAAA,EAChBC,IAAI,GAAA,IAAAC,KAAA,CAAAJ,IAAA,GAAAK,IAAA,GAAA,CAAA,EAAAA,IAAA,GAAAL,IAAA,EAAAK,IAAA,EAAA,EAAA;AAAJF,IAAAA,IAAI,CAAAE,IAAA,CAAA,GAAAJ,SAAA,CAAAI,IAAA,CAAA;AAAA,EAAA;AAAA,EAAA,OACR,UAAAC,IAAI,EAAA;IAAA,OACFH,IAAI,CACDI,MAAM,CAACC,OAAO,CAAC,CACfC,OAAO,CAAC,UAAAC,GAAG,EAAA;AAAA,MAAA,OACV,OAAOA,GAAG,KAAK,UAAU,GAAGA,GAAG,CAACJ,IAAI,CAAC,GAAII,GAAG,CAACC,OAAO,GAAGL,IAAK;AAAA,IAAA,CAC9D,CAAC;AAAA,EAAA,CAAA;AAAA,CAAA;;;;;ACpDP,IAAMM,gBAAgB,GAAG,SAAnBA,gBAAgBA,CAAA5C,IAAA,EAMhB;AAAA,EAAA,IALJ6C,YAAY,GAAA7C,IAAA,CAAZ6C,YAAY;IACZC,eAAe,GAAA9C,IAAA,CAAf8C,eAAe;IACfhD,MAAM,GAAAE,IAAA,CAANF,MAAM;IACNiD,UAAU,GAAA/C,IAAA,CAAV+C,UAAU;AACPC,IAAAA,UAAU,GAAAC,wBAAA,CAAAjD,IAAA,EAAAkD,WAAA,CAAA;AAEb,EAAA,IAAAC,eAAA,GAAcC,cAAc,EAAE;IAAtB7D,CAAC,GAAA4D,eAAA,CAAD5D,CAAC;AACT,EAAA,IAAA8D,SAAA,GAA4BC,QAAQ,CAAC,KAAK,CAAC;IAAAC,UAAA,GAAAC,cAAA,CAAAH,SAAA,EAAA,CAAA,CAAA;AAApCI,IAAAA,MAAM,GAAAF,UAAA,CAAA,CAAA,CAAA;AAAEG,IAAAA,SAAS,GAAAH,UAAA,CAAA,CAAA,CAAA;AAExB,EAAA,IAAMI,aAAa,GAAGC,MAAM,CAAC,IAAI,CAAC;AAClC,EAAA,IAAMC,SAAS,GAAGD,MAAM,CAAC,IAAI,CAAC;AAE9B,EAAA,IAAME,gBAAgB,GAAGpC,oBAAoB,CAACmB,YAAY,EAAE/C,MAAM,CAAC;AAEnE,EAAA,IAAQiE,KAAK,GAAUhB,UAAU,CAAzBgB,KAAK;IAAEC,GAAG,GAAKjB,UAAU,CAAlBiB,GAAG;AAElB,EAAA,IAAMC,mBAAmB,GACvBF,KAAK,IAAIlB,YAAY,CAACqB,cAAc,CAACvD,KAAK,CAACoD,KAAK,CAAC,EAAEjE,MAAM,CAAC;AAE5D,EAAA,IAAMqE,oBAAoB,GACxBH,GAAG,IAAInB,YAAY,CAACuB,aAAa,CAACzD,KAAK,CAACqD,GAAG,CAAC,EAAElE,MAAM,CAAC;AAEvD,EAAA,IAAMuE,UAAU,GAAG,SAAbA,UAAUA,GAAA;IAAA,OACdvB,eAAe,CAAC,UAAAD,YAAY,EAAA;AAAA,MAAA,OAAIA,YAAY,CAACyB,QAAQ,CAAC,CAAC,EAAExE,MAAM,CAAC;IAAA,CAAA,CAAC;AAAA,EAAA,CAAA;AAEnE,EAAA,IAAMyE,MAAM,GAAG,SAATA,MAAMA,GAAA;IAAA,OACVzB,eAAe,CAAC,UAAAD,YAAY,EAAA;AAAA,MAAA,OAAIA,YAAY,CAAC2B,GAAG,CAAC,CAAC,EAAE1E,MAAM,CAAC;IAAA,CAAA,CAAC;AAAA,EAAA,CAAA;AAE9D,EAAA,IAAM2E,OAAO,GAAG,SAAVA,OAAOA,GAAA;AAAA,IAAA,OAAS3B,eAAe,CAACnC,KAAK,EAAE,CAAC;AAAA,EAAA,CAAA;AAE9C,EAAA,IAAM+D,gBAAgB,GAAG,SAAnBA,gBAAgBA,CAAGzE,IAAI,EAAI;AAC/B,IAAA,IAAI,CAACA,IAAI,EAAE,OAAO,KAAK;IAEvB,OAAQ8D,KAAK,IAAI9D,IAAI,IAAI8D,KAAK,IAAMC,GAAG,IAAI/D,IAAI,IAAI+D,GAAI;EACzD,CAAC;AAED,EAAA,IAAMW,qBAAqB,GAAG,SAAxBA,qBAAqBA,CAAGC,CAAC,EAAI;AACjC,IAAA,IAAI,EAAEf,SAAS,CAAClB,OAAO,IAAIkB,SAAS,CAAClB,OAAO,CAACkC,QAAQ,CAACD,CAAC,CAACE,MAAM,CAAC,CAAC,EAAE;IAClEF,CAAC,CAACG,eAAe,EAAE;IACnB,IAAItB,MAAM,EAAEE,aAAa,CAAChB,OAAO,CAACqC,KAAK,EAAE;EAC3C,CAAC;AAED,EAAA,oBACEC,IAAA,CAAA,KAAA,EAAA;AAAKC,IAAAA,SAAS,EAAC,yCAAyC;IAAAC,QAAA,EAAA,cACtDC,GAAA,CAACC,MAAM,EAAA;MACL,YAAA,EAAY9F,CAAC,CAAC,4CAA4C,CAAE;AAC5D,MAAA,aAAA,EAAY,4CAA4C;AACxDK,MAAAA,KAAK,EAAEL,CAAC,CAAC,mCAAmC,CAAE;AAC9C+F,MAAAA,KAAK,EAAC,WAAW;AACjBC,MAAAA,OAAO,EAAEd;KACV,CAAC,eACFQ,IAAA,CAAA,KAAA,EAAA;MACE,YAAA,EAAY1F,CAAC,CAAC,iDAAiD,CAAE;AACjE2F,MAAAA,SAAS,EAAC,MAAM;AAChBM,MAAAA,IAAI,EAAC,OAAO;MAAAL,QAAA,EAAA,cAEZC,GAAA,CAACC,MAAM,EAAA;AACLH,QAAAA,SAAS,EAAC,MAAM;AAChB,QAAA,aAAA,EAAY,+CAA+C;AAC3DO,QAAAA,QAAQ,EAAExB,mBAAoB;QAC9ByB,IAAI,EAAE,SAANA,IAAIA,GAAA;UAAA,oBAAQN,GAAA,CAACO,IAAI,EAAA;AAACT,YAAAA,SAAS,EAAC,kBAAkB;AAACU,YAAAA,IAAI,EAAE;AAAG,WAAE,CAAC;QAAA,CAAC;AAC5DN,QAAAA,KAAK,EAAC,MAAM;QACZ,YAAA,EAAY/F,CAAC,CAAC,iDAAiD,EAAE;AAC/DsG,UAAAA,MAAM,EAAE/F;AACV,SAAC,CAAE;AACHyF,QAAAA,OAAO,EAAElB;AAAW,OACrB,CAAC,eACFe,GAAA,CAACC,MAAM,EAAA;AACL,QAAA,eAAA,EAAe5B,MAAO;AACtB,QAAA,eAAA,EAAc,QAAQ;AACtByB,QAAAA,SAAS,EAAC,yBAAyB;AACnC,QAAA,aAAA,EAAY,kDAAkD;AAC9DQ,QAAAA,IAAI,EAAEI,IAAK;AACXpD,QAAAA,GAAG,EAAEmB,SAAU;AACfyB,QAAAA,KAAK,EAAC,MAAM;QACZ,YAAA,EAAY/F,CAAC,CAAC,6CAA6C,EAAE;AAC3DwG,UAAAA,WAAW,EAAEjC;AACf,SAAC,CAAE;QACHyB,OAAO,EAAE,SAATA,OAAOA,GAAA;UAAA,OAAQ7B,SAAS,CAAC,UAAAD,MAAM,EAAA;AAAA,YAAA,OAAI,CAACA,MAAM;UAAA,CAAA,CAAC;QAAA,CAAC;AAC5CuC,QAAAA,WAAW,EAAErB,qBAAsB;QAAAQ,QAAA,eAEnCC,GAAA,CAACa,UAAU,EAAA;AACT,UAAA,aAAA,EAAY,wDAAwD;AACpEX,UAAAA,KAAK,EAAC,IAAI;AAAAH,UAAAA,QAAA,EAETrB;SACS;AAAC,OACP,CAAC,eACTsB,GAAA,CAACc,UAAU,EAAAC,eAAA,CAAA;AACTjB,QAAAA,SAAS,EAAC,oBAAoB;AAC9BkB,QAAAA,YAAY,EAAEvD,YAAa;AAC3BwD,QAAAA,YAAY,EAAE3B,gBAAiB;AAC/B4B,QAAAA,IAAI,EAAE7C,MAAO;AACb8C,QAAAA,SAAS,EAAC,UAAU;AACpB7D,QAAAA,GAAG,EAAEiB,aAAc;AACnB6C,QAAAA,KAAK,EAAE3D,YAAa;AACpB4D,QAAAA,QAAQ,EAAE3D,eAAgB;AAC1B4D,QAAAA,YAAY,EAAEhD;AAAU,OAAA,EAAAyC,eAAA,CAAA;AAClBrG,QAAAA,MAAM,EAANA;AAAM,OAAA,EAAKkD,UAAU,CAAA,CAC5B,CAAC,eACFoC,GAAA,CAACC,MAAM,EAAA;AACLH,QAAAA,SAAS,EAAC,MAAM;AAChB,QAAA,aAAA,EAAY,2CAA2C;AACvDO,QAAAA,QAAQ,EAAEtB,oBAAqB;QAC/BuB,IAAI,EAAE,SAANA,IAAIA,GAAA;UAAA,oBAAQN,GAAA,CAACuB,KAAK,EAAA;AAACzB,YAAAA,SAAS,EAAC,kBAAkB;AAACU,YAAAA,IAAI,EAAE;AAAG,WAAE,CAAC;QAAA,CAAC;AAC7DN,QAAAA,KAAK,EAAC,MAAM;QACZ,YAAA,EAAY/F,CAAC,CAAC,6CAA6C,EAAE;AAC3DsG,UAAAA,MAAM,EAAE/F;AACV,SAAC,CAAE;AACHyF,QAAAA,OAAO,EAAEhB;AAAO,OACjB,CAAC;AAAA,KACC,CAAC;AAAA,GACH,CAAC;AAEV,CAAC;;ACnHD,IAAMqC,MAAM,GAAG,SAATA,MAAMA,CAAA5G,IAAA,EAQN;AAAA,EAAA,IAPJ6G,WAAW,GAAA7G,IAAA,CAAX6G,WAAW;IACXC,YAAY,GAAA9G,IAAA,CAAZ8G,YAAY;IACZC,eAAe,GAAA/G,IAAA,CAAf+G,eAAe;IACfjE,eAAe,GAAA9C,IAAA,CAAf8C,eAAe;IACfD,YAAY,GAAA7C,IAAA,CAAZ6C,YAAY;IACZmE,mBAAmB,GAAAhH,IAAA,CAAnBgH,mBAAmB;IACnBjE,UAAU,GAAA/C,IAAA,CAAV+C,UAAU;AAEV,EAAA,IAAAI,eAAA,GAAcC,cAAc,EAAE;IAAtB7D,CAAC,GAAA4D,eAAA,CAAD5D,CAAC;AACT,EAAA,IAAQ0H,IAAI,GAAeC,QAAQ,CAA3BD,IAAI;IAAEE,QAAQ,GAAKD,QAAQ,CAArBC,QAAQ;AAEtB,EAAA,IAAMC,mBAAmB,GAAG,SAAtBA,mBAAmBA,CAAGC,MAAM,EAAI;IACpCN,eAAe,CAACM,MAAM,CAAC;IACvBR,WAAW,CAAClE,OAAO,CAAC2E,QAAQ,CAACC,UAAU,CAACF,MAAM,CAACxH,gBAAgB,CAAC;EAClE,CAAC;AAED,EAAA,IAAM2H,sBAAsB,GAAG,SAAzBA,sBAAsBA,GAAA;AAAA,IAAA,IAAAC,oBAAA;AAAA,IAAA,OAC1BZ,WAAW,KAAA,IAAA,IAAXA,WAAW,KAAA,MAAA,IAAA,CAAAY,oBAAA,GAAXZ,WAAW,CAAElE,OAAO,MAAA,IAAA,IAAA8E,oBAAA,KAAA,MAAA,IAAA,CAAAA,oBAAA,GAApBA,oBAAA,CAAsBH,QAAQ,MAAA,IAAA,IAAAG,oBAAA,KAAA,MAAA,GAAA,MAAA,GAA9BA,oBAAA,CAAgCC,QAAQ,CAAC7E,YAAY,CAACpC,MAAM,CAAC,YAAY,CAAC,CAAC;AAAA,EAAA,CAAA;AAE7EkH,EAAAA,SAAS,CAAC,YAAM;IACdC,UAAU,CAACJ,sBAAsB,CAAC;AACpC,EAAA,CAAC,EAAE,CAAC3E,YAAY,CAAC,CAAC;AAElB,EAAA,oBACEoC,IAAA,CAAA,KAAA,EAAA;IACE,YAAA,EAAY1F,CAAC,CAAC,mDAAmD,CAAE;AACnE2F,IAAAA,SAAS,EAAC,cAAc;AACxBM,IAAAA,IAAI,EAAC,OAAO;IAAAL,QAAA,EAAA,cAEZC,GAAA,CAACxC,gBAAgB,EAAA;AACTC,MAAAA,YAAY,EAAZA,YAAY;AAAEC,MAAAA,eAAe,EAAfA,eAAe;AAAEC,MAAAA,UAAU,EAAVA,UAAU;AAC/C8E,MAAAA,iBAAiB,EAAEC,IAAI,CAAC,YAAY,CAAE;MACtChI,MAAM,EAAEgH,YAAY,CAAChH;AAAO,KAC7B,CAAC,EACDiI,MAAM,CAACC,IAAI,CAAChB,mBAAmB,CAAC,CAAC9E,MAAM,GAAG,CAAC,iBAC1CkD,GAAA,CAAC8B,QAAQ,EAAA;AACPe,MAAAA,WAAW,EAAC,WAAW;AACvBrI,MAAAA,KAAK,EAAEsI,UAAU,CAACpB,YAAY,CAAClH,KAAK,CAAE;AACtCuI,MAAAA,WAAW,EAAE;AACX,QAAA,aAAa,EAAE,wBAAwB;AACvC,QAAA,YAAY,EAAE5I,CAAC,CAAC,+CAA+C,EAAE;AAC/D6I,UAAAA,IAAI,EAAEF,UAAU,CAACpB,YAAY,CAAClH,KAAK;SACpC;OACD;MAAAuF,QAAA,eAEFC,GAAA,CAAC6B,IAAI,EAAA;QAAA9B,QAAA,EACFkD,MAAM,CAACrB,mBAAmB,CAAC,CAACsB,GAAG,CAAC,UAACjB,MAAM,EAAEkB,GAAG,EAAA;AAAA,UAAA,oBAC3CnD,GAAA,CAAC+B,QAAQ,CAAC9B,MAAM,EAAA;YACdmD,QAAQ,EAAE1B,YAAY,KAAKO,MAAO;YAElC9B,OAAO,EAAE,SAATA,OAAOA,GAAA;cAAA,OAAQ6B,mBAAmB,CAACC,MAAM,CAAC;YAAA,CAAC;AAAAlC,YAAAA,QAAA,EAE1C+C,UAAU,CAACb,MAAM,CAACzH,KAAK;AAAC,WAAA,EAHpB2I,GAIU,CAAC;QAAA,CACnB;OACG;AAAC,KACC,CACX;AAAA,GACE,CAAC;AAEV,CAAC;;;;;ACjDD,IAAME,SAAS,GAAGC,OAAO,CAACC,GAAG,EAAE,IAAI,KAAK;AAExC,IAAMC,YAAY,gBAAGC,UAAU,CAC7B,UAAA7I,IAAA,EAeE0C,GAAG,EACA;AAAA,EAAA,IAAAoG,gBAAA,GAAA9I,IAAA,CAdD+I,WAAW;AAAXA,IAAAA,WAAW,GAAAD,gBAAA,KAAA,MAAA,GAAGpJ,YAAY,GAAAoJ,gBAAA;IAAAE,WAAA,GAAAhJ,IAAA,CAC1BiJ,MAAM;AAANA,IAAAA,MAAM,GAAAD,WAAA,KAAA,MAAA,GAAG,EAAE,GAAAA,WAAA;IAAAE,oBAAA,GAAAlJ,IAAA,CACXmJ,eAAe;AAAfA,IAAAA,eAAe,GAAAD,oBAAA,KAAA,MAAA,GAAGE,IAAI,GAAAF,oBAAA;IAAAG,qBAAA,GAAArJ,IAAA,CACtBsJ,gBAAgB;AAAhBA,IAAAA,gBAAgB,GAAAD,qBAAA,KAAA,MAAA,GAAGD,IAAI,GAAAC,qBAAA;IAAAE,oBAAA,GAAAvJ,IAAA,CACvBwJ,eAAe;AAAfA,IAAAA,eAAe,GAAAD,oBAAA,KAAA,MAAA,GAAG,EAAE,GAAAA,oBAAA;IAAAE,qBAAA,GAAAzJ,IAAA,CACpB0J,iBAAiB;AAAjBA,IAAAA,iBAAiB,GAAAD,qBAAA,KAAA,MAAA,GAAG,EAAE,GAAAA,qBAAA;IAAAE,eAAA,GAAA3J,IAAA,CACtB+C,UAAU;IAAVA,UAAU,GAAA4G,eAAA,KAAA,MAAA,GAAG;AAAE5F,MAAAA,KAAK,EAAE,IAAI;AAAEC,MAAAA,GAAG,EAAE;AAAK,KAAC,GAAA2F,eAAA;IAAAC,iBAAA,GAAA5J,IAAA,CACvC6J,YAAY;AAAZA,IAAAA,YAAY,GAAAD,iBAAA,KAAA,MAAA,GAAGR,IAAI,GAAAQ,iBAAA;IACnBE,YAAY,GAAA9J,IAAA,CAAZ8J,YAAY;IACZC,aAAa,GAAA/J,IAAA,CAAb+J,aAAa;IAAAC,eAAA,GAAAhK,IAAA,CACbiK,UAAU;AAAVA,IAAAA,UAAU,GAAAD,eAAA,KAAA,MAAA,GAAG,KAAK,GAAAA,eAAA;AACfhH,IAAAA,UAAU,GAAAC,wBAAA,CAAAjD,IAAA,EAAAkD,SAAA,CAAA;AAIf,EAAA,IAAM8D,mBAAmB,GAAG+B,WAAW,IAAIrJ,YAAY;AAEvD,EAAA,IAAMwK,WAAW,GACfnC,MAAM,CAACM,MAAM,CAACrB,mBAAmB,CAAC,CAACmD,IAAI,CAACrC,IAAI,CAAC,SAAS,CAAC,CAAC,IACxDd,mBAAmB,CAACe,MAAM,CAACC,IAAI,CAAChB,mBAAmB,CAAC,CAAC,CAAC,CAAC,CAAC;AAE1D,EAAA,IAAA3D,SAAA,GAAwCC,QAAQ,CAAC4G,WAAW,CAAC;IAAA3G,UAAA,GAAAC,cAAA,CAAAH,SAAA,EAAA,CAAA,CAAA;AAAtDyD,IAAAA,YAAY,GAAAvD,UAAA,CAAA,CAAA,CAAA;AAAEwD,IAAAA,eAAe,GAAAxD,UAAA,CAAA,CAAA,CAAA;AAEpC,EAAA,IAAA6G,UAAA,GAAwC9G,QAAQ,CAAC3C,KAAK,EAAE,CAAC;IAAA0J,UAAA,GAAA7G,cAAA,CAAA4G,UAAA,EAAA,CAAA,CAAA;AAAlDvH,IAAAA,YAAY,GAAAwH,UAAA,CAAA,CAAA,CAAA;AAAEvH,IAAAA,eAAe,GAAAuH,UAAA,CAAA,CAAA,CAAA;AAEpC,EAAA,IAAAlH,eAAA,GAAcC,cAAc,EAAE;IAAtB7D,CAAC,GAAA4D,eAAA,CAAD5D,CAAC;AAET,EAAA,IAAM+K,gBAAgB,GAAG,SAAnBA,gBAAgBA,CAAGrK,IAAI,EAAI;IAC/B6C,eAAe,CAAC,UAAAyH,QAAQ,EAAI;AAC1B,MAAA,IAAMC,OAAO,GAAG,OAAOvK,IAAI,KAAK,UAAU,GAAGA,IAAI,CAACsK,QAAQ,CAAC,GAAGtK,IAAI;MAClE4J,YAAY,CAACW,OAAO,CAAC;AAErB,MAAA,OAAOA,OAAO;AAChB,IAAA,CAAC,CAAC;EACJ,CAAC;AACD,EAAA,IAAMC,kBAAkB,GAAG7G,MAAM,CAAC,IAAI,CAAC;AACvC,EAAA,IAAMiD,WAAW,GAAGjD,MAAM,EAAE;AAE5B+D,EAAAA,SAAS,CAAC,YAAM;IAAA,IAAAF,oBAAA,EAAAiD,qBAAA;IACd,IAAMC,WAAW,IAAAlD,oBAAA,GAAGZ,WAAW,CAAClE,OAAO,MAAA,IAAA,IAAA8E,oBAAA,KAAA,MAAA,IAAA,CAAAiD,qBAAA,GAAnBjD,oBAAA,CAAqBmD,MAAM,MAAA,IAAA,IAAAF,qBAAA,KAAA,MAAA,GAAA,MAAA,GAA3BA,qBAAA,CAAAG,IAAA,CAAApD,oBAA8B,CAAC;AACnD,IAAA,IAAMqD,cAAc,GAAGL,kBAAkB,CAAC9H,OAAO;AAEjD,IAAA,IAAI,CAACgI,WAAW,IAAI,CAACG,cAAc,EAAE,OAAOC,SAAS;AAErD,IAAA,IAAMC,YAAY,GAAG,SAAfA,YAAYA,GAAS;MACzBL,WAAW,CAACM,UAAU,EAAE;IAC1B,CAAC;AAED,IAAA,IAAMC,QAAQ,GAAG,IAAIC,cAAc,CAACH,YAAY,CAAC;AAEjDE,IAAAA,QAAQ,CAACE,OAAO,CAACN,cAAc,CAAC;AAEhC,IAAA,OAAO,YAAM;MACXI,QAAQ,CAACG,UAAU,EAAE;IACvB,CAAC;EACH,CAAC,EAAE,EAAE,CAAC;AAEN,EAAA,oBACEpG,IAAA,CAAA,KAAA,EAAA;AACEC,IAAAA,SAAS,EAAC,UAAU;AACpB,IAAA,aAAA,EAAY,eAAe;AAC3BxC,IAAAA,GAAG,EAAE+H,kBAAmB;AAAAtF,IAAAA,QAAA,GAEvB,CAAC8E,UAAU,iBACV7E,GAAA,CAACkG,SAAS,EAAA;MACRC,eAAe,eACbnG,GAAA,CAACa,UAAU,EAAA;AAACX,QAAAA,KAAK,EAAC,IAAI;AAAAH,QAAAA,QAAA,EACnBtC,YAAY,CAACpC,MAAM,CAAC,YAAY;AAAC,OACxB,CACb;AACD+K,MAAAA,gBAAgB,eACdpG,GAAA,CAACwB,MAAM,EAAAjH,eAAA,CAAA;AAEHkH,QAAAA,WAAW,EAAXA,WAAW;AACXG,QAAAA,mBAAmB,EAAnBA,mBAAmB;AACnBnE,QAAAA,YAAY,EAAZA,YAAY;AACZiE,QAAAA,YAAY,EAAZA,YAAY;AACZhE,QAAAA,eAAe,EAAfA,eAAe;AACfiE,QAAAA,eAAe,EAAfA,eAAe;AACfhE,QAAAA,UAAU,EAAVA;AAAU,OAAA,EAAA,iBAAA,EAEKuH,gBAAgB,CAClC;AACF,KACF,CACF,eACDlF,GAAA,CAACqG,YAAY,EAAAtF,aAAA,CAAA;MACXuF,UAAU,EAAA,IAAA;AACVC,MAAAA,UAAU,EAAEpM,CAAC,CAAC,oCAAoC,CAAE;AACpDqM,MAAAA,SAAS,EAAEzC,eAAgB;AAC3B0C,MAAAA,mBAAmB,EAAC,KAAK;AACzBC,MAAAA,gBAAgB,EAAE,KAAM;AACxBC,MAAAA,UAAU,EAAEzC,gBAAiB;AAC7B0C,MAAAA,aAAa,EAAE,KAAM;AACrBC,MAAAA,MAAM,EAAC,MAAM;MACbC,WAAW,EAAEpF,YAAY,CAACjH,gBAAiB;AAC3CsM,MAAAA,OAAO,EAAE,CAACC,aAAa,EAAEC,cAAc,EAAEC,iBAAiB,CAAE;AAC5D5J,MAAAA,GAAG,EAAEX,SAAS,CAACW,GAAG,EAAEmE,WAAW;AAAE,KAAA,EAAAV,aAAA,CAAA;AAE/BuD,MAAAA,iBAAiB,EAAjBA,iBAAiB;AACjBI,MAAAA,YAAY,EAAZA,YAAY;AACZrB,MAAAA,SAAS,EAATA,SAAS;AACTe,MAAAA,eAAe,EAAfA,eAAe;AACfO,MAAAA,aAAa,EAAbA,aAAa;AACbd,MAAAA,MAAM,EAANA;KAAM,EACHjG,UAAU,EAEhB,CAAC;AAAA,GACC,CAAC;AAEV,CACF;AAEA4F,YAAY,CAAC2D,WAAW,GAAG,cAAc;;;;"}
|
package/dist/EmailForm.js
CHANGED
|
@@ -180,7 +180,7 @@ var ReplyToField = function ReplyToField(_ref) {
|
|
|
180
180
|
options: options,
|
|
181
181
|
isClearable: true,
|
|
182
182
|
className: "w-full",
|
|
183
|
-
"data-testid": "
|
|
183
|
+
"data-testid": "reply-to-select-field",
|
|
184
184
|
label: t("neetoMolecules.emailForm.labels.replyTo"),
|
|
185
185
|
name: "replyTo",
|
|
186
186
|
onChange: function onChange(data) {
|
|
@@ -195,7 +195,7 @@ var ReplyToField = function ReplyToField(_ref) {
|
|
|
195
195
|
nakedInput: true,
|
|
196
196
|
required: true,
|
|
197
197
|
className: "w-full",
|
|
198
|
-
"data-testid": "
|
|
198
|
+
"data-testid": "reply-to-input-field",
|
|
199
199
|
label: t("neetoMolecules.emailForm.labels.replyTo"),
|
|
200
200
|
name: "replyTo",
|
|
201
201
|
placeholder: t("neetoMolecules.emailForm.placeholders.emailPlaceholder"),
|
package/dist/EmailForm.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"EmailForm.js","sources":["../src/components/EmailForm/constants.js","../src/components/EmailForm/contexts/EmailForm.js","../src/components/EmailForm/utils.js","../src/components/EmailForm/ReplyToField.jsx","../src/components/EmailForm/SendToField.jsx","../src/components/EmailForm/SubjectField.jsx","../src/components/EmailForm/EmailForm.jsx","../src/components/EmailForm/EmailFormComponent/index.jsx","../src/components/EmailForm/EmailFormProvider.jsx"],"sourcesContent":["import { t } from \"i18next\";\nimport { isEditorEmpty } from \"neetoeditor\";\nimport { prop } from \"ramda\";\nimport * as yup from \"yup\";\n\nexport const INITIAL_FORM_VALUES = {\n sendTo: [],\n sendToId: \"\",\n sendToCc: [],\n sendToBcc: [],\n replyTo: \"\",\n showCopyEmails: false,\n subject: \"\",\n message: \"\",\n isEnabled: false,\n};\n\nexport const EMAIL_FORM_VALIDATION_SCHEMA = yup.object({\n subject: yup\n .string()\n .required(t(\"neetoMolecules.emailForm.errors.subjectRequired\")),\n message: yup\n .string()\n .test(\n \"message\",\n t(\"neetoMolecules.emailForm.errors.messageRequired\"),\n value => !isEditorEmpty(value)\n ),\n});\n\nexport const sendToFieldValidation = maxEmails => {\n const validation = yup\n .array()\n .test(\n \"all-emails-valid\",\n t(\"neetoMolecules.emailForm.errors.invalidEmailAddress\"),\n emails => emails?.every(prop(\"valid\"))\n )\n .test(\n \"max-email-count\",\n t(\"neetoMolecules.emailForm.errors.maxEmails\", { count: maxEmails }),\n emails => emails?.length <= maxEmails\n );\n\n return yup.object({\n sendTo: validation\n .min(\n 1,\n t(\"neetoMolecules.emailForm.errors.required\", {\n entity: t(\"neetoMolecules.emailForm.fields.sendToEmailAddress\"),\n })\n )\n .nullable(),\n sendToCc: validation,\n sendToBcc: validation,\n });\n};\n\nexport const SEND_TO_ID_FIELD_VALIDATION = yup.object({\n sendToId: yup.string().required(\n t(\"neetoMolecules.emailForm.errors.required\", {\n entity: t(\"neetoMolecules.emailForm.labels.sendTo\"),\n })\n ),\n});\n\nexport const REPLY_TO_FIELD_VALIDATION = yup.object({\n replyTo: yup\n .string()\n .nullable()\n .email(t(\"neetoMolecules.emailForm.errors.invalidEmailAddress\"))\n .required(\n t(\"neetoMolecules.emailForm.errors.required\", {\n entity: t(\"neetoMolecules.emailForm.fields.replyToEmailAddress\"),\n })\n ),\n});\n\nexport const EDITOR_ADDONS = [\n \"highlight\",\n \"emoji\",\n \"code-block\",\n \"block-quote\",\n \"image-upload\",\n \"divider\",\n \"video-embed\",\n];\n\nexport const ALLOWED_FILE_PICKER_TYPES = [\".csv\"];\n","/* eslint-disable @bigbinary/neeto/use-zustand-for-global-state-management */\nimport { createContext } from \"react\";\n\nconst EmailFormContext = createContext({\n showSendToField: false,\n showSendToAsRadio: false,\n showReplyToField: false,\n showCcField: false,\n showBccField: false,\n});\n\nexport { EmailFormContext };\n","import { t } from \"i18next\";\nimport { isPresent } from \"neetocist\";\n\nimport {\n EMAIL_FORM_VALIDATION_SCHEMA,\n REPLY_TO_FIELD_VALIDATION,\n sendToFieldValidation,\n SEND_TO_ID_FIELD_VALIDATION,\n} from \"./constants\";\n\nexport const getValidationSchema = ({\n showSendToField,\n showReplyToField,\n showSendToAsRadio,\n customValidations,\n maxEmails,\n}) => {\n let schema = EMAIL_FORM_VALIDATION_SCHEMA.clone();\n\n if (showSendToField) {\n schema = schema.concat(\n showSendToAsRadio\n ? SEND_TO_ID_FIELD_VALIDATION\n : sendToFieldValidation(maxEmails)\n );\n }\n\n if (showReplyToField) schema = schema.concat(REPLY_TO_FIELD_VALIDATION);\n\n const isYupObject = customValidations.type === \"object\";\n\n if (isYupObject) {\n const customFields = customValidations.fields || {};\n schema = schema.shape(customFields);\n } else if (typeof customValidations === \"object\") {\n schema = schema.shape(customValidations);\n }\n\n return schema;\n};\n\nexport const getReplyToFieldLabelProps = ({ popoverProps }) => ({\n helpIconProps: {\n [\"data-testid\"]: \"reply-to-tooltip\",\n tooltipProps: !isPresent(popoverProps) && {\n content: t(\"neetoMolecules.emailForm.tooltips.replyTo\"),\n touch: [\"hold\", 500],\n },\n popoverProps: isPresent(popoverProps) && {\n ...popoverProps,\n appendTo: \"parent\",\n description:\n popoverProps.description ||\n t(\"neetoMolecules.emailForm.tooltips.replyTo\"),\n },\n },\n});\n\nexport const resolveContent = (content, func, variable) => {\n if (typeof func === \"function\") {\n return func(content, variable);\n }\n\n return content;\n};\n\nexport const normalizeHtmlString = str => {\n if (typeof str !== \"string\") return str;\n\n return str\n .replace(/\\uFEFF/g, \"\")\n .replace(/\\r\\n|\\r/g, \"\\n\")\n .replace(/ /g, \" \")\n .replace(/[\\t ]+/g, \" \")\n .replace(/\\s*\\n\\s*/g, \"\\n\")\n .replace(/\\n+/g, \"\\n\")\n .replace(/>\\s+</g, \"><\")\n .trim();\n};\n","import { useFormikContext } from \"formik\";\nimport { isNotEmpty } from \"neetocist\";\nimport { Select, Input } from \"neetoui/formik\";\nimport { useTranslation } from \"react-i18next\";\n\nimport { getReplyToFieldLabelProps } from \"./utils\";\n\nconst ReplyToField = ({ options = [], popoverProps = {} }) => {\n const { t } = useTranslation();\n const { setFieldValue } = useFormikContext();\n\n const isDropdownField = isNotEmpty(options);\n const labelProps = getReplyToFieldLabelProps({ popoverProps });\n\n if (isDropdownField) {\n return (\n <Select\n {...{ labelProps, options }}\n isClearable\n className=\"w-full\"\n data-testid=\"replyToOptions\"\n label={t(\"neetoMolecules.emailForm.labels.replyTo\")}\n name=\"replyTo\"\n onChange={data => setFieldValue(\"replyTo\", data?.value ?? \"\")}\n />\n );\n }\n\n return (\n <Input\n {...{ labelProps }}\n autoFocus\n nakedInput\n required\n className=\"w-full\"\n data-testid=\"replyToInput\"\n label={t(\"neetoMolecules.emailForm.labels.replyTo\")}\n name=\"replyTo\"\n placeholder={t(\"neetoMolecules.emailForm.placeholders.emailPlaceholder\")}\n size=\"large\"\n onChange={event =>\n setFieldValue(\"replyTo\", event.target.value?.toLowerCase())\n }\n />\n );\n};\n\nexport default ReplyToField;\n","import { useTranslation } from \"react-i18next\";\n\nimport SendToFields from \"components/SendToFields\";\n\nconst SendToField = ({ showBccField, showCcField, showSendToTextField }) => {\n const { t } = useTranslation();\n\n if (!showSendToTextField && !showBccField && !showCcField) return null;\n\n return (\n <SendToFields\n showCcBccButton\n showBccField={showSendToTextField ? false : showBccField}\n showCcField={showSendToTextField ? false : showCcField}\n showSendToField={showSendToTextField}\n bccInputProps={{\n label: t(\"neetoMolecules.emailForm.labels.bCc\"),\n name: \"sendToBcc\",\n placeholder: t(\n \"neetoMolecules.emailForm.placeholders.commaSeparatedEmails\"\n ),\n }}\n ccInputProps={{\n label: t(\"neetoMolecules.emailForm.labels.cc\"),\n name: \"sendToCc\",\n placeholder: t(\n \"neetoMolecules.emailForm.placeholders.commaSeparatedEmails\"\n ),\n }}\n emailInputProps={{\n id: \"sendTo\",\n name: \"sendTo\",\n label: t(\"neetoMolecules.emailForm.labels.sendTo\"),\n placeholder: t(\n \"neetoMolecules.emailForm.placeholders.commaSeparatedEmails\"\n ),\n required: true,\n }}\n />\n );\n};\n\nexport default SendToField;\n","import { useState } from \"react\";\n\nimport { withEventTargetValue } from \"neetocommons/utils/general\";\nimport { Input } from \"neetoui\";\nimport { useTranslation } from \"react-i18next\";\n\nimport DynamicVariables from \"components/DynamicVariables\";\n\nconst SubjectField = ({\n name,\n text,\n updateText,\n subjectVariables = [],\n error,\n required = false,\n onBlur,\n}) => {\n const [isFieldFocusedOnce, setIsFieldFocusedOnce] = useState(false);\n\n const { t } = useTranslation();\n\n const tagClickHandler = ({ key: slug, category }) => {\n const textAreaElement = document.querySelector(`textarea[name=${name}]`);\n const splitIndex =\n isFieldFocusedOnce && textAreaElement\n ? textAreaElement.selectionEnd\n : text.length;\n\n const variable = category ? `${category}.${slug}` : slug;\n const updatedSubject = [\n text.slice(0, splitIndex),\n ` {{${variable}}}`,\n text.slice(splitIndex),\n ].join(\"\");\n updateText(updatedSubject);\n };\n\n return (\n <Input\n {...{ error, name, onBlur, required }}\n nakedInput\n label={t(\"neetoMolecules.emailForm.labels.subject\")}\n placeholder={t(\"neetoMolecules.emailForm.placeholders.subject\")}\n value={text}\n suffix={\n <DynamicVariables\n buttonProps={{ className: \"m-1\" }}\n variables={subjectVariables}\n dropdownProps={{\n className: \"neeto-ui-dropdown__popup overflow-y-auto\",\n buttonSize: \"small\",\n }}\n onVariableClick={tagClickHandler}\n />\n }\n onChange={withEventTargetValue(updateText)}\n onFocus={() => setIsFieldFocusedOnce(true)}\n />\n );\n};\n\nexport default SubjectField;\n","import { useContext } from \"react\";\n\nimport classnames from \"classnames\";\nimport { Field, useFormikContext } from \"formik\";\nimport { notEqualsDeep, isNotEmpty } from \"neetocist\";\nimport { FormikEditor } from \"neetoeditor\";\nimport { Button } from \"neetoui\";\nimport { ActionBlock, Radio } from \"neetoui/formik\";\nimport PropTypes from \"prop-types\";\nimport { equals } from \"ramda\";\nimport { useTranslation } from \"react-i18next\";\n\nimport { EDITOR_ADDONS } from \"./constants\";\nimport { EmailFormContext } from \"./contexts/EmailForm\";\nimport ReplyToField from \"./ReplyToField\";\nimport SendToField from \"./SendToField\";\nimport SubjectField from \"./SubjectField\";\nimport { normalizeHtmlString } from \"./utils\";\n\nconst EmailForm = ({\n messageVariables = [],\n subjectVariables = [],\n handleCancel,\n handleResetToDefault,\n isLoading,\n replyToFieldProps,\n sendToFieldProps,\n replyToOptions,\n sendToOptions = [],\n isUpdating = false,\n isResetting = false,\n showFields = true,\n className = \"\",\n editorAddons = EDITOR_ADDONS,\n showResetToDefaultButton,\n editorRef = null,\n defaultValues = {},\n}) => {\n const { t } = useTranslation();\n\n const {\n showSendToField,\n showSendToAsRadio,\n showReplyToField,\n showCcField,\n showBccField,\n } = useContext(EmailFormContext);\n\n const { setFieldValue, values, resetForm } = useFormikContext();\n\n const normalizedValues = {\n ...values,\n message: normalizeHtmlString(values.message),\n };\n\n const normalizedDefaultValues = {\n ...defaultValues,\n message: normalizeHtmlString(defaultValues?.message),\n };\n\n normalizedDefaultValues.replyTo ||= globalProps.user.email;\n\n const disabled = equals(normalizedValues, normalizedDefaultValues);\n\n const sendToFieldOptions = sendToFieldProps?.options || sendToOptions;\n const showSendToRadioField =\n showSendToField && showSendToAsRadio && isNotEmpty(sendToFieldOptions);\n\n const showSendToTextField = showSendToField && !showSendToRadioField;\n\n return (\n <div\n data-testid=\"email-form\"\n className={classnames(\n \"neeto-notification-email-wrapper__form-container flex flex-1 flex-col items-start gap-2 !pb-0\",\n { [className]: className }\n )}\n >\n <div className=\"w-full grow\">\n {showFields && (\n <div className=\"flex w-full flex-col items-start justify-start gap-5\">\n {showSendToRadioField && (\n <Radio\n className=\"pb-2\"\n data-testid=\"send-to-id\"\n label={t(\"neetoMolecules.emailForm.labels.sendTo\")}\n labelProps={{ required: true }}\n name=\"sendToId\"\n >\n {sendToFieldOptions.map(({ label, value }) => (\n <Radio.Item {...{ label, value }} key={value} />\n ))}\n </Radio>\n )}\n <SendToField\n {...{ showBccField, showCcField, showSendToTextField }}\n />\n {showReplyToField && (\n <div className=\"neeto-ui-border-gray-200 w-full border-b pb-1\">\n <ReplyToField options={replyToOptions} {...replyToFieldProps} />\n </div>\n )}\n <Field name=\"subject\">\n {({ field: { value, onBlur }, meta: { error, touched } }) => (\n <div className=\"neeto-notification-email-subject-block neeto-ui-border-gray-200 w-full border-b pb-1\">\n <SubjectField\n {...{ onBlur, subjectVariables }}\n required\n error={touched && error ? t(error) : undefined}\n name=\"subject\"\n text={value}\n updateText={text => setFieldValue(\"subject\", text)}\n />\n </div>\n )}\n </Field>\n <div\n className=\"neeto-notification-email-message-block w-full\"\n data-testid=\"message-input-container\"\n >\n <FormikEditor\n required\n addons={editorAddons}\n data-testid=\"message-input-field\"\n hideSlashCommands={false}\n id=\"form_message\"\n menuType=\"fixed\"\n name=\"message\"\n placeholder={t(\"neetoMolecules.emailForm.placeholders.message\")}\n ref={editorRef}\n variables={messageVariables}\n shouldUpdate={(nextProps, prevProps) =>\n notEqualsDeep(nextProps.variables, prevProps.variables)\n }\n />\n </div>\n </div>\n )}\n </div>\n <div className=\"neeto-ui-bg-white neeto-notification-email-wrapper__action-block z-10 flex w-full justify-between py-6 lg:sticky lg:bottom-0\">\n <ActionBlock\n cancelButtonProps={{ onClick: handleCancel }}\n isSubmitting={isLoading || isUpdating}\n />\n {showResetToDefaultButton && (\n <div className=\"neeto-ui-action-block__wrapper\">\n <Button\n {...{ disabled }}\n data-testid=\"reset-to-default-button\"\n label={t(\"neetoMolecules.emailForm.labels.resetToDefault\")}\n loading={isResetting}\n style=\"tertiary\"\n onClick={() => {\n resetForm();\n handleResetToDefault();\n }}\n />\n </div>\n )}\n </div>\n </div>\n );\n};\n\nEmailForm.propTypes = {\n /**\n * This is an array of objects used for templating within the message field. Each object in the array has a **label** and a **key**.\n */\n messageVariables: PropTypes.array,\n /**\n * This is an array of objects used for templating within the subject field. Each object in the array has a **label** and a **key**.\n */\n subjectVariables: PropTypes.array,\n /**\n * This function that gets triggered when the 'Cancel' button is clicked.\n */\n handleCancel: PropTypes.func,\n /**\n * This function that gets triggered when the 'Reset to default' button is clicked.\n */\n handleResetToDefault: PropTypes.func,\n /**\n * This Boolean value, when set to true, triggers the display of a loading indicator on the 'Save changes' button.\"\n */\n isLoading: PropTypes.bool,\n /**\n * This Boolean value, when set to true, triggers the display of a loading indicator on the 'Reset to default' button.\n */\n isResetting: PropTypes.bool,\n /**\n * An array of objects, with each object having **label** and **value** properties. This prop transforms the 'Reply To' field into a dropdown menu with given options. Without this prop, 'Reply To' will be a text input field.\n */\n replyToOptions: PropTypes.array,\n /**\n * An array of objects, with each object having **label** and **value** properties. This prop transforms the 'Send To' field into a radio group with given options. Without this prop, 'Send To' will be a multi email input field.\n */\n sendToOptions: PropTypes.array,\n /**\n * A Boolean flag indicating whether an update operation is currently in progress. When set to `true`, the 'Save changes' button is disabled.\n */\n isUpdating: PropTypes.bool,\n /**\n * To provide additional classnames to the button.\n */\n className: PropTypes.string,\n /**\n * To provide props to the replyToField. Supports options that will\n * be rendered as the reply to options and popover props.\n */\n replyToFieldProps: PropTypes.object,\n /**\n * To provide props to the sendToField. Supports sendTo options.\n */\n sendToFieldProps: PropTypes.object,\n /**\n * This Boolean value, when set to true, shows reset to default button.\n */\n showResetToDefaultButton: PropTypes.bool,\n /**\n * A reference to the editor.\n */\n editorRef: PropTypes.any,\n /**\n * To override the default editor addons\n */\n editorAddons: PropTypes.array,\n /**\n * The default values for the email form.\n */\n defaultValues: PropTypes.object,\n};\n\nexport default EmailForm;\n","import { noop, isNotEmpty } from \"neetocist\";\nimport { Tooltip } from \"neetoui\";\nimport { BlockNavigation, Switch } from \"neetoui/formik\";\nimport PropTypes from \"prop-types\";\nimport { isEmpty, pluck } from \"ramda\";\n\nimport { EmailFormProvider, EmailForm, EmailPreview } from \"..\";\nimport Header from \"../../Header\";\nimport MobilePreviewHeader from \"../../MobilePreviewHeader\";\nimport { INITIAL_FORM_VALUES } from \"../constants\";\nimport \"../email-form.scss\";\nimport { resolveContent } from \"../utils\";\n\nconst EmailFormComponent = ({\n onSubmit = noop,\n initialValues = INITIAL_FORM_VALUES,\n children,\n formikProps,\n validationSchema,\n showSendToField = false,\n showReplyToField = false,\n showSendToAsRadio = false,\n blockNavigation = true,\n showCcField = false,\n showBccField = false,\n isLoading = false,\n maxEmails = 10,\n emailFormProps = {},\n emailPreviewProps = {},\n headerProps = {},\n tooltipProps = {},\n switchProps = {},\n mobilePreviewProps = {},\n}) => {\n const { formatBody, formatSubject, bodyVariables, subjectVariables } =\n emailPreviewProps;\n\n const shouldShowFields = values => isEmpty(switchProps) || values.isEnabled;\n\n return (\n <EmailFormProvider\n {...{\n formikProps,\n initialValues,\n maxEmails,\n onSubmit,\n showBccField,\n showCcField,\n showReplyToField,\n showSendToAsRadio,\n showSendToField,\n validationSchema,\n }}\n >\n {({ values, isSubmitting }) => (\n <div className=\"neeto-notification-email-wrapper flex flex-grow flex-col overflow-y-auto lg:flex-row\">\n <div className=\"neeto-notification-email-wrapper__form-wrapper flex w-full flex-col px-5 md:px-10 lg:h-full lg:w-1/2 lg:overflow-y-auto\">\n {blockNavigation && <BlockNavigation />}\n {isNotEmpty(headerProps) && (\n <Header className=\"px-0\" size=\"small\" {...headerProps} />\n )}\n {isNotEmpty(switchProps) && (\n <div className=\"flex items-center justify-between gap-y-0.5 pb-6\">\n <Tooltip\n disabled={!switchProps?.disabled}\n position=\"top\"\n {...tooltipProps}\n >\n <div className=\"flex items-center gap-2\">\n <Switch\n data-testid=\"switch\"\n name=\"isEnabled\"\n {...switchProps}\n />\n </div>\n </Tooltip>\n </div>\n )}\n {shouldShowFields(values) && children}\n <EmailForm\n isLoading={isSubmitting || isLoading}\n isUpdating={isSubmitting || isLoading}\n showFields={shouldShowFields(values)}\n {...emailFormProps}\n />\n </div>\n {shouldShowFields(values) && (\n <MobilePreviewHeader\n className=\"lg:hidden\"\n {...mobilePreviewProps}\n />\n )}\n {shouldShowFields(values) && (\n <div className=\"neeto-notification-email-wrapper__preview-wrapper neeto-ui-bg-gray-100 w-full px-6 py-10 lg:w-1/2 lg:overflow-y-auto\">\n <EmailPreview\n body={resolveContent(values.message, formatBody, bodyVariables)}\n from={values.sendFrom}\n to={pluck(\"value\", values?.sendTo ?? [])}\n subject={resolveContent(\n values.subject,\n formatSubject,\n subjectVariables\n )}\n {...emailPreviewProps}\n />\n </div>\n )}\n </div>\n )}\n </EmailFormProvider>\n );\n};\n\nEmailFormComponent.propTypes = {\n /**\n * A function that will be triggered with input values when the 'Save changes' button is clicked.\n */\n onSubmit: PropTypes.func,\n /**\n * These are the predefined values that populate the form fields when the form is first rendered.\n */\n initialValues: PropTypes.shape({\n sendTo: PropTypes.array,\n sendToId: PropTypes.string,\n sendToCc: PropTypes.array,\n sendToBcc: PropTypes.array,\n replyTo: PropTypes.string,\n showCopyEmails: PropTypes.bool,\n subject: PropTypes.string,\n message: PropTypes.string,\n isEnabled: PropTypes.bool,\n }),\n /**\n * A prop that can be used to override the default Formik properties that are set within the component, providing customization flexibility.\n */\n formikProps: PropTypes.object,\n /**\n * A Yup object defining custom form validation rules, which will be merged with the default rules using the concat method.\n */\n validationSchema: PropTypes.object,\n /**\n * A prop used for rendering either standard React element or a render prop function.\n */\n children: PropTypes.oneOfType([PropTypes.func, PropTypes.node]),\n /**\n * A Boolean value that determines whether the '**sendTo**' field should be displayed or not.\n */\n showSendToField: PropTypes.bool,\n /**\n * A Boolean value that determines whether the '**replyTo**' field should be displayed or not.\n */\n showReplyToField: PropTypes.bool,\n /**\n * A Boolean value that determines whether the '**sendTo**' field should be radio type or not.\n */\n showSendToAsRadio: PropTypes.bool,\n /**\n * A Boolean value that determines whether the '**Cc**' field should be displayed or not when showSendToField is false.\n * This prop has no effect when showSendToField is true.\n */\n showCcField: PropTypes.bool,\n /**\n * A Boolean value that determines whether the '**Bcc**' field should be displayed or not when showSendToField is false.\n * This prop has no effect when showSendToField is true.\n */\n showBccField: PropTypes.bool,\n /**\n * This Boolean value, when set to true, triggers the display of a loading indicator on the 'Save changes' button.\"\n */\n isLoading: PropTypes.bool,\n /**\n * A prop to limit number of send to emails\n */\n maxEmails: PropTypes.number,\n /**\n * These are the values that will be passed to EmailForm Component\n */\n emailFormProps: PropTypes.shape({\n messageVariables: PropTypes.array,\n subjectVariables: PropTypes.array,\n handleCancel: PropTypes.func,\n handleResetToDefault: PropTypes.func,\n isLoading: PropTypes.bool,\n replyToFieldProps: PropTypes.object,\n sendToFieldProps: PropTypes.object,\n replyToOptions: PropTypes.array,\n sendToOptions: PropTypes.array,\n isUpdating: PropTypes.bool,\n showFields: PropTypes.bool,\n className: PropTypes.string,\n showResetToDefaultButton: PropTypes.bool,\n editorRef: PropTypes.any,\n editorAddons: PropTypes.array,\n }),\n /**\n * These are the values that will be passed to EmailPreview Component\n */\n emailPreviewProps: PropTypes.shape({\n to: PropTypes.array,\n from: PropTypes.string,\n subject: PropTypes.string,\n body: PropTypes.string,\n actionButtonText: PropTypes.string,\n logo: PropTypes.string,\n customContent: PropTypes.string,\n className: PropTypes.string,\n formatBody: PropTypes.func,\n formatSubject: PropTypes.func,\n bodyVariables: PropTypes.object,\n subjectVariables: PropTypes.object,\n }),\n /**\n * These are the values that will be passed to Header Component\n */\n headerProps: PropTypes.object,\n /**\n * These are the values that will be passed to Tooltip Component\n */\n tooltipProps: PropTypes.object,\n /**\n * These are the values that will be passed to Switch Component\n */\n switchProps: PropTypes.object,\n /**\n * These are the values that will be passed to MobilePreviewHeader Component\n */\n mobilePreviewProps: PropTypes.object,\n};\n\nexport default EmailFormComponent;\n","import { noop } from \"neetocist\";\nimport { Form } from \"neetoui/formik\";\nimport PropTypes from \"prop-types\";\n\nimport { INITIAL_FORM_VALUES } from \"./constants\";\nimport { EmailFormContext } from \"./contexts/EmailForm\";\nimport { getValidationSchema } from \"./utils\";\n\nconst EmailFormProvider = ({\n onSubmit = noop,\n initialValues = INITIAL_FORM_VALUES,\n children,\n formikProps,\n validationSchema: customValidations = {},\n showSendToField = false,\n showReplyToField = false,\n showSendToAsRadio = false,\n showCcField = false,\n showBccField = false,\n maxEmails = 10,\n}) => (\n <div\n className=\"neeto-notification-email-outer-wrapper\"\n data-testid=\"email-form-provider\"\n >\n <EmailFormContext.Provider\n value={{\n showSendToField,\n showSendToAsRadio,\n showReplyToField,\n showCcField,\n showBccField,\n }}\n >\n <Form\n className=\"neeto-notification-email-inner-wrapper\"\n formikProps={{\n enableReinitialize: true,\n validationSchema: getValidationSchema({\n showSendToField,\n showReplyToField,\n showSendToAsRadio,\n customValidations,\n maxEmails,\n }),\n initialValues: {\n ...initialValues,\n replyTo: initialValues.replyTo || globalProps.user.email,\n },\n onSubmit,\n ...formikProps,\n }}\n >\n {children}\n </Form>\n </EmailFormContext.Provider>\n </div>\n);\n\nEmailFormProvider.propTypes = {\n /**\n * A Boolean value that determines whether the '**sendTo**' field should be displayed or not.\n */\n showSendToField: PropTypes.bool,\n /**\n * A Boolean value that determines whether the '**replyTo**' field should be displayed or not.\n */\n showReplyToField: PropTypes.bool,\n /**\n * A Boolean value that determines whether the '**sendTo**' field should be radio type or not.\n */\n showSendToAsRadio: PropTypes.bool,\n /**\n * A function that will be triggered with input values when the 'Save changes' button is clicked.\n */\n onSubmit: PropTypes.func,\n /**\n * These are the predefined values that populate the form fields when the form is first rendered.\n */\n initialValues: PropTypes.shape({\n sendTo: PropTypes.array,\n sendToId: PropTypes.string,\n sendToCc: PropTypes.array,\n sendToBcc: PropTypes.array,\n replyTo: PropTypes.string,\n showCopyEmails: PropTypes.bool,\n subject: PropTypes.string,\n message: PropTypes.string,\n }),\n /**\n * A prop used for rendering either standard React element or a render prop function.\n */\n children: PropTypes.oneOfType([PropTypes.func, PropTypes.node]),\n /**\n * A prop that can be used to override the default Formik properties that are set within the component, providing customization flexibility.\n */\n formikProps: PropTypes.object,\n /**\n * A Yup object defining custom form validation rules, which will be merged with the default rules using the concat method.\n */\n validationSchema: PropTypes.object,\n /**\n * A prop to limit number of send to emails\n */\n maxEmails: PropTypes.number,\n /**\n * A Boolean value that determines whether the '**Cc**' field should be displayed or not when showSendToField is false.\n * This prop has no effect when showSendToField is true.\n */\n showCcField: PropTypes.bool,\n /**\n * A Boolean value that determines whether the '**Bcc**' field should be displayed or not when showSendToField is false.\n * This prop has no effect when showSendToField is true.\n */\n showBccField: PropTypes.bool,\n};\n\nexport default EmailFormProvider;\n"],"names":["INITIAL_FORM_VALUES","sendTo","sendToId","sendToCc","sendToBcc","replyTo","showCopyEmails","subject","message","isEnabled","EMAIL_FORM_VALIDATION_SCHEMA","yup","object","string","required","t","test","value","isEditorEmpty","sendToFieldValidation","maxEmails","validation","array","emails","every","prop","count","length","min","entity","nullable","SEND_TO_ID_FIELD_VALIDATION","REPLY_TO_FIELD_VALIDATION","email","EDITOR_ADDONS","EmailFormContext","createContext","showSendToField","showSendToAsRadio","showReplyToField","showCcField","showBccField","getValidationSchema","_ref","customValidations","schema","clone","concat","isYupObject","type","customFields","fields","shape","_typeof","getReplyToFieldLabelProps","_ref2","popoverProps","helpIconProps","_defineProperty","isPresent","content","touch","_objectSpread","appendTo","description","resolveContent","func","variable","normalizeHtmlString","str","replace","trim","ReplyToField","_ref$options","options","_ref$popoverProps","_useTranslation","useTranslation","_useFormikContext","useFormikContext","setFieldValue","isDropdownField","isNotEmpty","labelProps","_jsx","Select","isClearable","className","label","name","onChange","data","_data$value","Input","autoFocus","nakedInput","placeholder","size","event","_event$target$value","target","toLowerCase","SendToField","showSendToTextField","SendToFields","showCcBccButton","bccInputProps","ccInputProps","emailInputProps","id","SubjectField","text","updateText","_ref$subjectVariables","subjectVariables","error","_ref$required","onBlur","_useState","useState","_useState2","_slicedToArray","isFieldFocusedOnce","setIsFieldFocusedOnce","tagClickHandler","slug","key","category","textAreaElement","document","querySelector","splitIndex","selectionEnd","updatedSubject","slice","join","suffix","DynamicVariables","buttonProps","variables","dropdownProps","buttonSize","onVariableClick","withEventTargetValue","onFocus","EmailForm","_ref$messageVariables","messageVariables","handleCancel","handleResetToDefault","isLoading","replyToFieldProps","sendToFieldProps","replyToOptions","_ref$sendToOptions","sendToOptions","_ref$isUpdating","isUpdating","_ref$isResetting","isResetting","_ref$showFields","showFields","_ref$className","_ref$editorAddons","editorAddons","showResetToDefaultButton","_ref$editorRef","editorRef","_ref$defaultValues","defaultValues","_useContext","useContext","values","resetForm","normalizedValues","normalizedDefaultValues","globalProps","user","disabled","equals","sendToFieldOptions","showSendToRadioField","_jsxs","classnames","children","Radio","map","_createElement","Item","Field","_ref3","_ref3$field","field","_ref3$meta","meta","touched","undefined","FormikEditor","addons","hideSlashCommands","menuType","ref","shouldUpdate","nextProps","prevProps","notEqualsDeep","ActionBlock","cancelButtonProps","onClick","isSubmitting","Button","loading","style","EmailFormComponent","_ref$onSubmit","onSubmit","noop","_ref$initialValues","initialValues","formikProps","validationSchema","_ref$showSendToField","_ref$showReplyToField","_ref$showSendToAsRadi","_ref$blockNavigation","blockNavigation","_ref$showCcField","_ref$showBccField","_ref$isLoading","_ref$maxEmails","_ref$emailFormProps","emailFormProps","_ref$emailPreviewProp","emailPreviewProps","_ref$headerProps","headerProps","_ref$tooltipProps","tooltipProps","_ref$switchProps","switchProps","_ref$mobilePreviewPro","mobilePreviewProps","formatBody","formatSubject","bodyVariables","shouldShowFields","isEmpty","EmailFormProvider","_values$sendTo","BlockNavigation","Header","Tooltip","position","Switch","MobilePreviewHeader","EmailPreview","body","from","sendFrom","to","pluck","_ref$validationSchema","Provider","Form","enableReinitialize"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAKO,IAAMA,mBAAmB,GAAG;AACjCC,EAAAA,MAAM,EAAE,EAAE;AACVC,EAAAA,QAAQ,EAAE,EAAE;AACZC,EAAAA,QAAQ,EAAE,EAAE;AACZC,EAAAA,SAAS,EAAE,EAAE;AACbC,EAAAA,OAAO,EAAE,EAAE;AACXC,EAAAA,cAAc,EAAE,KAAK;AACrBC,EAAAA,OAAO,EAAE,EAAE;AACXC,EAAAA,OAAO,EAAE,EAAE;AACXC,EAAAA,SAAS,EAAE;AACb,CAAC;AAEM,IAAMC,4BAA4B,GAAGC,GAAG,CAACC,MAAM,CAAC;AACrDL,EAAAA,OAAO,EAAEI,GAAG,CACTE,MAAM,EAAE,CACRC,QAAQ,CAACC,CAAC,CAAC,iDAAiD,CAAC,CAAC;AACjEP,EAAAA,OAAO,EAAEG,GAAG,CACTE,MAAM,EAAE,CACRG,IAAI,CACH,SAAS,EACTD,CAAC,CAAC,iDAAiD,CAAC,EACpD,UAAAE,KAAK,EAAA;AAAA,IAAA,OAAI,CAACC,aAAa,CAACD,KAAK,CAAC;EAAA,CAChC;AACJ,CAAC,CAAC;AAEK,IAAME,qBAAqB,GAAG,SAAxBA,qBAAqBA,CAAGC,SAAS,EAAI;AAChD,EAAA,IAAMC,UAAU,GAAGV,GAAG,CACnBW,KAAK,EAAE,CACPN,IAAI,CACH,kBAAkB,EAClBD,CAAC,CAAC,qDAAqD,CAAC,EACxD,UAAAQ,MAAM,EAAA;AAAA,IAAA,OAAIA,MAAM,KAAA,IAAA,IAANA,MAAM,KAAA,MAAA,GAAA,MAAA,GAANA,MAAM,CAAEC,KAAK,CAACC,IAAI,CAAC,OAAO,CAAC,CAAC;EAAA,CACxC,CAAC,CACAT,IAAI,CACH,iBAAiB,EACjBD,CAAC,CAAC,2CAA2C,EAAE;AAAEW,IAAAA,KAAK,EAAEN;GAAW,CAAC,EACpE,UAAAG,MAAM,EAAA;IAAA,OAAI,CAAAA,MAAM,KAAA,IAAA,IAANA,MAAM,uBAANA,MAAM,CAAEI,MAAM,KAAIP,SAAS;AAAA,EAAA,CACvC,CAAC;EAEH,OAAOT,GAAG,CAACC,MAAM,CAAC;IAChBX,MAAM,EAAEoB,UAAU,CACfO,GAAG,CACF,CAAC,EACDb,CAAC,CAAC,0CAA0C,EAAE;MAC5Cc,MAAM,EAAEd,CAAC,CAAC,oDAAoD;AAChE,KAAC,CACH,CAAC,CACAe,QAAQ,EAAE;AACb3B,IAAAA,QAAQ,EAAEkB,UAAU;AACpBjB,IAAAA,SAAS,EAAEiB;AACb,GAAC,CAAC;AACJ,CAAC;AAEM,IAAMU,2BAA2B,GAAGpB,GAAG,CAACC,MAAM,CAAC;AACpDV,EAAAA,QAAQ,EAAES,GAAG,CAACE,MAAM,EAAE,CAACC,QAAQ,CAC7BC,CAAC,CAAC,0CAA0C,EAAE;IAC5Cc,MAAM,EAAEd,CAAC,CAAC,wCAAwC;AACpD,GAAC,CACH;AACF,CAAC,CAAC;AAEK,IAAMiB,yBAAyB,GAAGrB,GAAG,CAACC,MAAM,CAAC;EAClDP,OAAO,EAAEM,GAAG,CACTE,MAAM,EAAE,CACRiB,QAAQ,EAAE,CACVG,KAAK,CAAClB,CAAC,CAAC,qDAAqD,CAAC,CAAC,CAC/DD,QAAQ,CACPC,CAAC,CAAC,0CAA0C,EAAE;IAC5Cc,MAAM,EAAEd,CAAC,CAAC,qDAAqD;AACjE,GAAC,CACH;AACJ,CAAC,CAAC;AAEK,IAAMmB,aAAa,GAAG,CAC3B,WAAW,EACX,OAAO,EACP,YAAY,EACZ,aAAa,EACb,cAAc,EACd,SAAS,EACT,aAAa,CACd;;ACtFD;AAGA,IAAMC,gBAAgB,gBAAGC,aAAa,CAAC;AACrCC,EAAAA,eAAe,EAAE,KAAK;AACtBC,EAAAA,iBAAiB,EAAE,KAAK;AACxBC,EAAAA,gBAAgB,EAAE,KAAK;AACvBC,EAAAA,WAAW,EAAE,KAAK;AAClBC,EAAAA,YAAY,EAAE;AAChB,CAAC,CAAC;;;;ACCK,IAAMC,mBAAmB,GAAG,SAAtBA,mBAAmBA,CAAAC,IAAA,EAM1B;AAAA,EAAA,IALJN,eAAe,GAAAM,IAAA,CAAfN,eAAe;IACfE,gBAAgB,GAAAI,IAAA,CAAhBJ,gBAAgB;IAChBD,iBAAiB,GAAAK,IAAA,CAAjBL,iBAAiB;IACjBM,iBAAiB,GAAAD,IAAA,CAAjBC,iBAAiB;IACjBxB,SAAS,GAAAuB,IAAA,CAATvB,SAAS;AAET,EAAA,IAAIyB,MAAM,GAAGnC,4BAA4B,CAACoC,KAAK,EAAE;AAEjD,EAAA,IAAIT,eAAe,EAAE;AACnBQ,IAAAA,MAAM,GAAGA,MAAM,CAACE,MAAM,CACpBT,iBAAiB,GACbP,2BAA2B,GAC3BZ,qBAAqB,CAACC,SAAS,CACrC,CAAC;AACH,EAAA;EAEA,IAAImB,gBAAgB,EAAEM,MAAM,GAAGA,MAAM,CAACE,MAAM,CAACf,yBAAyB,CAAC;AAEvE,EAAA,IAAMgB,WAAW,GAAGJ,iBAAiB,CAACK,IAAI,KAAK,QAAQ;AAEvD,EAAA,IAAID,WAAW,EAAE;AACf,IAAA,IAAME,YAAY,GAAGN,iBAAiB,CAACO,MAAM,IAAI,EAAE;AACnDN,IAAAA,MAAM,GAAGA,MAAM,CAACO,KAAK,CAACF,YAAY,CAAC;AACrC,EAAA,CAAC,MAAM,IAAIG,OAAA,CAAOT,iBAAiB,CAAA,KAAK,QAAQ,EAAE;AAChDC,IAAAA,MAAM,GAAGA,MAAM,CAACO,KAAK,CAACR,iBAAiB,CAAC;AAC1C,EAAA;AAEA,EAAA,OAAOC,MAAM;AACf,CAAC;AAEM,IAAMS,yBAAyB,GAAG,SAA5BA,yBAAyBA,CAAAC,KAAA,EAAA;AAAA,EAAA,IAAMC,YAAY,GAAAD,KAAA,CAAZC,YAAY;EAAA,OAAQ;AAC9DC,IAAAA,aAAa,EAAAC,eAAA,CAAAA,eAAA,CAAAA,eAAA,CAAA,EAAA,EACV,aAAa,EAAG,kBAAkB,mBACrB,CAACC,SAAS,CAACH,YAAY,CAAC,IAAI;AACxCI,MAAAA,OAAO,EAAE7C,CAAC,CAAC,2CAA2C,CAAC;AACvD8C,MAAAA,KAAK,EAAE,CAAC,MAAM,EAAE,GAAG;KACpB,CAAA,EAAA,cAAA,EACaF,SAAS,CAACH,YAAY,CAAC,IAAAM,eAAA,CAAAA,eAAA,CAAA,EAAA,EAChCN,YAAY,CAAA,EAAA,EAAA,EAAA;AACfO,MAAAA,QAAQ,EAAE,QAAQ;AAClBC,MAAAA,WAAW,EACTR,YAAY,CAACQ,WAAW,IACxBjD,CAAC,CAAC,2CAA2C;KAAC,CACjD;GAEJ;AAAA,CAAC;AAEK,IAAMkD,cAAc,GAAG,SAAjBA,cAAcA,CAAIL,OAAO,EAAEM,IAAI,EAAEC,QAAQ,EAAK;AACzD,EAAA,IAAI,OAAOD,IAAI,KAAK,UAAU,EAAE;AAC9B,IAAA,OAAOA,IAAI,CAACN,OAAO,EAAEO,QAAQ,CAAC;AAChC,EAAA;AAEA,EAAA,OAAOP,OAAO;AAChB,CAAC;AAEM,IAAMQ,mBAAmB,GAAG,SAAtBA,mBAAmBA,CAAGC,GAAG,EAAI;AACxC,EAAA,IAAI,OAAOA,GAAG,KAAK,QAAQ,EAAE,OAAOA,GAAG;EAEvC,OAAOA,GAAG,CACPC,OAAO,CAAC,SAAS,EAAE,EAAE,CAAC,CACtBA,OAAO,CAAC,UAAU,EAAE,IAAI,CAAC,CACzBA,OAAO,CAAC,SAAS,EAAE,GAAG,CAAC,CACvBA,OAAO,CAAC,SAAS,EAAE,GAAG,CAAC,CACvBA,OAAO,CAAC,WAAW,EAAE,IAAI,CAAC,CAC1BA,OAAO,CAAC,MAAM,EAAE,IAAI,CAAC,CACrBA,OAAO,CAAC,QAAQ,EAAE,IAAI,CAAC,CACvBC,IAAI,EAAE;AACX,CAAC;;ACvED,IAAMC,YAAY,GAAG,SAAfA,YAAYA,CAAA7B,IAAA,EAA4C;AAAA,EAAA,IAAA8B,YAAA,GAAA9B,IAAA,CAAtC+B,OAAO;AAAPA,IAAAA,OAAO,GAAAD,YAAA,KAAA,MAAA,GAAG,EAAE,GAAAA,YAAA;IAAAE,iBAAA,GAAAhC,IAAA,CAAEa,YAAY;AAAZA,IAAAA,YAAY,GAAAmB,iBAAA,KAAA,MAAA,GAAG,EAAE,GAAAA,iBAAA;AACrD,EAAA,IAAAC,eAAA,GAAcC,cAAc,EAAE;IAAtB9D,CAAC,GAAA6D,eAAA,CAAD7D,CAAC;AACT,EAAA,IAAA+D,iBAAA,GAA0BC,gBAAgB,EAAE;IAApCC,aAAa,GAAAF,iBAAA,CAAbE,aAAa;AAErB,EAAA,IAAMC,eAAe,GAAGC,UAAU,CAACR,OAAO,CAAC;EAC3C,IAAMS,UAAU,GAAG7B,yBAAyB,CAAC;AAAEE,IAAAA,YAAY,EAAZA;AAAa,GAAC,CAAC;AAE9D,EAAA,IAAIyB,eAAe,EAAE;IACnB,oBACEG,GAAA,CAACC,MAAM,EAAA;AACCF,MAAAA,UAAU,EAAVA,UAAU;AAAET,MAAAA,OAAO,EAAPA,OAAO;MACzBY,WAAW,EAAA,IAAA;AACXC,MAAAA,SAAS,EAAC,QAAQ;AAClB,MAAA,aAAA,EAAY,gBAAgB;AAC5BC,MAAAA,KAAK,EAAEzE,CAAC,CAAC,yCAAyC,CAAE;AACpD0E,MAAAA,IAAI,EAAC,SAAS;AACdC,MAAAA,QAAQ,EAAE,SAAVA,QAAQA,CAAEC,IAAI,EAAA;AAAA,QAAA,IAAAC,WAAA;AAAA,QAAA,OAAIZ,aAAa,CAAC,SAAS,GAAAY,WAAA,GAAED,IAAI,KAAA,IAAA,IAAJA,IAAI,uBAAJA,IAAI,CAAE1E,KAAK,MAAA,IAAA,IAAA2E,WAAA,cAAAA,WAAA,GAAI,EAAE,CAAC;AAAA,MAAA;AAAC,KAC/D,CAAC;AAEN,EAAA;EAEA,oBACER,GAAA,CAACS,KAAK,EAAA;AACEV,IAAAA,UAAU,EAAVA,UAAU;IAChBW,SAAS,EAAA,IAAA;IACTC,UAAU,EAAA,IAAA;IACVjF,QAAQ,EAAA,IAAA;AACRyE,IAAAA,SAAS,EAAC,QAAQ;AAClB,IAAA,aAAA,EAAY,cAAc;AAC1BC,IAAAA,KAAK,EAAEzE,CAAC,CAAC,yCAAyC,CAAE;AACpD0E,IAAAA,IAAI,EAAC,SAAS;AACdO,IAAAA,WAAW,EAAEjF,CAAC,CAAC,wDAAwD,CAAE;AACzEkF,IAAAA,IAAI,EAAC,OAAO;AACZP,IAAAA,QAAQ,EAAE,SAAVA,QAAQA,CAAEQ,KAAK,EAAA;AAAA,MAAA,IAAAC,mBAAA;AAAA,MAAA,OACbnB,aAAa,CAAC,SAAS,GAAAmB,mBAAA,GAAED,KAAK,CAACE,MAAM,CAACnF,KAAK,MAAA,IAAA,IAAAkF,mBAAA,KAAA,MAAA,GAAA,MAAA,GAAlBA,mBAAA,CAAoBE,WAAW,EAAE,CAAC;AAAA,IAAA;AAC5D,GACF,CAAC;AAEN,CAAC;;ACzCD,IAAMC,WAAW,GAAG,SAAdA,WAAWA,CAAA3D,IAAA,EAA2D;AAAA,EAAA,IAArDF,YAAY,GAAAE,IAAA,CAAZF,YAAY;IAAED,WAAW,GAAAG,IAAA,CAAXH,WAAW;IAAE+D,mBAAmB,GAAA5D,IAAA,CAAnB4D,mBAAmB;AACnE,EAAA,IAAA3B,eAAA,GAAcC,cAAc,EAAE;IAAtB9D,CAAC,GAAA6D,eAAA,CAAD7D,CAAC;EAET,IAAI,CAACwF,mBAAmB,IAAI,CAAC9D,YAAY,IAAI,CAACD,WAAW,EAAE,OAAO,IAAI;EAEtE,oBACE4C,GAAA,CAACoB,YAAY,EAAA;IACXC,eAAe,EAAA,IAAA;AACfhE,IAAAA,YAAY,EAAE8D,mBAAmB,GAAG,KAAK,GAAG9D,YAAa;AACzDD,IAAAA,WAAW,EAAE+D,mBAAmB,GAAG,KAAK,GAAG/D,WAAY;AACvDH,IAAAA,eAAe,EAAEkE,mBAAoB;AACrCG,IAAAA,aAAa,EAAE;AACblB,MAAAA,KAAK,EAAEzE,CAAC,CAAC,qCAAqC,CAAC;AAC/C0E,MAAAA,IAAI,EAAE,WAAW;MACjBO,WAAW,EAAEjF,CAAC,CACZ,4DACF;KACA;AACF4F,IAAAA,YAAY,EAAE;AACZnB,MAAAA,KAAK,EAAEzE,CAAC,CAAC,oCAAoC,CAAC;AAC9C0E,MAAAA,IAAI,EAAE,UAAU;MAChBO,WAAW,EAAEjF,CAAC,CACZ,4DACF;KACA;AACF6F,IAAAA,eAAe,EAAE;AACfC,MAAAA,EAAE,EAAE,QAAQ;AACZpB,MAAAA,IAAI,EAAE,QAAQ;AACdD,MAAAA,KAAK,EAAEzE,CAAC,CAAC,wCAAwC,CAAC;AAClDiF,MAAAA,WAAW,EAAEjF,CAAC,CACZ,4DACF,CAAC;AACDD,MAAAA,QAAQ,EAAE;AACZ;AAAE,GACH,CAAC;AAEN,CAAC;;AChCD,IAAMgG,YAAY,GAAG,SAAfA,YAAYA,CAAAnE,IAAA,EAQZ;AAAA,EAAA,IAPJ8C,IAAI,GAAA9C,IAAA,CAAJ8C,IAAI;IACJsB,IAAI,GAAApE,IAAA,CAAJoE,IAAI;IACJC,UAAU,GAAArE,IAAA,CAAVqE,UAAU;IAAAC,qBAAA,GAAAtE,IAAA,CACVuE,gBAAgB;AAAhBA,IAAAA,gBAAgB,GAAAD,qBAAA,KAAA,MAAA,GAAG,EAAE,GAAAA,qBAAA;IACrBE,KAAK,GAAAxE,IAAA,CAALwE,KAAK;IAAAC,aAAA,GAAAzE,IAAA,CACL7B,QAAQ;AAARA,IAAAA,QAAQ,GAAAsG,aAAA,KAAA,MAAA,GAAG,KAAK,GAAAA,aAAA;IAChBC,MAAM,GAAA1E,IAAA,CAAN0E,MAAM;AAEN,EAAA,IAAAC,SAAA,GAAoDC,QAAQ,CAAC,KAAK,CAAC;IAAAC,UAAA,GAAAC,cAAA,CAAAH,SAAA,EAAA,CAAA,CAAA;AAA5DI,IAAAA,kBAAkB,GAAAF,UAAA,CAAA,CAAA,CAAA;AAAEG,IAAAA,qBAAqB,GAAAH,UAAA,CAAA,CAAA,CAAA;AAEhD,EAAA,IAAA5C,eAAA,GAAcC,cAAc,EAAE;IAAtB9D,CAAC,GAAA6D,eAAA,CAAD7D,CAAC;AAET,EAAA,IAAM6G,eAAe,GAAG,SAAlBA,eAAeA,CAAArE,KAAA,EAAgC;AAAA,IAAA,IAArBsE,IAAI,GAAAtE,KAAA,CAATuE,GAAG;MAAQC,QAAQ,GAAAxE,KAAA,CAARwE,QAAQ;IAC5C,IAAMC,eAAe,GAAGC,QAAQ,CAACC,aAAa,kBAAAnF,MAAA,CAAkB0C,IAAI,EAAA,GAAA,CAAG,CAAC;AACxE,IAAA,IAAM0C,UAAU,GACdT,kBAAkB,IAAIM,eAAe,GACjCA,eAAe,CAACI,YAAY,GAC5BrB,IAAI,CAACpF,MAAM;AAEjB,IAAA,IAAMwC,QAAQ,GAAG4D,QAAQ,GAAA,EAAA,CAAAhF,MAAA,CAAMgF,QAAQ,EAAA,GAAA,CAAA,CAAAhF,MAAA,CAAI8E,IAAI,CAAA,GAAKA,IAAI;IACxD,IAAMQ,cAAc,GAAG,CACrBtB,IAAI,CAACuB,KAAK,CAAC,CAAC,EAAEH,UAAU,CAAC,EAAA,KAAA,CAAApF,MAAA,CACnBoB,QAAQ,EAAA,IAAA,CAAA,EACd4C,IAAI,CAACuB,KAAK,CAACH,UAAU,CAAC,CACvB,CAACI,IAAI,CAAC,EAAE,CAAC;IACVvB,UAAU,CAACqB,cAAc,CAAC;EAC5B,CAAC;EAED,oBACEjD,GAAA,CAACS,OAAK,EAAA;AACEsB,IAAAA,KAAK,EAALA,KAAK;AAAE1B,IAAAA,IAAI,EAAJA,IAAI;AAAE4B,IAAAA,MAAM,EAANA,MAAM;AAAEvG,IAAAA,QAAQ,EAARA,QAAQ;IACnCiF,UAAU,EAAA,IAAA;AACVP,IAAAA,KAAK,EAAEzE,CAAC,CAAC,yCAAyC,CAAE;AACpDiF,IAAAA,WAAW,EAAEjF,CAAC,CAAC,+CAA+C,CAAE;AAChEE,IAAAA,KAAK,EAAE8F,IAAK;IACZyB,MAAM,eACJpD,GAAA,CAACqD,gBAAgB,EAAA;AACfC,MAAAA,WAAW,EAAE;AAAEnD,QAAAA,SAAS,EAAE;OAAQ;AAClCoD,MAAAA,SAAS,EAAEzB,gBAAiB;AAC5B0B,MAAAA,aAAa,EAAE;AACbrD,QAAAA,SAAS,EAAE,0CAA0C;AACrDsD,QAAAA,UAAU,EAAE;OACZ;AACFC,MAAAA,eAAe,EAAElB;AAAgB,KAClC,CACF;AACDlC,IAAAA,QAAQ,EAAEqD,oBAAoB,CAAC/B,UAAU,CAAE;IAC3CgC,OAAO,EAAE,SAATA,OAAOA,GAAA;MAAA,OAAQrB,qBAAqB,CAAC,IAAI,CAAC;AAAA,IAAA;AAAC,GAC5C,CAAC;AAEN,CAAC;;;;ACxCD,IAAMsB,SAAS,GAAG,SAAZA,SAASA,CAAAtG,IAAA,EAkBT;AAAA,EAAA,IAAAuG,qBAAA,GAAAvG,IAAA,CAjBJwG,gBAAgB;AAAhBA,IAAAA,gBAAgB,GAAAD,qBAAA,KAAA,MAAA,GAAG,EAAE,GAAAA,qBAAA;IAAAjC,qBAAA,GAAAtE,IAAA,CACrBuE,gBAAgB;AAAhBA,IAAAA,gBAAgB,GAAAD,qBAAA,KAAA,MAAA,GAAG,EAAE,GAAAA,qBAAA;IACrBmC,YAAY,GAAAzG,IAAA,CAAZyG,YAAY;IACZC,oBAAoB,GAAA1G,IAAA,CAApB0G,oBAAoB;IACpBC,SAAS,GAAA3G,IAAA,CAAT2G,SAAS;IACTC,iBAAiB,GAAA5G,IAAA,CAAjB4G,iBAAiB;IACjBC,gBAAgB,GAAA7G,IAAA,CAAhB6G,gBAAgB;IAChBC,cAAc,GAAA9G,IAAA,CAAd8G,cAAc;IAAAC,kBAAA,GAAA/G,IAAA,CACdgH,aAAa;AAAbA,IAAAA,aAAa,GAAAD,kBAAA,KAAA,MAAA,GAAG,EAAE,GAAAA,kBAAA;IAAAE,eAAA,GAAAjH,IAAA,CAClBkH,UAAU;AAAVA,IAAAA,UAAU,GAAAD,eAAA,KAAA,MAAA,GAAG,KAAK,GAAAA,eAAA;IAAAE,gBAAA,GAAAnH,IAAA,CAClBoH,WAAW;AAAXA,IAAAA,WAAW,GAAAD,gBAAA,KAAA,MAAA,GAAG,KAAK,GAAAA,gBAAA;IAAAE,eAAA,GAAArH,IAAA,CACnBsH,UAAU;AAAVA,IAAAA,UAAU,GAAAD,eAAA,KAAA,MAAA,GAAG,IAAI,GAAAA,eAAA;IAAAE,cAAA,GAAAvH,IAAA,CACjB4C,SAAS;AAATA,IAAAA,SAAS,GAAA2E,cAAA,KAAA,MAAA,GAAG,EAAE,GAAAA,cAAA;IAAAC,iBAAA,GAAAxH,IAAA,CACdyH,YAAY;AAAZA,IAAAA,YAAY,GAAAD,iBAAA,KAAA,MAAA,GAAGjI,aAAa,GAAAiI,iBAAA;IAC5BE,wBAAwB,GAAA1H,IAAA,CAAxB0H,wBAAwB;IAAAC,cAAA,GAAA3H,IAAA,CACxB4H,SAAS;AAATA,IAAAA,SAAS,GAAAD,cAAA,KAAA,MAAA,GAAG,IAAI,GAAAA,cAAA;IAAAE,kBAAA,GAAA7H,IAAA,CAChB8H,aAAa;AAAbA,IAAAA,aAAa,GAAAD,kBAAA,KAAA,MAAA,GAAG,EAAE,GAAAA,kBAAA;AAElB,EAAA,IAAA5F,eAAA,GAAcC,cAAc,EAAE;IAAtB9D,CAAC,GAAA6D,eAAA,CAAD7D,CAAC;AAET,EAAA,IAAA2J,WAAA,GAMIC,UAAU,CAACxI,gBAAgB,CAAC;IAL9BE,eAAe,GAAAqI,WAAA,CAAfrI,eAAe;IACfC,iBAAiB,GAAAoI,WAAA,CAAjBpI,iBAAiB;IACjBC,gBAAgB,GAAAmI,WAAA,CAAhBnI,gBAAgB;IAChBC,WAAW,GAAAkI,WAAA,CAAXlI,WAAW;IACXC,YAAY,GAAAiI,WAAA,CAAZjI,YAAY;AAGd,EAAA,IAAAqC,iBAAA,GAA6CC,gBAAgB,EAAE;IAAvDC,aAAa,GAAAF,iBAAA,CAAbE,aAAa;IAAE4F,MAAM,GAAA9F,iBAAA,CAAN8F,MAAM;IAAEC,SAAS,GAAA/F,iBAAA,CAAT+F,SAAS;AAExC,EAAA,IAAMC,gBAAgB,GAAAhH,eAAA,CAAAA,eAAA,KACjB8G,MAAM,CAAA,EAAA,EAAA,EAAA;AACTpK,IAAAA,OAAO,EAAE4D,mBAAmB,CAACwG,MAAM,CAACpK,OAAO;GAAC,CAC7C;AAED,EAAA,IAAMuK,uBAAuB,GAAAjH,eAAA,CAAAA,eAAA,KACxB2G,aAAa,CAAA,EAAA,EAAA,EAAA;IAChBjK,OAAO,EAAE4D,mBAAmB,CAACqG,aAAa,aAAbA,aAAa,KAAA,MAAA,GAAA,MAAA,GAAbA,aAAa,CAAEjK,OAAO;GAAC,CACrD;EAEDuK,uBAAuB,CAAC1K,OAAO,KAA/B0K,uBAAuB,CAAC1K,OAAO,GAAK2K,WAAW,CAACC,IAAI,CAAChJ,KAAK,CAAA;AAE1D,EAAA,IAAMiJ,QAAQ,GAAGC,MAAM,CAACL,gBAAgB,EAAEC,uBAAuB,CAAC;EAElE,IAAMK,kBAAkB,GAAG,CAAA5B,gBAAgB,KAAA,IAAA,IAAhBA,gBAAgB,KAAA,MAAA,GAAA,MAAA,GAAhBA,gBAAgB,CAAE9E,OAAO,KAAIiF,aAAa;EACrE,IAAM0B,oBAAoB,GACxBhJ,eAAe,IAAIC,iBAAiB,IAAI4C,UAAU,CAACkG,kBAAkB,CAAC;AAExE,EAAA,IAAM7E,mBAAmB,GAAGlE,eAAe,IAAI,CAACgJ,oBAAoB;AAEpE,EAAA,oBACEC,IAAA,CAAA,KAAA,EAAA;AACE,IAAA,aAAA,EAAY,YAAY;IACxB/F,SAAS,EAAEgG,UAAU,CACnB,+FAA+F,EAAA7H,eAAA,CAAA,EAAA,EAC5F6B,SAAS,EAAGA,SAAS,CAC1B,CAAE;AAAAiG,IAAAA,QAAA,gBAEFpG,GAAA,CAAA,KAAA,EAAA;AAAKG,MAAAA,SAAS,EAAC,aAAa;MAAAiG,QAAA,EACzBvB,UAAU,iBACTqB,IAAA,CAAA,KAAA,EAAA;AAAK/F,QAAAA,SAAS,EAAC,sDAAsD;AAAAiG,QAAAA,QAAA,EAAA,CAClEH,oBAAoB,iBACnBjG,GAAA,CAACqG,KAAK,EAAA;AACJlG,UAAAA,SAAS,EAAC,MAAM;AAChB,UAAA,aAAA,EAAY,YAAY;AACxBC,UAAAA,KAAK,EAAEzE,CAAC,CAAC,wCAAwC,CAAE;AACnDoE,UAAAA,UAAU,EAAE;AAAErE,YAAAA,QAAQ,EAAE;WAAO;AAC/B2E,UAAAA,IAAI,EAAC,UAAU;AAAA+F,UAAAA,QAAA,EAEdJ,kBAAkB,CAACM,GAAG,CAAC,UAAAnI,KAAA,EAAA;AAAA,YAAA,IAAGiC,KAAK,GAAAjC,KAAA,CAALiC,KAAK;cAAEvE,KAAK,GAAAsC,KAAA,CAALtC,KAAK;AAAA,YAAA,oBACrC0K,aAAA,CAACF,KAAK,CAACG,IAAI,EAAA;AAAOpG,cAAAA,KAAK,EAALA,KAAK;AAAEvE,cAAAA,KAAK,EAALA,KAAK;AAAI6G,cAAAA,GAAG,EAAE7G;AAAM,aAAE,CAAC;UAAA,CACjD;AAAC,SACG,CACR,eACDmE,GAAA,CAACkB,WAAW,EAAA;AACJ7D,UAAAA,YAAY,EAAZA,YAAY;AAAED,UAAAA,WAAW,EAAXA,WAAW;AAAE+D,UAAAA,mBAAmB,EAAnBA;AAAmB,SACrD,CAAC,EACDhE,gBAAgB,iBACf6C,GAAA,CAAA,KAAA,EAAA;AAAKG,UAAAA,SAAS,EAAC,+CAA+C;AAAAiG,UAAAA,QAAA,eAC5DpG,GAAA,CAACZ,YAAY,EAAAV,eAAA,CAAA;AAACY,YAAAA,OAAO,EAAE+E;AAAe,WAAA,EAAKF,iBAAiB,CAAG;AAAC,SAC7D,CACN,eACDnE,GAAA,CAACyG,KAAK,EAAA;AAACpG,UAAAA,IAAI,EAAC,SAAS;UAAA+F,QAAA,EAClB,SAAAA,QAAAA,CAAAM,KAAA,EAAA;AAAA,YAAA,IAAAC,WAAA,GAAAD,KAAA,CAAGE,KAAK;cAAI/K,KAAK,GAAA8K,WAAA,CAAL9K,KAAK;cAAEoG,MAAM,GAAA0E,WAAA,CAAN1E,MAAM;cAAA4E,UAAA,GAAAH,KAAA,CAAII,IAAI;cAAI/E,KAAK,GAAA8E,UAAA,CAAL9E,KAAK;cAAEgF,OAAO,GAAAF,UAAA,CAAPE,OAAO;AAAA,YAAA,oBAClD/G,GAAA,CAAA,KAAA,EAAA;AAAKG,cAAAA,SAAS,EAAC,sFAAsF;cAAAiG,QAAA,eACnGpG,GAAA,CAAC0B,YAAY,EAAA;AACLO,gBAAAA,MAAM,EAANA,MAAM;AAAEH,gBAAAA,gBAAgB,EAAhBA,gBAAgB;gBAC9BpG,QAAQ,EAAA,IAAA;gBACRqG,KAAK,EAAEgF,OAAO,IAAIhF,KAAK,GAAGpG,CAAC,CAACoG,KAAK,CAAC,GAAGiF,SAAU;AAC/C3G,gBAAAA,IAAI,EAAC,SAAS;AACdsB,gBAAAA,IAAI,EAAE9F,KAAM;AACZ+F,gBAAAA,UAAU,EAAE,SAAZA,UAAUA,CAAED,IAAI,EAAA;AAAA,kBAAA,OAAI/B,aAAa,CAAC,SAAS,EAAE+B,IAAI,CAAC;AAAA,gBAAA;eACnD;AAAC,aACC,CAAC;AAAA,UAAA;SAEH,CAAC,eACR3B,GAAA,CAAA,KAAA,EAAA;AACEG,UAAAA,SAAS,EAAC,+CAA+C;AACzD,UAAA,aAAA,EAAY,yBAAyB;UAAAiG,QAAA,eAErCpG,GAAA,CAACiH,YAAY,EAAA;YACXvL,QAAQ,EAAA,IAAA;AACRwL,YAAAA,MAAM,EAAElC,YAAa;AACrB,YAAA,aAAA,EAAY,qBAAqB;AACjCmC,YAAAA,iBAAiB,EAAE,KAAM;AACzB1F,YAAAA,EAAE,EAAC,cAAc;AACjB2F,YAAAA,QAAQ,EAAC,OAAO;AAChB/G,YAAAA,IAAI,EAAC,SAAS;AACdO,YAAAA,WAAW,EAAEjF,CAAC,CAAC,+CAA+C,CAAE;AAChE0L,YAAAA,GAAG,EAAElC,SAAU;AACf5B,YAAAA,SAAS,EAAEQ,gBAAiB;AAC5BuD,YAAAA,YAAY,EAAE,SAAdA,YAAYA,CAAGC,SAAS,EAAEC,SAAS,EAAA;cAAA,OACjCC,aAAa,CAACF,SAAS,CAAChE,SAAS,EAAEiE,SAAS,CAACjE,SAAS,CAAC;AAAA,YAAA;WAE1D;AAAC,SACC,CAAC;OACH;KAEJ,CAAC,eACN2C,IAAA,CAAA,KAAA,EAAA;AAAK/F,MAAAA,SAAS,EAAC,8HAA8H;MAAAiG,QAAA,EAAA,cAC3IpG,GAAA,CAAC0H,WAAW,EAAA;AACVC,QAAAA,iBAAiB,EAAE;AAAEC,UAAAA,OAAO,EAAE5D;SAAe;QAC7C6D,YAAY,EAAE3D,SAAS,IAAIO;AAAW,OACvC,CAAC,EACDQ,wBAAwB,iBACvBjF,GAAA,CAAA,KAAA,EAAA;AAAKG,QAAAA,SAAS,EAAC,gCAAgC;QAAAiG,QAAA,eAC7CpG,GAAA,CAAC8H,MAAM,EAAA;AACChC,UAAAA,QAAQ,EAARA,QAAQ;AACd,UAAA,aAAA,EAAY,yBAAyB;AACrC1F,UAAAA,KAAK,EAAEzE,CAAC,CAAC,gDAAgD,CAAE;AAC3DoM,UAAAA,OAAO,EAAEpD,WAAY;AACrBqD,UAAAA,KAAK,EAAC,UAAU;AAChBJ,UAAAA,OAAO,EAAE,SAATA,OAAOA,GAAQ;AACbnC,YAAAA,SAAS,EAAE;AACXxB,YAAAA,oBAAoB,EAAE;AACxB,UAAA;SACD;AAAC,OACC,CACN;AAAA,KACE,CAAC;AAAA,GACH,CAAC;AAEV;;;;;;;ACrJA,IAAMgE,kBAAkB,GAAG,SAArBA,kBAAkBA,CAAA1K,IAAA,EAoBlB;AAAA,EAAA,IAAA2K,aAAA,GAAA3K,IAAA,CAnBJ4K,QAAQ;AAARA,IAAAA,QAAQ,GAAAD,aAAA,KAAA,MAAA,GAAGE,IAAI,GAAAF,aAAA;IAAAG,kBAAA,GAAA9K,IAAA,CACf+K,aAAa;AAAbA,IAAAA,aAAa,GAAAD,kBAAA,KAAA,MAAA,GAAGzN,mBAAmB,GAAAyN,kBAAA;IACnCjC,SAAQ,GAAA7I,IAAA,CAAR6I,QAAQ;IACRmC,WAAW,GAAAhL,IAAA,CAAXgL,WAAW;IACXC,gBAAgB,GAAAjL,IAAA,CAAhBiL,gBAAgB;IAAAC,oBAAA,GAAAlL,IAAA,CAChBN,eAAe;AAAfA,IAAAA,eAAe,GAAAwL,oBAAA,KAAA,MAAA,GAAG,KAAK,GAAAA,oBAAA;IAAAC,qBAAA,GAAAnL,IAAA,CACvBJ,gBAAgB;AAAhBA,IAAAA,gBAAgB,GAAAuL,qBAAA,KAAA,MAAA,GAAG,KAAK,GAAAA,qBAAA;IAAAC,qBAAA,GAAApL,IAAA,CACxBL,iBAAiB;AAAjBA,IAAAA,iBAAiB,GAAAyL,qBAAA,KAAA,MAAA,GAAG,KAAK,GAAAA,qBAAA;IAAAC,oBAAA,GAAArL,IAAA,CACzBsL,eAAe;AAAfA,IAAAA,eAAe,GAAAD,oBAAA,KAAA,MAAA,GAAG,IAAI,GAAAA,oBAAA;IAAAE,gBAAA,GAAAvL,IAAA,CACtBH,WAAW;AAAXA,IAAAA,WAAW,GAAA0L,gBAAA,KAAA,MAAA,GAAG,KAAK,GAAAA,gBAAA;IAAAC,iBAAA,GAAAxL,IAAA,CACnBF,YAAY;AAAZA,IAAAA,YAAY,GAAA0L,iBAAA,KAAA,MAAA,GAAG,KAAK,GAAAA,iBAAA;IAAAC,cAAA,GAAAzL,IAAA,CACpB2G,SAAS;AAATA,IAAAA,SAAS,GAAA8E,cAAA,KAAA,MAAA,GAAG,KAAK,GAAAA,cAAA;IAAAC,cAAA,GAAA1L,IAAA,CACjBvB,SAAS;AAATA,IAAAA,SAAS,GAAAiN,cAAA,KAAA,MAAA,GAAG,EAAE,GAAAA,cAAA;IAAAC,mBAAA,GAAA3L,IAAA,CACd4L,cAAc;AAAdA,IAAAA,cAAc,GAAAD,mBAAA,KAAA,MAAA,GAAG,EAAE,GAAAA,mBAAA;IAAAE,qBAAA,GAAA7L,IAAA,CACnB8L,iBAAiB;AAAjBA,IAAAA,iBAAiB,GAAAD,qBAAA,KAAA,MAAA,GAAG,EAAE,GAAAA,qBAAA;IAAAE,gBAAA,GAAA/L,IAAA,CACtBgM,WAAW;AAAXA,IAAAA,WAAW,GAAAD,gBAAA,KAAA,MAAA,GAAG,EAAE,GAAAA,gBAAA;IAAAE,iBAAA,GAAAjM,IAAA,CAChBkM,YAAY;AAAZA,IAAAA,YAAY,GAAAD,iBAAA,KAAA,MAAA,GAAG,EAAE,GAAAA,iBAAA;IAAAE,gBAAA,GAAAnM,IAAA,CACjBoM,WAAW;AAAXA,IAAAA,WAAW,GAAAD,gBAAA,KAAA,MAAA,GAAG,EAAE,GAAAA,gBAAA;IAAAE,qBAAA,GAAArM,IAAA,CAChBsM,kBAAkB;AAAlBA,IAAAA,kBAAkB,GAAAD,qBAAA,KAAA,MAAA,GAAG,EAAE,GAAAA,qBAAA;AAEvB,EAAA,IAAQE,UAAU,GAChBT,iBAAiB,CADXS,UAAU;IAAEC,aAAa,GAC/BV,iBAAiB,CADCU,aAAa;IAAEC,aAAa,GAC9CX,iBAAiB,CADgBW,aAAa;IAAElI,gBAAgB,GAChEuH,iBAAiB,CAD+BvH,gBAAgB;AAGlE,EAAA,IAAMmI,gBAAgB,GAAG,SAAnBA,gBAAgBA,CAAGzE,MAAM,EAAA;AAAA,IAAA,OAAI0E,OAAO,CAACP,WAAW,CAAC,IAAInE,MAAM,CAACnK,SAAS;AAAA,EAAA,CAAA;EAE3E,oBACE2E,GAAA,CAACmK,iBAAiB,EAAA;AAEd5B,IAAAA,WAAW,EAAXA,WAAW;AACXD,IAAAA,aAAa,EAAbA,aAAa;AACbtM,IAAAA,SAAS,EAATA,SAAS;AACTmM,IAAAA,QAAQ,EAARA,QAAQ;AACR9K,IAAAA,YAAY,EAAZA,YAAY;AACZD,IAAAA,WAAW,EAAXA,WAAW;AACXD,IAAAA,gBAAgB,EAAhBA,gBAAgB;AAChBD,IAAAA,iBAAiB,EAAjBA,iBAAiB;AACjBD,IAAAA,eAAe,EAAfA,eAAe;AACfuL,IAAAA,gBAAgB,EAAhBA,gBAAgB;IAAApC,QAAA,EAGjB,SAAAA,QAAAA,CAAAjI,KAAA,EAAA;AAAA,MAAA,IAAAiM,cAAA;AAAA,MAAA,IAAG5E,MAAM,GAAArH,KAAA,CAANqH,MAAM;QAAEqC,YAAY,GAAA1J,KAAA,CAAZ0J,YAAY;AAAA,MAAA,oBACtB3B,IAAA,CAAA,KAAA,EAAA;AAAK/F,QAAAA,SAAS,EAAC,sFAAsF;AAAAiG,QAAAA,QAAA,gBACnGF,IAAA,CAAA,KAAA,EAAA;AAAK/F,UAAAA,SAAS,EAAC,yHAAyH;AAAAiG,UAAAA,QAAA,GACrIyC,eAAe,iBAAI7I,GAAA,CAACqK,eAAe,IAAE,CAAC,EACtCvK,UAAU,CAACyJ,WAAW,CAAC,iBACtBvJ,GAAA,CAACsK,MAAM,EAAA5L,eAAA,CAAA;AAACyB,YAAAA,SAAS,EAAC,MAAM;AAACU,YAAAA,IAAI,EAAC;WAAO,EAAK0I,WAAW,CAAG,CACzD,EACAzJ,UAAU,CAAC6J,WAAW,CAAC,iBACtB3J,GAAA,CAAA,KAAA,EAAA;AAAKG,YAAAA,SAAS,EAAC,kDAAkD;AAAAiG,YAAAA,QAAA,eAC/DpG,GAAA,CAACuK,OAAO,EAAA7L,eAAA,CAAAA,eAAA,CAAA;cACNoH,QAAQ,EAAE,EAAC6D,WAAW,KAAA,IAAA,IAAXA,WAAW,KAAA,MAAA,IAAXA,WAAW,CAAE7D,QAAQ,CAAC;AACjC0E,cAAAA,QAAQ,EAAC;AAAK,aAAA,EACVf,YAAY,CAAA,EAAA,EAAA,EAAA;AAAArD,cAAAA,QAAA,eAEhBpG,GAAA,CAAA,KAAA,EAAA;AAAKG,gBAAAA,SAAS,EAAC,yBAAyB;AAAAiG,gBAAAA,QAAA,eACtCpG,GAAA,CAACyK,MAAM,EAAA/L,eAAA,CAAA;AACL,kBAAA,aAAA,EAAY,QAAQ;AACpB2B,kBAAAA,IAAI,EAAC;AAAW,iBAAA,EACZsJ,WAAW,CAChB;eACE;aAAC,CACC;AAAC,WACP,CACN,EACAM,gBAAgB,CAACzE,MAAM,CAAC,IAAIY,SAAQ,eACrCpG,GAAA,CAAC6D,SAAS,EAAAnF,eAAA,CAAA;YACRwF,SAAS,EAAE2D,YAAY,IAAI3D,SAAU;YACrCO,UAAU,EAAEoD,YAAY,IAAI3D,SAAU;YACtCW,UAAU,EAAEoF,gBAAgB,CAACzE,MAAM;WAAE,EACjC2D,cAAc,CACnB,CAAC;SACC,CAAC,EACLc,gBAAgB,CAACzE,MAAM,CAAC,iBACvBxF,GAAA,CAAC0K,mBAAmB,EAAAhM,eAAA,CAAA;AAClByB,UAAAA,SAAS,EAAC;SAAW,EACjB0J,kBAAkB,CACvB,CACF,EACAI,gBAAgB,CAACzE,MAAM,CAAC,iBACvBxF,GAAA,CAAA,KAAA,EAAA;AAAKG,UAAAA,SAAS,EAAC,sHAAsH;AAAAiG,UAAAA,QAAA,eACnIpG,GAAA,CAAC2K,YAAY,EAAAjM,eAAA,CAAA;YACXkM,IAAI,EAAE/L,cAAc,CAAC2G,MAAM,CAACpK,OAAO,EAAE0O,UAAU,EAAEE,aAAa,CAAE;YAChEa,IAAI,EAAErF,MAAM,CAACsF,QAAS;YACtBC,EAAE,EAAEC,KAAK,CAAC,OAAO,GAAAZ,cAAA,GAAE5E,MAAM,KAAA,IAAA,IAANA,MAAM,uBAANA,MAAM,CAAE3K,MAAM,MAAA,IAAA,IAAAuP,cAAA,cAAAA,cAAA,GAAI,EAAE,CAAE;YACzCjP,OAAO,EAAE0D,cAAc,CACrB2G,MAAM,CAACrK,OAAO,EACd4O,aAAa,EACbjI,gBACF;AAAE,WAAA,EACEuH,iBAAiB,CACtB;AAAC,SACC,CACN;AAAA,OACE,CAAC;AAAA,IAAA;AACP,GACgB,CAAC;AAExB;;;;ACvGA,IAAMc,iBAAiB,GAAG,SAApBA,iBAAiBA,CAAA5M,IAAA,EAAA;AAAA,EAAA,IAAA2K,aAAA,GAAA3K,IAAA,CACrB4K,QAAQ;AAARA,IAAAA,QAAQ,GAAAD,aAAA,KAAA,MAAA,GAAGE,IAAI,GAAAF,aAAA;IAAAG,kBAAA,GAAA9K,IAAA,CACf+K,aAAa;AAAbA,IAAAA,aAAa,GAAAD,kBAAA,KAAA,MAAA,GAAGzN,mBAAmB,GAAAyN,kBAAA;IACnCjC,QAAQ,GAAA7I,IAAA,CAAR6I,QAAQ;IACRmC,WAAW,GAAAhL,IAAA,CAAXgL,WAAW;IAAA0C,qBAAA,GAAA1N,IAAA,CACXiL,gBAAgB;AAAEhL,IAAAA,iBAAiB,GAAAyN,qBAAA,KAAA,MAAA,GAAG,EAAE,GAAAA,qBAAA;IAAAxC,oBAAA,GAAAlL,IAAA,CACxCN,eAAe;AAAfA,IAAAA,eAAe,GAAAwL,oBAAA,KAAA,MAAA,GAAG,KAAK,GAAAA,oBAAA;IAAAC,qBAAA,GAAAnL,IAAA,CACvBJ,gBAAgB;AAAhBA,IAAAA,gBAAgB,GAAAuL,qBAAA,KAAA,MAAA,GAAG,KAAK,GAAAA,qBAAA;IAAAC,qBAAA,GAAApL,IAAA,CACxBL,iBAAiB;AAAjBA,IAAAA,iBAAiB,GAAAyL,qBAAA,KAAA,MAAA,GAAG,KAAK,GAAAA,qBAAA;IAAAG,gBAAA,GAAAvL,IAAA,CACzBH,WAAW;AAAXA,IAAAA,WAAW,GAAA0L,gBAAA,KAAA,MAAA,GAAG,KAAK,GAAAA,gBAAA;IAAAC,iBAAA,GAAAxL,IAAA,CACnBF,YAAY;AAAZA,IAAAA,YAAY,GAAA0L,iBAAA,KAAA,MAAA,GAAG,KAAK,GAAAA,iBAAA;IAAAE,cAAA,GAAA1L,IAAA,CACpBvB,SAAS;AAATA,IAAAA,SAAS,GAAAiN,cAAA,KAAA,MAAA,GAAG,EAAE,GAAAA,cAAA;AAAA,EAAA,oBAEdjJ,GAAA,CAAA,KAAA,EAAA;AACEG,IAAAA,SAAS,EAAC,wCAAwC;AAClD,IAAA,aAAA,EAAY,qBAAqB;AAAAiG,IAAAA,QAAA,eAEjCpG,GAAA,CAACjD,gBAAgB,CAACmO,QAAQ,EAAA;AACxBrP,MAAAA,KAAK,EAAE;AACLoB,QAAAA,eAAe,EAAfA,eAAe;AACfC,QAAAA,iBAAiB,EAAjBA,iBAAiB;AACjBC,QAAAA,gBAAgB,EAAhBA,gBAAgB;AAChBC,QAAAA,WAAW,EAAXA,WAAW;AACXC,QAAAA,YAAY,EAAZA;OACA;MAAA+I,QAAA,eAEFpG,GAAA,CAACmL,IAAI,EAAA;AACHhL,QAAAA,SAAS,EAAC,wCAAwC;AAClDoI,QAAAA,WAAW,EAAA7J,aAAA,CAAA;AACT0M,UAAAA,kBAAkB,EAAE,IAAI;UACxB5C,gBAAgB,EAAElL,mBAAmB,CAAC;AACpCL,YAAAA,eAAe,EAAfA,eAAe;AACfE,YAAAA,gBAAgB,EAAhBA,gBAAgB;AAChBD,YAAAA,iBAAiB,EAAjBA,iBAAiB;AACjBM,YAAAA,iBAAiB,EAAjBA,iBAAiB;AACjBxB,YAAAA,SAAS,EAATA;AACF,WAAC,CAAC;AACFsM,UAAAA,aAAa,EAAA5J,aAAA,CAAAA,aAAA,KACR4J,aAAa,CAAA,EAAA,EAAA,EAAA;YAChBrN,OAAO,EAAEqN,aAAa,CAACrN,OAAO,IAAI2K,WAAW,CAACC,IAAI,CAAChJ;WAAK,CACzD;AACDsL,UAAAA,QAAQ,EAARA;AAAQ,SAAA,EACLI,WAAW,CACd;AAAAnC,QAAAA,QAAA,EAEDA;OACG;KACmB;AAAC,GACzB,CAAC;AAAA;;;;"}
|
|
1
|
+
{"version":3,"file":"EmailForm.js","sources":["../src/components/EmailForm/constants.js","../src/components/EmailForm/contexts/EmailForm.js","../src/components/EmailForm/utils.js","../src/components/EmailForm/ReplyToField.jsx","../src/components/EmailForm/SendToField.jsx","../src/components/EmailForm/SubjectField.jsx","../src/components/EmailForm/EmailForm.jsx","../src/components/EmailForm/EmailFormComponent/index.jsx","../src/components/EmailForm/EmailFormProvider.jsx"],"sourcesContent":["import { t } from \"i18next\";\nimport { isEditorEmpty } from \"neetoeditor\";\nimport { prop } from \"ramda\";\nimport * as yup from \"yup\";\n\nexport const INITIAL_FORM_VALUES = {\n sendTo: [],\n sendToId: \"\",\n sendToCc: [],\n sendToBcc: [],\n replyTo: \"\",\n showCopyEmails: false,\n subject: \"\",\n message: \"\",\n isEnabled: false,\n};\n\nexport const EMAIL_FORM_VALIDATION_SCHEMA = yup.object({\n subject: yup\n .string()\n .required(t(\"neetoMolecules.emailForm.errors.subjectRequired\")),\n message: yup\n .string()\n .test(\n \"message\",\n t(\"neetoMolecules.emailForm.errors.messageRequired\"),\n value => !isEditorEmpty(value)\n ),\n});\n\nexport const sendToFieldValidation = maxEmails => {\n const validation = yup\n .array()\n .test(\n \"all-emails-valid\",\n t(\"neetoMolecules.emailForm.errors.invalidEmailAddress\"),\n emails => emails?.every(prop(\"valid\"))\n )\n .test(\n \"max-email-count\",\n t(\"neetoMolecules.emailForm.errors.maxEmails\", { count: maxEmails }),\n emails => emails?.length <= maxEmails\n );\n\n return yup.object({\n sendTo: validation\n .min(\n 1,\n t(\"neetoMolecules.emailForm.errors.required\", {\n entity: t(\"neetoMolecules.emailForm.fields.sendToEmailAddress\"),\n })\n )\n .nullable(),\n sendToCc: validation,\n sendToBcc: validation,\n });\n};\n\nexport const SEND_TO_ID_FIELD_VALIDATION = yup.object({\n sendToId: yup.string().required(\n t(\"neetoMolecules.emailForm.errors.required\", {\n entity: t(\"neetoMolecules.emailForm.labels.sendTo\"),\n })\n ),\n});\n\nexport const REPLY_TO_FIELD_VALIDATION = yup.object({\n replyTo: yup\n .string()\n .nullable()\n .email(t(\"neetoMolecules.emailForm.errors.invalidEmailAddress\"))\n .required(\n t(\"neetoMolecules.emailForm.errors.required\", {\n entity: t(\"neetoMolecules.emailForm.fields.replyToEmailAddress\"),\n })\n ),\n});\n\nexport const EDITOR_ADDONS = [\n \"highlight\",\n \"emoji\",\n \"code-block\",\n \"block-quote\",\n \"image-upload\",\n \"divider\",\n \"video-embed\",\n];\n\nexport const ALLOWED_FILE_PICKER_TYPES = [\".csv\"];\n","/* eslint-disable @bigbinary/neeto/use-zustand-for-global-state-management */\nimport { createContext } from \"react\";\n\nconst EmailFormContext = createContext({\n showSendToField: false,\n showSendToAsRadio: false,\n showReplyToField: false,\n showCcField: false,\n showBccField: false,\n});\n\nexport { EmailFormContext };\n","import { t } from \"i18next\";\nimport { isPresent } from \"neetocist\";\n\nimport {\n EMAIL_FORM_VALIDATION_SCHEMA,\n REPLY_TO_FIELD_VALIDATION,\n sendToFieldValidation,\n SEND_TO_ID_FIELD_VALIDATION,\n} from \"./constants\";\n\nexport const getValidationSchema = ({\n showSendToField,\n showReplyToField,\n showSendToAsRadio,\n customValidations,\n maxEmails,\n}) => {\n let schema = EMAIL_FORM_VALIDATION_SCHEMA.clone();\n\n if (showSendToField) {\n schema = schema.concat(\n showSendToAsRadio\n ? SEND_TO_ID_FIELD_VALIDATION\n : sendToFieldValidation(maxEmails)\n );\n }\n\n if (showReplyToField) schema = schema.concat(REPLY_TO_FIELD_VALIDATION);\n\n const isYupObject = customValidations.type === \"object\";\n\n if (isYupObject) {\n const customFields = customValidations.fields || {};\n schema = schema.shape(customFields);\n } else if (typeof customValidations === \"object\") {\n schema = schema.shape(customValidations);\n }\n\n return schema;\n};\n\nexport const getReplyToFieldLabelProps = ({ popoverProps }) => ({\n helpIconProps: {\n [\"data-testid\"]: \"reply-to-tooltip\",\n tooltipProps: !isPresent(popoverProps) && {\n content: t(\"neetoMolecules.emailForm.tooltips.replyTo\"),\n touch: [\"hold\", 500],\n },\n popoverProps: isPresent(popoverProps) && {\n ...popoverProps,\n appendTo: \"parent\",\n description:\n popoverProps.description ||\n t(\"neetoMolecules.emailForm.tooltips.replyTo\"),\n },\n },\n});\n\nexport const resolveContent = (content, func, variable) => {\n if (typeof func === \"function\") {\n return func(content, variable);\n }\n\n return content;\n};\n\nexport const normalizeHtmlString = str => {\n if (typeof str !== \"string\") return str;\n\n return str\n .replace(/\\uFEFF/g, \"\")\n .replace(/\\r\\n|\\r/g, \"\\n\")\n .replace(/ /g, \" \")\n .replace(/[\\t ]+/g, \" \")\n .replace(/\\s*\\n\\s*/g, \"\\n\")\n .replace(/\\n+/g, \"\\n\")\n .replace(/>\\s+</g, \"><\")\n .trim();\n};\n","import { useFormikContext } from \"formik\";\nimport { isNotEmpty } from \"neetocist\";\nimport { Select, Input } from \"neetoui/formik\";\nimport { useTranslation } from \"react-i18next\";\n\nimport { getReplyToFieldLabelProps } from \"./utils\";\n\nconst ReplyToField = ({ options = [], popoverProps = {} }) => {\n const { t } = useTranslation();\n const { setFieldValue } = useFormikContext();\n\n const isDropdownField = isNotEmpty(options);\n const labelProps = getReplyToFieldLabelProps({ popoverProps });\n\n if (isDropdownField) {\n return (\n <Select\n {...{ labelProps, options }}\n isClearable\n className=\"w-full\"\n data-testid=\"reply-to-select-field\"\n label={t(\"neetoMolecules.emailForm.labels.replyTo\")}\n name=\"replyTo\"\n onChange={data => setFieldValue(\"replyTo\", data?.value ?? \"\")}\n />\n );\n }\n\n return (\n <Input\n {...{ labelProps }}\n autoFocus\n nakedInput\n required\n className=\"w-full\"\n data-testid=\"reply-to-input-field\"\n label={t(\"neetoMolecules.emailForm.labels.replyTo\")}\n name=\"replyTo\"\n placeholder={t(\"neetoMolecules.emailForm.placeholders.emailPlaceholder\")}\n size=\"large\"\n onChange={event =>\n setFieldValue(\"replyTo\", event.target.value?.toLowerCase())\n }\n />\n );\n};\n\nexport default ReplyToField;\n","import { useTranslation } from \"react-i18next\";\n\nimport SendToFields from \"components/SendToFields\";\n\nconst SendToField = ({ showBccField, showCcField, showSendToTextField }) => {\n const { t } = useTranslation();\n\n if (!showSendToTextField && !showBccField && !showCcField) return null;\n\n return (\n <SendToFields\n showCcBccButton\n showBccField={showSendToTextField ? false : showBccField}\n showCcField={showSendToTextField ? false : showCcField}\n showSendToField={showSendToTextField}\n bccInputProps={{\n label: t(\"neetoMolecules.emailForm.labels.bCc\"),\n name: \"sendToBcc\",\n placeholder: t(\n \"neetoMolecules.emailForm.placeholders.commaSeparatedEmails\"\n ),\n }}\n ccInputProps={{\n label: t(\"neetoMolecules.emailForm.labels.cc\"),\n name: \"sendToCc\",\n placeholder: t(\n \"neetoMolecules.emailForm.placeholders.commaSeparatedEmails\"\n ),\n }}\n emailInputProps={{\n id: \"sendTo\",\n name: \"sendTo\",\n label: t(\"neetoMolecules.emailForm.labels.sendTo\"),\n placeholder: t(\n \"neetoMolecules.emailForm.placeholders.commaSeparatedEmails\"\n ),\n required: true,\n }}\n />\n );\n};\n\nexport default SendToField;\n","import { useState } from \"react\";\n\nimport { withEventTargetValue } from \"neetocommons/utils/general\";\nimport { Input } from \"neetoui\";\nimport { useTranslation } from \"react-i18next\";\n\nimport DynamicVariables from \"components/DynamicVariables\";\n\nconst SubjectField = ({\n name,\n text,\n updateText,\n subjectVariables = [],\n error,\n required = false,\n onBlur,\n}) => {\n const [isFieldFocusedOnce, setIsFieldFocusedOnce] = useState(false);\n\n const { t } = useTranslation();\n\n const tagClickHandler = ({ key: slug, category }) => {\n const textAreaElement = document.querySelector(`textarea[name=${name}]`);\n const splitIndex =\n isFieldFocusedOnce && textAreaElement\n ? textAreaElement.selectionEnd\n : text.length;\n\n const variable = category ? `${category}.${slug}` : slug;\n const updatedSubject = [\n text.slice(0, splitIndex),\n ` {{${variable}}}`,\n text.slice(splitIndex),\n ].join(\"\");\n updateText(updatedSubject);\n };\n\n return (\n <Input\n {...{ error, name, onBlur, required }}\n nakedInput\n label={t(\"neetoMolecules.emailForm.labels.subject\")}\n placeholder={t(\"neetoMolecules.emailForm.placeholders.subject\")}\n value={text}\n suffix={\n <DynamicVariables\n buttonProps={{ className: \"m-1\" }}\n variables={subjectVariables}\n dropdownProps={{\n className: \"neeto-ui-dropdown__popup overflow-y-auto\",\n buttonSize: \"small\",\n }}\n onVariableClick={tagClickHandler}\n />\n }\n onChange={withEventTargetValue(updateText)}\n onFocus={() => setIsFieldFocusedOnce(true)}\n />\n );\n};\n\nexport default SubjectField;\n","import { useContext } from \"react\";\n\nimport classnames from \"classnames\";\nimport { Field, useFormikContext } from \"formik\";\nimport { notEqualsDeep, isNotEmpty } from \"neetocist\";\nimport { FormikEditor } from \"neetoeditor\";\nimport { Button } from \"neetoui\";\nimport { ActionBlock, Radio } from \"neetoui/formik\";\nimport PropTypes from \"prop-types\";\nimport { equals } from \"ramda\";\nimport { useTranslation } from \"react-i18next\";\n\nimport { EDITOR_ADDONS } from \"./constants\";\nimport { EmailFormContext } from \"./contexts/EmailForm\";\nimport ReplyToField from \"./ReplyToField\";\nimport SendToField from \"./SendToField\";\nimport SubjectField from \"./SubjectField\";\nimport { normalizeHtmlString } from \"./utils\";\n\nconst EmailForm = ({\n messageVariables = [],\n subjectVariables = [],\n handleCancel,\n handleResetToDefault,\n isLoading,\n replyToFieldProps,\n sendToFieldProps,\n replyToOptions,\n sendToOptions = [],\n isUpdating = false,\n isResetting = false,\n showFields = true,\n className = \"\",\n editorAddons = EDITOR_ADDONS,\n showResetToDefaultButton,\n editorRef = null,\n defaultValues = {},\n}) => {\n const { t } = useTranslation();\n\n const {\n showSendToField,\n showSendToAsRadio,\n showReplyToField,\n showCcField,\n showBccField,\n } = useContext(EmailFormContext);\n\n const { setFieldValue, values, resetForm } = useFormikContext();\n\n const normalizedValues = {\n ...values,\n message: normalizeHtmlString(values.message),\n };\n\n const normalizedDefaultValues = {\n ...defaultValues,\n message: normalizeHtmlString(defaultValues?.message),\n };\n\n normalizedDefaultValues.replyTo ||= globalProps.user.email;\n\n const disabled = equals(normalizedValues, normalizedDefaultValues);\n\n const sendToFieldOptions = sendToFieldProps?.options || sendToOptions;\n const showSendToRadioField =\n showSendToField && showSendToAsRadio && isNotEmpty(sendToFieldOptions);\n\n const showSendToTextField = showSendToField && !showSendToRadioField;\n\n return (\n <div\n data-testid=\"email-form\"\n className={classnames(\n \"neeto-notification-email-wrapper__form-container flex flex-1 flex-col items-start gap-2 !pb-0\",\n { [className]: className }\n )}\n >\n <div className=\"w-full grow\">\n {showFields && (\n <div className=\"flex w-full flex-col items-start justify-start gap-5\">\n {showSendToRadioField && (\n <Radio\n className=\"pb-2\"\n data-testid=\"send-to-id\"\n label={t(\"neetoMolecules.emailForm.labels.sendTo\")}\n labelProps={{ required: true }}\n name=\"sendToId\"\n >\n {sendToFieldOptions.map(({ label, value }) => (\n <Radio.Item {...{ label, value }} key={value} />\n ))}\n </Radio>\n )}\n <SendToField\n {...{ showBccField, showCcField, showSendToTextField }}\n />\n {showReplyToField && (\n <div className=\"neeto-ui-border-gray-200 w-full border-b pb-1\">\n <ReplyToField options={replyToOptions} {...replyToFieldProps} />\n </div>\n )}\n <Field name=\"subject\">\n {({ field: { value, onBlur }, meta: { error, touched } }) => (\n <div className=\"neeto-notification-email-subject-block neeto-ui-border-gray-200 w-full border-b pb-1\">\n <SubjectField\n {...{ onBlur, subjectVariables }}\n required\n error={touched && error ? t(error) : undefined}\n name=\"subject\"\n text={value}\n updateText={text => setFieldValue(\"subject\", text)}\n />\n </div>\n )}\n </Field>\n <div\n className=\"neeto-notification-email-message-block w-full\"\n data-testid=\"message-input-container\"\n >\n <FormikEditor\n required\n addons={editorAddons}\n data-testid=\"message-input-field\"\n hideSlashCommands={false}\n id=\"form_message\"\n menuType=\"fixed\"\n name=\"message\"\n placeholder={t(\"neetoMolecules.emailForm.placeholders.message\")}\n ref={editorRef}\n variables={messageVariables}\n shouldUpdate={(nextProps, prevProps) =>\n notEqualsDeep(nextProps.variables, prevProps.variables)\n }\n />\n </div>\n </div>\n )}\n </div>\n <div className=\"neeto-ui-bg-white neeto-notification-email-wrapper__action-block z-10 flex w-full justify-between py-6 lg:sticky lg:bottom-0\">\n <ActionBlock\n cancelButtonProps={{ onClick: handleCancel }}\n isSubmitting={isLoading || isUpdating}\n />\n {showResetToDefaultButton && (\n <div className=\"neeto-ui-action-block__wrapper\">\n <Button\n {...{ disabled }}\n data-testid=\"reset-to-default-button\"\n label={t(\"neetoMolecules.emailForm.labels.resetToDefault\")}\n loading={isResetting}\n style=\"tertiary\"\n onClick={() => {\n resetForm();\n handleResetToDefault();\n }}\n />\n </div>\n )}\n </div>\n </div>\n );\n};\n\nEmailForm.propTypes = {\n /**\n * This is an array of objects used for templating within the message field. Each object in the array has a **label** and a **key**.\n */\n messageVariables: PropTypes.array,\n /**\n * This is an array of objects used for templating within the subject field. Each object in the array has a **label** and a **key**.\n */\n subjectVariables: PropTypes.array,\n /**\n * This function that gets triggered when the 'Cancel' button is clicked.\n */\n handleCancel: PropTypes.func,\n /**\n * This function that gets triggered when the 'Reset to default' button is clicked.\n */\n handleResetToDefault: PropTypes.func,\n /**\n * This Boolean value, when set to true, triggers the display of a loading indicator on the 'Save changes' button.\"\n */\n isLoading: PropTypes.bool,\n /**\n * This Boolean value, when set to true, triggers the display of a loading indicator on the 'Reset to default' button.\n */\n isResetting: PropTypes.bool,\n /**\n * An array of objects, with each object having **label** and **value** properties. This prop transforms the 'Reply To' field into a dropdown menu with given options. Without this prop, 'Reply To' will be a text input field.\n */\n replyToOptions: PropTypes.array,\n /**\n * An array of objects, with each object having **label** and **value** properties. This prop transforms the 'Send To' field into a radio group with given options. Without this prop, 'Send To' will be a multi email input field.\n */\n sendToOptions: PropTypes.array,\n /**\n * A Boolean flag indicating whether an update operation is currently in progress. When set to `true`, the 'Save changes' button is disabled.\n */\n isUpdating: PropTypes.bool,\n /**\n * To provide additional classnames to the button.\n */\n className: PropTypes.string,\n /**\n * To provide props to the replyToField. Supports options that will\n * be rendered as the reply to options and popover props.\n */\n replyToFieldProps: PropTypes.object,\n /**\n * To provide props to the sendToField. Supports sendTo options.\n */\n sendToFieldProps: PropTypes.object,\n /**\n * This Boolean value, when set to true, shows reset to default button.\n */\n showResetToDefaultButton: PropTypes.bool,\n /**\n * A reference to the editor.\n */\n editorRef: PropTypes.any,\n /**\n * To override the default editor addons\n */\n editorAddons: PropTypes.array,\n /**\n * The default values for the email form.\n */\n defaultValues: PropTypes.object,\n};\n\nexport default EmailForm;\n","import { noop, isNotEmpty } from \"neetocist\";\nimport { Tooltip } from \"neetoui\";\nimport { BlockNavigation, Switch } from \"neetoui/formik\";\nimport PropTypes from \"prop-types\";\nimport { isEmpty, pluck } from \"ramda\";\n\nimport { EmailFormProvider, EmailForm, EmailPreview } from \"..\";\nimport Header from \"../../Header\";\nimport MobilePreviewHeader from \"../../MobilePreviewHeader\";\nimport { INITIAL_FORM_VALUES } from \"../constants\";\nimport \"../email-form.scss\";\nimport { resolveContent } from \"../utils\";\n\nconst EmailFormComponent = ({\n onSubmit = noop,\n initialValues = INITIAL_FORM_VALUES,\n children,\n formikProps,\n validationSchema,\n showSendToField = false,\n showReplyToField = false,\n showSendToAsRadio = false,\n blockNavigation = true,\n showCcField = false,\n showBccField = false,\n isLoading = false,\n maxEmails = 10,\n emailFormProps = {},\n emailPreviewProps = {},\n headerProps = {},\n tooltipProps = {},\n switchProps = {},\n mobilePreviewProps = {},\n}) => {\n const { formatBody, formatSubject, bodyVariables, subjectVariables } =\n emailPreviewProps;\n\n const shouldShowFields = values => isEmpty(switchProps) || values.isEnabled;\n\n return (\n <EmailFormProvider\n {...{\n formikProps,\n initialValues,\n maxEmails,\n onSubmit,\n showBccField,\n showCcField,\n showReplyToField,\n showSendToAsRadio,\n showSendToField,\n validationSchema,\n }}\n >\n {({ values, isSubmitting }) => (\n <div className=\"neeto-notification-email-wrapper flex flex-grow flex-col overflow-y-auto lg:flex-row\">\n <div className=\"neeto-notification-email-wrapper__form-wrapper flex w-full flex-col px-5 md:px-10 lg:h-full lg:w-1/2 lg:overflow-y-auto\">\n {blockNavigation && <BlockNavigation />}\n {isNotEmpty(headerProps) && (\n <Header className=\"px-0\" size=\"small\" {...headerProps} />\n )}\n {isNotEmpty(switchProps) && (\n <div className=\"flex items-center justify-between gap-y-0.5 pb-6\">\n <Tooltip\n disabled={!switchProps?.disabled}\n position=\"top\"\n {...tooltipProps}\n >\n <div className=\"flex items-center gap-2\">\n <Switch\n data-testid=\"switch\"\n name=\"isEnabled\"\n {...switchProps}\n />\n </div>\n </Tooltip>\n </div>\n )}\n {shouldShowFields(values) && children}\n <EmailForm\n isLoading={isSubmitting || isLoading}\n isUpdating={isSubmitting || isLoading}\n showFields={shouldShowFields(values)}\n {...emailFormProps}\n />\n </div>\n {shouldShowFields(values) && (\n <MobilePreviewHeader\n className=\"lg:hidden\"\n {...mobilePreviewProps}\n />\n )}\n {shouldShowFields(values) && (\n <div className=\"neeto-notification-email-wrapper__preview-wrapper neeto-ui-bg-gray-100 w-full px-6 py-10 lg:w-1/2 lg:overflow-y-auto\">\n <EmailPreview\n body={resolveContent(values.message, formatBody, bodyVariables)}\n from={values.sendFrom}\n to={pluck(\"value\", values?.sendTo ?? [])}\n subject={resolveContent(\n values.subject,\n formatSubject,\n subjectVariables\n )}\n {...emailPreviewProps}\n />\n </div>\n )}\n </div>\n )}\n </EmailFormProvider>\n );\n};\n\nEmailFormComponent.propTypes = {\n /**\n * A function that will be triggered with input values when the 'Save changes' button is clicked.\n */\n onSubmit: PropTypes.func,\n /**\n * These are the predefined values that populate the form fields when the form is first rendered.\n */\n initialValues: PropTypes.shape({\n sendTo: PropTypes.array,\n sendToId: PropTypes.string,\n sendToCc: PropTypes.array,\n sendToBcc: PropTypes.array,\n replyTo: PropTypes.string,\n showCopyEmails: PropTypes.bool,\n subject: PropTypes.string,\n message: PropTypes.string,\n isEnabled: PropTypes.bool,\n }),\n /**\n * A prop that can be used to override the default Formik properties that are set within the component, providing customization flexibility.\n */\n formikProps: PropTypes.object,\n /**\n * A Yup object defining custom form validation rules, which will be merged with the default rules using the concat method.\n */\n validationSchema: PropTypes.object,\n /**\n * A prop used for rendering either standard React element or a render prop function.\n */\n children: PropTypes.oneOfType([PropTypes.func, PropTypes.node]),\n /**\n * A Boolean value that determines whether the '**sendTo**' field should be displayed or not.\n */\n showSendToField: PropTypes.bool,\n /**\n * A Boolean value that determines whether the '**replyTo**' field should be displayed or not.\n */\n showReplyToField: PropTypes.bool,\n /**\n * A Boolean value that determines whether the '**sendTo**' field should be radio type or not.\n */\n showSendToAsRadio: PropTypes.bool,\n /**\n * A Boolean value that determines whether the '**Cc**' field should be displayed or not when showSendToField is false.\n * This prop has no effect when showSendToField is true.\n */\n showCcField: PropTypes.bool,\n /**\n * A Boolean value that determines whether the '**Bcc**' field should be displayed or not when showSendToField is false.\n * This prop has no effect when showSendToField is true.\n */\n showBccField: PropTypes.bool,\n /**\n * This Boolean value, when set to true, triggers the display of a loading indicator on the 'Save changes' button.\"\n */\n isLoading: PropTypes.bool,\n /**\n * A prop to limit number of send to emails\n */\n maxEmails: PropTypes.number,\n /**\n * These are the values that will be passed to EmailForm Component\n */\n emailFormProps: PropTypes.shape({\n messageVariables: PropTypes.array,\n subjectVariables: PropTypes.array,\n handleCancel: PropTypes.func,\n handleResetToDefault: PropTypes.func,\n isLoading: PropTypes.bool,\n replyToFieldProps: PropTypes.object,\n sendToFieldProps: PropTypes.object,\n replyToOptions: PropTypes.array,\n sendToOptions: PropTypes.array,\n isUpdating: PropTypes.bool,\n showFields: PropTypes.bool,\n className: PropTypes.string,\n showResetToDefaultButton: PropTypes.bool,\n editorRef: PropTypes.any,\n editorAddons: PropTypes.array,\n }),\n /**\n * These are the values that will be passed to EmailPreview Component\n */\n emailPreviewProps: PropTypes.shape({\n to: PropTypes.array,\n from: PropTypes.string,\n subject: PropTypes.string,\n body: PropTypes.string,\n actionButtonText: PropTypes.string,\n logo: PropTypes.string,\n customContent: PropTypes.string,\n className: PropTypes.string,\n formatBody: PropTypes.func,\n formatSubject: PropTypes.func,\n bodyVariables: PropTypes.object,\n subjectVariables: PropTypes.object,\n }),\n /**\n * These are the values that will be passed to Header Component\n */\n headerProps: PropTypes.object,\n /**\n * These are the values that will be passed to Tooltip Component\n */\n tooltipProps: PropTypes.object,\n /**\n * These are the values that will be passed to Switch Component\n */\n switchProps: PropTypes.object,\n /**\n * These are the values that will be passed to MobilePreviewHeader Component\n */\n mobilePreviewProps: PropTypes.object,\n};\n\nexport default EmailFormComponent;\n","import { noop } from \"neetocist\";\nimport { Form } from \"neetoui/formik\";\nimport PropTypes from \"prop-types\";\n\nimport { INITIAL_FORM_VALUES } from \"./constants\";\nimport { EmailFormContext } from \"./contexts/EmailForm\";\nimport { getValidationSchema } from \"./utils\";\n\nconst EmailFormProvider = ({\n onSubmit = noop,\n initialValues = INITIAL_FORM_VALUES,\n children,\n formikProps,\n validationSchema: customValidations = {},\n showSendToField = false,\n showReplyToField = false,\n showSendToAsRadio = false,\n showCcField = false,\n showBccField = false,\n maxEmails = 10,\n}) => (\n <div\n className=\"neeto-notification-email-outer-wrapper\"\n data-testid=\"email-form-provider\"\n >\n <EmailFormContext.Provider\n value={{\n showSendToField,\n showSendToAsRadio,\n showReplyToField,\n showCcField,\n showBccField,\n }}\n >\n <Form\n className=\"neeto-notification-email-inner-wrapper\"\n formikProps={{\n enableReinitialize: true,\n validationSchema: getValidationSchema({\n showSendToField,\n showReplyToField,\n showSendToAsRadio,\n customValidations,\n maxEmails,\n }),\n initialValues: {\n ...initialValues,\n replyTo: initialValues.replyTo || globalProps.user.email,\n },\n onSubmit,\n ...formikProps,\n }}\n >\n {children}\n </Form>\n </EmailFormContext.Provider>\n </div>\n);\n\nEmailFormProvider.propTypes = {\n /**\n * A Boolean value that determines whether the '**sendTo**' field should be displayed or not.\n */\n showSendToField: PropTypes.bool,\n /**\n * A Boolean value that determines whether the '**replyTo**' field should be displayed or not.\n */\n showReplyToField: PropTypes.bool,\n /**\n * A Boolean value that determines whether the '**sendTo**' field should be radio type or not.\n */\n showSendToAsRadio: PropTypes.bool,\n /**\n * A function that will be triggered with input values when the 'Save changes' button is clicked.\n */\n onSubmit: PropTypes.func,\n /**\n * These are the predefined values that populate the form fields when the form is first rendered.\n */\n initialValues: PropTypes.shape({\n sendTo: PropTypes.array,\n sendToId: PropTypes.string,\n sendToCc: PropTypes.array,\n sendToBcc: PropTypes.array,\n replyTo: PropTypes.string,\n showCopyEmails: PropTypes.bool,\n subject: PropTypes.string,\n message: PropTypes.string,\n }),\n /**\n * A prop used for rendering either standard React element or a render prop function.\n */\n children: PropTypes.oneOfType([PropTypes.func, PropTypes.node]),\n /**\n * A prop that can be used to override the default Formik properties that are set within the component, providing customization flexibility.\n */\n formikProps: PropTypes.object,\n /**\n * A Yup object defining custom form validation rules, which will be merged with the default rules using the concat method.\n */\n validationSchema: PropTypes.object,\n /**\n * A prop to limit number of send to emails\n */\n maxEmails: PropTypes.number,\n /**\n * A Boolean value that determines whether the '**Cc**' field should be displayed or not when showSendToField is false.\n * This prop has no effect when showSendToField is true.\n */\n showCcField: PropTypes.bool,\n /**\n * A Boolean value that determines whether the '**Bcc**' field should be displayed or not when showSendToField is false.\n * This prop has no effect when showSendToField is true.\n */\n showBccField: PropTypes.bool,\n};\n\nexport default EmailFormProvider;\n"],"names":["INITIAL_FORM_VALUES","sendTo","sendToId","sendToCc","sendToBcc","replyTo","showCopyEmails","subject","message","isEnabled","EMAIL_FORM_VALIDATION_SCHEMA","yup","object","string","required","t","test","value","isEditorEmpty","sendToFieldValidation","maxEmails","validation","array","emails","every","prop","count","length","min","entity","nullable","SEND_TO_ID_FIELD_VALIDATION","REPLY_TO_FIELD_VALIDATION","email","EDITOR_ADDONS","EmailFormContext","createContext","showSendToField","showSendToAsRadio","showReplyToField","showCcField","showBccField","getValidationSchema","_ref","customValidations","schema","clone","concat","isYupObject","type","customFields","fields","shape","_typeof","getReplyToFieldLabelProps","_ref2","popoverProps","helpIconProps","_defineProperty","isPresent","content","touch","_objectSpread","appendTo","description","resolveContent","func","variable","normalizeHtmlString","str","replace","trim","ReplyToField","_ref$options","options","_ref$popoverProps","_useTranslation","useTranslation","_useFormikContext","useFormikContext","setFieldValue","isDropdownField","isNotEmpty","labelProps","_jsx","Select","isClearable","className","label","name","onChange","data","_data$value","Input","autoFocus","nakedInput","placeholder","size","event","_event$target$value","target","toLowerCase","SendToField","showSendToTextField","SendToFields","showCcBccButton","bccInputProps","ccInputProps","emailInputProps","id","SubjectField","text","updateText","_ref$subjectVariables","subjectVariables","error","_ref$required","onBlur","_useState","useState","_useState2","_slicedToArray","isFieldFocusedOnce","setIsFieldFocusedOnce","tagClickHandler","slug","key","category","textAreaElement","document","querySelector","splitIndex","selectionEnd","updatedSubject","slice","join","suffix","DynamicVariables","buttonProps","variables","dropdownProps","buttonSize","onVariableClick","withEventTargetValue","onFocus","EmailForm","_ref$messageVariables","messageVariables","handleCancel","handleResetToDefault","isLoading","replyToFieldProps","sendToFieldProps","replyToOptions","_ref$sendToOptions","sendToOptions","_ref$isUpdating","isUpdating","_ref$isResetting","isResetting","_ref$showFields","showFields","_ref$className","_ref$editorAddons","editorAddons","showResetToDefaultButton","_ref$editorRef","editorRef","_ref$defaultValues","defaultValues","_useContext","useContext","values","resetForm","normalizedValues","normalizedDefaultValues","globalProps","user","disabled","equals","sendToFieldOptions","showSendToRadioField","_jsxs","classnames","children","Radio","map","_createElement","Item","Field","_ref3","_ref3$field","field","_ref3$meta","meta","touched","undefined","FormikEditor","addons","hideSlashCommands","menuType","ref","shouldUpdate","nextProps","prevProps","notEqualsDeep","ActionBlock","cancelButtonProps","onClick","isSubmitting","Button","loading","style","EmailFormComponent","_ref$onSubmit","onSubmit","noop","_ref$initialValues","initialValues","formikProps","validationSchema","_ref$showSendToField","_ref$showReplyToField","_ref$showSendToAsRadi","_ref$blockNavigation","blockNavigation","_ref$showCcField","_ref$showBccField","_ref$isLoading","_ref$maxEmails","_ref$emailFormProps","emailFormProps","_ref$emailPreviewProp","emailPreviewProps","_ref$headerProps","headerProps","_ref$tooltipProps","tooltipProps","_ref$switchProps","switchProps","_ref$mobilePreviewPro","mobilePreviewProps","formatBody","formatSubject","bodyVariables","shouldShowFields","isEmpty","EmailFormProvider","_values$sendTo","BlockNavigation","Header","Tooltip","position","Switch","MobilePreviewHeader","EmailPreview","body","from","sendFrom","to","pluck","_ref$validationSchema","Provider","Form","enableReinitialize"],"mappings":"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"}
|
package/dist/cjs/CalendarView.js
CHANGED
|
@@ -131,6 +131,8 @@ var CustomDatePicker = function CustomDatePicker(_ref) {
|
|
|
131
131
|
picker = _ref.picker,
|
|
132
132
|
validDates = _ref.validDates,
|
|
133
133
|
otherProps = _objectWithoutProperties(_ref, _excluded$1);
|
|
134
|
+
var _useTranslation = reactI18next.useTranslation(),
|
|
135
|
+
t = _useTranslation.t;
|
|
134
136
|
var _useState = React.useState(false),
|
|
135
137
|
_useState2 = _slicedToArray(_useState, 2),
|
|
136
138
|
isOpen = _useState2[0],
|
|
@@ -167,12 +169,15 @@ var CustomDatePicker = function CustomDatePicker(_ref) {
|
|
|
167
169
|
return /*#__PURE__*/jsxRuntime.jsxs("div", {
|
|
168
170
|
className: "flex items-center justify-start gap-x-4",
|
|
169
171
|
children: [/*#__PURE__*/jsxRuntime.jsx(Button, {
|
|
172
|
+
"aria-label": t("neetoMolecules.calendarView.aria.goToToday"),
|
|
170
173
|
"data-testid": "neeto-molecules-calendar-view-today-button",
|
|
171
|
-
label: "
|
|
174
|
+
label: t("neetoMolecules.calendarView.today"),
|
|
172
175
|
style: "secondary",
|
|
173
176
|
onClick: onToday
|
|
174
177
|
}), /*#__PURE__*/jsxRuntime.jsxs("div", {
|
|
178
|
+
"aria-label": t("neetoMolecules.calendarView.aria.dateNavigation"),
|
|
175
179
|
className: "flex",
|
|
180
|
+
role: "group",
|
|
176
181
|
children: [/*#__PURE__*/jsxRuntime.jsx(Button, {
|
|
177
182
|
className: "me-1",
|
|
178
183
|
"data-testid": "neeto-molecules-calendar-view-previous-button",
|
|
@@ -184,13 +189,21 @@ var CustomDatePicker = function CustomDatePicker(_ref) {
|
|
|
184
189
|
});
|
|
185
190
|
},
|
|
186
191
|
style: "text",
|
|
192
|
+
"aria-label": t("neetoMolecules.calendarView.aria.previousPeriod", {
|
|
193
|
+
period: picker
|
|
194
|
+
}),
|
|
187
195
|
onClick: onPrevious
|
|
188
196
|
}), /*#__PURE__*/jsxRuntime.jsx(Button, {
|
|
197
|
+
"aria-expanded": isOpen,
|
|
198
|
+
"aria-haspopup": "dialog",
|
|
189
199
|
className: "min-w-52 justify-center",
|
|
190
200
|
"data-testid": "neeto-molecules-calendar-view-date-picker-button",
|
|
191
201
|
icon: Down,
|
|
192
202
|
ref: buttonRef,
|
|
193
203
|
style: "text",
|
|
204
|
+
"aria-label": t("neetoMolecules.calendarView.aria.selectDate", {
|
|
205
|
+
currentDate: selectedRangeStr
|
|
206
|
+
}),
|
|
194
207
|
onClick: function onClick() {
|
|
195
208
|
return setIsOpen(function (isOpen) {
|
|
196
209
|
return !isOpen;
|
|
@@ -225,6 +238,9 @@ var CustomDatePicker = function CustomDatePicker(_ref) {
|
|
|
225
238
|
});
|
|
226
239
|
},
|
|
227
240
|
style: "text",
|
|
241
|
+
"aria-label": t("neetoMolecules.calendarView.aria.nextPeriod", {
|
|
242
|
+
period: picker
|
|
243
|
+
}),
|
|
228
244
|
onClick: onNext
|
|
229
245
|
})]
|
|
230
246
|
})]
|
|
@@ -239,6 +255,8 @@ var Header = function Header(_ref) {
|
|
|
239
255
|
selectedDate = _ref.selectedDate,
|
|
240
256
|
calendarViewOptions = _ref.calendarViewOptions,
|
|
241
257
|
validDates = _ref.validDates;
|
|
258
|
+
var _useTranslation = reactI18next.useTranslation(),
|
|
259
|
+
t = _useTranslation.t;
|
|
242
260
|
var Menu = Dropdown.Menu,
|
|
243
261
|
MenuItem = Dropdown.MenuItem;
|
|
244
262
|
var handleViewSelection = function handleViewSelection(option) {
|
|
@@ -253,7 +271,9 @@ var Header = function Header(_ref) {
|
|
|
253
271
|
setTimeout(navigateToSelectedDate);
|
|
254
272
|
}, [selectedDate]);
|
|
255
273
|
return /*#__PURE__*/jsxRuntime.jsxs("div", {
|
|
274
|
+
"aria-label": t("neetoMolecules.calendarView.aria.calendarControls"),
|
|
256
275
|
className: "flex gap-x-4",
|
|
276
|
+
role: "group",
|
|
257
277
|
children: [/*#__PURE__*/jsxRuntime.jsx(CustomDatePicker, {
|
|
258
278
|
selectedDate: selectedDate,
|
|
259
279
|
setSelectedDate: setSelectedDate,
|
|
@@ -261,11 +281,14 @@ var Header = function Header(_ref) {
|
|
|
261
281
|
getPopupContainer: ramda.prop("parentNode"),
|
|
262
282
|
picker: selectedView.picker
|
|
263
283
|
}), Object.keys(calendarViewOptions).length > 1 && /*#__PURE__*/jsxRuntime.jsx(Dropdown, {
|
|
264
|
-
buttonProps: {
|
|
265
|
-
"data-testid": "calendar-view-dropdown"
|
|
266
|
-
},
|
|
267
284
|
buttonStyle: "secondary",
|
|
268
285
|
label: neetoCist.capitalize(selectedView.label),
|
|
286
|
+
buttonProps: {
|
|
287
|
+
"data-testid": "calendar-view-dropdown",
|
|
288
|
+
"aria-label": t("neetoMolecules.calendarView.aria.viewSelector", {
|
|
289
|
+
view: neetoCist.capitalize(selectedView.label)
|
|
290
|
+
})
|
|
291
|
+
},
|
|
269
292
|
children: /*#__PURE__*/jsxRuntime.jsx(Menu, {
|
|
270
293
|
children: ramda.values(calendarViewOptions).map(function (option, idx) {
|
|
271
294
|
return /*#__PURE__*/jsxRuntime.jsx(MenuItem.Button, {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"CalendarView.js","sources":["../../src/components/CalendarView/constants.js","../../src/components/CalendarView/utils.js","../../src/components/CalendarView/CustomDatePicker.jsx","../../src/components/CalendarView/Header.jsx","../../src/components/CalendarView/index.jsx"],"sourcesContent":["import { t } from \"i18next\";\n\nconst WEEKLY_VIEW = t(\"neetoMolecules.calendarView.weekly\");\nconst MONTHLY_VIEW = t(\"neetoMolecules.calendarView.monthly\");\nconst DAILY_VIEW = t(\"neetoMolecules.calendarView.daily\");\n\nexport const VIEW_OPTIONS = {\n [DAILY_VIEW]: {\n label: DAILY_VIEW,\n fullCalendarView: \"timeGridDay\",\n picker: \"day\",\n },\n [WEEKLY_VIEW]: {\n label: WEEKLY_VIEW,\n fullCalendarView: \"timeGridWeek\",\n picker: \"week\",\n },\n [MONTHLY_VIEW]: {\n label: MONTHLY_VIEW,\n fullCalendarView: \"dayGridMonth\",\n picker: \"month\",\n },\n};\n","import { dayjs } from \"neetocommons/utils\";\n\nconst getWeekString = ({\n date,\n isStartOfWeek = true,\n showMonth = false,\n showYear = false,\n}) =>\n `${showMonth || isStartOfWeek ? date.format(\"MMM\") : \"\"} ${date.date()} ${\n showYear || !isStartOfWeek ? date.format(\"YYYY\") : \"\"\n }`;\n\nexport const getStartOfWeek = date => dayjs(date).startOf(\"week\");\n\nexport const getEndOfWeek = date => dayjs(date).endOf(\"week\");\n\nexport const getFormattedMonthStr = date => date.format(\"MMM YYYY\");\n\nexport const getFormattedWeekRangeStr = date => {\n const startOfWeek = getStartOfWeek(date);\n const endOfWeek = getEndOfWeek(date);\n\n const shouldShowMonthsSeparately = startOfWeek.month() !== endOfWeek.month();\n const shouldShowYearsSeparately = startOfWeek.year() !== endOfWeek.year();\n\n const startOfWeekStr = getWeekString({\n date: startOfWeek,\n showMonth: shouldShowMonthsSeparately,\n showYear: shouldShowYearsSeparately,\n });\n\n const endOfWeekStr = getWeekString({\n date: endOfWeek,\n isStartOfWeek: false,\n showMonth: shouldShowMonthsSeparately,\n showYear: shouldShowYearsSeparately,\n });\n\n return `${startOfWeekStr} - ${endOfWeekStr}`;\n};\n\nexport const getFormattedDayStr = date => date.format(\"DD MMM YYYY\");\n\nexport const getFormattedRangeStr = (date, picker) => {\n const formatFunctions = {\n month: getFormattedMonthStr,\n week: getFormattedWeekRangeStr,\n day: getFormattedDayStr,\n };\n const selectedFormatter = formatFunctions[picker];\n\n return selectedFormatter(date);\n};\n\nexport const mergeRefs =\n (...refs) =>\n node =>\n refs\n .filter(Boolean)\n .forEach(ref =>\n typeof ref === \"function\" ? ref(node) : (ref.current = node)\n );\n","import { useRef, useState } from \"react\";\n\nimport { dayjs } from \"neetocommons/utils\";\nimport { Down, Left, Right } from \"neetoicons\";\nimport { Typography, Button, DatePicker } from \"neetoui\";\n\nimport { getFormattedRangeStr } from \"./utils\";\n\nconst CustomDatePicker = ({\n selectedDate,\n setSelectedDate,\n picker,\n validDates,\n ...otherProps\n}) => {\n const [isOpen, setIsOpen] = useState(false);\n\n const datePickerRef = useRef(null);\n const buttonRef = useRef(null);\n\n const selectedRangeStr = getFormattedRangeStr(selectedDate, picker);\n\n const { start, end } = validDates;\n\n const isDateLessThanStart =\n start && selectedDate.isSameOrBefore(dayjs(start), picker);\n\n const isDateGreaterThanEnd =\n end && selectedDate.isSameOrAfter(dayjs(end), picker);\n\n const onPrevious = () =>\n setSelectedDate(selectedDate => selectedDate.subtract(1, picker));\n\n const onNext = () =>\n setSelectedDate(selectedDate => selectedDate.add(1, picker));\n\n const onToday = () => setSelectedDate(dayjs());\n\n const getDisabledDates = date => {\n if (!date) return false;\n\n return (start && date <= start) || (end && date >= end);\n };\n\n const handleButtonMouseDown = e => {\n if (!(buttonRef.current && buttonRef.current.contains(e.target))) return;\n e.stopPropagation();\n if (isOpen) datePickerRef.current.focus();\n };\n\n return (\n <div className=\"flex items-center justify-start gap-x-4\">\n <Button\n data-testid=\"neeto-molecules-calendar-view-today-button\"\n label=\"Today\"\n style=\"secondary\"\n onClick={onToday}\n />\n <div className=\"flex\">\n <Button\n className=\"me-1\"\n data-testid=\"neeto-molecules-calendar-view-previous-button\"\n disabled={isDateLessThanStart}\n icon={() => <Left className=\"rtl:scale-x-[-1]\" size={20} />}\n style=\"text\"\n onClick={onPrevious}\n />\n <Button\n className=\"min-w-52 justify-center\"\n data-testid=\"neeto-molecules-calendar-view-date-picker-button\"\n icon={Down}\n ref={buttonRef}\n style=\"text\"\n onClick={() => setIsOpen(isOpen => !isOpen)}\n onMouseDown={handleButtonMouseDown}\n >\n <Typography\n data-testid=\"neeto-molecules-calendar-view-date-picker-button-label\"\n style=\"h5\"\n >\n {selectedRangeStr}\n </Typography>\n </Button>\n <DatePicker\n className=\"invisible w-0 px-0\"\n defaultValue={selectedDate}\n disabledDate={getDisabledDates}\n open={isOpen}\n placement=\"topRight\"\n ref={datePickerRef}\n value={selectedDate}\n onChange={setSelectedDate}\n onOpenChange={setIsOpen}\n {...{ picker, ...otherProps }}\n />\n <Button\n className=\"ms-1\"\n data-testid=\"neeto-molecules-calendar-view-next-button\"\n disabled={isDateGreaterThanEnd}\n icon={() => <Right className=\"rtl:scale-x-[-1]\" size={20} />}\n style=\"text\"\n onClick={onNext}\n />\n </div>\n </div>\n );\n};\n\nexport default CustomDatePicker;\n","import { useEffect } from \"react\";\n\nimport { capitalize } from \"neetocist\";\nimport { Dropdown } from \"neetoui\";\nimport { prop, values } from \"ramda\";\n\nimport CustomDatePicker from \"./CustomDatePicker\";\n\nconst Header = ({\n calendarRef,\n selectedView,\n setSelectedView,\n setSelectedDate,\n selectedDate,\n calendarViewOptions,\n validDates,\n}) => {\n const { Menu, MenuItem } = Dropdown;\n\n const handleViewSelection = option => {\n setSelectedView(option);\n calendarRef.current.calendar.changeView(option.fullCalendarView);\n };\n\n const navigateToSelectedDate = () =>\n calendarRef?.current?.calendar?.gotoDate(selectedDate.format(\"YYYY-MM-DD\"));\n\n useEffect(() => {\n setTimeout(navigateToSelectedDate);\n }, [selectedDate]);\n\n return (\n <div className=\"flex gap-x-4\">\n <CustomDatePicker\n {...{ selectedDate, setSelectedDate, validDates }}\n getPopupContainer={prop(\"parentNode\")}\n picker={selectedView.picker}\n />\n {Object.keys(calendarViewOptions).length > 1 && (\n <Dropdown\n buttonProps={{ \"data-testid\": \"calendar-view-dropdown\" }}\n buttonStyle=\"secondary\"\n label={capitalize(selectedView.label)}\n >\n <Menu>\n {values(calendarViewOptions).map((option, idx) => (\n <MenuItem.Button\n isActive={selectedView === option}\n key={idx}\n onClick={() => handleViewSelection(option)}\n >\n {capitalize(option.label)}\n </MenuItem.Button>\n ))}\n </Menu>\n </Dropdown>\n )}\n </div>\n );\n};\n\nexport default Header;\n","import { forwardRef, useRef, useState, useEffect } from \"react\";\n\nimport dayGridPlugin from \"@fullcalendar/daygrid\";\nimport interactionPlugin from \"@fullcalendar/interaction\";\nimport FullCalendar from \"@fullcalendar/react\";\nimport timeGridPlugin from \"@fullcalendar/timegrid\";\nimport i18next from \"i18next\";\nimport { noop } from \"neetocist\";\nimport { dayjs } from \"neetocommons/utils\";\nimport { Typography } from \"neetoui\";\nimport PropTypes from \"prop-types\";\nimport { prop } from \"ramda\";\nimport { useTranslation } from \"react-i18next\";\n\nimport SubHeader from \"components/SubHeader\";\n\nimport \"./calendar-view.scss\";\nimport { VIEW_OPTIONS } from \"./constants\";\nimport Header from \"./Header\";\nimport { mergeRefs } from \"./utils\";\n\nconst direction = i18next.dir() || \"ltr\";\n\nconst CalendarView = forwardRef(\n (\n {\n viewOptions = VIEW_OPTIONS,\n events = [],\n handleDateClick = noop,\n handleEventClick = noop,\n eventClassNames = \"\",\n dayCellClassNames = \"\",\n validDates = { start: null, end: null },\n onDateChange = noop,\n dayMaxEvents,\n eventMaxStack,\n hideHeader = false,\n ...otherProps\n },\n ref\n ) => {\n const calendarViewOptions = viewOptions || VIEW_OPTIONS;\n\n const defaultView =\n Object.values(calendarViewOptions).find(prop(\"default\")) ||\n calendarViewOptions[Object.keys(calendarViewOptions)[0]];\n\n const [selectedView, setSelectedView] = useState(defaultView);\n\n const [selectedDate, setSelectedDate] = useState(dayjs());\n\n const { t } = useTranslation();\n\n const handleDateChange = date => {\n setSelectedDate(prevDate => {\n const newDate = typeof date === \"function\" ? date(prevDate) : date;\n onDateChange(newDate);\n\n return newDate;\n });\n };\n const calendarWrapperRef = useRef(null);\n const calendarRef = useRef();\n\n useEffect(() => {\n const calendarApi = calendarRef.current?.getApi?.();\n const wrapperElement = calendarWrapperRef.current;\n\n if (!calendarApi || !wrapperElement) return undefined;\n\n const handleResize = () => {\n calendarApi.updateSize();\n };\n\n const observer = new ResizeObserver(handleResize);\n\n observer.observe(wrapperElement);\n\n return () => {\n observer.disconnect();\n };\n }, []);\n\n return (\n <div\n className=\"flex-col\"\n data-testid=\"calendar-view\"\n ref={calendarWrapperRef}\n >\n {!hideHeader && (\n <SubHeader\n leftActionBlock={\n <Typography style=\"h2\">\n {selectedDate.format(\"MMMM, YYYY\")}\n </Typography>\n }\n rightActionBlock={\n <Header\n {...{\n calendarRef,\n calendarViewOptions,\n selectedDate,\n selectedView,\n setSelectedDate,\n setSelectedView,\n validDates,\n }}\n setSelectedDate={handleDateChange}\n />\n }\n />\n )}\n <FullCalendar\n expandRows\n allDayText={t(\"neetoMolecules.calendarView.allDay\")}\n dateClick={handleDateClick}\n dayHeaderClassNames=\"p-2\"\n displayEventTime={false}\n eventClick={handleEventClick}\n headerToolbar={false}\n height=\"auto\"\n initialView={selectedView.fullCalendarView}\n plugins={[dayGridPlugin, timeGridPlugin, interactionPlugin]}\n ref={mergeRefs(ref, calendarRef)}\n {...{\n dayCellClassNames,\n dayMaxEvents,\n direction,\n eventClassNames,\n eventMaxStack,\n events,\n ...otherProps,\n }}\n />\n </div>\n );\n }\n);\n\nCalendarView.displayName = \"CalendarView\";\n\nCalendarView.propTypes = {\n /**\n * Views to be listed in the dropdown. The default selected view can be set by adding `default: true` to the required view.\n */\n viewOptions: PropTypes.object,\n /**\n * An array of event objects that will be displayed on the calendar.\n */\n events: PropTypes.array,\n /**\n * Function to be triggered when the user clicks on a date or a time.\n */\n handleDateClick: PropTypes.func,\n /**\n * Function to be triggered when the user clicks an event.\n */\n handleEventClick: PropTypes.func,\n /**\n * A className input for adding classNames to the outermost event element.\n */\n eventClassNames: PropTypes.string,\n /**\n * A className input for adding classNames to the <td> cell.\n */\n dayCellClassNames: PropTypes.string,\n /**\n * In dayGrid view, the max number of events within a given day, not counting the +more link.\n */\n dayMaxEvents: PropTypes.number,\n /**\n * For timeline view, the maximum number of events that stack top-to-bottom. For timeGrid view, the maximum number of events that stack left-to-right.\n */\n eventMaxStack: PropTypes.number,\n /**\n * This function will be triggered with the new selected date passed as argument\n */\n onDateChange: PropTypes.func,\n /**\n * An object containing the start and end dates in which the range given is the valid range of selectable dates.\n */\n validDates: PropTypes.shape({\n start: PropTypes.instanceOf(Date),\n end: PropTypes.instanceOf(Date),\n }),\n /**\n * This prop can be used to hide the header\n */\n hideHeader: PropTypes.bool,\n};\n\nexport default CalendarView;\n"],"names":["WEEKLY_VIEW","t","MONTHLY_VIEW","DAILY_VIEW","VIEW_OPTIONS","_defineProperty","label","fullCalendarView","picker","getWeekString","_ref","date","_ref$isStartOfWeek","isStartOfWeek","_ref$showMonth","showMonth","_ref$showYear","showYear","concat","format","getStartOfWeek","dayjs","startOf","getEndOfWeek","endOf","getFormattedMonthStr","getFormattedWeekRangeStr","startOfWeek","endOfWeek","shouldShowMonthsSeparately","month","shouldShowYearsSeparately","year","startOfWeekStr","endOfWeekStr","getFormattedDayStr","getFormattedRangeStr","formatFunctions","week","day","selectedFormatter","mergeRefs","_len","arguments","length","refs","Array","_key","node","filter","Boolean","forEach","ref","current","CustomDatePicker","selectedDate","setSelectedDate","validDates","otherProps","_objectWithoutProperties","_excluded","_useState","useState","_useState2","_slicedToArray","isOpen","setIsOpen","datePickerRef","useRef","buttonRef","selectedRangeStr","start","end","isDateLessThanStart","isSameOrBefore","isDateGreaterThanEnd","isSameOrAfter","onPrevious","subtract","onNext","add","onToday","getDisabledDates","handleButtonMouseDown","e","contains","target","stopPropagation","focus","_jsxs","className","children","_jsx","Button","style","onClick","disabled","icon","Left","size","Down","onMouseDown","Typography","DatePicker","_objectSpread","defaultValue","disabledDate","open","placement","value","onChange","onOpenChange","Right","Header","calendarRef","selectedView","setSelectedView","calendarViewOptions","Menu","Dropdown","MenuItem","handleViewSelection","option","calendar","changeView","navigateToSelectedDate","_calendarRef$current","gotoDate","useEffect","setTimeout","getPopupContainer","prop","Object","keys","buttonProps","buttonStyle","capitalize","values","map","idx","isActive","direction","i18next","dir","CalendarView","forwardRef","_ref$viewOptions","viewOptions","_ref$events","events","_ref$handleDateClick","handleDateClick","noop","_ref$handleEventClick","handleEventClick","_ref$eventClassNames","eventClassNames","_ref$dayCellClassName","dayCellClassNames","_ref$validDates","_ref$onDateChange","onDateChange","dayMaxEvents","eventMaxStack","_ref$hideHeader","hideHeader","defaultView","find","_useState3","_useState4","_useTranslation","useTranslation","handleDateChange","prevDate","newDate","calendarWrapperRef","_calendarRef$current$","calendarApi","getApi","call","wrapperElement","undefined","handleResize","updateSize","observer","ResizeObserver","observe","disconnect","SubHeader","leftActionBlock","rightActionBlock","FullCalendar","expandRows","allDayText","dateClick","dayHeaderClassNames","displayEventTime","eventClick","headerToolbar","height","initialView","plugins","dayGridPlugin","timeGridPlugin","interactionPlugin","displayName"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"CalendarView.js","sources":["../../src/components/CalendarView/constants.js","../../src/components/CalendarView/utils.js","../../src/components/CalendarView/CustomDatePicker.jsx","../../src/components/CalendarView/Header.jsx","../../src/components/CalendarView/index.jsx"],"sourcesContent":["import { t } from \"i18next\";\n\nconst WEEKLY_VIEW = t(\"neetoMolecules.calendarView.weekly\");\nconst MONTHLY_VIEW = t(\"neetoMolecules.calendarView.monthly\");\nconst DAILY_VIEW = t(\"neetoMolecules.calendarView.daily\");\n\nexport const VIEW_OPTIONS = {\n [DAILY_VIEW]: {\n label: DAILY_VIEW,\n fullCalendarView: \"timeGridDay\",\n picker: \"day\",\n },\n [WEEKLY_VIEW]: {\n label: WEEKLY_VIEW,\n fullCalendarView: \"timeGridWeek\",\n picker: \"week\",\n },\n [MONTHLY_VIEW]: {\n label: MONTHLY_VIEW,\n fullCalendarView: \"dayGridMonth\",\n picker: \"month\",\n },\n};\n","import { dayjs } from \"neetocommons/utils\";\n\nconst getWeekString = ({\n date,\n isStartOfWeek = true,\n showMonth = false,\n showYear = false,\n}) =>\n `${showMonth || isStartOfWeek ? date.format(\"MMM\") : \"\"} ${date.date()} ${\n showYear || !isStartOfWeek ? date.format(\"YYYY\") : \"\"\n }`;\n\nexport const getStartOfWeek = date => dayjs(date).startOf(\"week\");\n\nexport const getEndOfWeek = date => dayjs(date).endOf(\"week\");\n\nexport const getFormattedMonthStr = date => date.format(\"MMM YYYY\");\n\nexport const getFormattedWeekRangeStr = date => {\n const startOfWeek = getStartOfWeek(date);\n const endOfWeek = getEndOfWeek(date);\n\n const shouldShowMonthsSeparately = startOfWeek.month() !== endOfWeek.month();\n const shouldShowYearsSeparately = startOfWeek.year() !== endOfWeek.year();\n\n const startOfWeekStr = getWeekString({\n date: startOfWeek,\n showMonth: shouldShowMonthsSeparately,\n showYear: shouldShowYearsSeparately,\n });\n\n const endOfWeekStr = getWeekString({\n date: endOfWeek,\n isStartOfWeek: false,\n showMonth: shouldShowMonthsSeparately,\n showYear: shouldShowYearsSeparately,\n });\n\n return `${startOfWeekStr} - ${endOfWeekStr}`;\n};\n\nexport const getFormattedDayStr = date => date.format(\"DD MMM YYYY\");\n\nexport const getFormattedRangeStr = (date, picker) => {\n const formatFunctions = {\n month: getFormattedMonthStr,\n week: getFormattedWeekRangeStr,\n day: getFormattedDayStr,\n };\n const selectedFormatter = formatFunctions[picker];\n\n return selectedFormatter(date);\n};\n\nexport const mergeRefs =\n (...refs) =>\n node =>\n refs\n .filter(Boolean)\n .forEach(ref =>\n typeof ref === \"function\" ? ref(node) : (ref.current = node)\n );\n","import { useRef, useState } from \"react\";\n\nimport { dayjs } from \"neetocommons/utils\";\nimport { Down, Left, Right } from \"neetoicons\";\nimport { Typography, Button, DatePicker } from \"neetoui\";\nimport { useTranslation } from \"react-i18next\";\n\nimport { getFormattedRangeStr } from \"./utils\";\n\nconst CustomDatePicker = ({\n selectedDate,\n setSelectedDate,\n picker,\n validDates,\n ...otherProps\n}) => {\n const { t } = useTranslation();\n const [isOpen, setIsOpen] = useState(false);\n\n const datePickerRef = useRef(null);\n const buttonRef = useRef(null);\n\n const selectedRangeStr = getFormattedRangeStr(selectedDate, picker);\n\n const { start, end } = validDates;\n\n const isDateLessThanStart =\n start && selectedDate.isSameOrBefore(dayjs(start), picker);\n\n const isDateGreaterThanEnd =\n end && selectedDate.isSameOrAfter(dayjs(end), picker);\n\n const onPrevious = () =>\n setSelectedDate(selectedDate => selectedDate.subtract(1, picker));\n\n const onNext = () =>\n setSelectedDate(selectedDate => selectedDate.add(1, picker));\n\n const onToday = () => setSelectedDate(dayjs());\n\n const getDisabledDates = date => {\n if (!date) return false;\n\n return (start && date <= start) || (end && date >= end);\n };\n\n const handleButtonMouseDown = e => {\n if (!(buttonRef.current && buttonRef.current.contains(e.target))) return;\n e.stopPropagation();\n if (isOpen) datePickerRef.current.focus();\n };\n\n return (\n <div className=\"flex items-center justify-start gap-x-4\">\n <Button\n aria-label={t(\"neetoMolecules.calendarView.aria.goToToday\")}\n data-testid=\"neeto-molecules-calendar-view-today-button\"\n label={t(\"neetoMolecules.calendarView.today\")}\n style=\"secondary\"\n onClick={onToday}\n />\n <div\n aria-label={t(\"neetoMolecules.calendarView.aria.dateNavigation\")}\n className=\"flex\"\n role=\"group\"\n >\n <Button\n className=\"me-1\"\n data-testid=\"neeto-molecules-calendar-view-previous-button\"\n disabled={isDateLessThanStart}\n icon={() => <Left className=\"rtl:scale-x-[-1]\" size={20} />}\n style=\"text\"\n aria-label={t(\"neetoMolecules.calendarView.aria.previousPeriod\", {\n period: picker,\n })}\n onClick={onPrevious}\n />\n <Button\n aria-expanded={isOpen}\n aria-haspopup=\"dialog\"\n className=\"min-w-52 justify-center\"\n data-testid=\"neeto-molecules-calendar-view-date-picker-button\"\n icon={Down}\n ref={buttonRef}\n style=\"text\"\n aria-label={t(\"neetoMolecules.calendarView.aria.selectDate\", {\n currentDate: selectedRangeStr,\n })}\n onClick={() => setIsOpen(isOpen => !isOpen)}\n onMouseDown={handleButtonMouseDown}\n >\n <Typography\n data-testid=\"neeto-molecules-calendar-view-date-picker-button-label\"\n style=\"h5\"\n >\n {selectedRangeStr}\n </Typography>\n </Button>\n <DatePicker\n className=\"invisible w-0 px-0\"\n defaultValue={selectedDate}\n disabledDate={getDisabledDates}\n open={isOpen}\n placement=\"topRight\"\n ref={datePickerRef}\n value={selectedDate}\n onChange={setSelectedDate}\n onOpenChange={setIsOpen}\n {...{ picker, ...otherProps }}\n />\n <Button\n className=\"ms-1\"\n data-testid=\"neeto-molecules-calendar-view-next-button\"\n disabled={isDateGreaterThanEnd}\n icon={() => <Right className=\"rtl:scale-x-[-1]\" size={20} />}\n style=\"text\"\n aria-label={t(\"neetoMolecules.calendarView.aria.nextPeriod\", {\n period: picker,\n })}\n onClick={onNext}\n />\n </div>\n </div>\n );\n};\n\nexport default CustomDatePicker;\n","import { useEffect } from \"react\";\n\nimport { capitalize } from \"neetocist\";\nimport { Dropdown } from \"neetoui\";\nimport { prop, values } from \"ramda\";\nimport { useTranslation } from \"react-i18next\";\n\nimport CustomDatePicker from \"./CustomDatePicker\";\n\nconst Header = ({\n calendarRef,\n selectedView,\n setSelectedView,\n setSelectedDate,\n selectedDate,\n calendarViewOptions,\n validDates,\n}) => {\n const { t } = useTranslation();\n const { Menu, MenuItem } = Dropdown;\n\n const handleViewSelection = option => {\n setSelectedView(option);\n calendarRef.current.calendar.changeView(option.fullCalendarView);\n };\n\n const navigateToSelectedDate = () =>\n calendarRef?.current?.calendar?.gotoDate(selectedDate.format(\"YYYY-MM-DD\"));\n\n useEffect(() => {\n setTimeout(navigateToSelectedDate);\n }, [selectedDate]);\n\n return (\n <div\n aria-label={t(\"neetoMolecules.calendarView.aria.calendarControls\")}\n className=\"flex gap-x-4\"\n role=\"group\"\n >\n <CustomDatePicker\n {...{ selectedDate, setSelectedDate, validDates }}\n getPopupContainer={prop(\"parentNode\")}\n picker={selectedView.picker}\n />\n {Object.keys(calendarViewOptions).length > 1 && (\n <Dropdown\n buttonStyle=\"secondary\"\n label={capitalize(selectedView.label)}\n buttonProps={{\n \"data-testid\": \"calendar-view-dropdown\",\n \"aria-label\": t(\"neetoMolecules.calendarView.aria.viewSelector\", {\n view: capitalize(selectedView.label),\n }),\n }}\n >\n <Menu>\n {values(calendarViewOptions).map((option, idx) => (\n <MenuItem.Button\n isActive={selectedView === option}\n key={idx}\n onClick={() => handleViewSelection(option)}\n >\n {capitalize(option.label)}\n </MenuItem.Button>\n ))}\n </Menu>\n </Dropdown>\n )}\n </div>\n );\n};\n\nexport default Header;\n","import { forwardRef, useRef, useState, useEffect } from \"react\";\n\nimport dayGridPlugin from \"@fullcalendar/daygrid\";\nimport interactionPlugin from \"@fullcalendar/interaction\";\nimport FullCalendar from \"@fullcalendar/react\";\nimport timeGridPlugin from \"@fullcalendar/timegrid\";\nimport i18next from \"i18next\";\nimport { noop } from \"neetocist\";\nimport { dayjs } from \"neetocommons/utils\";\nimport { Typography } from \"neetoui\";\nimport PropTypes from \"prop-types\";\nimport { prop } from \"ramda\";\nimport { useTranslation } from \"react-i18next\";\n\nimport SubHeader from \"components/SubHeader\";\n\nimport \"./calendar-view.scss\";\nimport { VIEW_OPTIONS } from \"./constants\";\nimport Header from \"./Header\";\nimport { mergeRefs } from \"./utils\";\n\nconst direction = i18next.dir() || \"ltr\";\n\nconst CalendarView = forwardRef(\n (\n {\n viewOptions = VIEW_OPTIONS,\n events = [],\n handleDateClick = noop,\n handleEventClick = noop,\n eventClassNames = \"\",\n dayCellClassNames = \"\",\n validDates = { start: null, end: null },\n onDateChange = noop,\n dayMaxEvents,\n eventMaxStack,\n hideHeader = false,\n ...otherProps\n },\n ref\n ) => {\n const calendarViewOptions = viewOptions || VIEW_OPTIONS;\n\n const defaultView =\n Object.values(calendarViewOptions).find(prop(\"default\")) ||\n calendarViewOptions[Object.keys(calendarViewOptions)[0]];\n\n const [selectedView, setSelectedView] = useState(defaultView);\n\n const [selectedDate, setSelectedDate] = useState(dayjs());\n\n const { t } = useTranslation();\n\n const handleDateChange = date => {\n setSelectedDate(prevDate => {\n const newDate = typeof date === \"function\" ? date(prevDate) : date;\n onDateChange(newDate);\n\n return newDate;\n });\n };\n const calendarWrapperRef = useRef(null);\n const calendarRef = useRef();\n\n useEffect(() => {\n const calendarApi = calendarRef.current?.getApi?.();\n const wrapperElement = calendarWrapperRef.current;\n\n if (!calendarApi || !wrapperElement) return undefined;\n\n const handleResize = () => {\n calendarApi.updateSize();\n };\n\n const observer = new ResizeObserver(handleResize);\n\n observer.observe(wrapperElement);\n\n return () => {\n observer.disconnect();\n };\n }, []);\n\n return (\n <div\n className=\"flex-col\"\n data-testid=\"calendar-view\"\n ref={calendarWrapperRef}\n >\n {!hideHeader && (\n <SubHeader\n leftActionBlock={\n <Typography style=\"h2\">\n {selectedDate.format(\"MMMM, YYYY\")}\n </Typography>\n }\n rightActionBlock={\n <Header\n {...{\n calendarRef,\n calendarViewOptions,\n selectedDate,\n selectedView,\n setSelectedDate,\n setSelectedView,\n validDates,\n }}\n setSelectedDate={handleDateChange}\n />\n }\n />\n )}\n <FullCalendar\n expandRows\n allDayText={t(\"neetoMolecules.calendarView.allDay\")}\n dateClick={handleDateClick}\n dayHeaderClassNames=\"p-2\"\n displayEventTime={false}\n eventClick={handleEventClick}\n headerToolbar={false}\n height=\"auto\"\n initialView={selectedView.fullCalendarView}\n plugins={[dayGridPlugin, timeGridPlugin, interactionPlugin]}\n ref={mergeRefs(ref, calendarRef)}\n {...{\n dayCellClassNames,\n dayMaxEvents,\n direction,\n eventClassNames,\n eventMaxStack,\n events,\n ...otherProps,\n }}\n />\n </div>\n );\n }\n);\n\nCalendarView.displayName = \"CalendarView\";\n\nCalendarView.propTypes = {\n /**\n * Views to be listed in the dropdown. The default selected view can be set by adding `default: true` to the required view.\n */\n viewOptions: PropTypes.object,\n /**\n * An array of event objects that will be displayed on the calendar.\n */\n events: PropTypes.array,\n /**\n * Function to be triggered when the user clicks on a date or a time.\n */\n handleDateClick: PropTypes.func,\n /**\n * Function to be triggered when the user clicks an event.\n */\n handleEventClick: PropTypes.func,\n /**\n * A className input for adding classNames to the outermost event element.\n */\n eventClassNames: PropTypes.string,\n /**\n * A className input for adding classNames to the <td> cell.\n */\n dayCellClassNames: PropTypes.string,\n /**\n * In dayGrid view, the max number of events within a given day, not counting the +more link.\n */\n dayMaxEvents: PropTypes.number,\n /**\n * For timeline view, the maximum number of events that stack top-to-bottom. For timeGrid view, the maximum number of events that stack left-to-right.\n */\n eventMaxStack: PropTypes.number,\n /**\n * This function will be triggered with the new selected date passed as argument\n */\n onDateChange: PropTypes.func,\n /**\n * An object containing the start and end dates in which the range given is the valid range of selectable dates.\n */\n validDates: PropTypes.shape({\n start: PropTypes.instanceOf(Date),\n end: PropTypes.instanceOf(Date),\n }),\n /**\n * This prop can be used to hide the header\n */\n hideHeader: PropTypes.bool,\n};\n\nexport default CalendarView;\n"],"names":["WEEKLY_VIEW","t","MONTHLY_VIEW","DAILY_VIEW","VIEW_OPTIONS","_defineProperty","label","fullCalendarView","picker","getWeekString","_ref","date","_ref$isStartOfWeek","isStartOfWeek","_ref$showMonth","showMonth","_ref$showYear","showYear","concat","format","getStartOfWeek","dayjs","startOf","getEndOfWeek","endOf","getFormattedMonthStr","getFormattedWeekRangeStr","startOfWeek","endOfWeek","shouldShowMonthsSeparately","month","shouldShowYearsSeparately","year","startOfWeekStr","endOfWeekStr","getFormattedDayStr","getFormattedRangeStr","formatFunctions","week","day","selectedFormatter","mergeRefs","_len","arguments","length","refs","Array","_key","node","filter","Boolean","forEach","ref","current","CustomDatePicker","selectedDate","setSelectedDate","validDates","otherProps","_objectWithoutProperties","_excluded","_useTranslation","useTranslation","_useState","useState","_useState2","_slicedToArray","isOpen","setIsOpen","datePickerRef","useRef","buttonRef","selectedRangeStr","start","end","isDateLessThanStart","isSameOrBefore","isDateGreaterThanEnd","isSameOrAfter","onPrevious","subtract","onNext","add","onToday","getDisabledDates","handleButtonMouseDown","e","contains","target","stopPropagation","focus","_jsxs","className","children","_jsx","Button","style","onClick","role","disabled","icon","Left","size","period","Down","currentDate","onMouseDown","Typography","DatePicker","_objectSpread","defaultValue","disabledDate","open","placement","value","onChange","onOpenChange","Right","Header","calendarRef","selectedView","setSelectedView","calendarViewOptions","Menu","Dropdown","MenuItem","handleViewSelection","option","calendar","changeView","navigateToSelectedDate","_calendarRef$current","gotoDate","useEffect","setTimeout","getPopupContainer","prop","Object","keys","buttonStyle","capitalize","buttonProps","view","values","map","idx","isActive","direction","i18next","dir","CalendarView","forwardRef","_ref$viewOptions","viewOptions","_ref$events","events","_ref$handleDateClick","handleDateClick","noop","_ref$handleEventClick","handleEventClick","_ref$eventClassNames","eventClassNames","_ref$dayCellClassName","dayCellClassNames","_ref$validDates","_ref$onDateChange","onDateChange","dayMaxEvents","eventMaxStack","_ref$hideHeader","hideHeader","defaultView","find","_useState3","_useState4","handleDateChange","prevDate","newDate","calendarWrapperRef","_calendarRef$current$","calendarApi","getApi","call","wrapperElement","undefined","handleResize","updateSize","observer","ResizeObserver","observe","disconnect","SubHeader","leftActionBlock","rightActionBlock","FullCalendar","expandRows","allDayText","dateClick","dayHeaderClassNames","displayEventTime","eventClick","headerToolbar","height","initialView","plugins","dayGridPlugin","timeGridPlugin","interactionPlugin","displayName"],"mappings":"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"}
|
package/dist/cjs/EmailForm.js
CHANGED
|
@@ -203,7 +203,7 @@ var ReplyToField = function ReplyToField(_ref) {
|
|
|
203
203
|
options: options,
|
|
204
204
|
isClearable: true,
|
|
205
205
|
className: "w-full",
|
|
206
|
-
"data-testid": "
|
|
206
|
+
"data-testid": "reply-to-select-field",
|
|
207
207
|
label: t("neetoMolecules.emailForm.labels.replyTo"),
|
|
208
208
|
name: "replyTo",
|
|
209
209
|
onChange: function onChange(data) {
|
|
@@ -218,7 +218,7 @@ var ReplyToField = function ReplyToField(_ref) {
|
|
|
218
218
|
nakedInput: true,
|
|
219
219
|
required: true,
|
|
220
220
|
className: "w-full",
|
|
221
|
-
"data-testid": "
|
|
221
|
+
"data-testid": "reply-to-input-field",
|
|
222
222
|
label: t("neetoMolecules.emailForm.labels.replyTo"),
|
|
223
223
|
name: "replyTo",
|
|
224
224
|
placeholder: t("neetoMolecules.emailForm.placeholders.emailPlaceholder"),
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"EmailForm.js","sources":["../../src/components/EmailForm/constants.js","../../src/components/EmailForm/contexts/EmailForm.js","../../src/components/EmailForm/utils.js","../../src/components/EmailForm/ReplyToField.jsx","../../src/components/EmailForm/SendToField.jsx","../../src/components/EmailForm/SubjectField.jsx","../../src/components/EmailForm/EmailForm.jsx","../../src/components/EmailForm/EmailFormComponent/index.jsx","../../src/components/EmailForm/EmailFormProvider.jsx"],"sourcesContent":["import { t } from \"i18next\";\nimport { isEditorEmpty } from \"neetoeditor\";\nimport { prop } from \"ramda\";\nimport * as yup from \"yup\";\n\nexport const INITIAL_FORM_VALUES = {\n sendTo: [],\n sendToId: \"\",\n sendToCc: [],\n sendToBcc: [],\n replyTo: \"\",\n showCopyEmails: false,\n subject: \"\",\n message: \"\",\n isEnabled: false,\n};\n\nexport const EMAIL_FORM_VALIDATION_SCHEMA = yup.object({\n subject: yup\n .string()\n .required(t(\"neetoMolecules.emailForm.errors.subjectRequired\")),\n message: yup\n .string()\n .test(\n \"message\",\n t(\"neetoMolecules.emailForm.errors.messageRequired\"),\n value => !isEditorEmpty(value)\n ),\n});\n\nexport const sendToFieldValidation = maxEmails => {\n const validation = yup\n .array()\n .test(\n \"all-emails-valid\",\n t(\"neetoMolecules.emailForm.errors.invalidEmailAddress\"),\n emails => emails?.every(prop(\"valid\"))\n )\n .test(\n \"max-email-count\",\n t(\"neetoMolecules.emailForm.errors.maxEmails\", { count: maxEmails }),\n emails => emails?.length <= maxEmails\n );\n\n return yup.object({\n sendTo: validation\n .min(\n 1,\n t(\"neetoMolecules.emailForm.errors.required\", {\n entity: t(\"neetoMolecules.emailForm.fields.sendToEmailAddress\"),\n })\n )\n .nullable(),\n sendToCc: validation,\n sendToBcc: validation,\n });\n};\n\nexport const SEND_TO_ID_FIELD_VALIDATION = yup.object({\n sendToId: yup.string().required(\n t(\"neetoMolecules.emailForm.errors.required\", {\n entity: t(\"neetoMolecules.emailForm.labels.sendTo\"),\n })\n ),\n});\n\nexport const REPLY_TO_FIELD_VALIDATION = yup.object({\n replyTo: yup\n .string()\n .nullable()\n .email(t(\"neetoMolecules.emailForm.errors.invalidEmailAddress\"))\n .required(\n t(\"neetoMolecules.emailForm.errors.required\", {\n entity: t(\"neetoMolecules.emailForm.fields.replyToEmailAddress\"),\n })\n ),\n});\n\nexport const EDITOR_ADDONS = [\n \"highlight\",\n \"emoji\",\n \"code-block\",\n \"block-quote\",\n \"image-upload\",\n \"divider\",\n \"video-embed\",\n];\n\nexport const ALLOWED_FILE_PICKER_TYPES = [\".csv\"];\n","/* eslint-disable @bigbinary/neeto/use-zustand-for-global-state-management */\nimport { createContext } from \"react\";\n\nconst EmailFormContext = createContext({\n showSendToField: false,\n showSendToAsRadio: false,\n showReplyToField: false,\n showCcField: false,\n showBccField: false,\n});\n\nexport { EmailFormContext };\n","import { t } from \"i18next\";\nimport { isPresent } from \"neetocist\";\n\nimport {\n EMAIL_FORM_VALIDATION_SCHEMA,\n REPLY_TO_FIELD_VALIDATION,\n sendToFieldValidation,\n SEND_TO_ID_FIELD_VALIDATION,\n} from \"./constants\";\n\nexport const getValidationSchema = ({\n showSendToField,\n showReplyToField,\n showSendToAsRadio,\n customValidations,\n maxEmails,\n}) => {\n let schema = EMAIL_FORM_VALIDATION_SCHEMA.clone();\n\n if (showSendToField) {\n schema = schema.concat(\n showSendToAsRadio\n ? SEND_TO_ID_FIELD_VALIDATION\n : sendToFieldValidation(maxEmails)\n );\n }\n\n if (showReplyToField) schema = schema.concat(REPLY_TO_FIELD_VALIDATION);\n\n const isYupObject = customValidations.type === \"object\";\n\n if (isYupObject) {\n const customFields = customValidations.fields || {};\n schema = schema.shape(customFields);\n } else if (typeof customValidations === \"object\") {\n schema = schema.shape(customValidations);\n }\n\n return schema;\n};\n\nexport const getReplyToFieldLabelProps = ({ popoverProps }) => ({\n helpIconProps: {\n [\"data-testid\"]: \"reply-to-tooltip\",\n tooltipProps: !isPresent(popoverProps) && {\n content: t(\"neetoMolecules.emailForm.tooltips.replyTo\"),\n touch: [\"hold\", 500],\n },\n popoverProps: isPresent(popoverProps) && {\n ...popoverProps,\n appendTo: \"parent\",\n description:\n popoverProps.description ||\n t(\"neetoMolecules.emailForm.tooltips.replyTo\"),\n },\n },\n});\n\nexport const resolveContent = (content, func, variable) => {\n if (typeof func === \"function\") {\n return func(content, variable);\n }\n\n return content;\n};\n\nexport const normalizeHtmlString = str => {\n if (typeof str !== \"string\") return str;\n\n return str\n .replace(/\\uFEFF/g, \"\")\n .replace(/\\r\\n|\\r/g, \"\\n\")\n .replace(/ /g, \" \")\n .replace(/[\\t ]+/g, \" \")\n .replace(/\\s*\\n\\s*/g, \"\\n\")\n .replace(/\\n+/g, \"\\n\")\n .replace(/>\\s+</g, \"><\")\n .trim();\n};\n","import { useFormikContext } from \"formik\";\nimport { isNotEmpty } from \"neetocist\";\nimport { Select, Input } from \"neetoui/formik\";\nimport { useTranslation } from \"react-i18next\";\n\nimport { getReplyToFieldLabelProps } from \"./utils\";\n\nconst ReplyToField = ({ options = [], popoverProps = {} }) => {\n const { t } = useTranslation();\n const { setFieldValue } = useFormikContext();\n\n const isDropdownField = isNotEmpty(options);\n const labelProps = getReplyToFieldLabelProps({ popoverProps });\n\n if (isDropdownField) {\n return (\n <Select\n {...{ labelProps, options }}\n isClearable\n className=\"w-full\"\n data-testid=\"replyToOptions\"\n label={t(\"neetoMolecules.emailForm.labels.replyTo\")}\n name=\"replyTo\"\n onChange={data => setFieldValue(\"replyTo\", data?.value ?? \"\")}\n />\n );\n }\n\n return (\n <Input\n {...{ labelProps }}\n autoFocus\n nakedInput\n required\n className=\"w-full\"\n data-testid=\"replyToInput\"\n label={t(\"neetoMolecules.emailForm.labels.replyTo\")}\n name=\"replyTo\"\n placeholder={t(\"neetoMolecules.emailForm.placeholders.emailPlaceholder\")}\n size=\"large\"\n onChange={event =>\n setFieldValue(\"replyTo\", event.target.value?.toLowerCase())\n }\n />\n );\n};\n\nexport default ReplyToField;\n","import { useTranslation } from \"react-i18next\";\n\nimport SendToFields from \"components/SendToFields\";\n\nconst SendToField = ({ showBccField, showCcField, showSendToTextField }) => {\n const { t } = useTranslation();\n\n if (!showSendToTextField && !showBccField && !showCcField) return null;\n\n return (\n <SendToFields\n showCcBccButton\n showBccField={showSendToTextField ? false : showBccField}\n showCcField={showSendToTextField ? false : showCcField}\n showSendToField={showSendToTextField}\n bccInputProps={{\n label: t(\"neetoMolecules.emailForm.labels.bCc\"),\n name: \"sendToBcc\",\n placeholder: t(\n \"neetoMolecules.emailForm.placeholders.commaSeparatedEmails\"\n ),\n }}\n ccInputProps={{\n label: t(\"neetoMolecules.emailForm.labels.cc\"),\n name: \"sendToCc\",\n placeholder: t(\n \"neetoMolecules.emailForm.placeholders.commaSeparatedEmails\"\n ),\n }}\n emailInputProps={{\n id: \"sendTo\",\n name: \"sendTo\",\n label: t(\"neetoMolecules.emailForm.labels.sendTo\"),\n placeholder: t(\n \"neetoMolecules.emailForm.placeholders.commaSeparatedEmails\"\n ),\n required: true,\n }}\n />\n );\n};\n\nexport default SendToField;\n","import { useState } from \"react\";\n\nimport { withEventTargetValue } from \"neetocommons/utils/general\";\nimport { Input } from \"neetoui\";\nimport { useTranslation } from \"react-i18next\";\n\nimport DynamicVariables from \"components/DynamicVariables\";\n\nconst SubjectField = ({\n name,\n text,\n updateText,\n subjectVariables = [],\n error,\n required = false,\n onBlur,\n}) => {\n const [isFieldFocusedOnce, setIsFieldFocusedOnce] = useState(false);\n\n const { t } = useTranslation();\n\n const tagClickHandler = ({ key: slug, category }) => {\n const textAreaElement = document.querySelector(`textarea[name=${name}]`);\n const splitIndex =\n isFieldFocusedOnce && textAreaElement\n ? textAreaElement.selectionEnd\n : text.length;\n\n const variable = category ? `${category}.${slug}` : slug;\n const updatedSubject = [\n text.slice(0, splitIndex),\n ` {{${variable}}}`,\n text.slice(splitIndex),\n ].join(\"\");\n updateText(updatedSubject);\n };\n\n return (\n <Input\n {...{ error, name, onBlur, required }}\n nakedInput\n label={t(\"neetoMolecules.emailForm.labels.subject\")}\n placeholder={t(\"neetoMolecules.emailForm.placeholders.subject\")}\n value={text}\n suffix={\n <DynamicVariables\n buttonProps={{ className: \"m-1\" }}\n variables={subjectVariables}\n dropdownProps={{\n className: \"neeto-ui-dropdown__popup overflow-y-auto\",\n buttonSize: \"small\",\n }}\n onVariableClick={tagClickHandler}\n />\n }\n onChange={withEventTargetValue(updateText)}\n onFocus={() => setIsFieldFocusedOnce(true)}\n />\n );\n};\n\nexport default SubjectField;\n","import { useContext } from \"react\";\n\nimport classnames from \"classnames\";\nimport { Field, useFormikContext } from \"formik\";\nimport { notEqualsDeep, isNotEmpty } from \"neetocist\";\nimport { FormikEditor } from \"neetoeditor\";\nimport { Button } from \"neetoui\";\nimport { ActionBlock, Radio } from \"neetoui/formik\";\nimport PropTypes from \"prop-types\";\nimport { equals } from \"ramda\";\nimport { useTranslation } from \"react-i18next\";\n\nimport { EDITOR_ADDONS } from \"./constants\";\nimport { EmailFormContext } from \"./contexts/EmailForm\";\nimport ReplyToField from \"./ReplyToField\";\nimport SendToField from \"./SendToField\";\nimport SubjectField from \"./SubjectField\";\nimport { normalizeHtmlString } from \"./utils\";\n\nconst EmailForm = ({\n messageVariables = [],\n subjectVariables = [],\n handleCancel,\n handleResetToDefault,\n isLoading,\n replyToFieldProps,\n sendToFieldProps,\n replyToOptions,\n sendToOptions = [],\n isUpdating = false,\n isResetting = false,\n showFields = true,\n className = \"\",\n editorAddons = EDITOR_ADDONS,\n showResetToDefaultButton,\n editorRef = null,\n defaultValues = {},\n}) => {\n const { t } = useTranslation();\n\n const {\n showSendToField,\n showSendToAsRadio,\n showReplyToField,\n showCcField,\n showBccField,\n } = useContext(EmailFormContext);\n\n const { setFieldValue, values, resetForm } = useFormikContext();\n\n const normalizedValues = {\n ...values,\n message: normalizeHtmlString(values.message),\n };\n\n const normalizedDefaultValues = {\n ...defaultValues,\n message: normalizeHtmlString(defaultValues?.message),\n };\n\n normalizedDefaultValues.replyTo ||= globalProps.user.email;\n\n const disabled = equals(normalizedValues, normalizedDefaultValues);\n\n const sendToFieldOptions = sendToFieldProps?.options || sendToOptions;\n const showSendToRadioField =\n showSendToField && showSendToAsRadio && isNotEmpty(sendToFieldOptions);\n\n const showSendToTextField = showSendToField && !showSendToRadioField;\n\n return (\n <div\n data-testid=\"email-form\"\n className={classnames(\n \"neeto-notification-email-wrapper__form-container flex flex-1 flex-col items-start gap-2 !pb-0\",\n { [className]: className }\n )}\n >\n <div className=\"w-full grow\">\n {showFields && (\n <div className=\"flex w-full flex-col items-start justify-start gap-5\">\n {showSendToRadioField && (\n <Radio\n className=\"pb-2\"\n data-testid=\"send-to-id\"\n label={t(\"neetoMolecules.emailForm.labels.sendTo\")}\n labelProps={{ required: true }}\n name=\"sendToId\"\n >\n {sendToFieldOptions.map(({ label, value }) => (\n <Radio.Item {...{ label, value }} key={value} />\n ))}\n </Radio>\n )}\n <SendToField\n {...{ showBccField, showCcField, showSendToTextField }}\n />\n {showReplyToField && (\n <div className=\"neeto-ui-border-gray-200 w-full border-b pb-1\">\n <ReplyToField options={replyToOptions} {...replyToFieldProps} />\n </div>\n )}\n <Field name=\"subject\">\n {({ field: { value, onBlur }, meta: { error, touched } }) => (\n <div className=\"neeto-notification-email-subject-block neeto-ui-border-gray-200 w-full border-b pb-1\">\n <SubjectField\n {...{ onBlur, subjectVariables }}\n required\n error={touched && error ? t(error) : undefined}\n name=\"subject\"\n text={value}\n updateText={text => setFieldValue(\"subject\", text)}\n />\n </div>\n )}\n </Field>\n <div\n className=\"neeto-notification-email-message-block w-full\"\n data-testid=\"message-input-container\"\n >\n <FormikEditor\n required\n addons={editorAddons}\n data-testid=\"message-input-field\"\n hideSlashCommands={false}\n id=\"form_message\"\n menuType=\"fixed\"\n name=\"message\"\n placeholder={t(\"neetoMolecules.emailForm.placeholders.message\")}\n ref={editorRef}\n variables={messageVariables}\n shouldUpdate={(nextProps, prevProps) =>\n notEqualsDeep(nextProps.variables, prevProps.variables)\n }\n />\n </div>\n </div>\n )}\n </div>\n <div className=\"neeto-ui-bg-white neeto-notification-email-wrapper__action-block z-10 flex w-full justify-between py-6 lg:sticky lg:bottom-0\">\n <ActionBlock\n cancelButtonProps={{ onClick: handleCancel }}\n isSubmitting={isLoading || isUpdating}\n />\n {showResetToDefaultButton && (\n <div className=\"neeto-ui-action-block__wrapper\">\n <Button\n {...{ disabled }}\n data-testid=\"reset-to-default-button\"\n label={t(\"neetoMolecules.emailForm.labels.resetToDefault\")}\n loading={isResetting}\n style=\"tertiary\"\n onClick={() => {\n resetForm();\n handleResetToDefault();\n }}\n />\n </div>\n )}\n </div>\n </div>\n );\n};\n\nEmailForm.propTypes = {\n /**\n * This is an array of objects used for templating within the message field. Each object in the array has a **label** and a **key**.\n */\n messageVariables: PropTypes.array,\n /**\n * This is an array of objects used for templating within the subject field. Each object in the array has a **label** and a **key**.\n */\n subjectVariables: PropTypes.array,\n /**\n * This function that gets triggered when the 'Cancel' button is clicked.\n */\n handleCancel: PropTypes.func,\n /**\n * This function that gets triggered when the 'Reset to default' button is clicked.\n */\n handleResetToDefault: PropTypes.func,\n /**\n * This Boolean value, when set to true, triggers the display of a loading indicator on the 'Save changes' button.\"\n */\n isLoading: PropTypes.bool,\n /**\n * This Boolean value, when set to true, triggers the display of a loading indicator on the 'Reset to default' button.\n */\n isResetting: PropTypes.bool,\n /**\n * An array of objects, with each object having **label** and **value** properties. This prop transforms the 'Reply To' field into a dropdown menu with given options. Without this prop, 'Reply To' will be a text input field.\n */\n replyToOptions: PropTypes.array,\n /**\n * An array of objects, with each object having **label** and **value** properties. This prop transforms the 'Send To' field into a radio group with given options. Without this prop, 'Send To' will be a multi email input field.\n */\n sendToOptions: PropTypes.array,\n /**\n * A Boolean flag indicating whether an update operation is currently in progress. When set to `true`, the 'Save changes' button is disabled.\n */\n isUpdating: PropTypes.bool,\n /**\n * To provide additional classnames to the button.\n */\n className: PropTypes.string,\n /**\n * To provide props to the replyToField. Supports options that will\n * be rendered as the reply to options and popover props.\n */\n replyToFieldProps: PropTypes.object,\n /**\n * To provide props to the sendToField. Supports sendTo options.\n */\n sendToFieldProps: PropTypes.object,\n /**\n * This Boolean value, when set to true, shows reset to default button.\n */\n showResetToDefaultButton: PropTypes.bool,\n /**\n * A reference to the editor.\n */\n editorRef: PropTypes.any,\n /**\n * To override the default editor addons\n */\n editorAddons: PropTypes.array,\n /**\n * The default values for the email form.\n */\n defaultValues: PropTypes.object,\n};\n\nexport default EmailForm;\n","import { noop, isNotEmpty } from \"neetocist\";\nimport { Tooltip } from \"neetoui\";\nimport { BlockNavigation, Switch } from \"neetoui/formik\";\nimport PropTypes from \"prop-types\";\nimport { isEmpty, pluck } from \"ramda\";\n\nimport { EmailFormProvider, EmailForm, EmailPreview } from \"..\";\nimport Header from \"../../Header\";\nimport MobilePreviewHeader from \"../../MobilePreviewHeader\";\nimport { INITIAL_FORM_VALUES } from \"../constants\";\nimport \"../email-form.scss\";\nimport { resolveContent } from \"../utils\";\n\nconst EmailFormComponent = ({\n onSubmit = noop,\n initialValues = INITIAL_FORM_VALUES,\n children,\n formikProps,\n validationSchema,\n showSendToField = false,\n showReplyToField = false,\n showSendToAsRadio = false,\n blockNavigation = true,\n showCcField = false,\n showBccField = false,\n isLoading = false,\n maxEmails = 10,\n emailFormProps = {},\n emailPreviewProps = {},\n headerProps = {},\n tooltipProps = {},\n switchProps = {},\n mobilePreviewProps = {},\n}) => {\n const { formatBody, formatSubject, bodyVariables, subjectVariables } =\n emailPreviewProps;\n\n const shouldShowFields = values => isEmpty(switchProps) || values.isEnabled;\n\n return (\n <EmailFormProvider\n {...{\n formikProps,\n initialValues,\n maxEmails,\n onSubmit,\n showBccField,\n showCcField,\n showReplyToField,\n showSendToAsRadio,\n showSendToField,\n validationSchema,\n }}\n >\n {({ values, isSubmitting }) => (\n <div className=\"neeto-notification-email-wrapper flex flex-grow flex-col overflow-y-auto lg:flex-row\">\n <div className=\"neeto-notification-email-wrapper__form-wrapper flex w-full flex-col px-5 md:px-10 lg:h-full lg:w-1/2 lg:overflow-y-auto\">\n {blockNavigation && <BlockNavigation />}\n {isNotEmpty(headerProps) && (\n <Header className=\"px-0\" size=\"small\" {...headerProps} />\n )}\n {isNotEmpty(switchProps) && (\n <div className=\"flex items-center justify-between gap-y-0.5 pb-6\">\n <Tooltip\n disabled={!switchProps?.disabled}\n position=\"top\"\n {...tooltipProps}\n >\n <div className=\"flex items-center gap-2\">\n <Switch\n data-testid=\"switch\"\n name=\"isEnabled\"\n {...switchProps}\n />\n </div>\n </Tooltip>\n </div>\n )}\n {shouldShowFields(values) && children}\n <EmailForm\n isLoading={isSubmitting || isLoading}\n isUpdating={isSubmitting || isLoading}\n showFields={shouldShowFields(values)}\n {...emailFormProps}\n />\n </div>\n {shouldShowFields(values) && (\n <MobilePreviewHeader\n className=\"lg:hidden\"\n {...mobilePreviewProps}\n />\n )}\n {shouldShowFields(values) && (\n <div className=\"neeto-notification-email-wrapper__preview-wrapper neeto-ui-bg-gray-100 w-full px-6 py-10 lg:w-1/2 lg:overflow-y-auto\">\n <EmailPreview\n body={resolveContent(values.message, formatBody, bodyVariables)}\n from={values.sendFrom}\n to={pluck(\"value\", values?.sendTo ?? [])}\n subject={resolveContent(\n values.subject,\n formatSubject,\n subjectVariables\n )}\n {...emailPreviewProps}\n />\n </div>\n )}\n </div>\n )}\n </EmailFormProvider>\n );\n};\n\nEmailFormComponent.propTypes = {\n /**\n * A function that will be triggered with input values when the 'Save changes' button is clicked.\n */\n onSubmit: PropTypes.func,\n /**\n * These are the predefined values that populate the form fields when the form is first rendered.\n */\n initialValues: PropTypes.shape({\n sendTo: PropTypes.array,\n sendToId: PropTypes.string,\n sendToCc: PropTypes.array,\n sendToBcc: PropTypes.array,\n replyTo: PropTypes.string,\n showCopyEmails: PropTypes.bool,\n subject: PropTypes.string,\n message: PropTypes.string,\n isEnabled: PropTypes.bool,\n }),\n /**\n * A prop that can be used to override the default Formik properties that are set within the component, providing customization flexibility.\n */\n formikProps: PropTypes.object,\n /**\n * A Yup object defining custom form validation rules, which will be merged with the default rules using the concat method.\n */\n validationSchema: PropTypes.object,\n /**\n * A prop used for rendering either standard React element or a render prop function.\n */\n children: PropTypes.oneOfType([PropTypes.func, PropTypes.node]),\n /**\n * A Boolean value that determines whether the '**sendTo**' field should be displayed or not.\n */\n showSendToField: PropTypes.bool,\n /**\n * A Boolean value that determines whether the '**replyTo**' field should be displayed or not.\n */\n showReplyToField: PropTypes.bool,\n /**\n * A Boolean value that determines whether the '**sendTo**' field should be radio type or not.\n */\n showSendToAsRadio: PropTypes.bool,\n /**\n * A Boolean value that determines whether the '**Cc**' field should be displayed or not when showSendToField is false.\n * This prop has no effect when showSendToField is true.\n */\n showCcField: PropTypes.bool,\n /**\n * A Boolean value that determines whether the '**Bcc**' field should be displayed or not when showSendToField is false.\n * This prop has no effect when showSendToField is true.\n */\n showBccField: PropTypes.bool,\n /**\n * This Boolean value, when set to true, triggers the display of a loading indicator on the 'Save changes' button.\"\n */\n isLoading: PropTypes.bool,\n /**\n * A prop to limit number of send to emails\n */\n maxEmails: PropTypes.number,\n /**\n * These are the values that will be passed to EmailForm Component\n */\n emailFormProps: PropTypes.shape({\n messageVariables: PropTypes.array,\n subjectVariables: PropTypes.array,\n handleCancel: PropTypes.func,\n handleResetToDefault: PropTypes.func,\n isLoading: PropTypes.bool,\n replyToFieldProps: PropTypes.object,\n sendToFieldProps: PropTypes.object,\n replyToOptions: PropTypes.array,\n sendToOptions: PropTypes.array,\n isUpdating: PropTypes.bool,\n showFields: PropTypes.bool,\n className: PropTypes.string,\n showResetToDefaultButton: PropTypes.bool,\n editorRef: PropTypes.any,\n editorAddons: PropTypes.array,\n }),\n /**\n * These are the values that will be passed to EmailPreview Component\n */\n emailPreviewProps: PropTypes.shape({\n to: PropTypes.array,\n from: PropTypes.string,\n subject: PropTypes.string,\n body: PropTypes.string,\n actionButtonText: PropTypes.string,\n logo: PropTypes.string,\n customContent: PropTypes.string,\n className: PropTypes.string,\n formatBody: PropTypes.func,\n formatSubject: PropTypes.func,\n bodyVariables: PropTypes.object,\n subjectVariables: PropTypes.object,\n }),\n /**\n * These are the values that will be passed to Header Component\n */\n headerProps: PropTypes.object,\n /**\n * These are the values that will be passed to Tooltip Component\n */\n tooltipProps: PropTypes.object,\n /**\n * These are the values that will be passed to Switch Component\n */\n switchProps: PropTypes.object,\n /**\n * These are the values that will be passed to MobilePreviewHeader Component\n */\n mobilePreviewProps: PropTypes.object,\n};\n\nexport default EmailFormComponent;\n","import { noop } from \"neetocist\";\nimport { Form } from \"neetoui/formik\";\nimport PropTypes from \"prop-types\";\n\nimport { INITIAL_FORM_VALUES } from \"./constants\";\nimport { EmailFormContext } from \"./contexts/EmailForm\";\nimport { getValidationSchema } from \"./utils\";\n\nconst EmailFormProvider = ({\n onSubmit = noop,\n initialValues = INITIAL_FORM_VALUES,\n children,\n formikProps,\n validationSchema: customValidations = {},\n showSendToField = false,\n showReplyToField = false,\n showSendToAsRadio = false,\n showCcField = false,\n showBccField = false,\n maxEmails = 10,\n}) => (\n <div\n className=\"neeto-notification-email-outer-wrapper\"\n data-testid=\"email-form-provider\"\n >\n <EmailFormContext.Provider\n value={{\n showSendToField,\n showSendToAsRadio,\n showReplyToField,\n showCcField,\n showBccField,\n }}\n >\n <Form\n className=\"neeto-notification-email-inner-wrapper\"\n formikProps={{\n enableReinitialize: true,\n validationSchema: getValidationSchema({\n showSendToField,\n showReplyToField,\n showSendToAsRadio,\n customValidations,\n maxEmails,\n }),\n initialValues: {\n ...initialValues,\n replyTo: initialValues.replyTo || globalProps.user.email,\n },\n onSubmit,\n ...formikProps,\n }}\n >\n {children}\n </Form>\n </EmailFormContext.Provider>\n </div>\n);\n\nEmailFormProvider.propTypes = {\n /**\n * A Boolean value that determines whether the '**sendTo**' field should be displayed or not.\n */\n showSendToField: PropTypes.bool,\n /**\n * A Boolean value that determines whether the '**replyTo**' field should be displayed or not.\n */\n showReplyToField: PropTypes.bool,\n /**\n * A Boolean value that determines whether the '**sendTo**' field should be radio type or not.\n */\n showSendToAsRadio: PropTypes.bool,\n /**\n * A function that will be triggered with input values when the 'Save changes' button is clicked.\n */\n onSubmit: PropTypes.func,\n /**\n * These are the predefined values that populate the form fields when the form is first rendered.\n */\n initialValues: PropTypes.shape({\n sendTo: PropTypes.array,\n sendToId: PropTypes.string,\n sendToCc: PropTypes.array,\n sendToBcc: PropTypes.array,\n replyTo: PropTypes.string,\n showCopyEmails: PropTypes.bool,\n subject: PropTypes.string,\n message: PropTypes.string,\n }),\n /**\n * A prop used for rendering either standard React element or a render prop function.\n */\n children: PropTypes.oneOfType([PropTypes.func, PropTypes.node]),\n /**\n * A prop that can be used to override the default Formik properties that are set within the component, providing customization flexibility.\n */\n formikProps: PropTypes.object,\n /**\n * A Yup object defining custom form validation rules, which will be merged with the default rules using the concat method.\n */\n validationSchema: PropTypes.object,\n /**\n * A prop to limit number of send to emails\n */\n maxEmails: PropTypes.number,\n /**\n * A Boolean value that determines whether the '**Cc**' field should be displayed or not when showSendToField is false.\n * This prop has no effect when showSendToField is true.\n */\n showCcField: PropTypes.bool,\n /**\n * A Boolean value that determines whether the '**Bcc**' field should be displayed or not when showSendToField is false.\n * This prop has no effect when showSendToField is true.\n */\n showBccField: PropTypes.bool,\n};\n\nexport default EmailFormProvider;\n"],"names":["INITIAL_FORM_VALUES","sendTo","sendToId","sendToCc","sendToBcc","replyTo","showCopyEmails","subject","message","isEnabled","EMAIL_FORM_VALIDATION_SCHEMA","yup","object","string","required","t","test","value","isEditorEmpty","sendToFieldValidation","maxEmails","validation","array","emails","every","prop","count","length","min","entity","nullable","SEND_TO_ID_FIELD_VALIDATION","REPLY_TO_FIELD_VALIDATION","email","EDITOR_ADDONS","EmailFormContext","createContext","showSendToField","showSendToAsRadio","showReplyToField","showCcField","showBccField","getValidationSchema","_ref","customValidations","schema","clone","concat","isYupObject","type","customFields","fields","shape","_typeof","getReplyToFieldLabelProps","_ref2","popoverProps","helpIconProps","_defineProperty","isPresent","content","touch","_objectSpread","appendTo","description","resolveContent","func","variable","normalizeHtmlString","str","replace","trim","ReplyToField","_ref$options","options","_ref$popoverProps","_useTranslation","useTranslation","_useFormikContext","useFormikContext","setFieldValue","isDropdownField","isNotEmpty","labelProps","_jsx","Select","isClearable","className","label","name","onChange","data","_data$value","Input","autoFocus","nakedInput","placeholder","size","event","_event$target$value","target","toLowerCase","SendToField","showSendToTextField","SendToFields","showCcBccButton","bccInputProps","ccInputProps","emailInputProps","id","SubjectField","text","updateText","_ref$subjectVariables","subjectVariables","error","_ref$required","onBlur","_useState","useState","_useState2","_slicedToArray","isFieldFocusedOnce","setIsFieldFocusedOnce","tagClickHandler","slug","key","category","textAreaElement","document","querySelector","splitIndex","selectionEnd","updatedSubject","slice","join","suffix","DynamicVariables","buttonProps","variables","dropdownProps","buttonSize","onVariableClick","withEventTargetValue","onFocus","EmailForm","_ref$messageVariables","messageVariables","handleCancel","handleResetToDefault","isLoading","replyToFieldProps","sendToFieldProps","replyToOptions","_ref$sendToOptions","sendToOptions","_ref$isUpdating","isUpdating","_ref$isResetting","isResetting","_ref$showFields","showFields","_ref$className","_ref$editorAddons","editorAddons","showResetToDefaultButton","_ref$editorRef","editorRef","_ref$defaultValues","defaultValues","_useContext","useContext","values","resetForm","normalizedValues","normalizedDefaultValues","globalProps","user","disabled","equals","sendToFieldOptions","showSendToRadioField","_jsxs","classnames","children","Radio","map","_createElement","Item","Field","_ref3","_ref3$field","field","_ref3$meta","meta","touched","undefined","FormikEditor","addons","hideSlashCommands","menuType","ref","shouldUpdate","nextProps","prevProps","notEqualsDeep","ActionBlock","cancelButtonProps","onClick","isSubmitting","Button","loading","style","EmailFormComponent","_ref$onSubmit","onSubmit","noop","_ref$initialValues","initialValues","formikProps","validationSchema","_ref$showSendToField","_ref$showReplyToField","_ref$showSendToAsRadi","_ref$blockNavigation","blockNavigation","_ref$showCcField","_ref$showBccField","_ref$isLoading","_ref$maxEmails","_ref$emailFormProps","emailFormProps","_ref$emailPreviewProp","emailPreviewProps","_ref$headerProps","headerProps","_ref$tooltipProps","tooltipProps","_ref$switchProps","switchProps","_ref$mobilePreviewPro","mobilePreviewProps","formatBody","formatSubject","bodyVariables","shouldShowFields","isEmpty","EmailFormProvider","_values$sendTo","BlockNavigation","Header","Tooltip","position","Switch","MobilePreviewHeader","EmailPreview","body","from","sendFrom","to","pluck","_ref$validationSchema","Provider","Form","enableReinitialize"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"EmailForm.js","sources":["../../src/components/EmailForm/constants.js","../../src/components/EmailForm/contexts/EmailForm.js","../../src/components/EmailForm/utils.js","../../src/components/EmailForm/ReplyToField.jsx","../../src/components/EmailForm/SendToField.jsx","../../src/components/EmailForm/SubjectField.jsx","../../src/components/EmailForm/EmailForm.jsx","../../src/components/EmailForm/EmailFormComponent/index.jsx","../../src/components/EmailForm/EmailFormProvider.jsx"],"sourcesContent":["import { t } from \"i18next\";\nimport { isEditorEmpty } from \"neetoeditor\";\nimport { prop } from \"ramda\";\nimport * as yup from \"yup\";\n\nexport const INITIAL_FORM_VALUES = {\n sendTo: [],\n sendToId: \"\",\n sendToCc: [],\n sendToBcc: [],\n replyTo: \"\",\n showCopyEmails: false,\n subject: \"\",\n message: \"\",\n isEnabled: false,\n};\n\nexport const EMAIL_FORM_VALIDATION_SCHEMA = yup.object({\n subject: yup\n .string()\n .required(t(\"neetoMolecules.emailForm.errors.subjectRequired\")),\n message: yup\n .string()\n .test(\n \"message\",\n t(\"neetoMolecules.emailForm.errors.messageRequired\"),\n value => !isEditorEmpty(value)\n ),\n});\n\nexport const sendToFieldValidation = maxEmails => {\n const validation = yup\n .array()\n .test(\n \"all-emails-valid\",\n t(\"neetoMolecules.emailForm.errors.invalidEmailAddress\"),\n emails => emails?.every(prop(\"valid\"))\n )\n .test(\n \"max-email-count\",\n t(\"neetoMolecules.emailForm.errors.maxEmails\", { count: maxEmails }),\n emails => emails?.length <= maxEmails\n );\n\n return yup.object({\n sendTo: validation\n .min(\n 1,\n t(\"neetoMolecules.emailForm.errors.required\", {\n entity: t(\"neetoMolecules.emailForm.fields.sendToEmailAddress\"),\n })\n )\n .nullable(),\n sendToCc: validation,\n sendToBcc: validation,\n });\n};\n\nexport const SEND_TO_ID_FIELD_VALIDATION = yup.object({\n sendToId: yup.string().required(\n t(\"neetoMolecules.emailForm.errors.required\", {\n entity: t(\"neetoMolecules.emailForm.labels.sendTo\"),\n })\n ),\n});\n\nexport const REPLY_TO_FIELD_VALIDATION = yup.object({\n replyTo: yup\n .string()\n .nullable()\n .email(t(\"neetoMolecules.emailForm.errors.invalidEmailAddress\"))\n .required(\n t(\"neetoMolecules.emailForm.errors.required\", {\n entity: t(\"neetoMolecules.emailForm.fields.replyToEmailAddress\"),\n })\n ),\n});\n\nexport const EDITOR_ADDONS = [\n \"highlight\",\n \"emoji\",\n \"code-block\",\n \"block-quote\",\n \"image-upload\",\n \"divider\",\n \"video-embed\",\n];\n\nexport const ALLOWED_FILE_PICKER_TYPES = [\".csv\"];\n","/* eslint-disable @bigbinary/neeto/use-zustand-for-global-state-management */\nimport { createContext } from \"react\";\n\nconst EmailFormContext = createContext({\n showSendToField: false,\n showSendToAsRadio: false,\n showReplyToField: false,\n showCcField: false,\n showBccField: false,\n});\n\nexport { EmailFormContext };\n","import { t } from \"i18next\";\nimport { isPresent } from \"neetocist\";\n\nimport {\n EMAIL_FORM_VALIDATION_SCHEMA,\n REPLY_TO_FIELD_VALIDATION,\n sendToFieldValidation,\n SEND_TO_ID_FIELD_VALIDATION,\n} from \"./constants\";\n\nexport const getValidationSchema = ({\n showSendToField,\n showReplyToField,\n showSendToAsRadio,\n customValidations,\n maxEmails,\n}) => {\n let schema = EMAIL_FORM_VALIDATION_SCHEMA.clone();\n\n if (showSendToField) {\n schema = schema.concat(\n showSendToAsRadio\n ? SEND_TO_ID_FIELD_VALIDATION\n : sendToFieldValidation(maxEmails)\n );\n }\n\n if (showReplyToField) schema = schema.concat(REPLY_TO_FIELD_VALIDATION);\n\n const isYupObject = customValidations.type === \"object\";\n\n if (isYupObject) {\n const customFields = customValidations.fields || {};\n schema = schema.shape(customFields);\n } else if (typeof customValidations === \"object\") {\n schema = schema.shape(customValidations);\n }\n\n return schema;\n};\n\nexport const getReplyToFieldLabelProps = ({ popoverProps }) => ({\n helpIconProps: {\n [\"data-testid\"]: \"reply-to-tooltip\",\n tooltipProps: !isPresent(popoverProps) && {\n content: t(\"neetoMolecules.emailForm.tooltips.replyTo\"),\n touch: [\"hold\", 500],\n },\n popoverProps: isPresent(popoverProps) && {\n ...popoverProps,\n appendTo: \"parent\",\n description:\n popoverProps.description ||\n t(\"neetoMolecules.emailForm.tooltips.replyTo\"),\n },\n },\n});\n\nexport const resolveContent = (content, func, variable) => {\n if (typeof func === \"function\") {\n return func(content, variable);\n }\n\n return content;\n};\n\nexport const normalizeHtmlString = str => {\n if (typeof str !== \"string\") return str;\n\n return str\n .replace(/\\uFEFF/g, \"\")\n .replace(/\\r\\n|\\r/g, \"\\n\")\n .replace(/ /g, \" \")\n .replace(/[\\t ]+/g, \" \")\n .replace(/\\s*\\n\\s*/g, \"\\n\")\n .replace(/\\n+/g, \"\\n\")\n .replace(/>\\s+</g, \"><\")\n .trim();\n};\n","import { useFormikContext } from \"formik\";\nimport { isNotEmpty } from \"neetocist\";\nimport { Select, Input } from \"neetoui/formik\";\nimport { useTranslation } from \"react-i18next\";\n\nimport { getReplyToFieldLabelProps } from \"./utils\";\n\nconst ReplyToField = ({ options = [], popoverProps = {} }) => {\n const { t } = useTranslation();\n const { setFieldValue } = useFormikContext();\n\n const isDropdownField = isNotEmpty(options);\n const labelProps = getReplyToFieldLabelProps({ popoverProps });\n\n if (isDropdownField) {\n return (\n <Select\n {...{ labelProps, options }}\n isClearable\n className=\"w-full\"\n data-testid=\"reply-to-select-field\"\n label={t(\"neetoMolecules.emailForm.labels.replyTo\")}\n name=\"replyTo\"\n onChange={data => setFieldValue(\"replyTo\", data?.value ?? \"\")}\n />\n );\n }\n\n return (\n <Input\n {...{ labelProps }}\n autoFocus\n nakedInput\n required\n className=\"w-full\"\n data-testid=\"reply-to-input-field\"\n label={t(\"neetoMolecules.emailForm.labels.replyTo\")}\n name=\"replyTo\"\n placeholder={t(\"neetoMolecules.emailForm.placeholders.emailPlaceholder\")}\n size=\"large\"\n onChange={event =>\n setFieldValue(\"replyTo\", event.target.value?.toLowerCase())\n }\n />\n );\n};\n\nexport default ReplyToField;\n","import { useTranslation } from \"react-i18next\";\n\nimport SendToFields from \"components/SendToFields\";\n\nconst SendToField = ({ showBccField, showCcField, showSendToTextField }) => {\n const { t } = useTranslation();\n\n if (!showSendToTextField && !showBccField && !showCcField) return null;\n\n return (\n <SendToFields\n showCcBccButton\n showBccField={showSendToTextField ? false : showBccField}\n showCcField={showSendToTextField ? false : showCcField}\n showSendToField={showSendToTextField}\n bccInputProps={{\n label: t(\"neetoMolecules.emailForm.labels.bCc\"),\n name: \"sendToBcc\",\n placeholder: t(\n \"neetoMolecules.emailForm.placeholders.commaSeparatedEmails\"\n ),\n }}\n ccInputProps={{\n label: t(\"neetoMolecules.emailForm.labels.cc\"),\n name: \"sendToCc\",\n placeholder: t(\n \"neetoMolecules.emailForm.placeholders.commaSeparatedEmails\"\n ),\n }}\n emailInputProps={{\n id: \"sendTo\",\n name: \"sendTo\",\n label: t(\"neetoMolecules.emailForm.labels.sendTo\"),\n placeholder: t(\n \"neetoMolecules.emailForm.placeholders.commaSeparatedEmails\"\n ),\n required: true,\n }}\n />\n );\n};\n\nexport default SendToField;\n","import { useState } from \"react\";\n\nimport { withEventTargetValue } from \"neetocommons/utils/general\";\nimport { Input } from \"neetoui\";\nimport { useTranslation } from \"react-i18next\";\n\nimport DynamicVariables from \"components/DynamicVariables\";\n\nconst SubjectField = ({\n name,\n text,\n updateText,\n subjectVariables = [],\n error,\n required = false,\n onBlur,\n}) => {\n const [isFieldFocusedOnce, setIsFieldFocusedOnce] = useState(false);\n\n const { t } = useTranslation();\n\n const tagClickHandler = ({ key: slug, category }) => {\n const textAreaElement = document.querySelector(`textarea[name=${name}]`);\n const splitIndex =\n isFieldFocusedOnce && textAreaElement\n ? textAreaElement.selectionEnd\n : text.length;\n\n const variable = category ? `${category}.${slug}` : slug;\n const updatedSubject = [\n text.slice(0, splitIndex),\n ` {{${variable}}}`,\n text.slice(splitIndex),\n ].join(\"\");\n updateText(updatedSubject);\n };\n\n return (\n <Input\n {...{ error, name, onBlur, required }}\n nakedInput\n label={t(\"neetoMolecules.emailForm.labels.subject\")}\n placeholder={t(\"neetoMolecules.emailForm.placeholders.subject\")}\n value={text}\n suffix={\n <DynamicVariables\n buttonProps={{ className: \"m-1\" }}\n variables={subjectVariables}\n dropdownProps={{\n className: \"neeto-ui-dropdown__popup overflow-y-auto\",\n buttonSize: \"small\",\n }}\n onVariableClick={tagClickHandler}\n />\n }\n onChange={withEventTargetValue(updateText)}\n onFocus={() => setIsFieldFocusedOnce(true)}\n />\n );\n};\n\nexport default SubjectField;\n","import { useContext } from \"react\";\n\nimport classnames from \"classnames\";\nimport { Field, useFormikContext } from \"formik\";\nimport { notEqualsDeep, isNotEmpty } from \"neetocist\";\nimport { FormikEditor } from \"neetoeditor\";\nimport { Button } from \"neetoui\";\nimport { ActionBlock, Radio } from \"neetoui/formik\";\nimport PropTypes from \"prop-types\";\nimport { equals } from \"ramda\";\nimport { useTranslation } from \"react-i18next\";\n\nimport { EDITOR_ADDONS } from \"./constants\";\nimport { EmailFormContext } from \"./contexts/EmailForm\";\nimport ReplyToField from \"./ReplyToField\";\nimport SendToField from \"./SendToField\";\nimport SubjectField from \"./SubjectField\";\nimport { normalizeHtmlString } from \"./utils\";\n\nconst EmailForm = ({\n messageVariables = [],\n subjectVariables = [],\n handleCancel,\n handleResetToDefault,\n isLoading,\n replyToFieldProps,\n sendToFieldProps,\n replyToOptions,\n sendToOptions = [],\n isUpdating = false,\n isResetting = false,\n showFields = true,\n className = \"\",\n editorAddons = EDITOR_ADDONS,\n showResetToDefaultButton,\n editorRef = null,\n defaultValues = {},\n}) => {\n const { t } = useTranslation();\n\n const {\n showSendToField,\n showSendToAsRadio,\n showReplyToField,\n showCcField,\n showBccField,\n } = useContext(EmailFormContext);\n\n const { setFieldValue, values, resetForm } = useFormikContext();\n\n const normalizedValues = {\n ...values,\n message: normalizeHtmlString(values.message),\n };\n\n const normalizedDefaultValues = {\n ...defaultValues,\n message: normalizeHtmlString(defaultValues?.message),\n };\n\n normalizedDefaultValues.replyTo ||= globalProps.user.email;\n\n const disabled = equals(normalizedValues, normalizedDefaultValues);\n\n const sendToFieldOptions = sendToFieldProps?.options || sendToOptions;\n const showSendToRadioField =\n showSendToField && showSendToAsRadio && isNotEmpty(sendToFieldOptions);\n\n const showSendToTextField = showSendToField && !showSendToRadioField;\n\n return (\n <div\n data-testid=\"email-form\"\n className={classnames(\n \"neeto-notification-email-wrapper__form-container flex flex-1 flex-col items-start gap-2 !pb-0\",\n { [className]: className }\n )}\n >\n <div className=\"w-full grow\">\n {showFields && (\n <div className=\"flex w-full flex-col items-start justify-start gap-5\">\n {showSendToRadioField && (\n <Radio\n className=\"pb-2\"\n data-testid=\"send-to-id\"\n label={t(\"neetoMolecules.emailForm.labels.sendTo\")}\n labelProps={{ required: true }}\n name=\"sendToId\"\n >\n {sendToFieldOptions.map(({ label, value }) => (\n <Radio.Item {...{ label, value }} key={value} />\n ))}\n </Radio>\n )}\n <SendToField\n {...{ showBccField, showCcField, showSendToTextField }}\n />\n {showReplyToField && (\n <div className=\"neeto-ui-border-gray-200 w-full border-b pb-1\">\n <ReplyToField options={replyToOptions} {...replyToFieldProps} />\n </div>\n )}\n <Field name=\"subject\">\n {({ field: { value, onBlur }, meta: { error, touched } }) => (\n <div className=\"neeto-notification-email-subject-block neeto-ui-border-gray-200 w-full border-b pb-1\">\n <SubjectField\n {...{ onBlur, subjectVariables }}\n required\n error={touched && error ? t(error) : undefined}\n name=\"subject\"\n text={value}\n updateText={text => setFieldValue(\"subject\", text)}\n />\n </div>\n )}\n </Field>\n <div\n className=\"neeto-notification-email-message-block w-full\"\n data-testid=\"message-input-container\"\n >\n <FormikEditor\n required\n addons={editorAddons}\n data-testid=\"message-input-field\"\n hideSlashCommands={false}\n id=\"form_message\"\n menuType=\"fixed\"\n name=\"message\"\n placeholder={t(\"neetoMolecules.emailForm.placeholders.message\")}\n ref={editorRef}\n variables={messageVariables}\n shouldUpdate={(nextProps, prevProps) =>\n notEqualsDeep(nextProps.variables, prevProps.variables)\n }\n />\n </div>\n </div>\n )}\n </div>\n <div className=\"neeto-ui-bg-white neeto-notification-email-wrapper__action-block z-10 flex w-full justify-between py-6 lg:sticky lg:bottom-0\">\n <ActionBlock\n cancelButtonProps={{ onClick: handleCancel }}\n isSubmitting={isLoading || isUpdating}\n />\n {showResetToDefaultButton && (\n <div className=\"neeto-ui-action-block__wrapper\">\n <Button\n {...{ disabled }}\n data-testid=\"reset-to-default-button\"\n label={t(\"neetoMolecules.emailForm.labels.resetToDefault\")}\n loading={isResetting}\n style=\"tertiary\"\n onClick={() => {\n resetForm();\n handleResetToDefault();\n }}\n />\n </div>\n )}\n </div>\n </div>\n );\n};\n\nEmailForm.propTypes = {\n /**\n * This is an array of objects used for templating within the message field. Each object in the array has a **label** and a **key**.\n */\n messageVariables: PropTypes.array,\n /**\n * This is an array of objects used for templating within the subject field. Each object in the array has a **label** and a **key**.\n */\n subjectVariables: PropTypes.array,\n /**\n * This function that gets triggered when the 'Cancel' button is clicked.\n */\n handleCancel: PropTypes.func,\n /**\n * This function that gets triggered when the 'Reset to default' button is clicked.\n */\n handleResetToDefault: PropTypes.func,\n /**\n * This Boolean value, when set to true, triggers the display of a loading indicator on the 'Save changes' button.\"\n */\n isLoading: PropTypes.bool,\n /**\n * This Boolean value, when set to true, triggers the display of a loading indicator on the 'Reset to default' button.\n */\n isResetting: PropTypes.bool,\n /**\n * An array of objects, with each object having **label** and **value** properties. This prop transforms the 'Reply To' field into a dropdown menu with given options. Without this prop, 'Reply To' will be a text input field.\n */\n replyToOptions: PropTypes.array,\n /**\n * An array of objects, with each object having **label** and **value** properties. This prop transforms the 'Send To' field into a radio group with given options. Without this prop, 'Send To' will be a multi email input field.\n */\n sendToOptions: PropTypes.array,\n /**\n * A Boolean flag indicating whether an update operation is currently in progress. When set to `true`, the 'Save changes' button is disabled.\n */\n isUpdating: PropTypes.bool,\n /**\n * To provide additional classnames to the button.\n */\n className: PropTypes.string,\n /**\n * To provide props to the replyToField. Supports options that will\n * be rendered as the reply to options and popover props.\n */\n replyToFieldProps: PropTypes.object,\n /**\n * To provide props to the sendToField. Supports sendTo options.\n */\n sendToFieldProps: PropTypes.object,\n /**\n * This Boolean value, when set to true, shows reset to default button.\n */\n showResetToDefaultButton: PropTypes.bool,\n /**\n * A reference to the editor.\n */\n editorRef: PropTypes.any,\n /**\n * To override the default editor addons\n */\n editorAddons: PropTypes.array,\n /**\n * The default values for the email form.\n */\n defaultValues: PropTypes.object,\n};\n\nexport default EmailForm;\n","import { noop, isNotEmpty } from \"neetocist\";\nimport { Tooltip } from \"neetoui\";\nimport { BlockNavigation, Switch } from \"neetoui/formik\";\nimport PropTypes from \"prop-types\";\nimport { isEmpty, pluck } from \"ramda\";\n\nimport { EmailFormProvider, EmailForm, EmailPreview } from \"..\";\nimport Header from \"../../Header\";\nimport MobilePreviewHeader from \"../../MobilePreviewHeader\";\nimport { INITIAL_FORM_VALUES } from \"../constants\";\nimport \"../email-form.scss\";\nimport { resolveContent } from \"../utils\";\n\nconst EmailFormComponent = ({\n onSubmit = noop,\n initialValues = INITIAL_FORM_VALUES,\n children,\n formikProps,\n validationSchema,\n showSendToField = false,\n showReplyToField = false,\n showSendToAsRadio = false,\n blockNavigation = true,\n showCcField = false,\n showBccField = false,\n isLoading = false,\n maxEmails = 10,\n emailFormProps = {},\n emailPreviewProps = {},\n headerProps = {},\n tooltipProps = {},\n switchProps = {},\n mobilePreviewProps = {},\n}) => {\n const { formatBody, formatSubject, bodyVariables, subjectVariables } =\n emailPreviewProps;\n\n const shouldShowFields = values => isEmpty(switchProps) || values.isEnabled;\n\n return (\n <EmailFormProvider\n {...{\n formikProps,\n initialValues,\n maxEmails,\n onSubmit,\n showBccField,\n showCcField,\n showReplyToField,\n showSendToAsRadio,\n showSendToField,\n validationSchema,\n }}\n >\n {({ values, isSubmitting }) => (\n <div className=\"neeto-notification-email-wrapper flex flex-grow flex-col overflow-y-auto lg:flex-row\">\n <div className=\"neeto-notification-email-wrapper__form-wrapper flex w-full flex-col px-5 md:px-10 lg:h-full lg:w-1/2 lg:overflow-y-auto\">\n {blockNavigation && <BlockNavigation />}\n {isNotEmpty(headerProps) && (\n <Header className=\"px-0\" size=\"small\" {...headerProps} />\n )}\n {isNotEmpty(switchProps) && (\n <div className=\"flex items-center justify-between gap-y-0.5 pb-6\">\n <Tooltip\n disabled={!switchProps?.disabled}\n position=\"top\"\n {...tooltipProps}\n >\n <div className=\"flex items-center gap-2\">\n <Switch\n data-testid=\"switch\"\n name=\"isEnabled\"\n {...switchProps}\n />\n </div>\n </Tooltip>\n </div>\n )}\n {shouldShowFields(values) && children}\n <EmailForm\n isLoading={isSubmitting || isLoading}\n isUpdating={isSubmitting || isLoading}\n showFields={shouldShowFields(values)}\n {...emailFormProps}\n />\n </div>\n {shouldShowFields(values) && (\n <MobilePreviewHeader\n className=\"lg:hidden\"\n {...mobilePreviewProps}\n />\n )}\n {shouldShowFields(values) && (\n <div className=\"neeto-notification-email-wrapper__preview-wrapper neeto-ui-bg-gray-100 w-full px-6 py-10 lg:w-1/2 lg:overflow-y-auto\">\n <EmailPreview\n body={resolveContent(values.message, formatBody, bodyVariables)}\n from={values.sendFrom}\n to={pluck(\"value\", values?.sendTo ?? [])}\n subject={resolveContent(\n values.subject,\n formatSubject,\n subjectVariables\n )}\n {...emailPreviewProps}\n />\n </div>\n )}\n </div>\n )}\n </EmailFormProvider>\n );\n};\n\nEmailFormComponent.propTypes = {\n /**\n * A function that will be triggered with input values when the 'Save changes' button is clicked.\n */\n onSubmit: PropTypes.func,\n /**\n * These are the predefined values that populate the form fields when the form is first rendered.\n */\n initialValues: PropTypes.shape({\n sendTo: PropTypes.array,\n sendToId: PropTypes.string,\n sendToCc: PropTypes.array,\n sendToBcc: PropTypes.array,\n replyTo: PropTypes.string,\n showCopyEmails: PropTypes.bool,\n subject: PropTypes.string,\n message: PropTypes.string,\n isEnabled: PropTypes.bool,\n }),\n /**\n * A prop that can be used to override the default Formik properties that are set within the component, providing customization flexibility.\n */\n formikProps: PropTypes.object,\n /**\n * A Yup object defining custom form validation rules, which will be merged with the default rules using the concat method.\n */\n validationSchema: PropTypes.object,\n /**\n * A prop used for rendering either standard React element or a render prop function.\n */\n children: PropTypes.oneOfType([PropTypes.func, PropTypes.node]),\n /**\n * A Boolean value that determines whether the '**sendTo**' field should be displayed or not.\n */\n showSendToField: PropTypes.bool,\n /**\n * A Boolean value that determines whether the '**replyTo**' field should be displayed or not.\n */\n showReplyToField: PropTypes.bool,\n /**\n * A Boolean value that determines whether the '**sendTo**' field should be radio type or not.\n */\n showSendToAsRadio: PropTypes.bool,\n /**\n * A Boolean value that determines whether the '**Cc**' field should be displayed or not when showSendToField is false.\n * This prop has no effect when showSendToField is true.\n */\n showCcField: PropTypes.bool,\n /**\n * A Boolean value that determines whether the '**Bcc**' field should be displayed or not when showSendToField is false.\n * This prop has no effect when showSendToField is true.\n */\n showBccField: PropTypes.bool,\n /**\n * This Boolean value, when set to true, triggers the display of a loading indicator on the 'Save changes' button.\"\n */\n isLoading: PropTypes.bool,\n /**\n * A prop to limit number of send to emails\n */\n maxEmails: PropTypes.number,\n /**\n * These are the values that will be passed to EmailForm Component\n */\n emailFormProps: PropTypes.shape({\n messageVariables: PropTypes.array,\n subjectVariables: PropTypes.array,\n handleCancel: PropTypes.func,\n handleResetToDefault: PropTypes.func,\n isLoading: PropTypes.bool,\n replyToFieldProps: PropTypes.object,\n sendToFieldProps: PropTypes.object,\n replyToOptions: PropTypes.array,\n sendToOptions: PropTypes.array,\n isUpdating: PropTypes.bool,\n showFields: PropTypes.bool,\n className: PropTypes.string,\n showResetToDefaultButton: PropTypes.bool,\n editorRef: PropTypes.any,\n editorAddons: PropTypes.array,\n }),\n /**\n * These are the values that will be passed to EmailPreview Component\n */\n emailPreviewProps: PropTypes.shape({\n to: PropTypes.array,\n from: PropTypes.string,\n subject: PropTypes.string,\n body: PropTypes.string,\n actionButtonText: PropTypes.string,\n logo: PropTypes.string,\n customContent: PropTypes.string,\n className: PropTypes.string,\n formatBody: PropTypes.func,\n formatSubject: PropTypes.func,\n bodyVariables: PropTypes.object,\n subjectVariables: PropTypes.object,\n }),\n /**\n * These are the values that will be passed to Header Component\n */\n headerProps: PropTypes.object,\n /**\n * These are the values that will be passed to Tooltip Component\n */\n tooltipProps: PropTypes.object,\n /**\n * These are the values that will be passed to Switch Component\n */\n switchProps: PropTypes.object,\n /**\n * These are the values that will be passed to MobilePreviewHeader Component\n */\n mobilePreviewProps: PropTypes.object,\n};\n\nexport default EmailFormComponent;\n","import { noop } from \"neetocist\";\nimport { Form } from \"neetoui/formik\";\nimport PropTypes from \"prop-types\";\n\nimport { INITIAL_FORM_VALUES } from \"./constants\";\nimport { EmailFormContext } from \"./contexts/EmailForm\";\nimport { getValidationSchema } from \"./utils\";\n\nconst EmailFormProvider = ({\n onSubmit = noop,\n initialValues = INITIAL_FORM_VALUES,\n children,\n formikProps,\n validationSchema: customValidations = {},\n showSendToField = false,\n showReplyToField = false,\n showSendToAsRadio = false,\n showCcField = false,\n showBccField = false,\n maxEmails = 10,\n}) => (\n <div\n className=\"neeto-notification-email-outer-wrapper\"\n data-testid=\"email-form-provider\"\n >\n <EmailFormContext.Provider\n value={{\n showSendToField,\n showSendToAsRadio,\n showReplyToField,\n showCcField,\n showBccField,\n }}\n >\n <Form\n className=\"neeto-notification-email-inner-wrapper\"\n formikProps={{\n enableReinitialize: true,\n validationSchema: getValidationSchema({\n showSendToField,\n showReplyToField,\n showSendToAsRadio,\n customValidations,\n maxEmails,\n }),\n initialValues: {\n ...initialValues,\n replyTo: initialValues.replyTo || globalProps.user.email,\n },\n onSubmit,\n ...formikProps,\n }}\n >\n {children}\n </Form>\n </EmailFormContext.Provider>\n </div>\n);\n\nEmailFormProvider.propTypes = {\n /**\n * A Boolean value that determines whether the '**sendTo**' field should be displayed or not.\n */\n showSendToField: PropTypes.bool,\n /**\n * A Boolean value that determines whether the '**replyTo**' field should be displayed or not.\n */\n showReplyToField: PropTypes.bool,\n /**\n * A Boolean value that determines whether the '**sendTo**' field should be radio type or not.\n */\n showSendToAsRadio: PropTypes.bool,\n /**\n * A function that will be triggered with input values when the 'Save changes' button is clicked.\n */\n onSubmit: PropTypes.func,\n /**\n * These are the predefined values that populate the form fields when the form is first rendered.\n */\n initialValues: PropTypes.shape({\n sendTo: PropTypes.array,\n sendToId: PropTypes.string,\n sendToCc: PropTypes.array,\n sendToBcc: PropTypes.array,\n replyTo: PropTypes.string,\n showCopyEmails: PropTypes.bool,\n subject: PropTypes.string,\n message: PropTypes.string,\n }),\n /**\n * A prop used for rendering either standard React element or a render prop function.\n */\n children: PropTypes.oneOfType([PropTypes.func, PropTypes.node]),\n /**\n * A prop that can be used to override the default Formik properties that are set within the component, providing customization flexibility.\n */\n formikProps: PropTypes.object,\n /**\n * A Yup object defining custom form validation rules, which will be merged with the default rules using the concat method.\n */\n validationSchema: PropTypes.object,\n /**\n * A prop to limit number of send to emails\n */\n maxEmails: PropTypes.number,\n /**\n * A Boolean value that determines whether the '**Cc**' field should be displayed or not when showSendToField is false.\n * This prop has no effect when showSendToField is true.\n */\n showCcField: PropTypes.bool,\n /**\n * A Boolean value that determines whether the '**Bcc**' field should be displayed or not when showSendToField is false.\n * This prop has no effect when showSendToField is true.\n */\n showBccField: PropTypes.bool,\n};\n\nexport default EmailFormProvider;\n"],"names":["INITIAL_FORM_VALUES","sendTo","sendToId","sendToCc","sendToBcc","replyTo","showCopyEmails","subject","message","isEnabled","EMAIL_FORM_VALIDATION_SCHEMA","yup","object","string","required","t","test","value","isEditorEmpty","sendToFieldValidation","maxEmails","validation","array","emails","every","prop","count","length","min","entity","nullable","SEND_TO_ID_FIELD_VALIDATION","REPLY_TO_FIELD_VALIDATION","email","EDITOR_ADDONS","EmailFormContext","createContext","showSendToField","showSendToAsRadio","showReplyToField","showCcField","showBccField","getValidationSchema","_ref","customValidations","schema","clone","concat","isYupObject","type","customFields","fields","shape","_typeof","getReplyToFieldLabelProps","_ref2","popoverProps","helpIconProps","_defineProperty","isPresent","content","touch","_objectSpread","appendTo","description","resolveContent","func","variable","normalizeHtmlString","str","replace","trim","ReplyToField","_ref$options","options","_ref$popoverProps","_useTranslation","useTranslation","_useFormikContext","useFormikContext","setFieldValue","isDropdownField","isNotEmpty","labelProps","_jsx","Select","isClearable","className","label","name","onChange","data","_data$value","Input","autoFocus","nakedInput","placeholder","size","event","_event$target$value","target","toLowerCase","SendToField","showSendToTextField","SendToFields","showCcBccButton","bccInputProps","ccInputProps","emailInputProps","id","SubjectField","text","updateText","_ref$subjectVariables","subjectVariables","error","_ref$required","onBlur","_useState","useState","_useState2","_slicedToArray","isFieldFocusedOnce","setIsFieldFocusedOnce","tagClickHandler","slug","key","category","textAreaElement","document","querySelector","splitIndex","selectionEnd","updatedSubject","slice","join","suffix","DynamicVariables","buttonProps","variables","dropdownProps","buttonSize","onVariableClick","withEventTargetValue","onFocus","EmailForm","_ref$messageVariables","messageVariables","handleCancel","handleResetToDefault","isLoading","replyToFieldProps","sendToFieldProps","replyToOptions","_ref$sendToOptions","sendToOptions","_ref$isUpdating","isUpdating","_ref$isResetting","isResetting","_ref$showFields","showFields","_ref$className","_ref$editorAddons","editorAddons","showResetToDefaultButton","_ref$editorRef","editorRef","_ref$defaultValues","defaultValues","_useContext","useContext","values","resetForm","normalizedValues","normalizedDefaultValues","globalProps","user","disabled","equals","sendToFieldOptions","showSendToRadioField","_jsxs","classnames","children","Radio","map","_createElement","Item","Field","_ref3","_ref3$field","field","_ref3$meta","meta","touched","undefined","FormikEditor","addons","hideSlashCommands","menuType","ref","shouldUpdate","nextProps","prevProps","notEqualsDeep","ActionBlock","cancelButtonProps","onClick","isSubmitting","Button","loading","style","EmailFormComponent","_ref$onSubmit","onSubmit","noop","_ref$initialValues","initialValues","formikProps","validationSchema","_ref$showSendToField","_ref$showReplyToField","_ref$showSendToAsRadi","_ref$blockNavigation","blockNavigation","_ref$showCcField","_ref$showBccField","_ref$isLoading","_ref$maxEmails","_ref$emailFormProps","emailFormProps","_ref$emailPreviewProp","emailPreviewProps","_ref$headerProps","headerProps","_ref$tooltipProps","tooltipProps","_ref$switchProps","switchProps","_ref$mobilePreviewPro","mobilePreviewProps","formatBody","formatSubject","bodyVariables","shouldShowFields","isEmpty","EmailFormProvider","_values$sendTo","BlockNavigation","Header","Tooltip","position","Switch","MobilePreviewHeader","EmailPreview","body","from","sendFrom","to","pluck","_ref$validationSchema","Provider","Form","enableReinitialize"],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@bigbinary/neeto-molecules",
|
|
3
|
-
"version": "4.0.
|
|
3
|
+
"version": "4.0.152",
|
|
4
4
|
"description": "A package of reusable molecular components for neeto products.",
|
|
5
5
|
"repository": "git@github.com:bigbinary/neeto-molecules.git",
|
|
6
6
|
"author": "Amaljith K <amaljith.k@bigbinary.com>",
|
package/src/translations/en.json
CHANGED
|
@@ -671,7 +671,17 @@
|
|
|
671
671
|
"allDay": "All Day",
|
|
672
672
|
"weekly": "Weekly",
|
|
673
673
|
"monthly": "Monthly",
|
|
674
|
-
"daily": "Daily"
|
|
674
|
+
"daily": "Daily",
|
|
675
|
+
"today": "Today",
|
|
676
|
+
"aria": {
|
|
677
|
+
"calendarControls": "Calendar controls",
|
|
678
|
+
"viewSelector": "Select calendar view, currently {{view}}",
|
|
679
|
+
"goToToday": "Go to today's date",
|
|
680
|
+
"dateNavigation": "Date navigation",
|
|
681
|
+
"previousPeriod": "Previous {{period}}",
|
|
682
|
+
"nextPeriod": "Next {{period}}",
|
|
683
|
+
"selectDate": "Select date, currently {{currentDate}}"
|
|
684
|
+
}
|
|
675
685
|
},
|
|
676
686
|
"settingsPage": {
|
|
677
687
|
"title": "Settings",
|