@startlibs/form 1.1.2 → 1.2.0-rc.1

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.
Files changed (112) hide show
  1. package/lib/AutoComplete.mjs +19 -10
  2. package/lib/AutoComplete.mjs.map +1 -1
  3. package/lib/Checkbox.mjs +4 -2
  4. package/lib/Checkbox.mjs.map +1 -1
  5. package/lib/Combobox.mjs +1 -1
  6. package/lib/Combobox.mjs.map +1 -1
  7. package/lib/DatePicker.mjs +25 -9
  8. package/lib/DatePicker.mjs.map +1 -1
  9. package/lib/Errors.mjs +20 -10
  10. package/lib/Errors.mjs.map +1 -1
  11. package/lib/ExpandableBox.mjs +1 -1
  12. package/lib/ExpandableBox.mjs.map +1 -1
  13. package/lib/Field.mjs +10 -5
  14. package/lib/Field.mjs.map +1 -1
  15. package/lib/FieldBox.mjs +3 -3
  16. package/lib/FieldBox.mjs.map +1 -1
  17. package/lib/InputboxGroup.mjs +1 -1
  18. package/lib/InputboxGroup.mjs.map +1 -1
  19. package/lib/RichText.mjs +11 -6
  20. package/lib/RichText.mjs.map +1 -1
  21. package/lib/TextInput.mjs +4 -4
  22. package/lib/TextInput.mjs.map +1 -1
  23. package/lib/alt/checkbox/SimpleCheckbox.mjs +1 -1
  24. package/lib/alt/checkbox/SimpleCheckbox.mjs.map +1 -1
  25. package/lib/alt/checkbox/ToggleCheckbox.mjs +4 -3
  26. package/lib/alt/checkbox/ToggleCheckbox.mjs.map +1 -1
  27. package/lib/alt/radiobox/CleanTabRadiobox.mjs +1 -1
  28. package/lib/alt/radiobox/CleanTabRadiobox.mjs.map +1 -1
  29. package/lib/alt/radiobox/SimpleRadiobox.mjs +2 -2
  30. package/lib/alt/radiobox/SimpleRadiobox.mjs.map +1 -1
  31. package/lib/alt/radiobox/TabRadiobox.mjs +1 -1
  32. package/lib/alt/radiobox/TabRadiobox.mjs.map +1 -1
  33. package/lib/index.cjs +106 -54
  34. package/lib/index.cjs.map +1 -1
  35. package/lib/index.mjs +2 -2
  36. package/lib/withFormImageInput.mjs +1 -1
  37. package/lib/withFormImageInput.mjs.map +1 -1
  38. package/lib-yak/AutoComplete.mjs +705 -0
  39. package/lib-yak/AutoComplete.mjs.map +1 -0
  40. package/lib-yak/Checkbox.mjs +80 -0
  41. package/lib-yak/Checkbox.mjs.map +1 -0
  42. package/lib-yak/Combobox.mjs +652 -0
  43. package/lib-yak/Combobox.mjs.map +1 -0
  44. package/lib-yak/ComboboxWithCustom.mjs +77 -0
  45. package/lib-yak/ComboboxWithCustom.mjs.map +1 -0
  46. package/lib-yak/DatePicker.mjs +774 -0
  47. package/lib-yak/DatePicker.mjs.map +1 -0
  48. package/lib-yak/EditableBox.mjs +495 -0
  49. package/lib-yak/EditableBox.mjs.map +1 -0
  50. package/lib-yak/Errors.mjs +226 -0
  51. package/lib-yak/Errors.mjs.map +1 -0
  52. package/lib-yak/ExpandableBox.mjs +247 -0
  53. package/lib-yak/ExpandableBox.mjs.map +1 -0
  54. package/lib-yak/Field.mjs +93 -0
  55. package/lib-yak/Field.mjs.map +1 -0
  56. package/lib-yak/FieldBox.mjs +173 -0
  57. package/lib-yak/FieldBox.mjs.map +1 -0
  58. package/lib-yak/Form.mjs +322 -0
  59. package/lib-yak/Form.mjs.map +1 -0
  60. package/lib-yak/FormValue.mjs +111 -0
  61. package/lib-yak/FormValue.mjs.map +1 -0
  62. package/lib-yak/InputboxGroup.mjs +146 -0
  63. package/lib-yak/InputboxGroup.mjs.map +1 -0
  64. package/lib-yak/Radiobox.mjs +69 -0
  65. package/lib-yak/Radiobox.mjs.map +1 -0
  66. package/lib-yak/RichText.mjs +776 -0
  67. package/lib-yak/RichText.mjs.map +1 -0
  68. package/lib-yak/TextInput.mjs +589 -0
  69. package/lib-yak/TextInput.mjs.map +1 -0
  70. package/lib-yak/alt/checkbox/SimpleCheckbox.mjs +225 -0
  71. package/lib-yak/alt/checkbox/SimpleCheckbox.mjs.map +1 -0
  72. package/lib-yak/alt/checkbox/ToggleCheckbox.mjs +173 -0
  73. package/lib-yak/alt/checkbox/ToggleCheckbox.mjs.map +1 -0
  74. package/lib-yak/alt/radiobox/CleanTabRadiobox.mjs +87 -0
  75. package/lib-yak/alt/radiobox/CleanTabRadiobox.mjs.map +1 -0
  76. package/lib-yak/alt/radiobox/IconRadioBox.mjs +138 -0
  77. package/lib-yak/alt/radiobox/IconRadioBox.mjs.map +1 -0
  78. package/lib-yak/alt/radiobox/SimpleRadiobox.mjs +203 -0
  79. package/lib-yak/alt/radiobox/SimpleRadiobox.mjs.map +1 -0
  80. package/lib-yak/alt/radiobox/TabRadiobox.mjs +117 -0
  81. package/lib-yak/alt/radiobox/TabRadiobox.mjs.map +1 -0
  82. package/lib-yak/enhanceInput.mjs +131 -0
  83. package/lib-yak/enhanceInput.mjs.map +1 -0
  84. package/lib-yak/index.mjs +28 -0
  85. package/lib-yak/index.mjs.map +1 -0
  86. package/lib-yak/useConfirmDialog.mjs +117 -0
  87. package/lib-yak/useConfirmDialog.mjs.map +1 -0
  88. package/lib-yak/useDraftConfirmation.mjs +56 -0
  89. package/lib-yak/useDraftConfirmation.mjs.map +1 -0
  90. package/lib-yak/validation.mjs +91 -0
  91. package/lib-yak/validation.mjs.map +1 -0
  92. package/lib-yak/withFormImageInput.mjs +298 -0
  93. package/lib-yak/withFormImageInput.mjs.map +1 -0
  94. package/package.json +13 -3
  95. package/src/AutoComplete.jsx +25 -15
  96. package/src/Checkbox.jsx +2 -2
  97. package/src/Combobox.jsx +1 -1
  98. package/src/DatePicker.jsx +25 -22
  99. package/src/Errors.jsx +18 -8
  100. package/src/ExpandableBox.jsx +3 -3
  101. package/src/Field.jsx +9 -4
  102. package/src/FieldBox.jsx +6 -6
  103. package/src/IconRadioBoxOldHubt.jsx +1 -1
  104. package/src/InputboxGroup.jsx +1 -1
  105. package/src/RichText.jsx +17 -13
  106. package/src/TextInput.jsx +37 -26
  107. package/src/alt/checkbox/SimpleCheckbox.jsx +5 -5
  108. package/src/alt/checkbox/ToggleCheckbox.jsx +9 -8
  109. package/src/alt/radiobox/CleanTabRadiobox.jsx +2 -2
  110. package/src/alt/radiobox/SimpleRadiobox.jsx +7 -7
  111. package/src/alt/radiobox/TabRadiobox.jsx +4 -4
  112. package/src/withFormImageInput.jsx +2 -2
@@ -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, insertKeyframes, 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\n// Nome fixo do @keyframes preservado: um `keyframes` do styled-components geraria um nome\n// com hash, diferente do atual \"datePickerFadeInDown\" (quebraria quem lê animationName). Por\n// isso o bloco fica fora de um template styled/css/keyframes, registrado pelo CSSOM (sem\n// nonce) no primeiro render do DatePickerContainer (mesmo padrão de components/src/Loading.jsx).\nconst injectDatePickerFadeInDownKeyframes = () => insertKeyframes('datePickerFadeInDown',\n 'from { opacity: 0; transform: translateY(-10px); pointer-events: none; } to { opacity: 1; transform: none; pointer-events: none; }')\n\n// styled(DatePickerContainerBase) mira num componente, não numa tag: ao contrário do antigo\n// styled.div, o styled-components não filtra prop inválida pra <div> nesse caso. O template\n// abaixo não lê nenhuma prop custom, então repassar tudo com {...props} é seguro.\nconst DatePickerContainerBase = React.forwardRef((props, ref) => {\n injectDatePickerFadeInDownKeyframes()\n return <div ref={ref} {...props}/>\n})\n\nconst DatePickerContainer = styled(DatePickerContainerBase)`\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`\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","injectDatePickerFadeInDownKeyframes","insertKeyframes","DatePickerContainerBase","React","forwardRef","props","ref","createElement","_extends","DatePickerContainer","styled","__yakProps","v","getColor","CalendarHeader","yakDomTag","CalendarContentContainer","WeekHeader","CalendarClickable","TitleButton","NavigationButton","Icon","CalendarContent","css","darken","DayItem","index","MonthItem","YearItem","DatePickerInputIcon","disabled","InputAndIconWrapper","ShortcutsWrapper","KeyMapper","level","upDownSpacing","getUTCDate","year","month","arguments","length","undefined","date","hour","min","sec","ms","Date","UTC","getUTCDateBefore","DatePicker","_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","Field","onFocus","open","TextInput","type","getNumberInputType","constraint","formatDateToPattern","icon","className","map","class","DatePickerCalendar","updateTransientValue","onSelectDay","toggle","defaultProps","RawDatePickerCalendar","Component","constructor","element","setCurrentDatePlus","n","state","currentDate","setState","up","keyMapper","handleChange","Math","getView","Calendar","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,495 @@
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, useContext, useEffect, useImperativeHandle, useCallback, useMemo, useRef } from 'react';
6
+ import { usePopupToggle, useToggle, useLazyConstant, StartlibsConsumer, useConsumerCatalog, useRefMemo, 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, css } from '@yak/react';
14
+ import { callIfFunction, _s, stopPropagation, formatPath, lazyValue } 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 = 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
+ }))`
310
+ ${props => props.disabled && css`opacity: 0.7;`}
311
+ `;
312
+ const SharedEditableTabBox = _ref0 => {
313
+ let {
314
+ path,
315
+ isSingle,
316
+ checkIsNew = (a, b) => a !== b
317
+ } = _ref0,
318
+ props = _objectWithoutProperties(_ref0, _excluded2);
319
+ const editableGroup = useContext(EditableContext);
320
+ const form = useContext(FormContext);
321
+ const isNew = useRefState(() => isSingle ? false : checkIsNew(_s.get(path, form.getOriginalValues()), form.getValue(path)));
322
+ const internalBox = React.useRef();
323
+ const pathRef = useRefMemo(path);
324
+ const loading = () => internalBox.current.loading;
325
+ const modifiedValue = () => {
326
+ const oldItem = internalBox.current.getValue(undefined, form.getOriginalValues());
327
+ const newItem = internalBox.current.getValue();
328
+ return newItem !== oldItem ? [newItem, true] : [oldItem, false];
329
+ };
330
+ const selfRef = useRef({
331
+ loading,
332
+ path: () => pathRef.current,
333
+ form,
334
+ modifiedValue
335
+ });
336
+ const resetField = () => form.resetField([].concat(path));
337
+ const onClose = skipReset => {
338
+ if (!skipReset) {
339
+ resetField();
340
+ }
341
+ form.clearErrors(_s.toPath(path));
342
+ editableGroup.sharedBoxes.unregister(selfRef.current);
343
+ isNew.set(false);
344
+ };
345
+ const onOpen = () => {
346
+ editableGroup.sharedBoxes.register(selfRef.current);
347
+ };
348
+ const validate = (props, path) => {
349
+ const errors = editableGroup.itemValidation(props, path);
350
+ if (errors) {
351
+ form.setErrors(addRootPath(form.getMeta('errorRootPath'), errors, path));
352
+ }
353
+ return errors;
354
+ };
355
+ const onSave = () => {
356
+ const [newItem, wasModified] = modifiedValue();
357
+ if (!wasModified) {
358
+ internalBox.current.closeBox();
359
+ return Promise.resolve({});
360
+ }
361
+ const errors = validate(newItem, path);
362
+ if (errors) {
363
+ return Promise.reject({
364
+ errors
365
+ });
366
+ }
367
+ const transform = editableGroup.transform;
368
+ if (isNew.get()) {
369
+ const arrayPath = _s.toPath(path);
370
+ const index = arrayPath.slice(-1);
371
+ const newProps = _s.update(arrayPath.slice(0, -1), _s.insertAt(index, transform(newItem, path)), form.getOriginalValues());
372
+ return form.submitForm(newProps);
373
+ } else {
374
+ const newProps = _s.set(path, transform(newItem, path), form.getOriginalValues());
375
+ return form.submitForm(newProps);
376
+ }
377
+ };
378
+ const onDelete = () => {
379
+ if (isNew.get()) {
380
+ onCancel();
381
+ return Promise.resolve({
382
+ success: true
383
+ });
384
+ }
385
+ const original = form.getOriginalValues();
386
+ const newProps = _s.unsetOrRemoveAt(path, original);
387
+ if (_s.get(_s.toPath(path).slice(0, -1), original).length !== _s.get(_s.toPath(path).slice(0, -1), newProps).length) {
388
+ internalBox.current.loading.open();
389
+ const fetch = form.submitForm(newProps);
390
+ fetch.then(_ref1 => {
391
+ let {
392
+ errors
393
+ } = _ref1;
394
+ internalBox.current.loading.close();
395
+ if (!errors) {
396
+ form.setValues(_s.unsetOrRemoveAt(path));
397
+ }
398
+ }).catch(() => internalBox.current.loading.close());
399
+ return fetch;
400
+ } else {
401
+ internalBox.current.handleCancel();
402
+ return Promise.resolve({
403
+ success: true
404
+ });
405
+ }
406
+ };
407
+ const onCancel = close => {
408
+ const lastKey = Array.isArray(path) ? path.slice(-1)[0] : path;
409
+ Array.isArray(path) ? path.slice(0, path.length - 1) : [];
410
+ if (isNew.get() && typeof lastKey === 'number') {
411
+ form.setValues(_s.unsetOrRemoveAt(path));
412
+ } else {
413
+ form.resetField(path);
414
+ close();
415
+ }
416
+ };
417
+ return /*#__PURE__*/React.createElement(EditableBoxPresentation, _extends({
418
+ ref: internalBox,
419
+ resetField: resetField,
420
+ onOpen: onOpen,
421
+ onClose: onClose,
422
+ onDelete: onDelete,
423
+ onCancel: onCancel,
424
+ onSave: onSave,
425
+ form: editableGroup.form,
426
+ isNew: isNew.get(),
427
+ path: path
428
+ }, props));
429
+ };
430
+ const EditableBox = _ref10 => {
431
+ let {
432
+ path,
433
+ onCancel,
434
+ onClose,
435
+ isNew
436
+ } = _ref10,
437
+ props = _objectWithoutProperties(_ref10, _excluded3);
438
+ const editableGroup = useContext(EditableContext);
439
+ const form = useContext(FormContext);
440
+ const internalBox = React.useRef();
441
+ const resetField = () => path ? form.resetField(_s.toPath(path)) : form.resetForm();
442
+ const _onClose = skipReset => {
443
+ if (!skipReset) {
444
+ resetField();
445
+ }
446
+ form.clearErrors(path);
447
+ editableGroup.standaloneBoxes.unregister(selfRef.current);
448
+ callIfFunction(onClose);
449
+ };
450
+ const modifiedValue = () => {
451
+ const oldItem = internalBox.current.getValue(undefined, form.getOriginalValues());
452
+ const newItem = internalBox.current.getValue();
453
+ return newItem !== oldItem ? [newItem, true] : [oldItem, false];
454
+ };
455
+ const onOpen = () => {
456
+ editableGroup.standaloneBoxes.register(selfRef.current);
457
+ };
458
+ const onDelete = () => {
459
+ props.removeItem(props.menuId);
460
+ };
461
+ const _onCancel = close => {
462
+ if (callIfFunction(onCancel, close) !== false) {
463
+ close();
464
+ }
465
+ };
466
+ const close = () => internalBox.current.closeBox();
467
+ const onSave = () => form.submitForm();
468
+ const handleSubmit = () => form.handleSubmit();
469
+ const loading = () => internalBox.current.loading;
470
+ const pathRef = useRefMemo(path);
471
+ const selfRef = useRef({
472
+ loading,
473
+ path: () => pathRef.current,
474
+ form,
475
+ modifiedValue,
476
+ handleSubmit,
477
+ close
478
+ });
479
+ return /*#__PURE__*/React.createElement(EditableBoxPresentation, _extends({
480
+ ref: internalBox,
481
+ resetField: resetField,
482
+ onOpen: onOpen,
483
+ onClose: _onClose,
484
+ onDelete: onDelete,
485
+ onCancel: _onCancel,
486
+ onSave: onSave,
487
+ form: form,
488
+ path: path,
489
+ isNew: isNew
490
+ }, props));
491
+ };
492
+ EditableBox.Shared = SharedEditableTabBox;
493
+
494
+ export { ConfirmEditableBoxes, EditableBox };
495
+ //# sourceMappingURL=EditableBox.mjs.map