@startlibs/form 1.0.11 → 1.1.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/lib/AutoComplete.mjs +550 -0
- package/lib/AutoComplete.mjs.map +1 -0
- package/lib/Checkbox.mjs +76 -0
- package/lib/Checkbox.mjs.map +1 -0
- package/lib/Combobox.mjs +544 -0
- package/lib/Combobox.mjs.map +1 -0
- package/lib/ComboboxWithCustom.mjs +77 -0
- package/lib/ComboboxWithCustom.mjs.map +1 -0
- package/lib/DatePicker.mjs +625 -0
- package/lib/DatePicker.mjs.map +1 -0
- package/lib/EditableBox.mjs +496 -0
- package/lib/EditableBox.mjs.map +1 -0
- package/lib/Errors.mjs +176 -0
- package/lib/Errors.mjs.map +1 -0
- package/lib/ExpandableBox.mjs +209 -0
- package/lib/ExpandableBox.mjs.map +1 -0
- package/lib/Field.mjs +65 -0
- package/lib/Field.mjs.map +1 -0
- package/lib/FieldBox.mjs +80 -0
- package/lib/FieldBox.mjs.map +1 -0
- package/lib/Form.mjs +322 -0
- package/lib/Form.mjs.map +1 -0
- package/lib/FormValue.mjs +111 -0
- package/lib/FormValue.mjs.map +1 -0
- package/lib/InputboxGroup.mjs +104 -0
- package/lib/InputboxGroup.mjs.map +1 -0
- package/lib/Radiobox.mjs +67 -0
- package/lib/Radiobox.mjs.map +1 -0
- package/lib/RichText.mjs +634 -0
- package/lib/RichText.mjs.map +1 -0
- package/lib/TextInput.mjs +359 -0
- package/lib/TextInput.mjs.map +1 -0
- package/lib/alt/checkbox/SimpleCheckbox.mjs +82 -0
- package/lib/alt/checkbox/SimpleCheckbox.mjs.map +1 -0
- package/lib/alt/checkbox/ToggleCheckbox.mjs +68 -0
- package/lib/alt/checkbox/ToggleCheckbox.mjs.map +1 -0
- package/lib/alt/radiobox/CleanTabRadiobox.mjs +44 -0
- package/lib/alt/radiobox/CleanTabRadiobox.mjs.map +1 -0
- package/lib/alt/radiobox/IconRadioBox.mjs +52 -0
- package/lib/alt/radiobox/IconRadioBox.mjs.map +1 -0
- package/lib/alt/radiobox/SimpleRadiobox.mjs +61 -0
- package/lib/alt/radiobox/SimpleRadiobox.mjs.map +1 -0
- package/lib/alt/radiobox/TabRadiobox.mjs +54 -0
- package/lib/alt/radiobox/TabRadiobox.mjs.map +1 -0
- package/lib/enhanceInput.mjs +131 -0
- package/lib/enhanceInput.mjs.map +1 -0
- package/lib/index.cjs +5345 -0
- package/lib/index.cjs.map +1 -0
- package/lib/index.mjs +28 -0
- package/lib/index.mjs.map +1 -0
- package/lib/useConfirmDialog.mjs +117 -0
- package/lib/useConfirmDialog.mjs.map +1 -0
- package/lib/useDraftConfirmation.mjs +56 -0
- package/lib/useDraftConfirmation.mjs.map +1 -0
- package/lib/validation.mjs +91 -0
- package/lib/validation.mjs.map +1 -0
- package/lib/withFormImageInput.mjs +281 -0
- package/lib/withFormImageInput.mjs.map +1 -0
- package/package.json +44 -25
- package/src/AutoComplete.jsx +642 -0
- package/src/Checkbox.jsx +45 -0
- package/src/Combobox.jsx +606 -0
- package/src/ComboboxWithCustom.jsx +68 -0
- package/src/DatePicker.jsx +733 -0
- package/src/EditableBox.jsx +502 -0
- package/src/Errors.jsx +174 -0
- package/src/ExpandableBox.jsx +207 -0
- package/src/Field.jsx +76 -0
- package/src/FieldBox.jsx +136 -0
- package/src/Form.jsx +291 -0
- package/src/FormValue.jsx +67 -0
- package/src/IconRadioBoxOldHubt.jsx +93 -0
- package/src/InputboxGroup.jsx +121 -0
- package/src/Radiobox.jsx +33 -0
- package/src/RichText.jsx +812 -0
- package/src/TextInput.jsx +519 -0
- package/src/alt/checkbox/SimpleCheckbox.jsx +162 -0
- package/src/alt/checkbox/ToggleCheckbox.jsx +143 -0
- package/src/alt/radiobox/CleanTabRadiobox.jsx +46 -0
- package/src/alt/radiobox/IconRadioBox.jsx +93 -0
- package/src/alt/radiobox/SimpleRadiobox.jsx +153 -0
- package/src/alt/radiobox/TabRadiobox.jsx +73 -0
- package/src/enhanceInput.jsx +107 -0
- package/src/index.js +27 -0
- package/src/useConfirmDialog.jsx +105 -0
- package/src/useDraftConfirmation.jsx +60 -0
- package/src/validation.js +92 -0
- package/src/withFormImageInput.jsx +297 -0
- package/.babelrc +0 -28
- package/lib/index.js +0 -6255
- package/rollup.config.js +0 -43
- package/yarn-error.log +0 -1607
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"DatePicker.mjs","sources":["../src/DatePicker.jsx"],"sourcesContent":["import React, {forwardRef, useContext, useEffect, useRef, useState} from 'react'\nimport styled, {css} from 'styled-components'\nimport _ from 'lodash/fp'\nimport {StartlibsContext, useEnsureRef, usePopupToggle, usePrevious} from '@startlibs/core'\nimport {formatDate, formatDateToPattern, getColor, getNumberInputType, ifProp, media, parseDate} from '@startlibs/utils'\nimport {Icon} from '@startlibs/components'\nimport {Field} from './Field'\nimport {TextInput} from './TextInput'\nimport {enhanceInput, useInput} from './enhanceInput'\nimport {darken} from 'polished'\nimport {callIfFunction} from '@startlibs/utils'\n\nexport const CALENDAR_LEVEL_DAY = 'day'\nexport const CALENDAR_LEVEL_MONTH = 'month'\nexport const CALENDAR_LEVEL_YEAR = 'year'\n\nconst LEVELS = [CALENDAR_LEVEL_DAY, CALENDAR_LEVEL_MONTH, CALENDAR_LEVEL_YEAR]\n\nconst DatePickerContainer = styled.div`\n width: 20rem;\n position: absolute;\n z-index: 100;\n background-color: white;\n border-radius: 5px;\n border: 1px solid ${getColor('gray210')};\n user-select: none;\n box-shadow: 0 0 4px 0 rgba(0,0,0,0.2);\n font-size: 13px;\n text-align: center;\n animation: 0.2s datePickerFadeInDown ease-out;\n display: none;\n @supports (flex-wrap: wrap) {\n display: block;\n }\n input {\n padding-right: 2.25rem;\n ${media.mobile`\n width: 2.5rem;\n `}\n }\n @keyframes datePickerFadeInDown {\n from {\n opacity: 0;\n transform: translateY(-10px);\n pointer-events: none;\n }\n to {\n opacity: 1;\n transform: none;\n pointer-events: none;\n }\n }\n`\n\nconst CalendarHeader = styled.div`\n display: flex;\n padding: 0.5rem;\n align-items: center;\n`\n\nconst CalendarContentContainer = styled.div`\n padding: 0 0.5rem 0.5rem 0.5rem;\n display: flex; \n flex-wrap: wrap;\n justify-content: space-around;\n`\n\nconst WeekHeader = styled(CalendarContentContainer)`\n font-size: 12px;\n font-weight: 600;\n cursor: default;\n span {\n width: 2.5rem;\n }\n`\n\nconst CalendarClickable = styled.a`\n :hover, :focus {\n background-color: rgba(0,0,0,0.1);\n cursor: pointer;\n }\n`\n\nconst TitleButton = styled(CalendarClickable)`\n font-size: 16px;\n font-weight: 600;\n flex-grow: 1;\n border-radius: 4px;\n line-height: 3rem;\n`\n\nconst NavigationButton = styled(CalendarClickable)`\n font-size: 21px;\n width: 3rem;\n text-align: center;\n border-radius: 4px;\n height: 3rem;\n ${Icon} {\n line-height: 3rem;\n }\n`\n\nconst CalendarContent = styled(CalendarClickable)`\n line-height: 2.25rem;\n flex-grow: 1;\n display: inline-block;\n border-radius: 5px;\n margin-top: 0.25rem;\n margin-left: 0.25rem;\n ${ifProp('isEdge', css`color: rgba(0,0,0,0.4);`)}\n ${ifProp('isSelected', css`box-shadow: inset 0 0 0 1px ${getColor('gray210')};`)}\n ${ifProp('isDisabled', \n `pointer-events: none;\n opacity: 0.5;`\n )} \n ${ifProp('isCurrent', css`\n background: ${getColor('main')};\n color: #FFF; \n :hover {\n background-color: ${props => darken(0.075, getColor('main')(props))};\n }\n ${ifProp('isSelected', 'box-shadow: none;')}\n `)} \n`\n\nconst DayItem = styled(CalendarContent)`\n ${props => props.index % 7 === 0 && 'margin-left:0;'}\n flex-basis: 12%;\n`\nconst MonthItem = styled(CalendarContent)`\n ${props => props.index % 3 === 0 && 'margin-left:0;'}\n flex-basis: 30%;\n`\nconst YearItem = styled(CalendarContent)`\n ${props => props.index % 3 === 0 && 'margin-left:0;'}\n flex-basis: 30%;\n`\n\nconst DatePickerInputIcon = styled(Icon)`\n position: absolute;\n outline: none;\n bottom: 0;\n font-size: 21px;\n line-height: 3rem;\n right: 0;\n width: 2rem;\n cursor: pointer;\n color: ${getColor('gray150')};\n :hover {\n color: ${getColor('main')};\n }\n display: none;\n @supports (flex-wrap: wrap) {\n display: block;\n }\n ${props => props.disabled && 'pointer-events: none;'}\n ${media.mobile`\n line-height: 42px;\n width: 2.25rem;\n `}\n`\n\nconst ClearButton = styled(Icon)`\n color: ${getColor('gray90')};\n font-size: 12px;\n position: absolute;\n right: 40px;\n bottom: 0;\n transform: translateY(-50%);\n cursor: pointer;\n width: 1.5rem;\n line-height: 1.5rem;\n text-align: center;\n border-radius: 50%;\n background: rgba(0,0,0,0.1);\n :hover {\n background: #f7d3d4;\n color: ${getColor('alert')};\n }\n`\n\nconst InputAndIconWrapper = styled.div`\n position: relative;\n`\n\nconst ShortcutsWrapper = styled.div`\n display: flex;\n flex-wrap: wrap;\n gap: 0.5rem;\n padding: 0.5rem 0.25rem 0;\n color: ${getColor('gray150')};\n \n .link {\n cursor: pointer;\n font-weight: 600;\n text-decoration: underline;\n\n ${media.mobile`\n font-size: 13px; \n `}\n\n :hover {\n color: ${getColor('main')};\n }\n \n ${ifProp('disabled', css`\n pointer-events: none;\n opacity: 0.5;\n `)}\n }\n`\n\n\nconst KeyMapper = (level) => {\n const upDownSpacing = level === CALENDAR_LEVEL_DAY ? 7 : 3\n return {\n 'ArrowLeft': -1,\n 'ArrowRight': 1,\n 'ArrowUp': -upDownSpacing,\n 'ArrowDown': upDownSpacing\n }\n}\n\nconst getUTCDate = (year,month = 0,date = 1,hour = 0,min =0 ,sec =0 ,ms = 0) => new Date(Date.UTC(year,month,date,hour,min,sec,ms))\nconst getUTCDateBefore = (year,month = 0,date = 1,hour = 0,min =0 ,sec =0 ,ms = -1) => new Date(Date.UTC(year,month,date,hour,min,sec,ms))\n\nexport const DatePicker = forwardRef((\n {\n format = 'dd/MM/yyyy',\n min = new Date(now().setUTCFullYear(now().getUTCFullYear() - 100)),\n max = new Date(now().setUTCFullYear(now().getUTCFullYear() + 100)),\n weekStartsMonday = false,\n label, mandatory, tabIndex, helpText,\n path,\n timezoneOffset = 0,\n placeholder,\n onBlur,\n raw,\n disabled,\n level,\n daysFromNowShortcuts, // Uma array de números representando atalhos de dias a partir de agora, e.g. [0, 1, 3]\n monthsFromNowShortcuts, // Uma array de números representando atalhos de meses a partir de agora, e.g. [0, 1, 3]\n ...rest\n },\n maybeInputRef\n) => {\n\n const inputRef = useEnsureRef(maybeInputRef)\n\n const [formValue, setUnoffsetedFormValue, {hasErrors}] = useInput({path,...rest},raw)\n const setFormValue = (newV) => setUnoffsetedFormValue(_.isFinite(newV) && newV !== -1 ? newV - (timezoneOffset * 36e5) : newV)\n\n const popup = usePopupToggle()\n const calendarElement = useRef()\n\n const messages = useContext(StartlibsContext).dateMessages\n\n const time = Number(formValue)\n const offsetedTime = time + (timezoneOffset * 36e5)\n const [textValue, setRawTextValue] = useState(!isNaN(time) ? formatDate(new Date(offsetedTime), format, messages) : '')\n const prevValue = usePrevious(textValue)\n const [hasFormatErrors, setHasFormatErrors] = useState(false)\n\n useEffect(() => {\n if (textValue && prevValue && textValue.length > prevValue.length+1) {\n setTimeout(()=>inputRef.current.setSelectionRange(inputRef.current.value.length+1,inputRef.current.value.length+1),1);\n }\n },[textValue])\n\n const isShortcutsEnabled = !!daysFromNowShortcuts && daysFromNowShortcuts.length > 0 || !!monthsFromNowShortcuts && monthsFromNowShortcuts.length > 0;\n \n const setDateToNDaysFromNow = (daysFromNow) => {\n const date = new Date(now())\n date.setUTCDate(date.getUTCDate() + daysFromNow)\n setFormValue(date.getTime())\n updateText(date)\n }\n\n const setDateToNMonthsFromNow = (monthsFromNow) => {\n const date = new Date(now())\n date.setUTCMonth(date.getUTCMonth() + monthsFromNow)\n setFormValue(date.getTime())\n updateText(date)\n }\n\n const setTextValue = (textValue) => {\n const value = formValue === -1 || isNaN(formValue) ? now() : new Date(Number(formValue))\n const date = parseDate(textValue, value, format, messages)\n if (isNaN(date.getTime())) {\n const nextMonth = new Date(value)\n const closestLeapYear = new Date(value)\n nextMonth.setUTCMonth(value.getUTCMonth() + 1)\n closestLeapYear.setUTCFullYear(getClosestNextLeapYear(value.getUTCFullYear()))\n const nextMonthDate = parseDate(textValue, nextMonth, format, messages)\n const closestLeapYearDate = parseDate(textValue, closestLeapYear, format, messages)\n setRawTextValue(textValue)\n setHasFormatErrors(isNaN(nextMonthDate.getTime()) && isNaN(closestLeapYearDate))\n } else if (!inRange({min,max},date)) {\n setRawTextValue(textValue)\n setHasFormatErrors(true)\n setFormValue(-1)\n } else {\n setRawTextValue(textValue)\n setHasFormatErrors(false)\n setFormValue(date.getTime())\n }\n }\n\n const updateText = (date) => {\n setTextValue(formatDate(date, format, messages))\n setHasFormatErrors(false)\n }\n\n const setValue = (value) => {\n setFormValue(value)\n updateText(new Date(value))\n }\n\n const confirmValue = () => {\n popup.close()\n if (!textValue) {\n setFormValue(undefined)\n setHasFormatErrors(false)\n } else {\n const date = parseDate(textValue, new Date(formValue), format, messages, true)\n if (isNaN(date.getTime())) {\n setHasFormatErrors(true)\n setFormValue(-1)\n } else {\n updateText(date)\n }\n }\n }\n\n const _onBlur = (e) => {\n const currentTarget = e.currentTarget\n setTimeout(() => {\n if (!currentTarget.contains(document.activeElement)) {\n confirmValue()\n }\n callIfFunction(onBlur)\n }, 1)\n }\n\n const onKeyDown = (e) => {\n const isConfirm = e.key === 'Enter'\n if (Object.keys(KeyMapper()).indexOf(e.key) >= 0 || isConfirm) {\n if (popup.isOpen) {\n e.preventDefault()\n calendarElement.current.keyDown(e)\n }\n }\n if (e.key === 'Escape') {\n e.stopPropagation()\n popup.close()\n const date = new Date(formValue)\n if (!isNaN(date.getTime()))\n updateText(date)\n }\n }\n\n const refocus = (e) => inputRef.current.focus()\n\n const onClick = e => {\n if (disabled) return;\n e.stopPropagation()\n refocus()\n }\n\n const iconClick = e => {\n e.stopPropagation()\n if (popup.isOpen) {\n refocus()\n popup.close()\n } else {\n refocus()\n }\n }\n\n const stopFocusPropagation = (e) => e.stopPropagation()\n\n // const calendarValue = new Date(!isNaN(time) && formValue !== -1 ? offsetedTime : now())\n const calendarValue = new Date(!isNaN(time) && formValue !== -1 ? offsetedTime : nowTimeZoneAdjusted(timezoneOffset))\n calendarValue.setUTCHours(0, 0, 0)\n return <Field helpText={helpText} label={label} mandatory={mandatory} onClick={onClick} onFocus={popup.open} onBlur={_onBlur}>\n <InputAndIconWrapper>\n <TextInput\n raw\n disabled={disabled}\n type={getNumberInputType()}\n tabIndex={tabIndex}\n ref={inputRef}\n constraint={formatDateToPattern(format)}\n value={textValue}\n setValue={setTextValue}\n placeholder={placeholder}\n hasErrors={hasErrors || hasFormatErrors}\n onKeyDown={onKeyDown}\n />\n <DatePickerInputIcon tabIndex={-1} onFocus={stopFocusPropagation} disabled={disabled} onClick={iconClick} icon=\"calendar\" className={isShortcutsEnabled ? \"hasShortcuts\" : \"\"} />\n </InputAndIconWrapper>\n\n {(daysFromNowShortcuts?.length > 0 || monthsFromNowShortcuts?.length > 0) ? \n <ShortcutsWrapper>\n <span>Em:</span>\n {daysFromNowShortcuts?.map((daysFromNow) => (\n <span class=\"link\"\n key={`days-from-now-${daysFromNow}`}\n onClick={() => setDateToNDaysFromNow(daysFromNow)}\n disabled={disabled}\n >\n {daysFromNow} dia{daysFromNow > 1 ? 's' : ''}\n </span>\n ))}\n \n {monthsFromNowShortcuts?.map((monthsFromNow) => (\n <span class=\"link\"\n key={`months-from-now${monthsFromNow}`}\n onClick={() => setDateToNMonthsFromNow(monthsFromNow)}\n disabled={disabled}\n >\n {monthsFromNow} {monthsFromNow > 1 ? 'meses' : 'mês'}\n </span>\n ))}\n </ShortcutsWrapper>\n : null}\n \n {\n popup.isOpen &&\n <DatePickerCalendar\n raw\n min={min}\n max={max}\n level={level}\n weekStartsMonday={weekStartsMonday}\n messages={messages}\n ref={calendarElement}\n updateTransientValue={updateText}\n refocus={refocus}\n onSelectDay={popup.toggle}\n setValue={setValue}\n value={calendarValue.getTime()}\n />\n }\n </Field>\n})\n\n\nconst defaultProps = {\n format: 'dd/MM/yyyy',\n min: new Date(now().setUTCFullYear(now().getUTCFullYear() - 100)),\n max: new Date(now().setUTCFullYear(now().getUTCFullYear() + 100)),\n weekStartsMonday: false\n}\n\n\n\nclass RawDatePickerCalendar extends React.Component {\n\n static defaultProps = defaultProps\n\n constructor(props) {\n super(props)\n this.state = {level: this.props.level || CALENDAR_LEVEL_DAY, currentDate: new Date(props.value || now())}\n }\n\n element\n\n componentDidUpdate(prevProps) {\n if (prevProps.value !== this.props.value) {\n this.setState({\n currentDate: new Date(this.props.value)\n })\n }\n }\n\n setCurrentDatePlus = (n, type) => () => {\n const date = new Date(this.state.currentDate.getTime())\n switch (type) {\n case CALENDAR_LEVEL_DAY:\n date.setUTCDate(date.getUTCDate() + n)\n break\n case CALENDAR_LEVEL_MONTH:\n date.setUTCMonth(date.getUTCMonth() + n)\n break\n case CALENDAR_LEVEL_YEAR:\n date.setUTCFullYear(date.getUTCFullYear() + n)\n break\n default:\n break\n }\n this.props.updateTransientValue && this.props.updateTransientValue(date)\n this.setState({currentDate: date})\n }\n\n up = () => {\n this.setState({level: LEVELS[LEVELS.indexOf(this.state.level) + 1]})\n }\n\n\n keyDown = (e) => {\n const {level, currentDate} = this.state\n const keyMapper = KeyMapper(level)\n if (keyMapper[e.key]) {\n e.preventDefault()\n this.setCurrentDatePlus(keyMapper[e.key], level)()\n }\n if (e.key === 'Enter') {\n e.stopPropagation()\n e.preventDefault()\n this.handleChange(currentDate)\n }\n }\n\n handleChange = (date) => {\n this.props.setValue(date.getTime())\n if (this.state.level === CALENDAR_LEVEL_DAY && this.props.onSelectDay) {\n this.props.onSelectDay()\n }\n this.setState({level: LEVELS[Math.max(LEVELS.indexOf(this.state.level) - 1, 0)]})\n }\n\n getView = () => {\n switch (this.state.level) {\n case CALENDAR_LEVEL_DAY:\n return <Calendar {...this.props} {...this.state} handleChange={this.handleChange}\n changeCurrentDate={this.setCurrentDatePlus} up={this.up}/>\n case CALENDAR_LEVEL_MONTH:\n return <Months {...this.props} {...this.state} handleChange={this.handleChange}\n changeCurrentDate={this.setCurrentDatePlus} up={this.up}/>\n case CALENDAR_LEVEL_YEAR:\n return <Years {...this.props} {...this.state} handleChange={this.handleChange}\n changeCurrentDate={this.setCurrentDatePlus}/>\n default:\n return null\n }\n }\n\n setRef = (e) => {\n this.element = e\n }\n\n render() {\n return (\n <div ref={this.setRef} tabIndex={-1} onFocus={this.props.refocus} onKeyDown={this.keyDown}>\n {this.getView()}\n </div>\n )\n\n }\n}\nconst DatePickerCalendar = enhanceInput(RawDatePickerCalendar)\n\nfunction now() {\n const dt = new Date()\n dt.setUTCHours(0, 0, 0, 0)\n return dt\n}\n\nfunction nowTimeZoneAdjusted(timezoneOffset){\n const timezoneOffsetMilliseconds = timezoneOffset * 3600000; // 3600000 milliseconds in an hour\n const dt = new Date()\n dt.setTime(dt.getTime() + timezoneOffsetMilliseconds);\n dt.setUTCHours(0, 0, 0, 0)\n return dt;\n};\n\nfunction inRange(context, date) {\n return context.min <= date && context.max >= date\n}\n\nconst mapDays = (currentDate, dayOffset, fn) => {\n const month = []\n const iter = new Date(currentDate)\n iter.setUTCDate(1)\n let startDay = dayOffset + iter.getUTCDate() - iter.getUTCDay()\n if (startDay > 1 && startDay < 10) {\n startDay = startDay - 7\n }\n iter.setUTCDate(startDay)\n for (let week = 0; week < 6; week++) {\n for (let day = week * 7; day < (week * 7) + 7; day++) {\n month.push(fn(iter, startDay + day, day))\n iter.setUTCDate(iter.getUTCDate() + 1)\n }\n }\n return month\n}\nconst Calendar = ({messages, max, min, value, currentDate, weekStartsMonday, changeCurrentDate, handleChange, up}) => {\n const currentMonth = currentDate.getUTCMonth()\n const dayOffset = weekStartsMonday ? 1 : 0\n const today = now().getTime()\n const handleDateChange = (e) => {\n const date = new Date(currentDate)\n handleChange(new Date(date.setUTCDate(e.currentTarget.getAttribute('data-day'))))\n }\n const previousMonth = getUTCDateBefore(currentDate.getUTCFullYear(),currentDate.getUTCMonth())\n const nextMonth = getUTCDate(currentDate.getUTCFullYear(),currentDate.getUTCMonth()+1)\n return (\n <DatePickerContainer>\n <CalendarHeader>\n <NavigationButton disabled={!inRange({min,max},previousMonth)} onClick={changeCurrentDate(-1, CALENDAR_LEVEL_MONTH)}>\n <Icon icon=\"arrow-left-line\"/>\n </NavigationButton>\n <TitleButton onClick={up}>{messages('month', currentMonth)} {currentDate.getUTCFullYear()}</TitleButton>\n <NavigationButton disabled={!inRange({min,max},nextMonth)} onClick={changeCurrentDate(1, CALENDAR_LEVEL_MONTH)}>\n <Icon icon=\"arrow-right-line\"/>\n </NavigationButton>\n </CalendarHeader>\n <WeekHeader>\n {[0, 1, 2, 3, 4, 5, 6].map((day) =>\n <span key={day}>{messages('day', (day + dayOffset) % 7).slice(0, 3)}</span>\n )}\n </WeekHeader>\n <CalendarContentContainer>\n\n {mapDays(currentDate, dayOffset, (date, day, index) =>\n <DayItem\n index={index}\n key={date.getTime()}\n onClick={handleDateChange}\n data-day={day}\n isEdge={date.getUTCMonth() !== currentMonth}\n isCurrent={date.getTime() === currentDate.getTime()}\n isSelected={date.getTime() === value}\n isDisabled={!inRange({max, min}, date)}\n isToday={date.getTime() === today}\n >\n {date.getUTCDate()}\n </DayItem>\n )}\n </CalendarContentContainer>\n </DatePickerContainer>\n )\n}\n\nconst getBeginDate = (year,month) => new Date(year,month,1,0,0,0,0)\n\nconst Months = ({currentDate, messages, value, changeCurrentDate, handleChange, up, min, max}) => {\n const currentMonth = currentDate.getUTCMonth()\n const sameYear = currentDate.getUTCFullYear() === new Date(value).getUTCFullYear()\n const selectedMonth = sameYear ? currentDate.getUTCMonth() : undefined\n const handleMonthChange = (e) => {\n const date = new Date(currentDate)\n handleChange(new Date(date.setUTCMonth(e.currentTarget.getAttribute('data-month'))))\n }\n return (\n <DatePickerContainer>\n <CalendarHeader>\n <NavigationButton disabled={!inRange({min,max},getUTCDateBefore(currentDate.getUTCFullYear()))} onClick={changeCurrentDate(-1, CALENDAR_LEVEL_YEAR)}>\n <Icon icon=\"arrow-left-line\"/>\n </NavigationButton>\n <TitleButton onClick={up}>{currentDate.getUTCFullYear()}</TitleButton>\n <NavigationButton disabled={!inRange({min,max},getUTCDate(currentDate.getUTCFullYear()+1))} onClick={changeCurrentDate(1, CALENDAR_LEVEL_YEAR)}>\n <Icon icon=\"arrow-right-line\"/>\n </NavigationButton>\n </CalendarHeader>\n <CalendarContentContainer>\n {[0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11].map((month) =>\n <MonthItem\n disabled={!inRange({min,max},getUTCDate(currentDate.getUTCFullYear(),month)) && !inRange({min,max},getUTCDateBefore(currentDate.getUTCFullYear(),month+1))}\n onClick={handleMonthChange}\n key={month}\n data-month={month}\n index={month}\n isCurrent={currentMonth === month}\n isSelected={selectedMonth === month}\n >\n {messages('month', month).slice(0, 3)}\n </MonthItem>\n )}\n </CalendarContentContainer>\n </DatePickerContainer>\n )\n}\n\n// Given the specified context, produces an HTML string\n// representing months of the year.\n\nfunction mapYears(currentDate, fn) {\n const result = []\n const year = currentDate.getUTCFullYear()\n for (let i = 0; i < (4 * 3); i++) {\n result.push(fn(year - (year % 10) - 1 + i, i < 1 || i > 10, i))\n }\n return result\n}\n\nconst Years = ({value, currentDate, changeCurrentDate, handleChange, min, max}) => {\n const currentYear = currentDate.getUTCFullYear()\n const selectedYear = new Date(value).getUTCFullYear()\n const handleYearChange = (e) => {\n const date = new Date(currentDate)\n handleChange(new Date(date.setUTCFullYear(e.currentTarget.getAttribute('data-year'))))\n }\n return (\n <DatePickerContainer>\n <CalendarHeader>\n <NavigationButton disabled={!inRange({min,max},getUTCDateBefore(currentDate.getUTCFullYear()))} onClick={changeCurrentDate(-10, CALENDAR_LEVEL_YEAR)}>\n <Icon icon=\"arrow-left-line\"/>\n </NavigationButton>\n <TitleButton>{currentYear - (currentYear % 10)}-{currentYear - (currentYear % 10) + 9}</TitleButton>\n <NavigationButton disabled={!inRange({min,max},getUTCDate(currentDate.getUTCFullYear()+10))} onClick={changeCurrentDate(10, CALENDAR_LEVEL_YEAR)}>\n <Icon icon=\"arrow-right-line\"/>\n </NavigationButton>\n </CalendarHeader>\n <CalendarContentContainer>\n {mapYears(currentDate, (year, outside, i) =>\n <YearItem\n key={year}\n onClick={handleYearChange}\n disabled={!inRange({min,max},getUTCDate(year)) && !inRange({min,max},getUTCDateBefore(year+1))}\n data-year={year}\n index={i}\n isCurrent={year === currentYear}\n isSelected={year === selectedYear}\n isEdge={outside}\n >\n {year}\n </YearItem>\n )}\n </CalendarContentContainer>\n </DatePickerContainer>\n )\n}\n\nfunction getClosestNextLeapYear(year) {\n let y = isNaN(year) ? now().getUTCFullYear() : year\n while (!((y % 100 === 0) ? (y % 400 === 0) : (y % 4 === 0))) {\n y++\n }\n return y\n}\n"],"names":["CALENDAR_LEVEL_DAY","CALENDAR_LEVEL_MONTH","CALENDAR_LEVEL_YEAR","LEVELS","DatePickerContainer","styled","div","withConfig","displayName","componentId","getColor","media","mobile","_templateObject","_taggedTemplateLiteral","CalendarHeader","CalendarContentContainer","WeekHeader","CalendarClickable","a","TitleButton","NavigationButton","Icon","CalendarContent","ifProp","css","props","darken","DayItem","index","MonthItem","YearItem","DatePickerInputIcon","disabled","_templateObject2","InputAndIconWrapper","ShortcutsWrapper","_templateObject3","KeyMapper","level","upDownSpacing","getUTCDate","year","month","arguments","length","undefined","date","hour","min","sec","ms","Date","UTC","getUTCDateBefore","DatePicker","forwardRef","_ref","maybeInputRef","format","now","setUTCFullYear","getUTCFullYear","max","weekStartsMonday","label","mandatory","tabIndex","helpText","path","timezoneOffset","placeholder","onBlur","raw","daysFromNowShortcuts","monthsFromNowShortcuts","rest","_objectWithoutProperties","_excluded","inputRef","useEnsureRef","formValue","setUnoffsetedFormValue","hasErrors","useInput","_objectSpread","setFormValue","newV","_isFinite","popup","usePopupToggle","calendarElement","useRef","messages","useContext","StartlibsContext","dateMessages","time","Number","offsetedTime","textValue","setRawTextValue","useState","isNaN","formatDate","prevValue","usePrevious","hasFormatErrors","setHasFormatErrors","useEffect","setTimeout","current","setSelectionRange","value","isShortcutsEnabled","setDateToNDaysFromNow","daysFromNow","setUTCDate","getTime","updateText","setDateToNMonthsFromNow","monthsFromNow","setUTCMonth","getUTCMonth","setTextValue","parseDate","nextMonth","closestLeapYear","getClosestNextLeapYear","nextMonthDate","closestLeapYearDate","inRange","setValue","confirmValue","close","_onBlur","e","currentTarget","contains","document","activeElement","callIfFunction","onKeyDown","isConfirm","key","Object","keys","indexOf","isOpen","preventDefault","keyDown","stopPropagation","refocus","focus","onClick","iconClick","stopFocusPropagation","calendarValue","nowTimeZoneAdjusted","setUTCHours","React","createElement","Field","onFocus","open","TextInput","type","getNumberInputType","ref","constraint","formatDateToPattern","icon","className","map","class","concat","DatePickerCalendar","updateTransientValue","onSelectDay","toggle","defaultProps","RawDatePickerCalendar","Component","constructor","element","setCurrentDatePlus","n","state","currentDate","setState","up","keyMapper","handleChange","Math","getView","Calendar","_extends","changeCurrentDate","Months","Years","setRef","componentDidUpdate","prevProps","render","enhanceInput","dt","timezoneOffsetMilliseconds","setTime","context","mapDays","dayOffset","fn","iter","startDay","getUTCDay","week","day","push","_ref2","currentMonth","today","handleDateChange","getAttribute","previousMonth","slice","isEdge","isCurrent","isSelected","isDisabled","isToday","_ref3","sameYear","selectedMonth","handleMonthChange","mapYears","result","i","_ref4","currentYear","selectedYear","handleYearChange","outside","y"],"mappings":"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"}
|
|
@@ -0,0 +1,496 @@
|
|
|
1
|
+
import _extends from '@babel/runtime/helpers/extends';
|
|
2
|
+
import _objectWithoutProperties from '@babel/runtime/helpers/objectWithoutProperties';
|
|
3
|
+
import _identity from 'lodash/fp/identity';
|
|
4
|
+
import _stubFalse from 'lodash/fp/stubFalse';
|
|
5
|
+
import React, { forwardRef, useCallback, useEffect, useMemo, useImperativeHandle, useContext, useRef } from 'react';
|
|
6
|
+
import { useConsumerCatalog, useRefMemo, usePopupToggle, useToggle, useLazyConstant, StartlibsConsumer, useRefState } from '@startlibs/core';
|
|
7
|
+
import { willUseFlipSwitch, Button, ContextMenu, Li, fixDoubledLastMarginBottom } from '@startlibs/components';
|
|
8
|
+
import { Errors } from './Errors.mjs';
|
|
9
|
+
import { FormContext } from './Form.mjs';
|
|
10
|
+
import { FormValue } from './FormValue.mjs';
|
|
11
|
+
import { PathContext } from './enhanceInput.mjs';
|
|
12
|
+
import { useDraftConfirmation } from './useDraftConfirmation.mjs';
|
|
13
|
+
import styled from 'styled-components';
|
|
14
|
+
import { lazyValue, callIfFunction, _s, stopPropagation, formatPath } from '@startlibs/utils';
|
|
15
|
+
|
|
16
|
+
const _excluded = ["useAnimation"],
|
|
17
|
+
_excluded2 = ["path", "isSingle", "checkIsNew"],
|
|
18
|
+
_excluded3 = ["path", "onCancel", "onClose", "isNew"];
|
|
19
|
+
const addRootPath = (errorRootPath, errors, path) => {
|
|
20
|
+
const rootPath = [].concat(errorRootPath || [], path);
|
|
21
|
+
return Object.keys(errors).reduce((acc, error) => {
|
|
22
|
+
acc[rootPath.concat(error).join('.')] = errors[error];
|
|
23
|
+
return acc;
|
|
24
|
+
}, {});
|
|
25
|
+
};
|
|
26
|
+
const EditableContext = /*#__PURE__*/React.createContext({});
|
|
27
|
+
const ConfirmEditableBoxes = /*#__PURE__*/forwardRef((_ref, ref) => {
|
|
28
|
+
let {
|
|
29
|
+
children,
|
|
30
|
+
itemValidation = _stubFalse,
|
|
31
|
+
listValidation = () => false,
|
|
32
|
+
transform = _identity
|
|
33
|
+
} = _ref;
|
|
34
|
+
const submitAll = useCallback(async withLoading => {
|
|
35
|
+
if (withLoading) {
|
|
36
|
+
editableBoxes().forEach(_ => _.loading().open());
|
|
37
|
+
}
|
|
38
|
+
return Promise.all([submitAllShared(), submitAllStandalone()]).then(_ref2 => {
|
|
39
|
+
let [shared, standalone] = _ref2;
|
|
40
|
+
if (withLoading) {
|
|
41
|
+
editableBoxes().forEach(_ => _.loading().close());
|
|
42
|
+
}
|
|
43
|
+
return shared ? standalone ? {
|
|
44
|
+
shared,
|
|
45
|
+
standalone
|
|
46
|
+
} : shared : standalone;
|
|
47
|
+
}).catch(() => withLoading && editableBoxes().forEach(_ => _.loading().close()));
|
|
48
|
+
}, []);
|
|
49
|
+
const [confirmDraftContent, draftToggle, draftConfirmation] = useDraftConfirmation(submitAll);
|
|
50
|
+
useEffect(() => draftToggle.openWith(lazyValue(() => hasModifiedBoxes())), []);
|
|
51
|
+
const [sharedBoxes, sharedBoxesManager] = useConsumerCatalog();
|
|
52
|
+
const [standaloneBoxes, standaloneBoxesManager] = useConsumerCatalog();
|
|
53
|
+
const editableBoxes = boxes => boxes || sharedBoxes().concat(standaloneBoxes());
|
|
54
|
+
const hasEditableBoxes = boxes => editableBoxes(boxes).length > 0;
|
|
55
|
+
const provide = useMemo(() => ({
|
|
56
|
+
sharedBoxes: sharedBoxesManager,
|
|
57
|
+
standaloneBoxes: standaloneBoxesManager,
|
|
58
|
+
itemValidation,
|
|
59
|
+
transform
|
|
60
|
+
}), []);
|
|
61
|
+
const confirm = useCallback(function (cb) {
|
|
62
|
+
let dialogType = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 'submit-draft';
|
|
63
|
+
return draftConfirmation(dialogType, cb);
|
|
64
|
+
}, [draftConfirmation]);
|
|
65
|
+
const discard = useCallback(cb => draftConfirmation('discard-draft', cb), [draftConfirmation]);
|
|
66
|
+
const modifiedEditablesPath = boxes => modifiedEditableBoxes(boxes).map(_ => callIfFunction(_.path));
|
|
67
|
+
const modifiedEditableBoxes = boxes => editableBoxes(boxes).filter(_ => _.modifiedValue()[1]);
|
|
68
|
+
const hasModifiedBoxes = boxes => modifiedEditableBoxes(boxes).length > 0;
|
|
69
|
+
const submitAllShared = () => {
|
|
70
|
+
if (!sharedBoxes().length) return false;
|
|
71
|
+
const sharedWithForm = sharedBoxes().find(_ => _.form);
|
|
72
|
+
if (!sharedWithForm) {
|
|
73
|
+
return false;
|
|
74
|
+
}
|
|
75
|
+
const {
|
|
76
|
+
form
|
|
77
|
+
} = sharedWithForm.props;
|
|
78
|
+
const validated = modifiedEditableBoxes(sharedBoxes()).reduce((_ref3, box) => {
|
|
79
|
+
let {
|
|
80
|
+
success,
|
|
81
|
+
errors
|
|
82
|
+
} = _ref3;
|
|
83
|
+
const index = callIfFunction(box.path);
|
|
84
|
+
const [newItem, wasModified] = box.modifiedValue();
|
|
85
|
+
const newErrors = wasModified ? itemValidation(newItem, index) : false;
|
|
86
|
+
if (newErrors) {
|
|
87
|
+
return {
|
|
88
|
+
success,
|
|
89
|
+
errors: Object.assign({}, errors, addRootPath(form.meta.errorRootPath, newErrors, index))
|
|
90
|
+
};
|
|
91
|
+
}
|
|
92
|
+
const newProps = _s.set(index, transform(newItem, index), success);
|
|
93
|
+
return {
|
|
94
|
+
success: newProps,
|
|
95
|
+
errors
|
|
96
|
+
};
|
|
97
|
+
}, {
|
|
98
|
+
success: form.getOriginalValues(),
|
|
99
|
+
errors: undefined
|
|
100
|
+
});
|
|
101
|
+
if (validated.errors) {
|
|
102
|
+
form.setErrors(validated.errors);
|
|
103
|
+
return Promise.resolve(validated);
|
|
104
|
+
}
|
|
105
|
+
return form.submitForm(validated.success);
|
|
106
|
+
};
|
|
107
|
+
const submitAllStandalone = () => {
|
|
108
|
+
if (!standaloneBoxes().length) return false;
|
|
109
|
+
const edited = standaloneBoxes().filter(_ => _.form.hasChanged);
|
|
110
|
+
const notValidated = edited.filter(_ => !_.form.validate());
|
|
111
|
+
if (notValidated.length) {
|
|
112
|
+
return Promise.reject({
|
|
113
|
+
errors: notValidated
|
|
114
|
+
});
|
|
115
|
+
} else {
|
|
116
|
+
return Promise.all(edited.map(_ => _.handleSubmit())).then(boxes => {
|
|
117
|
+
const boxesAndResult = boxes.map((_, i) => [edited[i], _, i]);
|
|
118
|
+
boxesAndResult.filter(_ref4 => {
|
|
119
|
+
let [edited, result, i] = _ref4;
|
|
120
|
+
return !result.errors;
|
|
121
|
+
}).forEach(_ref5 => {
|
|
122
|
+
let [_] = _ref5;
|
|
123
|
+
return _.close();
|
|
124
|
+
});
|
|
125
|
+
const failed = boxesAndResult.filter(_ref6 => {
|
|
126
|
+
let [edited, result, i] = _ref6;
|
|
127
|
+
return result.errors;
|
|
128
|
+
});
|
|
129
|
+
if (failed.length) {
|
|
130
|
+
return {
|
|
131
|
+
errors: failed
|
|
132
|
+
};
|
|
133
|
+
} else {
|
|
134
|
+
return {
|
|
135
|
+
success: boxes
|
|
136
|
+
};
|
|
137
|
+
}
|
|
138
|
+
});
|
|
139
|
+
}
|
|
140
|
+
};
|
|
141
|
+
const methods = useMemo(() => ({
|
|
142
|
+
confirm,
|
|
143
|
+
discard,
|
|
144
|
+
submitAll,
|
|
145
|
+
hasEditableBoxes,
|
|
146
|
+
editableBoxes,
|
|
147
|
+
modifiedEditablesPath
|
|
148
|
+
}), [draftConfirmation]);
|
|
149
|
+
useImperativeHandle(ref, () => methods, [methods]);
|
|
150
|
+
return /*#__PURE__*/React.createElement(React.Fragment, null, confirmDraftContent, /*#__PURE__*/React.createElement(EditableContext.Provider, {
|
|
151
|
+
value: provide
|
|
152
|
+
}, callIfFunction(children, methods)));
|
|
153
|
+
});
|
|
154
|
+
const FlipDiv = _ref7 => {
|
|
155
|
+
let {
|
|
156
|
+
useAnimation
|
|
157
|
+
} = _ref7,
|
|
158
|
+
props = _objectWithoutProperties(_ref7, _excluded);
|
|
159
|
+
const ref = useRef();
|
|
160
|
+
useAnimation(ref);
|
|
161
|
+
return /*#__PURE__*/React.createElement("div", _extends({}, props, {
|
|
162
|
+
ref: ref
|
|
163
|
+
}));
|
|
164
|
+
};
|
|
165
|
+
const EditableBoxPresentation = /*#__PURE__*/styled(/*#__PURE__*/forwardRef((_ref8, ref) => {
|
|
166
|
+
let {
|
|
167
|
+
view = value => value === undefined || value === null ? '' : String(value),
|
|
168
|
+
tabIndex = 1,
|
|
169
|
+
onClose,
|
|
170
|
+
editingIsOpen,
|
|
171
|
+
onOpen,
|
|
172
|
+
onDelete,
|
|
173
|
+
onCancel,
|
|
174
|
+
onSave,
|
|
175
|
+
onMouseDown,
|
|
176
|
+
onTouchStart,
|
|
177
|
+
resetField,
|
|
178
|
+
children,
|
|
179
|
+
withDelete,
|
|
180
|
+
withContextMenu,
|
|
181
|
+
edit,
|
|
182
|
+
readOnly,
|
|
183
|
+
disabled,
|
|
184
|
+
isNew,
|
|
185
|
+
saveLabel,
|
|
186
|
+
className,
|
|
187
|
+
submitRef,
|
|
188
|
+
path
|
|
189
|
+
} = _ref8;
|
|
190
|
+
const popup = usePopupToggle();
|
|
191
|
+
const editing = useToggle(editingIsOpen);
|
|
192
|
+
const loading = useToggle();
|
|
193
|
+
const form = useContext(FormContext);
|
|
194
|
+
const closeBox = params => {
|
|
195
|
+
callIfFunction(onClose, params);
|
|
196
|
+
editing.close();
|
|
197
|
+
};
|
|
198
|
+
useEffect(() => {
|
|
199
|
+
return () => callIfFunction(onClose, true);
|
|
200
|
+
}, []);
|
|
201
|
+
useEffect(() => {
|
|
202
|
+
if (editing.isOpen) {
|
|
203
|
+
callIfFunction(onOpen);
|
|
204
|
+
}
|
|
205
|
+
}, [editing.isOpen]);
|
|
206
|
+
useImperativeHandle(ref, () => ({
|
|
207
|
+
loading,
|
|
208
|
+
closeBox,
|
|
209
|
+
handleCancel,
|
|
210
|
+
getValue
|
|
211
|
+
}));
|
|
212
|
+
const handleDelete = e => {
|
|
213
|
+
if (e) e.preventDefault();
|
|
214
|
+
onDelete();
|
|
215
|
+
};
|
|
216
|
+
const tryClose = e => {
|
|
217
|
+
if (e.key === 'Escape' && editing.isOpen) {
|
|
218
|
+
e.preventDefault();
|
|
219
|
+
e.stopPropagation();
|
|
220
|
+
handleCancel();
|
|
221
|
+
}
|
|
222
|
+
};
|
|
223
|
+
const handleCancel = () => {
|
|
224
|
+
onCancel(closeBox);
|
|
225
|
+
};
|
|
226
|
+
const onSubmit = e => {
|
|
227
|
+
if (e) e.preventDefault();
|
|
228
|
+
loading.wait(() => onSave().then(() => closeBox(true)).catch(() => {}));
|
|
229
|
+
};
|
|
230
|
+
const getPath = extraPath => _s.toPath(path).concat(_s.toPath(extraPath));
|
|
231
|
+
const getValue = (extraPath, otherProps) => otherProps ? _s.get(getPath(extraPath), otherProps) : form.getValue(getPath(extraPath));
|
|
232
|
+
const setValue = (value, extraPath) => form.setValue(getPath(extraPath), value);
|
|
233
|
+
const flipAnimation = useLazyConstant(willUseFlipSwitch);
|
|
234
|
+
const disabledClick = readOnly || disabled;
|
|
235
|
+
const openBox = () => {
|
|
236
|
+
editing.open();
|
|
237
|
+
};
|
|
238
|
+
const formattedPath = getPath();
|
|
239
|
+
return /*#__PURE__*/React.createElement(PathContext.Provider, {
|
|
240
|
+
value: formattedPath
|
|
241
|
+
}, /*#__PURE__*/React.createElement(FlipDiv, {
|
|
242
|
+
key: editing.isOpen,
|
|
243
|
+
useAnimation: flipAnimation,
|
|
244
|
+
onKeyDown: tryClose,
|
|
245
|
+
onMouseDown: onMouseDown,
|
|
246
|
+
onTouchStart: onTouchStart,
|
|
247
|
+
className: 'editable-box ' + (!disabledClick ? 'clickable ' : '') + (editing.isOpen ? 'expanded' : 'collapsed') + ' ' + className,
|
|
248
|
+
onClick: editing.isOpen || disabledClick ? undefined : openBox
|
|
249
|
+
}, !editing.isOpen && !disabledClick && !(withDelete || withContextMenu) && /*#__PURE__*/React.createElement(Button, {
|
|
250
|
+
tabIndex: tabIndex,
|
|
251
|
+
className: "edit-button",
|
|
252
|
+
small: true,
|
|
253
|
+
onlyIcon: true,
|
|
254
|
+
icon: "edit"
|
|
255
|
+
}), !editing.isOpen && !disabledClick && (withDelete || withContextMenu) && /*#__PURE__*/React.createElement(Button, {
|
|
256
|
+
tabIndex: tabIndex,
|
|
257
|
+
className: "edit-button arrow-down",
|
|
258
|
+
small: true,
|
|
259
|
+
onlyIcon: true,
|
|
260
|
+
icon: "arrow-down",
|
|
261
|
+
onClick: stopPropagation(popup.toggle)
|
|
262
|
+
}, popup.isOpen && /*#__PURE__*/React.createElement(ContextMenu, null, /*#__PURE__*/React.createElement(Li, {
|
|
263
|
+
label: "Editar",
|
|
264
|
+
icon: "edit-line",
|
|
265
|
+
onClick: openBox
|
|
266
|
+
}), withContextMenu, withDelete && /*#__PURE__*/React.createElement(Li, {
|
|
267
|
+
label: "Deletar",
|
|
268
|
+
icon: "remove",
|
|
269
|
+
onClick: handleDelete
|
|
270
|
+
}))), /*#__PURE__*/React.createElement("form", {
|
|
271
|
+
onSubmit: onSubmit
|
|
272
|
+
}, /*#__PURE__*/React.createElement(FormValue, {
|
|
273
|
+
path: formattedPath,
|
|
274
|
+
key: formatPath(formattedPath)
|
|
275
|
+
}, value => fixDoubledLastMarginBottom(editing.isOpen ? edit(value, {
|
|
276
|
+
getPath,
|
|
277
|
+
getValue,
|
|
278
|
+
path: formattedPath,
|
|
279
|
+
tabIndex,
|
|
280
|
+
setValue
|
|
281
|
+
}) : view(value, {
|
|
282
|
+
getPath,
|
|
283
|
+
getValue,
|
|
284
|
+
path: formattedPath
|
|
285
|
+
}))), /*#__PURE__*/React.createElement(Errors, {
|
|
286
|
+
path: formattedPath
|
|
287
|
+
}), editing.isOpen && /*#__PURE__*/React.createElement("div", {
|
|
288
|
+
className: "editable-box-footer"
|
|
289
|
+
}, /*#__PURE__*/React.createElement("div", null, withDelete && /*#__PURE__*/React.createElement(Button, {
|
|
290
|
+
icon: "remove",
|
|
291
|
+
hover: "alert",
|
|
292
|
+
tabIndex: tabIndex + 2,
|
|
293
|
+
onClick: handleDelete
|
|
294
|
+
}, "Deletar")), /*#__PURE__*/React.createElement(StartlibsConsumer, null, _ref9 => {
|
|
295
|
+
let {
|
|
296
|
+
labels
|
|
297
|
+
} = _ref9;
|
|
298
|
+
return /*#__PURE__*/React.createElement("div", null, /*#__PURE__*/React.createElement(Button, {
|
|
299
|
+
tabIndex: tabIndex + 1,
|
|
300
|
+
onClick: handleCancel
|
|
301
|
+
}, labels.EditableBox.cancel), /*#__PURE__*/React.createElement(Button, {
|
|
302
|
+
buttonRef: submitRef,
|
|
303
|
+
isLoading: loading.isOpen,
|
|
304
|
+
highlight: true,
|
|
305
|
+
tabIndex: tabIndex,
|
|
306
|
+
type: "submit"
|
|
307
|
+
}, callIfFunction(saveLabel, isNew) || (isNew ? labels.EditableBox.saveNew : labels.EditableBox.save)));
|
|
308
|
+
}))), children));
|
|
309
|
+
})).withConfig({
|
|
310
|
+
displayName: "EditableBox__EditableBoxPresentation",
|
|
311
|
+
componentId: "sc-x9t1o1-0"
|
|
312
|
+
})(["", ""], props => props.disabled && "opacity: 0.7;");
|
|
313
|
+
const SharedEditableTabBox = _ref0 => {
|
|
314
|
+
let {
|
|
315
|
+
path,
|
|
316
|
+
isSingle,
|
|
317
|
+
checkIsNew = (a, b) => a !== b
|
|
318
|
+
} = _ref0,
|
|
319
|
+
props = _objectWithoutProperties(_ref0, _excluded2);
|
|
320
|
+
const editableGroup = useContext(EditableContext);
|
|
321
|
+
const form = useContext(FormContext);
|
|
322
|
+
const isNew = useRefState(() => isSingle ? false : checkIsNew(_s.get(path, form.getOriginalValues()), form.getValue(path)));
|
|
323
|
+
const internalBox = React.useRef();
|
|
324
|
+
const pathRef = useRefMemo(path);
|
|
325
|
+
const loading = () => internalBox.current.loading;
|
|
326
|
+
const modifiedValue = () => {
|
|
327
|
+
const oldItem = internalBox.current.getValue(undefined, form.getOriginalValues());
|
|
328
|
+
const newItem = internalBox.current.getValue();
|
|
329
|
+
return newItem !== oldItem ? [newItem, true] : [oldItem, false];
|
|
330
|
+
};
|
|
331
|
+
const selfRef = useRef({
|
|
332
|
+
loading,
|
|
333
|
+
path: () => pathRef.current,
|
|
334
|
+
form,
|
|
335
|
+
modifiedValue
|
|
336
|
+
});
|
|
337
|
+
const resetField = () => form.resetField([].concat(path));
|
|
338
|
+
const onClose = skipReset => {
|
|
339
|
+
if (!skipReset) {
|
|
340
|
+
resetField();
|
|
341
|
+
}
|
|
342
|
+
form.clearErrors(_s.toPath(path));
|
|
343
|
+
editableGroup.sharedBoxes.unregister(selfRef.current);
|
|
344
|
+
isNew.set(false);
|
|
345
|
+
};
|
|
346
|
+
const onOpen = () => {
|
|
347
|
+
editableGroup.sharedBoxes.register(selfRef.current);
|
|
348
|
+
};
|
|
349
|
+
const validate = (props, path) => {
|
|
350
|
+
const errors = editableGroup.itemValidation(props, path);
|
|
351
|
+
if (errors) {
|
|
352
|
+
form.setErrors(addRootPath(form.getMeta('errorRootPath'), errors, path));
|
|
353
|
+
}
|
|
354
|
+
return errors;
|
|
355
|
+
};
|
|
356
|
+
const onSave = () => {
|
|
357
|
+
const [newItem, wasModified] = modifiedValue();
|
|
358
|
+
if (!wasModified) {
|
|
359
|
+
internalBox.current.closeBox();
|
|
360
|
+
return Promise.resolve({});
|
|
361
|
+
}
|
|
362
|
+
const errors = validate(newItem, path);
|
|
363
|
+
if (errors) {
|
|
364
|
+
return Promise.reject({
|
|
365
|
+
errors
|
|
366
|
+
});
|
|
367
|
+
}
|
|
368
|
+
const transform = editableGroup.transform;
|
|
369
|
+
if (isNew.get()) {
|
|
370
|
+
const arrayPath = _s.toPath(path);
|
|
371
|
+
const index = arrayPath.slice(-1);
|
|
372
|
+
const newProps = _s.update(arrayPath.slice(0, -1), _s.insertAt(index, transform(newItem, path)), form.getOriginalValues());
|
|
373
|
+
return form.submitForm(newProps);
|
|
374
|
+
} else {
|
|
375
|
+
const newProps = _s.set(path, transform(newItem, path), form.getOriginalValues());
|
|
376
|
+
return form.submitForm(newProps);
|
|
377
|
+
}
|
|
378
|
+
};
|
|
379
|
+
const onDelete = () => {
|
|
380
|
+
if (isNew.get()) {
|
|
381
|
+
onCancel();
|
|
382
|
+
return Promise.resolve({
|
|
383
|
+
success: true
|
|
384
|
+
});
|
|
385
|
+
}
|
|
386
|
+
const original = form.getOriginalValues();
|
|
387
|
+
const newProps = _s.unsetOrRemoveAt(path, original);
|
|
388
|
+
if (_s.get(_s.toPath(path).slice(0, -1), original).length !== _s.get(_s.toPath(path).slice(0, -1), newProps).length) {
|
|
389
|
+
internalBox.current.loading.open();
|
|
390
|
+
const fetch = form.submitForm(newProps);
|
|
391
|
+
fetch.then(_ref1 => {
|
|
392
|
+
let {
|
|
393
|
+
errors
|
|
394
|
+
} = _ref1;
|
|
395
|
+
internalBox.current.loading.close();
|
|
396
|
+
if (!errors) {
|
|
397
|
+
form.setValues(_s.unsetOrRemoveAt(path));
|
|
398
|
+
}
|
|
399
|
+
}).catch(() => internalBox.current.loading.close());
|
|
400
|
+
return fetch;
|
|
401
|
+
} else {
|
|
402
|
+
internalBox.current.handleCancel();
|
|
403
|
+
return Promise.resolve({
|
|
404
|
+
success: true
|
|
405
|
+
});
|
|
406
|
+
}
|
|
407
|
+
};
|
|
408
|
+
const onCancel = close => {
|
|
409
|
+
const lastKey = Array.isArray(path) ? path.slice(-1)[0] : path;
|
|
410
|
+
Array.isArray(path) ? path.slice(0, path.length - 1) : [];
|
|
411
|
+
if (isNew.get() && typeof lastKey === 'number') {
|
|
412
|
+
form.setValues(_s.unsetOrRemoveAt(path));
|
|
413
|
+
} else {
|
|
414
|
+
form.resetField(path);
|
|
415
|
+
close();
|
|
416
|
+
}
|
|
417
|
+
};
|
|
418
|
+
return /*#__PURE__*/React.createElement(EditableBoxPresentation, _extends({
|
|
419
|
+
ref: internalBox,
|
|
420
|
+
resetField: resetField,
|
|
421
|
+
onOpen: onOpen,
|
|
422
|
+
onClose: onClose,
|
|
423
|
+
onDelete: onDelete,
|
|
424
|
+
onCancel: onCancel,
|
|
425
|
+
onSave: onSave,
|
|
426
|
+
form: editableGroup.form,
|
|
427
|
+
isNew: isNew.get(),
|
|
428
|
+
path: path
|
|
429
|
+
}, props));
|
|
430
|
+
};
|
|
431
|
+
const EditableBox = _ref10 => {
|
|
432
|
+
let {
|
|
433
|
+
path,
|
|
434
|
+
onCancel,
|
|
435
|
+
onClose,
|
|
436
|
+
isNew
|
|
437
|
+
} = _ref10,
|
|
438
|
+
props = _objectWithoutProperties(_ref10, _excluded3);
|
|
439
|
+
const editableGroup = useContext(EditableContext);
|
|
440
|
+
const form = useContext(FormContext);
|
|
441
|
+
const internalBox = React.useRef();
|
|
442
|
+
const resetField = () => path ? form.resetField(_s.toPath(path)) : form.resetForm();
|
|
443
|
+
const _onClose = skipReset => {
|
|
444
|
+
if (!skipReset) {
|
|
445
|
+
resetField();
|
|
446
|
+
}
|
|
447
|
+
form.clearErrors(path);
|
|
448
|
+
editableGroup.standaloneBoxes.unregister(selfRef.current);
|
|
449
|
+
callIfFunction(onClose);
|
|
450
|
+
};
|
|
451
|
+
const modifiedValue = () => {
|
|
452
|
+
const oldItem = internalBox.current.getValue(undefined, form.getOriginalValues());
|
|
453
|
+
const newItem = internalBox.current.getValue();
|
|
454
|
+
return newItem !== oldItem ? [newItem, true] : [oldItem, false];
|
|
455
|
+
};
|
|
456
|
+
const onOpen = () => {
|
|
457
|
+
editableGroup.standaloneBoxes.register(selfRef.current);
|
|
458
|
+
};
|
|
459
|
+
const onDelete = () => {
|
|
460
|
+
props.removeItem(props.menuId);
|
|
461
|
+
};
|
|
462
|
+
const _onCancel = close => {
|
|
463
|
+
if (callIfFunction(onCancel, close) !== false) {
|
|
464
|
+
close();
|
|
465
|
+
}
|
|
466
|
+
};
|
|
467
|
+
const close = () => internalBox.current.closeBox();
|
|
468
|
+
const onSave = () => form.submitForm();
|
|
469
|
+
const handleSubmit = () => form.handleSubmit();
|
|
470
|
+
const loading = () => internalBox.current.loading;
|
|
471
|
+
const pathRef = useRefMemo(path);
|
|
472
|
+
const selfRef = useRef({
|
|
473
|
+
loading,
|
|
474
|
+
path: () => pathRef.current,
|
|
475
|
+
form,
|
|
476
|
+
modifiedValue,
|
|
477
|
+
handleSubmit,
|
|
478
|
+
close
|
|
479
|
+
});
|
|
480
|
+
return /*#__PURE__*/React.createElement(EditableBoxPresentation, _extends({
|
|
481
|
+
ref: internalBox,
|
|
482
|
+
resetField: resetField,
|
|
483
|
+
onOpen: onOpen,
|
|
484
|
+
onClose: _onClose,
|
|
485
|
+
onDelete: onDelete,
|
|
486
|
+
onCancel: _onCancel,
|
|
487
|
+
onSave: onSave,
|
|
488
|
+
form: form,
|
|
489
|
+
path: path,
|
|
490
|
+
isNew: isNew
|
|
491
|
+
}, props));
|
|
492
|
+
};
|
|
493
|
+
EditableBox.Shared = SharedEditableTabBox;
|
|
494
|
+
|
|
495
|
+
export { ConfirmEditableBoxes, EditableBox };
|
|
496
|
+
//# sourceMappingURL=EditableBox.mjs.map
|