@pdg/react-form 1.0.87 → 1.0.88
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/index.esm.js +1 -1
- package/dist/index.js +1 -1
- package/package.json +1 -1
- package/dist/index.esm.js.map +0 -1
- package/dist/index.js.map +0 -1
package/dist/index.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sources":["../src/@util/compare.ts","../src/@util/date_time.ts","../src/@util/file.ts","../src/@util/forwardRef.ts","../src/@util/index.ts","../src/Form/Form.types.ts","../src/FormContext/FormContext.types.ts","../src/FormContext/FormContext.ts","../src/FormContext/useFormState.ts","../src/FormContextProvider/FormContextProvider.tsx","../src/Form/Form.tsx","../src/FormCommon/FormButton/FormButton.types.ts","../src/FormCommon/FormIcon/FormIcon.types.ts","../src/FormCommon/FormIcon/FormIcon.tsx","../src/FormCommon/FormButton/FormButton.tsx","../src/FormCommon/FormLabel/FormLabel.types.ts","../src/FormCommon/FormLabel/FormLabel.style.ts","../src/FormCommon/FormLabel/FormLabel.tsx","../src/FormLayout/FormBlock/FormBlock.types.ts","../src/FormLayout/FormDivider/FormDivider.types.ts","../src/FormLayout/FormDivider/FormDivider.style.ts","../src/FormLayout/FormDivider/FormDivider.tsx","../src/FormLayout/FormBlock/FormBlock.style.ts","../src/FormLayout/FormBlock/FormBlock.tsx","../src/FormLayout/FormRow/FormRow.types.ts","../src/FormLayout/FormRow/FormRow.style.ts","../src/FormLayout/FormRow/FormRow.tsx","../src/FormLayout/FormCol/FormCol.types.ts","../src/FormLayout/FormCol/FormCol.tsx","../src/FormLayout/FormBody/FormBody.types.ts","../src/FormLayout/FormBody/FormBody.style.ts","../src/FormLayout/FormBody/FormBody.tsx","../src/FormLayout/FormFooter/FormFooter.types.ts","../src/FormLayout/FormFooter/FormFooter.tsx","../src/FormItemTextFieldBase/FormTextField/FormTextField.types.ts","../node_modules/style-inject/dist/style-inject.es.js","../src/FormItemTextFieldBase/FormTextField/FormTextField.tsx","../src/FormItemTextFieldBase/FormHidden/FormHidden.types.ts","../src/FormItemTextFieldBase/FormHidden/FormHidden.tsx","../src/FormItemTextFieldBase/FormTag/FormTag.types.ts","../src/FormItemTextFieldBase/FormText/FormText.types.ts","../src/FormItemTextFieldBase/FormText/FormText.tsx","../src/FormItemTextFieldBase/FormTag/FormTag.tsx","../src/FormItemTextFieldBase/FormEmail/FormEmail.types.ts","../src/FormItemTextFieldBase/FormEmail/FormEmail.tsx","../src/FormItemTextFieldBase/FormPassword/FormPassword.types.ts","../src/FormItemTextFieldBase/FormPassword/FormPassword.tsx","../src/FormItemTextFieldBase/FormTel/FormTel.types.ts","../src/FormItemTextFieldBase/FormTel/FormTel.tsx","../src/FormItemTextFieldBase/FormMobile/FormMobile.types.ts","../src/FormItemTextFieldBase/FormMobile/FormMobile.tsx","../src/FormItemTextFieldBase/FormNumber/NumberFormatCustom.tsx","../src/FormItemTextFieldBase/FormNumber/FormNumber.types.ts","../src/FormItemTextFieldBase/FormNumber/FormNumber.tsx","../src/FormItemTextFieldBase/FormSearch/FormSearch.types.ts","../src/FormItemTextFieldBase/FormSearch/FormSearch.tsx","../src/FormItemTextFieldBase/FormTextarea/FormTextarea.types.ts","../src/FormItemTextFieldBase/FormTextarea/FormTextarea.tsx","../src/FormItemTextFieldBase/FormUrl/FormUrl.types.ts","../src/FormItemTextFieldBase/FormUrl/FormUrl.tsx","../src/FormItemTextFieldBase/FormSelect/FormSelect.types.ts","../src/FormItemTextFieldBase/FormSelect/FormSelect.tsx","../src/FormItemTextFieldBase/FormCompanyNo/FormCompanyNo.types.ts","../src/FormItemTextFieldBase/FormCompanyNo/FormCompanyNo.tsx","../src/FormItemTextFieldBase/FormPersonalNo/FormPersonalNo.types.ts","../src/FormItemTextFieldBase/FormPersonalNo/FormPersonalNo.tsx","../src/FormItemCustom/FormCheckbox/FormCheckbox.types.ts","../src/FormItemCustom/FormItemBase/FormItemBase.tsx","../src/FormItemCustom/FormCheckbox/FormCheckbox.tsx","../src/FormItemCustom/FormRadioGroup/FormRadioGroup.types.ts","../src/FormItemCustom/FormRadioGroup/FormRadioGroup.tsx","../src/FormItemCustom/FormToggleButtonGroup/FormToggleButtonGroup.types.ts","../src/FormItemCustom/FormToggleButtonGroup/FormToggleButtonGroup.tsx","../src/FormItemCustom/FormRating/FormRating.types.ts","../src/FormItemCustom/FormRating/FormRating.tsx","../src/FormItemCustom/FormTextEditor/FormTextEditor.types.ts","../src/FormItemCustom/FormTextEditor/FormTextEditor.tsx","../src/FormItemCustom/FormAutocomplete/FormAutocomplete.types.ts","../src/FormItemCustom/FormAutocomplete/FormAutocomplete.tsx","../src/FormItemCustom/FormDatePicker/FormDatePicker.types.ts","../src/@private/PrivateDatePicker/PrivateDatePicker.types.ts","../src/@private/PrivateStaticDatePicker/PrivateStaticDatePicker.types.ts","../src/@private/PrivateYearSelect/PrivateYearSelect.types.ts","../src/@private/PrivateToggleButton/PrivateToggleButton.types.ts","../src/@private/PrivateToggleButton/PrivateToggleButton.tsx","../src/@private/PrivateYearSelect/PrivateYearSelect.tsx","../src/@private/PrivateMonthSelect/PrivateMonthSelect.types.ts","../src/@private/PrivateMonthSelect/PrivateMonthSelect.tsx","../src/@private/PrivateTimeSelect/PrivateTimeSelect.types.ts","../src/@private/PrivateTimeSelect/PrivateTimeSelect.tsx","../src/@private/PrivateStaticDatePicker/PrivateStaticDatePicker.tsx","../src/@private/PrivateStyledTooltip/PrivateStyledTooltip.tsx","../src/@private/PrivateDatePicker/PrivateDatePicker.tsx","../src/@private/PrivateDateTimePicker/PrivateDateTimePicker.types.ts","../src/@private/PrivateStaticDateTimePicker/PrivateStaticDateTimePicker.types.ts","../src/@private/PrivateStaticDateTimePicker/PrivateStaticDateTimePicker.tsx","../src/@private/PrivateDateTimePicker/PrivateDateTimePicker.tsx","../src/@private/PrivateAlertDialog/PrivateAlertDialog.types.ts","../src/@private/PrivateAlertDialog/PrivateAlertDialog.tsx","../src/@private/PrivateInputDatePicker/PrivateInputDatePicker.types.ts","../src/@private/PrivateInputDatePicker/PrivateInputDatePicker.tsx","../src/@private/PrivateYearRangePicker/PrivateYearRangePicker.types.ts","../src/@private/PrivateYearRangePicker/PrivateYearRangePickerYearList/PrivateYearRangePickerYearList.types.ts","../src/@private/PrivateYearRangePicker/PrivateYearRangePickerYear/PrivateYearRangePickerYear.types.ts","../src/@private/PrivateYearRangePicker/PrivateYearRangePickerYear/PrivateYearRangePickerYear.style.ts","../src/@private/PrivateYearRangePicker/PrivateYearRangePickerYear/PrivateYearRangePickerYear.tsx","../src/@private/PrivateYearRangePicker/PrivateYearRangePickerYearList/PrivateYearRangePickerYearList.style.ts","../src/@private/PrivateYearRangePicker/PrivateYearRangePickerYearList/PrivateYearRangePickerYearList.tsx","../src/@private/PrivateYearRangePicker/PrivateYearRangePicker.style.ts","../src/@private/PrivateYearRangePicker/PrivateYearRangePicker.tsx","../src/@private/PrivateYearPicker/PrivateYearPicker.types.ts","../src/@private/PrivateYearPicker/PrivateYearPickerYearList/PrivateYearPickerYearList.types.ts","../src/@private/PrivateYearPicker/PrivateYearPickerYear/PrivateYearPickerYear.types.ts","../src/@private/PrivateYearPicker/PrivateYearPickerYear/PrivateYearPickerYear.style.ts","../src/@private/PrivateYearPicker/PrivateYearPickerYear/PrivateYearPickerYear.tsx","../src/@private/PrivateYearPicker/PrivateYearPickerYearList/PrivateYearPickerYearList.style.ts","../src/@private/PrivateYearPicker/PrivateYearPickerYearList/PrivateYearPickerYearList.tsx","../src/@private/PrivateYearPicker/PrivateYearPicker.style.ts","../src/@private/PrivateYearPicker/PrivateYearPicker.tsx","../src/@private/PrivateMonthPicker/PrivateMonthPicker.types.ts","../src/@private/PrivateMonthPicker/PrivateMonthPickerMonthList/PrivateMonthPickerMonthList.types.ts","../src/@private/PrivateMonthPicker/PrivateMonthPickerMonth/PrivateMonthPickerMonth.types.ts","../src/@private/PrivateMonthPicker/PrivateMonthPickerMonth/PrivateMonthPickerMonth.style.ts","../src/@private/PrivateMonthPicker/PrivateMonthPickerMonth/PrivateMonthPickerMonth.tsx","../src/@private/PrivateMonthPicker/PrivateMonthPickerMonthList/PrivateMonthPickerMonthList.style.ts","../src/@private/PrivateMonthPicker/PrivateMonthPickerMonthList/PrivateMonthPickerMonthList.tsx","../src/@private/PrivateMonthPicker/PrivateMonthPicker.style.ts","../src/@private/PrivateMonthPicker/PrivateMonthPicker.tsx","../src/@private/PrivateMonthRangePicker/PrivateMonthRangePicker.types.ts","../src/@private/PrivateMonthRangePicker/PrivateMonthRangePicker.style.ts","../src/@private/PrivateMonthRangePicker/PrivateMonthRangePicker.tsx","../src/FormItemCustom/FormDatePicker/FormDatePicker.tsx","../src/FormItemCustom/FormDateTimePicker/FormDateTimePicker.types.ts","../src/FormItemCustom/FormDateTimePicker/FormDateTimePicker.tsx","../src/FormItemCustom/FormTimePicker/FormTimePicker.types.ts","../src/FormItemCustom/FormTimePicker/FormTimePicker.tsx","../src/FormItemCustom/FormDateRangePicker/FormDateRangePicker.types.ts","../src/FormItemCustom/FormDateRangePicker/FormDateRangePickerTooltipPickerContainer/FormDateRangePickerTooltipPickerContainer.types.ts","../src/FormItemCustom/FormDateRangePicker/FormDateRangePickerTooltipPickerContainer/FormDateRangePickerTooltipPicker/FormDateRangePickerTooltipPicker.types.ts","../src/FormItemCustom/FormDateRangePicker/FormDateRangePickerTooltipPickerContainer/FormDateRangePickerTooltipPicker/FormDateRangePickerTooltipPicker.tsx","../src/FormItemCustom/FormDateRangePicker/FormDateRangePickerTooltipPickerContainer/FormDateRangePickerTooltipPickerContainer.tsx","../src/FormItemCustom/FormDateRangePicker/FormDateRangePicker.tsx","../src/FormItemCustom/FormFile/FormFile.types.ts","../src/FormItemCustom/FormFile/LinkDialog/LinkDialog.types.ts","../src/FormItemCustom/FormFile/LinkDialog/LinkDialog.tsx","../src/FormItemCustom/FormFile/FormFile.tsx","../src/FormItemCustom/FormImageFile/FormImageFile.types.ts","../src/FormItemCustom/FormImageFile/FormImageFile.tsx","../src/FormItemCustom/FormMonthPicker/FormMonthPicker.types.ts","../src/FormItemCustom/FormMonthPicker/FormMonthPicker.tsx","../src/FormItemCustom/FormMonthRangePicker/FormMonthRangePicker.types.ts","../src/FormItemCustom/FormMonthRangePicker/FormMonthRangePicker.tsx","../src/FormItemCustom/FormYearPicker/FormYearPicker.types.ts","../src/FormItemCustom/FormYearPicker/FormYearPicker.tsx","../src/FormItemCustom/FormYearRangePicker/FormYearRangePicker.types.ts","../src/FormItemCustom/FormYearRangePicker/FormYearRangePicker.tsx","../src/FormItemCustom/FormSwitch/FormSwitch.types.ts","../src/FormItemCustom/FormSwitch/FormSwitch.tsx","../src/Search/Search/Search.types.ts","../src/Search/SearchGroupRow/SearchGroupRow.types.ts","../src/Search/SearchGroupRow/SearchGroupRow.tsx","../src/Search/Search/Search.tsx","../src/Search/SearchGroup/SearchGroup.types.ts","../src/Search/SearchGroup/SearchGroup.style.ts","../src/Search/SearchGroup/SearchGroup.tsx","../src/Search/SearchButton/SearchButton.types.ts","../src/Search/SearchButton/SearchButton.tsx","../src/Search/SearchMenuButton/SearchMenuButton.types.ts","../src/Search/SearchMenuButton/SearchMenuButton.tsx"],"sourcesContent":["const empty = function (v: any) {\n let result = false;\n if (v == null) {\n result = true;\n } else if (typeof v === 'string') {\n result = v === '';\n } else if (typeof v === 'object') {\n if (Array.isArray(v)) {\n result = v.length === 0;\n } else if (!(v instanceof Date)) {\n result = Object.entries(v).length === 0;\n }\n }\n return result;\n};\n\nconst notEmpty = function (v: any) {\n return !empty(v);\n};\n\nconst isSame = (v1: any, v2: any): boolean => {\n if (v1 === v2) return true;\n if (typeof v1 !== typeof v2) return false;\n if (v1 == null || v2 == null) return false;\n if (Array.isArray(v1) && Array.isArray(v2)) {\n if (v1.length !== v2.length) return false;\n for (let i = 0; i < v1.length; i += 1) {\n if (v1[i] !== v2[i]) return false;\n }\n } else {\n return v1 === v2;\n }\n return true;\n};\n\nexport { empty, notEmpty, isSame };\n","import { DateTimeValidationError, DateValidationError } from '@mui/x-date-pickers';\nimport { FormDateType, FormTimeType } from '../@types';\nimport { FormAvailableDate, FormAvailableDateItem, FormAvailableDateType } from '../@private/@types';\nimport dayjs, { Dayjs } from 'dayjs';\n\nexport function getDateValidationErrorText(error: DateValidationError | DateTimeValidationError) {\n switch (error) {\n case 'invalidDate':\n return '형식이 일치하지 않습니다.';\n case 'shouldDisableDate':\n case 'shouldDisableMonth':\n case 'shouldDisableYear':\n case 'disableFuture':\n case 'disablePast':\n case 'minDate':\n case 'maxDate':\n return '선택할 수 없는 날짜입니다.';\n }\n}\n\n//--------------------------------------------------------------------------------------------------------------------\n\nconst DEFAULT_DATE_FORMAT = 'YYYY-MM-DD';\nconst DEFAULT_DATE_FORM_VALUE_FORMAT = 'YYYY-MM-DD';\nconst DEFAULT_DATE_TIME_HOUR_FORMAT = 'YYYY-MM-DD HH시';\nconst DEFAULT_DATE_TIME_HOUR_FORM_VALUE_FORMAT = 'YYYY-MM-DD HH:00:00';\nconst DEFAULT_DATE_TIME_MINUTE_FORMAT = 'YYYY-MM-DD HH:mm';\nconst DEFAULT_DATE_TIME_MINUTE_FORM_VALUE_FORMAT = 'YYYY-MM-DD HH:mm:00';\nconst DEFAULT_DATE_TIME_SECOND_FORMAT = 'YYYY-MM-DD HH:mm:ss';\nconst DEFAULT_DATE_TIME_SECOND_FORM_VALUE_FORMAT = 'YYYY-MM-DD HH:mm:ss';\nconst DEFAULT_TIME_HOUR_FORMAT = 'HH시';\nconst DEFAULT_TIME_HOUR_FORM_VALUE_FORMAT = 'HH:00:00';\nconst DEFAULT_TIME_MINUTE_FORMAT = 'HH:mm';\nconst DEFAULT_TIME_MINUTE_FORM_VALUE_FORMAT = 'HH:mm:00';\nconst DEFAULT_TIME_SECOND_FORMAT = 'HH:mm:ss';\nconst DEFAULT_TIME_SECOND_FORM_VALUE_FORMAT = 'HH:mm:ss';\n\nexport function getDateTimeFormat(type: FormDateType, time?: FormTimeType): string {\n switch (type) {\n case 'date':\n return DEFAULT_DATE_FORMAT;\n case 'date_time':\n if (time) {\n switch (time) {\n case 'hour':\n return DEFAULT_DATE_TIME_HOUR_FORMAT;\n case 'minute':\n return DEFAULT_DATE_TIME_MINUTE_FORMAT;\n case 'second':\n return DEFAULT_DATE_TIME_SECOND_FORMAT;\n }\n } else {\n throw new Error(`util::date_time::getDateTimeFormat - type 이 '${type}' 일 경우 time 값을 지정해야 합니다.`);\n }\n break;\n case 'time':\n if (time) {\n switch (time) {\n case 'hour':\n return DEFAULT_TIME_HOUR_FORMAT;\n case 'minute':\n return DEFAULT_TIME_MINUTE_FORMAT;\n case 'second':\n return DEFAULT_TIME_SECOND_FORMAT;\n }\n } else {\n throw new Error(`util::date_time::getDateTimeFormat - type 이 '${type}' 일 경우 time 값을 지정해야 합니다.`);\n }\n break;\n }\n}\n\nexport function getDateTimeFormValueFormat(type: FormDateType, time?: FormTimeType): string {\n switch (type) {\n case 'date':\n return DEFAULT_DATE_FORM_VALUE_FORMAT;\n case 'date_time':\n if (time) {\n switch (time) {\n case 'hour':\n return DEFAULT_DATE_TIME_HOUR_FORM_VALUE_FORMAT;\n case 'minute':\n return DEFAULT_DATE_TIME_MINUTE_FORM_VALUE_FORMAT;\n case 'second':\n return DEFAULT_DATE_TIME_SECOND_FORM_VALUE_FORMAT;\n }\n } else {\n throw new Error(\n `util::date_time::getDateTimeFormValueFormat - type 이 '${type}' 일 경우 time 값을 지정해야 합니다.`\n );\n }\n break;\n case 'time':\n if (time) {\n switch (time) {\n case 'hour':\n return DEFAULT_TIME_HOUR_FORM_VALUE_FORMAT;\n case 'minute':\n return DEFAULT_TIME_MINUTE_FORM_VALUE_FORMAT;\n case 'second':\n return DEFAULT_TIME_SECOND_FORM_VALUE_FORMAT;\n }\n } else {\n throw new Error(\n `util::date_time::getDateTimeFormValueFormat - type 이 '${type}' 일 경우 time 값을 지정해야 합니다.`\n );\n }\n break;\n }\n}\n\n/********************************************************************************************************************\n * getAvailableDateValFormat\n * ******************************************************************************************************************/\n\nexport function getAvailableDateValFormat(type: FormAvailableDateType): string;\nexport function getAvailableDateValFormat(type: FormDateType, time?: FormTimeType): string;\nexport function getAvailableDateValFormat(type: FormAvailableDateType | FormDateType, time?: FormTimeType): string {\n let availableDateType: FormAvailableDateType;\n\n if (time) {\n availableDateType = getAvailableDateType(type as FormDateType, time);\n } else if (['date', 'date_time', 'time'].includes(type)) {\n availableDateType = getAvailableDateType(type as FormDateType, time);\n } else {\n availableDateType = type as FormAvailableDateType;\n }\n\n switch (availableDateType) {\n case 'year':\n return 'YYYY';\n case 'month':\n return 'YYYYMM';\n case 'day':\n return 'YYYYMMDD';\n case 'hour':\n return 'YYYYMMDDHH';\n case 'minute':\n return 'YYYYMMDDHHmm';\n case 'second':\n return 'YYYYMMDDHHmmss';\n }\n}\n\n/********************************************************************************************************************\n * getDateValFormat\n * ******************************************************************************************************************/\n\nexport function getDateValFormat(type: FormDateType, time?: FormTimeType): string {\n switch (type) {\n case 'date':\n return 'YYYYMMDD';\n case 'date_time':\n if (time) {\n switch (time) {\n case 'hour':\n return 'YYYYMMDDHH';\n case 'minute':\n return 'YYYYMMDDHHmm';\n case 'second':\n return 'YYYYMMDDHHmmss';\n }\n } else {\n throw new Error(`util::date_time::getDateValFormat - type 이 '${type}' 일 경우 time 값을 지정해야 합니다.`);\n }\n break;\n case 'time':\n if (time) {\n switch (time) {\n case 'hour':\n return 'HH';\n case 'minute':\n return 'HHmm';\n case 'second':\n return 'HHmmss';\n }\n } else {\n throw new Error(`util::date_time::getDateValFormat - type 이 '${type}' 일 경우 time 값을 지정해야 합니다.`);\n }\n break;\n }\n}\n\n/********************************************************************************************************************\n * getAvailableDateType\n * ******************************************************************************************************************/\n\nexport function getAvailableDateType(type: FormDateType, time?: FormTimeType): FormAvailableDateType {\n switch (type) {\n case 'date':\n return 'day';\n case 'date_time':\n if (time) {\n switch (time) {\n case 'hour':\n return 'hour';\n case 'minute':\n return 'minute';\n case 'second':\n return 'second';\n }\n } else {\n throw new Error(`util::date_time::getAvailableDateType - type 이 '${type}' 일 경우 time 값을 지정해야 합니다.`);\n }\n break;\n case 'time':\n throw new Error(`util::date_time::getAvailableDateType - '${type}' type 을 사용할 수 없습니다.`);\n }\n}\n\n/********************************************************************************************************************\n * makeAvailableDate\n * ******************************************************************************************************************/\n\nexport function makeAvailableDate(\n minDate: Dayjs | undefined,\n maxDate: Dayjs | undefined,\n disablePast: boolean,\n disableFuture: boolean\n): FormAvailableDate {\n const now = dayjs();\n\n let min: Dayjs | null = null;\n let max: Dayjs | null = null;\n\n if (disablePast) {\n min = now;\n }\n if (minDate) {\n if (min) {\n if (minDate.isAfter(min, 'date')) {\n min = minDate;\n }\n } else {\n min = minDate;\n }\n }\n if (disableFuture) {\n max = now;\n }\n if (maxDate) {\n if (max) {\n if (maxDate.isBefore(max, 'date')) {\n max = maxDate;\n }\n } else {\n max = maxDate;\n }\n }\n\n const minItem: FormAvailableDateItem | null = min\n ? {\n date: min,\n year: Number(min.format(getAvailableDateValFormat('year'))),\n month: Number(min.format(getAvailableDateValFormat('month'))),\n day: Number(min.format(getAvailableDateValFormat('day'))),\n hour: Number(min.format(getAvailableDateValFormat('hour'))),\n minute: Number(min.format(getAvailableDateValFormat('minute'))),\n second: Number(min.format(getAvailableDateValFormat('second'))),\n }\n : null;\n const maxItem: FormAvailableDateItem | null = max\n ? {\n date: max,\n year: Number(max.format(getAvailableDateValFormat('year'))),\n month: Number(max.format(getAvailableDateValFormat('month'))),\n day: Number(max.format(getAvailableDateValFormat('day'))),\n hour: Number(max.format(getAvailableDateValFormat('hour'))),\n minute: Number(max.format(getAvailableDateValFormat('minute'))),\n second: Number(max.format(getAvailableDateValFormat('second'))),\n }\n : null;\n\n return [minItem, maxItem];\n}\n\n/********************************************************************************************************************\n * getAvailableDate\n * ******************************************************************************************************************/\n\nexport function getAvailableDate(\n availableDate: FormAvailableDate,\n type: FormAvailableDateType\n): [Dayjs | null, Dayjs | null];\nexport function getAvailableDate(\n availableDate: FormAvailableDate,\n type: FormDateType,\n time?: FormTimeType\n): [Dayjs | null, Dayjs | null];\nexport function getAvailableDate(\n availableDate: FormAvailableDate,\n type: FormAvailableDateType | FormDateType,\n time?: FormTimeType\n): [Dayjs | null, Dayjs | null] {\n let availableDateType: FormAvailableDateType;\n\n if (time) {\n availableDateType = getAvailableDateType(type as FormDateType, time);\n } else if (['date', 'date_time', 'time'].includes(type)) {\n availableDateType = getAvailableDateType(type as FormDateType, time);\n } else {\n availableDateType = type as FormAvailableDateType;\n }\n\n const availableDateVal = getAvailableDateVal(availableDate, availableDateType);\n const availableDateValFormat = getAvailableDateValFormat(availableDateType);\n\n return [\n availableDateVal[0] ? dayjs(availableDateVal[0].toString(), availableDateValFormat) : null,\n availableDateVal[1] ? dayjs(availableDateVal[1].toString(), availableDateValFormat) : null,\n ];\n}\n\n/********************************************************************************************************************\n * getAvailableDateVal\n * ******************************************************************************************************************/\n\nexport function getAvailableDateVal(\n availableDate: FormAvailableDate,\n type: FormAvailableDateType\n): [number | null, number | null];\nexport function getAvailableDateVal(\n availableDate: FormAvailableDate,\n type: FormDateType,\n time?: FormTimeType\n): [number | null, number | null];\nexport function getAvailableDateVal(\n availableDate: FormAvailableDate,\n type: FormAvailableDateType | FormDateType,\n time?: FormTimeType\n): [number | null, number | null] {\n let availableDateType: FormAvailableDateType;\n\n if (time) {\n availableDateType = getAvailableDateType(type as FormDateType, time);\n } else if (['date', 'date_time', 'time'].includes(type)) {\n availableDateType = getAvailableDateType(type as FormDateType, time);\n } else {\n availableDateType = type as FormAvailableDateType;\n }\n\n return [\n availableDate[0] ? availableDate[0][availableDateType] : null,\n availableDate[1] ? availableDate[1][availableDateType] : null,\n ];\n}\n\n/********************************************************************************************************************\n * getDateVal\n * ******************************************************************************************************************/\nexport function getDateValForAvailableDate(date: Dayjs, type: FormDateType, time?: FormTimeType): number {\n const format = getAvailableDateValFormat(type, time);\n return Number(date.format(format));\n}\n\n/********************************************************************************************************************\n * isDateAvailable\n * ******************************************************************************************************************/\n\nexport function isDateAvailable(date: Dayjs, availableDate: FormAvailableDate, type: FormAvailableDateType): boolean;\nexport function isDateAvailable(\n date: Dayjs,\n availableDate: FormAvailableDate,\n type: FormDateType,\n time?: FormTimeType\n): boolean;\nexport function isDateAvailable(\n date: Dayjs,\n availableDate: FormAvailableDate,\n type: FormAvailableDateType | FormDateType,\n time?: FormTimeType\n): boolean {\n let availableDateType: FormAvailableDateType;\n\n if (time) {\n availableDateType = getAvailableDateType(type as FormDateType, time);\n } else if (['date', 'date_time', 'time'].includes(type)) {\n availableDateType = getAvailableDateType(type as FormDateType, time);\n } else {\n availableDateType = type as FormAvailableDateType;\n }\n\n const dateVal = Number(date.format(getAvailableDateValFormat(availableDateType)));\n const availableDateVal = getAvailableDateVal(availableDate, availableDateType);\n return !(\n (availableDateVal[0] && dateVal < availableDateVal[0]) ||\n (availableDateVal[1] && dateVal > availableDateVal[1])\n );\n}\n\n/********************************************************************************************************************\n * checkDateAvailable\n * ******************************************************************************************************************/\n\nexport type checkDateAvailableResult = 'available' | 'min' | 'max';\n\nexport function checkDateAvailable(\n date: Dayjs,\n availableDate: FormAvailableDate,\n type: FormAvailableDateType\n): checkDateAvailableResult;\nexport function checkDateAvailable(\n date: Dayjs,\n availableDate: FormAvailableDate,\n type: FormDateType,\n time?: FormTimeType\n): checkDateAvailableResult;\nexport function checkDateAvailable(\n date: Dayjs,\n availableDate: FormAvailableDate,\n type: FormAvailableDateType | FormDateType,\n time?: FormTimeType\n): checkDateAvailableResult {\n let availableDateType: FormAvailableDateType;\n\n if (time) {\n availableDateType = getAvailableDateType(type as FormDateType, time);\n } else if (['date', 'date_time', 'time'].includes(type)) {\n availableDateType = getAvailableDateType(type as FormDateType, time);\n } else {\n availableDateType = type as FormAvailableDateType;\n }\n\n const dateVal = Number(date.format(getAvailableDateValFormat(availableDateType)));\n const availableDateVal = getAvailableDateVal(availableDate, availableDateType);\n\n if (availableDateVal[0] && dateVal < availableDateVal[0]) return 'min';\n if (availableDateVal[1] && dateVal > availableDateVal[1]) return 'max';\n\n return 'available';\n}\n","export function getFileSizeText(bytes: number, dp = 1) {\n const thresh = 1024;\n\n if (Math.abs(bytes) < thresh) {\n return `${bytes} Byte`;\n }\n\n const units = ['KB', 'MB', 'GB', 'TB', 'PB', 'EB', 'ZB', 'YB'];\n let u = -1;\n const r = 10 ** dp;\n\n do {\n bytes /= thresh;\n u += 1;\n } while (Math.round(Math.abs(bytes) * r) / r >= thresh && u < units.length - 1);\n\n return `${bytes.toFixed(dp)} ${units[u]}`;\n}\n","import React from 'react';\n\nexport function ToForwardRefExoticComponent<T>(\n component: T,\n ext?: Pick<React.ForwardRefExoticComponent<any>, 'displayName' | 'defaultProps'>\n) {\n const fComponent = component as React.ForwardRefExoticComponent<any>;\n fComponent.displayName = ext?.displayName;\n fComponent.defaultProps = ext?.defaultProps;\n return component as typeof component &\n Pick<React.ForwardRefExoticComponent<any>, 'displayName' | 'propTypes' | 'defaultProps' | '$$typeof'>;\n}\n\nexport function AutoTypeForwardRef<T, P = object>(\n render: (props: P, ref: React.ForwardedRef<T>) => React.ReactElement | null\n): (props: P & React.RefAttributes<T>) => React.ReactElement | null {\n return React.forwardRef(render) as (props: P & React.RefAttributes<T>) => React.ReactElement | null;\n}\n","const ll = function (message?: any, ...optionalParams: any[]) {\n console.log(message, ...optionalParams);\n};\n\nconst nextTick = function (callback: () => void): void {\n setTimeout(callback, 1);\n};\n\nexport { ll, nextTick };\n\nexport * from './compare';\nexport * from './date_time';\nexport * from './file';\nexport * from './forwardRef';\n","import { ReactNode } from 'react';\nimport { FormControlProps, GridProps, InputLabelProps } from '@mui/material';\nimport {\n PartialPick,\n CommonSxProps,\n FormValue,\n FormValueMap,\n FormValueItemCommands,\n FormValueItemBaseCommands,\n} from '../@types';\n\nexport interface FormInvalidItemInfo {\n name: string;\n commands: FormValueItemCommands<any>;\n}\n\nexport type FormInvalidItems = FormInvalidItemInfo[];\n\nexport interface FormProps\n extends CommonSxProps,\n PartialPick<FormControlProps, 'variant' | 'size' | 'color' | 'focused'>,\n PartialPick<GridProps, 'spacing'> {\n labelShrink?: InputLabelProps['shrink'];\n fullWidth?: boolean;\n fullHeight?: boolean;\n formColGap?: number;\n disabled?: boolean;\n //--------------------------------------------------------------------------------------------------------------------\n onSubmit?(data: FormValueMap): void;\n onInvalid?(invalidItems: FormInvalidItems): void;\n onValueChange?(name: string, value: any): void;\n onValueChangeByUser?(name: string, value: any): void;\n}\n\nexport const FormDefaultProps: Pick<\n FormProps,\n 'variant' | 'size' | 'color' | 'spacing' | 'formColGap' | 'fullWidth' | 'fullHeight'\n> = {\n variant: 'outlined',\n size: 'medium',\n color: 'primary',\n spacing: 2,\n formColGap: 1.5,\n fullWidth: true,\n fullHeight: false,\n};\n\n//--------------------------------------------------------------------------------------------------------------------\n\nexport interface FormCommands {\n submit(): void;\n getAllFormValue(): FormValueMap;\n resetAll(): void;\n getItem<T extends FormValueItemBaseCommands<any, true> = FormValueItemCommands<any>>(name: string): T | undefined;\n exists(name: string): boolean;\n getReset(name: string): any;\n getFormReset(name: string, subKey?: string): FormValue;\n reset(name: string): void;\n getValue(name: string): any;\n getFormValue(name: string, subKey?: string): FormValue;\n setValue(name: string, value: any): void;\n isExceptValue(name: string): boolean;\n isDisabled(name: string): boolean;\n setDisabled(name: string, disabled: boolean): void;\n isHidden(name: string): boolean;\n setHidden(name: string, hidden: boolean): void;\n focus(name: string): void;\n validate(name: string): boolean;\n setError(name: string, error: boolean, helperText: ReactNode): void;\n}\n","import { PartialPick, FormValueItemCommands } from '../@types';\nimport { FormProps, FormDefaultProps } from '../Form/Form.types';\n\nexport interface FormContextValue<T = any, AllowUndefinedValue extends boolean = true>\n extends PartialPick<\n FormProps,\n 'variant' | 'size' | 'color' | 'spacing' | 'formColGap' | 'focused' | 'labelShrink' | 'fullWidth'\n > {\n id: string;\n fullHeight?: boolean;\n disabled?: boolean;\n onAddValueItem(id: string, commands: FormValueItemCommands<T, AllowUndefinedValue>): void;\n onRemoveValueItem(id: string): void;\n onValueChange(name: string, value: T): void;\n onValueChangeByUser(name: string, value: T): void;\n onRequestSearchSubmit(name: string, value: T): void;\n /** FormRow */\n formColAutoXs?: number;\n formColWidth?: number;\n onAddFormCol?(id: string, xs: number | undefined): void;\n onRemoveFormCol?(id: string): void;\n /** FormCol */\n formColXs?: number;\n formColWithLabel?: boolean;\n formColWithHelperText?: boolean;\n}\n\nexport const FormContextDefaultValue: FormContextValue = {\n id: 'init',\n variant: FormDefaultProps.variant,\n size: FormDefaultProps.size,\n color: FormDefaultProps.color,\n spacing: FormDefaultProps.spacing,\n formColGap: FormDefaultProps.formColGap,\n focused: false,\n labelShrink: false,\n // eslint-disable-next-line\n onAddValueItem() {},\n // eslint-disable-next-line\n onRemoveValueItem() {},\n // eslint-disable-next-line\n onValueChange() {},\n // eslint-disable-next-line\n onValueChangeByUser() {},\n // eslint-disable-next-line\n onRequestSearchSubmit() {},\n};\n","import { createContext } from 'react';\nimport { FormContextDefaultValue, FormContextValue } from './FormContext.types';\n\nconst FormContext = createContext<FormContextValue>(FormContextDefaultValue);\n\nexport default FormContext;\n","import FormContext from './FormContext';\nimport { FormContextValue } from './FormContext.types';\nimport { useContext } from 'react';\n\nexport default function useFormState<T, AllowUndefinedValue extends boolean = true>(): FormContextValue<\n T,\n AllowUndefinedValue\n> {\n const value = useContext(FormContext);\n if (value === undefined) {\n throw new Error('useFormState should be used within FormContext.Provider');\n }\n return value as FormContextValue<T, AllowUndefinedValue>;\n}\n","import React from 'react';\nimport { FormContextProviderProps as Props } from './FormContextProvider.types';\nimport FormContext from '../FormContext';\n\nconst FormContextProvider: React.FC<Props> = ({ children, value }) => {\n return <FormContext.Provider value={value}>{children}</FormContext.Provider>;\n};\n\nexport default FormContextProvider;\n","import React, { useState, useRef, useLayoutEffect, FormEvent, useCallback, useMemo, CSSProperties } from 'react';\nimport classNames from 'classnames';\nimport { Box } from '@mui/material';\nimport { empty, notEmpty, nextTick } from '../@util';\nimport { FormProps as Props, FormDefaultProps, FormCommands, FormInvalidItems } from './Form.types';\nimport FormContextProvider from '../FormContextProvider';\nimport { useFormState } from '../FormContext';\nimport {\n FormDateValueItemCommands,\n FormValue,\n FormValueItemBaseCommands,\n FormValueItemCommands,\n FormValueItemCommandsMap,\n FormValueMap,\n FormYearMonthValue,\n FormYearMonthValueItemNameCommands,\n FormRangeValueItemNameCommands,\n FormYearMonthRangeValueItemNameCommands,\n} from '../@types';\nimport { FormCheckboxCommands } from '../FormItemCustom';\nimport dayjs from 'dayjs';\n\nconst Form = React.forwardRef<FormCommands, Props>(\n (\n {\n className,\n children,\n style: initStyle,\n sx,\n //--------------------------------------------------------------------------------------------------------------------\n variant: initVariant,\n size: initSize,\n color: initColor,\n spacing: initSpacing,\n formColGap: initFormColGap,\n focused: initFocused,\n labelShrink: initLabelShrink,\n fullWidth: initFullWidth,\n fullHeight,\n disabled,\n //----------------------------------------------------------------------------------------------------------------\n onSubmit,\n onInvalid,\n onValueChange,\n onValueChangeByUser,\n },\n ref\n ) => {\n /********************************************************************************************************************\n * FormState\n * ******************************************************************************************************************/\n\n const {\n id: formId,\n variant: formVariant,\n size: formSize,\n color: formColor,\n spacing: formSpacing,\n formColGap: formFormColGap,\n focused: formFocused,\n labelShrink: formLabelShrink,\n fullWidth: formFullWidth,\n onAddValueItem: formAddValueItem,\n onRemoveValueItem: formRemoveValueItem,\n onValueChange: formValueChange,\n onValueChangeByUser: formValueChangeByUser,\n ...otherFormState\n } = useFormState();\n\n /********************************************************************************************************************\n * Memo - FormState\n * ******************************************************************************************************************/\n\n const variant = useMemo(() => (initVariant == null ? formVariant : initVariant), [initVariant, formVariant]);\n const size = useMemo(() => (initSize == null ? formSize : initSize), [initSize, formSize]);\n const color = useMemo(() => (initColor == null ? formColor : initColor), [initColor, formColor]);\n const spacing = useMemo(() => initSpacing || formSpacing, [initSpacing, formSpacing]);\n const formColGap = useMemo(\n () => (initFormColGap == null ? formFormColGap : initFormColGap),\n [initFormColGap, formFormColGap]\n );\n const focused = useMemo(() => (initFocused == null ? formFocused : initFocused), [initFocused, formFocused]);\n const labelShrink = useMemo(\n () => (initLabelShrink == null ? formLabelShrink : initLabelShrink),\n [initLabelShrink, formLabelShrink]\n );\n const fullWidth = useMemo(\n () => (initFullWidth == null ? formFullWidth : initFullWidth),\n [initFullWidth, formFullWidth]\n );\n\n /********************************************************************************************************************\n * Ref\n * ******************************************************************************************************************/\n\n const formRef = useRef(null);\n\n /********************************************************************************************************************\n * State\n * ******************************************************************************************************************/\n\n const [valueItems] = useState<FormValueItemCommandsMap<any>>({});\n\n /********************************************************************************************************************\n * Function - getItemFormValue\n * ******************************************************************************************************************/\n\n const getItemFormValue = useCallback(\n (commands: FormValueItemCommands<any>, reset?: boolean): FormValue | FormValue[] => {\n const type = commands.getType();\n\n let value;\n switch (type) {\n case 'FormCheckbox':\n {\n const itemCommands = commands as FormCheckboxCommands;\n const checked = reset ? itemCommands.getReset() : itemCommands.getChecked();\n value = checked ? itemCommands.getValue() : itemCommands.getUncheckedValue();\n }\n break;\n case 'FormDatePicker':\n case 'FormDateTimePicker':\n case 'FormTimePicker':\n {\n value = reset ? commands.getReset() : commands.getValue();\n if (value) {\n value = dayjs(value).format((commands as FormDateValueItemCommands).getFormValueFormat());\n }\n }\n break;\n default:\n value = reset ? commands.getReset() : commands.getValue();\n }\n\n switch (type) {\n case 'FormDateRangePicker':\n {\n const startValue = value[0];\n const endValue = value[1];\n const format = (commands as FormDateValueItemCommands).getFormValueFormat();\n value = [startValue ? startValue.format(format) : '', endValue ? endValue.format(format) : ''];\n }\n break;\n case 'FormYearRangePicker':\n {\n const startValue = value[0];\n const endValue = value[1];\n value = [startValue ? startValue : '', endValue ? endValue : ''];\n }\n break;\n case 'FormMonthPicker':\n value = { year: value ? value.year : '', month: value ? value.month : '' };\n break;\n case 'FormMonthRangePicker':\n {\n const startValue = value[0];\n const endValue = value[1];\n value = [\n startValue ? startValue : { year: '', month: '' },\n endValue ? endValue : { year: '', month: '' },\n ];\n }\n break;\n default:\n if (empty(value)) {\n value = '';\n } else if (Array.isArray(value)) {\n if (commands.isFormValueSort && commands.isFormValueSort()) {\n value = [...value];\n (value as Array<string | number>).sort();\n }\n value = (value as Array<string | number>).join(\n commands.getFormValueSeparator ? commands.getFormValueSeparator() : ','\n );\n }\n break;\n }\n\n return value;\n },\n []\n );\n\n /********************************************************************************************************************\n * Function - resetAll\n * ******************************************************************************************************************/\n\n const resetAll = useCallback(() => {\n Object.keys(valueItems).forEach((id) => {\n valueItems[id]?.reset();\n });\n }, [valueItems]);\n\n const appendFormValueData = useCallback(\n (data: FormValueMap, itemCommands: FormValueItemCommands<any>) => {\n switch (itemCommands.getType()) {\n case 'FormDateRangePicker':\n {\n const commands = itemCommands as FormRangeValueItemNameCommands;\n const value = getItemFormValue(itemCommands) as FormValue[];\n data[commands.getFormValueFromName()] = value[0];\n data[commands.getFormValueToName()] = value[1];\n }\n break;\n case 'FormMonthPicker':\n {\n const commands = itemCommands as FormYearMonthValueItemNameCommands;\n const value = getItemFormValue(itemCommands) as FormYearMonthValue;\n data[commands.getFormValueYearName()] = value.year;\n data[commands.getFormValueMonthName()] = value.month;\n }\n break;\n case 'FormYearRangePicker':\n {\n const commands = itemCommands as FormRangeValueItemNameCommands;\n const value = getItemFormValue(itemCommands) as FormValue[];\n data[commands.getFormValueFromName()] = value[0];\n data[commands.getFormValueToName()] = value[1];\n }\n break;\n case 'FormMonthRangePicker':\n {\n const commands = itemCommands as FormYearMonthRangeValueItemNameCommands;\n const value = getItemFormValue(itemCommands) as FormYearMonthValue[];\n data[commands.getFormValueFromYearName()] = value[0].year;\n data[commands.getFormValueFromMonthName()] = value[0].month;\n data[commands.getFormValueToYearName()] = value[1].year;\n data[commands.getFormValueToMonthName()] = value[1].month;\n }\n break;\n default:\n {\n const name = itemCommands.getName();\n const value = getItemFormValue(itemCommands) as FormValue;\n\n data[name] = value == null ? '' : value;\n }\n break;\n }\n },\n [getItemFormValue]\n );\n\n const getAllFormValue = useCallback(() => {\n const data: FormValueMap = {};\n\n Object.keys(valueItems).forEach((id) => {\n const itemCommands = valueItems[id];\n if (itemCommands) {\n if (!itemCommands.isDisabled() && !itemCommands.isExceptValue()) {\n appendFormValueData(data, itemCommands);\n }\n }\n });\n\n return data;\n }, [valueItems, appendFormValueData]);\n\n /********************************************************************************************************************\n * Function - submit\n * ******************************************************************************************************************/\n\n const submit = useCallback(() => {\n let isAllValid = true;\n let firstInvalidItemId: string;\n\n const data: FormValueMap = {};\n const invalidItems: FormInvalidItems = [];\n\n Object.keys(valueItems).forEach((id) => {\n const itemCommands = valueItems[id];\n if (itemCommands) {\n if (!itemCommands.isDisabled()) {\n if (itemCommands.validate()) {\n if (!itemCommands.isExceptValue()) {\n appendFormValueData(data, itemCommands);\n }\n } else {\n invalidItems.push({ name: itemCommands.getName(), commands: itemCommands });\n\n if (isAllValid) {\n isAllValid = false;\n firstInvalidItemId = id;\n }\n }\n }\n }\n });\n\n if (isAllValid) {\n onSubmit && onSubmit(data);\n } else {\n onInvalid && onInvalid(invalidItems);\n nextTick(() => {\n valueItems[firstInvalidItemId]?.focusValidate();\n });\n }\n }, [valueItems, appendFormValueData, onSubmit, onInvalid]);\n\n /********************************************************************************************************************\n * Commands\n * ******************************************************************************************************************/\n\n useLayoutEffect(() => {\n if (ref) {\n const findValueItem = function <T extends FormValueItemBaseCommands<any, true> = FormValueItemCommands<any>>(\n name: string\n ): T | undefined {\n return Object.values(valueItems).find((commands) => {\n if (commands) {\n if (commands.getName() === name) {\n return true;\n }\n switch (commands.getType()) {\n case 'FormDateRangePicker':\n case 'FormYearRangePicker':\n return (\n name === (commands as FormRangeValueItemNameCommands).getFormValueFromName() ||\n name === (commands as FormRangeValueItemNameCommands).getFormValueToName()\n );\n case 'FormMonthPicker':\n return (\n name === (commands as FormYearMonthValueItemNameCommands).getFormValueYearName() ||\n name === (commands as FormYearMonthValueItemNameCommands).getFormValueMonthName()\n );\n case 'FormMonthRangePicker':\n return (\n name === (commands as FormYearMonthRangeValueItemNameCommands).getFormValueFromYearName() ||\n name === (commands as FormYearMonthRangeValueItemNameCommands).getFormValueFromMonthName() ||\n name === (commands as FormYearMonthRangeValueItemNameCommands).getFormValueToYearName() ||\n name === (commands as FormYearMonthRangeValueItemNameCommands).getFormValueToMonthName()\n );\n }\n }\n }) as T;\n };\n\n const getFormValue = (name: string, subKey?: string, isReset?: boolean) => {\n const valueItem = findValueItem(name);\n if (valueItem) {\n switch (valueItem.getType()) {\n case 'FormDateRangePicker':\n case 'FormYearRangePicker': {\n const commands = valueItem as FormRangeValueItemNameCommands;\n const value = getItemFormValue(valueItem, !!isReset) as FormValue[];\n if (notEmpty(subKey)) {\n if (subKey === commands.getFormValueFromNameSuffix()) {\n return value[0];\n } else if (subKey === commands.getFormValueToNameSuffix()) {\n return value[1];\n } else {\n throw new Error(`Form::getFormReset - ${valueItem.getType()} 의 subKey 값을 찾을 수 없습니다.`);\n }\n } else {\n throw new Error(\n `Form::getFormReset - ${valueItem.getType()} 의 값을 가져오려면 subKey 를 지정해야 합니다.`\n );\n }\n }\n case 'FormMonthPicker': {\n const commands = valueItem as FormYearMonthValueItemNameCommands;\n const value = getItemFormValue(valueItem, !!isReset) as FormYearMonthValue;\n if (notEmpty(subKey)) {\n if (subKey === commands.getFormValueYearNameSuffix()) {\n return value.year;\n } else if (subKey === commands.getFormValueMonthNameSuffix()) {\n return value.month;\n } else {\n throw new Error(`Form::getFormReset - ${valueItem.getType()} 의 subKey 값을 찾을 수 없습니다.`);\n }\n } else {\n throw new Error(\n `Form::getFormReset - ${valueItem.getType()} 의 값을 가져오려면 subKey 를 지정해야 합니다.`\n );\n }\n }\n case 'FormMonthRangePicker': {\n const commands = valueItem as FormYearMonthRangeValueItemNameCommands;\n const value = getItemFormValue(valueItem, !!isReset) as { year: number | ''; month: number | '' }[];\n if (notEmpty(subKey)) {\n if (subKey === commands.getFormValueFromYearNameSuffix()) {\n return value[0].year;\n } else if (subKey === commands.getFormValueFromMonthNameSuffix()) {\n return value[0].month;\n } else if (subKey === commands.getFormValueToYearNameSuffix()) {\n return value[1].year;\n } else if (subKey === commands.getFormValueToMonthNameSuffix()) {\n return value[1].month;\n } else {\n throw new Error(`Form::getFormReset - ${valueItem.getType()} 의 subKey 값을 찾을 수 없습니다.`);\n }\n } else {\n throw new Error(\n `Form::getFormReset - ${valueItem.getType()} 의 값을 가져오려면 subKey 를 지정해야 합니다.`\n );\n }\n }\n default:\n return getItemFormValue(valueItem, !!isReset) as FormValue;\n }\n } else throw new Error(`'${name}' 이 존재하지 않습니다.`);\n };\n\n const commands: FormCommands = {\n submit,\n getAllFormValue,\n resetAll,\n getItem<T extends FormValueItemBaseCommands<any, true> = FormValueItemCommands<any>>(name: string) {\n return findValueItem<T>(name);\n },\n exists(name) {\n return !!findValueItem(name);\n },\n getReset(name) {\n const valueItem = findValueItem(name);\n if (valueItem) return valueItem.getReset();\n else throw new Error(`'${name}' 이 존재하지 않습니다.`);\n },\n getFormReset(name, subKey) {\n return getFormValue(name, subKey, true);\n },\n reset(name) {\n const valueItem = findValueItem(name);\n if (valueItem) return valueItem.reset();\n else throw new Error(`'${name}' 이 존재하지 않습니다.`);\n },\n getValue(name) {\n const valueItem = findValueItem(name);\n if (valueItem) return valueItem.getValue();\n else throw new Error(`'${name}' 이 존재하지 않습니다.`);\n },\n getFormValue(name, subKey) {\n return getFormValue(name, subKey, false);\n },\n setValue(name, value) {\n const valueItem = findValueItem(name);\n if (valueItem) valueItem.setValue(value);\n else throw new Error(`'${name}' 이 존재하지 않습니다.`);\n },\n isExceptValue(name: string) {\n const valueItem = findValueItem(name);\n if (valueItem) return valueItem.isExceptValue();\n else throw new Error(`'${name}' 이 존재하지 않습니다.`);\n },\n isDisabled(name: string) {\n const valueItem = findValueItem(name);\n if (valueItem) return valueItem.isDisabled();\n else throw new Error(`'${name}' 이 존재하지 않습니다.`);\n },\n setDisabled(name: string, disabled: boolean) {\n const valueItem = findValueItem(name);\n if (valueItem) valueItem.setDisabled(disabled);\n else throw new Error(`'${name}' 이 존재하지 않습니다.`);\n },\n isHidden(name: string) {\n const valueItem = findValueItem(name);\n if (valueItem) return valueItem.isHidden();\n else throw new Error(`'${name}' 이 존재하지 않습니다.`);\n },\n setHidden(name: string, hidden: boolean) {\n const valueItem = findValueItem(name);\n if (valueItem) valueItem.setHidden(hidden);\n else throw new Error(`'${name}' 이 존재하지 않습니다.`);\n },\n focus(name) {\n const valueItem = findValueItem(name);\n if (valueItem) valueItem.focus();\n else throw new Error(`'${name}' 이 존재하지 않습니다.`);\n },\n validate(name) {\n const valueItem = findValueItem(name);\n if (valueItem) return valueItem.validate();\n else throw new Error(`'${name}' 이 존재하지 않습니다.`);\n },\n setError(name, error, helperText) {\n const valueItem = findValueItem(name);\n if (valueItem) valueItem.setError(error, helperText);\n else throw new Error(`'${name}' 이 존재하지 않습니다.`);\n },\n };\n\n if (typeof ref === 'function') {\n ref(commands);\n } else {\n ref.current = commands;\n }\n return () => {\n if (typeof ref === 'function') {\n ref(null);\n } else {\n ref.current = null;\n }\n };\n }\n }, [ref, valueItems, submit, resetAll, getAllFormValue, getItemFormValue]);\n\n /********************************************************************************************************************\n * Event Handler\n * ******************************************************************************************************************/\n\n const handleSubmit = useCallback(\n (e: FormEvent<HTMLFormElement>) => {\n e.preventDefault();\n\n if (!disabled) {\n submit();\n }\n },\n [disabled, submit]\n );\n\n /********************************************************************************************************************\n * Render\n * ******************************************************************************************************************/\n\n const style = useMemo(() => {\n return fullHeight ? { ...initStyle, flex: 1, height: '100%' } : initStyle;\n }, [initStyle, fullHeight]);\n\n const contentWrapStyle: CSSProperties = useMemo(\n () => ({\n display: 'flex',\n flexDirection: 'column',\n height: fullHeight ? '100%' : undefined,\n }),\n [fullHeight]\n );\n\n return (\n <FormContextProvider\n value={{\n id: formId || 'form',\n variant,\n size,\n color,\n spacing,\n formColGap,\n focused,\n labelShrink,\n fullWidth,\n fullHeight,\n disabled,\n onAddValueItem(id, item) {\n valueItems[id] = item;\n if (formAddValueItem) formAddValueItem(id, item);\n },\n onRemoveValueItem(id) {\n valueItems[id] = undefined;\n if (formRemoveValueItem) formRemoveValueItem(id);\n },\n onValueChange(name: string, value: FormValue) {\n if (onValueChange) onValueChange(name, value);\n if (formValueChange) formValueChange(name, value);\n },\n onValueChangeByUser(name, value) {\n if (onValueChangeByUser) onValueChangeByUser(name, value);\n if (formValueChangeByUser) formValueChangeByUser(name, value);\n },\n ...otherFormState,\n }}\n >\n <Box\n className={classNames('Form', `Form-variant-${variant}`, fullHeight && 'full-height', className)}\n component='form'\n ref={formRef}\n noValidate\n autoComplete='off'\n onSubmit={handleSubmit}\n style={style}\n sx={sx}\n >\n <div style={contentWrapStyle}>{children}</div>\n </Box>\n </FormContextProvider>\n );\n }\n);\n\nForm.displayName = 'Form';\nForm.defaultProps = FormDefaultProps;\n\nexport default Form;\n","import { ButtonProps } from '@mui/material';\nimport { PartialPick } from '../../@types';\nimport { FormContextValue } from '../../FormContext';\n\nexport interface FormButtonProps\n extends PartialPick<FormContextValue, 'color' | 'size'>,\n Omit<ButtonProps, 'color' | 'size' | 'startIcon' | 'endIcon'> {\n type?: 'button' | 'submit';\n icon?: string;\n startIcon?: string;\n endIcon?: string;\n}\n\nexport const FormButtonDefaultProps: FormButtonProps = {\n type: 'button',\n};\n","import { IconProps } from '@mui/material';\nimport { SvgIconComponent } from '@mui/icons-material';\n\nexport interface FormIconProps extends Pick<IconProps, 'color' | 'style' | 'sx' | 'className' | 'fontSize'> {\n children: string | SvgIconComponent;\n}\n\nexport const FormIconDefaultProps = {};\n","import React, { useMemo } from 'react';\nimport classNames from 'classnames';\nimport { Icon } from '@mui/material';\nimport { FormIconProps as Props, FormIconDefaultProps } from './FormIcon.types';\n\nconst FormIcon = React.forwardRef<HTMLAnchorElement, Props>(({ className, children: InitChildren, ...props }, ref) => {\n return useMemo(() => {\n const iconProps = { ...props, className: classNames('FormIcon', className) };\n return typeof InitChildren === 'string' ? (\n <Icon ref={ref} {...iconProps}>\n {InitChildren.replace(/[A-Z]/g, (letter, idx) => `${idx > 0 ? '_' : ''}${letter.toLowerCase()}`)}\n </Icon>\n ) : (\n <InitChildren {...iconProps} />\n );\n }, [InitChildren, className, props, ref]);\n});\n\nFormIcon.displayName = 'FormIcon';\nFormIcon.defaultProps = FormIconDefaultProps;\n\nexport default FormIcon;\n","import React, { useMemo } from 'react';\nimport classNames from 'classnames';\nimport { Button } from '@mui/material';\nimport { FormButtonProps as Props, FormButtonDefaultProps } from './FormButton.types';\nimport { useFormState } from '../../FormContext';\nimport FormIcon from '../FormIcon';\n\nconst FormButton = React.forwardRef<HTMLButtonElement, Props>(\n (\n {\n size: initSize,\n color: initColor,\n variant: initVariant,\n fullWidth: initFullWidth,\n children,\n className,\n type,\n icon,\n startIcon,\n endIcon,\n onClick,\n ...props\n },\n ref\n ) => {\n /********************************************************************************************************************\n * FormState\n * ******************************************************************************************************************/\n\n const { size: formSize, color: formColor, fullWidth: formFullWidth } = useFormState();\n\n /********************************************************************************************************************\n * Memo - FormState\n * ******************************************************************************************************************/\n\n const size = useMemo(() => (initSize == null ? formSize : initSize), [initSize, formSize]);\n const color = useMemo(() => (initColor == null ? formColor : initColor), [initColor, formColor]);\n const fullWidth = useMemo(\n () => (initFullWidth == null ? formFullWidth : initFullWidth),\n [initFullWidth, formFullWidth]\n );\n\n /********************************************************************************************************************\n * Memo\n * ******************************************************************************************************************/\n\n const variant = useMemo(() => {\n if (initVariant) {\n return initVariant;\n } else {\n switch (type) {\n case 'submit':\n return 'contained';\n default:\n return 'outlined';\n }\n }\n }, [initVariant, type]);\n\n /********************************************************************************************************************\n * Render\n * ******************************************************************************************************************/\n\n return (\n <Button\n ref={ref}\n className={classNames(className, 'FormButton')}\n type={type}\n variant={variant}\n size={size}\n color={color}\n fullWidth={fullWidth}\n onClick={onClick}\n startIcon={startIcon ? <FormIcon sx={{ mr: -0.5 }}>{startIcon}</FormIcon> : undefined}\n endIcon={endIcon ? <FormIcon sx={{ ml: -0.5 }}>{endIcon}</FormIcon> : undefined}\n {...props}\n >\n {icon && (\n <FormIcon fontSize={size} color='inherit' sx={{ mr: children ? 0.5 : undefined }}>\n {icon}\n </FormIcon>\n )}\n {children}\n </Button>\n );\n }\n);\n\nFormButton.displayName = 'FormButton';\nFormButton.defaultProps = FormButtonDefaultProps;\n\nexport default FormButton;\n","import { InputLabelProps } from '@mui/material';\nimport { PartialPick, PartialOmit } from '../../@types';\nimport { FormProps } from '../../Form';\n\nexport interface FormLabelProps extends PartialOmit<InputLabelProps, 'size'>, PartialPick<FormProps, 'size'> {\n icon?: string;\n warning?: boolean;\n}\n\nexport const FormLabelDefaultProps = {};\n","import { styled } from '@mui/material';\nimport FormIcon from '../FormIcon';\n\nexport const IconFormIcon = styled(FormIcon)`\n vertical-align: middle;\n margin-right: 3px;\n margin-top: -4px;\n margin-bottom: -2px;\n`;\n\nexport const ChildrenSpan = styled('span')`\n vertical-align: middle;\n`;\n","import React, { CSSProperties, useMemo } from 'react';\nimport { InputLabel, InputLabelProps, useTheme } from '@mui/material';\nimport { FormLabelProps as Props, FormLabelDefaultProps } from './FormLabel.types';\nimport { ChildrenSpan, IconFormIcon } from './FormLabel.style';\n\nconst FormLabel = React.forwardRef<HTMLLabelElement, Props>(\n ({ children, icon, size, style, error, warning, ...props }, ref) => {\n /********************************************************************************************************************\n * Use\n * ******************************************************************************************************************/\n\n const theme = useTheme();\n\n /********************************************************************************************************************\n * Memo\n * ******************************************************************************************************************/\n\n const finalProps = useMemo((): InputLabelProps => {\n const newStyle: CSSProperties = {\n height: 20,\n transform: size === 'small' ? 'translate(0, -1.5px) scale(0.7)' : undefined,\n ...style,\n };\n if (!error) {\n newStyle.color = warning ? theme.palette.warning.main : style?.color;\n }\n return {\n shrink: true,\n className: 'FormItemBase-InputLabel',\n size: size === 'medium' ? 'normal' : size,\n error,\n style: newStyle,\n ...props,\n };\n }, [size, style, warning, error, props, theme.palette.warning.main]);\n\n /********************************************************************************************************************\n * Render\n * ******************************************************************************************************************/\n\n return (\n <InputLabel ref={ref} {...finalProps}>\n {icon ? (\n <>\n <IconFormIcon>{icon}</IconFormIcon>\n <ChildrenSpan>{children}</ChildrenSpan>\n </>\n ) : (\n children\n )}\n </InputLabel>\n );\n }\n);\n\nFormLabel.displayName = 'FormLabel';\nFormLabel.defaultProps = FormLabelDefaultProps;\n\nexport default FormLabel;\n","import { PartialPick, CommonSxProps } from '../../@types';\nimport { FormDividerProps } from '../FormDivider';\nimport { FormContextValue } from '../../FormContext';\n\nexport interface FormBlockProps\n extends CommonSxProps,\n PartialPick<FormContextValue, 'variant' | 'size' | 'color' | 'spacing' | 'focused' | 'labelShrink' | 'fullWidth'>,\n PartialPick<FormDividerProps, 'icon' | 'label' | 'line' | 'lineVerticalMargin' | 'hidden'> {\n collapse?: boolean;\n collapseIn?: boolean;\n error?: boolean;\n warning?: boolean;\n}\n\nexport const FormBlockDefaultProps = {};\n","import { ReactNode } from 'react';\nimport { CommonSxProps } from '../../@types';\nimport { FormProps } from '../../Form';\nimport { FormIconProps } from '../../FormCommon';\n\nexport interface FormDividerProps extends CommonSxProps {\n size?: FormProps['size'];\n color?: FormProps['color'];\n //--------------------------------------------------------------------------------------------------------------------\n icon?: FormIconProps['children'];\n label?: ReactNode;\n line?: boolean;\n lineVerticalMargin?: string | number;\n hidden?: boolean;\n collapse?: boolean;\n collapseIn?: boolean;\n error?: boolean;\n warning?: boolean;\n onCollapseChange?(collapseIn: boolean): void;\n}\n\nexport const FormDividerDefaultProps: FormDividerProps = {\n lineVerticalMargin: 9,\n};\n","import { Box, styled } from '@mui/material';\n\nexport const StyledLineBox = styled(Box)`\n border-bottom: thin solid #dfdfdf;\n position: absolute;\n left: 0;\n top: 50%;\n width: 100%;\n`;\n\nexport const StyledErrorLineBox = styled(Box)(({ theme }) => ({\n borderBottom: `thin solid ${theme.palette.error.main}`,\n position: 'absolute',\n left: 0,\n top: '50%',\n width: '100%',\n opacity: 0.4,\n}));\n\nexport const StyledWarningLineBox = styled(Box)(({ theme }) => ({\n borderBottom: `thin solid ${theme.palette.warning.main}`,\n position: 'absolute',\n left: 0,\n top: '50%',\n width: '100%',\n opacity: 0.4,\n}));\n","import React, { CSSProperties, useCallback, useMemo } from 'react';\nimport classNames from 'classnames';\nimport { Grid, Box } from '@mui/material';\nimport { FormDividerProps as Props, FormDividerDefaultProps } from './FormDivider.types';\nimport { FormIcon } from '../../FormCommon';\nimport { useFormState } from '../../FormContext';\nimport { StyledErrorLineBox, StyledLineBox, StyledWarningLineBox } from './FormDivider.style';\n\nconst DEFAULT_LINE_STYLE: CSSProperties = { flex: 1, position: 'relative' };\n\nconst FormDivider = React.forwardRef<HTMLDivElement, Props>(\n (\n {\n size: initSize,\n //----------------------------------------------------------------------------------------------------------------\n icon,\n label,\n line,\n lineVerticalMargin,\n hidden,\n collapse,\n collapseIn,\n error,\n warning,\n onCollapseChange,\n //----------------------------------------------------------------------------------------------------------------\n className,\n style: initStyle,\n sx,\n },\n ref\n ) => {\n /********************************************************************************************************************\n * FormState\n * ******************************************************************************************************************/\n\n const { size: formSize } = useFormState();\n\n /********************************************************************************************************************\n * Memo - FormState\n * ******************************************************************************************************************/\n\n const size = useMemo(() => (initSize == null ? formSize : initSize), [initSize, formSize]);\n\n /********************************************************************************************************************\n * Memo\n * ******************************************************************************************************************/\n\n const style = useMemo(() => {\n if (hidden) {\n return { ...initStyle, display: 'none' };\n } else {\n return initStyle;\n }\n }, [hidden, initStyle]);\n\n const lineStyle = useMemo(() => {\n if (lineVerticalMargin) {\n return { ...DEFAULT_LINE_STYLE, marginTop: lineVerticalMargin, marginBottom: lineVerticalMargin };\n } else {\n return DEFAULT_LINE_STYLE;\n }\n }, [lineVerticalMargin]);\n\n /********************************************************************************************************************\n * Event Handler\n * ******************************************************************************************************************/\n\n const handleClick = useCallback(() => {\n if (collapse) {\n onCollapseChange && onCollapseChange(!collapseIn);\n }\n }, [collapse, collapseIn, onCollapseChange]);\n\n /********************************************************************************************************************\n * Render\n * ******************************************************************************************************************/\n\n return (\n <Grid ref={ref} item xs={12} style={style} className={classNames(className, 'FormDivider')} sx={sx}>\n <Box\n sx={{\n display: 'flex',\n py: 1,\n alignItems: 'center',\n justifyItems: 'center',\n padding: 0,\n cursor: collapse ? 'pointer' : undefined,\n }}\n onClick={handleClick}\n >\n {icon && (\n <FormIcon\n style={{ opacity: 0.54, marginRight: 5 }}\n color={error ? 'error' : warning ? 'warning' : undefined}\n fontSize={size}\n >\n {icon}\n </FormIcon>\n )}\n {label && (\n <Box\n sx={{\n paddingRight: '10px',\n color: error ? 'error.main' : warning ? 'warning.main' : 'text.secondary',\n fontWeight: 700,\n fontSize: size === 'small' ? '11.5px' : '12px',\n }}\n >\n {label}\n </Box>\n )}\n {(line || collapse) && (\n <div style={lineStyle}>\n {error ? <StyledErrorLineBox /> : warning ? <StyledWarningLineBox /> : <StyledLineBox />}\n </div>\n )}\n {collapse && (\n <FormIcon sx={{ opacity: 0.6, ml: 1 }} color={error ? 'error' : warning ? 'warning' : undefined}>\n {collapseIn ? 'KeyboardDoubleArrowUp' : 'KeyboardDoubleArrowDown'}\n </FormIcon>\n )}\n </Box>\n </Grid>\n );\n }\n);\n\nFormDivider.displayName = 'FormDivider.';\nFormDivider.defaultProps = FormDividerDefaultProps;\n\nexport default FormDivider;\n","import { styled, Grid } from '@mui/material';\n\nexport const StyledWrapGrid = styled(Grid)`\n width: 100%;\n`;\n","import React, { useEffect, useMemo } from 'react';\nimport classNames from 'classnames';\nimport { Collapse, Grid } from '@mui/material';\nimport { FormBlockProps as Props, FormBlockDefaultProps } from './FormBlock.types';\nimport { FormContext, useFormState } from '../../FormContext';\nimport FormDivider from '../FormDivider';\nimport { useAutoUpdateState } from '@pdg/react-hook';\nimport { StyledWrapGrid } from './FormBlock.style';\n\nconst FormBlock = React.forwardRef<HTMLDivElement, Props>(\n (\n {\n variant: initVariant,\n size: initSize,\n color: initColor,\n spacing: initSpacing,\n focused: initFocused,\n labelShrink: initLabelShrink,\n fullWidth: initFullWidth,\n //----------------------------------------------------------------------------------------------------------------\n icon,\n label,\n line,\n lineVerticalMargin,\n error,\n warning,\n //----------------------------------------------------------------------------------------------------------------\n hidden,\n collapse,\n collapseIn: initCollapseIn,\n //----------------------------------------------------------------------------------------------------------------\n children,\n className,\n style: initStyle,\n sx,\n },\n ref\n ) => {\n /********************************************************************************************************************\n * FormState\n * ******************************************************************************************************************/\n\n const {\n variant: formVariant,\n size: formSize,\n color: formColor,\n spacing: formSpacing,\n focused: formFocused,\n labelShrink: formLabelShrink,\n fullWidth: formFullWidth,\n ...otherFormState\n } = useFormState();\n\n /********************************************************************************************************************\n * Memo - FormState\n * ******************************************************************************************************************/\n\n const variant = useMemo(() => (initVariant == null ? formVariant : initVariant), [initVariant, formVariant]);\n const size = useMemo(() => (initSize == null ? formSize : initSize), [initSize, formSize]);\n const color = useMemo(() => (initColor == null ? formColor : initColor), [initColor, formColor]);\n const spacing = useMemo(() => initSpacing || formSpacing, [initSpacing, formSpacing]);\n const focused = useMemo(() => (initFocused == null ? formFocused : initFocused), [initFocused, formFocused]);\n const labelShrink = useMemo(\n () => (initLabelShrink == null ? formLabelShrink : initLabelShrink),\n [initLabelShrink, formLabelShrink]\n );\n const fullWidth = useMemo(\n () => (initFullWidth == null ? formFullWidth : initFullWidth),\n [initFullWidth, formFullWidth]\n );\n\n /********************************************************************************************************************\n * State\n * ******************************************************************************************************************/\n\n const [collapseIn, setCollapseIn] = useAutoUpdateState(initCollapseIn);\n\n /********************************************************************************************************************\n * Memo\n * ******************************************************************************************************************/\n\n const style = useMemo(() => {\n if (hidden) {\n return { ...initStyle, display: 'none' };\n } else {\n return initStyle;\n }\n }, [hidden, initStyle]);\n\n /********************************************************************************************************************\n * Effect\n * ******************************************************************************************************************/\n\n useEffect(() => {\n setCollapseIn(initCollapseIn);\n }, [initCollapseIn, setCollapseIn]);\n\n /********************************************************************************************************************\n * Memo\n * ******************************************************************************************************************/\n\n const Container = useMemo(() => {\n return collapse ? Collapse : React.Fragment;\n }, [collapse]);\n\n const containerProps = useMemo(() => {\n return collapse ? { in: collapseIn } : undefined;\n }, [collapse, collapseIn]);\n\n /********************************************************************************************************************\n * Render\n * ******************************************************************************************************************/\n\n return (\n <FormContext.Provider\n value={{ variant, size, color, spacing, focused, labelShrink, fullWidth, ...otherFormState }}\n >\n <Grid item ref={ref} xs={12} className={classNames(className, 'FormBlock')} style={style} sx={sx}>\n <Grid container spacing={spacing}>\n {(icon || label || line || collapse) && (\n <FormDivider\n className='FormBlock-header'\n collapse={collapse}\n collapseIn={collapseIn}\n size={size}\n icon={icon}\n color={color}\n label={label}\n line={line}\n error={error}\n warning={warning}\n lineVerticalMargin={lineVerticalMargin}\n hidden={hidden}\n onCollapseChange={collapse ? (newCollapseIn) => setCollapseIn(newCollapseIn) : undefined}\n />\n )}\n <StyledWrapGrid item xs={12}>\n <Container {...containerProps}>\n <Grid container spacing={spacing}>\n <StyledWrapGrid item xs={12} className='FormBlock-body'>\n <Grid className='FormBlock-content' container spacing={spacing}>\n {children}\n </Grid>\n </StyledWrapGrid>\n </Grid>\n </Container>\n </StyledWrapGrid>\n </Grid>\n </Grid>\n </FormContext.Provider>\n );\n }\n);\n\nFormBlock.displayName = 'FormBlock';\nFormBlock.defaultProps = FormBlockDefaultProps;\n\nexport default FormBlock;\n","import { ReactNode } from 'react';\nimport { FormHelperTextProps } from '@mui/material';\nimport { PartialPick, CommonSxProps } from '../../@types';\nimport { FormContextValue } from '../../FormContext';\nimport { FormDividerProps } from '../FormDivider';\n\nexport interface FormRowProps\n extends CommonSxProps,\n PartialPick<FormContextValue, 'variant' | 'size' | 'color' | 'spacing' | 'focused' | 'labelShrink' | 'fullWidth'>,\n PartialPick<FormDividerProps, 'icon' | 'label' | 'line' | 'lineVerticalMargin' | 'hidden' | 'warning'>,\n PartialPick<FormHelperTextProps, 'error'> {\n helperText?: ReactNode;\n}\n\nexport const FormRowDefaultProps = {};\n\nexport interface FormColsInRowMap {\n [key: string]: number | undefined;\n}\n","import { styled, Grid } from '@mui/material';\n\nexport const StyledWrapGrid = styled(Grid)`\n width: 100%;\n`;\n","import React, { useCallback, useMemo, useState } from 'react';\nimport classNames from 'classnames';\nimport { FormHelperText, Grid } from '@mui/material';\nimport { FormRowProps as Props, FormRowDefaultProps, FormColsInRowMap } from './FormRow.types';\nimport { FormContext, useFormState } from '../../FormContext';\nimport FormDivider from '../FormDivider';\nimport { StyledWrapGrid } from './FormRow.style';\n\nconst FormRow = React.forwardRef<HTMLDivElement, Props>(\n (\n {\n variant: initVariant,\n size: initSize,\n color: initColor,\n spacing: initSpacing,\n focused: initFocused,\n labelShrink: initLabelShrink,\n fullWidth: initFullWidth,\n //----------------------------------------------------------------------------------------------------------------\n icon,\n label,\n line,\n lineVerticalMargin,\n //----------------------------------------------------------------------------------------------------------------\n hidden,\n error,\n warning,\n helperText,\n //----------------------------------------------------------------------------------------------------------------\n children,\n className,\n style: initStyle,\n sx,\n },\n ref\n ) => {\n /********************************************************************************************************************\n * FormState\n * ******************************************************************************************************************/\n\n const {\n variant: formVariant,\n size: formSize,\n color: formColor,\n spacing: formSpacing,\n focused: formFocused,\n labelShrink: formLabelShrink,\n fullWidth: formFullWidth,\n ...otherFormState\n } = useFormState();\n\n /********************************************************************************************************************\n * Memo - FormState\n * ******************************************************************************************************************/\n\n const variant = useMemo(() => (initVariant == null ? formVariant : initVariant), [initVariant, formVariant]);\n const size = useMemo(() => (initSize == null ? formSize : initSize), [initSize, formSize]);\n const color = useMemo(() => (initColor == null ? formColor : initColor), [initColor, formColor]);\n const spacing = useMemo(() => initSpacing || formSpacing, [initSpacing, formSpacing]);\n const focused = useMemo(() => (initFocused == null ? formFocused : initFocused), [initFocused, formFocused]);\n const labelShrink = useMemo(\n () => (initLabelShrink == null ? formLabelShrink : initLabelShrink),\n [initLabelShrink, formLabelShrink]\n );\n const fullWidth = useMemo(\n () => (initFullWidth == null ? formFullWidth : initFullWidth),\n [initFullWidth, formFullWidth]\n );\n\n /********************************************************************************************************************\n * State\n * ******************************************************************************************************************/\n\n const [formCols] = useState<FormColsInRowMap>({});\n const [formColAutoXs, setFormColAutoXs] = useState<number>(12);\n\n /********************************************************************************************************************\n * Memo\n * ******************************************************************************************************************/\n\n const style = useMemo(() => {\n const style: Props['style'] = { width: '100%', ...initStyle };\n if (hidden) {\n style.display = 'none';\n }\n return style;\n }, [hidden, initStyle]);\n\n /********************************************************************************************************************\n * Function - makeFormColXs\n * ******************************************************************************************************************/\n\n const makeFormColXs = useCallback(() => {\n const formColKeys = Object.keys(formCols);\n\n let autoXs = 12;\n let autoXsCount = formColKeys.length;\n\n formColKeys.forEach((id) => {\n const xs = formCols[id];\n if (xs != null) {\n autoXs -= xs;\n autoXsCount -= 1;\n }\n });\n\n setFormColAutoXs(autoXsCount === 0 ? autoXs : autoXs / autoXsCount);\n }, [formCols]);\n\n /********************************************************************************************************************\n * Event Handler\n * ******************************************************************************************************************/\n\n const handleAddFormCol = useCallback(\n (id: string, xs: number | undefined) => {\n formCols[id] = xs;\n makeFormColXs();\n },\n [formCols, makeFormColXs]\n );\n\n const handleRemoveFormCol = useCallback(\n (id: string) => {\n delete formCols[id];\n makeFormColXs();\n },\n [formCols, makeFormColXs]\n );\n\n //------------------------------------------------------------------------------------------------------------------\n\n return (\n <FormContext.Provider\n value={{\n variant,\n size,\n color,\n spacing,\n focused,\n labelShrink,\n fullWidth,\n formColAutoXs,\n onAddFormCol: handleAddFormCol,\n onRemoveFormCol: handleRemoveFormCol,\n ...otherFormState,\n }}\n >\n <Grid item ref={ref} xs={12} className={classNames(className, 'FormRow')} style={style} sx={sx}>\n <Grid container spacing={spacing}>\n {(icon || label || line) && (\n <FormDivider\n className={classNames(className, 'FormRow-header')}\n size={size}\n icon={icon}\n color={color}\n label={label}\n line={line}\n error={error}\n warning={warning}\n lineVerticalMargin={lineVerticalMargin}\n hidden={hidden}\n />\n )}\n <StyledWrapGrid item xs={12} className='FormRow-body'>\n <Grid\n className='FormRow-content'\n container\n spacing={spacing}\n direction='row'\n style={{ flexWrap: 'nowrap' }}\n >\n {children}\n </Grid>\n {helperText && (\n <FormHelperText className='FormRow-helper-text' component='div' error={error}>\n {helperText}\n </FormHelperText>\n )}\n </StyledWrapGrid>\n </Grid>\n </Grid>\n </FormContext.Provider>\n );\n }\n);\n\nFormRow.displayName = 'FormRow';\nFormRow.defaultProps = FormRowDefaultProps;\n\nexport default FormRow;\n","import { ReactNode } from 'react';\nimport { PartialPick, CommonSxProps } from '../../@types';\nimport { FormLabelProps } from '../../FormCommon';\nimport { FormContextValue } from '../../FormContext';\n\nexport interface FormColProps\n extends CommonSxProps,\n PartialPick<FormContextValue, 'variant' | 'size' | 'color' | 'spacing' | 'focused' | 'labelShrink' | 'fullWidth'>,\n PartialPick<FormLabelProps, 'icon' | 'error' | 'warning'> {\n xs?: number;\n label?: ReactNode;\n hidden?: boolean;\n helperText?: ReactNode;\n helperTextShift?: boolean;\n gap?: number;\n}\n\nexport const FormColDefaultProps = {};\n","import React, { useEffect, useLayoutEffect, useId, useCallback, useMemo, useRef } from 'react';\nimport classNames from 'classnames';\nimport { FormHelperText, Grid, Box } from '@mui/material';\nimport { useResizeDetector } from 'react-resize-detector';\nimport { FormColProps as Props, FormColDefaultProps } from './FormCol.types';\nimport { useFormState } from '../../FormContext';\nimport { FormLabel } from '../../FormCommon';\nimport FormContextProvider from '../../FormContextProvider';\nimport { useAutoUpdateState } from '@pdg/react-hook';\n\nconst FormCol = React.forwardRef<HTMLDivElement, Props>(\n (\n {\n variant: initVariant,\n size: initSize,\n color: initColor,\n spacing: initSpacing,\n focused: initFocused,\n labelShrink: initLabelShrink,\n fullWidth: initFullWidth,\n //----------------------------------------------------------------------------------------------------------------\n gap: initGap,\n icon,\n label,\n hidden,\n error,\n warning,\n helperText,\n helperTextShift,\n //----------------------------------------------------------------------------------------------------------------\n xs,\n className,\n children,\n style: initStyle,\n sx,\n },\n ref\n ) => {\n /********************************************************************************************************************\n * ID\n * ******************************************************************************************************************/\n\n const id = useId();\n\n /********************************************************************************************************************\n * Ref\n * ******************************************************************************************************************/\n\n const gridRef = useRef<HTMLDivElement>(null);\n\n /********************************************************************************************************************\n * FormState\n * ******************************************************************************************************************/\n\n const {\n variant: formVariant,\n size: formSize,\n color: formColor,\n spacing: formSpacing,\n formColGap: formFormColGap,\n focused: formFocused,\n labelShrink: formLabelShrink,\n fullWidth: formFullWidth,\n formColAutoXs,\n onAddFormCol,\n onRemoveFormCol,\n ...otherFormState\n } = useFormState();\n\n /********************************************************************************************************************\n * Memo - FormState\n * ******************************************************************************************************************/\n\n const variant = useMemo(() => (initVariant == null ? formVariant : initVariant), [initVariant, formVariant]);\n const size = useMemo(() => (initSize == null ? formSize : initSize), [initSize, formSize]);\n const color = useMemo(() => (initColor == null ? formColor : initColor), [initColor, formColor]);\n const spacing = useMemo(() => initSpacing || formSpacing, [initSpacing, formSpacing]);\n const focused = useMemo(() => (initFocused == null ? formFocused : initFocused), [initFocused, formFocused]);\n const labelShrink = useMemo(\n () => (initLabelShrink == null ? formLabelShrink : initLabelShrink),\n [initLabelShrink, formLabelShrink]\n );\n const fullWidth = useMemo(\n () => (initFullWidth == null ? formFullWidth : initFullWidth),\n [initFullWidth, formFullWidth]\n );\n\n /********************************************************************************************************************\n * Memo\n * ******************************************************************************************************************/\n\n const gap = useMemo(() => (initGap == null ? formFormColGap : initGap), [formFormColGap, initGap]);\n\n /********************************************************************************************************************\n * ResizeDetector\n * ******************************************************************************************************************/\n\n const { width: formColWidth } = useResizeDetector({\n targetRef: gridRef,\n handleWidth: true,\n handleHeight: false,\n });\n\n /********************************************************************************************************************\n * State - style\n * ******************************************************************************************************************/\n\n const [style] = useAutoUpdateState<Props['style']>(\n useCallback(() => {\n if (hidden) {\n return { ...initStyle, display: 'none' };\n } else {\n return initStyle;\n }\n }, [initStyle, hidden])\n );\n\n /********************************************************************************************************************\n * LayoutEffect\n * ******************************************************************************************************************/\n\n useLayoutEffect(() => {\n if (onAddFormCol) onAddFormCol(id, xs);\n return () => {\n if (onRemoveFormCol) onRemoveFormCol(id);\n };\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [xs]);\n\n /********************************************************************************************************************\n * Effect\n * ******************************************************************************************************************/\n\n useEffect(() => {\n if (ref) {\n if (typeof ref === 'function') {\n ref(gridRef.current);\n } else {\n ref.current = gridRef.current;\n }\n }\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, []);\n\n /********************************************************************************************************************\n * Render\n * ******************************************************************************************************************/\n\n return (\n <FormContextProvider\n value={{\n variant,\n size,\n color,\n spacing,\n focused,\n labelShrink,\n fullWidth,\n formColXs: xs || formColAutoXs || 12,\n formColWidth,\n formColWithLabel: !!label,\n formColWithHelperText: !!helperText,\n ...otherFormState,\n }}\n >\n <Grid\n ref={gridRef}\n item\n xs={xs || formColAutoXs || 12}\n className={classNames(className, 'FormCol', !!label && 'with-label', !!helperText && 'with-helper-text')}\n style={style}\n sx={sx}\n >\n <Grid container direction='column'>\n {label && (\n <Grid item className='FormCol-header'>\n <div style={{ position: 'relative', height: 20 }}>\n <FormLabel\n className='FormCol-FormLabel'\n size={size}\n icon={icon}\n focused={focused}\n color={color}\n error={error}\n warning={warning}\n style={{ position: 'absolute', left: 5, top: 0 }}\n >\n {label}\n </FormLabel>\n </div>\n </Grid>\n )}\n <Grid item xs={2} className='FormCol-content'>\n <Box sx={{ display: 'flex', flexWrap: 'wrap', gap }}>{children}</Box>\n </Grid>\n {helperText && (\n <Grid item className='FormCol-helper-text'>\n <FormHelperText component='div' error={error} style={{ marginLeft: helperTextShift ? 14 : 5 }}>\n {helperText}\n </FormHelperText>\n </Grid>\n )}\n </Grid>\n </Grid>\n </FormContextProvider>\n );\n }\n);\n\nFormCol.displayName = 'FormCol';\nFormCol.defaultProps = FormColDefaultProps;\n\nexport default FormCol;\n","import { ReactNode } from 'react';\n\nexport interface FormBodyProps {\n children?: ReactNode;\n hidden?: boolean;\n}\n\nexport const FormBodyDefaultProps = {};\n","import { styled } from '@mui/material';\n\nexport const StyledContainerDiv = styled('div')`\n flex: 1;\n position: relative;\n`;\n\nexport const StyledContentDiv = styled('div')`\n ::-webkit-scrollbar {\n width: 8px;\n }\n\n ::-webkit-scrollbar-thumb {\n background-color: #e4e4e4;\n border-radius: 100px;\n }\n\n ::-webkit-scrollbar-thumb:hover {\n background-color: #cfcfcf;\n border-radius: 100px;\n }\n`;\n","import React, { CSSProperties, useMemo, useRef, useState } from 'react';\nimport { FormBodyProps as Props, FormBodyDefaultProps } from './FormBody.types';\nimport { useResizeDetector } from 'react-resize-detector';\nimport { useFormState } from '../../FormContext';\nimport { Grid } from '@mui/material';\nimport { StyledContainerDiv, StyledContentDiv } from './FormBody.style';\n\nconst FormBody: React.FC<Props> = ({ children, hidden }) => {\n /********************************************************************************************************************\n * Ref\n * ******************************************************************************************************************/\n\n const containerRef = useRef<HTMLDivElement>(null);\n\n /********************************************************************************************************************\n * State\n * ******************************************************************************************************************/\n\n const { spacing, fullHeight } = useFormState();\n const [height, setHeight] = useState(0);\n\n /********************************************************************************************************************\n * ResizeDetector\n * ******************************************************************************************************************/\n\n useResizeDetector({\n targetRef: containerRef,\n handleWidth: false,\n handleHeight: true,\n onResize() {\n setHeight(containerRef.current?.getBoundingClientRect()?.height || 0);\n },\n });\n\n /********************************************************************************************************************\n * Style\n * ******************************************************************************************************************/\n\n const style = useMemo(() => (hidden ? { display: 'none' } : undefined), [hidden]);\n\n const contentStyle: CSSProperties | undefined = useMemo(\n () =>\n fullHeight\n ? {\n height,\n paddingTop: 8,\n overflowY: 'auto',\n position: 'absolute',\n width: '100%',\n }\n : undefined,\n [fullHeight, height]\n );\n\n return (\n <StyledContainerDiv ref={fullHeight ? containerRef : undefined} className='FormBody' style={style}>\n <StyledContentDiv style={contentStyle}>\n <Grid container spacing={spacing} direction='column'>\n {children}\n </Grid>\n </StyledContentDiv>\n </StyledContainerDiv>\n );\n};\n\nFormBody.displayName = 'FormBody';\nFormBody.defaultProps = FormBodyDefaultProps;\n\nexport default FormBody;\n","import { ReactNode } from 'react';\n\nexport interface FormFooterProps {\n children?: ReactNode;\n noLine?: boolean;\n hidden?: boolean;\n}\n\nexport const FormFooterDefaultProps = {};\n","import React, { useMemo } from 'react';\nimport { FormFooterProps as Props, FormFooterDefaultProps } from './FormFooter.types';\nimport { Grid } from '@mui/material';\nimport { useFormState } from '../../FormContext';\nimport FormDivider from '../FormDivider';\n\nconst FormFooter: React.FC<Props> = ({ children, noLine, hidden }) => {\n const { spacing } = useFormState();\n\n const style = useMemo(() => (hidden ? { display: 'none' } : undefined), [hidden]);\n\n return (\n <Grid item xs={12} className='FormFooter' style={style}>\n <Grid container spacing={spacing} direction='column'>\n {!noLine && (\n <Grid item xs={12} sx={{ mt: spacing }}>\n <FormDivider line />\n </Grid>\n )}\n {children}\n </Grid>\n </Grid>\n );\n};\n\nFormFooter.displayName = 'FormFooter';\nFormFooter.defaultProps = FormFooterDefaultProps;\n\nexport default FormFooter;\n","import { ReactNode } from 'react';\nimport { TextFieldProps } from '@mui/material';\nimport { FormValueItemBaseCommands, FormValueItemProps } from '../../@types';\n\nexport type FormTextFieldValue = any;\n\nexport interface FormTextFieldCommands<T = FormTextFieldValue, AllowUndefinedValue extends boolean = true>\n extends FormValueItemBaseCommands<T, AllowUndefinedValue> {}\n\nexport type FormTextFieldProps<\n T = FormTextFieldValue,\n AllowUndefinedValue extends boolean = true,\n V = AllowUndefinedValue extends true ? T | undefined : T,\n> = Omit<TextFieldProps, 'ref' | 'name' | 'value' | 'onChange'> &\n Omit<FormValueItemProps<T, AllowUndefinedValue>, 'label' | 'fullWidth' | 'disabled' | 'error'> & {\n icon?: string;\n clear?: boolean;\n maxLength?: number;\n labelShrink?: boolean;\n validPattern?: RegExp;\n invalidPattern?: RegExp;\n startAdornment?: ReactNode;\n endAdornment?: ReactNode;\n noFormValueItem?: boolean;\n disableReturnKey?: boolean;\n onValue?(value: V): V;\n };\n\nexport const FormTextFieldDefaultProps = {};\n","function styleInject(css, ref) {\n if ( ref === void 0 ) ref = {};\n var insertAt = ref.insertAt;\n\n if (!css || typeof document === 'undefined') { return; }\n\n var head = document.head || document.getElementsByTagName('head')[0];\n var style = document.createElement('style');\n style.type = 'text/css';\n\n if (insertAt === 'top') {\n if (head.firstChild) {\n head.insertBefore(style, head.firstChild);\n } else {\n head.appendChild(style);\n }\n } else {\n head.appendChild(style);\n }\n\n if (style.styleSheet) {\n style.styleSheet.cssText = css;\n } else {\n style.appendChild(document.createTextNode(css));\n }\n}\n\nexport default styleInject;\n","import React, { useId, useRef, useState, useEffect, useCallback, ReactNode, useLayoutEffect, useMemo } from 'react';\nimport classNames from 'classnames';\nimport { IconButton, InputAdornment, InputProps, TextField } from '@mui/material';\nimport { useAutoUpdateState, useFirstSkipEffect } from '@pdg/react-hook';\nimport { nextTick, empty, notEmpty } from '../../@util';\nimport {\n FormTextFieldProps,\n FormTextFieldDefaultProps,\n FormTextFieldCommands,\n FormTextFieldValue,\n} from './FormTextField.types';\nimport { useFormState } from '../../FormContext';\nimport { FormIcon } from '../../FormCommon';\nimport './FormTextField.scss';\n\ninterface WithForwardRefType<T = FormTextFieldValue, AllowUndefinedValue extends boolean = true>\n extends React.FC<FormTextFieldProps<T, AllowUndefinedValue>> {\n <T = FormTextFieldValue, AllowUndefinedValue extends boolean = true>(\n props: FormTextFieldProps<T, AllowUndefinedValue> &\n React.RefAttributes<FormTextFieldCommands<T, AllowUndefinedValue>>\n ): ReturnType<React.FC<FormTextFieldProps<T, AllowUndefinedValue>>>;\n}\n\nconst FormTextField: WithForwardRefType = React.forwardRef<FormTextFieldCommands, FormTextFieldProps>(\n (\n {\n variant: initVariant,\n size: initSize,\n color: initColor,\n focused: initFocused,\n labelShrink: initLabelShrink,\n fullWidth: initFullWidth,\n //----------------------------------------------------------------------------------------------------------------\n name,\n required,\n value: initValue,\n data: initData,\n icon,\n labelIcon,\n label: initLabel,\n error: initError,\n helperText,\n exceptValue,\n readOnly,\n tabIndex,\n disabled: initDisabled,\n placeholder,\n maxLength,\n clear,\n width,\n InputProps: initMuiInputProps,\n InputLabelProps: initMuiInputLabelProps,\n inputProps: initInputProps,\n inputRef: initInputRef,\n select,\n SelectProps,\n multiline,\n validPattern,\n invalidPattern,\n startAdornment,\n endAdornment,\n noFormValueItem,\n hidden: initHidden,\n disableReturnKey,\n //----------------------------------------------------------------------------------------------------------------\n onChange,\n onValue,\n onValidate,\n onBlur,\n onKeyDown,\n //----------------------------------------------------------------------------------------------------------------\n className,\n style: initStyle,\n //----------------------------------------------------------------------------------------------------------------\n ...props\n },\n ref\n ) => {\n /********************************************************************************************************************\n * ID\n * ******************************************************************************************************************/\n\n const id = useId();\n\n /********************************************************************************************************************\n * Ref\n * ******************************************************************************************************************/\n\n const inputRef = useRef<HTMLInputElement>(null);\n\n /********************************************************************************************************************\n * FormState\n * ******************************************************************************************************************/\n\n const {\n variant: formVariant,\n size: formSize,\n color: formColor,\n focused: formFocused,\n labelShrink: formLabelShrink,\n fullWidth: formFullWidth,\n disabled: formDisabled,\n formColWithHelperText,\n onAddValueItem,\n onRemoveValueItem,\n onValueChange,\n onValueChangeByUser,\n onRequestSearchSubmit,\n } = useFormState();\n\n /********************************************************************************************************************\n * Memo - FormState\n * ******************************************************************************************************************/\n\n const variant = useMemo(() => (initVariant == null ? formVariant : initVariant), [initVariant, formVariant]);\n const size = useMemo(() => (initSize == null ? formSize : initSize), [initSize, formSize]);\n const color = useMemo(() => (initColor == null ? formColor : initColor), [initColor, formColor]);\n const focused = useMemo(() => (initFocused == null ? formFocused : initFocused), [initFocused, formFocused]);\n const labelShrink = useMemo(\n () => (initLabelShrink == null ? formLabelShrink : initLabelShrink),\n [initLabelShrink, formLabelShrink]\n );\n const fullWidth = useMemo(\n () => (initFullWidth == null ? formFullWidth : initFullWidth),\n [initFullWidth, formFullWidth]\n );\n\n /********************************************************************************************************************\n * State\n * ******************************************************************************************************************/\n\n const [error, setError] = useAutoUpdateState<FormTextFieldProps['error']>(initError);\n const [errorHelperText, setErrorHelperText] = useState<FormTextFieldProps['helperText']>();\n const [showClear, setShowClear] = useState<boolean>(false);\n const [disabled, setDisabled] = useAutoUpdateState<FormTextFieldProps['disabled']>(\n initDisabled == null ? formDisabled : initDisabled\n );\n const [hidden, setHidden] = useAutoUpdateState<FormTextFieldProps['hidden']>(initHidden);\n const [data, setData] = useAutoUpdateState<FormTextFieldProps['data']>(initData);\n\n /********************************************************************************************************************\n * Memo - muiInputLabelProps\n * ******************************************************************************************************************/\n\n const muiInputLabelProps = useMemo(() => {\n if (labelShrink || placeholder) {\n return {\n ...initMuiInputLabelProps,\n shrink: true,\n };\n } else {\n return initMuiInputLabelProps;\n }\n }, [initMuiInputLabelProps, labelShrink, placeholder]);\n\n /********************************************************************************************************************\n * Memo - inputProps\n * ******************************************************************************************************************/\n\n const inputProps = useMemo(() => {\n if (readOnly != null || maxLength != null) {\n const finalInputProps = {\n ...initInputProps,\n readOnly: readOnly,\n maxLength: maxLength,\n };\n\n if (readOnly) {\n finalInputProps.tabIndex = -1;\n finalInputProps.className = classNames(finalInputProps.className, 'Mui-disabled');\n } else {\n finalInputProps.tabIndex = tabIndex;\n }\n\n return finalInputProps;\n } else {\n return initInputProps;\n }\n }, [initInputProps, readOnly, tabIndex, maxLength]);\n\n /********************************************************************************************************************\n * Memo - style\n * ******************************************************************************************************************/\n\n const style = useMemo(() => {\n const newStyle = { ...initStyle };\n if (width != null) {\n newStyle.width = width;\n }\n if (hidden) {\n newStyle.display = 'none';\n }\n return newStyle;\n }, [initStyle, width, hidden]);\n\n /********************************************************************************************************************\n * Memo - label\n * ******************************************************************************************************************/\n\n const label = useMemo(() => {\n return labelIcon ? (\n <>\n <FormIcon style={{ verticalAlign: 'middle', marginRight: 4 }}>{labelIcon}</FormIcon>\n <span style={{ verticalAlign: 'middle' }}>{initLabel}</span>\n </>\n ) : (\n initLabel\n );\n }, [initLabel, labelIcon]);\n\n /********************************************************************************************************************\n * Function - getFinalValue\n * ******************************************************************************************************************/\n\n const getFinalValue = useCallback(\n function (value: FormTextFieldProps['value']): FormTextFieldProps['value'] {\n return onValue ? onValue(value) : value;\n },\n [onValue]\n );\n\n /********************************************************************************************************************\n * State - value\n * ******************************************************************************************************************/\n\n const [value, setValue] = useAutoUpdateState<FormTextFieldProps['value']>(initValue, getFinalValue);\n\n useEffect(() => {\n setShowClear(clear ? notEmpty(value) : false);\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [value]);\n\n useFirstSkipEffect(() => {\n if (error) validate(value);\n if (onChange) onChange(value);\n if (!noFormValueItem) {\n onValueChange(name, value);\n }\n }, [value]);\n\n /********************************************************************************************************************\n * Function - focus\n * ******************************************************************************************************************/\n\n const focus = useCallback(\n function () {\n if (initInputRef) {\n (initInputRef as React.RefObject<HTMLInputElement>).current?.focus();\n } else {\n inputRef.current?.focus();\n }\n },\n [initInputRef, inputRef]\n );\n\n /********************************************************************************************************************\n * Function - setErrorErrorHelperText\n * ******************************************************************************************************************/\n\n const setErrorErrorHelperText = useCallback(\n function (error: boolean, errorHelperText: ReactNode) {\n setError(error);\n setErrorHelperText(errorHelperText);\n },\n [setError]\n );\n\n /********************************************************************************************************************\n * Function - validate\n * ******************************************************************************************************************/\n\n const validate = useCallback(\n (value: FormTextFieldValue) => {\n if (required && empty(value)) {\n setErrorErrorHelperText(true, '필수 입력 항목입니다.');\n return false;\n }\n\n if (notEmpty(value) && validPattern) {\n if (!new RegExp(validPattern).test(value)) {\n setErrorErrorHelperText(true, '형식이 일치하지 않습니다.');\n return false;\n }\n }\n if (notEmpty(value) && invalidPattern) {\n if (new RegExp(invalidPattern).test(value)) {\n setErrorErrorHelperText(true, '형식이 일치하지 않습니다.');\n return false;\n }\n }\n if (onValidate) {\n const validateResult = onValidate(value);\n if (validateResult != null && validateResult !== true) {\n setErrorErrorHelperText(true, validateResult);\n return false;\n }\n }\n\n setErrorErrorHelperText(false, undefined);\n\n return true;\n },\n [required, validPattern, invalidPattern, onValidate, setErrorErrorHelperText]\n );\n\n /********************************************************************************************************************\n * Memo - muiInputProps\n * ******************************************************************************************************************/\n\n const muiInputProps = useMemo(() => {\n const muiInputProps: InputProps = { ...initMuiInputProps };\n if (startAdornment || icon || muiInputProps.startAdornment) {\n muiInputProps.startAdornment = (\n <>\n {icon && (\n <InputAdornment position='start'>\n <FormIcon fontSize='small'>{icon}</FormIcon>\n </InputAdornment>\n )}\n {startAdornment && <InputAdornment position='start'>{startAdornment}</InputAdornment>}\n {muiInputProps.startAdornment}\n </>\n );\n }\n if (endAdornment || muiInputProps.endAdornment || (clear && !readOnly && !disabled)) {\n muiInputProps.endAdornment = (\n <>\n {clear && !readOnly && !disabled && (\n <InputAdornment className={classNames('clear-icon-button-wrap', showClear && 'show')} position='end'>\n <IconButton\n className={'clear-icon-button'}\n size='small'\n tabIndex={-1}\n onClick={() => {\n const finalValue = getFinalValue('');\n setValue(finalValue);\n focus();\n if (!noFormValueItem) {\n nextTick(() => {\n onValueChangeByUser(name, finalValue);\n onRequestSearchSubmit(name, finalValue);\n });\n }\n }}\n >\n <FormIcon fontSize='inherit'>ClearRounded</FormIcon>\n </IconButton>\n </InputAdornment>\n )}\n {muiInputProps.endAdornment}\n {endAdornment && <InputAdornment position='end'>{endAdornment}</InputAdornment>}\n </>\n );\n }\n\n return muiInputProps;\n }, [\n clear,\n disabled,\n endAdornment,\n focus,\n getFinalValue,\n icon,\n initMuiInputProps,\n name,\n noFormValueItem,\n onRequestSearchSubmit,\n onValueChangeByUser,\n readOnly,\n setValue,\n showClear,\n startAdornment,\n ]);\n\n /********************************************************************************************************************\n * Effect\n * ******************************************************************************************************************/\n\n useEffect(() => {\n if (value !== initValue) {\n if (onChange) onChange(value);\n onValueChange(name, value);\n }\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, []);\n\n /********************************************************************************************************************\n * Commands\n * ******************************************************************************************************************/\n\n useLayoutEffect(() => {\n if (ref || (!noFormValueItem && onAddValueItem)) {\n let lastValue = value;\n let lastData = data;\n let lastDisabled = !!disabled;\n let lastHidden = !!hidden;\n\n const commands: FormTextFieldCommands = {\n getType: () => 'default',\n getName: () => name,\n getReset: () => getFinalValue(initValue),\n reset: () => {\n lastValue = getFinalValue(initValue);\n setValue(lastValue);\n },\n getValue: () => lastValue,\n setValue: (value) => {\n lastValue = getFinalValue(value);\n setValue(lastValue);\n },\n getData: () => lastData,\n setData: (data) => {\n lastData = data;\n setData(data);\n },\n isExceptValue: () => !!exceptValue,\n isDisabled: () => lastDisabled,\n setDisabled: (disabled) => {\n lastDisabled = disabled;\n setDisabled(disabled);\n },\n isHidden: () => lastHidden,\n setHidden: (hidden) => {\n lastHidden = hidden;\n setHidden(hidden);\n },\n focus,\n focusValidate: focus,\n validate: () => validate(lastValue),\n setError: (error: boolean, errorText: ReactNode | undefined) =>\n setErrorErrorHelperText(error, error ? errorText : undefined),\n };\n\n if (ref) {\n if (typeof ref === 'function') {\n ref(commands);\n } else {\n ref.current = commands;\n }\n }\n\n if (!noFormValueItem && onAddValueItem) onAddValueItem(id, commands);\n\n return () => {\n if (ref) {\n if (typeof ref === 'function') {\n ref(null);\n } else {\n ref.current = null;\n }\n }\n\n if (!noFormValueItem && onRemoveValueItem) onRemoveValueItem(id);\n };\n }\n }, [\n name,\n initValue,\n value,\n data,\n getFinalValue,\n exceptValue,\n disabled,\n focus,\n validate,\n ref,\n noFormValueItem,\n onAddValueItem,\n onRemoveValueItem,\n id,\n setValue,\n setDisabled,\n setErrorErrorHelperText,\n setData,\n hidden,\n setHidden,\n ]);\n\n /********************************************************************************************************************\n * Event Handler\n * ******************************************************************************************************************/\n\n const handleChange = useCallback(\n (e: React.ChangeEvent<HTMLInputElement | HTMLTextAreaElement>) => {\n const finalValue = getFinalValue(e.target.value);\n setValue(finalValue);\n if (!noFormValueItem) {\n nextTick(() => {\n onValueChangeByUser(name, finalValue);\n if (select) {\n onRequestSearchSubmit(name, finalValue);\n }\n });\n }\n },\n [getFinalValue, setValue, noFormValueItem, onValueChangeByUser, name, select, onRequestSearchSubmit]\n );\n\n const handleBlur = useCallback(\n (e: React.FocusEvent<HTMLInputElement | HTMLTextAreaElement>) => {\n if (error) validate(value);\n if (onBlur) onBlur(e);\n },\n [error, value, validate, onBlur]\n );\n\n const handleKeyDown = useCallback(\n (e: React.KeyboardEvent<HTMLInputElement>) => {\n if (\n ['Enter'].includes(e.key) &&\n !select &&\n (!multiline || (multiline && disableReturnKey)) &&\n !noFormValueItem\n ) {\n e.preventDefault();\n e.stopPropagation();\n onRequestSearchSubmit(name, value);\n }\n if (onKeyDown) onKeyDown(e);\n },\n [select, multiline, disableReturnKey, noFormValueItem, onKeyDown, onRequestSearchSubmit, name, value]\n );\n\n /********************************************************************************************************************\n * Render\n * ******************************************************************************************************************/\n\n return (\n <TextField\n {...props}\n variant={variant}\n size={size}\n color={color}\n focused={focused || undefined}\n name={name}\n label={label}\n placeholder={placeholder}\n className={classNames(className, 'FormValueItem', 'FormTextField', `variant-${variant}`)}\n inputRef={initInputRef ? initInputRef : inputRef}\n value={value}\n required={required}\n fullWidth={!width && fullWidth}\n error={error}\n helperText={formColWithHelperText ? undefined : error ? errorHelperText : helperText}\n FormHelperTextProps={{ component: 'div' } as any}\n disabled={disabled}\n InputProps={muiInputProps}\n InputLabelProps={muiInputLabelProps}\n inputProps={initInputProps?.className?.includes('FormTag-Input') ? initInputProps : inputProps}\n style={style}\n select={select}\n SelectProps={SelectProps}\n multiline={multiline}\n onChange={handleChange}\n onBlur={handleBlur}\n onKeyDown={handleKeyDown}\n />\n );\n }\n);\n\nFormTextField.displayName = 'FormText';\nFormTextField.defaultProps = FormTextFieldDefaultProps;\n\nexport default FormTextField;\n","import { FormTextFieldCommands, FormTextFieldDefaultProps, FormTextFieldProps } from '../FormTextField';\n\nexport type FormHiddenValue = any;\n\nexport type FormHiddenCommands = FormTextFieldCommands<FormHiddenValue>;\n\nexport type FormHiddenProps = Pick<\n FormTextFieldProps<FormHiddenValue>,\n 'className' | 'name' | 'value' | 'error' | 'required' | 'exceptValue' | 'onChange' | 'onValue' | 'onValidate'\n>;\n\nexport const FormHiddenDefaultProps = {\n ...FormTextFieldDefaultProps,\n};\n","import React from 'react';\nimport classNames from 'classnames';\nimport {\n FormHiddenProps as Props,\n FormHiddenDefaultProps,\n FormHiddenCommands,\n FormHiddenValue,\n} from './FormHidden.types';\nimport './FormHidden.scss';\nimport FormTextField from '../FormTextField';\n\nconst FormHidden = React.forwardRef<FormHiddenCommands, Props>(({ className, ...props }, ref) => {\n return (\n <FormTextField<FormHiddenValue>\n ref={ref}\n className={classNames(className, 'FormHidden')}\n type='hidden'\n variant='standard'\n {...props}\n />\n );\n});\n\nFormHidden.displayName = 'FormHidden';\nFormHidden.defaultProps = FormHiddenDefaultProps;\n\nexport default FormHidden;\n","import { FormArrayValueItemCommands } from '../../@types';\nimport { FormTextFieldCommands, FormTextFieldDefaultProps, FormTextFieldProps } from '../FormTextField';\n\nexport type FormTagValue = string[];\n\nexport type FormTagExtraCommands = FormArrayValueItemCommands;\n\nexport type FormTagCommands = FormTextFieldCommands<FormTagValue, false> & FormTagExtraCommands;\n\nexport type FormTagProps = Omit<FormTextFieldProps<FormTagValue, false>, 'type'> & {\n formValueSeparator?: string;\n formValueSort?: boolean;\n};\n\nexport const FormTagDefaultProps: Pick<FormTagProps, 'value' | 'clear' | 'formValueSeparator'> = {\n ...FormTextFieldDefaultProps,\n value: [],\n clear: true,\n formValueSeparator: ',',\n};\n","import { FormTextFieldProps, FormTextFieldDefaultProps, FormTextFieldCommands } from '../FormTextField';\n\nexport type FormTextValue = string;\n\nexport type FormTextCommands = FormTextFieldCommands<FormTextValue, false>;\n\nexport type FormTextProps = Omit<FormTextFieldProps<FormTextValue, false>, 'disableReturnKey' | 'minRows' | 'maxRows'>;\n\nexport const FormTextDefaultProps: Pick<FormTextProps, 'clear' | 'value'> = {\n ...FormTextFieldDefaultProps,\n clear: true,\n value: '',\n};\n","import React from 'react';\nimport classNames from 'classnames';\nimport FormTextField from '../FormTextField';\nimport { FormTextProps, FormTextDefaultProps, FormTextValue, FormTextCommands } from './FormText.types';\n\nconst FormText = React.forwardRef<FormTextCommands, FormTextProps>(({ className, ...props }, ref) => {\n return (\n <FormTextField<FormTextValue, false>\n ref={ref}\n className={classNames(className, 'FormText')}\n disableReturnKey\n {...props}\n />\n );\n});\n\nFormText.displayName = 'FormText';\nFormText.defaultProps = FormTextDefaultProps;\n\nexport default FormText;\n","import React, { useEffect, useState, useCallback, ReactNode } from 'react';\nimport classNames from 'classnames';\nimport { Autocomplete, Chip, InputLabelProps } from '@mui/material';\nimport { useAutoUpdateState, useFirstSkipEffect } from '@pdg/react-hook';\nimport {\n FormTagProps,\n FormTagDefaultProps,\n FormTagExtraCommands,\n FormTagCommands,\n FormTagValue,\n} from './FormTag.types';\nimport FormText, { FormTextCommands } from '../FormText';\nimport { empty, nextTick, notEmpty, isSame } from '../../@util';\nimport { useFormState } from '../../FormContext';\nimport FormContextProvider from '../../FormContextProvider';\nimport './FormTag.scss';\nimport { FormTextFieldProps } from '../FormTextField';\n\nconst FormTag = React.forwardRef<FormTagCommands, FormTagProps>(\n (\n {\n className,\n name,\n value: initValue,\n exceptValue,\n required,\n readOnly,\n maxLength,\n disabled: initDisabled,\n fullWidth: initFullWidth,\n error: initError,\n helperText,\n formValueSeparator,\n formValueSort,\n onValidate,\n onKeyDown,\n onChange,\n onValue,\n onBlur,\n ...props\n },\n ref\n ) => {\n /********************************************************************************************************************\n * FormState\n * ******************************************************************************************************************/\n\n const {\n fullWidth: formFullWidth,\n disabled: formDisabled,\n onAddValueItem,\n onValueChange,\n onValueChangeByUser,\n onRequestSearchSubmit,\n ...otherFormState\n } = useFormState();\n\n /********************************************************************************************************************\n * State - FormState\n * ******************************************************************************************************************/\n\n const [fullWidth] = useAutoUpdateState<FormTagProps['fullWidth']>(\n initFullWidth == null ? formFullWidth : initFullWidth\n );\n\n /********************************************************************************************************************\n * Function - getFinalValue\n * ******************************************************************************************************************/\n\n const getFinalValue = useCallback(\n (value: FormTagValue | Set<string>): FormTagValue => {\n let finalValue;\n\n if (value instanceof Set) {\n finalValue = Array.from(value);\n } else {\n const valueSet = new Set<string>();\n (value || []).forEach((value) => valueSet.add(value));\n finalValue = Array.from(valueSet);\n }\n\n return onValue ? onValue(finalValue) : finalValue;\n },\n [onValue]\n );\n\n /********************************************************************************************************************\n * State - value\n * ******************************************************************************************************************/\n\n const [value, setValue] = useState(() => getFinalValue(initValue || []));\n const [valueSet, setValueSet] = useState(() => new Set<string>(getFinalValue(initValue || [])));\n\n useFirstSkipEffect(() => {\n setValue(getFinalValue(initValue || []));\n setValueSet(new Set(getFinalValue(initValue || [])));\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [initValue]);\n\n useFirstSkipEffect(() => {\n if (error) validate(value);\n if (onChange) onChange(value);\n onValueChange(name, value);\n }, [value]);\n\n //------------------------------------------------------------------------------------------------------------------\n\n const [inputValue, setInputValue] = useState<string>('');\n const [error, setError] = useAutoUpdateState<FormTagProps['error']>(initError);\n const [errorHelperText, setErrorHelperText] = useState<FormTagProps['helperText']>();\n const [disabled] = useAutoUpdateState<FormTextFieldProps['disabled']>(\n initDisabled == null ? formDisabled : initDisabled\n );\n\n /********************************************************************************************************************\n * Effect\n * ******************************************************************************************************************/\n\n useEffect(() => {\n if (!isSame(value, initValue)) {\n if (onChange) onChange(value);\n onValueChange(name, value);\n }\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, []);\n\n /********************************************************************************************************************\n * Function - setErrorErrorHelperText\n * ******************************************************************************************************************/\n\n const setErrorErrorHelperText = useCallback(\n function (error: boolean, errorHelperText: ReactNode) {\n setError(error);\n setErrorHelperText(errorHelperText);\n },\n [setError]\n );\n\n /********************************************************************************************************************\n * Function - validate\n * ******************************************************************************************************************/\n\n const validate = useCallback(\n (value: FormTagValue) => {\n if (required && empty(value)) {\n setErrorErrorHelperText(true, '필수 입력 항목입니다.');\n return false;\n }\n\n if (onValidate) {\n const onValidateResult = onValidate(value);\n if (onValidateResult != null && onValidateResult !== true) {\n setErrorErrorHelperText(true, onValidateResult);\n return false;\n }\n }\n\n setErrorErrorHelperText(false, undefined);\n\n return true;\n },\n [required, onValidate, setErrorErrorHelperText]\n );\n\n /********************************************************************************************************************\n * Function - getExtraCommands\n * ******************************************************************************************************************/\n\n const getExtraCommands = useCallback((): FormTagExtraCommands => {\n return {\n isFormValueSort: () => !!formValueSort,\n getFormValueSeparator: () => formValueSeparator,\n };\n }, [formValueSort, formValueSeparator]);\n\n /********************************************************************************************************************\n * Function - getCommands\n * ******************************************************************************************************************/\n\n const getCommands = useCallback(\n (baseCommands: FormTextCommands) => {\n let lastValue = value;\n\n return {\n ...baseCommands,\n getReset: () => getFinalValue(initValue || []),\n reset: () => {\n lastValue = getFinalValue(initValue || []);\n setValue(lastValue);\n },\n getValue: () => lastValue,\n setValue: (newValue: FormTagValue) => {\n const finalValue = getFinalValue(newValue);\n if (!isSame(lastValue, finalValue)) {\n lastValue = finalValue;\n setValueSet(new Set(lastValue));\n setValue(lastValue);\n }\n },\n validate: () => validate(value),\n ...getExtraCommands(),\n };\n },\n [value, getExtraCommands, getFinalValue, initValue, setValue, validate]\n );\n\n /********************************************************************************************************************\n * Function - appendTag, removeTag\n * ******************************************************************************************************************/\n\n const appendTag = useCallback(\n (tag: string) => {\n if (valueSet.has(tag)) {\n setInputValue('');\n } else {\n valueSet.add(tag);\n Array.from(valueSet);\n const finalValue = getFinalValue(valueSet);\n setValue(finalValue);\n nextTick(() => {\n setInputValue('');\n onValueChangeByUser(name, finalValue);\n onRequestSearchSubmit(name, finalValue);\n });\n }\n },\n [valueSet, getFinalValue, setValue, onValueChangeByUser, name, onRequestSearchSubmit]\n );\n\n const removeTag = useCallback(\n (tag: string) => {\n if (valueSet.has(tag)) {\n valueSet.delete(tag);\n const finalValue = getFinalValue(valueSet);\n setValue(finalValue);\n nextTick(() => {\n onValueChangeByUser(name, finalValue);\n onRequestSearchSubmit(name, finalValue);\n });\n }\n },\n [valueSet, getFinalValue, setValue, onValueChangeByUser, name, onRequestSearchSubmit]\n );\n\n /********************************************************************************************************************\n * Event Handler\n * ******************************************************************************************************************/\n\n const handleAddValueItem = useCallback(\n (id: string, commands: FormTextCommands) => {\n onAddValueItem(id, getCommands(commands));\n },\n [onAddValueItem, getCommands]\n );\n\n const handleRef = useCallback(\n (commands: FormTextCommands) => {\n if (ref) {\n const finalCommands = getCommands(commands);\n\n if (typeof ref === 'function') {\n ref(finalCommands);\n } else {\n ref.current = finalCommands;\n }\n }\n },\n [ref, getCommands]\n );\n\n const handleInputKeyDown = useCallback(\n (e: React.KeyboardEvent<HTMLInputElement>) => {\n if ([' ', ',', 'Enter'].includes(e.key)) {\n e.preventDefault();\n e.stopPropagation();\n\n if (notEmpty(inputValue)) {\n appendTag(inputValue);\n }\n } else {\n if (onKeyDown) onKeyDown(e);\n }\n },\n [inputValue, appendTag, onKeyDown]\n );\n\n const handleInputChange = useCallback((value: string) => {\n setInputValue(value.replace(/ /g, '').replace(/,/g, ''));\n setInputValue(value);\n }, []);\n\n const handleBlur = useCallback(\n (e: React.FocusEvent<HTMLInputElement>) => {\n if (notEmpty(inputValue)) {\n appendTag(inputValue);\n }\n if (onBlur) onBlur(e);\n },\n [appendTag, inputValue, onBlur]\n );\n\n const handleRenderTags = useCallback(\n (tags: string[]) => {\n return tags.map((tag) => (\n <Chip\n className='MuiAutocomplete-tag'\n key={tag}\n label={tag}\n size='small'\n disabled={readOnly || disabled}\n onDelete={readOnly || disabled ? undefined : () => removeTag(tag)}\n />\n ));\n },\n [disabled, readOnly, removeTag]\n );\n\n /********************************************************************************************************************\n * Render\n * ******************************************************************************************************************/\n\n return (\n <FormContextProvider\n value={{\n fullWidth: formFullWidth,\n onAddValueItem: handleAddValueItem,\n // eslint-disable-next-line\n onValueChange: () => {},\n // eslint-disable-next-line\n onValueChangeByUser: () => {},\n // eslint-disable-next-line\n onRequestSearchSubmit: () => {},\n ...otherFormState,\n }}\n >\n <Autocomplete\n options={[]}\n multiple\n freeSolo\n value={value}\n readOnly={readOnly}\n disableClearable\n disabled={disabled}\n renderTags={handleRenderTags}\n inputValue={inputValue}\n style={{ display: fullWidth ? 'block' : 'inline-block', width: fullWidth ? '100%' : undefined }}\n renderInput={(params) => {\n const renderProps = { ...props };\n\n renderProps.InputLabelProps = {\n ...renderProps.InputLabelProps,\n htmlFor: (params.InputLabelProps as InputLabelProps).htmlFor,\n id: params.InputLabelProps.id,\n };\n renderProps.InputProps = {\n ...renderProps.InputProps,\n className: classNames(renderProps.InputProps?.className, params.InputProps.className),\n ref: params.InputProps.ref,\n };\n if (notEmpty(params.InputProps.startAdornment)) {\n renderProps.InputProps.startAdornment = (\n <>\n {renderProps.InputProps.startAdornment}\n {params.InputProps.startAdornment}\n </>\n );\n }\n renderProps.inputProps = { ...renderProps.inputProps, ...params.inputProps };\n renderProps.inputProps.className = classNames(renderProps.inputProps.className, 'FormTag-Input');\n\n renderProps.inputProps.readOnly = readOnly;\n if (readOnly) {\n renderProps.inputProps.tabIndex = -1;\n }\n\n renderProps.inputProps.maxLength = maxLength;\n if (readOnly) {\n renderProps.inputProps.className = classNames(renderProps.inputProps.className, 'Mui-disabled');\n }\n\n delete renderProps.inputProps.onChange;\n delete renderProps.inputProps.value;\n\n return (\n <FormText\n {...renderProps}\n ref={handleRef}\n name={name}\n className={classNames(className, 'FormValueItem', 'FormTag')}\n error={error}\n disabled={disabled}\n fullWidth={fullWidth}\n required={required}\n value={inputValue}\n exceptValue={exceptValue}\n helperText={error ? errorHelperText : helperText}\n onKeyDown={handleInputKeyDown}\n onChange={handleInputChange}\n onBlur={handleBlur}\n />\n );\n }}\n />\n </FormContextProvider>\n );\n }\n);\n\nFormTag.displayName = 'FormTag';\nFormTag.defaultProps = FormTagDefaultProps;\n\nexport default FormTag;\n","import { FormTextProps, FormTextDefaultProps, FormTextCommands } from '../FormText';\n\nexport type FormEmailValue = string;\n\nexport type FormEmailCommands = FormTextCommands;\n\nexport type FormEmailProps = Omit<FormTextProps, 'type'>;\n\nexport const FormEmailDefaultProps: Pick<FormEmailProps, 'validPattern'> = {\n ...FormTextDefaultProps,\n validPattern:\n /^(([^<>()[\\].,;:\\s@\"]+(\\.[^<>()[\\].,;:\\s@\"]+)*)|(\".+\"))@(([^<>()[\\].,;:\\s@\"]+\\.)+[^<>()[\\].,;:\\s@\"]{2,})$/g,\n};\n","import React, { useCallback } from 'react';\nimport classNames from 'classnames';\nimport FormText from '../FormText';\nimport { FormEmailProps, FormEmailDefaultProps, FormEmailCommands, FormEmailValue } from './FormEmail.types';\n\nconst FormEmail = React.forwardRef<FormEmailCommands, FormEmailProps>(({ className, onValue, ...props }, ref) => {\n const handleValue = useCallback(\n (value: FormEmailValue) => {\n const newValue = value.replace(/ /gi, '');\n return onValue ? onValue(newValue) : newValue;\n },\n [onValue]\n );\n\n /********************************************************************************************************************\n * Render\n * ******************************************************************************************************************/\n\n return (\n <FormText ref={ref} className={classNames(className, 'FormEmail')} type='email' onValue={handleValue} {...props} />\n );\n});\n\nFormEmail.displayName = 'FormEmail';\nFormEmail.defaultProps = FormEmailDefaultProps;\n\nexport default FormEmail;\n","import { FormTextFieldDefaultProps } from '../FormTextField';\nimport { FormTextCommands, FormTextProps, FormTextValue } from '../FormText';\n\nexport type FormPasswordValue = FormTextValue;\n\nexport type FormPasswordCommands = FormTextCommands;\n\nexport interface FormPasswordProps extends Omit<FormTextProps, 'disableReturnKey' | 'type'> {\n eye?: boolean;\n}\n\nexport const FormPasswordDefaultProps: Pick<FormPasswordProps, 'clear' | 'eye' | 'value'> = {\n ...FormTextFieldDefaultProps,\n clear: false,\n eye: true,\n};\n","import React, { useCallback, useMemo, useState } from 'react';\nimport classNames from 'classnames';\nimport { InputAdornment, IconButton, Icon, styled } from '@mui/material';\nimport FormText, { FormTextProps } from '../FormText';\nimport { notEmpty } from '../../@util';\nimport {\n FormPasswordProps as Props,\n FormPasswordDefaultProps,\n FormPasswordValue,\n FormPasswordCommands,\n} from './FormPassword.types';\nimport './FormPassword.scss';\n\nconst StyledEyeInputAdornment = styled(InputAdornment)`\n visibility: hidden;\n`;\n\nconst FormPassword = React.forwardRef<FormPasswordCommands, Props>(\n ({ className, InputProps: initMuiInputProps, eye, onChange, ...props }, ref) => {\n /********************************************************************************************************************\n * State\n * ******************************************************************************************************************/\n\n const [type, setType] = useState<FormTextProps['type']>('password');\n const [showEye, setShowEye] = useState(notEmpty(props.value));\n\n /********************************************************************************************************************\n * Memo\n * ******************************************************************************************************************/\n\n const muiInputProps = useMemo(() => {\n if (eye) {\n const newProps: Props['InputProps'] = { ...initMuiInputProps };\n newProps.endAdornment = (\n <>\n <StyledEyeInputAdornment position='end' className={classNames('eye-icon-button-wrap', showEye && 'show')}>\n <IconButton\n size='small'\n tabIndex={-1}\n onClick={() => {\n setType(type === 'password' ? 'text' : 'password');\n }}\n >\n <Icon fontSize='inherit'>{type === 'password' ? 'visibility' : 'visibility_off'}</Icon>\n </IconButton>\n </StyledEyeInputAdornment>\n {newProps.endAdornment}\n </>\n );\n return newProps;\n } else {\n return initMuiInputProps;\n }\n }, [eye, initMuiInputProps, showEye, type]);\n\n /********************************************************************************************************************\n * Event Handler\n * ******************************************************************************************************************/\n\n const handleChange = useCallback(\n (value: FormPasswordValue) => {\n setShowEye(notEmpty(value));\n onChange && onChange(value);\n },\n [onChange]\n );\n\n /********************************************************************************************************************\n * Render\n * ******************************************************************************************************************/\n\n return (\n <FormText\n ref={ref}\n className={classNames(className, 'FormPassword')}\n onChange={handleChange}\n type={type}\n InputProps={muiInputProps}\n {...props}\n />\n );\n }\n);\n\nFormPassword.displayName = 'FormPassword';\nFormPassword.defaultProps = FormPasswordDefaultProps;\n\nexport default FormPassword;\n","import { FormTextProps, FormTextDefaultProps, FormTextCommands, FormTextValue } from '../FormText';\n\nexport type FormTelValue = FormTextValue;\n\nexport type FormTelCommands = FormTextCommands;\n\nexport type FormTelProps = Omit<FormTextProps, 'type' | 'maxLength'>;\n\nexport const FormTelDefaultProps: Pick<FormTelProps, 'validPattern'> = {\n ...FormTextDefaultProps,\n validPattern:\n /(^([0-9]{2,3})([0-9]{3,4})([0-9]{4})$)|(^([0-9]{2,3})-([0-9]{3,4})-([0-9]{4})$)|(^([0-9]{4})-([0-9]{4})$)|(^\\+(?:[-]?[0-9]){8,}$)/,\n};\n","import React, { useCallback } from 'react';\nimport FormText from '../FormText';\nimport classNames from 'classnames';\nimport { FormTelProps as Props, FormTelDefaultProps, FormTelCommands, FormTelValue } from './FormTel.types';\n\nconst FormTel = React.forwardRef<FormTelCommands, Props>(({ className, onValue, ...props }, ref) => {\n /********************************************************************************************************************\n * Event Handler\n * ******************************************************************************************************************/\n\n const handleValue = useCallback(\n (value: FormTelValue) => {\n const newValue = autoDash(value.replace(/[^0-9]/gi, ''));\n return onValue ? onValue(newValue) : newValue;\n },\n [onValue]\n );\n\n /********************************************************************************************************************\n * Render\n * ******************************************************************************************************************/\n\n return (\n <FormText ref={ref} className={classNames(className, 'FormTel')} onValue={handleValue} maxLength={13} {...props} />\n );\n});\n\nFormTel.displayName = 'FormTel';\nFormTel.defaultProps = FormTelDefaultProps;\n\nexport default FormTel;\n\nfunction autoDash(tel: string): string {\n const str = tel.replace(/[^0-9*]/g, '');\n const isLastDash = tel.substring(tel.length - 1, tel.length) === '-';\n\n if (str.substring(0, 1) !== '0' && !['15', '16', '18'].includes(str.substring(0, 2))) {\n return tel;\n }\n\n let tmp = '';\n let preLen;\n\n switch (str.substring(0, 2)) {\n case '02':\n preLen = 2;\n break;\n case '15':\n case '16':\n case '18':\n preLen = 4;\n break;\n default:\n preLen = 3;\n }\n\n if (['15', '16', '18'].includes(str.substring(0, 2))) {\n if (str.length <= preLen) {\n tmp = str;\n } else if (str.length <= preLen + 4) {\n tmp += str.substring(0, preLen);\n tmp += '-';\n tmp += str.substring(preLen);\n } else {\n tmp = str;\n }\n } else if (str.length <= preLen) {\n tmp = str;\n } else if (str.length <= preLen + 3) {\n tmp += str.substring(0, preLen);\n tmp += '-';\n tmp += str.substring(preLen);\n } else if (str.length <= preLen + 7) {\n tmp += str.substring(0, preLen);\n tmp += '-';\n tmp += str.substring(preLen, preLen + 3);\n tmp += '-';\n tmp += str.substring(preLen + 3);\n } else if (str.length <= preLen + 8) {\n tmp += str.substring(0, preLen);\n tmp += '-';\n tmp += str.substring(preLen, preLen + 4);\n tmp += '-';\n tmp += str.substring(preLen + 4);\n } else {\n tmp = str;\n }\n\n if (isLastDash) {\n if (str.length === preLen) {\n tmp += '-';\n }\n }\n\n return tmp;\n}\n","import { FormTelProps, FormTelDefaultProps, FormTelCommands, FormTelValue } from '../FormTel';\n\nexport type FormMobileValue = FormTelValue;\n\nexport type FormMobileCommands = FormTelCommands;\n\nexport type FormMobileProps = FormTelProps;\n\nexport const FormMobileDefaultProps: Pick<FormMobileProps, 'validPattern'> = {\n ...FormTelDefaultProps,\n validPattern:\n /(^(01(?:0|1|[6-9]))([0-9]{3,4})([0-9]{4,4})$)|(^(01(?:0|1|[6-9]))-([0-9]{3,4})-([0-9]{4,4})$)|(^\\+(?:[-]?[0-9]){8,}$)/,\n};\n","import React from 'react';\nimport classNames from 'classnames';\nimport FormTel from '../FormTel';\nimport { FormMobileProps as Props, FormMobileDefaultProps, FormMobileCommands } from './FormMobile.types';\n\nconst FormMobile = React.forwardRef<FormMobileCommands, Props>(({ className, ...props }, ref) => {\n return <FormTel ref={ref} className={classNames(className, 'FormMobile')} {...props} />;\n});\n\nFormMobile.displayName = 'FormMobile';\nFormMobile.defaultProps = FormMobileDefaultProps;\n\nexport default FormMobile;\n","import { NumericFormat, NumericFormatProps } from 'react-number-format';\nimport React from 'react';\n\ninterface NumberFormatCustomProps extends Omit<NumericFormatProps, 'onChange'> {\n onChange: (value: any) => void;\n}\nconst NumberFormatCustom = React.forwardRef<HTMLInputElement, NumberFormatCustomProps>(\n ({ onChange, ...props }, ref) => {\n return (\n <NumericFormat\n {...props}\n getInputRef={ref}\n onValueChange={(values) => {\n if (onChange) onChange({ target: { value: values.value } });\n }}\n />\n );\n }\n);\n\nNumberFormatCustom.displayName = 'NumberFormatCustom';\n\nexport default NumberFormatCustom;\n","import { FormTextFieldCommands, FormTextFieldDefaultProps, FormTextFieldProps } from '../FormTextField';\n\nexport type FormNumberCommands = FormTextFieldCommands<number>;\n\nexport type FormNumberProps = Omit<FormTextFieldProps<number>, 'type'> & {\n allowNegative?: boolean;\n thousandSeparator?: boolean;\n allowDecimal?: boolean;\n decimalScale?: number;\n prefix?: string;\n suffix?: string;\n};\n\nexport const FormNumberDefaultProps: Pick<FormNumberProps, 'clear'> = {\n ...FormTextFieldDefaultProps,\n clear: true,\n};\n","import React, { useCallback, useEffect, useMemo, useState } from 'react';\nimport classNames from 'classnames';\nimport { NumericFormatProps } from 'react-number-format';\nimport NumberFormatCustom from './NumberFormatCustom';\nimport { FormNumberProps as Props, FormNumberDefaultProps, FormNumberCommands } from './FormNumber.types';\nimport { InputBaseComponentProps } from '@mui/material/InputBase/InputBase';\nimport FormTextField from '../FormTextField';\nimport { empty } from '../../@util';\n\nconst FormNumber = React.forwardRef<FormNumberCommands, Props>(\n (\n {\n className,\n allowNegative,\n thousandSeparator,\n allowDecimal,\n decimalScale,\n prefix,\n suffix,\n readOnly,\n tabIndex,\n labelShrink,\n InputProps: initMuiInputProps,\n inputProps: initInputProps,\n value: initValue,\n onChange,\n onValue,\n onValidate,\n ...props\n },\n ref\n ) => {\n /********************************************************************************************************************\n * State\n * ******************************************************************************************************************/\n\n const [strValue, setStrValue] = useState<string | undefined>(() => (empty(initValue) ? '' : `${initValue}`));\n\n /********************************************************************************************************************\n * Effect\n * ******************************************************************************************************************/\n\n useEffect(() => {\n setStrValue(empty(initValue) ? '' : `${initValue}`);\n }, [initValue]);\n\n /********************************************************************************************************************\n * Memo\n * ******************************************************************************************************************/\n\n const muiInputProps = useMemo(() => {\n const inputProps: NumericFormatProps = {\n className: readOnly ? 'Mui-disabled' : undefined,\n allowNegative: !!allowNegative,\n thousandSeparator,\n prefix,\n suffix,\n readOnly: !!readOnly,\n tabIndex: readOnly ? -1 : tabIndex,\n };\n if (allowDecimal) {\n if (decimalScale) {\n inputProps.decimalScale = decimalScale;\n }\n } else {\n inputProps.decimalScale = 0;\n }\n\n return {\n ...initMuiInputProps,\n inputComponent: NumberFormatCustom as React.ElementType<InputBaseComponentProps>,\n inputProps: { ...initInputProps, ...inputProps } as any,\n };\n }, [\n readOnly,\n allowNegative,\n thousandSeparator,\n prefix,\n suffix,\n tabIndex,\n allowDecimal,\n initMuiInputProps,\n initInputProps,\n decimalScale,\n ]);\n\n /********************************************************************************************************************\n * Event Handler\n * ******************************************************************************************************************/\n\n const handleChange = useCallback(\n (value: string | undefined) => {\n const newValue = empty(value) || value === '-' || value === '.' ? undefined : Number(value);\n onChange && onChange(newValue);\n\n setStrValue(value);\n },\n [onChange]\n );\n\n const handleValue = useCallback(\n (value: string | undefined) => {\n let finalValue = empty(value) || value === '-' || value === '.' ? undefined : Number(value);\n if (onValue) {\n finalValue = onValue(finalValue);\n }\n return finalValue !== undefined ? finalValue.toString() : undefined;\n },\n [onValue]\n );\n\n const handleValidate = useCallback(\n (value: string | undefined) => {\n if (onValidate) {\n const finalValue = empty(value) || value === '-' || value === '.' ? undefined : Number(value);\n return onValidate(finalValue);\n } else {\n return true;\n }\n },\n [onValidate]\n );\n\n /********************************************************************************************************************\n * Render\n * ******************************************************************************************************************/\n\n return (\n <FormTextField<string | number>\n ref={ref}\n className={classNames(className, 'FormNumber')}\n disableReturnKey\n labelShrink={strValue === '' || strValue === undefined ? labelShrink : true}\n InputProps={muiInputProps}\n readOnly={readOnly}\n value={strValue}\n onChange={handleChange}\n onValue={handleValue}\n onValidate={handleValidate}\n {...props}\n />\n );\n }\n);\n\nFormNumber.displayName = 'FormNumber';\nFormNumber.defaultProps = FormNumberDefaultProps;\n\nexport default FormNumber;\n","import { FormTextProps, FormTextDefaultProps, FormTextValue, FormTextCommands } from '../FormText';\n\nexport type FormSearchValue = FormTextValue;\n\nexport type FormSearchCommands = FormTextCommands;\n\nexport type FormSearchProps = Omit<FormTextProps, 'type'>;\n\nexport const FormSearchDefaultProps = {\n ...FormTextDefaultProps,\n};\n","import React from 'react';\nimport classNames from 'classnames';\nimport FormText from '../FormText';\nimport { FormSearchProps as Props, FormSearchDefaultProps, FormSearchCommands } from './FormSearch.types';\nimport './FormSearch.scss';\n\nconst FormSearch = React.forwardRef<FormSearchCommands, Props>(({ className, ...props }, ref) => {\n return <FormText className={classNames(className, 'FormSearch')} ref={ref} type='search' {...props} />;\n});\n\nFormSearch.displayName = 'FormSearch';\nFormSearch.defaultProps = FormSearchDefaultProps;\n\nexport default FormSearch;\n","import { FormTextFieldProps, FormTextFieldDefaultProps, FormTextFieldCommands } from '../FormTextField';\n\nexport type FormTextareaValue = string;\n\nexport type FormTextareaCommands = FormTextFieldCommands<FormTextareaValue, false>;\n\nexport type FormTextareaProps = Omit<\n FormTextFieldProps<FormTextareaValue, false>,\n 'disableReturnKey' | 'type' | 'multiline' | 'minRows' | 'maxRows'\n>;\n\nexport const FormTextareaDefaultProps: Pick<FormTextareaProps, 'clear' | 'rows' | 'value'> = {\n ...FormTextFieldDefaultProps,\n clear: false,\n rows: 3,\n value: '',\n};\n","import React from 'react';\nimport classNames from 'classnames';\nimport FormTextField from '../FormTextField';\nimport {\n FormTextareaProps as Props,\n FormTextareaDefaultProps,\n FormTextareaCommands,\n FormTextareaValue,\n} from './FormTextarea.types';\nimport './FormTextarea.scss';\n\nconst FormTextarea = React.forwardRef<FormTextareaCommands, Props>(({ className, ...props }, ref) => {\n return (\n <FormTextField<FormTextareaValue, false>\n ref={ref}\n className={classNames(className, 'FormTextarea')}\n {...props}\n multiline\n />\n );\n});\n\nFormTextarea.displayName = 'FormTextarea';\nFormTextarea.defaultProps = FormTextareaDefaultProps;\n\nexport default FormTextarea;\n","import { FormTextProps, FormTextDefaultProps, FormTextValue, FormTextCommands } from '../FormText';\n\nexport type FormUrlValue = FormTextValue;\n\nexport type FormUrlCommands = FormTextCommands;\n\nexport type FormUrlProps = Omit<FormTextProps, 'type'>;\n\nexport const FormUrlDefaultProps: Pick<FormUrlProps, 'validPattern'> = {\n ...FormTextDefaultProps,\n validPattern: /^(?:http(s)?:\\/\\/)?[\\w.-]+(?:\\.[\\w.-]+)+[\\w\\-._~:/?#[\\]@!$&'%()*+,;=.]+$/gim,\n};\n","import React, { useCallback } from 'react';\nimport FormText from '../FormText';\nimport { FormUrlProps as Props, FormUrlDefaultProps, FormUrlCommands, FormUrlValue } from './FormUrl.types';\nimport classNames from 'classnames';\n\nconst FormUrl = React.forwardRef<FormUrlCommands, Props>(({ className, onValue, ...props }, ref) => {\n /********************************************************************************************************************\n * Event Handler\n * ******************************************************************************************************************/\n\n const handleValue = useCallback(\n (value: FormUrlValue) => {\n const newValue = value.replace(/ /gi, '');\n return onValue ? onValue(newValue) : newValue;\n },\n [onValue]\n );\n\n /********************************************************************************************************************\n * Render\n * ******************************************************************************************************************/\n\n return (\n <FormText ref={ref} className={classNames(className, 'FormUrl')} type='url' onValue={handleValue} {...props} />\n );\n});\n\nFormUrl.displayName = 'FormUrl';\nFormUrl.defaultProps = FormUrlDefaultProps;\n\nexport default FormUrl;\n","import { ReactNode } from 'react';\nimport {\n FormArrayValueItemCommands,\n FormItemsValueItemCommands,\n FormLoadingValueItemCommands,\n FormValueItemBaseCommands,\n FormMultipleValueItemCommands,\n} from '../../@types';\nimport { FormTextFieldDefaultProps, FormTextFieldProps } from '../FormTextField';\n\nexport type FormSelectSingleValue = string | number | boolean;\n\nexport type FormSelectValue<T extends FormSelectSingleValue, Multiple extends boolean | undefined> = [\n Multiple,\n] extends [true]\n ? T[]\n : '' | T;\n\nexport interface FormSelectExtraCommands<T extends FormSelectSingleValue>\n extends FormArrayValueItemCommands,\n FormItemsValueItemCommands<FormSelectItem<T>>,\n FormMultipleValueItemCommands,\n FormLoadingValueItemCommands {}\n\nexport interface FormSelectCommands<T extends FormSelectSingleValue, Multiple extends boolean | undefined = undefined>\n extends FormValueItemBaseCommands<FormSelectValue<T, Multiple>, false>,\n FormSelectExtraCommands<T> {}\n\nexport interface FormSelectItem<T extends FormSelectSingleValue> {\n label: ReactNode;\n value: '' | T;\n disabled?: boolean;\n [key: string]: any;\n}\n\nexport type FormSelectItems<T extends FormSelectSingleValue> = FormSelectItem<T>[];\n\nexport type FormSelectProps<T extends FormSelectSingleValue, Multiple extends boolean | undefined = undefined> = Omit<\n FormTextFieldProps<FormSelectValue<T, Multiple>, false>,\n 'type' | 'clear'\n> & {\n items?: FormSelectItems<T>;\n multiple?: Multiple;\n checkbox?: boolean;\n formValueSeparator?: string;\n formValueSort?: boolean;\n minWidth?: string | number;\n loading?: boolean;\n onLoadItems?: () => Promise<FormSelectItem<T>[]>;\n};\n\nexport const FormSelectDefaultProps: Pick<\n FormSelectProps<FormSelectSingleValue, false>,\n 'formValueSeparator' | 'minWidth'\n> = {\n ...FormTextFieldDefaultProps,\n formValueSeparator: ',',\n minWidth: 120,\n};\n","import React, { useState, useEffect, ReactNode, useCallback, useMemo } from 'react';\nimport classNames from 'classnames';\nimport { Box, Checkbox, Chip, CircularProgress, MenuItem } from '@mui/material';\nimport { useAutoUpdateState, useFirstSkipEffect } from '@pdg/react-hook';\nimport { empty, notEmpty, isSame, AutoTypeForwardRef, ToForwardRefExoticComponent } from '../../@util';\nimport {\n FormSelectProps,\n FormSelectDefaultProps,\n FormSelectExtraCommands,\n FormSelectCommands,\n FormSelectSingleValue,\n} from './FormSelect.types';\nimport { useFormState } from '../../FormContext';\nimport FormContextProvider from '../../FormContextProvider';\nimport './FormSelect.scss';\nimport FormTextField, { FormTextFieldProps } from '../FormTextField';\n\ninterface ItemValueLabelMap {\n [key: string]: ReactNode;\n}\n\nconst FormSelect = ToForwardRefExoticComponent(\n AutoTypeForwardRef(function <T extends FormSelectSingleValue, Multiple extends boolean | undefined>(\n {\n className,\n name,\n items: initItems,\n fullWidth: initFullWidth,\n onLoadItems,\n readOnly,\n multiple,\n checkbox,\n placeholder,\n startAdornment: initStartAdornment,\n value: initValue,\n InputLabelProps: initInputLabelProps,\n SelectProps: initSelectProps,\n formValueSeparator,\n formValueSort,\n width,\n minWidth,\n loading: initLoading,\n onChange,\n onValue,\n ...props\n }: FormSelectProps<T, Multiple>,\n ref: React.ForwardedRef<FormSelectCommands<T, Multiple>>\n ) {\n /********************************************************************************************************************\n * type\n * ******************************************************************************************************************/\n\n type Props = FormSelectProps<T, Multiple>;\n type Commands = FormSelectCommands<T, Multiple>;\n\n /********************************************************************************************************************\n * FormState\n * ******************************************************************************************************************/\n\n const { fullWidth: formFullWidth, onAddValueItem, onValueChange, ...otherFormState } = useFormState();\n\n /********************************************************************************************************************\n * Memo - FormState\n * ******************************************************************************************************************/\n\n const fullWidth = useMemo(\n () => (initFullWidth == null ? formFullWidth : initFullWidth),\n [initFullWidth, formFullWidth]\n );\n\n /********************************************************************************************************************\n * State\n * ******************************************************************************************************************/\n\n const [emptyValue] = useState([]);\n const [itemValueLabels, setItemValueLabels] = useState<ItemValueLabelMap>({});\n const [hasEmptyValue, setHasEmptyValue] = useState<boolean>(false);\n const [isOnGetItemLoading, setIsOnGetItemLoading] = useState<boolean>(false);\n const [loading, setLoading] = useState<boolean | undefined>(initLoading);\n\n /********************************************************************************************************************\n * Memo\n * ******************************************************************************************************************/\n\n const startAdornment = useMemo(() => {\n if (isOnGetItemLoading || loading) {\n return (\n <>\n {initStartAdornment}\n {(isOnGetItemLoading || loading) && (\n <CircularProgress\n size={16}\n color='inherit'\n style={{ verticalAlign: 'middle', marginLeft: initStartAdornment ? 8 : 0 }}\n />\n )}\n </>\n );\n } else {\n return initStartAdornment;\n }\n }, [initStartAdornment, isOnGetItemLoading, loading]);\n\n /********************************************************************************************************************\n * State - items\n * ******************************************************************************************************************/\n\n const [items, setItems] = useAutoUpdateState<Props['items']>(initItems);\n\n useEffect(() => {\n if (items) {\n setItemValueLabels(\n items.reduce<ItemValueLabelMap>((res, item) => {\n res[`${item.value}`] = item.label;\n return res;\n }, {})\n );\n setHasEmptyValue(!!items.find(({ value }) => value === ''));\n } else {\n setItemValueLabels({});\n setHasEmptyValue(false);\n }\n }, [items]);\n\n /********************************************************************************************************************\n * Memo\n * ******************************************************************************************************************/\n\n const itemsValues = useMemo(() => {\n if (items) {\n return items.reduce<Record<string, string | number | boolean>>((res, { value }) => {\n res[`${value}`] = value;\n return res;\n }, {});\n } else {\n return {};\n }\n }, [items]);\n\n /********************************************************************************************************************\n * State - inputLabelProps\n * ******************************************************************************************************************/\n\n const [inputLabelProps] = useAutoUpdateState<Props['InputLabelProps']>(\n useCallback(() => {\n if (hasEmptyValue || (!hasEmptyValue && placeholder)) {\n return { ...initInputLabelProps, shrink: true };\n } else {\n return initInputLabelProps;\n }\n }, [initInputLabelProps, hasEmptyValue, placeholder])\n );\n\n /********************************************************************************************************************\n * Function - getFinalValue\n * ******************************************************************************************************************/\n\n const getFinalValue = useCallback(\n (value?: any): any => {\n let finalValue: any = value == null ? '' : value;\n if (multiple) {\n if (!Array.isArray(finalValue)) {\n if (empty(finalValue)) {\n finalValue = [];\n } else {\n if (typeof finalValue === 'string') {\n finalValue = Array.from(new Set(finalValue.split(formValueSeparator || ',')));\n } else {\n finalValue = [finalValue];\n }\n }\n }\n } else {\n if (Array.isArray(finalValue)) {\n finalValue = empty(finalValue) ? '' : finalValue[0];\n } else {\n if (empty(finalValue)) {\n finalValue = '';\n }\n }\n }\n\n if (notEmpty(itemsValues)) {\n if (finalValue != null && notEmpty(finalValue)) {\n if (multiple) {\n if (Array.isArray(finalValue)) {\n finalValue = finalValue.map((v) => {\n const realValue = itemsValues[`${v}`];\n return realValue != null ? realValue : v;\n });\n }\n } else {\n const realValue = itemsValues[`${finalValue}`];\n if (realValue != null && finalValue !== realValue) {\n finalValue = realValue;\n }\n }\n }\n }\n\n return onValue ? onValue(finalValue) : finalValue;\n },\n [multiple, formValueSeparator, itemsValues, onValue]\n );\n\n /********************************************************************************************************************\n * State - value\n * ******************************************************************************************************************/\n\n const [value, setValue] = useAutoUpdateState(initValue, getFinalValue);\n\n useFirstSkipEffect(() => {\n if (onChange) onChange(value);\n onValueChange(name, value);\n }, [value]);\n\n /********************************************************************************************************************\n * State - isSelectedPlaceholder\n * ******************************************************************************************************************/\n\n const [isSelectedPlaceholder] = useAutoUpdateState<boolean>(\n useCallback(() => {\n return notEmpty(items) && empty(value) && !!placeholder && !hasEmptyValue;\n }, [items, value, placeholder, hasEmptyValue])\n );\n\n /********************************************************************************************************************\n * Effect\n * ******************************************************************************************************************/\n\n useEffect(() => {\n if (!isSame(value, initValue)) {\n if (onChange) onChange(value);\n onValueChange(name, value);\n }\n\n if (onLoadItems) {\n setIsOnGetItemLoading(true);\n onLoadItems().then((items) => {\n setItems(items);\n setIsOnGetItemLoading(false);\n });\n }\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, []);\n\n /********************************************************************************************************************\n * Memo\n * ******************************************************************************************************************/\n\n const selectProps = useMemo(() => {\n const finalSelectProps: FormTextFieldProps['SelectProps'] = {\n ...initSelectProps,\n displayEmpty: true,\n multiple: !!multiple,\n };\n if (multiple) {\n finalSelectProps.renderValue = (selected) => {\n if (isSelectedPlaceholder) {\n return placeholder;\n } else {\n return (\n <Box className='selected-list' sx={{ display: 'flex', flexWrap: 'wrap', gap: 0.5 }}>\n {Array.isArray(selected) &&\n selected.map((value) => {\n if (isSelectedPlaceholder) {\n return <Chip key={value || '$$$EmptyValuePlaceholder$$$'} label='hahaha' size='small' />;\n } else {\n return <Chip key={value} label={itemValueLabels[`${value}`]} size='small' />;\n }\n })}\n </Box>\n );\n }\n };\n }\n if (minWidth != null) {\n finalSelectProps.style = { ...finalSelectProps.style, minWidth: width || minWidth };\n }\n finalSelectProps.MenuProps = {\n ...finalSelectProps.MenuProps,\n className: classNames(finalSelectProps.MenuProps?.className, 'FormSelect-Menu-Popover'),\n };\n\n return finalSelectProps;\n }, [initSelectProps, isSelectedPlaceholder, itemValueLabels, minWidth, multiple, placeholder, width]);\n\n /********************************************************************************************************************\n * Function - getExtraCommands\n * ******************************************************************************************************************/\n\n const getBaseCommands = useCallback((): Partial<Commands> => {\n let lastValue = value;\n\n return {\n getReset: () => getFinalValue(initValue),\n reset: () => {\n lastValue = getFinalValue(initValue);\n setValue(lastValue);\n },\n getValue: () => lastValue,\n setValue: (value: Props['value']) => {\n lastValue = getFinalValue(value);\n setValue(lastValue);\n },\n };\n }, [value, getFinalValue, initValue, setValue]);\n\n const getExtraCommands = useCallback((): FormSelectExtraCommands<any> => {\n let lastItems = items;\n let lastLoading = loading;\n\n return {\n getFormValueSeparator: () => formValueSeparator,\n isFormValueSort: () => !!formValueSort,\n getItems: () => lastItems,\n setItems: (items) => {\n lastItems = items;\n setItems(lastItems);\n },\n isMultiple: () => !!multiple,\n getLoading: () => !!lastLoading,\n setLoading: (loading) => {\n lastLoading = loading;\n setLoading(lastLoading);\n },\n };\n }, [items, loading, formValueSeparator, formValueSort, setItems, multiple]);\n\n /********************************************************************************************************************\n * Event Handler\n * ******************************************************************************************************************/\n\n const handleRef = useCallback(\n (commands: Commands | null) => {\n if (ref) {\n const finalCommands: Commands | null = commands\n ? {\n ...commands,\n ...getBaseCommands(),\n ...getExtraCommands(),\n }\n : null;\n\n if (typeof ref === 'function') {\n return ref(finalCommands);\n } else {\n ref.current = finalCommands;\n }\n }\n },\n [ref, getBaseCommands, getExtraCommands]\n );\n\n const handleAddValueItem = useCallback(\n (id: string, commands: Commands) => {\n onAddValueItem(id, {\n ...commands,\n ...getBaseCommands(),\n ...getExtraCommands(),\n });\n },\n [onAddValueItem, getBaseCommands, getExtraCommands]\n );\n\n const handleChange = (newValue: any) => {\n setValue(newValue);\n };\n\n const handleValue = useCallback(\n (value: any) => {\n return getFinalValue(value);\n },\n [getFinalValue]\n );\n\n /********************************************************************************************************************\n * Render\n * ******************************************************************************************************************/\n\n let finalValue;\n if (notEmpty(items)) {\n finalValue = value;\n } else {\n finalValue = multiple ? emptyValue : '';\n }\n\n return (\n <FormContextProvider\n value={{\n fullWidth: formFullWidth,\n onAddValueItem: handleAddValueItem,\n // eslint-disable-next-line\n onValueChange: () => {},\n ...otherFormState,\n }}\n >\n <FormTextField<any>\n select\n ref={handleRef}\n name={name}\n className={classNames(className, 'FormSelect', isSelectedPlaceholder && 'is-selected-placeholder')}\n fullWidth={fullWidth}\n {...props}\n startAdornment={startAdornment}\n value={finalValue}\n clear={false}\n readOnly={readOnly || empty(items)}\n InputLabelProps={inputLabelProps}\n SelectProps={selectProps}\n onChange={handleChange}\n onValue={handleValue}\n >\n {isSelectedPlaceholder && (\n <MenuItem key={'$$$EmptyValuePlaceholder$$$'} value='' disabled sx={{ display: 'none' }}>\n {placeholder}\n </MenuItem>\n )}\n\n {items && notEmpty(items) ? (\n items.map(({ label: itemLabel, value: itemValue, disabled }) => (\n <MenuItem\n key={empty(itemValue) ? '$$$EmptyValue$$$' : `${itemValue}`}\n value={typeof itemValue === 'boolean' ? `${itemValue}` : itemValue}\n disabled={disabled}\n >\n {multiple && checkbox && Array.isArray(value) && <Checkbox checked={value.includes(itemValue)} />}\n {itemLabel}\n </MenuItem>\n ))\n ) : (\n <MenuItem value='' />\n )}\n </FormTextField>\n </FormContextProvider>\n );\n })\n);\n\nFormSelect.displayName = 'FormSelect';\nFormSelect.defaultProps = FormSelectDefaultProps;\n\nexport default FormSelect;\n","import { FormTextProps, FormTextDefaultProps, FormTextCommands, FormTextValue } from '../FormText';\n\nexport type FormCompanyNoValue = FormTextValue;\n\nexport type FormCompanyNoCommands = FormTextCommands;\n\nexport type FormCompanyNoProps = Omit<FormTextProps, 'type' | 'maxLength'>;\n\nexport const FormCompanyNoDefaultProps: Pick<FormCompanyNoProps, 'validPattern'> = {\n ...FormTextDefaultProps,\n validPattern: /(([0-9]{3})([0-9]{2})([0-9]{5}))|(([0-9]{3})-([0-9]{2})-([0-9]{5}))/,\n};\n","import React, { useCallback } from 'react';\nimport FormText from '../FormText';\nimport classNames from 'classnames';\nimport {\n FormCompanyNoProps as Props,\n FormCompanyNoDefaultProps,\n FormCompanyNoCommands,\n FormCompanyNoValue,\n} from './FormCompanyNo.types';\n\nconst FormCompanyNo = React.forwardRef<FormCompanyNoCommands, Props>(({ className, onValue, ...props }, ref) => {\n /********************************************************************************************************************\n * Event Handler\n * ******************************************************************************************************************/\n\n const handleValue = useCallback(\n (value: FormCompanyNoValue) => {\n const newValue = autoDash(value.replace(/[^0-9]/gi, ''));\n return onValue ? onValue(newValue) : newValue;\n },\n [onValue]\n );\n\n /********************************************************************************************************************\n * Render\n * ******************************************************************************************************************/\n\n return (\n <FormText\n ref={ref}\n className={classNames(className, 'FormCompanyNo')}\n maxLength={12}\n onValue={handleValue}\n {...props}\n />\n );\n});\n\nFormCompanyNo.displayName = 'FormCompanyNo';\nFormCompanyNo.defaultProps = FormCompanyNoDefaultProps;\n\nexport default FormCompanyNo;\n\nfunction autoDash(companyNo: string): string {\n const str = companyNo.replace(/[^0-9]/g, '');\n let tmp = '';\n\n for (let i = 0; i < str.length; i += 1) {\n if (i === 3 || i === 5) {\n tmp += '-';\n }\n tmp += str[i];\n }\n\n return tmp;\n}\n","import { FormTextProps, FormTextDefaultProps, FormTextCommands } from '../FormText';\n\nexport type FormPersonalNoValue = string;\n\nexport type FormPersonalNoCommands = FormTextCommands;\n\nexport type FormPersonalNoProps = Omit<FormTextProps, 'type' | 'value' | 'maxLength'> & {\n value?: string;\n skipPersonalNumberValidateCheck?: boolean; // 실제 주민번호 유효성을 체크 하지 않고, 입력된 값을 그대로 사용할 경우 true\n};\n\nexport const FormPersonalNoDefaultProps: Pick<FormPersonalNoProps, 'validPattern'> = {\n ...FormTextDefaultProps,\n validPattern: /(([0-9]{6})([0-9]{7}))|(([0-9]{6})-([0-9]{7}))/,\n};\n","import React, { useCallback } from 'react';\nimport FormText from '../FormText';\nimport classNames from 'classnames';\nimport { notEmpty } from '../../@util';\nimport {\n FormPersonalNoProps as Props,\n FormPersonalNoDefaultProps,\n FormPersonalNoCommands,\n FormPersonalNoValue,\n} from './FormPersonalNo.types';\n\nconst FormPersonalNo = React.forwardRef<FormPersonalNoCommands, Props>(\n ({ className, skipPersonalNumberValidateCheck, onValue, onValidate, ...props }, ref) => {\n /********************************************************************************************************************\n * Event Handler\n * ******************************************************************************************************************/\n\n const handleValue = useCallback(\n (value: FormPersonalNoValue) => {\n const newValue = autoDash(value.replace(/[^0-9]/gi, ''));\n return onValue ? onValue(newValue) : newValue;\n },\n [onValue]\n );\n\n const handleValidate = useCallback(\n (value: FormPersonalNoValue) => {\n if (notEmpty(value) && !skipPersonalNumberValidateCheck) {\n if (value.length === 14 && value.includes('-')) {\n const jumin: number[] = value\n .replace(/-/g, '')\n .split('')\n .map((v) => Number(v));\n const ckarr = [2, 3, 4, 5, 6, 7, 8, 9, 2, 3, 4, 5];\n\n for (let i = 0; i < jumin.length - 1; i += 1) {\n jumin[i] = jumin[i] * ckarr[i];\n }\n const juminlast = jumin[jumin.length - 1];\n\n let sum = 0;\n for (let i = 0; i < jumin.length - 1; i += 1) {\n sum += jumin[i];\n }\n\n sum = sum % 11;\n\n sum = 11 - sum;\n\n if (sum > 9) {\n sum = sum % 10;\n }\n\n if (sum != juminlast && juminlast != undefined) {\n return '유효하지 않은 값입니다.';\n }\n return onValidate ? onValidate(value) : true;\n } else {\n return '유효하지 않은 값입니다.';\n }\n } else {\n return onValidate ? onValidate(value) : true;\n }\n },\n [onValidate, skipPersonalNumberValidateCheck]\n );\n\n /********************************************************************************************************************\n * Render\n * ******************************************************************************************************************/\n\n return (\n <FormText\n ref={ref}\n className={classNames(className, 'FormPersonalNo')}\n maxLength={14}\n onValue={handleValue}\n onValidate={handleValidate}\n {...props}\n />\n );\n }\n);\n\nFormPersonalNo.displayName = 'FormPersonalNo';\nFormPersonalNo.defaultProps = FormPersonalNoDefaultProps;\n\nexport default FormPersonalNo;\n\nfunction autoDash(personalNo: string): string {\n const str = personalNo.replace(/[^0-9]/g, '');\n let tmp = '';\n\n for (let i = 0; i < str.length; i += 1) {\n if (i === 6) {\n tmp += '-';\n }\n tmp += str[i];\n }\n\n return tmp;\n}\n","import { ReactNode, RefObject } from 'react';\nimport { ButtonBaseActions, CheckboxProps } from '@mui/material';\nimport { CommonSxProps, FormCheckValueItemCommands, FormValueItemBaseCommands, FormValueItemProps } from '../../@types';\n\nexport type FormCheckboxValue = string | number | boolean;\n\nexport interface FormCheckboxCommands\n extends Omit<FormValueItemBaseCommands<FormCheckboxValue, false>, 'getReset'>,\n FormCheckValueItemCommands<FormCheckboxValue> {\n getReset(): boolean;\n}\n\nexport interface FormCheckboxProps\n extends CommonSxProps,\n Omit<CheckboxProps, 'size' | 'color' | 'name' | 'inputRef' | 'action' | 'required' | 'onChange'>,\n Omit<FormValueItemProps<FormCheckboxValue, false>, 'value' | 'onChange'> {\n value?: FormCheckboxValue;\n uncheckedValue?: FormCheckboxValue;\n text?: ReactNode;\n inputRef?: RefObject<HTMLInputElement>;\n action?: RefObject<ButtonBaseActions>;\n onChange?(checked: boolean): void;\n}\n\nexport const FormCheckboxDefaultProps: Pick<FormCheckboxProps, 'checked' | 'value' | 'uncheckedValue'> = {\n checked: false,\n value: 1,\n uncheckedValue: 0,\n};\n","import React, { CSSProperties, useMemo, useRef, useState } from 'react';\nimport classNames from 'classnames';\nimport { FormControl, FormHelperText, Input, InputLabel, OutlinedInput, FilledInput } from '@mui/material';\nimport { useResizeDetector } from 'react-resize-detector';\nimport { FormItemBaseProps as Props } from './FormItemBase.types';\nimport { useFormState } from '../../FormContext';\nimport { FormIcon } from '../../FormCommon';\nimport './FormItemBase.scss';\n\nconst FormItemBase = React.forwardRef<HTMLDivElement, Props>(\n (\n {\n variant: initVariant,\n size: initSize,\n color: initColor,\n fullWidth: initFullWidth,\n //----------------------------------------------------------------------------------------------------------------\n control,\n controlHeight,\n controlVerticalCenter,\n required,\n labelIcon,\n label,\n focused,\n helperText,\n helperTextProps,\n error,\n hideLabel,\n hidden,\n autoSize,\n //----------------------------------------------------------------------------------------------------------------\n className,\n style,\n sx,\n },\n ref\n ) => {\n /********************************************************************************************************************\n * Ref\n * ******************************************************************************************************************/\n\n const inputRef = useRef<HTMLInputElement>(null);\n const realControlContainerRef = useRef<HTMLDivElement>(null);\n\n /********************************************************************************************************************\n * FormState\n * ******************************************************************************************************************/\n\n const {\n variant: formVariant,\n size: formSize,\n color: formColor,\n fullWidth: formFullWidth,\n formColWithLabel,\n formColWithHelperText,\n } = useFormState();\n\n /********************************************************************************************************************\n * Memo - FormState\n * ******************************************************************************************************************/\n\n const variant = useMemo(() => (initVariant == null ? formVariant : initVariant), [initVariant, formVariant]);\n const size = useMemo(() => (initSize == null ? formSize : initSize), [initSize, formSize]);\n const color = useMemo(() => (initColor == null ? formColor : initColor), [initColor, formColor]);\n const fullWidth = useMemo(\n () => (initFullWidth == null ? formFullWidth : initFullWidth),\n [initFullWidth, formFullWidth]\n );\n\n /********************************************************************************************************************\n * Memo\n * ******************************************************************************************************************/\n\n const wrapStyle = useMemo(() => {\n const wrapStyle: CSSProperties = {\n display: hidden ? 'none' : fullWidth ? 'block' : 'inline-flex',\n width: fullWidth ? '100%' : undefined,\n };\n if (formColWithLabel) {\n wrapStyle.marginTop = -20;\n }\n return wrapStyle;\n }, [formColWithLabel, fullWidth, hidden]);\n\n /********************************************************************************************************************\n * State - inputHeight\n * ******************************************************************************************************************/\n\n const [inputHeight, setInputHeight] = useState(0);\n\n useResizeDetector({\n targetRef: inputRef,\n handleWidth: false,\n handleHeight: true,\n onResize() {\n setInputHeight(inputRef.current?.getBoundingClientRect()?.height || 0);\n },\n });\n\n /********************************************************************************************************************\n * State - realControlHeight\n * ******************************************************************************************************************/\n\n const [realControlHeight, setRealControlHeight] = useState(0);\n\n useResizeDetector({\n targetRef: realControlContainerRef,\n handleWidth: false,\n handleHeight: true,\n onResize() {\n setRealControlHeight(realControlContainerRef.current?.getBoundingClientRect()?.height || 0);\n },\n });\n\n /********************************************************************************************************************\n * Memo\n * ******************************************************************************************************************/\n\n const bottomMargin = useMemo(() => {\n const realHeight = realControlHeight || 0;\n const height = controlHeight || 0;\n const checkInputHeight = variant === 'standard' ? inputHeight + 16 : inputHeight;\n\n let bottomMargin = 0;\n if (height > checkInputHeight) {\n bottomMargin = height - checkInputHeight;\n } else {\n if (realHeight > 0 && height > 0 && realHeight > height) {\n bottomMargin = realHeight - height;\n }\n }\n\n return bottomMargin;\n }, [variant, realControlHeight, controlHeight, inputHeight]);\n\n const controlMarginTop = useMemo(() => {\n let topMargin = 0;\n if (inputHeight && controlHeight && controlVerticalCenter) {\n topMargin = inputHeight / 2 - controlHeight / 2;\n }\n\n let withLabelControlAddTopMargin: number;\n if (size === 'small') {\n withLabelControlAddTopMargin = controlVerticalCenter ? 7 : 13;\n } else {\n withLabelControlAddTopMargin = controlVerticalCenter ? 7 : 15;\n }\n\n let controlMarginTop = 0;\n\n switch (variant) {\n case 'outlined':\n case 'filled':\n if (label || formColWithLabel) {\n controlMarginTop = topMargin + withLabelControlAddTopMargin;\n } else {\n controlMarginTop = topMargin;\n }\n break;\n case 'standard':\n controlMarginTop = 0;\n break;\n }\n\n return controlMarginTop;\n }, [controlHeight, controlVerticalCenter, formColWithLabel, inputHeight, label, size, variant]);\n\n /********************************************************************************************************************\n * Render\n * ******************************************************************************************************************/\n\n return (\n <div style={wrapStyle}>\n <FormControl\n ref={ref}\n variant='standard'\n className={classNames(\n className,\n 'FormItemBase',\n !!label && 'with-label',\n `variant-${variant}`,\n controlVerticalCenter && 'control-vertical-center',\n !!error && 'error'\n )}\n style={style}\n color={color}\n error={error}\n focused={focused}\n sx={sx}\n >\n {!formColWithLabel && label && (\n <InputLabel\n shrink\n className='FormItemBase-InputLabel'\n size={size === 'medium' ? 'normal' : size}\n required={required}\n >\n {labelIcon ? (\n <>\n <FormIcon style={{ verticalAlign: 'middle', marginRight: 3, marginTop: -4, marginBottom: -2 }}>\n {labelIcon}\n </FormIcon>\n <span style={{ verticalAlign: 'middle' }}>{label}</span>\n </>\n ) : (\n label\n )}\n </InputLabel>\n )}\n <div className='FormItemBase-Control-wrap' style={{ display: 'grid', marginTop: hideLabel ? 0 : undefined }}>\n {autoSize ? (\n <>\n {variant === 'standard' && (\n <Input ref={inputRef} size={size} fullWidth disabled style={{ visibility: 'hidden' }} />\n )}\n {variant === 'outlined' && (\n <OutlinedInput ref={inputRef} size={size} fullWidth disabled style={{ visibility: 'hidden' }} />\n )}\n {variant === 'filled' && (\n <FilledInput ref={inputRef} size={size} fullWidth disabled style={{ visibility: 'hidden' }} />\n )}\n <div style={{ height: bottomMargin, visibility: 'hidden' }} />\n <div\n ref={realControlContainerRef}\n className='FormItemBase-Control'\n style={{\n width: fullWidth ? '100%' : 'auto',\n display: 'grid',\n marginTop: controlMarginTop,\n }}\n >\n {control}\n </div>\n </>\n ) : (\n <div\n style={{\n width: fullWidth ? '100%' : 'auto',\n display: 'grid',\n marginTop: controlMarginTop,\n }}\n >\n {control}\n </div>\n )}\n </div>\n {!formColWithHelperText && helperText && (\n <FormHelperText component='div' {...helperTextProps}>\n {helperText}\n </FormHelperText>\n )}\n </FormControl>\n </div>\n );\n }\n);\n\nFormItemBase.displayName = 'FormItemBase';\n\nexport default FormItemBase;\n","import React, { useCallback, useId, useLayoutEffect, useMemo, useRef, useState } from 'react';\nimport classNames from 'classnames';\nimport { useResizeDetector } from 'react-resize-detector';\nimport { FormControlLabel, Checkbox, Typography, ButtonBaseActions, useTheme } from '@mui/material';\nimport { CheckBox, CheckBoxOutlineBlank } from '@mui/icons-material';\nimport { useAutoUpdateState, useFirstSkipEffect } from '@pdg/react-hook';\nimport {\n FormCheckboxProps as Props,\n FormCheckboxDefaultProps,\n FormCheckboxCommands,\n FormCheckboxValue,\n} from './FormCheckbox.types';\nimport FormItemBase from '../FormItemBase';\nimport { useFormState } from '../../FormContext';\nimport { nextTick } from '../../@util';\n\nconst FormCheckbox = React.forwardRef<FormCheckboxCommands, Props>(\n (\n {\n variant: initVariant,\n size: initSize,\n color: initColor,\n focused: initFocused,\n fullWidth: initFullWidth,\n //----------------------------------------------------------------------------------------------------------------\n name,\n labelIcon,\n label,\n checked: initChecked,\n inputRef: initInputRef,\n action: initAction,\n readOnly,\n disabled: initDisabled,\n hidden: initHidden,\n text,\n error: initError,\n helperText,\n value: initValue,\n data: initData,\n uncheckedValue: initUncheckedValue,\n exceptValue,\n onChange,\n onValidate,\n //----------------------------------------------------------------------------------------------------------------\n className,\n style: initStyle,\n sx,\n ...props\n },\n ref\n ) => {\n /********************************************************************************************************************\n * ID\n * ******************************************************************************************************************/\n\n const id = useId();\n\n /********************************************************************************************************************\n * Use\n * ******************************************************************************************************************/\n\n const theme = useTheme();\n\n /********************************************************************************************************************\n * FormState\n * ******************************************************************************************************************/\n\n const {\n variant: formVariant,\n size: formSize,\n color: formColor,\n focused: formFocused,\n fullWidth: formFullWidth,\n disabled: formDisabled,\n onAddValueItem,\n onRemoveValueItem,\n onValueChange,\n onValueChangeByUser,\n onRequestSearchSubmit,\n } = useFormState();\n\n /********************************************************************************************************************\n * Memo - FormState\n * ******************************************************************************************************************/\n\n const variant = useMemo(() => (initVariant == null ? formVariant : initVariant), [initVariant, formVariant]);\n const size = useMemo(() => (initSize == null ? formSize : initSize), [initSize, formSize]);\n const color = useMemo(() => (initColor == null ? formColor : initColor), [initColor, formColor]);\n const focused = useMemo(() => (initFocused == null ? formFocused : initFocused), [initFocused, formFocused]);\n const fullWidth = useMemo(\n () => (initFullWidth == null ? formFullWidth : initFullWidth),\n [initFullWidth, formFullWidth]\n );\n\n /********************************************************************************************************************\n * Ref\n * ******************************************************************************************************************/\n\n const inputRef = useRef<HTMLInputElement>(null);\n const actionRef = useRef<ButtonBaseActions>(null);\n const labelRef = useRef<HTMLLabelElement>(null);\n\n /********************************************************************************************************************\n * ResizeDetector\n * ******************************************************************************************************************/\n\n const { width, height } = useResizeDetector({\n targetRef: labelRef,\n handleWidth: true,\n handleHeight: true,\n });\n\n /********************************************************************************************************************\n * State\n * ******************************************************************************************************************/\n\n const [value, setValue] = useAutoUpdateState<Props['value']>(initValue);\n const [uncheckedValue, setUncheckedValue] = useAutoUpdateState<Props['uncheckedValue']>(initUncheckedValue);\n const [error, setError] = useAutoUpdateState<Props['error']>(initError);\n const [errorHelperText, setErrorHelperText] = useState<Props['helperText']>();\n const [disabled, setDisabled] = useAutoUpdateState<Props['disabled']>(\n initDisabled == null ? formDisabled : initDisabled\n );\n const [hidden, setHidden] = useAutoUpdateState<Props['hidden']>(initHidden);\n const [data, setData] = useAutoUpdateState<Props['data']>(initData);\n\n /********************************************************************************************************************\n * State - checked\n * ******************************************************************************************************************/\n\n const [checked, setChecked] = useAutoUpdateState<boolean>(!!initChecked);\n\n useFirstSkipEffect(() => {\n if (error) validate(checked);\n if (onChange) onChange(checked);\n onValueChange(name, checked);\n }, [checked]);\n\n /********************************************************************************************************************\n * Memo\n * ******************************************************************************************************************/\n\n const style = useMemo(\n () => ({ width: fullWidth ? '100%' : width || 100, paddingLeft: 3, ...initStyle }),\n [initStyle, fullWidth, width]\n );\n\n /********************************************************************************************************************\n * Function - focus\n * ******************************************************************************************************************/\n\n const focus = useCallback(\n function () {\n if (initInputRef) {\n initInputRef.current?.focus();\n } else {\n inputRef.current?.focus();\n }\n if (initAction) {\n initAction.current?.focusVisible();\n } else {\n actionRef.current?.focusVisible();\n }\n },\n [initInputRef, inputRef, initAction, actionRef]\n );\n\n /********************************************************************************************************************\n * Function - setErrorErrorHelperText\n * ******************************************************************************************************************/\n\n const setErrorErrorHelperText = useCallback(\n function (error: Props['error'], errorHelperText: Props['helperText']) {\n setError(error);\n setErrorHelperText(errorHelperText);\n },\n [setError]\n );\n\n /********************************************************************************************************************\n * Function - validate\n * ******************************************************************************************************************/\n\n const validate = useCallback(\n function (checked: boolean) {\n if (onValidate) {\n const onValidateResult = onValidate(checked);\n if (onValidateResult != null && onValidateResult !== true) {\n setErrorErrorHelperText(true, onValidateResult);\n return false;\n }\n }\n\n setErrorErrorHelperText(false, undefined);\n\n return true;\n },\n [onValidate, setErrorErrorHelperText]\n );\n\n /********************************************************************************************************************\n * Commands\n * ******************************************************************************************************************/\n\n useLayoutEffect(() => {\n let lastChecked: boolean = checked;\n let lastValue: FormCheckboxValue = value == null ? 1 : value;\n let lastData = data;\n let lastUncheckedValue: FormCheckboxValue = uncheckedValue == null ? 0 : uncheckedValue;\n let lastDisabled = !!disabled;\n let lastHidden = !!hidden;\n\n const commands: FormCheckboxCommands = {\n getType: () => 'FormCheckbox',\n getName: () => name,\n getReset: () => !!initChecked,\n reset: () => {\n lastChecked = !!initChecked;\n setChecked(lastChecked);\n },\n getValue: () => lastValue,\n setValue: (value) => {\n lastValue = value;\n setValue(value);\n },\n getData: () => lastData,\n setData: (data) => {\n lastData = data;\n setData(data);\n },\n getUncheckedValue: () => lastUncheckedValue,\n setUncheckedValue: (uncheckedValue) => {\n lastUncheckedValue = uncheckedValue;\n setUncheckedValue(lastUncheckedValue);\n },\n getChecked: () => lastChecked,\n setChecked: (checked: boolean) => {\n lastChecked = checked;\n setChecked(lastChecked);\n },\n isExceptValue: () => !!exceptValue,\n isDisabled: () => lastDisabled,\n setDisabled: (disabled: boolean) => {\n lastDisabled = disabled;\n setDisabled(disabled);\n },\n isHidden: () => lastHidden,\n setHidden: (hidden) => {\n lastHidden = hidden;\n setHidden(hidden);\n },\n focus,\n focusValidate: focus,\n validate: () => validate(checked),\n setError: (error: Props['error'], errorHelperText: Props['helperText']) =>\n setErrorErrorHelperText(error, error ? errorHelperText : undefined),\n };\n\n onAddValueItem(id, commands);\n\n if (ref) {\n if (typeof ref === 'function') {\n ref(commands);\n } else {\n ref.current = commands;\n }\n }\n\n return () => {\n onRemoveValueItem(id);\n\n if (ref) {\n if (typeof ref === 'function') {\n ref(null);\n } else {\n ref.current = null;\n }\n }\n };\n }, [\n ref,\n onAddValueItem,\n onRemoveValueItem,\n focus,\n name,\n initChecked,\n checked,\n value,\n uncheckedValue,\n exceptValue,\n disabled,\n validate,\n id,\n setChecked,\n setValue,\n setUncheckedValue,\n setDisabled,\n setErrorErrorHelperText,\n data,\n setData,\n hidden,\n setHidden,\n ]);\n\n /********************************************************************************************************************\n * Event Handler\n * ******************************************************************************************************************/\n\n const handleChange = useCallback(\n (e: React.ChangeEvent<HTMLInputElement>, checked: boolean) => {\n if (readOnly) {\n e.preventDefault();\n } else {\n setChecked(checked);\n nextTick(() => {\n onValueChangeByUser(name, checked);\n onRequestSearchSubmit(name, checked);\n });\n }\n },\n [readOnly, setChecked, onValueChangeByUser, name, onRequestSearchSubmit]\n );\n\n /********************************************************************************************************************\n * Render\n * ******************************************************************************************************************/\n\n return (\n <FormItemBase\n variant={variant}\n size={size}\n color={color}\n focused={focused}\n className={classNames(className, 'FormValueItem', 'FormCheckbox')}\n labelIcon={labelIcon}\n label={label}\n error={error}\n fullWidth={fullWidth}\n helperText={error ? errorHelperText : helperText}\n helperTextProps={{ style: { marginLeft: 2 } }}\n style={style}\n sx={sx}\n hidden={hidden}\n autoSize\n controlHeight={height || (size === 'small' ? 35 : 39)}\n controlVerticalCenter\n control={\n <FormControlLabel\n ref={labelRef}\n control={\n <Checkbox\n name={name}\n color={color}\n size={size}\n inputRef={initInputRef ? initInputRef : inputRef}\n action={initAction ? initAction : actionRef}\n checked={checked}\n checkedIcon={<CheckBox color={error ? 'error' : undefined} />}\n icon={<CheckBoxOutlineBlank color={error ? 'error' : undefined} />}\n onChange={handleChange}\n disabled={disabled || readOnly}\n {...props}\n />\n }\n label={\n <Typography\n color={error ? 'error' : readOnly || disabled ? theme.palette.text.disabled : undefined}\n whiteSpace='nowrap'\n >\n {text}\n </Typography>\n }\n />\n }\n />\n );\n }\n);\n\nFormCheckbox.displayName = 'FormCheckbox';\nFormCheckbox.defaultProps = FormCheckboxDefaultProps;\n\nexport default FormCheckbox;\n","import { ReactNode } from 'react';\nimport {\n CommonSxProps,\n FormItemsValueItemCommands,\n FormLoadingValueItemCommands,\n FormValueItemBaseCommands,\n FormValueItemProps,\n} from '../../@types';\n\nexport type FormRadioGroupSingleValue = string | number | boolean;\n\nexport interface FormRadioGroupItem<T extends FormRadioGroupSingleValue> {\n label: ReactNode;\n value: T;\n disabled?: boolean;\n}\n\nexport type FormRadioGroupItems<T extends FormRadioGroupSingleValue> = FormRadioGroupItem<T>[];\n\nexport type FormRadioGroupValue<T extends FormRadioGroupSingleValue> = T | undefined;\n\nexport interface FormRadioGroupProps<T extends FormRadioGroupSingleValue>\n extends CommonSxProps,\n Omit<FormValueItemProps<T>, 'value'> {\n value?: T;\n items?: FormRadioGroupItem<T>[];\n required?: boolean;\n inline?: boolean;\n loading?: boolean;\n nowrap?: boolean;\n onLoadItems?(): Promise<FormRadioGroupItem<T>[]>;\n onValue?(value: FormRadioGroupValue<T>): FormRadioGroupValue<T>;\n}\n\nexport const FormRadioGroupDefaultProps: Pick<FormRadioGroupProps<any>, 'inline'> = {\n inline: true,\n};\n\nexport interface FormRadioGroupCommands<T extends FormRadioGroupSingleValue>\n extends FormValueItemBaseCommands<T, true>,\n FormItemsValueItemCommands<FormRadioGroupItem<T>>,\n FormLoadingValueItemCommands {}\n","import React, {\n useEffect,\n useState,\n useCallback,\n useRef,\n ReactNode,\n useId,\n ChangeEvent,\n useLayoutEffect,\n useMemo,\n} from 'react';\nimport classNames from 'classnames';\nimport { useResizeDetector } from 'react-resize-detector';\nimport { RadioGroup, FormControlLabel, Radio, useTheme, CircularProgress } from '@mui/material';\nimport { RadioButtonChecked, RadioButtonUnchecked } from '@mui/icons-material';\nimport { useAutoUpdateState, useFirstSkipEffect } from '@pdg/react-hook';\nimport { AutoTypeForwardRef, empty, nextTick, ToForwardRefExoticComponent } from '../../@util';\nimport {\n FormRadioGroupProps,\n FormRadioGroupDefaultProps,\n FormRadioGroupCommands,\n FormRadioGroupValue,\n FormRadioGroupSingleValue,\n} from './FormRadioGroup.types';\nimport { useFormState } from '../../FormContext';\nimport FormItemBase from '../FormItemBase';\n\nconst PADDING_LEFT = 3;\n\nconst FormRadioGroup = ToForwardRefExoticComponent(\n AutoTypeForwardRef(function <T extends FormRadioGroupSingleValue>(\n {\n variant: initVariant,\n size: initSize,\n color: initColor,\n focused: initFocused,\n fullWidth: initFullWidth,\n hidden: initHidden,\n //----------------------------------------------------------------------------------------------------------------\n name,\n width: initWidth,\n labelIcon,\n label,\n inline,\n loading: initLoading,\n nowrap,\n items: initItems,\n value: initValue,\n data: initData,\n error: initError,\n helperText,\n disabled: initDisabled,\n readOnly,\n required,\n exceptValue,\n onLoadItems,\n onChange,\n onValue,\n onValidate,\n //----------------------------------------------------------------------------------------------------------------\n className,\n style: initStyle,\n sx,\n //----------------------------------------------------------------------------------------------------------------\n ...props\n }: FormRadioGroupProps<T>,\n ref: React.ForwardedRef<FormRadioGroupCommands<T>>\n ) {\n /********************************************************************************************************************\n * type\n * ******************************************************************************************************************/\n\n type Props = FormRadioGroupProps<T>;\n type Commands = FormRadioGroupCommands<T>;\n type Value = FormRadioGroupValue<T>;\n\n /********************************************************************************************************************\n * ID\n * ******************************************************************************************************************/\n\n const id = useId();\n\n /********************************************************************************************************************\n * FormState\n * ******************************************************************************************************************/\n\n const {\n variant: formVariant,\n size: formSize,\n color: formColor,\n focused: formFocused,\n fullWidth: formFullWidth,\n disabled: formDisabled,\n onAddValueItem,\n onRemoveValueItem,\n onValueChange,\n onValueChangeByUser,\n onRequestSearchSubmit,\n } = useFormState();\n\n /********************************************************************************************************************\n * Memo - FormState\n * ******************************************************************************************************************/\n\n const variant = useMemo(() => (initVariant == null ? formVariant : initVariant), [initVariant, formVariant]);\n const size = useMemo(() => (initSize == null ? formSize : initSize), [initSize, formSize]);\n const color = useMemo(() => (initColor == null ? formColor : initColor), [initColor, formColor]);\n const focused = useMemo(() => (initFocused == null ? formFocused : initFocused), [initFocused, formFocused]);\n\n /********************************************************************************************************************\n * State - FormState\n * ******************************************************************************************************************/\n\n const [fullWidth, setFullWidth] = useAutoUpdateState<Props['fullWidth']>(\n initFullWidth == null ? formFullWidth : initFullWidth\n );\n\n /********************************************************************************************************************\n * Theme\n * ******************************************************************************************************************/\n\n const theme = useTheme();\n\n /********************************************************************************************************************\n * Ref\n * ******************************************************************************************************************/\n\n const baseRef = useRef<HTMLDivElement>(null);\n const firstInputRef = useRef<HTMLInputElement>(null);\n\n /********************************************************************************************************************\n * State\n * ******************************************************************************************************************/\n\n const [items, setItems] = useAutoUpdateState<Props['items']>(initItems);\n const [error, setError] = useAutoUpdateState<Props['error']>(initError);\n const [errorHelperText, setErrorHelperText] = useState<Props['helperText']>();\n const [disabled, setDisabled] = useAutoUpdateState<Props['disabled']>(\n initDisabled == null ? formDisabled : initDisabled\n );\n const [hidden, setHidden] = useAutoUpdateState<Props['hidden']>(initHidden);\n const [isOnGetItemLoading, setIsOnGetItemLoading] = useState<boolean>(false);\n const [loading, setLoading] = useAutoUpdateState<Props['loading']>(initLoading);\n const [width, setWidth] = useAutoUpdateState<Props['width']>(initWidth || '100%');\n const [formColWrapRect, setFormColWrapRect] = useState<DOMRect>();\n const [data, setData] = useAutoUpdateState<Props['data']>(initData);\n\n /********************************************************************************************************************\n * State - radioGroupNoWrapRect (ResizeDetector)\n * ******************************************************************************************************************/\n\n const [radioGroupNoWrapRect, setRadioGroupNoWrapRect] = useState<DOMRect>();\n\n const { ref: resizeWidthDetectorRef } = useResizeDetector<HTMLDivElement>({\n handleWidth: true,\n handleHeight: false,\n onResize() {\n setRadioGroupNoWrapRect(resizeWidthDetectorRef.current?.getBoundingClientRect());\n },\n });\n\n /********************************************************************************************************************\n * State - height (ResizeDetector)\n * ******************************************************************************************************************/\n\n const { height, ref: resizeHeightDetectorRef } = useResizeDetector<HTMLDivElement>();\n\n /********************************************************************************************************************\n * Function - getFinalValue\n * ******************************************************************************************************************/\n\n const getFinalValue = useCallback(\n (value: Value): Value => {\n return onValue ? onValue(value) : value;\n },\n [onValue]\n );\n\n /********************************************************************************************************************\n * State - value\n * ******************************************************************************************************************/\n\n const [value, setValue] = useAutoUpdateState<Value>(initValue, getFinalValue);\n\n useFirstSkipEffect(() => {\n if (error) validate(value);\n if (onChange) onChange(value);\n if (onValueChange) onValueChange(name, value);\n }, [value]);\n\n /********************************************************************************************************************\n * Memo\n * ******************************************************************************************************************/\n\n const style = useMemo(() => ({ width, paddingLeft: PADDING_LEFT, ...initStyle }), [initStyle, width]);\n\n /********************************************************************************************************************\n * Effect\n * ******************************************************************************************************************/\n\n useEffect(() => {\n if (value !== initValue) {\n if (onChange) onChange(value);\n if (onValueChange) onValueChange(name, value);\n }\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, []);\n\n useEffect(() => {\n if (!fullWidth || initWidth) {\n const findParentByClassName = (element: HTMLElement, className: string): HTMLElement | undefined | null => {\n const parent = element.parentElement;\n if (parent) {\n if ((parent.className || '').includes(className)) {\n return parent;\n } else {\n return findParentByClassName(parent, className);\n }\n }\n };\n\n const wrap = baseRef.current && findParentByClassName(baseRef.current, 'FormCol-Children-Wrap');\n if (wrap) {\n const resize = () => {\n if (resizeWidthDetectorRef.current) {\n setRadioGroupNoWrapRect(resizeWidthDetectorRef.current.getBoundingClientRect());\n }\n setFormColWrapRect(wrap.getBoundingClientRect());\n };\n window.addEventListener('resize', resize);\n resize();\n\n return () => {\n window.removeEventListener('resize', resize);\n };\n }\n }\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [fullWidth, initWidth]);\n\n useEffect(() => {\n let width: number | string | undefined;\n\n let fullWidth = initFullWidth == null ? formFullWidth : initFullWidth;\n\n if (initWidth) {\n width = initWidth;\n } else if (fullWidth) {\n width = '100%';\n } else {\n if (radioGroupNoWrapRect?.width) {\n width = radioGroupNoWrapRect.width + PADDING_LEFT;\n }\n }\n\n const formColWrapPaddingLeft =\n radioGroupNoWrapRect && formColWrapRect ? radioGroupNoWrapRect.left - formColWrapRect.left : 0;\n\n if ((!fullWidth || !!initWidth) && width && formColWrapRect?.width) {\n if (typeof width === 'number' && width > formColWrapRect.width - formColWrapPaddingLeft) {\n width = formColWrapRect.width - formColWrapPaddingLeft;\n fullWidth = false;\n }\n }\n\n setWidth(width);\n setFullWidth(fullWidth);\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [initWidth, formFullWidth, initFullWidth, formColWrapRect, radioGroupNoWrapRect]);\n\n /********************************************************************************************************************\n * Function - focus\n * ******************************************************************************************************************/\n\n const focus = useCallback(function () {\n firstInputRef.current?.focus();\n }, []);\n\n /********************************************************************************************************************\n * Function - setErrorErrorHelperText\n * ******************************************************************************************************************/\n\n const setErrorErrorHelperText = useCallback(\n function (error: boolean, errorHelperText: ReactNode) {\n setError(error);\n setErrorHelperText(errorHelperText);\n },\n [setError]\n );\n\n /********************************************************************************************************************\n * Function - validate\n * ******************************************************************************************************************/\n\n const validate = useCallback(\n function (value: Value) {\n if (required && empty(value)) {\n setErrorErrorHelperText(true, '필수 선택 항목입니다.');\n return false;\n }\n if (onValidate) {\n const onValidateResult = onValidate(value);\n if (onValidateResult != null && onValidateResult !== true) {\n setErrorErrorHelperText(true, onValidateResult);\n return false;\n }\n }\n\n setErrorErrorHelperText(false, undefined);\n\n return true;\n },\n [required, onValidate, setErrorErrorHelperText]\n );\n\n /********************************************************************************************************************\n * Commands\n * ******************************************************************************************************************/\n\n useLayoutEffect(() => {\n let lastValue = value;\n let lastData = data;\n let lastItems = items;\n let lastLoading = loading;\n let lastDisabled = !!disabled;\n let lastHidden = !!hidden;\n\n const commands: Commands = {\n getType: () => 'FormRadioGroup',\n getName: () => name,\n getReset: () => getFinalValue(initValue),\n reset: () => {\n lastValue = getFinalValue(initValue);\n setValue(lastValue);\n },\n getValue: () => lastValue,\n setValue: (value: Value) => {\n lastValue = getFinalValue(value);\n setValue(lastValue);\n },\n getData: () => lastData,\n setData: (data) => {\n lastData = data;\n setData(data);\n },\n isExceptValue: () => !!exceptValue,\n isDisabled: () => lastDisabled,\n setDisabled: (disabled) => {\n lastDisabled = disabled;\n setDisabled(disabled);\n },\n isHidden: () => lastHidden,\n setHidden: (hidden) => {\n lastHidden = hidden;\n setHidden(hidden);\n },\n focus,\n focusValidate: focus,\n validate: () => validate(value),\n setError: (error: boolean, errorHelperText: ReactNode) =>\n setErrorErrorHelperText(error, error ? errorHelperText : undefined),\n getItems: () => lastItems,\n setItems: (items: Props['items']) => {\n lastItems = items;\n setItems(lastItems);\n },\n getLoading: () => !!lastLoading,\n setLoading: (loading: boolean) => {\n lastLoading = loading;\n setLoading(lastLoading);\n },\n };\n\n onAddValueItem(id, commands);\n\n if (ref) {\n if (typeof ref === 'function') {\n ref(commands);\n } else {\n ref.current = commands;\n }\n }\n\n return () => {\n onRemoveValueItem(id);\n\n if (ref) {\n if (typeof ref === 'function') {\n ref(null);\n } else {\n ref.current = null;\n }\n }\n };\n }, [\n name,\n initValue,\n value,\n getFinalValue,\n exceptValue,\n disabled,\n focus,\n validate,\n items,\n loading,\n ref,\n onAddValueItem,\n onRemoveValueItem,\n id,\n setValue,\n setDisabled,\n setErrorErrorHelperText,\n setItems,\n setLoading,\n data,\n setData,\n hidden,\n setHidden,\n ]);\n\n useEffect(() => {\n if (onLoadItems) {\n setIsOnGetItemLoading(true);\n onLoadItems().then((items) => {\n setItems(items);\n setIsOnGetItemLoading(false);\n });\n }\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, []);\n\n /********************************************************************************************************************\n * Event Handler\n * ******************************************************************************************************************/\n\n const handleChange = useCallback(\n (e: ChangeEvent<HTMLInputElement>) => {\n if (readOnly) {\n e.preventDefault();\n } else {\n let finalValue: Value = e.target.value as Value;\n if (items) {\n const item = items.find(({ value }) => value.toString() === finalValue);\n if (item) {\n finalValue = item.value;\n }\n }\n finalValue = getFinalValue(finalValue);\n if (value !== finalValue) {\n setValue(finalValue);\n nextTick(() => {\n onValueChangeByUser(name, finalValue);\n onRequestSearchSubmit(name, finalValue);\n });\n }\n }\n },\n [readOnly, items, getFinalValue, value, setValue, onValueChangeByUser, name, onRequestSearchSubmit]\n );\n\n /********************************************************************************************************************\n * Render\n * ******************************************************************************************************************/\n\n return (\n <FormItemBase\n focused={focused}\n ref={baseRef}\n className={classNames(className, 'FormValueItem', 'FormRadioGroup')}\n variant={variant}\n size={size}\n color={color}\n labelIcon={labelIcon}\n label={label}\n fullWidth={fullWidth}\n required={required}\n error={error}\n helperText={error ? errorHelperText : helperText}\n helperTextProps={{ style: { marginLeft: 2 } }}\n style={style}\n sx={sx}\n hidden={hidden}\n autoSize\n controlHeight={height || (size === 'small' ? 35 : 39)}\n controlVerticalCenter\n control={\n <>\n {!fullWidth && !isOnGetItemLoading && !loading && items && (\n <div\n ref={resizeWidthDetectorRef}\n style={{\n display: 'grid',\n position: 'absolute',\n whiteSpace: 'nowrap',\n visibility: 'hidden',\n }}\n >\n <RadioGroup\n {...props}\n style={{ marginTop: 10, display: 'inline-flex', flexWrap: 'nowrap' }}\n name={name}\n row={inline}\n value={value === undefined ? null : value}\n onChange={handleChange}\n >\n {items.map(({ value, label, disabled: itemDisabled }, idx) => (\n <FormControlLabel\n ref={idx === 0 ? resizeHeightDetectorRef : null}\n key={idx}\n control={\n <Radio\n icon={<RadioButtonUnchecked color={error ? 'error' : undefined} />}\n checkedIcon={<RadioButtonChecked color={error ? 'error' : undefined} />}\n color={color}\n size={size}\n />\n }\n label={label}\n style={{ color: error ? theme.palette.error.main : '', marginTop: -10, whiteSpace: 'nowrap' }}\n value={value}\n disabled={disabled || readOnly || itemDisabled}\n />\n ))}\n </RadioGroup>\n </div>\n )}\n <div>\n <RadioGroup\n {...props}\n style={{\n marginTop: 10,\n display: 'inline-flex',\n visibility: width == null ? 'hidden' : undefined,\n position: width == null ? 'absolute' : undefined,\n flexWrap: nowrap ? 'nowrap' : undefined,\n }}\n name={name}\n row={inline}\n value={value === undefined ? null : value}\n onChange={handleChange}\n >\n {isOnGetItemLoading || loading ? (\n <div style={{ position: 'relative' }}>\n <FormControlLabel\n ref={resizeHeightDetectorRef}\n label=''\n control={<Radio color={color} size={size} />}\n style={{ marginTop: -10, visibility: 'hidden' }}\n />\n <div style={{ position: 'absolute', left: 0, top: 1, opacity: 0.54 }}>\n <CircularProgress size={size === 'small' ? 12 : 16} color='inherit' />\n </div>\n </div>\n ) : (\n <>\n {items &&\n items.map(({ value, label, disabled: itemDisabled }, idx) => (\n <FormControlLabel\n key={idx}\n control={\n <Radio\n icon={<RadioButtonUnchecked color={error ? 'error' : undefined} />}\n checkedIcon={<RadioButtonChecked color={error ? 'error' : undefined} />}\n color={color}\n size={size}\n inputRef={idx === 0 ? firstInputRef : null}\n />\n }\n label={label}\n style={{ color: error ? theme.palette.error.main : '', marginTop: -10, whiteSpace: 'nowrap' }}\n value={value}\n disabled={disabled || readOnly || itemDisabled}\n />\n ))}\n </>\n )}\n </RadioGroup>\n </div>\n </>\n }\n />\n );\n })\n);\n\nFormRadioGroup.displayName = 'FormRadioGroup';\nFormRadioGroup.defaultProps = FormRadioGroupDefaultProps;\n\nexport default FormRadioGroup;\n","import { ReactNode } from 'react';\nimport { ToggleButtonProps } from '@mui/material';\nimport {\n PartialPick,\n CommonSxProps,\n FormMultipleValueItemCommands,\n FormArrayValueItemCommands,\n FormItemsValueItemCommands,\n FormLoadingValueItemCommands,\n FormValueItemBaseCommands,\n FormValueItemProps,\n} from '../../@types';\nimport { FormItemBaseProps } from '../FormItemBase';\n\nexport type FormToggleButtonGroupSingleValue = string | number | boolean;\n\nexport interface FormToggleButtonGroupItem<T extends FormToggleButtonGroupSingleValue> {\n label: ReactNode;\n value: T;\n disabled?: boolean;\n color?: ToggleButtonProps['color'];\n}\n\nexport type FormToggleButtonGroupItems<T extends FormToggleButtonGroupSingleValue> = FormToggleButtonGroupItem<T>[];\n\nexport type FormToggleButtonGroupValue<\n T extends FormToggleButtonGroupSingleValue,\n Multiple extends boolean | undefined,\n> = ([Multiple] extends [true] ? T[] : T) | undefined;\n\nexport interface FormToggleButtonGroupProps<\n T extends FormToggleButtonGroupSingleValue,\n Multiple extends boolean | undefined = undefined,\n> extends CommonSxProps,\n Omit<FormValueItemProps<FormToggleButtonGroupValue<T, Multiple>>, 'value'>,\n PartialPick<FormItemBaseProps, 'required' | 'focused'> {\n type?: 'button' | 'checkbox' | 'radio';\n value?: FormToggleButtonGroupValue<T, Multiple>;\n items?: FormToggleButtonGroupItem<T>[];\n multiple?: Multiple;\n notAllowEmptyValue?: boolean;\n formValueSeparator?: string;\n formValueSort?: boolean;\n loading?: boolean;\n itemWidth?: number | string;\n onLoadItems?: () => Promise<FormToggleButtonGroupItem<T>[]>;\n onValue?: (value: FormToggleButtonGroupValue<T, Multiple>) => FormToggleButtonGroupValue<T, Multiple>;\n}\n\nexport const FormToggleButtonGroupDefaultProps: Pick<\n FormToggleButtonGroupProps<any, false>,\n 'type' | 'formValueSeparator'\n> = {\n type: 'button',\n formValueSeparator: ',',\n};\n\nexport interface FormToggleButtonGroupExtraCommands<T extends FormToggleButtonGroupSingleValue>\n extends FormArrayValueItemCommands,\n FormItemsValueItemCommands<FormToggleButtonGroupItem<T>>,\n FormMultipleValueItemCommands,\n FormLoadingValueItemCommands {}\n\nexport interface FormToggleButtonGroupCommands<\n T extends FormToggleButtonGroupSingleValue,\n Multiple extends boolean | undefined = undefined,\n> extends FormValueItemBaseCommands<FormToggleButtonGroupValue<T, Multiple>, true>,\n FormToggleButtonGroupExtraCommands<T> {}\n","import React, { useEffect, useState, useCallback, useId, ReactNode, useLayoutEffect, useMemo, useRef } from 'react';\nimport classNames from 'classnames';\nimport { useResizeDetector } from 'react-resize-detector';\nimport { ToggleButtonGroup, ToggleButton, useTheme, CircularProgress, Icon } from '@mui/material';\nimport { useAutoUpdateState, useFirstSkipEffect } from '@pdg/react-hook';\nimport { empty, nextTick, notEmpty, isSame, ToForwardRefExoticComponent, AutoTypeForwardRef } from '../../@util';\nimport { PartialPick } from '../../@types';\nimport {\n FormToggleButtonGroupProps,\n FormToggleButtonGroupDefaultProps,\n FormToggleButtonGroupCommands,\n FormToggleButtonGroupSingleValue,\n} from './FormToggleButtonGroup.types';\nimport { useFormState } from '../../FormContext';\nimport FormItemBase, { FormItemBaseProps } from '../FormItemBase';\nimport './FormToggleButtonGroup.scss';\n\nconst FormToggleButtonGroup = ToForwardRefExoticComponent(\n AutoTypeForwardRef(function <T extends FormToggleButtonGroupSingleValue, Multiple extends boolean | undefined>(\n {\n variant: initVariant,\n size: initSize,\n color: initColor,\n focused: initFocused,\n fullWidth: initFullWidth,\n //----------------------------------------------------------------------------------------------------------------\n name,\n labelIcon,\n label,\n type,\n loading: initLoading,\n items: initItems,\n value: initValue,\n data: initData,\n error: initError,\n helperText,\n disabled: initDisabled,\n readOnly,\n required,\n notAllowEmptyValue,\n exceptValue,\n width: initWidth,\n multiple,\n formValueSeparator,\n formValueSort,\n hidden: initHidden,\n itemWidth,\n onLoadItems,\n //----------------------------------------------------------------------------------------------------------------\n onChange,\n onValue,\n onValidate,\n //----------------------------------------------------------------------------------------------------------------\n className,\n style: initStyle,\n sx,\n }: FormToggleButtonGroupProps<T, Multiple>,\n ref: React.ForwardedRef<FormToggleButtonGroupCommands<T, Multiple>>\n ) {\n /********************************************************************************************************************\n * type\n * ******************************************************************************************************************/\n\n type Props = FormToggleButtonGroupProps<T, Multiple>;\n type Commands = FormToggleButtonGroupCommands<T, Multiple>;\n\n /********************************************************************************************************************\n * ID\n * ******************************************************************************************************************/\n\n const id = useId();\n const labelId = useId();\n\n /********************************************************************************************************************\n * Ref\n * ******************************************************************************************************************/\n\n const refForResizeWidthDetect = useRef<HTMLDivElement>(null);\n const refForButtonResizeHeightDetect = useRef<HTMLButtonElement>(null);\n const refForLoadingResizeHeightDetect = useRef<HTMLDivElement>(null);\n\n /********************************************************************************************************************\n * FormState\n * ******************************************************************************************************************/\n\n const {\n variant: formVariant,\n size: formSize,\n color: formColor,\n focused: formFocused,\n fullWidth: formFullWidth,\n disabled: formDisabled,\n formColWidth,\n onAddValueItem,\n onRemoveValueItem,\n onValueChange,\n onValueChangeByUser,\n onRequestSearchSubmit,\n } = useFormState();\n\n /********************************************************************************************************************\n * Memo - FormState\n * ******************************************************************************************************************/\n\n const variant = useMemo(() => (initVariant == null ? formVariant : initVariant), [initVariant, formVariant]);\n const size = useMemo(() => (initSize == null ? formSize : initSize), [initSize, formSize]);\n const color = useMemo(() => (initColor == null ? formColor : initColor), [initColor, formColor]);\n const fullWidth = useMemo(\n () => (type === 'checkbox' || type === 'radio' ? true : initFullWidth == null ? formFullWidth : initFullWidth),\n [initFullWidth, formFullWidth, type]\n );\n\n /********************************************************************************************************************\n * State - FormState\n * ******************************************************************************************************************/\n\n const [focused, setFocused] = useAutoUpdateState<Props['focused']>(initFocused == null ? formFocused : initFocused);\n\n /********************************************************************************************************************\n * Theme\n * ******************************************************************************************************************/\n\n const theme = useTheme();\n\n /********************************************************************************************************************\n * State - width (ResizeDetector)\n * ******************************************************************************************************************/\n\n const [width, setWidth] = useState<number>();\n\n useResizeDetector({\n targetRef: refForResizeWidthDetect,\n handleWidth: true,\n onResize() {\n setWidth(refForResizeWidthDetect.current?.getBoundingClientRect()?.width);\n },\n });\n\n /********************************************************************************************************************\n * State - height (ResizeDetector)\n * ******************************************************************************************************************/\n\n const [height, setHeight] = useState<number>();\n\n useResizeDetector({\n targetRef: refForButtonResizeHeightDetect,\n handleHeight: true,\n onResize() {\n setHeight(refForButtonResizeHeightDetect.current?.getBoundingClientRect()?.height);\n },\n });\n useResizeDetector({\n targetRef: refForLoadingResizeHeightDetect,\n handleHeight: true,\n onResize() {\n setHeight(refForLoadingResizeHeightDetect.current?.getBoundingClientRect()?.height);\n },\n });\n\n /********************************************************************************************************************\n * State\n * ******************************************************************************************************************/\n\n const [isOnGetItemLoading, setIsOnGetItemLoading] = useState<boolean>(false);\n\n const [items, setItems] = useAutoUpdateState<Props['items']>(initItems);\n const [error, setError] = useAutoUpdateState<Props['error']>(initError);\n const [errorHelperText, setErrorHelperText] = useState<Props['helperText']>();\n const [loading, setLoading] = useAutoUpdateState<Props['loading']>(initLoading);\n const [disabled, setDisabled] = useAutoUpdateState<Props['disabled']>(\n initDisabled == null ? formDisabled : initDisabled\n );\n const [hidden, setHidden] = useAutoUpdateState<Props['hidden']>(initHidden);\n const [data, setData] = useAutoUpdateState<Props['data']>(initData);\n\n /********************************************************************************************************************\n * Memo\n * ******************************************************************************************************************/\n\n const itemsValues = useMemo(() => {\n if (items) {\n return items.reduce<Record<string, string | number | boolean>>((res, { value }) => {\n res[`${value}`] = value;\n return res;\n }, {});\n } else {\n return {};\n }\n }, [items]);\n\n const style = useMemo(() => {\n let finalWidth;\n if (initWidth) {\n finalWidth = initWidth;\n } else {\n if (isOnGetItemLoading) {\n finalWidth = 16;\n } else if (fullWidth) {\n finalWidth = '100%';\n } else {\n finalWidth = width || 0;\n if (formColWidth) {\n if (finalWidth > formColWidth) {\n finalWidth = formColWidth;\n }\n }\n }\n }\n\n return { width: finalWidth, ...initStyle };\n }, [formColWidth, fullWidth, initStyle, initWidth, isOnGetItemLoading, width]);\n\n /********************************************************************************************************************\n * Function - getFinalValue\n * ******************************************************************************************************************/\n\n const getFinalValue = useCallback(\n (value: Props['value']): Props['value'] => {\n let finalValue = value;\n if (multiple) {\n if (!Array.isArray(finalValue)) {\n if (finalValue != null && notEmpty(finalValue)) {\n if (typeof finalValue === 'string') {\n finalValue = Array.from(new Set(finalValue.split(formValueSeparator || ','))) as Props['value'];\n } else {\n finalValue = [finalValue] as unknown as Props['value'];\n }\n } else {\n finalValue = [] as unknown as Props['value'];\n }\n }\n } else {\n if (Array.isArray(finalValue)) {\n if (notEmpty(finalValue)) {\n finalValue = finalValue[0] as Props['value'];\n } else {\n finalValue = undefined;\n }\n }\n }\n\n if (notEmpty(itemsValues)) {\n if (finalValue != null && notEmpty(finalValue)) {\n if (multiple) {\n if (Array.isArray(finalValue)) {\n finalValue = finalValue.map((v) => {\n const realValue = itemsValues[`${v}`];\n return realValue != null ? realValue : v;\n }) as Props['value'];\n }\n } else {\n const realValue = itemsValues[`${finalValue}`];\n if (realValue != null && finalValue !== realValue) {\n finalValue = realValue as Props['value'];\n }\n }\n }\n }\n\n return onValue ? onValue(finalValue) : finalValue;\n },\n [multiple, formValueSeparator, itemsValues, onValue]\n );\n\n /********************************************************************************************************************\n * State - value\n * ******************************************************************************************************************/\n\n const [value, setValue] = useAutoUpdateState<Props['value']>(initValue, getFinalValue);\n\n /********************************************************************************************************************\n * Effect\n * ******************************************************************************************************************/\n\n useEffect(() => {\n if (value !== initValue) {\n if (onChange) onChange(value);\n onValueChange(name, value);\n }\n\n if (onLoadItems) {\n setIsOnGetItemLoading(true);\n onLoadItems().then((items) => {\n setItems(items);\n setIsOnGetItemLoading(false);\n });\n }\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, []);\n\n useFirstSkipEffect(() => {\n if (error) validate(value);\n if (onChange) onChange(value);\n onValueChange(name, value);\n }, [value]);\n\n useEffect(() => {\n if (notAllowEmptyValue) {\n if (items && notEmpty(items)) {\n let setFirstItem = false;\n\n if (Array.isArray(value)) {\n if (empty(value)) {\n setFirstItem = true;\n }\n } else {\n if (value == null) {\n setFirstItem = true;\n }\n }\n\n if (setFirstItem) {\n setValue((multiple ? [items[0].value] : items[0].value) as Props['value']);\n }\n }\n }\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [items, value, multiple, notAllowEmptyValue]);\n\n /********************************************************************************************************************\n * Function - focus\n * ******************************************************************************************************************/\n\n const focus = useCallback(() => {\n refForButtonResizeHeightDetect.current?.focus();\n }, [refForButtonResizeHeightDetect]);\n\n /********************************************************************************************************************\n * Function - setErrorErrorHelperText\n * ******************************************************************************************************************/\n\n const setErrorErrorHelperText = useCallback(\n (error: boolean, errorHelperText: ReactNode) => {\n setError(error);\n setErrorHelperText(errorHelperText);\n },\n [setError]\n );\n\n /********************************************************************************************************************\n * Function - validate\n * ******************************************************************************************************************/\n\n const validate = useCallback(\n (value: Props['value']) => {\n if (required && empty(value)) {\n setErrorErrorHelperText(true, '필수 선택 항목입니다.');\n return false;\n }\n if (onValidate) {\n const onValidateResult = onValidate(value);\n if (onValidateResult != null && onValidateResult !== true) {\n setErrorErrorHelperText(true, onValidateResult);\n return false;\n }\n }\n\n setErrorErrorHelperText(false, undefined);\n\n return true;\n },\n [required, onValidate, setErrorErrorHelperText]\n );\n\n /********************************************************************************************************************\n * Commands\n * ******************************************************************************************************************/\n\n useLayoutEffect(() => {\n if (ref || onAddValueItem) {\n let lastValue = value;\n let lastData = data;\n let lastItems = items;\n let lastLoading = loading;\n let lastDisabled = !!disabled;\n let lastHidden = !!hidden;\n\n const commands: Commands = {\n getType: () => 'FormToggleButtonGroup',\n getName: () => name,\n getReset: () => getFinalValue(initValue),\n reset: () => {\n lastValue = getFinalValue(initValue);\n setValue(lastValue);\n },\n getValue: () => lastValue,\n setValue: (value) => {\n lastValue = getFinalValue(value);\n setValue(lastValue);\n },\n getData: () => lastData,\n setData: (data) => {\n lastData = data;\n setData(data);\n },\n isExceptValue: () => !!exceptValue,\n isDisabled: () => lastDisabled,\n setDisabled: (disabled) => {\n lastDisabled = disabled;\n setDisabled(disabled);\n },\n isHidden: () => lastHidden,\n setHidden: (hidden) => {\n lastHidden = hidden;\n setHidden(hidden);\n },\n focus,\n focusValidate: focus,\n validate: () => validate(value),\n setError: (error: boolean, errorText: ReactNode | undefined) =>\n setErrorErrorHelperText(error, error ? errorText : undefined),\n getFormValueSeparator: () => formValueSeparator,\n isFormValueSort: () => !!formValueSort,\n getItems: () => lastItems,\n setItems: (items) => {\n lastItems = items;\n setItems(lastItems);\n },\n isMultiple: () => !!multiple,\n getLoading: () => !!lastLoading,\n setLoading: (loading) => {\n lastLoading = loading;\n setLoading(lastLoading);\n },\n };\n\n if (ref) {\n if (typeof ref === 'function') {\n ref(commands);\n } else {\n ref.current = commands;\n }\n }\n\n if (onAddValueItem) onAddValueItem(id, commands);\n\n return () => {\n if (ref) {\n if (typeof ref === 'function') {\n ref(null);\n } else {\n ref.current = null;\n }\n }\n\n if (onRemoveValueItem) onRemoveValueItem(id);\n };\n }\n }, [\n name,\n initValue,\n value,\n getFinalValue,\n exceptValue,\n disabled,\n multiple,\n focus,\n validate,\n formValueSeparator,\n formValueSort,\n items,\n ref,\n onAddValueItem,\n onRemoveValueItem,\n loading,\n id,\n setValue,\n setDisabled,\n setErrorErrorHelperText,\n setItems,\n setLoading,\n data,\n setData,\n hidden,\n setHidden,\n ]);\n\n /********************************************************************************************************************\n * Event Handler\n * ******************************************************************************************************************/\n\n const handleChange = useCallback(\n (e: React.MouseEvent<HTMLElement>, newValue: Props['value']) => {\n if (readOnly) {\n e.preventDefault();\n } else {\n let finalValue = newValue;\n if (notAllowEmptyValue) {\n if (multiple) {\n if (empty(finalValue)) {\n if (Array.isArray(value) && value.length > 0) {\n finalValue = [value[0]] as Props['value'];\n }\n }\n } else {\n if (finalValue == null) {\n finalValue = value;\n }\n }\n }\n finalValue = getFinalValue(finalValue);\n if (!isSame(value, finalValue)) {\n setValue(finalValue);\n nextTick(() => {\n onValueChangeByUser(name, finalValue);\n onRequestSearchSubmit(name, finalValue);\n });\n }\n }\n },\n [\n readOnly,\n notAllowEmptyValue,\n getFinalValue,\n value,\n multiple,\n setValue,\n onValueChangeByUser,\n name,\n onRequestSearchSubmit,\n ]\n );\n\n /********************************************************************************************************************\n * Render\n * ******************************************************************************************************************/\n\n const formControlBaseProps: PartialPick<FormItemBaseProps, 'focused'> = {};\n if (focused) {\n formControlBaseProps.focused = true;\n }\n\n const buttons = useMemo(() => {\n let finalItemWidth: number | string | undefined = undefined;\n if (type === 'button' && !fullWidth) {\n finalItemWidth = 'auto';\n } else if (!fullWidth || type === 'radio' || type === 'checkbox') {\n finalItemWidth = itemWidth || 'auto';\n }\n\n const buttonStyle = {\n borderColor: error ? theme.palette.error.main : '',\n color: error ? theme.palette.error.main : '',\n width: finalItemWidth,\n };\n\n return (\n items &&\n items.map(({ value, label, disabled: itemDisabled, color: itemColor }, idx) => {\n return (\n <ToggleButton\n ref={idx === 0 ? refForButtonResizeHeightDetect : undefined}\n key={idx}\n size={size}\n className='ToggleButton'\n value={value}\n color={itemColor || color}\n disabled={disabled || readOnly || itemDisabled}\n style={buttonStyle}\n onFocus={() => setFocused(initFocused || true)}\n onBlur={() => setFocused(initFocused || false)}\n >\n {type === 'checkbox' ? (\n <>\n <Icon className='__checkbox-unchecked__'>check_box_outline_blank</Icon>\n <Icon className='__checkbox-checked__'>check_box</Icon>\n </>\n ) : (\n type === 'radio' && (\n <>\n <>\n <Icon className='__checkbox-unchecked__'>radio_button_unchecked</Icon>\n <Icon className='__checkbox-checked__'>radio_button_checked</Icon>\n </>\n </>\n )\n )}\n {label}\n </ToggleButton>\n );\n })\n );\n }, [\n color,\n disabled,\n error,\n fullWidth,\n initFocused,\n itemWidth,\n items,\n readOnly,\n setFocused,\n size,\n theme.palette.error.main,\n type,\n ]);\n\n return (\n <FormItemBase\n {...formControlBaseProps}\n className={classNames(\n className,\n 'FormValueItem',\n 'FormToggleButtonGroup',\n `variant-${variant}`,\n `size-${size}`,\n !!label && 'with-label',\n !!fullWidth && 'full-width',\n `type-${type}`\n )}\n variant={variant}\n size={size}\n color={color}\n labelIcon={labelIcon}\n label={label}\n required={required}\n fullWidth={fullWidth}\n error={error}\n helperText={error ? errorHelperText : helperText}\n helperTextProps={{ style: { marginLeft: 2 } }}\n style={style}\n sx={sx}\n hidden={hidden}\n autoSize\n controlHeight={height || 0}\n controlVerticalCenter={isOnGetItemLoading || loading}\n control={\n isOnGetItemLoading || loading ? (\n <div style={{ opacity: 0.54 }} ref={refForLoadingResizeHeightDetect}>\n <CircularProgress size={16} color='inherit' />\n </div>\n ) : (\n <>\n {!fullWidth && !isOnGetItemLoading && !loading && items && (\n <div\n ref={refForResizeWidthDetect}\n style={{\n display: 'grid',\n position: 'absolute',\n whiteSpace: 'nowrap',\n visibility: 'hidden',\n }}\n >\n <ToggleButtonGroup className='ToggleButtonGroup' exclusive={!multiple}>\n {buttons}\n </ToggleButtonGroup>\n </div>\n )}\n <ToggleButtonGroup\n className='ToggleButtonGroup'\n exclusive={!multiple}\n fullWidth={fullWidth}\n value={value == null ? null : value}\n onChange={handleChange}\n style={{\n width:\n !fullWidth && formColWidth && typeof width === 'number' && width > formColWidth\n ? formColWidth\n : undefined,\n flexWrap: type === 'checkbox' || type === 'radio' ? 'wrap' : 'nowrap',\n }}\n aria-labelledby={notEmpty(label) ? labelId : undefined}\n >\n {isOnGetItemLoading || loading || !items || empty(items) ? (\n <ToggleButton\n ref={refForButtonResizeHeightDetect}\n size={size}\n className='ToggleButton'\n disabled={disabled || readOnly}\n value=''\n style={{ visibility: 'hidden' }}\n />\n ) : (\n buttons\n )}\n </ToggleButtonGroup>\n </>\n )\n }\n />\n );\n })\n);\n\nFormToggleButtonGroup.displayName = 'FormToggleButtonGroup';\nFormToggleButtonGroup.defaultProps = FormToggleButtonGroupDefaultProps;\n\nexport default FormToggleButtonGroup;\n","import { RatingProps } from '@mui/material';\nimport { PartialPick, FormValueItemProps, FormValueItemBaseCommands } from '../../@types';\nimport { CommonSxProps } from '../../@types';\n\nexport type FormRatingValue = number;\n\nexport interface FormRatingProps\n extends CommonSxProps,\n PartialPick<RatingProps, 'highlightSelectedOnly' | 'max' | 'precision'>,\n Omit<FormValueItemProps<FormRatingValue, false>, 'fullWidth'> {\n required?: boolean;\n icon?: string;\n emptyIcon?: string;\n onValue?(value: FormRatingValue): FormRatingValue;\n}\n\nexport const FormRatingDefaultProps: Pick<FormRatingProps, 'value' | 'precision'> = {\n value: 0,\n precision: 1,\n};\n\nexport interface FormRatingCommands extends FormValueItemBaseCommands<FormRatingValue, false> {}\n","import React, { useCallback, useEffect, useId, useLayoutEffect, useMemo, useRef, useState } from 'react';\nimport classNames from 'classnames';\nimport { useResizeDetector } from 'react-resize-detector';\nimport { Rating } from '@mui/material';\nimport { useAutoUpdateState, useFirstSkipEffect } from '@pdg/react-hook';\nimport { empty, nextTick } from '../../@util';\nimport {\n FormRatingProps as Props,\n FormRatingDefaultProps,\n FormRatingCommands,\n FormRatingValue,\n} from './FormRating.types';\nimport FormItemBase from '../FormItemBase';\nimport { useFormState } from '../../FormContext';\nimport { FormIcon } from '../../FormCommon';\n\nconst FormRating = React.forwardRef<FormRatingCommands, Props>(\n (\n {\n variant: initVariant,\n size: initSize,\n color: initColor,\n focused: initFocused,\n //----------------------------------------------------------------------------------------------------------------\n precision,\n highlightSelectedOnly,\n icon,\n emptyIcon,\n max,\n hidden: initHidden,\n //----------------------------------------------------------------------------------------------------------------\n name,\n labelIcon,\n label,\n readOnly,\n required,\n disabled: initDisabled,\n error: initError,\n helperText,\n value: initValue,\n data: initData,\n exceptValue,\n onChange,\n onValidate,\n onValue,\n //----------------------------------------------------------------------------------------------------------------\n className,\n style: initStyle,\n sx,\n },\n ref\n ) => {\n /********************************************************************************************************************\n * ID\n * ******************************************************************************************************************/\n\n const id = useId();\n\n /********************************************************************************************************************\n * FormState\n * ******************************************************************************************************************/\n\n const {\n variant: formVariant,\n size: formSize,\n color: formColor,\n focused: formFocused,\n disabled: formDisabled,\n onAddValueItem,\n onRemoveValueItem,\n onValueChange,\n onValueChangeByUser,\n onRequestSearchSubmit,\n } = useFormState();\n\n /********************************************************************************************************************\n * Memo - FormState\n * ******************************************************************************************************************/\n\n const variant = useMemo(() => (initVariant == null ? formVariant : initVariant), [initVariant, formVariant]);\n const size = useMemo(() => (initSize == null ? formSize : initSize), [initSize, formSize]);\n const color = useMemo(() => (initColor == null ? formColor : initColor), [initColor, formColor]);\n\n /********************************************************************************************************************\n * State - FormState\n * ******************************************************************************************************************/\n\n const [focused, setFocused] = useAutoUpdateState<Props['focused']>(initFocused == null ? formFocused : initFocused);\n\n /********************************************************************************************************************\n * Ref\n * ******************************************************************************************************************/\n\n const ratingRef = useRef<HTMLSpanElement>(null);\n const inputRef = useRef<HTMLInputElement>();\n\n /********************************************************************************************************************\n * State\n * ******************************************************************************************************************/\n\n const [error, setError] = useAutoUpdateState<Props['error']>(initError);\n const [errorHelperText, setErrorHelperText] = useState<Props['helperText']>();\n const [disabled, setDisabled] = useAutoUpdateState<Props['disabled']>(\n initDisabled == null ? formDisabled : initDisabled\n );\n const [hidden, setHidden] = useAutoUpdateState<Props['hidden']>(initHidden);\n const [data, setData] = useAutoUpdateState<Props['data']>(initData);\n\n /********************************************************************************************************************\n * State - width, height\n * ******************************************************************************************************************/\n\n const { width, height } = useResizeDetector({\n targetRef: ratingRef,\n handleWidth: true,\n handleHeight: true,\n });\n\n /********************************************************************************************************************\n * Function - getFinalValue\n * ******************************************************************************************************************/\n\n const getFinalValue = useCallback(\n (value: number): number => {\n return onValue ? onValue(value) : value;\n },\n [onValue]\n );\n\n /********************************************************************************************************************\n * State - value\n * ******************************************************************************************************************/\n\n const [value, setValue] = useAutoUpdateState<number>(initValue || 0, getFinalValue);\n\n useFirstSkipEffect(() => {\n if (error) validate(value);\n if (onChange) onChange(value);\n onValueChange(name, value);\n }, [value]);\n\n /********************************************************************************************************************\n * Memo\n * ******************************************************************************************************************/\n\n const style = useMemo(() => ({ width: width || 100, ...initStyle }), [initStyle, width]);\n\n /********************************************************************************************************************\n * Effect\n * ******************************************************************************************************************/\n\n useEffect(() => {\n if (value !== initValue) {\n if (onChange) onChange(value);\n onValueChange(name, value);\n }\n\n if (ratingRef.current) {\n inputRef.current = ratingRef.current.querySelector('input') || undefined;\n }\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, []);\n\n /********************************************************************************************************************\n * Function\n * ******************************************************************************************************************/\n\n const focus = useCallback(function () {\n inputRef.current?.focus();\n setTimeout(() => {\n inputRef.current?.blur();\n });\n }, []);\n\n const setErrorErrorHelperText = useCallback(\n function (error: Props['error'], errorHelperText: Props['helperText']) {\n setError(error);\n setErrorHelperText(errorHelperText);\n },\n [setError]\n );\n\n const validate = useCallback(\n function (value: FormRatingValue) {\n if (required && (empty(value) || value === 0)) {\n setErrorErrorHelperText(true, '필수 선택 항목입니다.');\n return false;\n }\n\n if (onValidate) {\n const onValidateResult = onValidate(value);\n if (onValidateResult != null && onValidateResult !== true) {\n setErrorErrorHelperText(true, onValidateResult);\n return false;\n }\n }\n\n setErrorErrorHelperText(false, undefined);\n\n return true;\n },\n [required, onValidate, setErrorErrorHelperText]\n );\n\n /********************************************************************************************************************\n * Commands\n * ******************************************************************************************************************/\n\n useLayoutEffect(() => {\n let lastValue = value;\n let lastData = data;\n let lastDisabled = !!disabled;\n let lastHidden = !!hidden;\n\n const commands: FormRatingCommands = {\n getType: () => 'FormRating',\n getName: () => name,\n getReset: () => getFinalValue(initValue || 0),\n reset: () => {\n lastValue = getFinalValue(initValue || 0);\n setValue(lastValue);\n },\n getValue: () => lastValue,\n setValue: (value: number) => {\n lastValue = getFinalValue(value);\n setValue(lastValue);\n },\n getData: () => lastData,\n setData: (data) => {\n lastData = data;\n setData(data);\n },\n isExceptValue: () => !!exceptValue,\n isDisabled: () => lastDisabled,\n setDisabled: (disabled) => {\n lastDisabled = disabled;\n setDisabled(disabled);\n },\n isHidden: () => lastHidden,\n setHidden: (hidden) => {\n lastHidden = hidden;\n setHidden(hidden);\n },\n focus,\n focusValidate: focus,\n validate: () => validate(value),\n setError: (error: Props['error'], errorHelperText: Props['helperText']) =>\n setErrorErrorHelperText(error, error ? errorHelperText : undefined),\n };\n\n onAddValueItem(id, commands);\n\n if (ref) {\n if (typeof ref === 'function') {\n ref(commands);\n } else {\n ref.current = commands;\n }\n }\n\n return () => {\n onRemoveValueItem(id);\n\n if (ref) {\n if (typeof ref === 'function') {\n ref(null);\n } else {\n ref.current = null;\n }\n }\n };\n }, [\n name,\n initValue,\n value,\n getFinalValue,\n exceptValue,\n disabled,\n focus,\n validate,\n ref,\n onAddValueItem,\n onRemoveValueItem,\n id,\n setValue,\n setDisabled,\n setErrorErrorHelperText,\n data,\n setData,\n hidden,\n setHidden,\n ]);\n\n /********************************************************************************************************************\n * Event Handler\n * ******************************************************************************************************************/\n\n const handleChange = useCallback(\n (e: React.SyntheticEvent, value: number | null) => {\n if (readOnly) {\n e.preventDefault();\n } else {\n const finalValue = getFinalValue(value || 0);\n setValue(finalValue);\n nextTick(() => {\n onValueChangeByUser(name, finalValue);\n onRequestSearchSubmit(name, finalValue);\n });\n }\n },\n [readOnly, getFinalValue, setValue, onValueChangeByUser, name, onRequestSearchSubmit]\n );\n\n /********************************************************************************************************************\n * Render\n * ******************************************************************************************************************/\n\n return (\n <FormItemBase\n variant={variant}\n size={size}\n color={color}\n focused={focused}\n className={classNames(className, 'FormValueItem', 'FormRating')}\n labelIcon={labelIcon}\n label={label}\n error={error}\n fullWidth={false}\n required={required}\n helperText={error ? errorHelperText : helperText}\n helperTextProps={{ style: { marginLeft: 5 } }}\n style={style}\n sx={sx}\n hidden={hidden}\n autoSize\n controlHeight={height || (size === 'small' ? 21 : 26)}\n controlVerticalCenter\n control={\n <Rating\n ref={ratingRef}\n size={size === 'medium' ? 'large' : 'medium'}\n name={name}\n precision={precision}\n highlightSelectedOnly={highlightSelectedOnly}\n value={value}\n disabled={disabled || readOnly}\n max={max}\n icon={\n <FormIcon color={color} fontSize='inherit'>\n {icon ? icon : 'Star'}\n </FormIcon>\n }\n emptyIcon={<FormIcon fontSize='inherit'>{emptyIcon ? emptyIcon : 'StarBorder'}</FormIcon>}\n onChange={handleChange}\n onFocus={() => setFocused(initFocused || true)}\n onBlur={() => setFocused(initFocused || false)}\n />\n }\n />\n );\n }\n);\n\nFormRating.displayName = 'FormRating';\nFormRating.defaultProps = FormRatingDefaultProps;\n\nexport default FormRating;\n","import { CommonSxProps, FormValueItemCommands, FormValueItemProps } from '../../@types';\nimport { IAllProps } from '@tinymce/tinymce-react';\n\nexport type FormTextEditorValue = string;\nexport type FormTextEditorCommands = FormValueItemCommands<FormTextEditorValue, false>;\n\nexport interface FormTextEditorProps\n extends CommonSxProps,\n Omit<FormValueItemProps<FormTextEditorValue, false>, 'fullWidth'>,\n Partial<Pick<IAllProps, 'apiKey' | 'toolbar'>> {\n required?: boolean;\n menubar?: boolean;\n height?: number;\n onImageUpload?(\n blob: Blob,\n success: (url: string) => void,\n failure: (err: string) => void,\n progress?: (percent: number) => void\n ): void;\n}\n\nexport const FormTextEditorDefaultProps: Pick<FormTextEditorProps, 'value' | 'menubar' | 'height'> = {\n menubar: true,\n height: 500,\n value: '',\n};\n","import React, { useCallback, useId, useLayoutEffect, useMemo, useRef, useState } from 'react';\nimport classNames from 'classnames';\nimport { Editor } from '@tinymce/tinymce-react';\nimport { Editor as TinyMCEEditor } from 'tinymce';\nimport { Skeleton } from '@mui/material';\nimport { useAutoUpdateState, useFirstSkipEffect } from '@pdg/react-hook';\nimport { empty, nextTick } from '../../@util';\nimport {\n FormTextEditorProps as Props,\n FormTextEditorDefaultProps,\n FormTextEditorCommands,\n FormTextEditorValue,\n} from './FormTextEditor.types';\nimport FormItemBase from '../FormItemBase';\nimport { useFormState } from '../../FormContext';\nimport './FormTextEditor.scss';\n\ninterface BlobInfo {\n id: () => string;\n name: () => string;\n filename: () => string;\n blob: () => Blob;\n base64: () => string;\n blobUri: () => string;\n uri: () => string | undefined;\n}\n\nconst FormTextEditor = React.forwardRef<FormTextEditorCommands, Props>(\n (\n {\n variant: initVariant,\n size: initSize,\n color: initColor,\n focused: initFocused,\n // ---------------------------------------------------------------------------------------------------------------\n apiKey,\n toolbar,\n //----------------------------------------------------------------------------------------------------------------\n menubar,\n height,\n hidden: initHidden,\n onImageUpload,\n //----------------------------------------------------------------------------------------------------------------\n name,\n labelIcon,\n label,\n readOnly,\n required,\n disabled: initDisabled,\n error: initError,\n helperText: helperText,\n value: initValue,\n data: initData,\n exceptValue,\n onChange,\n onValidate,\n //----------------------------------------------------------------------------------------------------------------\n className,\n },\n ref\n ) => {\n /********************************************************************************************************************\n * ID\n * ******************************************************************************************************************/\n\n const id = useId();\n\n /********************************************************************************************************************\n * FormState\n * ******************************************************************************************************************/\n\n const {\n variant: formVariant,\n size: formSize,\n color: formColor,\n focused: formFocused,\n disabled: formDisabled,\n onAddValueItem,\n onValueChange,\n onRemoveValueItem,\n onValueChangeByUser,\n } = useFormState<FormTextEditorValue, false>();\n\n /********************************************************************************************************************\n * Memo - FormState\n * ******************************************************************************************************************/\n\n const variant = useMemo(() => (initVariant == null ? formVariant : initVariant), [initVariant, formVariant]);\n const size = useMemo(() => (initSize == null ? formSize : initSize), [initSize, formSize]);\n const color = useMemo(() => (initColor == null ? formColor : initColor), [initColor, formColor]);\n\n /********************************************************************************************************************\n * State - FormState\n * ******************************************************************************************************************/\n\n const [focused, setFocused] = useAutoUpdateState<Props['focused']>(initFocused == null ? formFocused : initFocused);\n\n /********************************************************************************************************************\n * Ref\n * ******************************************************************************************************************/\n\n const editorRef = useRef<TinyMCEEditor | null>();\n const keyDownTime = useRef(0);\n\n /********************************************************************************************************************\n * State - value\n * ******************************************************************************************************************/\n\n const [value, setValue] = useAutoUpdateState<FormTextEditorValue>(initValue || '');\n\n useFirstSkipEffect(() => {\n if (error) validate(value);\n if (onChange) onChange(value);\n onValueChange(name, value);\n }, [value]);\n\n /********************************************************************************************************************\n * State\n * ******************************************************************************************************************/\n\n const [error, setError] = useAutoUpdateState<Props['error']>(initError);\n const [errorHelperText, setErrorHelperText] = useState<Props['helperText']>();\n const [initialized, setInitialized] = useState(false);\n const [disabled, setDisabled] = useAutoUpdateState<Props['disabled']>(\n initDisabled == null ? formDisabled : initDisabled\n );\n const [hidden, setHidden] = useAutoUpdateState<Props['hidden']>(initHidden);\n const [data, setData] = useAutoUpdateState<Props['data']>(initData);\n\n /********************************************************************************************************************\n * Function - focus\n * ******************************************************************************************************************/\n\n const focus = useCallback(\n function () {\n editorRef.current?.focus();\n },\n [editorRef]\n );\n\n /********************************************************************************************************************\n * Function - setErrorErrorHelperText\n * ******************************************************************************************************************/\n\n const setErrorErrorHelperText = useCallback(\n function (error: Props['error'], errorHelperText: Props['helperText']) {\n setError(error);\n setErrorHelperText(errorHelperText);\n },\n [setError]\n );\n\n /********************************************************************************************************************\n * Function - validate\n * ******************************************************************************************************************/\n\n const validate = useCallback(\n function (value: FormTextEditorValue) {\n if (required && empty(editorRef.current?.getContent())) {\n setErrorErrorHelperText(true, '필수 입력 항목입니다.');\n return false;\n }\n\n if (onValidate) {\n const onValidateResult = onValidate(value);\n if (onValidateResult != null && onValidateResult !== true) {\n setErrorErrorHelperText(true, onValidateResult);\n return false;\n }\n }\n\n setErrorErrorHelperText(false, undefined);\n\n return true;\n },\n [required, onValidate, setErrorErrorHelperText]\n );\n\n /********************************************************************************************************************\n * Commands\n * ******************************************************************************************************************/\n\n useLayoutEffect(() => {\n let lastValue = value;\n let lastData = data;\n let lastDisabled = !!disabled;\n let lastHidden = !!hidden;\n\n const commands: FormTextEditorCommands = {\n getType: () => 'FormTextEditor',\n getName: () => name,\n getReset: () => initValue || '',\n reset: () => {\n lastValue = initValue || '';\n setValue(lastValue);\n },\n getValue: () => lastValue,\n setValue: (value) => {\n lastValue = value;\n setValue(lastValue);\n },\n getData: () => lastData,\n setData: (data) => {\n lastData = data;\n setData(data);\n },\n isExceptValue: () => !!exceptValue,\n isDisabled: () => lastDisabled,\n setDisabled: (disabled: boolean) => {\n lastDisabled = disabled;\n setDisabled(disabled);\n },\n isHidden: () => lastHidden,\n setHidden: (hidden) => {\n lastHidden = hidden;\n setHidden(hidden);\n },\n focus,\n focusValidate: focus,\n validate: () => validate(value),\n setError: (error: Props['error'], errorText: Props['helperText']) =>\n setErrorErrorHelperText(error, error ? errorText : undefined),\n };\n\n onAddValueItem(id, commands);\n\n if (ref) {\n if (typeof ref === 'function') {\n ref(commands);\n } else {\n ref.current = commands;\n }\n }\n\n return () => {\n onRemoveValueItem(id);\n\n if (ref) {\n if (typeof ref === 'function') {\n ref(null);\n } else {\n ref.current = null;\n }\n }\n };\n }, [\n name,\n initValue,\n value,\n exceptValue,\n disabled,\n focus,\n ref,\n onAddValueItem,\n onRemoveValueItem,\n id,\n setValue,\n setDisabled,\n setErrorErrorHelperText,\n data,\n setData,\n validate,\n hidden,\n setHidden,\n ]);\n\n /********************************************************************************************************************\n * Event Handler\n * ******************************************************************************************************************/\n\n const handleEditorChange = useCallback(\n (value: string) => {\n setValue(value);\n if (new Date().getTime() - keyDownTime.current < 300) {\n nextTick(() => {\n if (onValueChangeByUser) onValueChangeByUser(name, value);\n });\n }\n },\n [name, onValueChangeByUser, setValue]\n );\n\n const handleKeyDown = useCallback(() => {\n keyDownTime.current = new Date().getTime();\n }, []);\n\n const handleImageUpload = useCallback(\n (blobInfo: BlobInfo, progress: (percent: number) => void) => {\n return new Promise<string>((resolve, reject) => {\n if (onImageUpload) {\n onImageUpload(\n blobInfo.blob(),\n (url) => {\n resolve(url);\n },\n (err) => reject(err),\n progress\n );\n } else {\n reject('onImageUpload not implemented.');\n }\n });\n },\n [onImageUpload]\n );\n\n /********************************************************************************************************************\n * Render\n * ******************************************************************************************************************/\n\n return (\n <FormItemBase\n variant={variant}\n size={size}\n color={color}\n focused={focused}\n className={classNames(className, 'FormValueItem', 'FormTextEditor', !initialized && 'initializing')}\n labelIcon={labelIcon}\n label={label}\n error={error}\n required={required}\n fullWidth={true}\n helperText={error ? errorHelperText : helperText}\n helperTextProps={{ style: { marginLeft: 5 } }}\n style={{ width: '100%' }}\n hidden={hidden}\n controlHeight={height}\n control={\n <>\n {!initialized ? <Skeleton variant='rectangular' width='100%' height={height} /> : null}\n <Editor\n apiKey={apiKey}\n value={value}\n disabled={readOnly || disabled}\n init={{\n height,\n menubar,\n readonly: true,\n language: 'ko_KR',\n contextmenu: false,\n content_style:\n 'body {font-size: 0.875rem; font-weight: 400; line-height: 1.5; color: hsl(0,0%,20%);} p {padding:0; margin:0}',\n plugins: [\n 'lists',\n 'advlist',\n 'image',\n 'autolink',\n 'link',\n 'charmap',\n 'preview',\n 'anchor',\n 'searchreplace',\n 'visualblocks',\n 'code',\n 'insertdatetime',\n 'media',\n 'table',\n 'wordcount',\n ],\n toolbar:\n toolbar ||\n 'undo redo | \\\n formatselect bullist numlist outdent indent | \\\n bold italic | align | forecolor backcolor | \\\n link image media | advtable | code',\n images_upload_handler: handleImageUpload,\n }}\n onInit={(evt, editor) => {\n editorRef.current = editor;\n setTimeout(() => setInitialized(true), 10);\n }}\n onEditorChange={handleEditorChange}\n onKeyDown={handleKeyDown}\n onFocus={() => setFocused(initFocused || true)}\n onBlur={() => setFocused(initFocused || false)}\n />\n </>\n }\n />\n );\n }\n);\n\nFormTextEditor.displayName = 'FormTextEditor';\nFormTextEditor.defaultProps = FormTextEditorDefaultProps;\n\nexport default FormTextEditor;\n","import React, { ReactNode } from 'react';\nimport { CommonSxProps, FormMultipleValueItemCommands } from '../../@types';\nimport {\n FormArrayValueItemCommands,\n FormItemsValueItemCommands,\n FormLoadingValueItemCommands,\n FormValueItemBaseCommands,\n FormValueItemProps,\n} from '../../@types';\nimport { FormTextFieldProps } from '../../FormItemTextFieldBase';\n\nexport type FormAutocompleteSingleValue = string | number | boolean;\n\nexport interface FormAutocompleteItem<T extends FormAutocompleteSingleValue> {\n label: ReactNode;\n value: T;\n disabled?: boolean;\n [key: string]: any;\n}\n\nexport type FormAutocompleteItems<T extends FormAutocompleteSingleValue> = FormAutocompleteItem<T>[];\n\nexport type FormAutocompleteValue<T extends FormAutocompleteSingleValue, Multiple extends boolean | undefined> =\n | ([Multiple] extends [true] ? T[] : T)\n | undefined;\n\nexport type FormAutocompleteComponentValue<\n T extends FormAutocompleteSingleValue,\n Multiple extends boolean | undefined,\n> = ([Multiple] extends [true] ? FormAutocompleteItem<T>[] : FormAutocompleteItem<T>) | null;\n\nexport interface FormAutocompleteProps<\n T extends FormAutocompleteSingleValue,\n Multiple extends boolean | undefined = undefined,\n> extends CommonSxProps,\n Omit<FormValueItemProps<FormAutocompleteValue<T, Multiple>>, 'value'>,\n Pick<FormTextFieldProps<T>, 'required' | 'focused' | 'labelShrink'> {\n value?: FormAutocompleteValue<T, Multiple>;\n items?: FormAutocompleteItems<T>;\n multiple?: Multiple;\n formValueSeparator?: string;\n formValueSort?: boolean;\n loading?: boolean;\n loadingText?: React.ReactNode;\n placeholder?: string;\n disablePortal?: boolean;\n noOptionsText?: string;\n limitTags?: number;\n openOnFocus?: boolean;\n disableClearable?: boolean;\n async?: boolean;\n onLoadItems?: (inputValue?: string) => Promise<FormAutocompleteItems<T>>;\n onAsyncLoadValueItem?: (\n value: FormAutocompleteValue<T, Multiple>\n ) => Promise<FormAutocompleteComponentValue<T, Multiple>>;\n onRenderItem?: (item: FormAutocompleteItem<T>) => ReactNode;\n onRenderTag?: (item: FormAutocompleteItem<T>) => ReactNode;\n onValue?: (value: FormAutocompleteValue<T, Multiple>) => FormAutocompleteValue<T, Multiple>;\n onAddItem?: (item: FormAutocompleteItem<T>) => boolean | Promise<boolean>;\n getOptionDisabled?: (item: FormAutocompleteItem<T>) => boolean;\n}\n\nexport const FormAutocompleteDefaultProps: Pick<FormAutocompleteProps<any>, 'formValueSeparator' | 'noOptionsText'> = {\n formValueSeparator: ',',\n noOptionsText: '항목이 없습니다',\n};\n\nexport interface FormAutocompleteCommands<\n T extends FormAutocompleteSingleValue,\n Multiple extends boolean | undefined = undefined,\n> extends FormValueItemBaseCommands<FormAutocompleteValue<T, Multiple>, true>,\n FormArrayValueItemCommands,\n FormItemsValueItemCommands<FormAutocompleteItem<T>>,\n FormMultipleValueItemCommands,\n FormLoadingValueItemCommands {}\n","import React, { useEffect, useState, useCallback, useId, ReactNode, useLayoutEffect, useRef, useMemo } from 'react';\nimport classNames from 'classnames';\nimport { Autocomplete, Chip, AutocompleteChangeReason, AutocompleteChangeDetails } from '@mui/material';\nimport { useAutoUpdateState, useFirstSkipEffect } from '@pdg/react-hook';\nimport { empty, nextTick, notEmpty, isSame, ToForwardRefExoticComponent, AutoTypeForwardRef } from '../../@util';\nimport {\n FormAutocompleteProps,\n FormAutocompleteDefaultProps,\n FormAutocompleteCommands,\n FormAutocompleteItem,\n FormAutocompleteComponentValue,\n FormAutocompleteItems,\n FormAutocompleteSingleValue,\n} from './FormAutocomplete.types';\nimport { useFormState } from '../../FormContext';\nimport { FormTextField, FormTextFieldCommands } from '../../FormItemTextFieldBase';\nimport CircularProgress from '@mui/material/CircularProgress';\n\nconst FormAutocomplete = ToForwardRefExoticComponent(\n AutoTypeForwardRef(function <T extends FormAutocompleteSingleValue, Multiple extends boolean | undefined>(\n {\n variant: initVariant,\n size: initSize,\n color: initColor,\n focused: initFocused,\n labelShrink: initLabelShrink,\n fullWidth: initFullWidth,\n //----------------------------------------------------------------------------------------------------------------\n name,\n labelIcon,\n label,\n loading: initLoading,\n items: initItems,\n value: initValue,\n data: initData,\n error: initError,\n helperText,\n disabled: initDisabled,\n readOnly,\n required,\n exceptValue,\n width,\n placeholder,\n multiple,\n formValueSeparator,\n formValueSort,\n disablePortal,\n noOptionsText,\n loadingText,\n limitTags,\n openOnFocus,\n disableClearable,\n async,\n hidden: initHidden,\n onLoadItems,\n onAsyncLoadValueItem,\n onRenderItem,\n onRenderTag,\n onAddItem,\n getOptionDisabled,\n //----------------------------------------------------------------------------------------------------------------\n onChange,\n onValue,\n onValidate,\n //----------------------------------------------------------------------------------------------------------------\n className,\n style: initStyle,\n sx,\n }: FormAutocompleteProps<T, Multiple>,\n ref: React.ForwardedRef<FormAutocompleteCommands<T, Multiple>>\n ) {\n /********************************************************************************************************************\n * type\n * ******************************************************************************************************************/\n\n type Props = FormAutocompleteProps<T, Multiple>;\n type Commands = FormAutocompleteCommands<T, Multiple>;\n type ComponentValue = FormAutocompleteComponentValue<T, Multiple>;\n\n /********************************************************************************************************************\n * ID\n * ******************************************************************************************************************/\n\n const id = useId();\n\n /********************************************************************************************************************\n * Ref\n * ******************************************************************************************************************/\n\n const textFieldRef = useRef<FormTextFieldCommands>(null);\n const asyncTimerRef = useRef<NodeJS.Timeout | null>(null);\n const oldComponentValueRef = useRef<ComponentValue>(null);\n\n /********************************************************************************************************************\n * FormState\n * ******************************************************************************************************************/\n\n const {\n variant: formVariant,\n size: formSize,\n color: formColor,\n focused: formFocused,\n labelShrink: formLabelShrink,\n fullWidth: formFullWidth,\n disabled: formDisabled,\n onAddValueItem,\n onRemoveValueItem,\n onValueChange,\n onValueChangeByUser,\n onRequestSearchSubmit,\n } = useFormState();\n\n /********************************************************************************************************************\n * Memo - FormState\n * ******************************************************************************************************************/\n\n const variant = useMemo(() => (initVariant == null ? formVariant : initVariant), [initVariant, formVariant]);\n const size = useMemo(() => (initSize == null ? formSize : initSize), [initSize, formSize]);\n const color = useMemo(() => (initColor == null ? formColor : initColor), [initColor, formColor]);\n const focused = useMemo(() => (initFocused == null ? formFocused : initFocused), [initFocused, formFocused]);\n const labelShrink = useMemo(\n () => (initLabelShrink == null ? formLabelShrink : initLabelShrink),\n [initLabelShrink, formLabelShrink]\n );\n const fullWidth = useMemo(\n () => (initFullWidth == null ? formFullWidth : initFullWidth),\n [initFullWidth, formFullWidth]\n );\n\n /********************************************************************************************************************\n * State\n * ******************************************************************************************************************/\n\n const [isOnGetItemLoading, setIsOnGetItemLoading] = useState<boolean>(false);\n\n const [items, setItems] = useAutoUpdateState<Props['items']>(initItems);\n const [error, setError] = useAutoUpdateState<Props['error']>(initError);\n const [errorHelperText, setErrorHelperText] = useState<Props['helperText']>();\n\n const [loading, setLoading] = useAutoUpdateState<Props['loading']>(initLoading);\n const [disabled, setDisabled] = useAutoUpdateState<Props['disabled']>(\n initDisabled == null ? formDisabled : initDisabled\n );\n const [hidden, setHidden] = useAutoUpdateState<Props['hidden']>(initHidden);\n const [inputValue, setInputValue] = useState<string | undefined>(undefined);\n const [data, setData] = useAutoUpdateState<Props['data']>(initData);\n\n /********************************************************************************************************************\n * Memo\n * ******************************************************************************************************************/\n\n const itemsValues = useMemo(() => {\n if (items) {\n return items.reduce<Record<string, any>>((res, { value }) => {\n res[value.toString()] = value;\n return res;\n }, {});\n } else {\n return {};\n }\n }, [items]);\n\n const style = useMemo(() => {\n const style: Props['style'] = {\n minWidth: 120,\n ...initStyle,\n };\n if (hidden) {\n style.display = 'none';\n }\n if (width != null) {\n style.width = width;\n }\n return style;\n }, [initStyle, width, hidden]);\n\n /********************************************************************************************************************\n * Function - getFinalValue\n * ******************************************************************************************************************/\n\n const getFinalValue = useCallback(\n (value: any): Props['value'] => {\n let finalValue = value;\n if (multiple) {\n if (!Array.isArray(finalValue)) {\n if (finalValue != null && notEmpty(finalValue)) {\n if (typeof finalValue === 'string') {\n finalValue = Array.from(new Set(finalValue.split(formValueSeparator || ',')));\n } else {\n finalValue = [finalValue];\n }\n } else {\n finalValue = [];\n }\n }\n } else {\n if (Array.isArray(finalValue)) {\n if (notEmpty(finalValue)) {\n finalValue = finalValue[0];\n } else {\n finalValue = undefined;\n }\n }\n }\n\n if (notEmpty(itemsValues)) {\n if (finalValue != null && notEmpty(finalValue)) {\n if (multiple) {\n if (Array.isArray(finalValue)) {\n finalValue = finalValue.map((v) => {\n const realValue = itemsValues[v.toString()];\n return realValue != null ? realValue : v;\n });\n }\n } else {\n const realValue = itemsValues[finalValue.toString()];\n if (realValue != null && finalValue !== realValue) {\n finalValue = realValue;\n }\n }\n }\n }\n\n return onValue ? onValue(finalValue) : finalValue;\n },\n [multiple, formValueSeparator, itemsValues, onValue]\n );\n\n /********************************************************************************************************************\n * State - value\n * ******************************************************************************************************************/\n\n const [value, setValue] = useAutoUpdateState<Props['value']>(initValue, getFinalValue);\n const [valueItem, setValueItem] = useState<ComponentValue>(null);\n\n const componentValue = useMemo(() => {\n let finalValue: Props['value'] = value;\n if (finalValue != null) {\n if (multiple) {\n if (!Array.isArray(finalValue)) {\n finalValue = [finalValue] as unknown as Props['value'];\n }\n } else {\n if (Array.isArray(finalValue)) {\n finalValue = finalValue[0] as Props['value'];\n }\n }\n } else {\n finalValue = (multiple ? [] : undefined) as Props['value'];\n }\n\n let newComponentValue: ComponentValue = (multiple ? [] : null) as ComponentValue;\n\n if (notEmpty(finalValue)) {\n if (items) {\n if (Array.isArray(finalValue)) {\n newComponentValue = items.filter(\n (info) => Array.isArray(finalValue) && finalValue.includes(info.value)\n ) as ComponentValue;\n } else {\n newComponentValue = (items.find((info) => info.value === value) ||\n (multiple ? [] : null)) as ComponentValue;\n }\n }\n if (empty(newComponentValue) && valueItem) {\n if (Array.isArray(finalValue)) {\n if (Array.isArray(valueItem)) {\n newComponentValue = valueItem.filter(\n (info) => Array.isArray(finalValue) && finalValue.includes(info.value)\n ) as ComponentValue;\n }\n } else {\n if (!Array.isArray(valueItem) && finalValue === valueItem.value) {\n newComponentValue = valueItem;\n }\n }\n }\n }\n\n if (\n oldComponentValueRef.current &&\n newComponentValue &&\n isSame(oldComponentValueRef.current, newComponentValue)\n ) {\n return oldComponentValueRef.current;\n } else {\n oldComponentValueRef.current = newComponentValue;\n return newComponentValue;\n }\n }, [value, multiple, items, valueItem]);\n\n useEffect(() => {\n if (async && onAsyncLoadValueItem) {\n if (value != null) {\n if (!valueItem) {\n onAsyncLoadValueItem(value).then((valueItem) => {\n setValueItem(valueItem);\n if (valueItem) {\n if (Array.isArray(valueItem)) {\n setItems(valueItem);\n } else {\n setItems([valueItem]);\n }\n }\n });\n }\n } else {\n setValueItem(null);\n }\n }\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [async, value, valueItem]);\n\n /********************************************************************************************************************\n * Function\n * ******************************************************************************************************************/\n\n const showOnGetItemLoading = useCallback(() => {\n setIsOnGetItemLoading(true);\n }, []);\n\n const hideOnGetItemLoading = useCallback(() => {\n setIsOnGetItemLoading(false);\n }, []);\n\n /********************************************************************************************************************\n * Effect\n * ******************************************************************************************************************/\n\n useEffect(() => {\n if (value !== initValue) {\n if (onChange) onChange(value);\n onValueChange(name, value);\n }\n\n if (!async && onLoadItems) {\n showOnGetItemLoading();\n onLoadItems().then((items) => {\n setItems(items);\n hideOnGetItemLoading();\n });\n }\n\n return () => {\n if (asyncTimerRef.current) {\n clearTimeout(asyncTimerRef.current);\n asyncTimerRef.current = null;\n }\n };\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, []);\n\n useFirstSkipEffect(() => {\n if (error) validate(value);\n if (onChange) onChange(value);\n onValueChange(name, value);\n }, [value]);\n\n useEffect(() => {\n if (async && onLoadItems) {\n if (asyncTimerRef.current) {\n clearTimeout(asyncTimerRef.current);\n asyncTimerRef.current = null;\n }\n\n if (inputValue != null) {\n showOnGetItemLoading();\n\n asyncTimerRef.current = setTimeout(() => {\n asyncTimerRef.current = null;\n\n onLoadItems(inputValue)\n .then((items) => {\n if (componentValue) {\n if (Array.isArray(componentValue)) {\n const exceptValues = componentValue.map((info) => info.value);\n setItems([...componentValue, ...items.filter((info) => !exceptValues.includes(info.value))]);\n } else {\n const exceptValue = componentValue.value;\n setItems([componentValue, ...items.filter((info) => info.value !== exceptValue)]);\n }\n } else {\n setItems(items);\n }\n })\n .finally(() => {\n hideOnGetItemLoading();\n });\n }, 300);\n } else {\n if (Array.isArray(componentValue)) {\n setItems(componentValue);\n } else {\n if (componentValue) {\n setItems([componentValue]);\n } else {\n setItems([]);\n }\n }\n hideOnGetItemLoading();\n }\n }\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [async, inputValue]);\n\n /********************************************************************************************************************\n * Function - focus\n * ******************************************************************************************************************/\n\n const focus = useCallback(() => {\n textFieldRef.current?.focus();\n }, [textFieldRef]);\n\n /********************************************************************************************************************\n * Function - setErrorErrorHelperText\n * ******************************************************************************************************************/\n\n const setErrorErrorHelperText = useCallback(\n (error: boolean, errorHelperText: ReactNode) => {\n setError(error);\n setErrorHelperText(errorHelperText);\n },\n [setError]\n );\n\n /********************************************************************************************************************\n * Function - validate\n * ******************************************************************************************************************/\n\n const validate = useCallback(\n (value: Props['value']) => {\n if (required && empty(value)) {\n setErrorErrorHelperText(true, '필수 선택 항목입니다.');\n return false;\n }\n if (onValidate) {\n const onValidateResult = onValidate(value);\n if (onValidateResult != null && onValidateResult !== true) {\n setErrorErrorHelperText(true, onValidateResult);\n return false;\n }\n }\n\n setErrorErrorHelperText(false, undefined);\n\n return true;\n },\n [required, onValidate, setErrorErrorHelperText]\n );\n\n /********************************************************************************************************************\n * Commands\n * ******************************************************************************************************************/\n\n useLayoutEffect(() => {\n if (ref || onAddValueItem) {\n let lastValue = value;\n let lastData = data;\n let lastItems = items;\n let lastLoading = loading;\n let lastDisabled = !!disabled;\n let lastHidden = !!hidden;\n\n const commands: Commands = {\n getType: () => 'FormAutocomplete',\n getName: () => name,\n getReset: () => getFinalValue(initValue),\n reset: () => {\n lastValue = getFinalValue(initValue);\n setValue(lastValue);\n },\n getValue: () => lastValue,\n setValue: (value) => {\n lastValue = getFinalValue(value);\n setValue(lastValue);\n },\n getData: () => lastData,\n setData: (data) => {\n lastData = data;\n setData(data);\n },\n isExceptValue: () => !!exceptValue,\n isDisabled: () => lastDisabled,\n setDisabled: (disabled) => {\n lastDisabled = disabled;\n setDisabled(disabled);\n },\n isHidden: () => lastHidden,\n setHidden: (hidden) => {\n lastHidden = hidden;\n setHidden(hidden);\n },\n focus,\n focusValidate: focus,\n validate: () => validate(value),\n setError: (error: boolean, errorText: ReactNode | undefined) =>\n setErrorErrorHelperText(error, error ? errorText : undefined),\n getFormValueSeparator: () => formValueSeparator,\n isFormValueSort: () => !!formValueSort,\n getItems: () => lastItems,\n setItems: (items) => {\n lastItems = items;\n setItems(lastItems);\n },\n isMultiple: () => !!multiple,\n getLoading: () => !!lastLoading,\n setLoading: (loading) => {\n lastLoading = loading;\n setLoading(lastLoading);\n },\n };\n\n if (ref) {\n if (typeof ref === 'function') {\n ref(commands);\n } else {\n ref.current = commands;\n }\n }\n\n if (onAddValueItem) onAddValueItem(id, commands);\n\n return () => {\n if (ref) {\n if (typeof ref === 'function') {\n ref(null);\n } else {\n ref.current = null;\n }\n }\n\n if (onRemoveValueItem) onRemoveValueItem(id);\n };\n }\n }, [\n name,\n initValue,\n value,\n getFinalValue,\n exceptValue,\n disabled,\n multiple,\n focus,\n validate,\n formValueSeparator,\n formValueSort,\n items,\n ref,\n onAddValueItem,\n onRemoveValueItem,\n loading,\n id,\n setValue,\n setDisabled,\n setErrorErrorHelperText,\n setItems,\n setLoading,\n data,\n setData,\n hidden,\n setHidden,\n ]);\n\n /********************************************************************************************************************\n * Event Handler\n * ******************************************************************************************************************/\n\n const handleChange = useCallback(\n (\n componentValue: ComponentValue,\n reason: AutocompleteChangeReason,\n details?: AutocompleteChangeDetails<FormAutocompleteItem<T>>\n ) => {\n const go = () => {\n let newValue: Props['value'] = undefined;\n\n if (componentValue) {\n if (componentValue) {\n if (Array.isArray(componentValue)) {\n newValue = componentValue.map((item) => item.value) as Props['value'];\n } else {\n newValue = componentValue.value as Props['value'];\n }\n }\n }\n\n const finalValue = getFinalValue(newValue);\n if (!isSame(value, finalValue)) {\n setValue(finalValue);\n setValueItem(componentValue);\n nextTick(() => {\n onValueChangeByUser(name, finalValue);\n onRequestSearchSubmit(name, finalValue);\n });\n }\n };\n\n if (multiple && details && ['createOption', 'selectOption'].includes(reason)) {\n if (onAddItem) {\n const result = onAddItem(details.option);\n if (result instanceof Promise) {\n result.then((add) => {\n if (add) go();\n });\n } else if (result) {\n go();\n }\n } else {\n go();\n }\n } else {\n go();\n }\n },\n [multiple, getFinalValue, value, setValue, onValueChangeByUser, name, onRequestSearchSubmit, onAddItem]\n );\n\n const handleGetOptionDisabled = useCallback(\n (option: FormAutocompleteItem<T>) => {\n if (getOptionDisabled) {\n return option.disabled || getOptionDisabled(option);\n } else {\n return !!option.disabled;\n }\n },\n [getOptionDisabled]\n );\n\n /********************************************************************************************************************\n * Render\n * ******************************************************************************************************************/\n\n return (\n <Autocomplete\n options={items || []}\n className={classNames(className, 'FormValueItem', 'FormAutocomplete')}\n sx={sx}\n multiple={multiple}\n fullWidth={!width && fullWidth}\n openOnFocus={openOnFocus}\n disableClearable={disableClearable}\n disablePortal={disablePortal}\n noOptionsText={noOptionsText}\n value={componentValue as any}\n style={style}\n isOptionEqualToValue={(option, value) => option.value === value.value}\n getOptionDisabled={handleGetOptionDisabled}\n disabled={disabled}\n readOnly={readOnly}\n loading={loading || isOnGetItemLoading}\n loadingText={loadingText}\n limitTags={limitTags}\n onChange={(e, value, reason, details) => handleChange(value as any, reason, details)}\n renderOption={(props, option) => (\n <li {...props} key={`${option.value}`}>\n {onRenderItem ? onRenderItem(option) : option.label}\n </li>\n )}\n onInputChange={(event, newInputValue, reason) => {\n if (reason === 'input') {\n setInputValue(newInputValue);\n } else if (reason === 'reset') {\n setInputValue(undefined);\n }\n }}\n renderTags={(value: FormAutocompleteItems<T>, getTagProps) =>\n value.map((option, index) => (\n <Chip size='small' label={onRenderTag ? onRenderTag(option) : option.label} {...getTagProps({ index })} />\n ))\n }\n renderInput={(params) => (\n <FormTextField\n {...params}\n ref={textFieldRef}\n name={name}\n variant={variant}\n size={size}\n color={color}\n labelIcon={labelIcon}\n label={label}\n labelShrink={labelShrink}\n required={required}\n focused={focused}\n error={error}\n readOnly={readOnly}\n helperText={error ? errorHelperText : helperText}\n placeholder={placeholder}\n noFormValueItem\n InputProps={{\n ...params.InputProps,\n endAdornment: (\n <React.Fragment>\n {loading || isOnGetItemLoading ? <CircularProgress color='inherit' size={20} /> : null}\n {params.InputProps.endAdornment}\n </React.Fragment>\n ),\n }}\n inputProps={readOnly || disabled ? { ...params.inputProps, tabIndex: -1 } : params.inputProps}\n />\n )}\n />\n );\n })\n);\n\nFormAutocomplete.displayName = 'FormAutocomplete';\nFormAutocomplete.defaultProps = FormAutocompleteDefaultProps;\n\nexport default FormAutocomplete;\n","import { PrivateDatePickerValue, PrivateDatePickerProps, PrivateDatePickerCommands } from '../../@private';\n\nexport type FormDatePickerValue = PrivateDatePickerValue;\n\nexport interface FormDatePickerProps\n extends Omit<\n PrivateDatePickerProps,\n 'type' | 'time' | 'hours' | 'minutes' | 'seconds' | 'minuteInterval' | 'secondInterval'\n > {}\n\nexport const FormDatePickerDefaultProps = {};\n\nexport interface FormDatePickerCommands extends PrivateDatePickerCommands {}\n","import { ReactNode } from 'react';\nimport { DesktopDatePickerProps } from '@mui/x-date-pickers';\nimport {\n CommonSxProps,\n FormDateType,\n FormDateValueItemCommands,\n FormTimeType,\n FormValueItemBaseCommands,\n FormValueItemProps,\n} from '../../@types';\nimport { Dayjs } from 'dayjs';\n\nexport type PrivateDatePickerValue = Dayjs | null;\n\nexport interface PrivateDatePickerProps\n extends CommonSxProps,\n Partial<\n Omit<\n DesktopDatePickerProps<Dayjs>,\n 'children' | 'name' | 'className' | 'style' | 'sx' | 'value' | 'inputFormat' | 'views' | 'onChange'\n >\n >,\n FormValueItemProps<PrivateDatePickerValue, false> {\n type: FormDateType;\n time?: FormTimeType;\n hours?: number[];\n minutes?: number[];\n seconds?: number[];\n minuteInterval?: number;\n secondInterval?: number;\n required?: boolean;\n labelShrink?: boolean;\n format?: string;\n formValueFormat?: string;\n icon?: string;\n startAdornment?: ReactNode;\n endAdornment?: ReactNode;\n align?: 'left' | 'center' | 'right';\n readOnlyInput?: boolean;\n hidden?: boolean;\n}\n\nexport const PrivateDatePickerDefaultProps: Pick<\n PrivateDatePickerProps,\n 'showDaysOutsideCurrentMonth' | 'align' | 'value'\n> = {\n showDaysOutsideCurrentMonth: true,\n align: 'center',\n value: null,\n};\n\nexport interface PrivateDatePickerCommands\n extends FormValueItemBaseCommands<PrivateDatePickerValue, false>,\n FormDateValueItemCommands {}\n","import { StaticDatePickerProps } from '@mui/x-date-pickers';\nimport { Dayjs } from 'dayjs';\nimport { FormAvailableDate } from '../@types';\nimport { FormDateType, FormTimeType } from '../../@types';\n\nexport type PrivateStaticDatePickerUnit = 'date' | 'action_date' | 'hour' | 'minute' | 'second';\n\nexport interface PrivateStaticDatePickerProps\n extends Omit<StaticDatePickerProps<Dayjs>, 'displayStaticWrapperAs' | 'renderInput' | 'onChange'> {\n type: FormDateType;\n time?: FormTimeType;\n availableDate?: FormAvailableDate;\n hours?: number[];\n minutes?: number[];\n seconds?: number[];\n minuteInterval?: number;\n secondInterval?: number;\n onChange(unit: PrivateStaticDatePickerUnit, newValue: Dayjs | null): void;\n onClose?(): void;\n}\n\nexport const PrivateStaticDatePickerDefaultProps = {};\n\nexport interface PrivateStaticDatePickerCommands {}\n","import { FormAvailableDate } from '../@types';\n\nexport interface PrivateYearSelectProps {\n selectYear: number | null;\n activeYear: number;\n availableDate: FormAvailableDate;\n onSelect(year: number): void;\n}\n\nexport const PrivateYearSelectDefaultProps = {};\n","import { ButtonProps } from '@mui/material';\n\nexport interface PrivateToggleButtonProps extends Omit<ButtonProps, 'variant' | 'type' | 'sx'> {\n selected?: boolean;\n activated?: boolean;\n outlined?: boolean;\n}\n\nexport const PrivateToggleButtonDefaultProps = {};\n","import React, { useMemo } from 'react';\nimport classNames from 'classnames';\nimport { PrivateToggleButtonProps as Props, PrivateToggleButtonDefaultProps } from './PrivateToggleButton.types';\nimport { Button, useTheme, darken } from '@mui/material';\nimport { CommonSxProps } from '../../@types';\n\nconst PrivateToggleButton = React.forwardRef<HTMLButtonElement, Props>(\n ({ children, className: initClassName, selected, activated, outlined, ...props }, ref) => {\n const theme = useTheme();\n\n const className = useMemo(\n () => classNames(initClassName, selected && 'selected', activated && 'activated', outlined && 'outlined'),\n [activated, initClassName, outlined, selected]\n );\n\n const sx = useMemo(() => {\n const newSx: CommonSxProps['sx'] = {\n color: 'inherit',\n ':hover': {\n backgroundColor: darken('#fff', 0.1),\n },\n };\n\n if (selected) {\n newSx.backgroundColor = theme.palette.primary.main;\n newSx.color = theme.palette.primary.contrastText;\n newSx[':hover'] = { backgroundColor: darken(theme.palette.primary.main, 0.2) };\n } else {\n if (activated) {\n newSx.backgroundColor = '#f5f5f5';\n }\n if (outlined) {\n newSx.border = '1px solid rgba(0, 0, 0, 0.1)';\n }\n }\n return newSx;\n }, [activated, outlined, selected, theme]);\n\n return (\n <Button {...props} ref={ref} sx={sx} variant='text' className={classNames(className, selected && 'selected')}>\n {children}\n </Button>\n );\n }\n);\n\nPrivateToggleButton.displayName = 'PrivateToggleButton';\nPrivateToggleButton.defaultProps = PrivateToggleButtonDefaultProps;\n\nexport default PrivateToggleButton;\n","import React, { useEffect, useRef } from 'react';\nimport { PrivateYearSelectProps as Props, PrivateYearSelectDefaultProps } from './PrivateYearSelect.types';\nimport { Grid } from '@mui/material';\nimport dayjs from 'dayjs';\nimport './PrivateYearSelect.scss';\nimport PrivateToggleButton from '../PrivateToggleButton';\nimport SimpleBar from 'simplebar-react';\n\nconst YEARS = new Array(200).fill(0);\nfor (let i = 0; i < 200; i += 1) {\n YEARS[i] = 1900 + i;\n}\n\nconst PrivateYearSelect: React.FC<Props> = ({ selectYear, activeYear, availableDate, onSelect }) => {\n /********************************************************************************************************************\n * Ref\n * ******************************************************************************************************************/\n\n const containerRef = useRef<HTMLDivElement>(null);\n const simpleBarRef = useRef<HTMLDivElement>(null);\n\n /********************************************************************************************************************\n * Effect\n * ******************************************************************************************************************/\n\n useEffect(() => {\n const activeEls = containerRef.current?.getElementsByClassName(`private-year-select-value-${activeYear}`);\n if (activeEls && activeEls.length > 0) {\n const activeEl = activeEls[0];\n\n const activeRect = activeEl.getBoundingClientRect();\n const containerRect = containerRef.current?.getBoundingClientRect();\n const simpleBarRect = simpleBarRef.current?.getBoundingClientRect();\n\n if (containerRect && simpleBarRect && activeRect) {\n const scrollTop = simpleBarRef.current?.scrollTop || 0;\n\n simpleBarRef.current?.scrollTo({\n left: 0,\n top: activeRect.top - containerRect.top - containerRect.height / 2 + activeRect.height / 2 + scrollTop,\n });\n }\n }\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, []);\n\n /********************************************************************************************************************\n * Render\n * ******************************************************************************************************************/\n\n const today = dayjs().startOf('date');\n\n return (\n <div ref={containerRef} className='PrivateYearSelect'>\n <SimpleBar scrollableNodeProps={{ ref: simpleBarRef }} style={{ height: '100%' }}>\n <Grid container style={{ padding: '5px 10px' }} spacing={1}>\n {YEARS.map((y) => {\n const isToday = y === today.year();\n const isActive = y === activeYear;\n const isSelected = y === selectYear;\n const disabled =\n (!!availableDate[0] && y < availableDate[0].year) || (!!availableDate[1] && y > availableDate[1].year);\n\n return (\n <Grid key={y} item xs={3}>\n <PrivateToggleButton\n className={`private-year-select-value-${y}`}\n fullWidth\n selected={isSelected}\n activated={isActive}\n outlined={isToday}\n disabled={disabled}\n onClick={() => onSelect(y)}\n >\n {y}\n </PrivateToggleButton>\n </Grid>\n );\n })}\n </Grid>\n </SimpleBar>\n </div>\n );\n};\n\nPrivateYearSelect.displayName = 'PrivateYearSelect';\nPrivateYearSelect.defaultProps = PrivateYearSelectDefaultProps;\n\nexport default PrivateYearSelect;\n","import { FormAvailableDate } from '../@types';\n\nexport interface PrivateMonthSelectProps {\n year: number;\n selectYear: number | null;\n selectMonth: number | null;\n activeMonth: number;\n availableDate: FormAvailableDate;\n onSelect(month: number): void;\n}\n\nexport const PrivateMonthSelectDefaultProps = {};\n","import React from 'react';\nimport { PrivateMonthSelectProps as Props, PrivateMonthSelectDefaultProps } from './PrivateMonthSelect.types';\nimport { Grid } from '@mui/material';\nimport dayjs from 'dayjs';\nimport PrivateToggleButton from '../PrivateToggleButton';\nimport './PrivateMonthSelect.scss';\n\nconst MONTHS = new Array(12).fill(0);\nfor (let i = 0; i < 12; i += 1) {\n MONTHS[i] = i;\n}\n\nconst PrivateMonthSelect: React.FC<Props> = ({\n year,\n selectYear,\n selectMonth,\n activeMonth,\n availableDate,\n onSelect,\n}) => {\n const today = dayjs().startOf('date');\n\n return (\n <div className='PrivateMonthSelect'>\n <Grid container style={{ padding: '5px 10px' }} spacing={1}>\n {MONTHS.map((m) => {\n const isToday = today.year() === year && m === today.month();\n const isActive = m === activeMonth;\n const isSelected = selectYear === year && m === selectMonth;\n const ym = year * 100 + (m + 1);\n const disabled =\n (!!availableDate[0] && ym < availableDate[0].month) || (!!availableDate[1] && ym > availableDate[1].month);\n\n return (\n <Grid key={m} item xs={4}>\n <PrivateToggleButton\n fullWidth\n selected={isSelected}\n activated={isActive}\n outlined={isToday}\n disabled={disabled}\n onClick={() => onSelect(m)}\n >\n {m + 1}월\n </PrivateToggleButton>\n </Grid>\n );\n })}\n </Grid>\n </div>\n );\n};\n\nPrivateMonthSelect.displayName = 'PrivateMonthSelect';\nPrivateMonthSelect.defaultProps = PrivateMonthSelectDefaultProps;\n\nexport default PrivateMonthSelect;\n","export interface PrivateTimeSelectProps {\n list: number[];\n listInterval?: number;\n unit: string;\n cols?: 1 | 2 | 3;\n disableList?: number[];\n value?: number | null;\n onSelect?(value: number): void;\n}\n\nexport const PrivateTimeSelectDefaultProps: Pick<PrivateTimeSelectProps, 'cols'> = {\n cols: 1,\n};\n\nexport interface PrivateTimeSelectCommands {\n scrollToValue(value: number): void;\n}\n","import React, { useCallback, useEffect, useLayoutEffect, useRef } from 'react';\nimport {\n PrivateTimeSelectProps as Props,\n PrivateTimeSelectDefaultProps,\n PrivateTimeSelectCommands,\n} from './PrivateTimeSelect.types';\nimport SimpleBar from 'simplebar-react';\nimport PrivateToggleButton from '../PrivateToggleButton';\nimport './PrivateTimeSelect.scss';\nimport { Grid } from '@mui/material';\n\nconst DEFAULT_MINUTES = new Array(60).fill(0);\nfor (let i = 0; i < DEFAULT_MINUTES.length; i += 1) {\n DEFAULT_MINUTES[i] = i;\n}\n\nconst PrivateTimeSelect = React.forwardRef<PrivateTimeSelectCommands, Props>(\n ({ list, listInterval, unit, value, cols, disableList, onSelect }, ref) => {\n /********************************************************************************************************************\n * Ref\n * ******************************************************************************************************************/\n\n const containerRef = useRef<HTMLDivElement>(null);\n const simpleBarRef = useRef<HTMLDivElement>(null);\n const scrollTimerRef = useRef<NodeJS.Timeout>();\n\n /********************************************************************************************************************\n * Function - scrollToValue\n * ******************************************************************************************************************/\n\n const scrollToValue = useCallback((value: number) => {\n const valueEls = containerRef.current?.getElementsByClassName(`private-time-select-value-${value}`);\n if (valueEls && valueEls.length > 0) {\n let lastSelectedTop = -1;\n let counter = 0;\n\n if (scrollTimerRef.current) {\n clearInterval(scrollTimerRef.current);\n scrollTimerRef.current = undefined;\n }\n\n const valueEl = valueEls[0];\n scrollTimerRef.current = setInterval(() => {\n const valueRect = valueEl.getBoundingClientRect();\n if (valueRect.top !== lastSelectedTop) {\n lastSelectedTop = valueRect.top;\n } else {\n counter += 1;\n if (counter === 5) {\n clearInterval(scrollTimerRef.current);\n scrollTimerRef.current = undefined;\n\n const containerRect = containerRef.current?.getBoundingClientRect();\n const simpleBarRect = simpleBarRef.current?.getBoundingClientRect();\n\n if (containerRect && simpleBarRect && valueRect) {\n const scrollTop = simpleBarRef.current?.scrollTop || 0;\n const valueTop = valueRect.top - containerRect.top + scrollTop;\n const valueBottom = valueTop + valueRect.height;\n const simpleBarVisibleTop = scrollTop;\n const simpleBarVisibleBottom = simpleBarVisibleTop + simpleBarRect.height;\n\n if (valueTop < simpleBarVisibleTop || valueBottom > simpleBarVisibleBottom) {\n simpleBarRef.current?.scrollTo({\n left: 0,\n top:\n valueRect.top - containerRect.top - containerRect.height / 2 + valueRect.height / 2 + scrollTop,\n });\n }\n }\n }\n }\n }, 10);\n }\n }, []);\n\n /********************************************************************************************************************\n * Effect\n * ******************************************************************************************************************/\n\n useEffect(() => {\n return () => {\n if (scrollTimerRef.current) {\n clearInterval(scrollTimerRef.current);\n scrollTimerRef.current = undefined;\n }\n };\n }, []);\n\n useEffect(() => {\n if (value != null) {\n scrollToValue(value);\n }\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, []);\n\n /********************************************************************************************************************\n * LayoutEffect\n * ******************************************************************************************************************/\n\n useLayoutEffect(() => {\n if (ref) {\n const commands: PrivateTimeSelectCommands = {\n scrollToValue,\n };\n\n if (typeof ref === 'function') {\n ref(commands);\n } else {\n ref.current = commands;\n }\n\n return () => {\n if (typeof ref === 'function') {\n ref(null);\n } else {\n ref.current = null;\n }\n };\n }\n }, [ref, scrollToValue]);\n\n /********************************************************************************************************************\n * Render\n * ******************************************************************************************************************/\n\n return (\n <>\n <div ref={containerRef} className='PrivateTimeSelect'>\n <SimpleBar scrollableNodeProps={{ ref: simpleBarRef }} style={{ height: '100%' }}>\n <Grid container>\n {list\n .filter((v) => (listInterval ? v % listInterval === 0 : true))\n .map((v) => {\n const isSelected = v === value;\n const disabled = !!disableList && disableList.includes(v);\n\n return (\n <Grid item key={v} xs={12 / (cols || 1)}>\n <PrivateToggleButton\n className={`private-time-select-value-${v}`}\n fullWidth\n disabled={disabled}\n selected={isSelected}\n onClick={() => onSelect && onSelect(v)}\n >\n {v}\n {unit}\n </PrivateToggleButton>\n </Grid>\n );\n })}\n </Grid>\n </SimpleBar>\n </div>\n </>\n );\n }\n);\n\nPrivateTimeSelect.displayName = 'PrivateTimeSelect';\nPrivateTimeSelect.defaultProps = PrivateTimeSelectDefaultProps;\n\nexport default PrivateTimeSelect;\n","import React, { useCallback, useEffect, useLayoutEffect, useMemo, useRef, useState } from 'react';\nimport classNames from 'classnames';\nimport {\n PrivateStaticDatePickerProps as Props,\n PrivateStaticDatePickerDefaultProps,\n PrivateStaticDatePickerCommands,\n} from './PrivateStaticDatePicker.types';\nimport { PickersDay, PickersDayProps, StaticDatePicker } from '@mui/x-date-pickers';\nimport { Button, Grid, Icon, IconButton, IconButtonProps } from '@mui/material';\nimport dayjs, { Dayjs } from 'dayjs';\nimport { PrivateYearSelect } from '../PrivateYearSelect';\nimport { PrivateMonthSelect } from '../PrivateMonthSelect';\nimport { PrivateTimeSelect, PrivateTimeSelectCommands } from '../PrivateTimeSelect';\nimport { checkDateAvailable, getAvailableDate, isDateAvailable, makeAvailableDate } from '../../@util';\nimport './PrivateStaticDatePicker.scss';\n\nconst DEFAULT_HOURS: number[] = new Array(24).fill(0);\nfor (let i = 0; i < DEFAULT_HOURS.length; i += 1) {\n DEFAULT_HOURS[i] = i;\n}\n\nconst DEFAULT_MINUTES = new Array(60).fill(0);\nfor (let i = 0; i < DEFAULT_MINUTES.length; i += 1) {\n DEFAULT_MINUTES[i] = i;\n}\n\nconst DEFAULT_SECONDS = new Array(60).fill(0);\nfor (let i = 0; i < DEFAULT_SECONDS.length; i += 1) {\n DEFAULT_SECONDS[i] = i;\n}\n\nconst PrivateStaticDatePicker = React.forwardRef<PrivateStaticDatePickerCommands, Props>(\n (\n {\n value,\n availableDate: initAvailableDate,\n defaultCalendarMonth,\n type,\n time,\n hours: initHours,\n minutes: initMinutes,\n seconds: initSeconds,\n minuteInterval,\n secondInterval,\n minDate,\n maxDate,\n disablePast,\n disableFuture,\n onChange,\n onMonthChange,\n onClose,\n ...props\n },\n ref\n ) => {\n /********************************************************************************************************************\n * Ref\n * ******************************************************************************************************************/\n\n const hourSelectRef = useRef<PrivateTimeSelectCommands>(null);\n const minuteSelectRef = useRef<PrivateTimeSelectCommands>(null);\n const secondSelectRef = useRef<PrivateTimeSelectCommands>(null);\n\n /********************************************************************************************************************\n * State\n * ******************************************************************************************************************/\n\n const [month, setMonth] = useState<Dayjs>(() => {\n if (value) return value;\n else if (defaultCalendarMonth) return defaultCalendarMonth;\n else return dayjs();\n });\n const [activeMonthValue, setActiveMonthValue] = useState<Dayjs | null>(null);\n const [yearSelectOpen, setYearSelectOpen] = useState(false);\n const [monthSelectOpen, setMonthSelectOpen] = useState(false);\n\n /********************************************************************************************************************\n * Memo\n * ******************************************************************************************************************/\n\n const hours = useMemo(() => initHours || DEFAULT_HOURS, [initHours]);\n const minutes = useMemo(() => initMinutes || DEFAULT_MINUTES, [initMinutes]);\n const seconds = useMemo(() => initSeconds || DEFAULT_SECONDS, [initSeconds]);\n const availableDate = useMemo(\n () =>\n initAvailableDate ? initAvailableDate : makeAvailableDate(minDate, maxDate, !!disablePast, !!disableFuture),\n [initAvailableDate, minDate, maxDate, disablePast, disableFuture]\n );\n\n const disableHours = useMemo(() => {\n const newDisableHours: number[] = [];\n if (time && value && (availableDate[0] || availableDate[1])) {\n hours.forEach((h) => {\n if (!isDateAvailable(value.set('hour', h), availableDate, 'hour')) {\n newDisableHours.push(h);\n }\n });\n }\n return newDisableHours;\n }, [time, value, availableDate, hours]);\n\n const disableMinutes = useMemo(() => {\n const newDisableMinutes: number[] = [];\n\n if (time === 'minute' || time === 'second') {\n if (value && (availableDate[0] || availableDate[1])) {\n minutes.forEach((m) => {\n if (!isDateAvailable(value.set('minute', m), availableDate, 'minute')) {\n newDisableMinutes.push(m);\n }\n });\n }\n }\n\n return newDisableMinutes;\n }, [time, value, availableDate, minutes]);\n\n const disableSeconds = useMemo(() => {\n const newDisableSeconds: number[] = [];\n\n if (time === 'second') {\n if (value && (availableDate[0] || availableDate[1])) {\n seconds.forEach((s) => {\n if (!isDateAvailable(value.set('second', s), availableDate, 'second')) {\n newDisableSeconds.push(s);\n }\n });\n }\n }\n\n return newDisableSeconds;\n }, [time, value, availableDate, seconds]);\n\n /********************************************************************************************************************\n * Effect\n * ******************************************************************************************************************/\n\n useEffect(() => {\n if (!yearSelectOpen) {\n setActiveMonthValue(null);\n }\n }, [yearSelectOpen]);\n\n //--------------------------------------------------------------------------------------------------------------------\n\n const leftArrowOnClickRef = useRef<IconButtonProps['onClick']>();\n const rightArrowOnClickRef = useRef<IconButtonProps['onClick']>();\n\n const [LeftArrowButton] = useState(() => {\n const ArrowButton: React.FC<IconButtonProps> = (props: IconButtonProps) => {\n leftArrowOnClickRef.current = props.onClick;\n return <IconButton {...props} />;\n };\n return ArrowButton;\n });\n\n const [RightArrowButton] = useState(() => {\n const ArrowButton: React.FC<IconButtonProps> = (props: IconButtonProps) => {\n rightArrowOnClickRef.current = props.onClick;\n return <IconButton {...props} />;\n };\n return ArrowButton;\n });\n\n /********************************************************************************************************************\n * Function\n * ******************************************************************************************************************/\n\n const previousMonth = useCallback(() => {\n if (leftArrowOnClickRef.current) {\n leftArrowOnClickRef.current({} as any);\n }\n }, []);\n\n const nextMonth = useCallback(() => {\n if (rightArrowOnClickRef.current) {\n rightArrowOnClickRef.current({} as any);\n }\n }, []);\n\n /********************************************************************************************************************\n * Event Handler\n * ******************************************************************************************************************/\n\n const handleYearSelect = useCallback(\n (year: number) => {\n setMonth(month.set('year', year));\n setActiveMonthValue(month.set('year', year));\n setYearSelectOpen(false);\n setMonthSelectOpen(true);\n },\n [month]\n );\n\n const handleMonthSelect = useCallback(\n (m: number) => {\n setMonth(month.set('month', m));\n setActiveMonthValue(month.set('month', m));\n setMonthSelectOpen(false);\n },\n [month]\n );\n\n const handleRenderDay = useCallback(\n (props: PickersDayProps<Dayjs>) => {\n return <PickersDay {...props} selected={props.day.isSame(value, 'date')} />;\n },\n [value]\n );\n\n /********************************************************************************************************************\n * Commands\n * ******************************************************************************************************************/\n\n useLayoutEffect(() => {\n if (ref) {\n const commands: PrivateStaticDatePickerCommands = {};\n\n if (typeof ref === 'function') {\n ref(commands);\n } else {\n ref.current = commands;\n }\n\n return () => {\n if (typeof ref === 'function') {\n ref(null);\n } else {\n ref.current = null;\n }\n };\n }\n }, [ref]);\n\n /********************************************************************************************************************\n * Render - Function\n * ******************************************************************************************************************/\n\n const getActionButton = useCallback(\n (date: Dayjs, label: string) => {\n const disabled = !isDateAvailable(date, availableDate, 'day');\n return (\n <Button\n variant='text'\n className={disabled ? 'disabled' : undefined}\n disabled={disabled}\n onClick={() => {\n let finalDate = date;\n const checkResult = checkDateAvailable(finalDate, availableDate, type, time);\n if (checkResult !== 'available') {\n const availableDateDate = getAvailableDate(availableDate, type, time);\n if (checkResult === 'min') {\n if (availableDateDate[0]) finalDate = availableDateDate[0];\n } else if (checkResult === 'max') {\n if (availableDateDate[1]) finalDate = availableDateDate[1];\n }\n }\n\n onChange('action_date', finalDate);\n }}\n >\n {label}\n </Button>\n );\n },\n [type, time, onChange, availableDate]\n );\n\n /********************************************************************************************************************\n * Render\n * ******************************************************************************************************************/\n\n return (\n <Grid container className={classNames('PrivateStaticDatePicker', type)}>\n {type !== 'time' && (\n <Grid item>\n <Grid container direction='column'>\n <Grid item sx={{ p: 2, width: '100%' }}>\n <Grid container className='month-change-arrow-wrap'>\n <Grid item flex={1} className='month-title-container'>\n <div className='month-title-wrap'>\n <div className='month-title'>\n <Button\n variant='text'\n className={yearSelectOpen ? 'active' : undefined}\n onClick={() => {\n if (yearSelectOpen) {\n setYearSelectOpen(false);\n } else {\n setYearSelectOpen(true);\n setMonthSelectOpen(false);\n }\n }}\n >\n {month.format('YYYY년')}\n <Icon>{yearSelectOpen ? 'arrow_drop_up' : 'arrow_drop_down'}</Icon>\n </Button>\n </div>\n <div className='month-title'>\n <Button\n variant='text'\n className={monthSelectOpen ? 'active' : undefined}\n onClick={() => {\n if (monthSelectOpen) {\n setMonthSelectOpen(false);\n } else {\n setMonthSelectOpen(true);\n setYearSelectOpen(false);\n }\n }}\n >\n {month.format('M월')}\n <Icon>{monthSelectOpen ? 'arrow_drop_up' : 'arrow_drop_down'}</Icon>\n </Button>\n </div>\n </div>\n </Grid>\n {!yearSelectOpen && !monthSelectOpen && (\n <Grid item style={{ textAlign: 'right' }}>\n <IconButton onClick={previousMonth} sx={{ mr: 1 }}>\n <Icon>keyboard_arrow_left</Icon>\n </IconButton>\n <IconButton onClick={nextMonth}>\n <Icon>keyboard_arrow_right</Icon>\n </IconButton>\n </Grid>\n )}\n </Grid>\n </Grid>\n <Grid item style={{ position: 'relative' }}>\n <StaticDatePicker\n {...props}\n value={activeMonthValue}\n defaultCalendarMonth={month}\n slots={{\n previousIconButton: LeftArrowButton,\n nextIconButton: RightArrowButton,\n day: handleRenderDay,\n }}\n minDate={minDate}\n maxDate={maxDate}\n disablePast={disablePast}\n disableFuture={disableFuture}\n displayStaticWrapperAs='desktop'\n onChange={(newValue) => {\n const finalValue = newValue\n ? value\n ? newValue.set('hour', value.hour()).set('minute', value.minute()).set('second', value.second())\n : newValue\n : newValue;\n\n onChange('date', finalValue);\n }}\n onMonthChange={(month: Dayjs) => {\n setMonth(month);\n if (onMonthChange) onMonthChange(month);\n }}\n />\n {yearSelectOpen && (\n <PrivateYearSelect\n selectYear={value == null ? null : value.year()}\n activeYear={month.year()}\n availableDate={availableDate}\n onSelect={handleYearSelect}\n />\n )}\n {monthSelectOpen && (\n <PrivateMonthSelect\n year={month.year()}\n selectYear={value == null ? null : value.year()}\n selectMonth={value == null ? null : value.month()}\n activeMonth={month.month()}\n availableDate={availableDate}\n onSelect={handleMonthSelect}\n />\n )}\n </Grid>\n <Grid item className='action-buttons'>\n {getActionButton(\n dayjs()\n .startOf('d')\n .subtract(1, 'month')\n .set('hour', value ? value.hour() : 0)\n .set('minute', value ? value.minute() : 0)\n .set('second', value ? value.second() : 0),\n '지난달'\n )}\n {getActionButton(\n dayjs()\n .startOf('d')\n .subtract(7, 'd')\n .set('hour', value ? value.hour() : 0)\n .set('minute', value ? value.minute() : 0)\n .set('second', value ? value.second() : 0),\n '지난주'\n )}\n {getActionButton(\n dayjs()\n .startOf('d')\n .subtract(1, 'd')\n .set('hour', value ? value.hour() : 0)\n .set('minute', value ? value.minute() : 0)\n .set('second', value ? value.second() : 0),\n '어제'\n )}\n {getActionButton(\n dayjs()\n .startOf('d')\n .set('hour', value ? value.hour() : 0)\n .set('minute', value ? value.minute() : 0)\n .set('second', value ? value.second() : 0),\n '오늘'\n )}\n </Grid>\n </Grid>\n </Grid>\n )}\n {time && (\n <Grid item className='time'>\n <Grid container direction='column' className='time-container'>\n <Grid item className='time-title'>\n {time === 'hour' && (value ? value.format('HH시') : '00시')}\n {time === 'minute' && (value ? value.format('HH시 mm분') : '00시 00분')}\n {time === 'second' && (value ? value.format('HH시 mm분 ss초') : '00시 00분 00초')}\n </Grid>\n <Grid item className='time-select-wrap'>\n <Grid container style={{ height: '100%' }}>\n <Grid item style={{ position: 'relative', width: type === 'time' ? 240 : 80 }}>\n <PrivateTimeSelect\n ref={hourSelectRef}\n value={value && value.hour()}\n unit='시'\n list={hours}\n disableList={disableHours}\n cols={type === 'time' ? 3 : 1}\n onSelect={(newValue: number) => {\n onChange(\n 'hour',\n value ? value.set('hour', newValue) : dayjs().startOf('date').set('hour', newValue)\n );\n }}\n />\n </Grid>\n {(time === 'minute' || time === 'second') && (\n <Grid item style={{ position: 'relative', width: type === 'time' ? 240 : 80 }}>\n <PrivateTimeSelect\n ref={minuteSelectRef}\n value={value && value.minute()}\n unit='분'\n list={minutes}\n disableList={disableMinutes}\n cols={type === 'time' ? 3 : 1}\n listInterval={minuteInterval}\n onSelect={(newValue: number) => {\n onChange(\n 'minute',\n value ? value.set('minute', newValue) : dayjs().startOf('date').set('minute', newValue)\n );\n }}\n />\n </Grid>\n )}\n {time === 'second' && (\n <Grid item style={{ position: 'relative', width: type === 'time' ? 240 : 80 }}>\n <PrivateTimeSelect\n ref={secondSelectRef}\n value={value && value.second()}\n unit='초'\n list={seconds}\n disableList={disableSeconds}\n cols={type === 'time' ? 3 : 1}\n listInterval={secondInterval}\n onSelect={(newValue: number) => {\n onChange(\n 'second',\n value ? value.set('second', newValue) : dayjs().startOf('date').set('second', newValue)\n );\n }}\n />\n </Grid>\n )}\n </Grid>\n </Grid>\n {onClose && (\n <Grid item className='action-buttons'>\n <Button variant='text' onClick={onClose}>\n 닫기\n </Button>\n </Grid>\n )}\n </Grid>\n </Grid>\n )}\n </Grid>\n );\n }\n);\n\nPrivateStaticDatePicker.displayName = 'PrivateStaticDatePicker';\nPrivateStaticDatePicker.defaultProps = PrivateStaticDatePickerDefaultProps;\n\nexport default PrivateStaticDatePicker;\n","import React from 'react';\nimport { styled, Tooltip, tooltipClasses, TooltipProps } from '@mui/material';\n\nconst PrivateStyledTooltip = styled(({ className, ...props }: TooltipProps) => (\n <Tooltip {...props} classes={{ popper: className }} />\n))(({ theme }) => ({\n [`& .${tooltipClasses.tooltip}`]: {\n backgroundColor: 'white',\n color: 'rgba(0, 0, 0, 0.87)',\n border: '1px solid #dadde9',\n padding: 0,\n borderRadius: 0,\n margin: 0,\n width: 'auto',\n maxWidth: 'inherit !important',\n boxShadow: theme.shadows[8],\n },\n}));\n\nexport default PrivateStyledTooltip;\n","import React, { ReactNode, useCallback, useEffect, useId, useLayoutEffect, useMemo, useRef, useState } from 'react';\nimport classNames from 'classnames';\nimport { AdapterDayjs } from '@mui/x-date-pickers/AdapterDayjs';\nimport { LocalizationProvider, DesktopDatePicker, DateValidationError } from '@mui/x-date-pickers';\nimport { useAutoUpdateState, useFirstSkipEffect } from '@pdg/react-hook';\nimport { ClickAwayListener, InputAdornment, InputProps, FormHelperText, InputLabelProps } from '@mui/material';\nimport { IconText } from '@pdg/react-component';\nimport {\n PrivateDatePickerProps as Props,\n PrivateDatePickerDefaultProps,\n PrivateDatePickerCommands,\n PrivateDatePickerValue,\n} from './PrivateDatePicker.types';\nimport { useFormState } from '../../FormContext';\nimport {\n checkDateAvailable,\n empty,\n getAvailableDate,\n getAvailableDateVal,\n getDateTimeFormat,\n getDateTimeFormValueFormat,\n getDateValForAvailableDate,\n getDateValidationErrorText,\n makeAvailableDate,\n nextTick,\n notEmpty,\n} from '../../@util';\nimport {\n PrivateStaticDatePicker,\n PrivateStaticDatePickerCommands,\n PrivateStaticDatePickerUnit,\n} from '../PrivateStaticDatePicker';\nimport { PrivateStyledTooltip } from '../PrivateStyledTooltip';\nimport { FormIcon } from '../../FormCommon';\nimport { InputBaseProps } from '@mui/material/InputBase';\nimport './PrivateDatePicker.scss';\nimport { DesktopDatePickerSlotsComponentsProps } from '@mui/x-date-pickers/DesktopDatePicker/DesktopDatePicker.types';\nimport { Dayjs } from 'dayjs';\n\nconst PrivateDatePicker = React.forwardRef<PrivateDatePickerCommands, Props>(\n (\n {\n variant: initVariant,\n size: initSize,\n color: initColor,\n focused: initFocused,\n labelShrink: initLabelShrink,\n fullWidth: initFullWidth,\n //--------------------------------------------------------------------------------------------------------------------\n name,\n type,\n time,\n value: initValue,\n data: initData,\n label: initLabel,\n labelIcon,\n format: initFormat,\n formValueFormat: initFormValueFormat,\n required,\n readOnly,\n disabled: initDisabled,\n width,\n error: initError,\n helperText,\n minDate,\n maxDate,\n disableFuture,\n disablePast,\n exceptValue,\n icon,\n startAdornment,\n endAdornment,\n align,\n hours,\n minutes,\n seconds,\n minuteInterval,\n secondInterval,\n readOnlyInput,\n hidden: initHidden,\n onChange,\n onValidate,\n //--------------------------------------------------------------------------------------------------------------------\n className,\n style: initStyle,\n sx,\n ...otherProps\n },\n ref\n ) => {\n /********************************************************************************************************************\n * ID\n * ******************************************************************************************************************/\n\n const id = useId();\n\n /********************************************************************************************************************\n * Ref\n * ******************************************************************************************************************/\n\n const privateStaticDatePickerRef = useRef<PrivateStaticDatePickerCommands>(null);\n const textFieldInputRef = useRef<HTMLInputElement>();\n const closeTimeoutRef = useRef<NodeJS.Timeout>();\n const mouseDownTimeRef = useRef<number>();\n const datePickerErrorRef = useRef<DateValidationError>(null);\n const openValueRef = useRef<PrivateDatePickerValue>(null);\n\n /********************************************************************************************************************\n * FormState\n * ******************************************************************************************************************/\n\n const {\n variant: formVariant,\n size: formSize,\n color: formColor,\n focused: formFocused,\n labelShrink: formLabelShrink,\n fullWidth: formFullWidth,\n disabled: formDisabled,\n formColWithHelperText,\n onAddValueItem,\n onRemoveValueItem,\n onValueChange,\n onValueChangeByUser,\n onRequestSearchSubmit,\n } = useFormState();\n\n /********************************************************************************************************************\n * Memo - FormState\n * ******************************************************************************************************************/\n\n const variant = useMemo(() => (initVariant == null ? formVariant : initVariant), [initVariant, formVariant]);\n const size = useMemo(() => (initSize == null ? formSize : initSize), [initSize, formSize]);\n const color = useMemo(() => (initColor == null ? formColor : initColor), [initColor, formColor]);\n const focused = useMemo(() => (initFocused == null ? formFocused : initFocused), [initFocused, formFocused]);\n const labelShrink = useMemo(\n () => (initLabelShrink == null ? formLabelShrink : initLabelShrink),\n [initLabelShrink, formLabelShrink]\n );\n const fullWidth = useMemo(\n () => (initFullWidth == null ? formFullWidth : initFullWidth),\n [initFullWidth, formFullWidth]\n );\n\n /********************************************************************************************************************\n * State - open\n * ******************************************************************************************************************/\n\n const [open, setOpen] = useState(false);\n\n /********************************************************************************************************************\n * State\n * ******************************************************************************************************************/\n\n const [error, setError] = useAutoUpdateState<Props['error']>(initError);\n const [timeError, setTimeError] = useState<DateValidationError>(null);\n const [errorHelperText, setErrorHelperText] = useState<Props['helperText']>();\n const [disabled, setDisabled] = useAutoUpdateState<Props['disabled']>(\n initDisabled == null ? formDisabled : initDisabled\n );\n const [hidden, setHidden] = useAutoUpdateState<Props['hidden']>(initHidden);\n const [data, setData] = useAutoUpdateState<Props['data']>(initData);\n\n /********************************************************************************************************************\n * Memo\n * ******************************************************************************************************************/\n\n const label = useMemo(() => {\n if (labelIcon) {\n return <IconText icon={labelIcon}>{initLabel}</IconText>;\n } else {\n return initLabel;\n }\n }, [initLabel, labelIcon]);\n\n const format = useMemo(() => {\n if (initFormat) {\n return initFormat;\n } else {\n return getDateTimeFormat(type, time);\n }\n }, [initFormat, time, type]);\n\n const formValueFormat = useMemo(() => {\n if (initFormValueFormat) {\n return initFormValueFormat;\n } else {\n return getDateTimeFormValueFormat(type, time);\n }\n }, [initFormValueFormat, time, type]);\n\n const availableDate = useMemo(\n () => makeAvailableDate(minDate, maxDate, !!disablePast, !!disableFuture),\n [disableFuture, disablePast, maxDate, minDate]\n );\n\n /********************************************************************************************************************\n * State - style\n * ******************************************************************************************************************/\n\n const [style] = useAutoUpdateState<Props['style']>(\n useCallback(() => {\n if (width != null) {\n return { ...initStyle, width };\n } else {\n return initStyle;\n }\n }, [initStyle, width])\n );\n\n /********************************************************************************************************************\n * Function - getFinalValue\n * ******************************************************************************************************************/\n\n const getFinalValue = useCallback((value: PrivateDatePickerValue): PrivateDatePickerValue => {\n return value;\n }, []);\n\n /********************************************************************************************************************\n * State - value\n * ******************************************************************************************************************/\n\n const [value, setValue] = useAutoUpdateState<PrivateDatePickerValue>(initValue || null, getFinalValue);\n const [inputValue, setInputValue] = useState<PrivateDatePickerValue>(null);\n\n /********************************************************************************************************************\n * Effect\n * ******************************************************************************************************************/\n\n useEffect(() => {\n if (value !== initValue) {\n if (onChange) onChange(value);\n onValueChange(name, value);\n }\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, []);\n\n useFirstSkipEffect(() => {\n if (error) validate(value);\n if (onChange) onChange(value);\n onValueChange(name, value);\n }, [value]);\n\n useEffect(() => {\n setInputValue(value);\n }, [value]);\n\n useFirstSkipEffect(() => {\n if (error && !timeError) validate(value);\n }, [timeError]);\n\n useFirstSkipEffect(() => {\n if (open) {\n openValueRef.current = value;\n } else {\n if (openValueRef.current !== value) {\n let runOnRequestSearchSubmit;\n if (openValueRef.current && value) {\n runOnRequestSearchSubmit = !openValueRef.current.isSame(value, 'second');\n } else {\n runOnRequestSearchSubmit = true;\n }\n\n if (runOnRequestSearchSubmit) {\n onRequestSearchSubmit(name, value);\n }\n }\n }\n }, [open]);\n\n useEffect(() => {\n if (type !== 'time' && time && value && (availableDate[0] || availableDate[1])) {\n const availableDateVal = getAvailableDateVal(availableDate, type, time);\n const valueVal = getDateValForAvailableDate(value, type, time);\n let timeError: DateValidationError = null;\n\n if (availableDateVal[0] && valueVal < availableDateVal[0]) {\n timeError = 'minDate';\n }\n if (timeError == null && availableDateVal[1] && valueVal > availableDateVal[1]) {\n timeError = 'maxDate';\n }\n\n setTimeError(timeError);\n } else {\n setTimeError(null);\n }\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [value]);\n\n /********************************************************************************************************************\n * Memo\n * ******************************************************************************************************************/\n\n const wrapStyle = useMemo(\n () => ({\n display: hidden ? 'none' : fullWidth ? 'block' : 'inline-block',\n flex: fullWidth ? 1 : undefined,\n }),\n [hidden, fullWidth]\n );\n\n /********************************************************************************************************************\n * Function - focus\n * ******************************************************************************************************************/\n\n const focus = useCallback(() => {\n textFieldInputRef.current?.focus();\n }, [textFieldInputRef]);\n\n /********************************************************************************************************************\n * Function - setErrorErrorHelperText\n * ******************************************************************************************************************/\n\n const setErrorErrorHelperText = useCallback(\n (error: boolean, helperText: ReactNode) => {\n setError(error);\n setErrorHelperText(helperText);\n },\n [setError]\n );\n\n /********************************************************************************************************************\n * Function - validate\n * ******************************************************************************************************************/\n\n const validate = useCallback(\n (value: PrivateDatePickerValue) => {\n if (required && empty(value)) {\n setErrorErrorHelperText(true, '필수 입력 항목입니다.');\n return false;\n }\n if (value && !value.isValid()) {\n setErrorErrorHelperText(true, '형식이 일치하지 않습니다.');\n return false;\n }\n if (datePickerErrorRef.current) {\n setErrorErrorHelperText(true, getDateValidationErrorText(datePickerErrorRef.current));\n return false;\n }\n if (timeError) {\n setErrorErrorHelperText(true, getDateValidationErrorText(timeError));\n return false;\n }\n if (onValidate) {\n const onValidateResult = onValidate(value);\n if (onValidateResult != null && onValidateResult !== true) {\n setErrorErrorHelperText(true, onValidateResult);\n return false;\n }\n }\n\n setErrorErrorHelperText(false, undefined);\n\n return true;\n },\n [required, timeError, onValidate, setErrorErrorHelperText]\n );\n\n /********************************************************************************************************************\n * Commands\n * ******************************************************************************************************************/\n\n useLayoutEffect(() => {\n if (ref || onAddValueItem) {\n let lastValue = value;\n let lastData = data;\n let lastDisabled = !!disabled;\n let lastHidden = !!hidden;\n\n const commands: PrivateDatePickerCommands = {\n getType: () => 'default',\n getName: () => name,\n getReset: () => getFinalValue(initValue || null),\n reset: () => {\n lastValue = getFinalValue(initValue || null);\n setValue(lastValue);\n },\n getValue: () => lastValue,\n setValue: (value) => {\n lastValue = getFinalValue(value);\n setValue(lastValue);\n },\n getData: () => lastData,\n setData: (data) => {\n lastData = data;\n setData(data);\n },\n\n isExceptValue: () => !!exceptValue,\n isDisabled: () => lastDisabled,\n setDisabled: (disabled) => {\n lastDisabled = disabled;\n setDisabled(disabled);\n },\n isHidden: () => lastHidden,\n setHidden: (hidden) => {\n lastHidden = hidden;\n setHidden(hidden);\n },\n focus,\n focusValidate: focus,\n validate: () => validate(value),\n setError: (error: boolean, errorText: ReactNode | undefined) =>\n setErrorErrorHelperText(error, error ? errorText : undefined),\n getFormValueFormat: () => formValueFormat,\n };\n\n if (ref) {\n if (typeof ref === 'function') {\n ref(commands);\n } else {\n ref.current = commands;\n }\n }\n\n if (onAddValueItem) onAddValueItem(id, commands);\n\n return () => {\n if (ref) {\n if (typeof ref === 'function') {\n ref(null);\n } else {\n ref.current = null;\n }\n }\n\n if (onRemoveValueItem) onRemoveValueItem(id);\n };\n }\n }, [\n name,\n initValue,\n value,\n getFinalValue,\n exceptValue,\n disabled,\n focus,\n validate,\n formValueFormat,\n ref,\n onAddValueItem,\n onRemoveValueItem,\n id,\n setValue,\n setDisabled,\n setErrorErrorHelperText,\n data,\n setData,\n hidden,\n setHidden,\n ]);\n\n /********************************************************************************************************************\n * Event Handler\n * ******************************************************************************************************************/\n\n const handleChange = useCallback(\n (unit: PrivateStaticDatePickerUnit, newValue: PrivateDatePickerValue, keyboardInputValue?: string) => {\n let updateValue = true;\n if (notEmpty(keyboardInputValue)) {\n if (newValue) {\n if (!newValue.isValid()) {\n updateValue = false;\n }\n }\n }\n\n let finalValue = newValue;\n\n if (updateValue) {\n if (type !== 'time' && finalValue != null && keyboardInputValue == null) {\n const checkResult = checkDateAvailable(finalValue, availableDate, type, time);\n if (checkResult !== 'available') {\n const availableDateDate = getAvailableDate(availableDate, type, time);\n if (checkResult === 'min') {\n if (availableDateDate[0]) finalValue = availableDateDate[0];\n } else if (checkResult === 'max') {\n if (availableDateDate[1]) finalValue = availableDateDate[1];\n }\n }\n }\n\n let runOnRequestSearchSubmit = false;\n\n if (notEmpty(keyboardInputValue)) {\n if (!time || unit !== 'action_date') {\n runOnRequestSearchSubmit = !open; // 팝업창 열리지 않은 상태에서 날짜 키보드로 변경\n setOpen(false);\n }\n } else if (time) {\n if (time === unit) setOpen(false);\n }\n setValue(finalValue);\n\n nextTick(() => {\n onValueChangeByUser(name, finalValue);\n if (runOnRequestSearchSubmit) {\n onRequestSearchSubmit(name, finalValue);\n }\n });\n\n if (time) {\n if (finalValue) {\n switch (unit) {\n case 'date':\n case 'action_date':\n // privateStaticDatePickerRef.current?.timeSelectScrollToDate(finalValue);\n break;\n case 'hour':\n // privateStaticDatePickerRef.current?.timeSelectScrollToDate(finalValue, ['minute', 'second']);\n break;\n case 'minute':\n // privateStaticDatePickerRef.current?.timeSelectScrollToDate(finalValue, ['second']);\n break;\n }\n }\n }\n }\n\n setInputValue(finalValue);\n },\n [type, time, setValue, availableDate, open, onValueChangeByUser, name, onRequestSearchSubmit]\n );\n\n const handleContainerFocus = useCallback(() => {\n if (closeTimeoutRef.current) {\n clearTimeout(closeTimeoutRef.current);\n closeTimeoutRef.current = undefined;\n }\n }, []);\n\n const handleContainerBlur = useCallback(() => {\n if (closeTimeoutRef.current) {\n clearTimeout(closeTimeoutRef.current);\n closeTimeoutRef.current = undefined;\n }\n\n if (!mouseDownTimeRef.current || new Date().getTime() - mouseDownTimeRef.current > 100) {\n closeTimeoutRef.current = setTimeout(() => {\n closeTimeoutRef.current = undefined;\n setOpen(false);\n }, 10);\n }\n }, []);\n\n const handleContainerMouseDown = useCallback(() => {\n if (closeTimeoutRef.current) {\n clearTimeout(closeTimeoutRef.current);\n closeTimeoutRef.current = undefined;\n }\n mouseDownTimeRef.current = new Date().getTime();\n }, []);\n\n /********************************************************************************************************************\n * Memo\n * ******************************************************************************************************************/\n\n const slotProps = useMemo<DesktopDatePickerSlotsComponentsProps<Dayjs>>(() => {\n const textFieldInputLabelProps: Partial<InputLabelProps> = {};\n if (labelShrink) {\n textFieldInputLabelProps.shrink = labelShrink;\n }\n\n const readOnly = readOnlyInput;\n const inputProps: InputBaseProps['inputProps'] = {\n readOnly,\n };\n if (readOnly) {\n inputProps.tabIndex = -1;\n inputProps.className = classNames(inputProps.className, 'Mui-disabled');\n }\n\n const muiInputProps: InputProps = { endAdornment: undefined };\n if (startAdornment || icon || muiInputProps.startAdornment) {\n muiInputProps.startAdornment = (\n <>\n {icon && (\n <InputAdornment position='start'>\n <FormIcon fontSize='small'>{icon}</FormIcon>\n </InputAdornment>\n )}\n {startAdornment && <InputAdornment position='start'>{startAdornment}</InputAdornment>}\n {muiInputProps.startAdornment}\n </>\n );\n }\n if (endAdornment) {\n muiInputProps.endAdornment = (\n <>{endAdornment && <InputAdornment position='end'>{endAdornment}</InputAdornment>}</>\n );\n }\n\n return {\n textField: {\n className: classNames('input-text-field', `align-${align}`),\n inputRef: (ref) => {\n textFieldInputRef.current = ref;\n },\n variant,\n size,\n color,\n focused,\n InputLabelProps: textFieldInputLabelProps,\n InputProps: muiInputProps,\n inputProps,\n required,\n fullWidth,\n helperText: undefined,\n error: !!error || !!timeError,\n style,\n sx,\n onFocus: () => {\n setOpen(true);\n },\n onClick: () => {\n setOpen(true);\n },\n },\n };\n }, [\n align,\n color,\n endAdornment,\n error,\n focused,\n fullWidth,\n icon,\n labelShrink,\n readOnlyInput,\n required,\n size,\n startAdornment,\n style,\n sx,\n timeError,\n variant,\n ]);\n\n /********************************************************************************************************************\n * Render\n * ******************************************************************************************************************/\n\n return (\n <LocalizationProvider dateAdapter={AdapterDayjs}>\n <ClickAwayListener mouseEvent='onMouseDown' touchEvent='onTouchStart' onClickAway={() => setOpen(false)}>\n <div\n className={classNames(className, 'PrivateDatePicker')}\n style={wrapStyle}\n onMouseDown={handleContainerMouseDown}\n onFocus={handleContainerFocus}\n onBlur={handleContainerBlur}\n >\n <PrivateStyledTooltip\n open={disabled || readOnly ? false : open}\n PopperProps={{\n modifiers: [\n {\n name: 'offset',\n options: {\n offset: [0, error && errorHelperText ? 8 : -14],\n },\n },\n ],\n }}\n title={\n <PrivateStaticDatePicker\n {...otherProps}\n ref={privateStaticDatePickerRef}\n type={type}\n time={time}\n value={value}\n availableDate={availableDate}\n minDate={minDate}\n maxDate={maxDate}\n disablePast={disablePast}\n disableFuture={disableFuture}\n hours={hours}\n minutes={minutes}\n seconds={seconds}\n minuteInterval={minuteInterval}\n secondInterval={secondInterval}\n onChange={handleChange}\n onAccept={() => !time && setOpen(false)}\n onClose={() => setOpen(false)}\n />\n }\n >\n <div style={{ display: fullWidth ? 'block' : 'inline-block' }}>\n <DesktopDatePicker\n value={inputValue}\n label={label}\n open={false}\n format={format}\n disabled={disabled}\n readOnly={readOnly}\n minDate={minDate}\n maxDate={maxDate}\n disablePast={disablePast}\n disableFuture={disableFuture}\n onClose={() => setOpen(false)}\n onError={(reason) => (datePickerErrorRef.current = reason)}\n onChange={(newValue) => handleChange('date', newValue)}\n slotProps={slotProps}\n {...otherProps}\n />\n </div>\n </PrivateStyledTooltip>\n {!formColWithHelperText && (helperText || (error && errorHelperText)) && (\n <FormHelperText error={error} style={{ marginLeft: variant === 'standard' ? 0 : 14 }}>\n {error ? errorHelperText : helperText}\n </FormHelperText>\n )}\n </div>\n </ClickAwayListener>\n </LocalizationProvider>\n );\n }\n);\n\nPrivateDatePicker.displayName = 'PrivateDatePicker';\nPrivateDatePicker.defaultProps = PrivateDatePickerDefaultProps;\n\nexport default PrivateDatePicker;\n","import { ReactNode } from 'react';\nimport { DesktopDateTimePickerProps } from '@mui/x-date-pickers';\nimport {\n CommonSxProps,\n FormDateType,\n FormDateValueItemCommands,\n FormTimeType,\n FormValueItemBaseCommands,\n FormValueItemProps,\n} from '../../@types';\nimport { Dayjs } from 'dayjs';\n\nexport type PrivateDateTimePickerValue = Dayjs | null;\n\nexport interface PrivateDateTimePickerProps\n extends CommonSxProps,\n Partial<\n Omit<\n DesktopDateTimePickerProps<Dayjs>,\n | 'children'\n | 'className'\n | 'name'\n | 'style'\n | 'sx'\n | 'value'\n | 'inputFormat'\n | 'views'\n | 'onChange'\n | 'openTo'\n | 'view'\n | 'viewRenderers'\n | 'components'\n | 'componentsProps'\n | 'slots'\n | 'slotProps'\n >\n >,\n FormValueItemProps<PrivateDateTimePickerValue, false> {\n type: FormDateType;\n time?: FormTimeType;\n hours?: number[];\n minutes?: number[];\n seconds?: number[];\n minuteInterval?: number;\n secondInterval?: number;\n required?: boolean;\n labelShrink?: boolean;\n format?: string;\n formValueFormat?: string;\n icon?: string;\n startAdornment?: ReactNode;\n endAdornment?: ReactNode;\n align?: 'left' | 'center' | 'right';\n readOnlyInput?: boolean;\n hidden?: boolean;\n}\n\nexport const PrivateDateTimePickerDefaultProps: Pick<\n PrivateDateTimePickerProps,\n 'showDaysOutsideCurrentMonth' | 'align' | 'value'\n> = {\n showDaysOutsideCurrentMonth: true,\n align: 'center',\n value: null,\n};\n\nexport interface PrivateDateTimePickerCommands\n extends FormValueItemBaseCommands<PrivateDateTimePickerValue, false>,\n FormDateValueItemCommands {}\n","import { StaticDateTimePickerProps } from '@mui/x-date-pickers';\nimport { Dayjs } from 'dayjs';\nimport { FormAvailableDate } from '../@types';\nimport { FormDateType, FormTimeType } from '../../@types';\n\nexport type PrivateStaticDateTimePickerUnit = 'date' | 'action_date' | 'hour' | 'minute' | 'second';\n\nexport interface PrivateStaticDateTimePickerProps\n extends Omit<StaticDateTimePickerProps<Dayjs>, 'displayStaticWrapperAs' | 'renderInput' | 'onChange'> {\n type: FormDateType;\n time?: FormTimeType;\n availableDate?: FormAvailableDate;\n hours?: number[];\n minutes?: number[];\n seconds?: number[];\n minuteInterval?: number;\n secondInterval?: number;\n onChange(unit: PrivateStaticDateTimePickerUnit, newValue: Dayjs | null): void;\n onClose?(): void;\n}\n\nexport const PrivateStaticDateTimePickerDefaultProps = {};\n\nexport type TimeSelectScrollToDateUnit = 'hour' | 'minute' | 'second';\n\nexport interface PrivateStaticDateTimePickerCommands {\n timeSelectScrollToDate(date: Dayjs, times?: TimeSelectScrollToDateUnit[]): void;\n}\n","import React, { useCallback, useEffect, useLayoutEffect, useMemo, useRef, useState } from 'react';\nimport classNames from 'classnames';\nimport {\n PrivateStaticDateTimePickerProps as Props,\n PrivateStaticDateTimePickerDefaultProps,\n PrivateStaticDateTimePickerCommands,\n TimeSelectScrollToDateUnit,\n} from './PrivateStaticDateTimePicker.types';\nimport { PickersDay, PickersDayProps, StaticDateTimePicker } from '@mui/x-date-pickers';\nimport { Button, Grid, Icon, IconButton, IconButtonProps } from '@mui/material';\nimport dayjs, { Dayjs } from 'dayjs';\nimport { PrivateYearSelect } from '../PrivateYearSelect';\nimport { PrivateMonthSelect } from '../PrivateMonthSelect';\nimport { PrivateTimeSelect, PrivateTimeSelectCommands } from '../PrivateTimeSelect';\nimport { checkDateAvailable, getAvailableDate, isDateAvailable, makeAvailableDate } from '../../@util';\nimport './PrivateStaticDateTimePicker.scss';\n\nconst DEFAULT_HOURS: number[] = new Array(24).fill(0);\nfor (let i = 0; i < DEFAULT_HOURS.length; i += 1) {\n DEFAULT_HOURS[i] = i;\n}\n\nconst DEFAULT_MINUTES = new Array(60).fill(0);\nfor (let i = 0; i < DEFAULT_MINUTES.length; i += 1) {\n DEFAULT_MINUTES[i] = i;\n}\n\nconst DEFAULT_SECONDS = new Array(60).fill(0);\nfor (let i = 0; i < DEFAULT_SECONDS.length; i += 1) {\n DEFAULT_SECONDS[i] = i;\n}\n\nconst PrivateStaticDateTimePicker = React.forwardRef<PrivateStaticDateTimePickerCommands, Props>(\n (\n {\n value,\n availableDate: initAvailableDate,\n defaultCalendarMonth,\n type,\n time,\n hours: initHours,\n minutes: initMinutes,\n seconds: initSeconds,\n minuteInterval,\n secondInterval,\n minDate,\n maxDate,\n disablePast,\n disableFuture,\n onChange,\n onMonthChange,\n onClose,\n ...props\n },\n ref\n ) => {\n /********************************************************************************************************************\n * Ref\n * ******************************************************************************************************************/\n\n const hourSelectRef = useRef<PrivateTimeSelectCommands>(null);\n const minuteSelectRef = useRef<PrivateTimeSelectCommands>(null);\n const secondSelectRef = useRef<PrivateTimeSelectCommands>(null);\n\n /********************************************************************************************************************\n * State\n * ******************************************************************************************************************/\n\n const [month, setMonth] = useState<Dayjs>(() => {\n if (value) return value;\n else if (defaultCalendarMonth) return defaultCalendarMonth;\n else return dayjs();\n });\n const [activeMonthValue, setActiveMonthValue] = useState<Dayjs | null>(null);\n const [yearSelectOpen, setYearSelectOpen] = useState(false);\n const [monthSelectOpen, setMonthSelectOpen] = useState(false);\n\n /********************************************************************************************************************\n * Memo\n * ******************************************************************************************************************/\n\n const hours = useMemo(() => initHours || DEFAULT_HOURS, [initHours]);\n const minutes = useMemo(() => initMinutes || DEFAULT_MINUTES, [initMinutes]);\n const seconds = useMemo(() => initSeconds || DEFAULT_SECONDS, [initSeconds]);\n const availableDate = useMemo(\n () =>\n initAvailableDate ? initAvailableDate : makeAvailableDate(minDate, maxDate, !!disablePast, !!disableFuture),\n [initAvailableDate, minDate, maxDate, disablePast, disableFuture]\n );\n\n const disableHours = useMemo(() => {\n const newDisableHours: number[] = [];\n if (time && value && (availableDate[0] || availableDate[1])) {\n hours.forEach((h) => {\n if (!isDateAvailable(value.set('hour', h), availableDate, 'hour')) {\n newDisableHours.push(h);\n }\n });\n }\n return newDisableHours;\n }, [time, value, availableDate, hours]);\n\n const disableMinutes = useMemo(() => {\n const newDisableMinutes: number[] = [];\n\n if (time === 'minute' || time === 'second') {\n if (value && (availableDate[0] || availableDate[1])) {\n minutes.forEach((m) => {\n if (!isDateAvailable(value.set('minute', m), availableDate, 'minute')) {\n newDisableMinutes.push(m);\n }\n });\n }\n }\n\n return newDisableMinutes;\n }, [time, value, availableDate, minutes]);\n\n const disableSeconds = useMemo(() => {\n const newDisableSeconds: number[] = [];\n\n if (time === 'second') {\n if (value && (availableDate[0] || availableDate[1])) {\n seconds.forEach((s) => {\n if (!isDateAvailable(value.set('second', s), availableDate, 'second')) {\n newDisableSeconds.push(s);\n }\n });\n }\n }\n\n return newDisableSeconds;\n }, [time, value, availableDate, seconds]);\n\n /********************************************************************************************************************\n * Effect\n * ******************************************************************************************************************/\n\n useEffect(() => {\n if (!yearSelectOpen) {\n setActiveMonthValue(null);\n }\n }, [yearSelectOpen]);\n\n //--------------------------------------------------------------------------------------------------------------------\n\n const leftArrowOnClickRef = useRef<IconButtonProps['onClick']>();\n const rightArrowOnClickRef = useRef<IconButtonProps['onClick']>();\n\n const [LeftArrowButton] = useState(() => {\n const ArrowButton: React.FC<IconButtonProps> = (props: IconButtonProps) => {\n leftArrowOnClickRef.current = props.onClick;\n return <IconButton {...props} />;\n };\n return ArrowButton;\n });\n\n const [RightArrowButton] = useState(() => {\n const ArrowButton: React.FC<IconButtonProps> = (props: IconButtonProps) => {\n rightArrowOnClickRef.current = props.onClick;\n return <IconButton {...props} />;\n };\n return ArrowButton;\n });\n\n /********************************************************************************************************************\n * Function\n * ******************************************************************************************************************/\n\n const previousMonth = useCallback(() => {\n if (leftArrowOnClickRef.current) {\n leftArrowOnClickRef.current({} as any);\n }\n }, []);\n\n const nextMonth = useCallback(() => {\n if (rightArrowOnClickRef.current) {\n rightArrowOnClickRef.current({} as any);\n }\n }, []);\n\n const timeSelectScrollToDate = useCallback((date: Dayjs, times?: TimeSelectScrollToDateUnit[]) => {\n if (!times || times?.includes('hour')) hourSelectRef.current?.scrollToValue(date.hour());\n if (!times || times?.includes('minute')) minuteSelectRef.current?.scrollToValue(date.minute());\n if (!times || times?.includes('second')) secondSelectRef.current?.scrollToValue(date.second());\n }, []);\n\n /********************************************************************************************************************\n * Event Handler\n * ******************************************************************************************************************/\n\n const handleYearSelect = useCallback(\n (year: number) => {\n setMonth(month.set('year', year));\n setActiveMonthValue(month.set('year', year));\n setYearSelectOpen(false);\n setMonthSelectOpen(true);\n },\n [month]\n );\n\n const handleMonthSelect = useCallback(\n (m: number) => {\n setMonth(month.set('month', m));\n setActiveMonthValue(month.set('month', m));\n setMonthSelectOpen(false);\n },\n [month]\n );\n\n const handleRenderDay = useCallback(\n (props: PickersDayProps<Dayjs>) => {\n return <PickersDay {...props} selected={props.day.isSame(value, 'date')} />;\n },\n [value]\n );\n\n /********************************************************************************************************************\n * Commands\n * ******************************************************************************************************************/\n\n useLayoutEffect(() => {\n if (ref) {\n const commands: PrivateStaticDateTimePickerCommands = {\n timeSelectScrollToDate,\n };\n\n if (typeof ref === 'function') {\n ref(commands);\n } else {\n ref.current = commands;\n }\n\n return () => {\n if (typeof ref === 'function') {\n ref(null);\n } else {\n ref.current = null;\n }\n };\n }\n }, [ref, timeSelectScrollToDate]);\n\n /********************************************************************************************************************\n * Render - Function\n * ******************************************************************************************************************/\n\n const getActionButton = useCallback(\n (date: Dayjs, label: string) => {\n const disabled = !isDateAvailable(date, availableDate, 'day');\n return (\n <Button\n variant='text'\n className={disabled ? 'disabled' : undefined}\n disabled={disabled}\n onClick={() => {\n let finalDate = date;\n const checkResult = checkDateAvailable(finalDate, availableDate, type, time);\n if (checkResult !== 'available') {\n const availableDateDate = getAvailableDate(availableDate, type, time);\n if (checkResult === 'min') {\n if (availableDateDate[0]) finalDate = availableDateDate[0];\n } else if (checkResult === 'max') {\n if (availableDateDate[1]) finalDate = availableDateDate[1];\n }\n }\n\n onChange('action_date', finalDate);\n }}\n >\n {label}\n </Button>\n );\n },\n [type, time, onChange, availableDate]\n );\n\n /********************************************************************************************************************\n * Render\n * ******************************************************************************************************************/\n\n return (\n <Grid container className={classNames('PrivateStaticDateTimePicker', type)}>\n {type !== 'time' && (\n <Grid item>\n <Grid container direction='column'>\n <Grid item sx={{ p: 2, width: '100%' }}>\n <Grid container className='month-change-arrow-wrap'>\n <Grid item flex={1} className='month-title-container'>\n <div className='month-title-wrap'>\n <div className='month-title'>\n <Button\n variant='text'\n className={yearSelectOpen ? 'active' : undefined}\n onClick={() => {\n if (yearSelectOpen) {\n setYearSelectOpen(false);\n } else {\n setYearSelectOpen(true);\n setMonthSelectOpen(false);\n }\n }}\n >\n {month.format('YYYY년')}\n <Icon>{yearSelectOpen ? 'arrow_drop_up' : 'arrow_drop_down'}</Icon>\n </Button>\n </div>\n <div className='month-title'>\n <Button\n variant='text'\n className={monthSelectOpen ? 'active' : undefined}\n onClick={() => {\n if (monthSelectOpen) {\n setMonthSelectOpen(false);\n } else {\n setMonthSelectOpen(true);\n setYearSelectOpen(false);\n }\n }}\n >\n {month.format('M월')}\n <Icon>{monthSelectOpen ? 'arrow_drop_up' : 'arrow_drop_down'}</Icon>\n </Button>\n </div>\n </div>\n </Grid>\n {!yearSelectOpen && !monthSelectOpen && (\n <Grid item style={{ textAlign: 'right' }}>\n <IconButton onClick={previousMonth} sx={{ mr: 1 }}>\n <Icon>keyboard_arrow_left</Icon>\n </IconButton>\n <IconButton onClick={nextMonth}>\n <Icon>keyboard_arrow_right</Icon>\n </IconButton>\n </Grid>\n )}\n </Grid>\n </Grid>\n <Grid item style={{ position: 'relative' }}>\n <StaticDateTimePicker\n {...props}\n value={activeMonthValue}\n defaultCalendarMonth={month}\n slots={{\n previousIconButton: LeftArrowButton,\n nextIconButton: RightArrowButton,\n day: handleRenderDay,\n }}\n viewRenderers={{ hours: null, minutes: null, seconds: null }}\n minDate={minDate}\n maxDate={maxDate}\n disablePast={disablePast}\n disableFuture={disableFuture}\n displayStaticWrapperAs='desktop'\n onChange={(newValue) => {\n const finalValue = newValue\n ? value\n ? newValue.set('hour', value.hour()).set('minute', value.minute()).set('second', value.second())\n : newValue\n : newValue;\n\n onChange('date', finalValue);\n }}\n onMonthChange={(month: Dayjs) => {\n setMonth(month);\n if (onMonthChange) onMonthChange(month);\n }}\n />\n {yearSelectOpen && (\n <PrivateYearSelect\n selectYear={value == null ? null : value.year()}\n activeYear={month.year()}\n availableDate={availableDate}\n onSelect={handleYearSelect}\n />\n )}\n {monthSelectOpen && (\n <PrivateMonthSelect\n year={month.year()}\n selectYear={value == null ? null : value.year()}\n selectMonth={value == null ? null : value.month()}\n activeMonth={month.month()}\n availableDate={availableDate}\n onSelect={handleMonthSelect}\n />\n )}\n </Grid>\n <Grid item className='action-buttons'>\n {getActionButton(\n dayjs()\n .startOf('d')\n .subtract(1, 'month')\n .set('hour', value ? value.hour() : 0)\n .set('minute', value ? value.minute() : 0)\n .set('second', value ? value.second() : 0),\n '지난달'\n )}\n {getActionButton(\n dayjs()\n .startOf('d')\n .subtract(7, 'd')\n .set('hour', value ? value.hour() : 0)\n .set('minute', value ? value.minute() : 0)\n .set('second', value ? value.second() : 0),\n '지난주'\n )}\n {getActionButton(\n dayjs()\n .startOf('d')\n .subtract(1, 'd')\n .set('hour', value ? value.hour() : 0)\n .set('minute', value ? value.minute() : 0)\n .set('second', value ? value.second() : 0),\n '어제'\n )}\n {getActionButton(\n dayjs()\n .startOf('d')\n .set('hour', value ? value.hour() : 0)\n .set('minute', value ? value.minute() : 0)\n .set('second', value ? value.second() : 0),\n '오늘'\n )}\n </Grid>\n </Grid>\n </Grid>\n )}\n {time && (\n <Grid item className='time'>\n <Grid container direction='column' className='time-container'>\n <Grid item className='time-title'>\n {time === 'hour' && (value ? value.format('HH시') : '00시')}\n {time === 'minute' && (value ? value.format('HH시 mm분') : '00시 00분')}\n {time === 'second' && (value ? value.format('HH시 mm분 ss초') : '00시 00분 00초')}\n </Grid>\n <Grid item className='time-select-wrap'>\n <Grid container style={{ height: '100%' }}>\n <Grid item style={{ position: 'relative', width: type === 'time' ? 240 : 80 }}>\n <PrivateTimeSelect\n ref={hourSelectRef}\n value={value && value.hour()}\n unit='시'\n list={hours}\n disableList={disableHours}\n cols={type === 'time' ? 3 : 1}\n onSelect={(newValue: number) => {\n onChange(\n 'hour',\n value ? value.set('hour', newValue) : dayjs().startOf('date').set('hour', newValue)\n );\n }}\n />\n </Grid>\n {(time === 'minute' || time === 'second') && (\n <Grid item style={{ position: 'relative', width: type === 'time' ? 240 : 80 }}>\n <PrivateTimeSelect\n ref={minuteSelectRef}\n value={value && value.minute()}\n unit='분'\n list={minutes}\n disableList={disableMinutes}\n cols={type === 'time' ? 3 : 1}\n listInterval={minuteInterval}\n onSelect={(newValue: number) => {\n onChange(\n 'minute',\n value ? value.set('minute', newValue) : dayjs().startOf('date').set('minute', newValue)\n );\n }}\n />\n </Grid>\n )}\n {time === 'second' && (\n <Grid item style={{ position: 'relative', width: type === 'time' ? 240 : 80 }}>\n <PrivateTimeSelect\n ref={secondSelectRef}\n value={value && value.second()}\n unit='초'\n list={seconds}\n disableList={disableSeconds}\n cols={type === 'time' ? 3 : 1}\n listInterval={secondInterval}\n onSelect={(newValue: number) => {\n onChange(\n 'second',\n value ? value.set('second', newValue) : dayjs().startOf('date').set('second', newValue)\n );\n }}\n />\n </Grid>\n )}\n </Grid>\n </Grid>\n {onClose && (\n <Grid item className='action-buttons'>\n <Button variant='text' onClick={onClose}>\n 닫기\n </Button>\n </Grid>\n )}\n </Grid>\n </Grid>\n )}\n </Grid>\n );\n }\n);\n\nPrivateStaticDateTimePicker.displayName = 'PrivateStaticDateTimePicker';\nPrivateStaticDateTimePicker.defaultProps = PrivateStaticDateTimePickerDefaultProps;\n\nexport default PrivateStaticDateTimePicker;\n","import React, { ReactNode, useCallback, useEffect, useId, useLayoutEffect, useMemo, useRef, useState } from 'react';\nimport classNames from 'classnames';\nimport { AdapterDayjs } from '@mui/x-date-pickers/AdapterDayjs';\nimport {\n LocalizationProvider,\n DateTimeValidationError,\n DesktopDateTimePicker,\n DesktopDateTimePickerSlotsComponentsProps,\n} from '@mui/x-date-pickers';\nimport { useAutoUpdateState, useFirstSkipEffect } from '@pdg/react-hook';\nimport { ClickAwayListener, InputAdornment, InputProps, FormHelperText, InputLabelProps } from '@mui/material';\nimport { IconText } from '@pdg/react-component';\nimport {\n PrivateDateTimePickerProps as Props,\n PrivateDateTimePickerDefaultProps,\n PrivateDateTimePickerCommands,\n PrivateDateTimePickerValue,\n} from './PrivateDateTimePicker.types';\nimport { useFormState } from '../../FormContext';\nimport {\n checkDateAvailable,\n empty,\n getAvailableDate,\n getAvailableDateVal,\n getDateTimeFormat,\n getDateTimeFormValueFormat,\n getDateValForAvailableDate,\n getDateValidationErrorText,\n makeAvailableDate,\n nextTick,\n notEmpty,\n} from '../../@util';\nimport { PrivateStaticDateTimePickerCommands, PrivateStaticDateTimePickerUnit } from '../PrivateStaticDateTimePicker';\nimport { PrivateStyledTooltip } from '../PrivateStyledTooltip';\nimport { FormIcon } from '../../FormCommon';\nimport { InputBaseProps } from '@mui/material/InputBase';\nimport './PrivateDateTimePicker.scss';\nimport { Dayjs } from 'dayjs';\nimport PrivateStaticDateTimePicker from '../PrivateStaticDateTimePicker';\n\nconst PrivateDateTimePicker = React.forwardRef<PrivateDateTimePickerCommands, Props>(\n (\n {\n variant: initVariant,\n size: initSize,\n color: initColor,\n focused: initFocused,\n labelShrink: initLabelShrink,\n fullWidth: initFullWidth,\n //--------------------------------------------------------------------------------------------------------------------\n name,\n type,\n time,\n value: initValue,\n data: initData,\n label: initLabel,\n labelIcon,\n format: initFormat,\n formValueFormat: initFormValueFormat,\n required,\n readOnly,\n disabled: initDisabled,\n width,\n error: initError,\n helperText,\n minDate,\n maxDate,\n disableFuture,\n disablePast,\n exceptValue,\n icon,\n startAdornment,\n endAdornment,\n align,\n hours,\n minutes,\n seconds,\n minuteInterval,\n secondInterval,\n readOnlyInput,\n hidden: initHidden,\n onChange,\n onValidate,\n //--------------------------------------------------------------------------------------------------------------------\n className,\n style: initStyle,\n sx,\n ...otherProps\n },\n ref\n ) => {\n /********************************************************************************************************************\n * ID\n * ******************************************************************************************************************/\n\n const id = useId();\n\n /********************************************************************************************************************\n * Ref\n * ******************************************************************************************************************/\n\n const privateStaticDateTimePickerRef = useRef<PrivateStaticDateTimePickerCommands>(null);\n const textFieldInputRef = useRef<HTMLInputElement>();\n const closeTimeoutRef = useRef<NodeJS.Timeout>();\n const mouseDownTimeRef = useRef<number>();\n const datePickerErrorRef = useRef<DateTimeValidationError>(null);\n const openValueRef = useRef<PrivateDateTimePickerValue>(null);\n\n /********************************************************************************************************************\n * FormState\n * ******************************************************************************************************************/\n\n const {\n variant: formVariant,\n size: formSize,\n color: formColor,\n focused: formFocused,\n labelShrink: formLabelShrink,\n fullWidth: formFullWidth,\n disabled: formDisabled,\n formColWithHelperText,\n onAddValueItem,\n onRemoveValueItem,\n onValueChange,\n onValueChangeByUser,\n onRequestSearchSubmit,\n } = useFormState();\n\n /********************************************************************************************************************\n * Memo - FormState\n * ******************************************************************************************************************/\n\n const variant = useMemo(() => (initVariant == null ? formVariant : initVariant), [initVariant, formVariant]);\n const size = useMemo(() => (initSize == null ? formSize : initSize), [initSize, formSize]);\n const color = useMemo(() => (initColor == null ? formColor : initColor), [initColor, formColor]);\n const focused = useMemo(() => (initFocused == null ? formFocused : initFocused), [initFocused, formFocused]);\n const labelShrink = useMemo(\n () => (initLabelShrink == null ? formLabelShrink : initLabelShrink),\n [initLabelShrink, formLabelShrink]\n );\n const fullWidth = useMemo(\n () => (initFullWidth == null ? formFullWidth : initFullWidth),\n [initFullWidth, formFullWidth]\n );\n\n /********************************************************************************************************************\n * State - open\n * ******************************************************************************************************************/\n\n const [open, setOpen] = useState(false);\n\n /********************************************************************************************************************\n * State\n * ******************************************************************************************************************/\n\n const [error, setError] = useAutoUpdateState<Props['error']>(initError);\n const [timeError, setTimeError] = useState<DateTimeValidationError>(null);\n const [errorHelperText, setErrorHelperText] = useState<Props['helperText']>();\n const [disabled, setDisabled] = useAutoUpdateState<Props['disabled']>(\n initDisabled == null ? formDisabled : initDisabled\n );\n const [hidden, setHidden] = useAutoUpdateState<Props['hidden']>(initHidden);\n const [data, setData] = useAutoUpdateState<Props['data']>(initData);\n\n /********************************************************************************************************************\n * Memo\n * ******************************************************************************************************************/\n\n const label = useMemo(() => {\n if (labelIcon) {\n return <IconText icon={labelIcon}>{initLabel}</IconText>;\n } else {\n return initLabel;\n }\n }, [initLabel, labelIcon]);\n\n const format = useMemo(() => {\n if (initFormat) {\n return initFormat;\n } else {\n return getDateTimeFormat(type, time);\n }\n }, [initFormat, time, type]);\n\n const formValueFormat = useMemo(() => {\n if (initFormValueFormat) {\n return initFormValueFormat;\n } else {\n return getDateTimeFormValueFormat(type, time);\n }\n }, [initFormValueFormat, time, type]);\n\n const availableDate = useMemo(\n () => makeAvailableDate(minDate, maxDate, !!disablePast, !!disableFuture),\n [disableFuture, disablePast, maxDate, minDate]\n );\n\n /********************************************************************************************************************\n * State - style\n * ******************************************************************************************************************/\n\n const [style] = useAutoUpdateState<Props['style']>(\n useCallback(() => {\n if (width != null) {\n return { ...initStyle, width };\n } else {\n return initStyle;\n }\n }, [initStyle, width])\n );\n\n /********************************************************************************************************************\n * Function - getFinalValue\n * ******************************************************************************************************************/\n\n const getFinalValue = useCallback((value: PrivateDateTimePickerValue): PrivateDateTimePickerValue => {\n return value;\n }, []);\n\n /********************************************************************************************************************\n * State - value\n * ******************************************************************************************************************/\n\n const [value, setValue] = useAutoUpdateState<PrivateDateTimePickerValue>(initValue || null, getFinalValue);\n const [inputValue, setInputValue] = useState<PrivateDateTimePickerValue>(null);\n\n /********************************************************************************************************************\n * Effect\n * ******************************************************************************************************************/\n\n useEffect(() => {\n if (value !== initValue) {\n if (onChange) onChange(value);\n onValueChange(name, value);\n }\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, []);\n\n useFirstSkipEffect(() => {\n if (error) validate(value);\n if (onChange) onChange(value);\n onValueChange(name, value);\n }, [value]);\n\n useEffect(() => {\n setInputValue(value);\n }, [value]);\n\n useFirstSkipEffect(() => {\n if (error && !timeError) validate(value);\n }, [timeError]);\n\n useFirstSkipEffect(() => {\n if (open) {\n openValueRef.current = value;\n } else {\n if (openValueRef.current !== value) {\n let runOnRequestSearchSubmit;\n if (openValueRef.current && value) {\n runOnRequestSearchSubmit = !openValueRef.current.isSame(value, 'second');\n } else {\n runOnRequestSearchSubmit = true;\n }\n\n if (runOnRequestSearchSubmit) {\n onRequestSearchSubmit(name, value);\n }\n }\n }\n }, [open]);\n\n useEffect(() => {\n if (type !== 'time' && time && value && (availableDate[0] || availableDate[1])) {\n const availableDateVal = getAvailableDateVal(availableDate, type, time);\n const valueVal = getDateValForAvailableDate(value, type, time);\n let timeError: DateTimeValidationError = null;\n\n if (availableDateVal[0] && valueVal < availableDateVal[0]) {\n timeError = 'minDate';\n }\n if (timeError == null && availableDateVal[1] && valueVal > availableDateVal[1]) {\n timeError = 'maxDate';\n }\n\n setTimeError(timeError);\n } else {\n setTimeError(null);\n }\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [value]);\n\n /********************************************************************************************************************\n * Memo\n * ******************************************************************************************************************/\n\n const wrapStyle = useMemo(\n () => ({\n display: hidden ? 'none' : fullWidth ? 'block' : 'inline-block',\n flex: fullWidth ? 1 : undefined,\n }),\n [hidden, fullWidth]\n );\n\n /********************************************************************************************************************\n * Function - focus\n * ******************************************************************************************************************/\n\n const focus = useCallback(() => {\n textFieldInputRef.current?.focus();\n }, [textFieldInputRef]);\n\n /********************************************************************************************************************\n * Function - setErrorErrorHelperText\n * ******************************************************************************************************************/\n\n const setErrorErrorHelperText = useCallback(\n (error: boolean, errorHelperText: ReactNode) => {\n setError(error);\n setErrorHelperText(errorHelperText);\n },\n [setError]\n );\n\n /********************************************************************************************************************\n * Function - validate\n * ******************************************************************************************************************/\n\n const validate = useCallback(\n (value: PrivateDateTimePickerValue) => {\n if (required && empty(value)) {\n setErrorErrorHelperText(true, '필수 입력 항목입니다.');\n return false;\n }\n if (value && !value.isValid()) {\n setErrorErrorHelperText(true, '형식이 일치하지 않습니다.');\n return false;\n }\n if (datePickerErrorRef.current) {\n setErrorErrorHelperText(true, getDateValidationErrorText(datePickerErrorRef.current));\n return false;\n }\n if (timeError) {\n setErrorErrorHelperText(true, getDateValidationErrorText(timeError));\n return false;\n }\n if (onValidate) {\n const onValidateResult = onValidate(value);\n if (onValidateResult != null && onValidateResult !== true) {\n setErrorErrorHelperText(true, onValidateResult);\n return false;\n }\n }\n\n setErrorErrorHelperText(false, undefined);\n\n return true;\n },\n [required, timeError, onValidate, setErrorErrorHelperText]\n );\n\n /********************************************************************************************************************\n * Commands\n * ******************************************************************************************************************/\n\n useLayoutEffect(() => {\n if (ref || onAddValueItem) {\n let lastValue = value;\n let lastData = data;\n let lastDisabled = !!disabled;\n let lastHidden = !!hidden;\n\n const commands: PrivateDateTimePickerCommands = {\n getType: () => 'default',\n getName: () => name,\n getReset: () => getFinalValue(initValue || null),\n reset: () => {\n lastValue = getFinalValue(initValue || null);\n setValue(lastValue);\n },\n getValue: () => lastValue,\n setValue: (value) => {\n lastValue = getFinalValue(value);\n setValue(lastValue);\n },\n getData: () => lastData,\n setData: (data) => {\n lastData = data;\n setData(data);\n },\n isExceptValue: () => !!exceptValue,\n isDisabled: () => lastDisabled,\n setDisabled: (disabled) => {\n lastDisabled = disabled;\n setDisabled(disabled);\n },\n isHidden: () => lastHidden,\n setHidden: (hidden) => {\n lastHidden = hidden;\n setHidden(hidden);\n },\n focus,\n focusValidate: focus,\n validate: () => validate(value),\n setError: (error: boolean, errorText: ReactNode | undefined) =>\n setErrorErrorHelperText(error, error ? errorText : undefined),\n getFormValueFormat: () => formValueFormat,\n };\n\n if (ref) {\n if (typeof ref === 'function') {\n ref(commands);\n } else {\n ref.current = commands;\n }\n }\n\n if (onAddValueItem) onAddValueItem(id, commands);\n\n return () => {\n if (ref) {\n if (typeof ref === 'function') {\n ref(null);\n } else {\n ref.current = null;\n }\n }\n\n if (onRemoveValueItem) onRemoveValueItem(id);\n };\n }\n }, [\n name,\n initValue,\n value,\n getFinalValue,\n exceptValue,\n disabled,\n focus,\n validate,\n formValueFormat,\n ref,\n onAddValueItem,\n onRemoveValueItem,\n id,\n setValue,\n setDisabled,\n setErrorErrorHelperText,\n data,\n setData,\n hidden,\n setHidden,\n ]);\n\n /********************************************************************************************************************\n * Event Handler\n * ******************************************************************************************************************/\n\n const handleChange = useCallback(\n (unit: PrivateStaticDateTimePickerUnit, newValue: PrivateDateTimePickerValue, keyboardInputValue?: string) => {\n let updateValue = true;\n if (notEmpty(keyboardInputValue)) {\n if (newValue) {\n if (!newValue.isValid()) {\n updateValue = false;\n }\n }\n }\n\n let finalValue = newValue;\n\n if (updateValue) {\n if (type !== 'time' && finalValue != null && keyboardInputValue == null) {\n const checkResult = checkDateAvailable(finalValue, availableDate, type, time);\n if (checkResult !== 'available') {\n const availableDateDate = getAvailableDate(availableDate, type, time);\n if (checkResult === 'min') {\n if (availableDateDate[0]) finalValue = availableDateDate[0];\n } else if (checkResult === 'max') {\n if (availableDateDate[1]) finalValue = availableDateDate[1];\n }\n }\n }\n\n let runOnRequestSearchSubmit = false;\n\n if (notEmpty(keyboardInputValue)) {\n if (!time || unit !== 'action_date') {\n runOnRequestSearchSubmit = !open; // 팝업창 열리지 않은 상태에서 날짜 키보드로 변경\n setOpen(false);\n }\n } else if (time) {\n if (time === unit) setOpen(false);\n }\n setValue(finalValue);\n\n nextTick(() => {\n onValueChangeByUser(name, finalValue);\n if (runOnRequestSearchSubmit) {\n onRequestSearchSubmit(name, finalValue);\n }\n });\n\n if (time) {\n if (finalValue) {\n switch (unit) {\n case 'date':\n case 'action_date':\n privateStaticDateTimePickerRef.current?.timeSelectScrollToDate(finalValue);\n break;\n case 'hour':\n privateStaticDateTimePickerRef.current?.timeSelectScrollToDate(finalValue, ['minute', 'second']);\n break;\n case 'minute':\n privateStaticDateTimePickerRef.current?.timeSelectScrollToDate(finalValue, ['second']);\n break;\n }\n }\n }\n }\n\n setInputValue(finalValue);\n },\n [type, time, setValue, availableDate, open, onValueChangeByUser, name, onRequestSearchSubmit]\n );\n\n const handleContainerFocus = useCallback(() => {\n if (closeTimeoutRef.current) {\n clearTimeout(closeTimeoutRef.current);\n closeTimeoutRef.current = undefined;\n }\n }, []);\n\n const handleContainerBlur = useCallback(() => {\n if (closeTimeoutRef.current) {\n clearTimeout(closeTimeoutRef.current);\n closeTimeoutRef.current = undefined;\n }\n\n if (!mouseDownTimeRef.current || new Date().getTime() - mouseDownTimeRef.current > 100) {\n closeTimeoutRef.current = setTimeout(() => {\n closeTimeoutRef.current = undefined;\n setOpen(false);\n }, 10);\n }\n }, []);\n\n const handleContainerMouseDown = useCallback(() => {\n if (closeTimeoutRef.current) {\n clearTimeout(closeTimeoutRef.current);\n closeTimeoutRef.current = undefined;\n }\n mouseDownTimeRef.current = new Date().getTime();\n }, []);\n\n /********************************************************************************************************************\n * Memo\n * ******************************************************************************************************************/\n\n const slotProps = useMemo<DesktopDateTimePickerSlotsComponentsProps<Dayjs>>(() => {\n const textFieldInputLabelProps: Partial<InputLabelProps> = {};\n if (labelShrink) {\n textFieldInputLabelProps.shrink = labelShrink;\n }\n\n const readOnly = readOnlyInput;\n const inputProps: InputBaseProps['inputProps'] = {\n readOnly,\n };\n if (readOnly) {\n inputProps.tabIndex = -1;\n inputProps.className = classNames(inputProps.className, 'Mui-disabled');\n }\n\n const muiInputProps: InputProps = { endAdornment: undefined };\n if (startAdornment || icon || muiInputProps.startAdornment) {\n muiInputProps.startAdornment = (\n <>\n {icon && (\n <InputAdornment position='start'>\n <FormIcon fontSize='small'>{icon}</FormIcon>\n </InputAdornment>\n )}\n {startAdornment && <InputAdornment position='start'>{startAdornment}</InputAdornment>}\n {muiInputProps.startAdornment}\n </>\n );\n }\n if (endAdornment) {\n muiInputProps.endAdornment = (\n <>{endAdornment && <InputAdornment position='end'>{endAdornment}</InputAdornment>}</>\n );\n }\n\n return {\n textField: {\n className: classNames('input-text-field', `align-${align}`),\n inputRef: (ref) => {\n textFieldInputRef.current = ref;\n },\n variant,\n size,\n color,\n focused,\n InputLabelProps: textFieldInputLabelProps,\n InputProps: muiInputProps,\n inputProps,\n required,\n fullWidth,\n helperText: undefined,\n error: !!error || !!timeError,\n style,\n sx,\n onFocus: () => {\n setOpen(true);\n },\n onClick: () => {\n setOpen(true);\n },\n },\n };\n }, [\n align,\n color,\n endAdornment,\n error,\n focused,\n fullWidth,\n icon,\n labelShrink,\n readOnlyInput,\n required,\n size,\n startAdornment,\n style,\n sx,\n timeError,\n variant,\n ]);\n\n /********************************************************************************************************************\n * Render\n * ******************************************************************************************************************/\n\n return (\n <LocalizationProvider dateAdapter={AdapterDayjs}>\n <ClickAwayListener mouseEvent='onMouseDown' touchEvent='onTouchStart' onClickAway={() => setOpen(false)}>\n <div\n className={classNames(className, 'PrivateDateTimePicker')}\n style={wrapStyle}\n onMouseDown={handleContainerMouseDown}\n onFocus={handleContainerFocus}\n onBlur={handleContainerBlur}\n >\n <PrivateStyledTooltip\n open={disabled || readOnly ? false : open}\n PopperProps={{\n modifiers: [\n {\n name: 'offset',\n options: {\n offset: [0, error && helperText ? 8 : -14],\n },\n },\n ],\n }}\n title={\n <PrivateStaticDateTimePicker\n {...otherProps}\n ref={privateStaticDateTimePickerRef}\n type={type}\n time={time}\n value={value}\n availableDate={availableDate}\n minDate={minDate}\n maxDate={maxDate}\n disablePast={disablePast}\n disableFuture={disableFuture}\n hours={hours}\n minutes={minutes}\n seconds={seconds}\n minuteInterval={minuteInterval}\n secondInterval={secondInterval}\n onChange={handleChange}\n onAccept={() => !time && setOpen(false)}\n onClose={() => setOpen(false)}\n />\n }\n >\n <div style={{ display: fullWidth ? 'block' : 'inline-block' }}>\n <DesktopDateTimePicker\n value={inputValue}\n label={label}\n open={false}\n format={format}\n disabled={disabled}\n readOnly={readOnly}\n minDate={minDate}\n maxDate={maxDate}\n disablePast={disablePast}\n disableFuture={disableFuture}\n onClose={() => setOpen(false)}\n onError={(reason) => (datePickerErrorRef.current = reason)}\n onChange={(newValue) => handleChange('date', newValue)}\n slotProps={slotProps}\n {...otherProps}\n />\n </div>\n </PrivateStyledTooltip>\n {!formColWithHelperText && (helperText || (error && errorHelperText)) && (\n <FormHelperText error={error} style={{ marginLeft: variant === 'standard' ? 0 : 14 }}>\n {error ? errorHelperText : helperText}\n </FormHelperText>\n )}\n </div>\n </ClickAwayListener>\n </LocalizationProvider>\n );\n }\n);\n\nPrivateDateTimePicker.displayName = 'PrivateDateTimePicker';\nPrivateDateTimePicker.defaultProps = PrivateDateTimePickerDefaultProps;\n\nexport default PrivateDateTimePicker;\n","import { ReactNode } from 'react';\n\nexport interface PrivateAlertDialogProps {\n color?: 'primary' | 'secondary' | 'error' | 'info' | 'success' | 'warning';\n title?: ReactNode;\n content?: ReactNode;\n open?: boolean;\n onClose?: () => void;\n}\n\nexport const PrivateAlertDialogDefaultProps: Pick<PrivateAlertDialogProps, 'color'> = {\n color: 'primary',\n};\n","import React, { useCallback } from 'react';\nimport { PrivateAlertDialogProps as Props, PrivateAlertDialogDefaultProps } from './PrivateAlertDialog.types';\nimport { Button, Dialog, DialogActions, DialogContent, DialogTitle } from '@mui/material';\n\nconst PrivateAlertDialog: React.FC<Props> = ({ color, open, title, content, onClose }) => {\n const handleClose = useCallback(() => {\n onClose && onClose();\n }, [onClose]);\n\n return (\n <Dialog className={`color-${color}`} open={!!open} onClose={handleClose} aria-labelledby='alert-dialog-title'>\n {title && <DialogTitle id='alert-dialog-title'>{title}</DialogTitle>}\n <DialogContent>{content}</DialogContent>\n <DialogActions>\n <Button variant='text' onClick={handleClose} autoFocus>\n 확인\n </Button>\n </DialogActions>\n </Dialog>\n );\n};\n\nPrivateAlertDialog.displayName = 'PrivateAlertDialog';\nPrivateAlertDialog.defaultProps = PrivateAlertDialogDefaultProps;\n\nexport default PrivateAlertDialog;\n","import React, { ReactNode } from 'react';\nimport { Dayjs } from 'dayjs';\nimport { TextFieldProps } from '@mui/material';\nimport { DateValidationError } from '@mui/x-date-pickers';\nimport { CommonSxProps, FormValueItemProps } from '../../@types';\nimport { DesktopDatePickerProps } from '@mui/x-date-pickers';\nexport type PrivateInputDatePickerValue = Dayjs | null;\n\nexport interface PrivateInputDatePickerProps\n extends CommonSxProps,\n Pick<\n DesktopDatePickerProps<Dayjs>,\n 'name' | 'disablePast' | 'disableFuture' | 'shouldDisableYear' | 'shouldDisableMonth' | 'shouldDisableDate'\n >,\n Pick<\n FormValueItemProps<PrivateInputDatePickerValue>,\n 'variant' | 'size' | 'color' | 'focused' | 'fullWidth' | 'readOnly' | 'label' | 'labelIcon' | 'error'\n > {\n className?: string;\n value: PrivateInputDatePickerValue;\n disabled?: boolean;\n required?: boolean;\n labelShrink?: boolean;\n inputRef?: React.MutableRefObject<HTMLInputElement | undefined>;\n format: string;\n icon?: string;\n startAdornment?: ReactNode;\n endAdornment?: ReactNode;\n minDate?: Dayjs;\n maxDate?: Dayjs;\n align?: 'left' | 'center' | 'right';\n readOnlyInput?: boolean;\n onChange(newValue: PrivateInputDatePickerValue): void;\n onFocus: TextFieldProps['onFocus'];\n onBlur?: TextFieldProps['onBlur'];\n onError?(reason: DateValidationError, value: PrivateInputDatePickerValue): void;\n}\n\nexport const PrivateInputDatePickerDefaultProps: Pick<PrivateInputDatePickerProps, 'align'> = {\n align: 'center',\n};\n","import React, { useId, useMemo } from 'react';\nimport classNames from 'classnames';\nimport {\n PrivateInputDatePickerProps as Props,\n PrivateInputDatePickerDefaultProps,\n} from './PrivateInputDatePicker.types';\nimport { InputProps, InputAdornment, InputBaseComponentProps } from '@mui/material';\nimport { DesktopDatePicker } from '@mui/x-date-pickers';\nimport { Dayjs } from 'dayjs';\nimport { DesktopDatePickerSlotsComponentsProps } from '@mui/x-date-pickers/DesktopDatePicker/DesktopDatePicker.types';\nimport { FormIcon } from '../../FormCommon';\nimport './PrivateInputDatePicker.scss';\n\nconst PrivateInputDatePicker = React.forwardRef<HTMLDivElement, Props>(\n (\n {\n variant,\n size,\n color,\n focused,\n fullWidth,\n disabled,\n readOnly,\n required,\n labelShrink,\n //--------------------------------------------------------------------------------------------------------------------\n className,\n style,\n sx,\n value,\n label: initLabel,\n labelIcon,\n inputRef,\n format,\n error,\n icon,\n startAdornment,\n endAdornment,\n align,\n readOnlyInput,\n onFocus,\n onBlur,\n ...props\n },\n ref\n ) => {\n /********************************************************************************************************************\n * ID\n * ******************************************************************************************************************/\n\n const id = useId();\n\n /********************************************************************************************************************\n * Memo\n * ******************************************************************************************************************/\n\n const label = useMemo(\n () =>\n labelIcon ? (\n <>\n <FormIcon style={{ verticalAlign: 'middle', marginRight: 4 }}>{labelIcon}</FormIcon>\n <span style={{ verticalAlign: 'middle' }}>{initLabel}</span>\n </>\n ) : (\n initLabel\n ),\n [initLabel, labelIcon]\n );\n\n const inputLabelProps = useMemo(() => {\n if (labelShrink) {\n return {\n shrink: true,\n };\n }\n }, [labelShrink]);\n\n const slotProps = useMemo<DesktopDatePickerSlotsComponentsProps<Dayjs>>(() => {\n const muiInputProps: InputProps = {\n endAdornment: undefined,\n };\n if (startAdornment || icon || muiInputProps.startAdornment) {\n muiInputProps.startAdornment = (\n <>\n {icon && (\n <InputAdornment position='start'>\n <FormIcon fontSize='small'>{icon}</FormIcon>\n </InputAdornment>\n )}\n {startAdornment && <InputAdornment position='start'>{startAdornment}</InputAdornment>}\n {muiInputProps.startAdornment}\n </>\n );\n }\n if (endAdornment) {\n muiInputProps.endAdornment = (\n <>{endAdornment && <InputAdornment position='end'>{endAdornment}</InputAdornment>}</>\n );\n }\n\n const inputProps: InputBaseComponentProps = {};\n if (readOnly) {\n inputProps.tabIndex = -1;\n inputProps.className = classNames(inputProps.className, 'Mui-disabled');\n }\n\n return {\n textField: {\n variant,\n size,\n color,\n focused,\n fullWidth,\n required,\n name: id,\n label,\n style,\n sx,\n error,\n InputProps: muiInputProps,\n inputProps,\n inputRef: (ref) => {\n if (inputRef) {\n inputRef.current = ref;\n }\n },\n InputLabelProps: inputLabelProps,\n onFocus: (e) => {\n if (onFocus) onFocus(e);\n },\n onBlur: (e) => {\n if (onBlur) onBlur(e);\n },\n },\n };\n }, [\n color,\n endAdornment,\n error,\n focused,\n fullWidth,\n icon,\n id,\n inputLabelProps,\n inputRef,\n label,\n onBlur,\n onFocus,\n readOnly,\n required,\n size,\n startAdornment,\n style,\n sx,\n variant,\n ]);\n\n /********************************************************************************************************************\n * Render\n * ******************************************************************************************************************/\n\n return (\n <DesktopDatePicker\n {...props}\n ref={ref}\n className={classNames(className, 'PrivateInputDatePicker', `align-${align}`)}\n open={false}\n value={value}\n format={format}\n disabled={disabled}\n readOnly={readOnly || readOnlyInput}\n slotProps={slotProps}\n />\n );\n }\n);\n\nPrivateInputDatePicker.displayName = 'PrivateInputDatePicker';\nPrivateInputDatePicker.defaultProps = PrivateInputDatePickerDefaultProps;\n\nexport default PrivateInputDatePicker;\n","export type PrivateYearRangePickerSelectType = 'start' | 'end';\n\nexport type PrivateYearRangePickerBaseValue = number;\n\nexport type PrivateYearRangePickerDataValue = PrivateYearRangePickerBaseValue | null;\n\nexport type PrivateYearRangePickerValue = [PrivateYearRangePickerDataValue, PrivateYearRangePickerDataValue];\n\nexport interface PrivateYearRangePickerProps {\n selectType: PrivateYearRangePickerSelectType;\n value: PrivateYearRangePickerValue;\n minYear?: PrivateYearRangePickerBaseValue;\n maxYear?: PrivateYearRangePickerBaseValue;\n disablePast?: boolean;\n disableFuture?: boolean;\n hideHeader?: boolean;\n onChange(value: PrivateYearRangePickerValue, selectType: PrivateYearRangePickerSelectType): void;\n}\n\nexport const PrivateYearRangePickerDefaultProps: Required<Pick<PrivateYearRangePickerProps, 'minYear' | 'maxYear'>> = {\n minYear: 2020,\n maxYear: 2050,\n};\n","import {\n PrivateYearRangePickerBaseValue,\n PrivateYearRangePickerProps,\n PrivateYearRangePickerSelectType,\n} from '../PrivateYearRangePicker.types';\n\nexport interface PrivateYearRangePickerYearListProps\n extends Pick<PrivateYearRangePickerProps, 'value' | 'disablePast' | 'disableFuture'>,\n Required<Pick<PrivateYearRangePickerProps, 'minYear' | 'maxYear'>> {\n selectType: PrivateYearRangePickerSelectType;\n displayValue: PrivateYearRangePickerBaseValue[];\n onChange(year: number): void;\n}\n\nexport const PrivateYearRangePickerYearListDefaultProps = {};\n","import { ButtonProps } from '@mui/material';\n\nexport interface PrivateYearRangePickerYearProps\n extends Pick<ButtonProps, 'onClick' | 'onMouseEnter' | 'onMouseLeave'> {\n year: number;\n disabled?: boolean;\n isDefault?: boolean;\n selected?: boolean;\n selectedStart?: boolean;\n selectedEnd?: boolean;\n selectedTemp?: boolean;\n}\n\nexport const PrivateYearRangePickerYearDefaultProps = {};\n","import { Button, Grid, styled } from '@mui/material';\n\nexport const StyledContainer = styled(Grid)`\n padding: 4px;\n position: relative;\n`;\n\nexport const StyledButton = styled(Button)`\n font-size: 12px;\n background-color: transparent;\n color: unset;\n outline: 0;\n font-weight: 400;\n line-height: 1.75;\n border-radius: 18px;\n cursor: pointer;\n width: 100%;\n border: 1px solid transparent;\n\n &:focus {\n background-color: rgba(0, 0, 0, 0.12);\n }\n &.default {\n background-color: #efefef;\n }\n &.selected,\n &.selected-temp {\n background-color: rgba(66, 165, 245, 0.6);\n }\n &.selected-start,\n &.selected-end {\n color: #fff;\n background-color: #1976d2;\n }\n &.disabled {\n opacity: 0.8;\n border: 1px solid transparent;\n }\n &:hover:not(.disabled):not(.selected-start):not(.selected-end) {\n color: inherit;\n border: 1px solid transparent;\n background-color: rgba(66, 165, 245, 0.3);\n }\n`;\n","import React, { useMemo } from 'react';\nimport {\n PrivateYearRangePickerYearProps as Props,\n PrivateYearRangePickerYearDefaultProps,\n} from './PrivateYearRangePickerYear.types';\nimport classNames from 'classnames';\nimport { StyledContainer, StyledButton } from './PrivateYearRangePickerYear.style';\n\nconst PrivateYearRangePickerYear = React.forwardRef<HTMLDivElement, Props>(\n (\n {\n year,\n disabled,\n isDefault,\n selected,\n selectedStart,\n selectedEnd,\n selectedTemp,\n onClick,\n onMouseEnter,\n onMouseLeave,\n },\n ref\n ) => {\n const className = useMemo(\n () =>\n classNames(\n isDefault && 'default',\n selected && 'selected',\n selectedStart && 'selected-start',\n selectedEnd && 'selected-end',\n selectedTemp && 'selected-temp',\n disabled && 'disabled'\n ),\n [isDefault, selected, selectedStart, selectedEnd, selectedTemp, disabled]\n );\n\n return (\n <StyledContainer className='PrivateYearRangePickerYear' ref={ref} item xs={4}>\n <StyledButton\n className={className}\n disabled={disabled}\n onClick={onClick}\n onMouseEnter={onMouseEnter}\n onMouseLeave={onMouseLeave}\n >\n {year}\n </StyledButton>\n </StyledContainer>\n );\n }\n);\n\nPrivateYearRangePickerYear.displayName = 'PrivateYearRangePickerYear';\nPrivateYearRangePickerYear.defaultProps = PrivateYearRangePickerYearDefaultProps;\n\nexport default PrivateYearRangePickerYear;\n","import { Grid, styled } from '@mui/material';\n\nexport const StyledContainer = styled(Grid)`\n width: 240px;\n height: inherit;\n max-height: 240px;\n overflow-y: auto;\n padding: 4px;\n`;\n","import React, { useCallback, useEffect, useMemo, useRef, useState } from 'react';\nimport {\n PrivateYearRangePickerYearListProps as Props,\n PrivateYearRangePickerYearListDefaultProps,\n} from './PrivateYearRangePickerYearList.types';\nimport PrivateYearRangePickerYear from '../PrivateYearRangePickerYear';\nimport { StyledContainer } from './PrivateYearRangePickerYearList.style';\n\nlet _lastCloseTime = 0;\n\nconst PrivateYearRangePickerYearList: React.FC<Props> = ({\n value,\n displayValue,\n selectType,\n minYear,\n maxYear,\n disablePast,\n disableFuture,\n onChange,\n}) => {\n /********************************************************************************************************************\n * Ref\n * ******************************************************************************************************************/\n\n const yearsContainerRef = useRef<HTMLDivElement>(null);\n const startButtonRef = useRef<HTMLDivElement | null>(null);\n const endButtonRef = useRef<HTMLDivElement | null>(null);\n const mouseOverTimer = useRef<NodeJS.Timeout>();\n\n /********************************************************************************************************************\n * State\n * ******************************************************************************************************************/\n\n const [mouseOverYear, setMouseOverYear] = useState<number>();\n\n /********************************************************************************************************************\n * Effect\n * ******************************************************************************************************************/\n\n useEffect(() => {\n return () => {\n if (mouseOverTimer.current) {\n clearTimeout(mouseOverTimer.current);\n mouseOverTimer.current = undefined;\n }\n };\n }, []);\n\n useEffect(() => {\n if (!displayValue[0]) {\n startButtonRef.current = null;\n }\n if (!value[1]) {\n endButtonRef.current = null;\n }\n }, [displayValue, value]);\n\n useEffect(() => {\n const container = yearsContainerRef.current;\n const startButton = startButtonRef.current;\n const endButton = endButtonRef.current;\n\n if (container) {\n const containerScrollTop = container.scrollTop;\n const containerScrollBottom = container.scrollTop + container.offsetHeight;\n const containerTop = container.offsetTop;\n const containerHalf = container.offsetHeight / 2;\n const containerHeight = container.offsetHeight;\n\n if (startButton && endButton) {\n if (new Date().getTime() - _lastCloseTime > 100) {\n const startButtonTop = startButton.offsetTop - containerTop;\n const endButtonBottom = endButton.offsetTop + endButton.offsetHeight - containerTop;\n const center = startButtonTop + (endButtonBottom - startButtonTop) / 2;\n let scrollY = center - containerHalf;\n if (selectType === 'start' && scrollY > startButtonTop - 4) {\n scrollY = startButtonTop - 4;\n } else if (selectType === 'end' && scrollY + containerHeight < endButtonBottom + 4) {\n scrollY = endButtonBottom + 4 - containerHeight;\n }\n\n container.scrollTo(0, scrollY);\n }\n } else if (startButton) {\n const startButtonTop = startButton.offsetTop - containerTop - 4;\n const startButtonBottom = startButtonTop + startButton.offsetHeight + 8;\n\n if (startButtonTop < containerScrollTop || startButtonBottom > containerScrollBottom) {\n container.scrollTo(0, startButtonTop);\n }\n } else if (endButton) {\n const endButtonBottom = endButton.offsetTop + endButton.offsetHeight - containerTop + 4;\n container.scrollTo(0, endButtonBottom - containerHeight);\n }\n }\n\n return () => {\n _lastCloseTime = new Date().getTime();\n };\n }, [selectType]);\n\n /********************************************************************************************************************\n * Memo\n * ******************************************************************************************************************/\n\n const nowYear = useMemo(() => new Date().getFullYear(), []);\n\n const years = useMemo(() => {\n const newYears: {\n year: number;\n isDefault?: boolean;\n selected?: boolean;\n selectedStart?: boolean;\n selectedEnd?: boolean;\n selectedTemp?: boolean;\n disabled?: boolean;\n }[] = [];\n for (let i = minYear; i <= maxYear; i += 1) {\n newYears.push({\n year: i,\n isDefault: !value[0] && !value[1] && i === displayValue[0],\n selected: !!value[0] && !!value[1] && i >= value[0] && i <= value[1],\n selectedStart: i === value[0],\n selectedEnd: i === value[1],\n selectedTemp:\n (selectType === 'start' && !!value[1] && !!mouseOverYear && i < value[1] && i >= mouseOverYear) ||\n (selectType === 'end' && !!value[0] && !!mouseOverYear && i > value[0] && i <= mouseOverYear),\n disabled: (disablePast && i < nowYear) || (disableFuture && i > nowYear),\n });\n }\n return newYears;\n }, [minYear, maxYear, value, displayValue, selectType, mouseOverYear, disablePast, nowYear, disableFuture]);\n\n /********************************************************************************************************************\n * Function\n * ******************************************************************************************************************/\n\n const mouseOver = useCallback((year: number | undefined) => {\n if (mouseOverTimer.current) {\n clearTimeout(mouseOverTimer.current);\n mouseOverTimer.current = undefined;\n }\n if (year) {\n setMouseOverYear(year);\n } else {\n mouseOverTimer.current = setTimeout(() => {\n mouseOverTimer.current = undefined;\n setMouseOverYear(undefined);\n }, 100);\n }\n }, []);\n\n /********************************************************************************************************************\n * Render\n * ******************************************************************************************************************/\n\n return (\n <StyledContainer className='PrivateYearRangePickerYearList' container ref={yearsContainerRef}>\n {years.map((info) => (\n <PrivateYearRangePickerYear\n key={info.year}\n ref={(ref) => {\n if (info.selectedStart) {\n startButtonRef.current = ref;\n if (info.selectedEnd) {\n endButtonRef.current = ref;\n }\n } else if (info.selectedEnd) {\n endButtonRef.current = ref;\n }\n }}\n year={info.year}\n isDefault={info.isDefault}\n selected={info.selected}\n selectedStart={info.selectedStart}\n selectedEnd={info.selectedEnd}\n selectedTemp={info.selectedTemp}\n disabled={info.disabled}\n onClick={() => onChange(info.year)}\n onMouseEnter={() => mouseOver(info.year)}\n onMouseLeave={() => mouseOver(undefined)}\n />\n ))}\n </StyledContainer>\n );\n};\n\nPrivateYearRangePickerYearList.displayName = 'PrivateYearRangePickerYearList';\nPrivateYearRangePickerYearList.defaultProps = PrivateYearRangePickerYearListDefaultProps;\n\nexport default PrivateYearRangePickerYearList;\n","import { Button, styled } from '@mui/material';\n\nexport const StyledTitleContainer = styled('div')`\n display: flex;\n justify-content: center;\n align-items: center;\n border-bottom: 1px solid #efefef;\n padding: 10px;\n font-size: 14px;\n`;\n\nexport const StyledYear = styled('span')``;\n\nexport const StyledYearError = styled('span')`\n color: ${({ theme }) => theme.palette.error.main};\n`;\n\nexport const StyledTitleGap = styled('span')`\n padding: 0 7px;\n opacity: 0.5;\n`;\n\nexport const StyledActionContainer = styled('div')`\n border-top: 1px solid #efefef;\n padding: 10px;\n text-align: right;\n &:empty {\n display: none;\n }\n`;\n\nexport const StyledActionButton = styled(Button)`\n min-width: 0;\n color: unset;\n &:not(:first-child) {\n margin-left: 5px;\n }\n &.disabled {\n color: rgba(0, 0, 0, 0.5);\n }\n`;\n","import React, { useCallback, useMemo } from 'react';\nimport {\n PrivateYearRangePickerProps as Props,\n PrivateYearRangePickerDefaultProps,\n PrivateYearRangePickerValue,\n} from './PrivateYearRangePicker.types';\nimport { useAutoUpdateState } from '@pdg/react-hook';\nimport PrivateYearRangePickerYearList from './PrivateYearRangePickerYearList';\nimport {\n StyledActionButton,\n StyledActionContainer,\n StyledTitleContainer,\n StyledTitleGap,\n StyledYear,\n StyledYearError,\n} from './PrivateYearRangePicker.style';\n\nconst DEFAULT_VALUE = [null, null];\n\nconst PrivateYearRangePicker: React.FC<Props> = ({\n selectType,\n value: initValue,\n minYear: initMinYear,\n maxYear: initMaxYear,\n disablePast,\n disableFuture,\n hideHeader,\n onChange,\n}) => {\n /********************************************************************************************************************\n * State\n * ******************************************************************************************************************/\n\n const [value, setValue] = useAutoUpdateState<PrivateYearRangePickerValue>(initValue || DEFAULT_VALUE);\n\n /********************************************************************************************************************\n * Memo\n * ******************************************************************************************************************/\n\n const nowYear = useMemo(() => new Date().getFullYear(), []);\n\n const minYear = useMemo(\n () => (initMinYear === undefined ? PrivateYearRangePickerDefaultProps.minYear : initMinYear),\n [initMinYear]\n );\n const maxYear = useMemo(\n () => (initMaxYear === undefined ? PrivateYearRangePickerDefaultProps.maxYear : initMaxYear),\n [initMaxYear]\n );\n\n const minAvailableYear = useMemo(() => {\n if (disablePast) {\n return nowYear > minYear ? nowYear : minYear;\n } else {\n return minYear;\n }\n }, [disablePast, minYear, nowYear]);\n\n const maxAvailableYear = useMemo(() => {\n if (disableFuture) {\n return nowYear < maxYear ? nowYear : maxYear;\n } else {\n return maxYear;\n }\n }, [disableFuture, maxYear, nowYear]);\n\n const displayValue = useMemo(() => {\n let defaultYear = nowYear;\n if (minAvailableYear > defaultYear) {\n defaultYear = minYear;\n } else if (maxAvailableYear < defaultYear) {\n defaultYear = maxAvailableYear;\n }\n\n if (value) {\n return [value[0] || value[1] || defaultYear, value[1] || value[0] || defaultYear];\n } else {\n return [defaultYear, defaultYear];\n }\n }, [maxAvailableYear, minAvailableYear, minYear, nowYear, value]);\n\n const displayValueError = useMemo(\n () => [\n displayValue[0] < minAvailableYear || displayValue[0] > maxAvailableYear,\n displayValue[1] < minAvailableYear || displayValue[1] > maxAvailableYear,\n ],\n [displayValue, minAvailableYear, maxAvailableYear]\n );\n\n /********************************************************************************************************************\n * action button\n * ******************************************************************************************************************/\n\n const getActionButton = useCallback(\n (fromYear: number, toYear: number, label: string) => {\n if (fromYear < minAvailableYear || toYear > maxAvailableYear) {\n return undefined;\n } else {\n const newValue: PrivateYearRangePickerValue = [\n Math.max(fromYear, minAvailableYear),\n Math.min(toYear, maxAvailableYear),\n ];\n return (\n <StyledActionButton\n variant='text'\n onClick={() => {\n setValue(newValue);\n onChange(newValue, 'end');\n }}\n >\n {label}\n </StyledActionButton>\n );\n }\n },\n [maxAvailableYear, minAvailableYear, onChange, setValue]\n );\n\n const actionButtons = useMemo(() => {\n return (\n <StyledActionContainer>\n {getActionButton(nowYear - 2, nowYear, '최근 3년')}\n {getActionButton(nowYear - 4, nowYear, '최근 5년')}\n {getActionButton(nowYear - 9, nowYear, '최근 10년')}\n </StyledActionContainer>\n );\n }, [getActionButton, nowYear]);\n\n /********************************************************************************************************************\n * Event Handler\n * ******************************************************************************************************************/\n\n const handleYearChange = useCallback(\n (valueYear: number) => {\n const newValue: PrivateYearRangePickerValue = [...value];\n\n if (minAvailableYear && valueYear < minAvailableYear) {\n valueYear = minAvailableYear;\n } else if (maxAvailableYear && valueYear > maxAvailableYear) {\n valueYear = maxAvailableYear;\n }\n\n if (selectType === 'start') {\n newValue[0] = valueYear;\n } else {\n newValue[1] = valueYear;\n }\n\n if (selectType === 'start' && newValue[1]) {\n if (newValue[1] < (newValue[0] || 0)) {\n newValue[1] = newValue[0];\n }\n onChange(newValue, selectType);\n } else if (selectType === 'end' && newValue[0]) {\n if (newValue[0] > (newValue[1] || 9999)) {\n newValue[0] = newValue[1];\n onChange(newValue, 'start');\n } else {\n onChange(newValue, selectType);\n }\n } else {\n onChange(newValue, selectType);\n }\n\n setValue(newValue);\n },\n [value, minAvailableYear, maxAvailableYear, selectType, setValue, onChange]\n );\n\n /********************************************************************************************************************\n * Render\n * ******************************************************************************************************************/\n\n return (\n <div className='PrivateYearRangePicker'>\n {!hideHeader && (\n <StyledTitleContainer>\n {displayValueError[0] ? (\n <StyledYearError>{displayValue[0]}년</StyledYearError>\n ) : (\n <StyledYear>{displayValue[0]}년</StyledYear>\n )}\n <StyledTitleGap>~</StyledTitleGap>\n {displayValueError[1] ? (\n <StyledYearError>{displayValue[1]}년</StyledYearError>\n ) : (\n <StyledYear>{displayValue[1]}년</StyledYear>\n )}\n </StyledTitleContainer>\n )}\n <div>\n <PrivateYearRangePickerYearList\n value={value}\n selectType={selectType}\n displayValue={displayValue}\n minYear={minYear}\n maxYear={maxYear}\n disablePast={disablePast}\n disableFuture={disableFuture}\n onChange={handleYearChange}\n />\n </div>\n {actionButtons}\n </div>\n );\n};\n\nPrivateYearRangePicker.displayName = 'PrivateYearRangePicker';\nPrivateYearRangePicker.defaultProps = PrivateYearRangePickerDefaultProps;\n\nexport default PrivateYearRangePicker;\n","import { CSSProperties } from 'react';\n\nexport type PrivateYearPickerBaseValue = number;\n\nexport type PrivateYearPickerValue = PrivateYearPickerBaseValue | null;\n\nexport interface PrivateYearPickerProps {\n style?: CSSProperties;\n value: PrivateYearPickerValue;\n minYear?: PrivateYearPickerBaseValue;\n maxYear?: PrivateYearPickerBaseValue;\n disablePast?: boolean;\n disableFuture?: boolean;\n hideHeader?: boolean;\n selectFromYear?: PrivateYearPickerValue;\n selectToYear?: PrivateYearPickerValue;\n onChange(value: PrivateYearPickerBaseValue, isClick: boolean): void;\n}\n\nexport const PrivateYearPickerDefaultProps: Required<Pick<PrivateYearPickerProps, 'minYear' | 'maxYear'>> = {\n minYear: 2020,\n maxYear: 2050,\n};\n","import { PrivateYearPickerBaseValue, PrivateYearPickerProps, PrivateYearPickerValue } from '../PrivateYearPicker.types';\n\nexport interface PrivateYearPickerYearListProps\n extends Pick<PrivateYearPickerProps, 'value' | 'disablePast' | 'disableFuture'>,\n Required<Pick<PrivateYearPickerProps, 'minYear' | 'maxYear'>> {\n selectFromYear?: PrivateYearPickerValue;\n selectToYear?: PrivateYearPickerValue;\n onChange(year: PrivateYearPickerBaseValue): void;\n}\n\nexport const PrivateYearPickerYearListDefaultProps = {};\n","import { ButtonProps } from '@mui/material';\n\nexport interface PrivateYearPickerYearProps extends Pick<ButtonProps, 'onClick' | 'onMouseEnter' | 'onMouseLeave'> {\n year: number;\n range?: boolean;\n disabled?: boolean;\n isDefault?: boolean;\n active?: boolean;\n selected?: boolean;\n selectedStart?: boolean;\n selectedEnd?: boolean;\n selectedTemp?: boolean;\n}\n\nexport const PrivateYearPickerYearDefaultProps = {};\n","import { Button, Grid, styled } from '@mui/material';\n\nexport const StyledContainer = styled(Grid)`\n padding: 4px;\n position: relative;\n`;\n\nexport const StyledButton = styled(Button)`\n font-size: 12px;\n background-color: transparent;\n color: unset;\n outline: 0;\n font-weight: 400;\n line-height: 1.75;\n border-radius: 18px;\n cursor: pointer;\n width: 100%;\n border: 1px solid transparent;\n\n &:focus {\n background-color: rgba(0, 0, 0, 0.12);\n }\n &.default {\n background-color: #efefef;\n }\n &.selected,\n &.selected-temp {\n background-color: rgba(66, 165, 245, 0.6);\n }\n &.selected-start,\n &.selected-end {\n color: #fff;\n background-color: rgba(25, 118, 210, 1);\n\n &.range:not(.active) {\n background-color: rgba(25, 118, 210, 0.8);\n }\n }\n &.active {\n color: #fff;\n background-color: rgba(25, 118, 210, 1);\n box-shadow: inset 1px 1px 1px 1px #05569f;\n }\n &.disabled {\n opacity: 0.8;\n border: 1px solid transparent;\n }\n &:hover:not(.disabled):not(.selected-start):not(.selected-end) {\n color: inherit;\n border: 1px solid transparent;\n background-color: rgba(66, 165, 245, 0.3);\n }\n`;\n","import React, { useMemo } from 'react';\nimport { PrivateYearPickerYearProps as Props, PrivateYearPickerYearDefaultProps } from './PrivateYearPickerYear.types';\nimport classNames from 'classnames';\nimport { StyledButton, StyledContainer } from './PrivateYearPickerYear.style';\n\nconst PrivateYearPickerYear = React.forwardRef<HTMLDivElement, Props>(\n (\n {\n year,\n disabled,\n active,\n range,\n isDefault,\n selected,\n selectedStart,\n selectedEnd,\n selectedTemp,\n onClick,\n onMouseEnter,\n onMouseLeave,\n },\n ref\n ) => {\n const className = useMemo(\n () =>\n classNames(\n range && 'range',\n isDefault && 'default',\n selected && 'selected',\n selectedStart && 'selected-start',\n selectedEnd && 'selected-end',\n selectedTemp && 'selected-temp',\n active && 'active',\n disabled && 'disabled'\n ),\n [range, isDefault, selected, selectedStart, selectedEnd, selectedTemp, active, disabled]\n );\n\n return (\n <StyledContainer className='PrivateYearPickerYear' ref={ref} item xs={4}>\n <StyledButton\n className={className}\n disabled={disabled}\n onClick={onClick}\n onMouseEnter={onMouseEnter}\n onMouseLeave={onMouseLeave}\n >\n {year}\n </StyledButton>\n </StyledContainer>\n );\n }\n);\n\nPrivateYearPickerYear.displayName = 'PrivateYearPickerYear';\nPrivateYearPickerYear.defaultProps = PrivateYearPickerYearDefaultProps;\n\nexport default PrivateYearPickerYear;\n","import { Grid, styled } from '@mui/material';\n\nexport const StyledContainer = styled(Grid)`\n width: 240px;\n height: inherit;\n max-height: 240px;\n overflow-y: auto;\n padding: 4px;\n`;\n","import React, { useCallback, useEffect, useMemo, useRef, useState } from 'react';\nimport {\n PrivateYearPickerYearListProps as Props,\n PrivateYearPickerYearListDefaultProps,\n} from './PrivateYearPickerYearList.types';\nimport PrivateYearPickerYear from '../PrivateYearPickerYear';\nimport { StyledContainer } from './PrivateYearPickerYearList.style';\n\nlet _lastCloseTime = 0;\n\nconst PrivateYearPickerYearList: React.FC<Props> = ({\n value,\n minYear,\n maxYear,\n disablePast,\n disableFuture,\n selectFromYear,\n selectToYear,\n onChange,\n}) => {\n /********************************************************************************************************************\n * Ref\n * ******************************************************************************************************************/\n\n const yearsContainerRef = useRef<HTMLDivElement>(null);\n const defaultButtonRef = useRef<HTMLDivElement | null>(null);\n const startButtonRef = useRef<HTMLDivElement | null>(null);\n const endButtonRef = useRef<HTMLDivElement | null>(null);\n const mouseOverTimer = useRef<NodeJS.Timeout>();\n\n /********************************************************************************************************************\n * State\n * ******************************************************************************************************************/\n\n const [mouseOverYear, setMouseOverYear] = useState<number>();\n\n /********************************************************************************************************************\n * Effect\n * ******************************************************************************************************************/\n\n useEffect(() => {\n return () => {\n if (mouseOverTimer.current) {\n clearTimeout(mouseOverTimer.current);\n mouseOverTimer.current = undefined;\n }\n };\n }, []);\n\n useEffect(() => {\n const container = yearsContainerRef.current;\n const startButton = startButtonRef.current;\n const endButton = endButtonRef.current;\n const defaultButton = defaultButtonRef.current;\n\n if (container) {\n const containerScrollTop = container.scrollTop;\n const containerScrollBottom = container.scrollTop + container.offsetHeight;\n const containerTop = container.offsetTop;\n const containerHalf = container.offsetHeight / 2;\n const containerHeight = container.offsetHeight;\n\n if (startButton && endButton) {\n if (new Date().getTime() - _lastCloseTime > 100) {\n const startButtonTop = startButton.offsetTop - containerTop;\n const endButtonBottom = endButton.offsetTop + endButton.offsetHeight - containerTop;\n const center = startButtonTop + (endButtonBottom - startButtonTop) / 2;\n let scrollY = center - containerHalf;\n if (selectFromYear && scrollY > startButtonTop - 4) {\n scrollY = startButtonTop - 4;\n } else if (selectToYear && scrollY + containerHeight < endButtonBottom + 4) {\n scrollY = endButtonBottom + 4 - containerHeight;\n }\n\n container.scrollTo(0, scrollY);\n }\n } else if (startButton) {\n const startButtonTop = startButton.offsetTop - containerTop - 4;\n const startButtonBottom = startButtonTop + startButton.offsetHeight + 8;\n\n if (startButtonTop < containerScrollTop || startButtonBottom > containerScrollBottom) {\n container.scrollTo(0, startButtonTop);\n }\n } else if (endButton) {\n const endButtonBottom = endButton.offsetTop + endButton.offsetHeight - containerTop + 4;\n container.scrollTo(0, endButtonBottom - containerHeight);\n } else if (defaultButton) {\n const defaultButtonTop = defaultButton.offsetTop - containerTop - 4;\n const defaultButtonBottom = defaultButtonTop + defaultButton.offsetHeight + 8;\n const center = defaultButtonTop + (defaultButtonBottom - defaultButtonTop) / 2;\n container.scrollTo(0, center - containerHalf);\n }\n }\n\n return () => {\n _lastCloseTime = new Date().getTime();\n };\n }, [selectFromYear, selectToYear]);\n\n /********************************************************************************************************************\n * Memo\n * ******************************************************************************************************************/\n\n const nowYear = useMemo(() => new Date().getFullYear(), []);\n\n const defaultYear = useMemo(() => {\n const newDefaultYear = nowYear;\n if (newDefaultYear < minYear) {\n return minYear;\n } else if (newDefaultYear > maxYear) {\n return maxYear;\n } else {\n return newDefaultYear;\n }\n }, [nowYear, minYear, maxYear]);\n\n const years = useMemo(() => {\n const newYears: {\n year: number;\n range?: boolean;\n isDefault?: boolean;\n active?: boolean;\n selected?: boolean;\n selectedStart?: boolean;\n selectedEnd?: boolean;\n selectedTemp?: boolean;\n disabled?: boolean;\n }[] = [];\n const startYear = selectFromYear ? selectFromYear : value ? value : 0;\n const endYear = selectToYear ? selectToYear : value ? value : 0;\n const range = !!selectFromYear || !!selectToYear;\n\n for (let i = minYear; i <= maxYear; i += 1) {\n newYears.push({\n year: i,\n range,\n isDefault: !value && !selectFromYear && !selectToYear && i === defaultYear,\n active: (!!selectFromYear || !!selectToYear) && i === value,\n selected: i >= startYear && i <= endYear,\n selectedStart: i === startYear,\n selectedEnd: i === endYear,\n selectedTemp:\n (!!selectToYear && !!mouseOverYear && i < endYear && i >= mouseOverYear) ||\n (!!selectFromYear && !!mouseOverYear && i > startYear && i <= mouseOverYear),\n disabled: (disablePast && i < nowYear) || (disableFuture && i > nowYear),\n });\n }\n return newYears;\n }, [\n selectFromYear,\n value,\n selectToYear,\n minYear,\n maxYear,\n defaultYear,\n mouseOverYear,\n disablePast,\n nowYear,\n disableFuture,\n ]);\n\n /********************************************************************************************************************\n * Function\n * ******************************************************************************************************************/\n\n const mouseOver = useCallback((year: number | undefined) => {\n if (mouseOverTimer.current) {\n clearTimeout(mouseOverTimer.current);\n mouseOverTimer.current = undefined;\n }\n if (year) {\n setMouseOverYear(year);\n } else {\n mouseOverTimer.current = setTimeout(() => {\n mouseOverTimer.current = undefined;\n setMouseOverYear(undefined);\n }, 100);\n }\n }, []);\n\n /********************************************************************************************************************\n * Render\n * ******************************************************************************************************************/\n\n return (\n <StyledContainer className='PrivateYearPickerYearList' container ref={yearsContainerRef}>\n {years.map((info) => (\n <PrivateYearPickerYear\n key={info.year}\n ref={(ref) => {\n if (info.selectedStart) {\n startButtonRef.current = ref;\n if (info.selectedEnd) {\n endButtonRef.current = ref;\n }\n } else if (info.selectedEnd) {\n endButtonRef.current = ref;\n } else if (info.isDefault) {\n defaultButtonRef.current = ref;\n }\n }}\n year={info.year}\n range={info.range}\n isDefault={info.isDefault}\n active={info.active}\n selected={info.selected}\n selectedStart={info.selectedStart}\n selectedEnd={info.selectedEnd}\n selectedTemp={info.selectedTemp}\n disabled={info.disabled}\n onClick={() => onChange(info.year)}\n onMouseEnter={() => mouseOver(info.year)}\n onMouseLeave={() => mouseOver(undefined)}\n />\n ))}\n </StyledContainer>\n );\n};\n\nPrivateYearPickerYearList.displayName = 'PrivateYearPickerYearList';\nPrivateYearPickerYearList.defaultProps = PrivateYearPickerYearListDefaultProps;\n\nexport default PrivateYearPickerYearList;\n","import { IconButton, styled } from '@mui/material';\n\nexport const StyledTitleContainer = styled('div')`\n display: flex;\n justify-content: center;\n align-items: center;\n border-bottom: 1px solid #efefef;\n padding: 10px;\n font-size: 14px;\n`;\n\nexport const StyledIconButton = styled(IconButton)`\n margin-top: -8px;\n margin-bottom: -10px;\n`;\n\nexport const StyledYearMonth = styled('div')`\n flex: 1;\n text-align: center;\n`;\n\nexport const StyledYearMonthError = styled('div')`\n flex: 1;\n text-align: center;\n color: ${({ theme }) => theme.palette.error.main};\n`;\n","import React, { useCallback, useMemo } from 'react';\nimport {\n PrivateYearPickerProps as Props,\n PrivateYearPickerDefaultProps,\n PrivateYearPickerValue,\n PrivateYearPickerBaseValue,\n} from './PrivateYearPicker.types';\nimport { useAutoUpdateState } from '@pdg/react-hook';\nimport { FormIcon } from '../../FormCommon';\nimport PrivateYearPickerYearList from './PrivateYearPickerYearList';\nimport {\n StyledIconButton,\n StyledTitleContainer,\n StyledYearMonth,\n StyledYearMonthError,\n} from './PrivateYearPicker.style';\n\nconst PrivateYearPicker: React.FC<Props> = ({\n value: initValue,\n minYear: initMinYear,\n maxYear: initMaxYear,\n disablePast,\n disableFuture,\n hideHeader,\n selectFromYear,\n selectToYear,\n onChange,\n}) => {\n /********************************************************************************************************************\n * State\n * ******************************************************************************************************************/\n\n const [value, setValue] = useAutoUpdateState<PrivateYearPickerValue>(initValue || null);\n\n /********************************************************************************************************************\n * Memo\n * ******************************************************************************************************************/\n\n const nowYear = useMemo(() => new Date().getFullYear(), []);\n\n const minYear = useMemo(\n () => (initMinYear === undefined ? PrivateYearPickerDefaultProps.minYear : initMinYear),\n [initMinYear]\n );\n const maxYear = useMemo(\n () => (initMaxYear === undefined ? PrivateYearPickerDefaultProps.maxYear : initMaxYear),\n [initMaxYear]\n );\n\n const minAvailableYear = useMemo(() => {\n if (disablePast) {\n return nowYear > minYear ? nowYear : minYear;\n } else {\n return minYear;\n }\n }, [disablePast, minYear, nowYear]);\n\n const maxAvailableYear = useMemo(() => {\n if (disableFuture) {\n return nowYear < maxYear ? nowYear : maxYear;\n } else {\n return maxYear;\n }\n }, [disableFuture, maxYear, nowYear]);\n\n const displayYear = useMemo(() => {\n if (value) {\n return value;\n } else {\n let year = selectFromYear || selectToYear || nowYear;\n if (minAvailableYear > year) {\n year = minAvailableYear;\n } else if (maxAvailableYear < year) {\n year = maxAvailableYear;\n }\n return year;\n }\n }, [maxAvailableYear, minAvailableYear, nowYear, selectFromYear, selectToYear, value]);\n const displayError = useMemo(\n () => displayYear < minAvailableYear || displayYear > maxAvailableYear,\n [displayYear, minAvailableYear, maxAvailableYear]\n );\n\n const prevBtnDisabled = useMemo(() => displayYear <= minAvailableYear, [displayYear, minAvailableYear]);\n const nextBtnDisabled = useMemo(() => displayYear >= maxAvailableYear, [displayYear, maxAvailableYear]);\n\n /********************************************************************************************************************\n * Event Handler\n * ******************************************************************************************************************/\n\n const handleYearChange = useCallback(\n (v: PrivateYearPickerBaseValue) => {\n if (minAvailableYear && v < minAvailableYear) {\n setValue(minAvailableYear);\n onChange(minAvailableYear, true);\n } else if (maxAvailableYear && v > maxAvailableYear) {\n setValue(maxAvailableYear);\n onChange(maxAvailableYear, true);\n } else {\n setValue(v);\n onChange(v, true);\n }\n },\n [maxAvailableYear, minAvailableYear, onChange, setValue]\n );\n\n const handlePrevClick = useCallback(() => {\n if (displayYear) {\n const newValue = displayYear - 1;\n setValue(newValue);\n onChange(newValue, false);\n }\n }, [displayYear, onChange, setValue]);\n\n const handleNextClick = useCallback(() => {\n if (displayYear) {\n const newValue = displayYear + 1;\n setValue(newValue);\n onChange(newValue, false);\n }\n }, [displayYear, onChange, setValue]);\n\n /********************************************************************************************************************\n * Render\n * ******************************************************************************************************************/\n\n return (\n <div className='PrivateYearPicker'>\n {!hideHeader && (\n <StyledTitleContainer>\n <StyledIconButton disabled={prevBtnDisabled} onClick={handlePrevClick}>\n <FormIcon>KeyboardArrowLeft</FormIcon>\n </StyledIconButton>\n {displayError ? (\n <StyledYearMonthError>{displayYear}년</StyledYearMonthError>\n ) : (\n <StyledYearMonth>{displayYear}년</StyledYearMonth>\n )}\n <StyledIconButton disabled={nextBtnDisabled} onClick={handleNextClick}>\n <FormIcon>KeyboardArrowRight</FormIcon>\n </StyledIconButton>\n </StyledTitleContainer>\n )}\n <div>\n <PrivateYearPickerYearList\n value={value}\n minYear={minYear}\n maxYear={maxYear}\n disablePast={disablePast}\n disableFuture={disableFuture}\n selectFromYear={selectFromYear}\n selectToYear={selectToYear}\n onChange={handleYearChange}\n />\n </div>\n </div>\n );\n};\n\nPrivateYearPicker.displayName = 'PrivateYearPicker';\nPrivateYearPicker.defaultProps = PrivateYearPickerDefaultProps;\n\nexport default PrivateYearPicker;\n","export type PrivateMonthPickerBaseValue = { year: number; month: number };\n\nexport type PrivateMonthPickerValue = PrivateMonthPickerBaseValue | null;\n\nexport interface PrivateMonthPickerProps {\n value: PrivateMonthPickerValue;\n minValue?: PrivateMonthPickerBaseValue;\n maxValue?: PrivateMonthPickerBaseValue;\n disablePast?: boolean;\n disableFuture?: boolean;\n selectFromValue?: PrivateMonthPickerValue;\n selectToValue?: PrivateMonthPickerValue;\n onChange(value: PrivateMonthPickerBaseValue, isMonthSelect: boolean): void;\n}\n\nexport const PrivateMonthPickerDefaultProps: Required<Pick<PrivateMonthPickerProps, 'minValue' | 'maxValue'>> = {\n minValue: {\n year: 2020,\n month: 1,\n },\n maxValue: {\n year: 2050,\n month: 12,\n },\n};\n","import {\n PrivateMonthPickerBaseValue,\n PrivateMonthPickerProps,\n PrivateMonthPickerValue,\n} from '../PrivateMonthPicker.types';\n\nexport interface PrivateMonthPickerMonthListProps\n extends Pick<\n PrivateMonthPickerProps,\n 'value' | 'disablePast' | 'disableFuture' | 'selectFromValue' | 'selectToValue'\n > {\n defaultValue?: PrivateMonthPickerValue;\n minAvailableValue: PrivateMonthPickerBaseValue;\n maxAvailableValue: PrivateMonthPickerBaseValue;\n onChange(value: PrivateMonthPickerBaseValue): void;\n}\n\nexport const PrivateMonthPickerMonthListDefaultProps = {};\n","import { ButtonProps } from '@mui/material';\n\nexport interface PrivateMonthPickerMonthProps extends Pick<ButtonProps, 'onMouseEnter' | 'onMouseLeave'> {\n month: number;\n range?: boolean;\n disabled?: boolean;\n isDefault?: boolean;\n active?: boolean;\n selected?: boolean;\n selectedStart?: boolean;\n selectedEnd?: boolean;\n selectedTemp?: boolean;\n onClick?(month: number): void;\n}\n\nexport const PrivateMonthPickerMonthDefaultProps = {};\n","import { Button, Grid, styled } from '@mui/material';\n\nexport const StyledContainer = styled(Grid)`\n padding: 4px;\n position: relative;\n`;\n\nexport const StyledButton = styled(Button)`\n font-size: 12px;\n background-color: transparent;\n color: unset;\n outline: 0;\n font-weight: 400;\n line-height: 1.75;\n border-radius: 18px;\n cursor: pointer;\n width: 100%;\n border: 1px solid transparent;\n\n &:focus {\n background-color: rgba(0, 0, 0, 0.12);\n }\n\n &.default {\n background-color: #efefef;\n }\n &.selected,\n &.selected-temp {\n background-color: rgba(66, 165, 245, 0.6);\n }\n &.selected-start,\n &.selected-end {\n color: #fff;\n background-color: rgba(25, 118, 210, 1);\n\n &.range:not(.active) {\n background-color: rgba(25, 118, 210, 0.8);\n }\n }\n &.active {\n color: #fff;\n background-color: rgba(25, 118, 210, 1);\n box-shadow: inset 1px 1px 1px 1px #05569f;\n }\n &.disabled {\n opacity: 0.8;\n border: 1px solid transparent;\n }\n &:hover:not(.disabled):not(.selected-start):not(.selected-end) {\n color: inherit;\n background-color: rgba(66, 165, 245, 0.3);\n border: 1px solid transparent;\n }\n`;\n","import React, { useCallback, useMemo } from 'react';\nimport {\n PrivateMonthPickerMonthProps as Props,\n PrivateMonthPickerMonthDefaultProps,\n} from './PrivateMonthPickerMonth.types';\nimport classNames from 'classnames';\nimport { StyledButton, StyledContainer } from './PrivateMonthPickerMonth.style';\n\nconst PrivateMonthPickerMonth = React.forwardRef<HTMLDivElement, Props>(\n (\n {\n month,\n range,\n disabled,\n isDefault,\n active,\n selected,\n selectedStart,\n selectedEnd,\n selectedTemp,\n onClick,\n onMouseEnter,\n onMouseLeave,\n },\n ref\n ) => {\n const className = useMemo(\n () =>\n classNames(\n range && 'range',\n isDefault && 'default',\n active && 'active',\n selected && 'selected',\n selectedStart && 'selected-start',\n selectedEnd && 'selected-end',\n selectedTemp && 'selected-temp',\n disabled && 'disabled'\n ),\n [range, isDefault, active, selected, selectedStart, selectedEnd, selectedTemp, disabled]\n );\n\n const handleClick = useCallback(() => {\n onClick && onClick(month);\n }, [month, onClick]);\n\n return (\n <StyledContainer className='PrivateMonthPickerMonth' ref={ref} item xs={4}>\n <StyledButton\n className={className}\n disabled={disabled}\n onClick={handleClick}\n onMouseEnter={onMouseEnter}\n onMouseLeave={onMouseLeave}\n >\n {month}월\n </StyledButton>\n </StyledContainer>\n );\n }\n);\n\nPrivateMonthPickerMonth.displayName = 'PrivateMonthPickerMonth';\nPrivateMonthPickerMonth.defaultProps = PrivateMonthPickerMonthDefaultProps;\n\nexport default PrivateMonthPickerMonth;\n","import { Grid, styled } from '@mui/material';\n\nexport const StyledContainer = styled(Grid)`\n width: 240px;\n padding: 4px;\n`;\n","import React, { useCallback, useMemo } from 'react';\nimport {\n PrivateMonthPickerMonthListProps as Props,\n PrivateMonthPickerMonthListDefaultProps,\n} from './PrivateMonthPickerMonthList.types';\nimport PrivateMonthPickerMonth from '../PrivateMonthPickerMonth';\nimport { FormMonthPickerBaseValue } from '../../../FormItemCustom';\nimport dayjs, { Dayjs } from 'dayjs';\nimport { StyledContainer } from './PrivateMonthPickerMonthList.style';\n\nconst PrivateMonthPickerMonthList: React.FC<Props> = ({\n value,\n defaultValue: initDefaultValue,\n minAvailableValue,\n maxAvailableValue,\n disablePast,\n disableFuture,\n selectFromValue,\n selectToValue,\n onChange,\n}) => {\n /********************************************************************************************************************\n * Function\n * ******************************************************************************************************************/\n\n const valueToYm = useCallback((v: FormMonthPickerBaseValue) => v.year * 100 + v.month, []);\n const dateToValue = useCallback((v: Dayjs) => ({ year: v.year(), month: v.month() + 1 }), []);\n\n /********************************************************************************************************************\n * Memo\n * ******************************************************************************************************************/\n\n const nowDate = useMemo(() => dayjs(), []);\n const nowValue = useMemo(() => dateToValue(nowDate), [dateToValue, nowDate]);\n const nowYm = useMemo(() => Number(nowDate.format('YYYYMM')), [nowDate]);\n\n const minAvailableYm = useMemo(() => valueToYm(minAvailableValue), [minAvailableValue, valueToYm]);\n const maxAvailableYm = useMemo(() => valueToYm(maxAvailableValue), [maxAvailableValue, valueToYm]);\n\n const defaultValue = useMemo(() => {\n if (initDefaultValue) {\n return initDefaultValue;\n } else if (nowYm < minAvailableYm) {\n return minAvailableValue;\n } else if (nowYm > maxAvailableYm) {\n return maxAvailableValue;\n } else {\n return nowValue;\n }\n }, [initDefaultValue, nowYm, minAvailableYm, maxAvailableYm, minAvailableValue, maxAvailableValue, nowValue]);\n\n const defaultYear = useMemo(() => defaultValue.year, [defaultValue]);\n const defaultMonth = useMemo(() => defaultValue.month, [defaultValue]);\n\n const currentYear = useMemo(() => (value ? value.year : defaultYear), [value, defaultYear]);\n\n const months = useMemo(() => {\n const newMonths: {\n month: number;\n range?: boolean;\n isDefault?: boolean;\n active?: boolean;\n selected?: boolean;\n selectedStart?: boolean;\n selectedEnd?: boolean;\n selectedTemp?: boolean;\n disabled?: boolean;\n }[] = [];\n const range = !!selectFromValue || !!selectToValue;\n const startYm = selectFromValue ? valueToYm(selectFromValue) : value ? valueToYm(value) : 0;\n const endYm = selectToValue ? valueToYm(selectToValue) : value ? valueToYm(value) : 0;\n\n for (let i = 1; i <= 12; i += 1) {\n const ym = currentYear * 100 + i;\n\n newMonths.push({\n month: i,\n range,\n isDefault: !value && i === defaultMonth,\n active: (!!selectFromValue || !!selectToValue) && !!value && ym === valueToYm(value),\n selected: !!value && ym >= startYm && ym <= endYm,\n selectedStart: !!value && ym === startYm,\n selectedEnd: !!value && ym === endYm,\n disabled:\n ym < minAvailableYm || ym > maxAvailableYm || (disablePast && ym < nowYm) || (disableFuture && ym > nowYm),\n });\n }\n return newMonths;\n }, [\n selectFromValue,\n valueToYm,\n value,\n selectToValue,\n currentYear,\n defaultMonth,\n minAvailableYm,\n maxAvailableYm,\n disablePast,\n nowYm,\n disableFuture,\n ]);\n\n const handleMonthChange = useCallback(\n (month: number) => {\n onChange({ year: currentYear, month });\n },\n [currentYear, onChange]\n );\n\n /********************************************************************************************************************\n * Render\n * ******************************************************************************************************************/\n\n return (\n <StyledContainer className='PrivateMonthPickerMonthList' container>\n {months.map((info) => (\n <PrivateMonthPickerMonth\n key={info.month}\n month={info.month}\n range={info.range}\n isDefault={info.isDefault}\n active={info.active}\n selected={info.selected}\n selectedStart={info.selectedStart}\n selectedEnd={info.selectedEnd}\n selectedTemp={info.selectedTemp}\n disabled={info.disabled}\n onClick={handleMonthChange}\n />\n ))}\n </StyledContainer>\n );\n};\n\nPrivateMonthPickerMonthList.displayName = 'PrivateMonthPickerMonthList';\nPrivateMonthPickerMonthList.defaultProps = PrivateMonthPickerMonthListDefaultProps;\n\nexport default PrivateMonthPickerMonthList;\n","import { IconButton, styled } from '@mui/material';\n\nexport const StyledContainer = styled('div')`\n .PrivateYearPickerYearList {\n max-height: 130px;\n }\n`;\n\nexport const TitleContainer = styled('div')`\n display: flex;\n justify-content: center;\n align-items: center;\n border-bottom: 1px solid #efefef;\n padding: 10px;\n font-size: 14px;\n`;\n\nexport const StyledIconButton = styled(IconButton)`\n margin-top: -8px;\n margin-bottom: -10px;\n`;\n\nexport const StyledYearMonth = styled('div')`\n flex: 1;\n display: flex;\n align-items: center;\n justify-content: center;\n`;\n\nexport const StyledYearMonthError = styled('div')`\n flex: 1;\n display: flex;\n align-items: center;\n justify-content: center;\n color: ${({ theme }) => theme.palette.error.main};\n`;\n","import React, { useCallback, useMemo } from 'react';\nimport {\n PrivateMonthPickerProps as Props,\n PrivateMonthPickerDefaultProps,\n PrivateMonthPickerValue,\n PrivateMonthPickerBaseValue,\n} from './PrivateMonthPicker.types';\nimport dayjs, { Dayjs } from 'dayjs';\nimport { useAutoUpdateState } from '@pdg/react-hook';\nimport { FormIcon } from '../../FormCommon';\nimport PrivateYearPicker from '../PrivateYearPicker';\nimport { FormMonthPickerBaseValue } from '../../FormItemCustom';\nimport PrivateMonthPickerMonthList from './PrivateMonthPickerMonthList';\nimport {\n StyledContainer,\n StyledIconButton,\n StyledYearMonth,\n StyledYearMonthError,\n TitleContainer,\n} from './PrivateMonthPicker.style';\n\nconst PrivateMonthPicker: React.FC<Props> = ({\n value: initValue,\n minValue: initMinValue,\n maxValue: initMaxValue,\n disablePast,\n disableFuture,\n selectFromValue,\n selectToValue,\n onChange,\n}) => {\n /********************************************************************************************************************\n * State\n * ******************************************************************************************************************/\n\n const [value, setValue] = useAutoUpdateState<PrivateMonthPickerValue>(initValue || null);\n\n /********************************************************************************************************************\n * Function\n * ******************************************************************************************************************/\n\n const valueToDate = useCallback((v: PrivateMonthPickerBaseValue) => dayjs(`${v.year}-${v.month}-01`), []);\n const valueToYm = useCallback((v: FormMonthPickerBaseValue) => v.year * 100 + v.month, []);\n const dateToValue = useCallback((v: Dayjs) => ({ year: v.year(), month: v.month() + 1 }), []);\n\n /********************************************************************************************************************\n * Memo\n * ******************************************************************************************************************/\n\n const nowValue = useMemo(() => dateToValue(dayjs()), [dateToValue]);\n const nowYm = useMemo(() => valueToYm(nowValue), [nowValue, valueToYm]);\n\n const minValue = useMemo(() => initMinValue || PrivateMonthPickerDefaultProps.minValue, [initMinValue]);\n const maxValue = useMemo(() => initMaxValue || PrivateMonthPickerDefaultProps.maxValue, [initMaxValue]);\n\n const minAvailableValue = useMemo(() => {\n if (disablePast) {\n const minYm = valueToYm(minValue);\n return nowYm > minYm ? nowValue : minValue;\n } else {\n return minValue;\n }\n }, [disablePast, valueToYm, minValue, nowYm, nowValue]);\n const minAvailableYm = useMemo(() => valueToYm(minAvailableValue), [minAvailableValue, valueToYm]);\n\n const maxAvailableValue = useMemo(() => {\n if (disableFuture) {\n const maxYm = valueToYm(maxValue);\n return nowYm < maxYm ? nowValue : maxValue;\n } else {\n return maxValue;\n }\n }, [disableFuture, valueToYm, maxValue, nowYm, nowValue]);\n const maxAvailableYm = useMemo(() => valueToYm(maxAvailableValue), [maxAvailableValue, valueToYm]);\n\n const displayValue = useMemo(() => {\n if (value && !Number.isNaN(value.year) && !Number.isNaN(value.month)) {\n return value;\n } else {\n if (nowYm < minAvailableYm) {\n return minAvailableValue;\n } else if (nowYm > maxAvailableYm) {\n return maxAvailableValue;\n } else {\n return selectFromValue || selectToValue || nowValue;\n }\n }\n }, [\n maxAvailableValue,\n maxAvailableYm,\n minAvailableValue,\n minAvailableYm,\n nowValue,\n nowYm,\n selectFromValue,\n selectToValue,\n value,\n ]);\n const displayValueDate = useMemo(() => valueToDate(displayValue), [displayValue, valueToDate]);\n const displayValueYm = useMemo(() => displayValue.year * 100 + displayValue.month, [displayValue]);\n const displayValueError = useMemo(\n () => displayValueYm < minAvailableYm || displayValueYm > maxAvailableYm,\n [displayValueYm, maxAvailableYm, minAvailableYm]\n );\n\n const prevBtnDisabled = useMemo(() => displayValueYm <= minAvailableYm, [displayValueYm, minAvailableYm]);\n const nextBtnDisabled = useMemo(() => displayValueYm >= maxAvailableYm, [displayValueYm, maxAvailableYm]);\n\n const selectFromYear = useMemo(() => (selectFromValue ? selectFromValue.year : undefined), [selectFromValue]);\n const selectToYear = useMemo(() => (selectToValue ? selectToValue.year : undefined), [selectToValue]);\n\n /********************************************************************************************************************\n * Event Handler\n * ******************************************************************************************************************/\n\n const handleYearChange = useCallback(\n (year: number) => {\n const newValue = { ...displayValue, year };\n const valueYm = valueToYm(newValue);\n if (valueYm < minAvailableYm) {\n setValue(minAvailableValue);\n onChange(minAvailableValue, false);\n } else if (valueYm > maxAvailableYm) {\n setValue(maxAvailableValue);\n onChange(maxAvailableValue, false);\n } else {\n setValue(newValue);\n onChange(newValue, false);\n }\n },\n [displayValue, maxAvailableValue, maxAvailableYm, minAvailableValue, minAvailableYm, onChange, setValue, valueToYm]\n );\n\n const handleMonthChange = useCallback(\n (newValue: PrivateMonthPickerBaseValue) => {\n setValue(newValue);\n onChange(newValue, true);\n },\n [onChange, setValue]\n );\n\n const handlePrevClick = useCallback(() => {\n const newValue = dateToValue(displayValueDate.subtract(1, 'months'));\n setValue(newValue);\n onChange(newValue, false);\n }, [dateToValue, displayValueDate, onChange, setValue]);\n\n const handleNextClick = useCallback(() => {\n const newValue = dateToValue(displayValueDate.add(1, 'months'));\n setValue(newValue);\n onChange(newValue, false);\n }, [dateToValue, displayValueDate, onChange, setValue]);\n\n /********************************************************************************************************************\n * Render\n * ******************************************************************************************************************/\n\n return (\n <StyledContainer className='PrivateMonthPicker'>\n <TitleContainer>\n <StyledIconButton disabled={prevBtnDisabled} onClick={handlePrevClick}>\n <FormIcon>KeyboardArrowLeft</FormIcon>\n </StyledIconButton>\n {displayValueError ? (\n <StyledYearMonthError>\n {displayValue.year}년 {displayValue.month}월\n </StyledYearMonthError>\n ) : (\n <StyledYearMonth>\n {displayValue.year}년 {displayValue.month}월\n </StyledYearMonth>\n )}\n <StyledIconButton disabled={nextBtnDisabled} onClick={handleNextClick}>\n <FormIcon>KeyboardArrowRight</FormIcon>\n </StyledIconButton>\n </TitleContainer>\n <div>\n <PrivateYearPicker\n value={value?.year || null}\n minYear={minValue.year}\n maxYear={maxValue.year}\n disablePast={disablePast}\n disableFuture={disableFuture}\n onChange={handleYearChange}\n hideHeader\n selectFromYear={selectFromYear}\n selectToYear={selectToYear}\n />\n </div>\n <div style={{ borderTop: '1px solid #efefef' }}>\n <PrivateMonthPickerMonthList\n value={value}\n defaultValue={selectFromValue || selectToValue}\n minAvailableValue={minAvailableValue}\n maxAvailableValue={maxAvailableValue}\n disablePast={disablePast}\n disableFuture={disableFuture}\n selectFromValue={selectFromValue}\n selectToValue={selectToValue}\n onChange={handleMonthChange}\n />\n </div>\n </StyledContainer>\n );\n};\n\nPrivateMonthPicker.displayName = 'PrivateMonthPicker';\nPrivateMonthPicker.defaultProps = PrivateMonthPickerDefaultProps;\n\nexport default PrivateMonthPicker;\n","export type PrivateMonthRangePickerSelectType = 'start' | 'end';\n\nexport type PrivateMonthRangePickerBaseValue = { year: number; month: number };\n\nexport type PrivateMonthRangePickerDataValue = PrivateMonthRangePickerBaseValue | null;\n\nexport type PrivateMonthRangePickerValue = [PrivateMonthRangePickerDataValue, PrivateMonthRangePickerDataValue];\n\nexport interface PrivateMonthRangePickerProps {\n value: PrivateMonthRangePickerValue;\n minValue?: PrivateMonthRangePickerBaseValue;\n maxValue?: PrivateMonthRangePickerBaseValue;\n disablePast?: boolean;\n disableFuture?: boolean;\n onChange(\n value: PrivateMonthRangePickerValue,\n selectType: PrivateMonthRangePickerSelectType,\n isMonthSelect: boolean\n ): void;\n}\n\nexport const PrivateMonthRangePickerDefaultProps: Required<\n Pick<PrivateMonthRangePickerProps, 'minValue' | 'maxValue'>\n> = {\n minValue: {\n year: 2020,\n month: 1,\n },\n maxValue: {\n year: 2050,\n month: 12,\n },\n};\n","import { Button, Grid, styled } from '@mui/material';\n\nexport const StyledDiv = styled(Grid)`\n display: flex;\n align-items: center;\n justify-content: center;\n font-size: 14px;\n width: 30px;\n border-left: 1px solid #efefef;\n border-right: 1px solid #efefef;\n background-color: #fafafa;\n`;\n\nexport const StyledActionContainer = styled('div')`\n border-top: 1px solid #efefef;\n padding: 10px;\n text-align: right;\n &:empty {\n display: none;\n }\n`;\n\nexport const StyledActionButton = styled(Button)`\n min-width: 0;\n color: unset;\n &:not(:first-child) {\n margin-left: 5px;\n }\n &.disabled {\n color: rgba(0, 0, 0, 0.5);\n }\n`;\n","import React, { useCallback, useMemo } from 'react';\nimport {\n PrivateMonthRangePickerProps as Props,\n PrivateMonthRangePickerDefaultProps,\n PrivateMonthRangePickerValue,\n PrivateMonthRangePickerSelectType,\n} from './PrivateMonthRangePicker.types';\nimport { FormMonthPickerBaseValue } from '../../FormItemCustom';\nimport { Grid } from '@mui/material';\nimport PrivateMonthPicker, { PrivateMonthPickerBaseValue } from '../PrivateMonthPicker';\nimport dayjs, { Dayjs } from 'dayjs';\nimport { StyledActionButton, StyledActionContainer, StyledDiv } from './PrivateMonthRangePicker.style';\n\nconst PrivateMonthRangePicker: React.FC<Props> = ({\n value,\n minValue: initMinValue,\n maxValue: initMaxValue,\n disablePast,\n disableFuture,\n onChange,\n}) => {\n /********************************************************************************************************************\n * Function\n * ******************************************************************************************************************/\n\n const valueToYm = useCallback((v: FormMonthPickerBaseValue) => v.year * 100 + v.month, []);\n const dateToValue = useCallback((v: Dayjs) => ({ year: v.year(), month: v.month() + 1 }), []);\n\n /********************************************************************************************************************\n * Memo\n * ******************************************************************************************************************/\n\n const nowDate = useMemo(() => dayjs(), []);\n const nowValue = useMemo(() => dateToValue(nowDate), [dateToValue, nowDate]);\n const nowYm = useMemo(() => valueToYm(nowValue), [nowValue, valueToYm]);\n\n const minValue = useMemo(() => initMinValue || PrivateMonthRangePickerDefaultProps.minValue, [initMinValue]);\n const maxValue = useMemo(() => initMaxValue || PrivateMonthRangePickerDefaultProps.maxValue, [initMaxValue]);\n\n const minAvailableValue = useMemo(() => {\n if (disablePast) {\n const minYm = valueToYm(minValue);\n return nowYm > minYm ? nowValue : minValue;\n } else {\n return minValue;\n }\n }, [disablePast, valueToYm, minValue, nowYm, nowValue]);\n const minAvailableYm = useMemo(() => valueToYm(minAvailableValue), [minAvailableValue, valueToYm]);\n\n const maxAvailableValue = useMemo(() => {\n if (disableFuture) {\n const maxYm = valueToYm(maxValue);\n return nowYm < maxYm ? nowValue : maxValue;\n } else {\n return maxValue;\n }\n }, [disableFuture, valueToYm, maxValue, nowYm, nowValue]);\n const maxAvailableYm = useMemo(() => valueToYm(maxAvailableValue), [maxAvailableValue, valueToYm]);\n\n /********************************************************************************************************************\n * Function\n * ******************************************************************************************************************/\n\n const getFinalValue = useCallback(\n (v: PrivateMonthRangePickerValue, selectType: PrivateMonthRangePickerSelectType) => {\n const finalValue: PrivateMonthRangePickerValue = [v[0], v[1]];\n if (finalValue[0]) {\n const startYm = valueToYm(finalValue[0]);\n if (startYm < minAvailableYm) {\n finalValue[0] = minAvailableValue;\n } else if (startYm > maxAvailableYm) {\n finalValue[0] = maxAvailableValue;\n }\n }\n if (finalValue[1]) {\n let endYm = valueToYm(finalValue[1]);\n if (finalValue[0]) {\n if (valueToYm(finalValue[0]) > endYm) {\n if (selectType === 'start') {\n finalValue[1] = finalValue[0];\n } else {\n finalValue[0] = finalValue[1];\n }\n }\n }\n endYm = valueToYm(finalValue[1]);\n if (endYm < minAvailableYm) {\n finalValue[1] = minAvailableValue;\n } else if (endYm > maxAvailableYm) {\n finalValue[1] = maxAvailableValue;\n }\n }\n return finalValue;\n },\n [maxAvailableValue, maxAvailableYm, minAvailableValue, minAvailableYm, valueToYm]\n );\n\n /********************************************************************************************************************\n * action button\n * ******************************************************************************************************************/\n\n const getActionButton = useCallback(\n (fromDate: Dayjs, toDate: Dayjs, label: string, strict?: boolean) => {\n const fromValue = dateToValue(fromDate);\n const fromYm = valueToYm(fromValue);\n const toValue = dateToValue(toDate);\n const toYm = valueToYm(toValue);\n if (strict && (fromYm < minAvailableYm || toYm > maxAvailableYm)) {\n return undefined;\n } else if (\n !strict &&\n ((fromYm < minAvailableYm && toYm < minAvailableYm) || (fromYm > maxAvailableYm && toYm > maxAvailableYm))\n ) {\n return undefined;\n } else {\n return (\n <StyledActionButton\n variant='text'\n onClick={() => onChange(getFinalValue([fromValue, toValue], 'end'), 'end', true)}\n >\n {label}\n </StyledActionButton>\n );\n }\n },\n [dateToValue, getFinalValue, maxAvailableYm, minAvailableYm, onChange, valueToYm]\n );\n\n const actionButtons = useMemo(() => {\n return (\n <StyledActionContainer>\n {getActionButton(dayjs(nowDate).subtract(2, 'months'), nowDate, '최근 3개월', true)}\n {getActionButton(dayjs(nowDate).subtract(5, 'months'), nowDate, '최근 6개월', true)}\n {getActionButton(dayjs(nowDate).subtract(11, 'months'), nowDate, '최근 12개월', true)}\n {getActionButton(dayjs(nowDate).subtract(23, 'months'), nowDate, '최근 24개월', true)}\n {getActionButton(\n dayjs(nowDate).subtract(2, 'years').set('months', 0),\n dayjs(nowDate).subtract(2, 'years').set('months', 11),\n '재작년'\n )}\n {getActionButton(\n dayjs(nowDate).subtract(1, 'years').set('months', 0),\n dayjs(nowDate).subtract(1, 'years').set('months', 11),\n '작년'\n )}\n {getActionButton(dayjs(nowDate).set('months', 0), dayjs(nowDate).set('months', 11), '올해')}\n </StyledActionContainer>\n );\n }, [getActionButton, nowDate]);\n\n /********************************************************************************************************************\n * Event Handler\n * ******************************************************************************************************************/\n\n const handleStartMonthChange = useCallback(\n (v: PrivateMonthPickerBaseValue, isMonthSelect: boolean) => {\n const finalValue: PrivateMonthRangePickerValue = getFinalValue([v, value[1]], 'start');\n onChange(finalValue, 'start', isMonthSelect);\n },\n [getFinalValue, onChange, value]\n );\n\n const handleEndMonthChange = useCallback(\n (v: PrivateMonthPickerBaseValue, isMonthSelect: boolean) => {\n const finalValue: PrivateMonthRangePickerValue = getFinalValue([value[0], v], 'end');\n onChange(finalValue, 'end', isMonthSelect);\n },\n [getFinalValue, onChange, value]\n );\n\n /********************************************************************************************************************\n * Render\n * ******************************************************************************************************************/\n\n return (\n <div>\n <Grid container className='PrivateMonthRangePicker'>\n <Grid item>\n <PrivateMonthPicker\n value={value[0]}\n selectToValue={value[1]}\n minValue={minValue}\n maxValue={maxValue}\n disablePast={disablePast}\n disableFuture={disableFuture}\n onChange={handleStartMonthChange}\n />\n </Grid>\n <StyledDiv>~</StyledDiv>\n <Grid item>\n <PrivateMonthPicker\n value={value[1]}\n selectFromValue={value[0]}\n minValue={minValue}\n maxValue={maxValue}\n disablePast={disablePast}\n disableFuture={disableFuture}\n onChange={handleEndMonthChange}\n />\n </Grid>\n </Grid>\n {actionButtons}\n </div>\n );\n};\n\nPrivateMonthRangePicker.displayName = 'PrivateMonthRangePicker';\nPrivateMonthRangePicker.defaultProps = PrivateMonthRangePickerDefaultProps;\n\nexport default PrivateMonthRangePicker;\n","import React, { useCallback } from 'react';\nimport classNames from 'classnames';\nimport {\n FormDatePickerProps as Props,\n FormDatePickerDefaultProps,\n FormDatePickerCommands,\n} from './FormDatePicker.types';\nimport { PrivateDatePicker, PrivateDatePickerCommands } from '../../@private';\nimport FormContextProvider from '../../FormContextProvider';\nimport { useFormState } from '../../FormContext';\n\nconst FormDatePicker = React.forwardRef<FormDatePickerCommands, Props>(({ className, ...props }, ref) => {\n /********************************************************************************************************************\n * FormState\n * ******************************************************************************************************************/\n\n const { onAddValueItem, ...otherFormState } = useFormState();\n\n /********************************************************************************************************************\n * Event Handler\n * ******************************************************************************************************************/\n\n const handleAddValueItem = useCallback(\n (id: string, commands: PrivateDatePickerCommands) => {\n commands.getType = () => 'FormDatePicker';\n onAddValueItem(id, commands);\n },\n [onAddValueItem]\n );\n\n /********************************************************************************************************************\n * Render\n * ******************************************************************************************************************/\n\n return (\n <FormContextProvider\n value={{\n onAddValueItem: handleAddValueItem,\n ...otherFormState,\n }}\n >\n <PrivateDatePicker className={classNames(className, 'FormDatePicker')} {...props} ref={ref} type='date' />\n </FormContextProvider>\n );\n});\n\nFormDatePicker.displayName = 'FormDatePicker';\nFormDatePicker.defaultProps = FormDatePickerDefaultProps;\n\nexport default FormDatePicker;\n","import { PrivateDateTimePickerProps, PrivateDateTimePickerCommands } from '../../@private';\n\nexport interface FormDateTimePickerProps extends Omit<PrivateDateTimePickerProps, 'type' | 'time'> {\n time: Required<PrivateDateTimePickerProps['time']>;\n}\n\nexport const FormDateTimePickerDefaultProps = {};\n\nexport interface FormDateTimePickerCommands extends PrivateDateTimePickerCommands {}\n","import React, { useCallback } from 'react';\nimport classNames from 'classnames';\nimport {\n FormDateTimePickerProps as Props,\n FormDateTimePickerDefaultProps,\n FormDateTimePickerCommands,\n} from './FormDateTimePicker.types';\nimport { PrivateDateTimePickerCommands, PrivateDateTimePicker } from '../../@private';\nimport FormContextProvider from '../../FormContextProvider';\nimport { useFormState } from '../../FormContext';\n\nconst FormDateTimePicker = React.forwardRef<FormDateTimePickerCommands, Props>(({ className, ...props }, ref) => {\n /********************************************************************************************************************\n * FormState\n * ******************************************************************************************************************/\n\n const { onAddValueItem, ...otherFormState } = useFormState();\n\n /********************************************************************************************************************\n * Event Handler\n * ******************************************************************************************************************/\n\n const handleAddValueItem = useCallback(\n (id: string, commands: PrivateDateTimePickerCommands) => {\n commands.getType = () => 'FormDateTimePicker';\n onAddValueItem(id, commands);\n },\n [onAddValueItem]\n );\n\n /********************************************************************************************************************\n * Render\n * ******************************************************************************************************************/\n\n return (\n <FormContextProvider\n value={{\n onAddValueItem: handleAddValueItem,\n ...otherFormState,\n }}\n >\n <PrivateDateTimePicker\n className={classNames(className, 'FormDateTimePicker')}\n {...props}\n ref={ref}\n type='date_time'\n />\n </FormContextProvider>\n );\n});\n\nFormDateTimePicker.displayName = 'FormDateTimePicker';\nFormDateTimePicker.defaultProps = FormDateTimePickerDefaultProps;\n\nexport default FormDateTimePicker;\n","import { PrivateDateTimePickerProps, PrivateDateTimePickerCommands } from '../../@private';\n\nexport interface FormTimePickerProps extends Omit<PrivateDateTimePickerProps, 'type' | 'time'> {\n time: Required<PrivateDateTimePickerProps['time']>;\n}\n\nexport const FormTimePickerDefaultProps = {};\n\nexport interface FormTimePickerCommands extends PrivateDateTimePickerCommands {}\n","import React, { useCallback } from 'react';\nimport classNames from 'classnames';\nimport {\n FormTimePickerProps as Props,\n FormTimePickerDefaultProps,\n FormTimePickerCommands,\n} from './FormTimePicker.types';\nimport { PrivateDateTimePicker, PrivateDateTimePickerCommands } from '../../@private';\nimport FormContextProvider from '../../FormContextProvider';\nimport { useFormState } from '../../FormContext';\n\nconst FormTimePicker = React.forwardRef<FormTimePickerCommands, Props>(({ className, ...props }, ref) => {\n /********************************************************************************************************************\n * FormState\n * ******************************************************************************************************************/\n\n const { onAddValueItem, ...otherFormState } = useFormState();\n\n /********************************************************************************************************************\n * Event Handler\n * ******************************************************************************************************************/\n\n const handleAddValueItem = useCallback(\n (id: string, commands: PrivateDateTimePickerCommands) => {\n commands.getType = () => 'FormTimePicker';\n onAddValueItem(id, commands);\n },\n [onAddValueItem]\n );\n\n /********************************************************************************************************************\n * Render\n * ******************************************************************************************************************/\n\n return (\n <FormContextProvider\n value={{\n onAddValueItem: handleAddValueItem,\n ...otherFormState,\n }}\n >\n <PrivateDateTimePicker className={classNames(className, 'FormTimePicker')} {...props} ref={ref} type='time' />\n </FormContextProvider>\n );\n});\n\nFormTimePicker.displayName = 'FormTimePicker';\nFormTimePicker.defaultProps = FormTimePickerDefaultProps;\n\nexport default FormTimePicker;\n","import { ReactNode } from 'react';\nimport { FormDateRangePickerTooltipPickerContainerCalendarCount } from './FormDateRangePickerTooltipPickerContainer';\nimport { FormDateRangePickerTooltipPickerDateValue } from './FormDateRangePickerTooltipPickerContainer/FormDateRangePickerTooltipPicker';\nimport {\n CommonSxProps,\n FormRangeValueItemCommands,\n FormDateValueItemCommands,\n FormValueItemBaseCommands,\n FormValueItemProps,\n FormRangeValueItemNameCommands,\n} from '../../@types';\nimport { Dayjs } from 'dayjs';\nimport { PrivateInputDatePickerProps } from '../../@private';\n\nexport type FormDateRangePickerDateValue = FormDateRangePickerTooltipPickerDateValue;\n\nexport type FormDateRangePickerValue = [FormDateRangePickerDateValue, FormDateRangePickerDateValue];\n\nexport type FormDateRangePickerCalendarCount = FormDateRangePickerTooltipPickerContainerCalendarCount;\n\nexport interface FormDateRangePickerProps\n extends CommonSxProps,\n Omit<FormValueItemProps<FormDateRangePickerValue, false>, 'label' | 'labelIcon' | 'width'>,\n Pick<PrivateInputDatePickerProps, 'align'> {\n fromLabel?: ReactNode;\n fromLabelIcon?: string;\n toLabel?: ReactNode;\n toLabelIcon?: string;\n allowSingleSelect?: boolean;\n required?: boolean;\n requiredStart?: boolean;\n requiredEnd?: boolean;\n readOnlyStart?: boolean;\n readOnlyEnd?: boolean;\n readOnlyInput?: boolean;\n labelShrink?: boolean;\n calendarCount?: FormDateRangePickerCalendarCount;\n format?: string;\n formValueFormat?: string;\n formValueFromNameSuffix?: string;\n formValueToNameSuffix?: string;\n icon?: string;\n startIcon?: string;\n endIcon?: string;\n startAdornment?: ReactNode;\n startStartAdornment?: ReactNode;\n startEndAdornment?: ReactNode;\n endAdornment?: ReactNode;\n endStartAdornment?: ReactNode;\n endEndAdornment?: ReactNode;\n inputWidth?: number | string;\n disablePast?: boolean;\n disableFuture?: boolean;\n minDate?: Dayjs;\n maxDate?: Dayjs;\n onGetActionButtons?(): { label: string; start: Dayjs; end: Dayjs }[];\n}\n\nexport const FormDateRangePickerDefaultProps: Required<\n Pick<\n FormDateRangePickerProps,\n 'calendarCount' | 'format' | 'formValueFormat' | 'formValueFromNameSuffix' | 'formValueToNameSuffix' | 'align'\n >\n> = {\n calendarCount: 2,\n format: 'YYYY-MM-DD',\n formValueFormat: 'YYYY-MM-DD',\n formValueFromNameSuffix: '_from',\n formValueToNameSuffix: '_to',\n align: 'center',\n};\n\nexport interface FormDateRangePickerCommands\n extends FormValueItemBaseCommands<FormDateRangePickerValue, false>,\n FormDateValueItemCommands,\n FormRangeValueItemCommands<Dayjs>,\n FormRangeValueItemNameCommands {}\n","import {\n FormDateRangePickerTooltipPickerDateValue,\n FormDateRangePickerTooltipPickerSelectType,\n FormDateRangePickerTooltipPickerValue,\n} from './FormDateRangePickerTooltipPicker';\nimport { Dayjs } from 'dayjs';\n\nexport type FormDateRangePickerTooltipPickerContainerMonths = [Dayjs, Dayjs, Dayjs];\n\nexport type FormDateRangePickerTooltipPickerContainerCalendarCount = 2 | 3;\n\nexport interface FormDateRangePickerTooltipPickerContainerProps {\n calendarCount?: FormDateRangePickerTooltipPickerContainerCalendarCount;\n selectType: FormDateRangePickerTooltipPickerSelectType;\n value: FormDateRangePickerTooltipPickerValue;\n months: FormDateRangePickerTooltipPickerContainerMonths;\n disablePast?: boolean;\n disableFuture?: boolean;\n minDate?: Dayjs;\n maxDate?: Dayjs;\n onGetActionButtons?(): { label: string; start: Dayjs; end: Dayjs }[];\n onChange(newValue: FormDateRangePickerTooltipPickerValue): void;\n onValueChange(\n selectType: FormDateRangePickerTooltipPickerSelectType,\n newValue: FormDateRangePickerTooltipPickerDateValue\n ): void;\n onMonthsChange(months: FormDateRangePickerTooltipPickerContainerMonths): void;\n}\n\nexport const FormDateRangePickerTooltipPickerContainerDefaultProps: Pick<\n FormDateRangePickerTooltipPickerContainerProps,\n 'calendarCount'\n> = {\n calendarCount: 2,\n};\n\nexport interface FormDateRangePickerTooltipPickerContainerCommands {\n previousMonth(): void;\n nextMonth(): void;\n activeMonth(month: Dayjs): void;\n}\n","import { Dayjs } from 'dayjs';\n\nexport type FormDateRangePickerTooltipPickerDateValue = Dayjs | null;\n\nexport type FormDateRangePickerTooltipPickerValue = [\n FormDateRangePickerTooltipPickerDateValue,\n FormDateRangePickerTooltipPickerDateValue,\n];\n\nexport type FormDateRangePickerTooltipPickerSelectType = 'start' | 'end';\n\nexport interface FormDateRangePickerTooltipPickerProps {\n selectType: FormDateRangePickerTooltipPickerSelectType;\n value?: FormDateRangePickerTooltipPickerValue;\n focusedDate?: FormDateRangePickerTooltipPickerDateValue;\n month: Dayjs;\n disablePast?: boolean;\n disableFuture?: boolean;\n minDate?: Dayjs;\n maxDate?: Dayjs;\n onValueChange?(\n selectType: FormDateRangePickerTooltipPickerSelectType,\n value: FormDateRangePickerTooltipPickerDateValue\n ): void;\n onMouseEnterPickersDay?(date: FormDateRangePickerTooltipPickerDateValue): void;\n onMonthChange?(date: Dayjs): void;\n}\n\nexport const FormDateRangePickerTooltipPickerDefaultProps = {};\n\nexport interface FormDateRangePickerTooltipPickerCommands {\n previousMonth(): void;\n nextMonth(): void;\n activeMonth(month: Dayjs): void;\n}\n","import React, { useCallback, useEffect, useLayoutEffect, useMemo, useRef, useState } from 'react';\nimport classNames from 'classnames';\nimport {\n FormDateRangePickerTooltipPickerProps as Props,\n FormDateRangePickerTooltipPickerDefaultProps,\n FormDateRangePickerTooltipPickerCommands,\n FormDateRangePickerTooltipPickerValue,\n FormDateRangePickerTooltipPickerDateValue,\n} from './FormDateRangePickerTooltipPicker.types';\nimport { PickersDay, PickersDayProps, StaticDatePicker } from '@mui/x-date-pickers';\nimport { IconButton, IconButtonProps } from '@mui/material';\nimport dayjs, { Dayjs } from 'dayjs';\nimport { useAutoUpdateState } from '@pdg/react-hook';\nimport './FormDateRangePickerTooltipPicker.scss';\n\ninterface ClassNameMap {\n [key: number]: string;\n}\n\nconst FormDateRangePickerTooltipPicker = React.forwardRef<FormDateRangePickerTooltipPickerCommands, Props>(\n (\n {\n selectType,\n value: initValue,\n focusedDate,\n month,\n disableFuture,\n disablePast,\n minDate,\n maxDate,\n onValueChange,\n onMouseEnterPickersDay,\n onMonthChange,\n },\n ref\n ) => {\n /********************************************************************************************************************\n * State\n * ******************************************************************************************************************/\n\n const [value] = useAutoUpdateState<FormDateRangePickerTooltipPickerValue>(\n useCallback((): FormDateRangePickerTooltipPickerValue => {\n return initValue ? initValue : [null, null];\n }, [initValue])\n );\n const [activeMonthValue, setActiveMonthValue] = useState<FormDateRangePickerTooltipPickerDateValue>(null);\n\n /********************************************************************************************************************\n * Effect\n * ******************************************************************************************************************/\n\n useEffect(() => {\n setActiveMonthValue(null);\n }, [selectType]);\n\n //--------------------------------------------------------------------------------------------------------------------\n\n const leftArrowOnClickRef = useRef<IconButtonProps['onClick']>();\n const rightArrowOnClickRef = useRef<IconButtonProps['onClick']>();\n\n const [LeftArrowButton] = useState(() => {\n const ArrowButton: React.FC<IconButtonProps> = (props: IconButtonProps) => {\n leftArrowOnClickRef.current = props.onClick;\n return <IconButton {...props} />;\n };\n return ArrowButton;\n });\n\n const [RightArrowButton] = useState(() => {\n const ArrowButton: React.FC<IconButtonProps> = (props: IconButtonProps) => {\n rightArrowOnClickRef.current = props.onClick;\n return <IconButton {...props} />;\n };\n return ArrowButton;\n });\n\n //--------------------------------------------------------------------------------------------------------------------\n\n const getDateVal = useCallback((date: Dayjs): number => {\n return Number(date.format('YYYYMMDD'));\n }, []);\n\n //--------------------------------------------------------------------------------------------------------------------\n\n const baseClassNames = useMemo(() => {\n const newValue: ClassNameMap = {};\n\n const lastDayOfMonth = month.endOf('month').date();\n\n let now = dayjs(month);\n for (let i = 1; i <= lastDayOfMonth; i += 1) {\n let className = '';\n\n now = now.set('date', i);\n const nowVal = getDateVal(now);\n\n const dayOfWeek = now.day();\n\n if (i === 1 || dayOfWeek === 0) className += 'ui-start ';\n if (i === lastDayOfMonth || dayOfWeek === 6) className += 'ui-end ';\n\n newValue[nowVal] = className;\n }\n\n return newValue;\n }, [getDateVal, month]);\n\n const selectedClassNames = useMemo(() => {\n const newValue: ClassNameMap = {};\n\n const startDateVal = value[0] ? getDateVal(value[0]) : null;\n const endDateVal = value[1] ? getDateVal(value[1]) : null;\n\n const lastDayOfMonth = month.endOf('month').date();\n\n let now = dayjs(month);\n for (let i = 1; i <= lastDayOfMonth; i += 1) {\n let className = '';\n\n now = now.set('date', i);\n const nowVal = getDateVal(now);\n\n if (startDateVal && endDateVal) {\n if (nowVal >= startDateVal && nowVal <= endDateVal) {\n className += 'sel ';\n\n if (nowVal === startDateVal) {\n className += 's-start ';\n }\n if (nowVal === endDateVal) {\n className += 's-end ';\n }\n }\n }\n\n newValue[nowVal] = className;\n }\n\n return newValue;\n }, [getDateVal, month, value]);\n\n const focusedClassNames = useMemo(() => {\n const newValue: ClassNameMap = {};\n\n const startDateVal = value[0] ? getDateVal(value[0]) : null;\n const endDateVal = value[1] ? getDateVal(value[1]) : null;\n const focusedDateVal = focusedDate ? getDateVal(focusedDate) : null;\n\n const lastDayOfMonth = month.endOf('month').date();\n\n if (focusedDateVal && ((selectType === 'start' && endDateVal) || (selectType === 'end' && startDateVal))) {\n let now = dayjs(month);\n for (let i = 1; i <= lastDayOfMonth; i += 1) {\n let className = '';\n\n now = now.set('date', i);\n const nowVal = getDateVal(now);\n\n switch (selectType) {\n case 'start':\n if (endDateVal) {\n if (nowVal >= focusedDateVal && nowVal <= endDateVal) {\n className += 'focused ';\n if (nowVal === focusedDateVal) {\n className += 'f-start';\n }\n if (nowVal === endDateVal) {\n className += 'f-end ';\n }\n }\n }\n break;\n case 'end':\n if (startDateVal) {\n if (nowVal >= startDateVal && nowVal <= focusedDateVal) {\n className += 'focused ';\n if (nowVal === startDateVal) {\n className += 'f-start ';\n }\n if (nowVal === focusedDateVal) {\n className += 'f-end';\n }\n }\n }\n break;\n }\n\n newValue[nowVal] = className;\n }\n }\n\n return newValue;\n }, [value, getDateVal, focusedDate, month, selectType]);\n\n //--------------------------------------------------------------------------------------------------------------------\n\n const previousMonth = useCallback(() => {\n if (leftArrowOnClickRef.current) {\n leftArrowOnClickRef.current({} as any);\n }\n }, []);\n\n const nextMonth = useCallback(() => {\n if (rightArrowOnClickRef.current) {\n rightArrowOnClickRef.current({} as any);\n }\n }, []);\n\n const activeMonth = useCallback((month: Dayjs) => {\n setActiveMonthValue(month);\n }, []);\n\n useLayoutEffect(() => {\n if (ref) {\n const commands: FormDateRangePickerTooltipPickerCommands = {\n previousMonth,\n nextMonth,\n activeMonth,\n };\n\n if (typeof ref === 'function') {\n ref(commands);\n } else {\n ref.current = commands;\n }\n\n return () => {\n if (typeof ref === 'function') {\n ref(null);\n } else {\n ref.current = null;\n }\n };\n }\n }, [ref, previousMonth, nextMonth, activeMonth]);\n\n //--------------------------------------------------------------------------------------------------------------------\n\n const handleRenderDay = useCallback(\n (props: PickersDayProps<Dayjs>) => {\n const startDate = value[0];\n const endDate = value[1];\n\n const dateVal = getDateVal(props.day);\n\n const baseClassName = baseClassNames[dateVal];\n const selectedClassName = selectedClassNames[dateVal];\n const focusedClassName = focusedClassNames[dateVal];\n\n return (\n <div key={props.key} style={{ position: 'relative' }}>\n <div className={classNames('focused-bg', baseClassName, focusedClassName)} />\n <div className={classNames('selected-bg', baseClassName, selectedClassName)} />\n <PickersDay\n {...props}\n disableMargin\n selected={props.day.isSame(startDate, 'date') || props.day.isSame(endDate, 'date')}\n onMouseEnter={\n value[0] || value[1] ? () => onMouseEnterPickersDay && onMouseEnterPickersDay(props.day) : undefined\n }\n />\n </div>\n );\n },\n [value, getDateVal, baseClassNames, selectedClassNames, focusedClassNames, onMouseEnterPickersDay]\n );\n\n /********************************************************************************************************************\n * Render\n * ******************************************************************************************************************/\n\n return (\n <StaticDatePicker\n className='FormDateRangePickerTooltipPicker'\n displayStaticWrapperAs='desktop'\n slots={{\n previousIconButton: LeftArrowButton,\n nextIconButton: RightArrowButton,\n day: handleRenderDay,\n }}\n value={activeMonthValue}\n defaultCalendarMonth={month}\n disableFuture={disableFuture}\n disablePast={disablePast}\n minDate={minDate}\n maxDate={maxDate}\n onChange={(newValue) => onValueChange && onValueChange(selectType, newValue)}\n // renderDay={handleRenderDay}\n // renderInput={(params) => <TextField {...params} />}\n // format='YYYY-MM-DD HH:mm:ss'\n onMonthChange={(month) => {\n if (onMonthChange) onMonthChange(month);\n setActiveMonthValue(null);\n }}\n />\n );\n }\n);\n\nFormDateRangePickerTooltipPicker.displayName = 'FormDateRangePickerTooltipPicker';\nFormDateRangePickerTooltipPicker.defaultProps = FormDateRangePickerTooltipPickerDefaultProps;\n\nexport default FormDateRangePickerTooltipPicker;\n","import React, { ReactNode, useCallback, useEffect, useLayoutEffect, useMemo, useRef, useState } from 'react';\nimport classNames from 'classnames';\nimport {\n FormDateRangePickerTooltipPickerContainerProps as Props,\n FormDateRangePickerTooltipPickerContainerDefaultProps,\n FormDateRangePickerTooltipPickerContainerCommands,\n} from './FormDateRangePickerTooltipPickerContainer.types';\nimport {\n FormDateRangePickerTooltipPicker,\n FormDateRangePickerTooltipPickerCommands,\n FormDateRangePickerTooltipPickerDateValue,\n} from './FormDateRangePickerTooltipPicker';\nimport { Button, darken, Grid, Icon, IconButton, useTheme } from '@mui/material';\nimport './FormDateRangePickerTooltipPickerContainer.scss';\nimport dayjs, { Dayjs } from 'dayjs';\nimport {\n getAvailableDate,\n getAvailableDateVal,\n getDateValForAvailableDate,\n isDateAvailable,\n makeAvailableDate,\n nextTick,\n} from '../../../@util';\n\nconst YEARS = new Array(200).fill(0);\nfor (let i = 0; i < 200; i += 1) {\n YEARS[i] = 1900 + i;\n}\n\nconst MONTHS = new Array(12).fill(0);\nfor (let i = 0; i < 12; i += 1) {\n MONTHS[i] = i;\n}\n\nconst FormDateRangePickerTooltipPickerContainer = React.forwardRef<\n FormDateRangePickerTooltipPickerContainerCommands,\n Props\n>(\n (\n {\n selectType,\n value,\n calendarCount,\n months,\n disablePast,\n disableFuture,\n maxDate,\n minDate,\n onGetActionButtons,\n onChange,\n onValueChange,\n onMonthsChange,\n },\n ref\n ) => {\n const theme = useTheme();\n\n /********************************************************************************************************************\n * Ref\n * ******************************************************************************************************************/\n\n const datePicker1Ref = useRef<FormDateRangePickerTooltipPickerCommands>(null);\n const datePicker2Ref = useRef<FormDateRangePickerTooltipPickerCommands>(null);\n const datePicker3Ref = useRef<FormDateRangePickerTooltipPickerCommands>(null);\n const yearSelectRef = useRef<HTMLDivElement>(null);\n const activeYearBtnRef = useRef<HTMLButtonElement>(null);\n\n /********************************************************************************************************************\n * Memo\n * ******************************************************************************************************************/\n\n const [focusedDate, setFocusedDate] = useState<FormDateRangePickerTooltipPickerDateValue>();\n const [yearMonthSelectIndex, setYearMonthSelectIndex] = useState<number>(0);\n const [yearSelectOpen, setYearSelectOpen] = useState(false);\n const [monthSelectOpen, setMonthSelectOpen] = useState(false);\n\n const customDatePickerProps = useMemo(\n () => ({ selectType, value, minDate, maxDate, disableFuture, disablePast, onValueChange }),\n [selectType, value, minDate, maxDate, disableFuture, disablePast, onValueChange]\n );\n\n const availableDate = useMemo(\n () => makeAvailableDate(minDate, maxDate, !!disablePast, !!disableFuture),\n [minDate, maxDate, disablePast, disableFuture]\n );\n\n /********************************************************************************************************************\n * Effect\n * ******************************************************************************************************************/\n\n useEffect(() => {\n if (yearSelectOpen) {\n nextTick(() => {\n const wrapRect = yearSelectRef.current?.getBoundingClientRect();\n const activeRect = activeYearBtnRef.current?.getBoundingClientRect();\n if (wrapRect && activeRect) {\n yearSelectRef.current?.scrollTo({\n left: 0,\n top: activeRect.y - wrapRect.y - Math.round(wrapRect.height / 2) + 23,\n });\n }\n });\n }\n }, [yearSelectOpen]);\n\n /********************************************************************************************************************\n * Function\n * ******************************************************************************************************************/\n\n const previousMonth = useCallback(() => {\n datePicker1Ref.current?.previousMonth();\n datePicker2Ref.current?.previousMonth();\n datePicker3Ref.current?.previousMonth();\n }, []);\n\n const nextMonth = useCallback(() => {\n datePicker1Ref.current?.nextMonth();\n datePicker2Ref.current?.nextMonth();\n datePicker3Ref.current?.nextMonth();\n }, []);\n\n const activeMonth = useCallback((month: Dayjs) => {\n datePicker1Ref.current?.activeMonth(month);\n datePicker2Ref.current?.activeMonth(month.add(1, 'month'));\n datePicker3Ref.current?.activeMonth(month.add(2, 'month'));\n }, []);\n\n /********************************************************************************************************************\n * Event Handler\n * ******************************************************************************************************************/\n\n const handleFirstDatePickerMonthChange = useCallback(\n (date: Dayjs) => {\n if (onMonthsChange) {\n onMonthsChange([date, date.add(1, 'month'), date.add(2, 'month')]);\n }\n },\n [onMonthsChange]\n );\n\n const handleYearSelectClick = useCallback(\n (index: number) => {\n if (yearSelectOpen) {\n setYearSelectOpen(false);\n if (index !== yearMonthSelectIndex) {\n nextTick(() => {\n setYearMonthSelectIndex(index);\n setYearSelectOpen(true);\n setMonthSelectOpen(false);\n });\n }\n } else {\n setYearMonthSelectIndex(index);\n setYearSelectOpen(true);\n setMonthSelectOpen(false);\n }\n },\n [yearSelectOpen, yearMonthSelectIndex]\n );\n\n const handleMonthSelectClick = useCallback(\n (index: number) => {\n if (monthSelectOpen) {\n setMonthSelectOpen(false);\n if (index !== yearMonthSelectIndex) {\n setYearMonthSelectIndex(index);\n setMonthSelectOpen(true);\n setYearSelectOpen(false);\n }\n } else {\n setYearMonthSelectIndex(index);\n setMonthSelectOpen(true);\n setYearSelectOpen(false);\n }\n },\n [monthSelectOpen, yearMonthSelectIndex]\n );\n\n const handleYearSelect = useCallback(\n (year: number) => {\n activeMonth(months[yearMonthSelectIndex].set('year', year).subtract(yearMonthSelectIndex, 'month'));\n setYearSelectOpen(false);\n setMonthSelectOpen(true);\n },\n [activeMonth, months, yearMonthSelectIndex]\n );\n\n const handleMonthSelect = useCallback(\n (m: number) => {\n activeMonth(months[yearMonthSelectIndex].set('month', m).subtract(yearMonthSelectIndex, 'month'));\n setMonthSelectOpen(false);\n },\n [activeMonth, months, yearMonthSelectIndex]\n );\n\n /********************************************************************************************************************\n * Commands\n * ******************************************************************************************************************/\n\n useLayoutEffect(() => {\n if (ref) {\n const commands: FormDateRangePickerTooltipPickerContainerCommands = {\n previousMonth,\n nextMonth,\n activeMonth,\n };\n\n if (typeof ref === 'function') {\n ref(commands);\n } else {\n ref.current = commands;\n }\n\n return () => {\n if (typeof ref === 'function') {\n ref(null);\n } else {\n ref.current = null;\n }\n };\n }\n }, [ref, previousMonth, nextMonth, activeMonth]);\n\n /********************************************************************************************************************\n * Render Function\n * ******************************************************************************************************************/\n\n const getMonthTitle = useCallback(\n (index: number): ReactNode => {\n return (\n <div className='month-title'>\n <Button\n variant='text'\n className={yearSelectOpen && yearMonthSelectIndex === index ? 'active' : undefined}\n onClick={() => handleYearSelectClick(index)}\n >\n {months[index].format('YYYY년')}\n <Icon>{yearSelectOpen && yearMonthSelectIndex === index ? 'arrow_drop_up' : 'arrow_drop_down'}</Icon>\n </Button>\n <Button\n variant='text'\n className={monthSelectOpen && yearMonthSelectIndex === index ? 'active' : undefined}\n onClick={() => handleMonthSelectClick(index)}\n >\n {months[index].format('M월')}\n <Icon>{monthSelectOpen && yearMonthSelectIndex === index ? 'arrow_drop_up' : 'arrow_drop_down'}</Icon>\n </Button>\n </div>\n );\n },\n [yearSelectOpen, yearMonthSelectIndex, months, monthSelectOpen, handleYearSelectClick, handleMonthSelectClick]\n );\n\n /********************************************************************************************************************\n * Render - Function\n * ******************************************************************************************************************/\n\n const getActionButton = useCallback(\n (startDate: Dayjs, endDate: Dayjs, label: string) => {\n const availableDateDate = getAvailableDate(availableDate, 'date');\n const availableDateVal = getAvailableDateVal(availableDate, 'date');\n const startDateVal = getDateValForAvailableDate(startDate, 'date');\n const endDateVal = getDateValForAvailableDate(endDate, 'date');\n const disabled =\n (!!availableDateVal[0] && endDateVal < availableDateVal[0]) ||\n (!!availableDateVal[1] && startDateVal > availableDateVal[1]);\n\n let finalStartDate: Dayjs = startDate,\n finalEndDate: Dayjs = endDate;\n if (!disabled) {\n if (availableDateVal[0] && availableDateDate[0]) {\n if (startDateVal < availableDateVal[0]) {\n finalStartDate = availableDateDate[0];\n }\n }\n if (availableDateVal[1] && availableDateDate[1]) {\n if (endDateVal > availableDateVal[1]) {\n finalEndDate = availableDateDate[1];\n }\n }\n }\n return (\n <Button\n className={disabled ? 'disabled' : undefined}\n variant='text'\n disabled={disabled}\n onClick={() => {\n onChange([finalStartDate, finalEndDate]);\n }}\n >\n {label}\n </Button>\n );\n },\n [onChange, availableDate]\n );\n\n /********************************************************************************************************************\n * Render\n * ******************************************************************************************************************/\n\n const actionButtons = useMemo(() => {\n if (onGetActionButtons) {\n return onGetActionButtons().map((info, idx) => (\n <React.Fragment key={idx}>{getActionButton(info.start, info.end, info.label)}</React.Fragment>\n ));\n } else {\n const now = dayjs().startOf('d');\n const lastWeek = now.subtract(1, 'week');\n const dayOfWeek = now.day();\n let lastWeekDate: [Dayjs, Dayjs];\n let thisWeekDate: [Dayjs, Dayjs];\n if (dayOfWeek === 0) {\n lastWeekDate = [lastWeek.subtract(6, 'd'), lastWeek];\n thisWeekDate = [now.subtract(6, 'd'), now];\n } else {\n lastWeekDate = [lastWeek.subtract(dayOfWeek - 1, 'd'), lastWeek.add(7 - dayOfWeek, 'd')];\n thisWeekDate = [now.subtract(dayOfWeek - 1, 'd'), now.add(7 - dayOfWeek, 'd')];\n }\n\n return (\n <>\n {getActionButton(\n now.subtract(1, 'month').startOf('month'),\n now.subtract(1, 'month').endOf('month'),\n '지난달'\n )}\n {getActionButton(now.startOf('month'), now.endOf('month'), '이번달')}\n {getActionButton(now.subtract(29, 'd'), now, '최근 30일')}\n {getActionButton(now.subtract(6, 'd'), now, '최근 7일')}\n {getActionButton(lastWeekDate[0], lastWeekDate[1], '지난주')}\n {getActionButton(thisWeekDate[0], thisWeekDate[1], '이번주')}\n {getActionButton(now.subtract(1, 'd'), now.subtract(1, 'd'), '어제')}\n {getActionButton(now, now, '오늘')}\n </>\n );\n }\n }, [onGetActionButtons, getActionButton]);\n\n return (\n <div className='FormDateRangePickerTooltipPickerContainer'>\n <Grid container direction='column'>\n {!yearSelectOpen && !monthSelectOpen && (\n <Grid item>\n <Grid container className='month-change-arrow-wrap'>\n <Grid item xs={6}>\n <IconButton onClick={previousMonth}>\n <Icon>keyboard_arrow_left</Icon>\n </IconButton>\n </Grid>\n <Grid item xs={6}>\n <IconButton onClick={nextMonth}>\n <Icon>keyboard_arrow_right</Icon>\n </IconButton>\n </Grid>\n </Grid>\n </Grid>\n )}\n <Grid item onMouseLeave={() => setFocusedDate(undefined)}>\n <div style={{ display: 'flex' }}>\n <div style={{ flex: 1 }}>{getMonthTitle(0)}</div>\n <div style={{ flex: 1, borderLeft: '1px solid #efefef' }}>{getMonthTitle(1)}</div>\n {Number(calendarCount) >= 3 && (\n <div style={{ flex: 1, borderLeft: '1px solid #efefef' }}>{getMonthTitle(2)}</div>\n )}\n </div>\n <div className='date-picker-wrap'>\n <Grid container flexWrap='nowrap'>\n <Grid item>\n <FormDateRangePickerTooltipPicker\n {...customDatePickerProps}\n ref={datePicker1Ref}\n focusedDate={focusedDate}\n month={months[0]}\n onMouseEnterPickersDay={setFocusedDate}\n onMonthChange={handleFirstDatePickerMonthChange}\n />\n </Grid>\n <Grid item style={{ borderLeft: '1px solid #efefef' }}>\n <FormDateRangePickerTooltipPicker\n {...customDatePickerProps}\n ref={datePicker2Ref}\n focusedDate={focusedDate}\n month={months[1]}\n onMouseEnterPickersDay={setFocusedDate}\n />\n </Grid>\n {Number(calendarCount) >= 3 && (\n <Grid item style={{ borderLeft: '1px solid #efefef' }}>\n <FormDateRangePickerTooltipPicker\n {...customDatePickerProps}\n ref={datePicker3Ref}\n focusedDate={focusedDate}\n month={months[2]}\n onMouseEnterPickersDay={setFocusedDate}\n />\n </Grid>\n )}\n </Grid>\n {yearSelectOpen && (\n <div ref={yearSelectRef} className='year-select'>\n <Grid container style={{ padding: '5px 10px' }} spacing={1}>\n {YEARS.map((y) => {\n const today = dayjs();\n const isToday = y === today.year();\n const isActive = y === months[yearMonthSelectIndex].year();\n const isSelected = y === value[yearMonthSelectIndex]?.year();\n const disabled = !isDateAvailable(dayjs(y.toString(), 'YYYY'), availableDate, 'year');\n\n return (\n <Grid key={y} item xs={2}>\n <Button\n variant='text'\n fullWidth\n disabled={disabled}\n className={classNames(isSelected && 'selected', isActive && 'active', isToday && 'today')}\n ref={isActive ? activeYearBtnRef : undefined}\n sx={{\n backgroundColor: isSelected ? theme.palette.primary.main : undefined,\n color: isSelected ? 'white' : 'unset',\n ':hover': {\n backgroundColor: isSelected\n ? darken(theme.palette.primary.main, 0.2)\n : darken('#fff', 0.1),\n },\n }}\n onClick={() => handleYearSelect(y)}\n >\n {y}\n </Button>\n </Grid>\n );\n })}\n </Grid>\n </div>\n )}\n {monthSelectOpen && (\n <div className='month-select'>\n <Grid container style={{ padding: '5px 10px' }} spacing={1}>\n {MONTHS.map((m) => {\n const today = dayjs();\n const isToday = today.year() === months[yearMonthSelectIndex].year() && m === today.month();\n const isActive = m === months[yearMonthSelectIndex].month();\n const isSelected =\n value[yearMonthSelectIndex]?.year() === months[yearMonthSelectIndex].year() &&\n m === value[yearMonthSelectIndex]?.month();\n const ym = months[yearMonthSelectIndex].year() * 100 + (m + 1);\n const disabled = !isDateAvailable(dayjs(ym.toString(), 'YYYYMM'), availableDate, 'month');\n\n return (\n <Grid key={m} item xs={4}>\n <Button\n variant='text'\n fullWidth\n disabled={disabled}\n className={classNames(isSelected && 'selected', isActive && 'active', isToday && 'today')}\n ref={isActive ? activeYearBtnRef : undefined}\n sx={{\n backgroundColor: isSelected ? theme.palette.primary.main : undefined,\n color: isSelected ? 'white' : 'unset',\n ':hover': {\n backgroundColor: isSelected\n ? darken(theme.palette.primary.main, 0.2)\n : darken('#fff', 0.1),\n },\n }}\n onClick={() => handleMonthSelect(m)}\n >\n {m + 1}월\n </Button>\n </Grid>\n );\n })}\n </Grid>\n </div>\n )}\n </div>\n </Grid>\n <Grid\n className='action-buttons'\n item\n style={{ borderTop: '1px solid #efefef', padding: 10, textAlign: 'right' }}\n >\n {actionButtons}\n </Grid>\n </Grid>\n </div>\n );\n }\n);\n\nFormDateRangePickerTooltipPickerContainer.displayName = 'FormDateRangePickerTooltipPickerContainer';\nFormDateRangePickerTooltipPickerContainer.defaultProps = FormDateRangePickerTooltipPickerContainerDefaultProps;\n\nexport default FormDateRangePickerTooltipPickerContainer;\n","import React, { ReactNode, useCallback, useEffect, useId, useLayoutEffect, useMemo, useRef, useState } from 'react';\nimport classNames from 'classnames';\nimport {\n FormDateRangePickerProps as Props,\n FormDateRangePickerDefaultProps,\n FormDateRangePickerValue,\n FormDateRangePickerDateValue,\n FormDateRangePickerCalendarCount,\n FormDateRangePickerCommands,\n} from './FormDateRangePicker.types';\nimport { useAutoUpdateState, useFirstSkipEffect } from '@pdg/react-hook';\nimport { LocalizationProvider } from '@mui/x-date-pickers';\nimport { AdapterDayjs } from '@mui/x-date-pickers/AdapterDayjs';\nimport { ClickAwayListener, FormHelperText, Grid } from '@mui/material';\nimport { PrivateInputDatePicker, PrivateInputDatePickerValue, PrivateStyledTooltip } from '../../@private';\n\nimport {\n FormDateRangePickerTooltipPickerContainer,\n FormDateRangePickerTooltipPickerContainerCommands,\n FormDateRangePickerTooltipPickerContainerMonths,\n} from './FormDateRangePickerTooltipPickerContainer';\nimport {\n FormDateRangePickerTooltipPickerDateValue,\n FormDateRangePickerTooltipPickerSelectType,\n FormDateRangePickerTooltipPickerValue,\n} from './FormDateRangePickerTooltipPickerContainer/FormDateRangePickerTooltipPicker';\nimport dayjs, { Dayjs } from 'dayjs';\nimport { useFormState } from '../../FormContext';\nimport { getDateValidationErrorText, nextTick, notEmpty } from '../../@util';\nimport { DateValidationError } from '@mui/x-date-pickers';\n\nconst DEFAULT_VALUE: FormDateRangePickerValue = [null, null];\nconst DEFAULT_FORMAT = 'YYYY-MM-DD';\n\nconst FormDateRangePicker = React.forwardRef<FormDateRangePickerCommands, Props>(\n (\n {\n variant: initVariant,\n size: initSize,\n color: initColor,\n focused: initFocused,\n labelShrink: initLabelShrink,\n fullWidth: initFullWidth,\n //--------------------------------------------------------------------------------------------------------------------\n name,\n value: initValue,\n data: initData,\n fromLabel,\n fromLabelIcon,\n toLabel,\n toLabelIcon,\n calendarCount: initCalendarCount,\n format: initFormat,\n formValueFormat,\n allowSingleSelect,\n required,\n requiredStart,\n requiredEnd,\n readOnly,\n readOnlyStart,\n readOnlyEnd,\n readOnlyInput,\n disabled: initDisabled,\n inputWidth,\n exceptValue,\n error: initError,\n helperText,\n formValueFromNameSuffix,\n formValueToNameSuffix,\n icon,\n startIcon,\n endIcon,\n startAdornment,\n startStartAdornment,\n endStartAdornment,\n endAdornment,\n startEndAdornment,\n endEndAdornment,\n disablePast,\n disableFuture,\n minDate,\n maxDate,\n hidden: initHidden,\n align,\n onGetActionButtons,\n onChange,\n onValidate,\n // -------------------------------------------------------------------------------------------------------------------\n className,\n },\n ref\n ) => {\n /********************************************************************************************************************\n * ID\n * ******************************************************************************************************************/\n\n const id = useId();\n\n /********************************************************************************************************************\n * FormState\n * ******************************************************************************************************************/\n\n const {\n variant: formVariant,\n size: formSize,\n color: formColor,\n focused: formFocused,\n labelShrink: formLabelShrink,\n fullWidth: formFullWidth,\n disabled: formDisabled,\n formColWithHelperText,\n onAddValueItem,\n onRemoveValueItem,\n onValueChange,\n onValueChangeByUser,\n onRequestSearchSubmit,\n } = useFormState();\n\n /********************************************************************************************************************\n * Memo - FormState\n * ******************************************************************************************************************/\n\n const variant = useMemo(() => (initVariant == null ? formVariant : initVariant), [initVariant, formVariant]);\n const size = useMemo(() => (initSize == null ? formSize : initSize), [initSize, formSize]);\n const color = useMemo(() => (initColor == null ? formColor : initColor), [initColor, formColor]);\n const focused = useMemo(() => (initFocused == null ? formFocused : initFocused), [initFocused, formFocused]);\n const labelShrink = useMemo(\n () => (initLabelShrink == null ? formLabelShrink : initLabelShrink),\n [initLabelShrink, formLabelShrink]\n );\n const fullWidth = useMemo(\n () => (initFullWidth == null ? formFullWidth : initFullWidth),\n [initFullWidth, formFullWidth]\n );\n\n /********************************************************************************************************************\n * Ref\n * ******************************************************************************************************************/\n\n const containerRef = useRef<FormDateRangePickerTooltipPickerContainerCommands>(null);\n const startDateTextFieldRef = useRef<HTMLInputElement>();\n const endDateTextFieldRef = useRef<HTMLInputElement>();\n const closeTimeoutRef = useRef<NodeJS.Timeout>();\n const mouseDownTimeRef = useRef<number>();\n const startInputDatePickerErrorRef = useRef<DateValidationError>(null);\n const endInputDatePickerErrorRef = useRef<DateValidationError>(null);\n const openValueRef = useRef<FormDateRangePickerValue>();\n\n /********************************************************************************************************************\n * State\n * ******************************************************************************************************************/\n\n const [disabled, setDisabled] = useAutoUpdateState<Props['disabled']>(\n initDisabled == null ? formDisabled : initDisabled\n );\n const [hidden, setHidden] = useAutoUpdateState<Props['hidden']>(initHidden);\n const [error, setError] = useAutoUpdateState<Props['error']>(initError);\n const [errorHelperText, setErrorHelperText] = useState<Props['helperText']>();\n const [fromError, setFromError] = useState(false);\n const [fromErrorHelperText, setFromErrorHelperText] = useState<Props['helperText']>();\n const [toError, setToError] = useState(false);\n const [toErrorHelperText, setToErrorHelperText] = useState<Props['helperText']>();\n const [data, setData] = useAutoUpdateState<Props['data']>(initData);\n\n /********************************************************************************************************************\n * Memo\n * ******************************************************************************************************************/\n\n const format = useMemo(() => initFormat || DEFAULT_FORMAT, [initFormat]);\n\n /********************************************************************************************************************\n * Function - getFinalValue\n * ******************************************************************************************************************/\n\n const getFinalValue = useCallback((value: FormDateRangePickerValue | undefined): FormDateRangePickerValue => {\n return value || DEFAULT_VALUE;\n }, []);\n\n /********************************************************************************************************************\n * Function - focus\n * ******************************************************************************************************************/\n\n const focus = useCallback(() => {\n startDateTextFieldRef.current?.focus();\n }, [startDateTextFieldRef]);\n\n const focusValidate = useCallback(() => {\n if (toError) {\n endDateTextFieldRef.current?.focus();\n } else {\n startDateTextFieldRef.current?.focus();\n }\n }, [toError, startDateTextFieldRef, endDateTextFieldRef]);\n\n /********************************************************************************************************************\n * Function - setErrorErrorHelperText\n * ******************************************************************************************************************/\n\n const setErrorErrorHelperText = useCallback(\n (error: boolean, errorHelperText: ReactNode) => {\n setError(error);\n setErrorHelperText(errorHelperText);\n },\n [setError]\n );\n\n const setFromErrorErrorHelperText = useCallback((error: boolean, fromErrorHelperText: ReactNode) => {\n setFromError(error);\n setFromErrorHelperText(fromErrorHelperText);\n }, []);\n\n const setToErrorErrorHelperText = useCallback((error: boolean, toErrorHelperText: ReactNode) => {\n setToError(error);\n setToErrorHelperText(toErrorHelperText);\n }, []);\n\n /********************************************************************************************************************\n * Function - validate\n * ******************************************************************************************************************/\n\n const validate = useCallback(\n (value: FormDateRangePickerValue) => {\n if (required && (value[0] == null || value[1] == null)) {\n if (value[0] == null && value[1] == null) {\n setErrorErrorHelperText(true, '필수 입력 항목입니다.');\n } else if (value[0] == null) {\n setFromErrorErrorHelperText(true, '필수 입력 항목입니다.');\n } else {\n setToErrorErrorHelperText(true, '필수 입력 항목입니다.');\n }\n return false;\n }\n if (requiredStart && value[0] == null) {\n setFromErrorErrorHelperText(true, '필수 입력 항목입니다.');\n return false;\n }\n if (requiredEnd && value[1] == null) {\n setToErrorErrorHelperText(true, '필수 입력 항목입니다.');\n return false;\n }\n if (!allowSingleSelect && (value[0] || value[1]) && (value[0] == null || value[1] == null)) {\n if (value[0] == null) {\n setFromErrorErrorHelperText(true, '필수 입력 항목입니다.');\n } else {\n setToErrorErrorHelperText(true, '필수 입력 항목입니다.');\n }\n return false;\n }\n\n const startInputValue = startDateTextFieldRef.current?.value || '';\n const endInputValue = endDateTextFieldRef.current?.value || '';\n\n if (notEmpty(startInputValue) && !dayjs(startInputValue, format).isValid()) {\n setFromErrorErrorHelperText(true, '형식이 일치하지 않습니다.');\n return false;\n }\n if (notEmpty(endInputValue) && !dayjs(endInputValue, format).isValid()) {\n setToErrorErrorHelperText(true, '형식이 일치하지 않습니다.');\n return false;\n }\n if (startInputDatePickerErrorRef.current) {\n setFromErrorErrorHelperText(true, getDateValidationErrorText(startInputDatePickerErrorRef.current));\n return false;\n }\n if (endInputDatePickerErrorRef.current) {\n setToErrorErrorHelperText(true, getDateValidationErrorText(endInputDatePickerErrorRef.current));\n return false;\n }\n\n if (onValidate) {\n const onValidateResult = onValidate(value);\n if (onValidateResult != null && onValidateResult !== true) {\n setErrorErrorHelperText(true, onValidateResult);\n return false;\n }\n }\n\n setErrorErrorHelperText(false, undefined);\n setFromError(false);\n setToError(false);\n\n return true;\n },\n [\n required,\n requiredStart,\n requiredEnd,\n allowSingleSelect,\n format,\n onValidate,\n setErrorErrorHelperText,\n setFromErrorErrorHelperText,\n setToErrorErrorHelperText,\n ]\n );\n\n /********************************************************************************************************************\n * Function - activeMonth\n * ******************************************************************************************************************/\n\n const activeMonth = useCallback(\n (month: Dayjs) => {\n setMonths([month, month.add(1, 'month'), month.add(2, 'month')]);\n containerRef.current?.activeMonth(month);\n },\n [containerRef]\n );\n\n /********************************************************************************************************************\n * State\n * ******************************************************************************************************************/\n\n const [open, setOpen] = useState(false);\n const [selectType, setSelectType] = useState<FormDateRangePickerTooltipPickerSelectType>('start');\n const [value, setValue] = useAutoUpdateState<FormDateRangePickerValue>(\n useCallback(() => {\n return initValue || DEFAULT_VALUE;\n }, [initValue])\n );\n\n const [calendarCount] = useAutoUpdateState<FormDateRangePickerCalendarCount>(initCalendarCount || 2);\n const [months, setMonths] = useState<FormDateRangePickerTooltipPickerContainerMonths>(() => {\n const now = dayjs();\n return [now, now.add(1, 'month'), now.add(2, 'month')];\n });\n\n /********************************************************************************************************************\n * Memo\n * ******************************************************************************************************************/\n\n const inputDatePickerProps = useMemo(\n () => ({\n align,\n variant,\n size,\n color,\n labelShrink,\n fullWidth,\n disabled,\n format,\n disablePast,\n disableFuture,\n minDate,\n maxDate,\n }),\n [\n align,\n variant,\n size,\n color,\n labelShrink,\n fullWidth,\n disabled,\n format,\n disablePast,\n disableFuture,\n minDate,\n maxDate,\n ]\n );\n\n const inputStyle = useMemo(\n () => (inputWidth != null ? { width: inputWidth } : { width: fullWidth ? undefined : 150 }),\n [inputWidth, fullWidth]\n );\n\n /********************************************************************************************************************\n * Effect\n * ******************************************************************************************************************/\n\n useEffect(() => {\n if (value !== initValue) {\n if (onChange) onChange(value);\n onValueChange(name, value);\n }\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, []);\n\n useFirstSkipEffect(() => {\n if (error || fromError || toError) validate(value);\n if (onChange) onChange(value);\n onValueChange(name, value);\n }, [value]);\n\n useFirstSkipEffect(() => {\n if (open) {\n openValueRef.current = value;\n } else {\n if (openValueRef.current) {\n const openStartDate = openValueRef.current[0];\n const openEndDate = openValueRef.current[1];\n const startDate = value[0];\n const endDate = value[1];\n\n if (allowSingleSelect || (startDate != null && endDate != null)) {\n let runOnRequestSearchSubmit = false;\n if (openStartDate !== startDate) {\n if (openStartDate && startDate) {\n runOnRequestSearchSubmit = !openStartDate.isSame(startDate, 'date');\n } else {\n runOnRequestSearchSubmit = true;\n }\n }\n if (!runOnRequestSearchSubmit && openEndDate !== endDate) {\n if (openEndDate && endDate) {\n runOnRequestSearchSubmit = !openEndDate.isSame(endDate, 'date');\n } else {\n runOnRequestSearchSubmit = true;\n }\n }\n\n if (runOnRequestSearchSubmit) {\n onRequestSearchSubmit(name, value);\n }\n }\n }\n }\n }, [open]);\n\n /********************************************************************************************************************\n * Memo\n * ******************************************************************************************************************/\n\n const wrapStyle = useMemo(\n () => ({\n display: hidden ? 'none' : fullWidth ? 'block' : 'inline-block',\n flex: fullWidth ? 1 : undefined,\n }),\n [hidden, fullWidth]\n );\n\n /********************************************************************************************************************\n * Event Handler\n * ******************************************************************************************************************/\n\n const handleChange = useCallback(\n (newValue: FormDateRangePickerTooltipPickerValue) => {\n setValue(newValue);\n setOpen(false);\n setFromErrorErrorHelperText(false, undefined);\n setToErrorErrorHelperText(false, undefined);\n },\n [setToErrorErrorHelperText, setFromErrorErrorHelperText, setValue]\n );\n\n const handleValueChange = useCallback(\n (\n selectType: FormDateRangePickerTooltipPickerSelectType,\n newValue: FormDateRangePickerTooltipPickerDateValue,\n fromInput?: boolean\n ) => {\n let finalValue: Props['value'];\n switch (selectType) {\n case 'start':\n if (value[1]?.isBefore(newValue)) {\n finalValue = [newValue, null];\n if (!fromInput) {\n nextTick(() => {\n endDateTextFieldRef.current?.focus();\n });\n }\n } else {\n finalValue = [newValue, value[1]];\n if (!fromInput) {\n if (value[0] == null && newValue != null && value[1] != null) {\n setOpen(false);\n } else {\n nextTick(() => {\n endDateTextFieldRef.current?.focus();\n });\n }\n }\n }\n setFromErrorErrorHelperText(false, undefined);\n if (fromInput && newValue) {\n activeMonth(newValue);\n }\n break;\n case 'end':\n if (newValue?.isBefore(value[0])) {\n finalValue = [newValue, null];\n if (fromInput && newValue) {\n activeMonth(newValue.subtract(calendarCount - 1, 'month'));\n }\n setFromErrorErrorHelperText(false, undefined);\n } else {\n finalValue = [value[0], newValue];\n if (fromInput && newValue) {\n activeMonth(newValue.subtract(calendarCount - 1, 'month'));\n }\n if (value[0]) {\n setOpen(false);\n\n if (fromInput && !open) {\n nextTick(() => {\n onRequestSearchSubmit(name, finalValue);\n });\n }\n } else {\n nextTick(() => {\n startDateTextFieldRef.current?.focus();\n });\n }\n setToErrorErrorHelperText(false, undefined);\n }\n break;\n }\n\n setValue(finalValue);\n\n nextTick(() => {\n onValueChangeByUser(name, finalValue);\n });\n },\n [\n setValue,\n value,\n setFromErrorErrorHelperText,\n activeMonth,\n calendarCount,\n setToErrorErrorHelperText,\n open,\n onRequestSearchSubmit,\n name,\n onValueChangeByUser,\n ]\n );\n\n const handleInputDatePickerChange = useCallback(\n (selectType: FormDateRangePickerTooltipPickerSelectType, newValue: FormDateRangePickerDateValue) => {\n let error = false;\n if (newValue) {\n if (newValue.isValid()) {\n handleValueChange(selectType, newValue, true);\n } else {\n error = true;\n }\n } else {\n handleValueChange(selectType, newValue, true);\n }\n\n switch (selectType) {\n case 'start':\n setFromError(error);\n break;\n case 'end':\n setToError(error);\n break;\n }\n },\n [handleValueChange]\n );\n\n /********************************************************************************************************************\n * Event Handler - Container\n * ******************************************************************************************************************/\n\n const handleContainerFocus = useCallback(() => {\n if (closeTimeoutRef.current) {\n clearTimeout(closeTimeoutRef.current);\n closeTimeoutRef.current = undefined;\n }\n }, []);\n\n const handleContainerBlur = useCallback(() => {\n if (closeTimeoutRef.current) {\n clearTimeout(closeTimeoutRef.current);\n closeTimeoutRef.current = undefined;\n }\n\n if (!mouseDownTimeRef.current || new Date().getTime() - mouseDownTimeRef.current > 100) {\n closeTimeoutRef.current = setTimeout(() => {\n closeTimeoutRef.current = undefined;\n setOpen(false);\n }, 10);\n }\n }, []);\n\n const handleContainerMouseDown = useCallback(() => {\n if (closeTimeoutRef.current) {\n clearTimeout(closeTimeoutRef.current);\n closeTimeoutRef.current = undefined;\n }\n mouseDownTimeRef.current = new Date().getTime();\n }, []);\n\n const handleInputDatePickerFocus = useCallback(\n (selectType: FormDateRangePickerTooltipPickerSelectType) => {\n if (readOnly || disabled) return;\n\n const startValue = value[0];\n const endValue = value[1];\n setOpen(true);\n setSelectType(selectType);\n if (startValue && endValue) {\n switch (selectType) {\n case 'start':\n activeMonth(startValue);\n break;\n case 'end':\n if (startValue.isSame(endValue, 'month')) {\n activeMonth(startValue);\n } else {\n if (endValue.diff(startValue, 'month') > calendarCount - 1) {\n activeMonth(endValue.subtract(calendarCount - 1, 'month'));\n } else {\n activeMonth(startValue);\n }\n }\n break;\n }\n } else if (startValue) {\n activeMonth(startValue);\n } else if (endValue) {\n activeMonth(endValue);\n }\n },\n [value, calendarCount, activeMonth, readOnly, disabled]\n );\n\n /********************************************************************************************************************\n * Commands\n * ******************************************************************************************************************/\n\n useLayoutEffect(() => {\n if (ref || onAddValueItem) {\n let lastValue = value;\n let lastData = data;\n let lastDisabled = !!disabled;\n let lastHidden = !!hidden;\n\n const commands: FormDateRangePickerCommands = {\n getType: () => 'FormDateRangePicker',\n getName: () => name,\n getReset: () => getFinalValue(initValue),\n reset: () => {\n lastValue = getFinalValue(initValue);\n setValue(lastValue);\n },\n getValue: () => lastValue,\n setValue: (value) => {\n lastValue = getFinalValue(value);\n setValue(lastValue);\n },\n getData: () => lastData,\n setData: (data) => {\n lastData = data;\n setData(data);\n },\n\n getFromValue: () => lastValue[0],\n setFromValue: (value) => {\n lastValue = [value, lastValue[1]];\n setValue(lastValue);\n },\n getToValue: () => lastValue[1],\n setToValue: (value) => {\n lastValue = [lastValue[0], value];\n setValue(lastValue);\n },\n isExceptValue: () => !!exceptValue,\n isDisabled: () => lastDisabled,\n setDisabled: (disabled) => {\n lastDisabled = disabled;\n setDisabled(disabled);\n },\n isHidden: () => lastHidden,\n setHidden: (hidden) => {\n lastHidden = hidden;\n setHidden(hidden);\n },\n focus,\n focusValidate,\n validate: () => validate(value),\n setError: (error: boolean, errorText: ReactNode | undefined) =>\n setErrorErrorHelperText(error, error ? errorText : undefined),\n getFormValueFormat: () => formValueFormat || FormDateRangePickerDefaultProps.format,\n getFormValueFromNameSuffix: () =>\n formValueFromNameSuffix || FormDateRangePickerDefaultProps.formValueFromNameSuffix,\n getFormValueToNameSuffix: () =>\n formValueToNameSuffix || FormDateRangePickerDefaultProps.formValueToNameSuffix,\n getFormValueFromName: () => {\n return `${name}${formValueFromNameSuffix || FormDateRangePickerDefaultProps.formValueFromNameSuffix}`;\n },\n getFormValueToName: () => {\n return `${name}${formValueToNameSuffix || FormDateRangePickerDefaultProps.formValueToNameSuffix}`;\n },\n };\n\n if (ref) {\n if (typeof ref === 'function') {\n ref(commands);\n } else {\n ref.current = commands;\n }\n }\n\n if (onAddValueItem) onAddValueItem(id, commands);\n\n return () => {\n if (ref) {\n if (typeof ref === 'function') {\n ref(null);\n } else {\n ref.current = null;\n }\n }\n\n if (onRemoveValueItem) onRemoveValueItem(id);\n };\n }\n }, [\n name,\n initValue,\n value,\n getFinalValue,\n exceptValue,\n disabled,\n focus,\n focusValidate,\n validate,\n formValueFormat,\n formValueFromNameSuffix,\n formValueToNameSuffix,\n ref,\n onAddValueItem,\n onRemoveValueItem,\n id,\n setValue,\n setDisabled,\n setErrorErrorHelperText,\n data,\n setData,\n hidden,\n setHidden,\n ]);\n\n /********************************************************************************************************************\n * Render\n * ******************************************************************************************************************/\n\n return (\n <LocalizationProvider dateAdapter={AdapterDayjs}>\n <ClickAwayListener mouseEvent='onMouseDown' touchEvent='onTouchStart' onClickAway={() => setOpen(false)}>\n <div\n className={classNames(className, 'FormDateRangePicker')}\n style={wrapStyle}\n onMouseDown={handleContainerMouseDown}\n onFocus={handleContainerFocus}\n onBlur={handleContainerBlur}\n >\n <PrivateStyledTooltip\n open={open}\n PopperProps={{\n modifiers: [\n {\n name: 'offset',\n options: {\n offset: [\n 0,\n (error && errorHelperText) ||\n (fromError && fromErrorHelperText) ||\n (toError && toErrorHelperText)\n ? 8\n : -14,\n ],\n },\n },\n ],\n }}\n title={\n <div style={{ display: 'flex' }}>\n <FormDateRangePickerTooltipPickerContainer\n ref={containerRef}\n calendarCount={calendarCount}\n selectType={selectType}\n value={value}\n months={months}\n disablePast={disablePast}\n disableFuture={disableFuture}\n minDate={minDate}\n maxDate={maxDate}\n onGetActionButtons={onGetActionButtons}\n onChange={handleChange}\n onValueChange={handleValueChange}\n onMonthsChange={setMonths}\n />\n </div>\n }\n >\n <Grid container alignItems='center'>\n <Grid item flex={1}>\n <PrivateInputDatePicker\n {...inputDatePickerProps}\n style={inputStyle}\n value={value[0]}\n label={fromLabel}\n labelIcon={fromLabelIcon}\n error={error || fromError}\n focused={focused || (open && selectType === 'start')}\n required={required || requiredStart}\n readOnly={readOnly || readOnlyStart}\n readOnlyInput={readOnlyInput}\n icon={startIcon || icon}\n startAdornment={startStartAdornment || startAdornment}\n endAdornment={startEndAdornment || endAdornment}\n inputRef={startDateTextFieldRef}\n onChange={(newValue: PrivateInputDatePickerValue) => handleInputDatePickerChange('start', newValue)}\n onFocus={() => handleInputDatePickerFocus('start')}\n onError={(reason) => (startInputDatePickerErrorRef.current = reason)}\n />\n </Grid>\n <Grid item sx={{ px: 1 }}>\n ~\n </Grid>\n <Grid item flex={1}>\n <PrivateInputDatePicker\n {...inputDatePickerProps}\n style={inputStyle}\n value={value[1]}\n label={toLabel}\n labelIcon={toLabelIcon}\n error={error || toError}\n focused={focused || (open && selectType === 'end')}\n required={required || requiredEnd}\n readOnly={readOnly || readOnlyEnd}\n readOnlyInput={readOnlyInput}\n icon={endIcon || icon}\n startAdornment={endStartAdornment || startAdornment}\n endAdornment={endEndAdornment || endAdornment}\n inputRef={endDateTextFieldRef}\n onChange={(newValue: PrivateInputDatePickerValue) => handleInputDatePickerChange('end', newValue)}\n onFocus={() => handleInputDatePickerFocus('end')}\n onError={(reason) => (endInputDatePickerErrorRef.current = reason)}\n />\n </Grid>\n </Grid>\n </PrivateStyledTooltip>\n {!formColWithHelperText &&\n (helperText ||\n (error && errorHelperText) ||\n (fromError && fromErrorHelperText) ||\n (toError && toErrorHelperText)) && (\n <FormHelperText\n error={error || fromError || toError}\n style={{ marginLeft: variant === 'standard' ? 0 : 14 }}\n >\n {error ? errorHelperText : fromError ? fromErrorHelperText : toError ? toErrorHelperText : helperText}\n </FormHelperText>\n )}\n </div>\n </ClickAwayListener>\n </LocalizationProvider>\n );\n }\n);\n\nFormDateRangePicker.displayName = 'FormDateRangePicker';\nFormDateRangePicker.defaultProps = FormDateRangePickerDefaultProps;\n\nexport default FormDateRangePicker;\n","import { CommonSxProps, FormValueItemCommands, FormValueItemProps } from '../../@types';\nimport { ReactNode } from 'react';\n\nexport type FormFileValue = string;\n\nexport interface FormFileProps extends CommonSxProps, FormValueItemProps<FormFileValue, false> {\n required?: boolean;\n accept?: string;\n hideUrl?: boolean;\n uploadLabel?: string;\n uploadTabIndex?: number;\n hideUpload?: boolean;\n hideUploadLabel?: boolean;\n linkLabel?: string;\n linkTabIndex?: number;\n hideLink?: boolean;\n hideLinkLabel?: boolean;\n removeLabel?: string;\n removeTabIndex?: number;\n hideRemove?: boolean;\n hideRemoveLabel?: boolean;\n labelShrink?: boolean;\n maxFileSize?: number;\n preview?: ReactNode;\n onFile?(file: File): Promise<string>;\n onLink?(url: string): Promise<string>;\n}\n\nexport const FormFileDefaultProps: Pick<FormFileProps, 'value'> = {\n value: '',\n};\n\nexport type FormFileCommands = FormValueItemCommands<FormFileValue, false>;\n","export interface LinkDialogProps {\n open?: boolean;\n onConfirm?: (url: string) => void;\n onCancel?: () => void;\n onClose?: () => void;\n}\n\nexport const LinkDialogDefaultProps = {};\n","import React, { useCallback, useEffect, useRef, useState } from 'react';\nimport { LinkDialogProps as Props, LinkDialogDefaultProps } from './LinkDialog.types';\nimport { FormUrl, FormUrlCommands } from '../../../FormItemTextFieldBase';\nimport { Box, Button, Dialog, DialogActions, DialogContent, DialogTitle } from '@mui/material';\nimport { empty } from '../../../@util';\n\nconst LinkDialog: React.FC<Props> = ({ open, onConfirm, onCancel, onClose }) => {\n /********************************************************************************************************************\n * Ref\n * ******************************************************************************************************************/\n\n const inputRef = useRef<FormUrlCommands | null>();\n\n /********************************************************************************************************************\n * State\n * ******************************************************************************************************************/\n\n const [value, setValue] = useState('');\n\n /********************************************************************************************************************\n * Effect\n * ******************************************************************************************************************/\n\n useEffect(() => {\n if (!open) {\n setValue('');\n }\n }, [open]);\n\n /********************************************************************************************************************\n * Event Handler\n * ******************************************************************************************************************/\n\n const handleSubmit = useCallback(() => {\n if (inputRef.current?.validate()) {\n onConfirm && onConfirm(value);\n onClose && onClose();\n } else {\n inputRef.current?.focus();\n }\n }, [value, onConfirm, onClose]);\n\n const handleCancel = useCallback(() => {\n onCancel && onCancel();\n onClose && onClose();\n }, [onCancel, onClose]);\n\n /********************************************************************************************************************\n * Render\n * ******************************************************************************************************************/\n\n return (\n <Dialog\n className='color-primary'\n open={!!open}\n maxWidth={'sm'}\n fullWidth\n onClose={(e, reason) => {\n if (reason === 'backdropClick') {\n if (empty(value)) {\n onClose && onClose();\n }\n }\n }}\n >\n <DialogTitle>파일 링크</DialogTitle>\n <DialogContent>\n <Box>\n <div>파일의 링크 URL을 입력해주세요.</div>\n <FormUrl\n ref={(ref) => {\n if (inputRef.current == null && ref !== null) {\n ref.focus();\n }\n inputRef.current = ref;\n }}\n name='form-file-link-url'\n label='링크 URL'\n value={value}\n required\n style={{ marginTop: 15 }}\n onChange={setValue}\n />\n </Box>\n </DialogContent>\n <DialogActions>\n <Button variant='text' onClick={handleCancel}>\n 취소\n </Button>\n <Button variant='text' onClick={handleSubmit}>\n 확인\n </Button>\n </DialogActions>\n </Dialog>\n );\n};\n\nLinkDialog.displayName = 'LinkDialog';\nLinkDialog.defaultProps = LinkDialogDefaultProps;\n\nexport default LinkDialog;\n","import React, { ChangeEvent, ReactNode, useCallback, useId, useLayoutEffect, useMemo, useRef, useState } from 'react';\nimport classNames from 'classnames';\nimport { Button, InputAdornment, TextField, Typography } from '@mui/material';\nimport { useAutoUpdateState, useFirstSkipEffect } from '@pdg/react-hook';\nimport { empty, notEmpty, nextTick, getFileSizeText } from '../../@util';\nimport { FormFileProps as Props, FormFileDefaultProps, FormFileCommands, FormFileValue } from './FormFile.types';\nimport FormItemBase from '../FormItemBase';\nimport { useFormState } from '../../FormContext';\nimport { FormIcon } from '../../FormCommon';\nimport LinkDialog from './LinkDialog/LinkDialog';\nimport { PrivateAlertDialog, PrivateAlertDialogProps } from '../../@private';\nimport './FormFile.scss';\n\nconst FormFile = React.forwardRef<FormFileCommands, Props>(\n (\n {\n variant: initVariant,\n size: initSize,\n color: initColor,\n focused: initFocused,\n labelShrink: initLabelShrink,\n fullWidth: initFullWidth,\n //----------------------------------------------------------------------------------------------------------------\n accept,\n hideUrl,\n uploadLabel,\n uploadTabIndex,\n hideUpload,\n hideUploadLabel,\n linkLabel,\n linkTabIndex,\n hideLink,\n hideLinkLabel,\n removeLabel,\n removeTabIndex,\n hideRemove,\n hideRemoveLabel,\n maxFileSize,\n preview,\n hidden: initHidden,\n onFile,\n onLink,\n //----------------------------------------------------------------------------------------------------------------\n name,\n labelIcon,\n label: initLabel,\n required,\n readOnly,\n disabled: initDisabled,\n error: initError,\n helperText,\n value: initValue,\n data: initData,\n exceptValue,\n onChange,\n onValidate,\n //----------------------------------------------------------------------------------------------------------------\n className,\n },\n ref\n ) => {\n /********************************************************************************************************************\n * ID\n * ******************************************************************************************************************/\n\n const id = useId();\n\n /********************************************************************************************************************\n * FormState\n * ******************************************************************************************************************/\n\n const {\n variant: formVariant,\n size: formSize,\n color: formColor,\n focused: formFocused,\n labelShrink: formLabelShrink,\n fullWidth: formFullWidth,\n disabled: formDisabled,\n onAddValueItem,\n onValueChange,\n onRemoveValueItem,\n onValueChangeByUser,\n } = useFormState<FormFileValue, false>();\n\n /********************************************************************************************************************\n * Memo - FormState\n * ******************************************************************************************************************/\n\n const variant = useMemo(() => (initVariant == null ? formVariant : initVariant), [initVariant, formVariant]);\n const size = useMemo(() => (initSize == null ? formSize : initSize), [initSize, formSize]);\n const color = useMemo(() => (initColor == null ? formColor : initColor), [initColor, formColor]);\n const focused = useMemo(() => (initFocused == null ? formFocused : initFocused), [initFocused, formFocused]);\n const labelShrink = useMemo(\n () => (initLabelShrink == null ? formLabelShrink : initLabelShrink),\n [initLabelShrink, formLabelShrink]\n );\n const fullWidth = useMemo(\n () => (initFullWidth == null ? formFullWidth : initFullWidth),\n [initFullWidth, formFullWidth]\n );\n\n /********************************************************************************************************************\n * Ref\n * ******************************************************************************************************************/\n\n const textFieldRef = useRef<HTMLInputElement>(null);\n const fileUploadBtnRef = useRef<HTMLButtonElement>(null);\n const linkBtnRef = useRef<HTMLButtonElement>(null);\n\n /********************************************************************************************************************\n * State - value\n * ******************************************************************************************************************/\n\n const [value, setValue] = useAutoUpdateState<FormFileValue>(initValue || '');\n const [fileValue] = useState('');\n\n useFirstSkipEffect(() => {\n if (error) validate(value);\n if (onChange) onChange(value);\n onValueChange(name, value);\n }, [value]);\n\n /********************************************************************************************************************\n * State\n * ******************************************************************************************************************/\n\n const [error, setError] = useAutoUpdateState<Props['error']>(initError);\n const [errorHelperText, setErrorHelperText] = useState<Props['helperText']>();\n const [disabled, setDisabled] = useAutoUpdateState<Props['disabled']>(\n initDisabled == null ? formDisabled : initDisabled\n );\n const [hidden, setHidden] = useAutoUpdateState<Props['hidden']>(initHidden);\n const [isOpenLinkDialog, setIsOpenLinkDialog] = useState(false);\n const [data, setData] = useAutoUpdateState<Props['data']>(initData);\n const [alertDialogProps, setAlertDialogProps] = useState<{\n open: boolean;\n color?: PrivateAlertDialogProps['color'];\n title?: ReactNode;\n content?: ReactNode;\n }>({ open: false });\n\n /********************************************************************************************************************\n * Memo\n * ******************************************************************************************************************/\n\n const label = useMemo(() => {\n return labelIcon ? (\n <>\n <FormIcon style={{ verticalAlign: 'middle', marginRight: 4 }}>{labelIcon}</FormIcon>\n <span style={{ verticalAlign: 'middle' }}>{initLabel}</span>\n </>\n ) : (\n initLabel\n );\n }, [initLabel, labelIcon]);\n\n /********************************************************************************************************************\n * Function - focus\n * ******************************************************************************************************************/\n\n const focus = useCallback(() => {\n if (hideUrl) {\n if (hideUpload) {\n linkBtnRef.current?.focus();\n } else {\n fileUploadBtnRef.current?.focus();\n }\n } else {\n textFieldRef.current?.focus();\n }\n }, [hideUpload, hideUrl]);\n\n /********************************************************************************************************************\n * Function - setErrorErrorHelperText\n * ******************************************************************************************************************/\n\n const setErrorErrorHelperText = useCallback(\n function (error: Props['error'], errorHelperText: Props['helperText']) {\n setError(error);\n setErrorHelperText(errorHelperText);\n },\n [setError]\n );\n\n /********************************************************************************************************************\n * Function - validate\n * ******************************************************************************************************************/\n\n const validate = useCallback(\n function (value: FormFileValue) {\n let isEmptyValue = false;\n if (value) {\n const d = document.createElement('div');\n d.innerHTML = value;\n const text = d.textContent || d.innerText;\n isEmptyValue = empty(text.trim());\n }\n if (required && (isEmptyValue || empty(value))) {\n setErrorErrorHelperText(true, '필수 선택 항목입니다.');\n return false;\n }\n\n if (onValidate) {\n const onValidateResult = onValidate(value);\n if (onValidateResult != null && onValidateResult !== true) {\n setErrorErrorHelperText(true, onValidateResult);\n return false;\n }\n }\n\n setErrorErrorHelperText(false, undefined);\n\n return true;\n },\n [required, onValidate, setErrorErrorHelperText]\n );\n\n /********************************************************************************************************************\n * Commands\n * ******************************************************************************************************************/\n\n useLayoutEffect(() => {\n let lastValue = value;\n let lastData = data;\n let lastDisabled = !!disabled;\n let lastHidden = !!hidden;\n\n const commands: FormFileCommands = {\n getType: () => 'FormFile',\n getName: () => name,\n getReset: () => initValue || '',\n reset: () => {\n lastValue = initValue || '';\n setValue(lastValue);\n },\n getValue: () => lastValue,\n setValue: (value) => {\n lastValue = value;\n setValue(lastValue);\n },\n getData: () => lastData,\n setData: (data) => {\n lastData = data;\n setData(data);\n },\n isExceptValue: () => !!exceptValue,\n isDisabled: () => lastDisabled,\n setDisabled: (disabled: boolean) => {\n lastDisabled = disabled;\n setDisabled(disabled);\n },\n isHidden: () => lastHidden,\n setHidden: (hidden) => {\n lastHidden = hidden;\n setHidden(hidden);\n },\n focus,\n focusValidate: focus,\n validate: () => validate(value),\n setError: (error: Props['error'], errorHelperText: Props['helperText']) =>\n setErrorErrorHelperText(error, error ? errorHelperText : undefined),\n };\n\n onAddValueItem(id, commands);\n\n if (ref) {\n if (typeof ref === 'function') {\n ref(commands);\n } else {\n ref.current = commands;\n }\n }\n\n return () => {\n onRemoveValueItem(id);\n\n if (ref) {\n if (typeof ref === 'function') {\n ref(null);\n } else {\n ref.current = null;\n }\n }\n };\n }, [\n name,\n initValue,\n value,\n exceptValue,\n disabled,\n focus,\n validate,\n ref,\n onAddValueItem,\n onRemoveValueItem,\n id,\n setValue,\n setDisabled,\n setErrorErrorHelperText,\n data,\n setData,\n hidden,\n setHidden,\n ]);\n\n /********************************************************************************************************************\n * Function\n * ******************************************************************************************************************/\n\n const fileSizeCheck = useCallback(\n (file: File | string) => {\n if (maxFileSize) {\n return new Promise<void>((resolve, reject) => {\n if (file instanceof File) {\n if (file.size > maxFileSize) {\n setAlertDialogProps({\n open: true,\n color: 'error',\n title: '파일 사이즈',\n content: (\n <div>\n <div>\n <Typography color='error'>\n {getFileSizeText(maxFileSize)} 이하의 파일만 사용 가능합니다.\n </Typography>\n </div>\n <div style={{ opacity: 0.7 }}>(선택한 파일 사이즈 : {getFileSizeText(file.size)})</div>\n </div>\n ),\n });\n reject();\n } else {\n resolve();\n }\n } else {\n resolve();\n }\n });\n } else {\n return Promise.resolve();\n }\n },\n [maxFileSize]\n );\n\n /********************************************************************************************************************\n * Event Handler\n * ******************************************************************************************************************/\n\n const handleFileChange = useCallback(\n (e: ChangeEvent<HTMLInputElement>) => {\n if (onFile) {\n const target = e.currentTarget;\n const file = (target.files as FileList)[0];\n fileSizeCheck(file).then(() => {\n onFile(file).then((url) => {\n setValue(url);\n nextTick(() => {\n if (onValueChangeByUser) onValueChangeByUser(name, url);\n });\n });\n });\n }\n },\n [fileSizeCheck, name, onFile, onValueChangeByUser, setValue]\n );\n\n const handleLinkClick = useCallback(() => {\n setIsOpenLinkDialog(true);\n }, []);\n\n const handleRemoveClick = useCallback(() => {\n setValue('');\n nextTick(() => {\n if (onValueChangeByUser) onValueChangeByUser(name, '');\n });\n }, [name, onValueChangeByUser, setValue]);\n\n const handleLinkDialogConfirm = useCallback(\n (url: string) => {\n if (onLink) {\n onLink(url).then((finalUrl) => {\n setValue(finalUrl);\n nextTick(() => {\n if (onValueChangeByUser) onValueChangeByUser(name, finalUrl);\n });\n });\n } else {\n setValue(url);\n nextTick(() => {\n if (onValueChangeByUser) onValueChangeByUser(name, url);\n });\n }\n },\n [name, onLink, onValueChangeByUser, setValue]\n );\n\n /********************************************************************************************************************\n * Render\n * ******************************************************************************************************************/\n\n return (\n <FormItemBase\n variant={variant}\n size={size}\n color={color}\n focused={focused}\n className={classNames(\n className,\n 'FormValueItem',\n 'FormFile',\n `variant-${variant}`,\n `size-${size}`,\n !!initLabel && 'with-label',\n !!fullWidth && 'full-width',\n !!hideUrl && 'hide-file-name',\n !!hideLink && 'hide-link',\n !!hideUpload && 'hide-upload',\n !!hideRemove && 'hide-remove',\n notEmpty(value) && 'with-value'\n )}\n labelIcon={hideUrl ? labelIcon : undefined}\n label={hideUrl ? initLabel : undefined}\n error={error}\n required={required}\n fullWidth={fullWidth}\n hidden={hidden}\n helperText={\n <div>\n {preview}\n <div>{error ? errorHelperText : helperText}</div>\n </div>\n }\n hideLabel={!hideUrl}\n helperTextProps={{\n style: {\n marginLeft: !hideUrl && variant !== 'standard' ? 14 : undefined,\n marginTop: !hideUrl && variant === 'standard' ? 19 : undefined,\n },\n }}\n style={{ width: fullWidth ? '100%' : undefined }}\n control={\n <div className='control-wrap'>\n {!hideUrl && (\n <div className='file-name-wrap'>\n <TextField\n inputRef={textFieldRef}\n className='file-name'\n variant={variant}\n label={label}\n size={size}\n required={required}\n value={value || ''}\n focused={focused}\n disabled={disabled}\n fullWidth\n error={error}\n InputLabelProps={labelShrink ? { shrink: labelShrink } : undefined}\n inputProps={{ readOnly: true }}\n InputProps={{\n endAdornment: (\n <InputAdornment position='end'>\n <div className='input-file-wrap'>\n {!hideUpload && (\n <>\n <Button\n variant='text'\n tabIndex={uploadTabIndex == null ? -1 : uploadTabIndex}\n className={classNames(\n 'input-file-btn form-file-btn',\n !!hideUploadLabel && 'hidden-label'\n )}\n color={error ? 'error' : color}\n disabled={readOnly || disabled}\n ref={fileUploadBtnRef}\n >\n <label htmlFor={id}>\n <FormIcon>upload</FormIcon>\n {!hideUploadLabel && (uploadLabel || '파일 업로드')}\n </label>\n </Button>\n <input\n type='file'\n accept={accept}\n id={id}\n value={fileValue}\n className='input-file'\n onChange={handleFileChange}\n />\n </>\n )}\n {!hideLink && (\n <Button\n variant='text'\n tabIndex={linkTabIndex == null ? -1 : linkTabIndex}\n className={classNames('link-btn form-file-btn', !!hideLinkLabel && 'hidden-label')}\n color={error ? 'error' : color}\n disabled={readOnly || disabled}\n ref={linkBtnRef}\n onClick={handleLinkClick}\n >\n <label>\n <FormIcon>link</FormIcon>\n {!hideLinkLabel && (linkLabel || '링크')}\n </label>\n </Button>\n )}\n {!hideRemove && notEmpty(value) && (\n <Button\n variant='text'\n tabIndex={removeTabIndex == null ? -1 : removeTabIndex}\n className={classNames('remove-btn form-file-btn', !!hideRemoveLabel && 'hidden-label')}\n color={error ? 'error' : color}\n disabled={readOnly || disabled}\n onClick={handleRemoveClick}\n >\n <label>\n <FormIcon>Close</FormIcon>\n {!hideRemoveLabel && (removeLabel || '삭제')}\n </label>\n </Button>\n )}\n </div>\n </InputAdornment>\n ),\n }}\n placeholder='파일을 선택하세요'\n />\n </div>\n )}\n {!!hideUrl && (\n <div className='input-file-wrap'>\n {!hideUpload && (\n <>\n <Button\n variant='outlined'\n tabIndex={uploadTabIndex}\n className={classNames('input-file-btn form-file-btn', !!hideUploadLabel && 'hidden-label')}\n color={error ? 'error' : color}\n ref={fileUploadBtnRef}\n disabled={disabled}\n >\n <label htmlFor={id}>\n <FormIcon>upload</FormIcon>\n {!hideUploadLabel && (uploadLabel || '파일 업로드')}\n </label>\n </Button>\n <input\n type='file'\n accept={accept}\n id={id}\n value={fileValue}\n className='input-file'\n onChange={handleFileChange}\n />\n </>\n )}\n {!hideLink && (\n <Button\n variant='outlined'\n tabIndex={linkTabIndex}\n className={classNames('link-btn form-file-btn', !!hideLinkLabel && 'hidden-label')}\n color={error ? 'error' : color}\n onClick={handleLinkClick}\n disabled={disabled}\n ref={linkBtnRef}\n >\n <label>\n <FormIcon>link</FormIcon>\n {!hideLinkLabel && (linkLabel || '링크')}\n </label>\n </Button>\n )}\n {!hideRemove && notEmpty(value) && (\n <Button\n variant='outlined'\n tabIndex={removeTabIndex}\n className={classNames('remove-btn form-file-btn', !!hideRemoveLabel && 'hidden-label')}\n color={error ? 'error' : color}\n disabled={disabled}\n onClick={handleRemoveClick}\n >\n <label>\n <FormIcon>Close</FormIcon>\n {!hideRemoveLabel && (removeLabel || '삭제')}\n </label>\n </Button>\n )}\n </div>\n )}\n\n <PrivateAlertDialog {...alertDialogProps} onClose={() => setAlertDialogProps({ open: false })} />\n <LinkDialog\n open={isOpenLinkDialog}\n onConfirm={handleLinkDialogConfirm}\n onClose={() => setIsOpenLinkDialog(false)}\n />\n </div>\n }\n />\n );\n }\n);\n\nFormFile.displayName = 'FormFile';\nFormFile.defaultProps = FormFileDefaultProps;\n\nexport default FormFile;\n","import { FormFileCommands, FormFileDefaultProps, FormFileProps } from '../FormFile';\n\nexport interface FormImageFileImageSize {\n width: number;\n height: number;\n}\n\nexport interface FormImageFileProps extends Omit<FormFileProps, 'preview'> {\n imageSize?: FormImageFileImageSize | FormImageFileImageSize[];\n preview?: boolean;\n previewMaxHeight?: number;\n}\n\nexport const FormImageFileDefaultProps: Pick<FormImageFileProps, 'accept'> = {\n ...FormFileDefaultProps,\n accept: '.jpg,.jpeg,.png',\n};\n\nexport type FormImageFileCommands = FormFileCommands;\n","import React, { ReactNode, useCallback, useMemo, useState } from 'react';\nimport classNames from 'classnames';\nimport { FormImageFileProps as Props, FormImageFileDefaultProps, FormImageFileCommands } from './FormImageFile.types';\nimport FormFile from '../FormFile';\nimport { PrivateAlertDialog, PrivateAlertDialogProps } from '../../@private';\nimport { Tooltip, Typography } from '@mui/material';\nimport { useAutoUpdateState } from '@pdg/react-hook';\nimport './FormImageFile.scss';\n\nconst FormImageFile = React.forwardRef<FormImageFileCommands, Props>(\n ({ className, imageSize, preview, previewMaxHeight, value: initValue, onChange, onFile, onLink, ...props }, ref) => {\n const [value, setValue] = useAutoUpdateState(initValue);\n\n const [alertDialogProps, setAlertDialogProps] = useState<{\n open: boolean;\n color?: PrivateAlertDialogProps['color'];\n title?: ReactNode;\n content?: ReactNode;\n }>({\n open: false,\n });\n const [urlKit] = useState<typeof window.URL | typeof window.webkitURL | undefined>(() => {\n if (window.URL) return window.URL;\n else if (window.webkitURL) return window.webkitURL;\n });\n\n /********************************************************************************************************************\n * Function\n * ******************************************************************************************************************/\n\n const imageSizeCheck = useCallback(\n (file: File | string) => {\n if (imageSize && urlKit) {\n return new Promise<void>((resolve, reject) => {\n const img = new Image();\n img.onload = () => {\n const width = img.naturalWidth;\n const height = img.naturalHeight;\n\n urlKit.revokeObjectURL(img.src);\n\n let sizeOk = false;\n let sizeText = '';\n if (Array.isArray(imageSize)) {\n imageSize.forEach((a) => {\n if (width === a.width && height === a.height) {\n sizeOk = true;\n }\n if (sizeText !== '') sizeText += ', ';\n sizeText += `${a.width}*${a.height}`;\n });\n } else {\n sizeOk = width === imageSize.width && height === imageSize.height;\n sizeText = `${imageSize.width}*${imageSize.height}`;\n }\n\n if (sizeOk) {\n resolve();\n } else {\n setAlertDialogProps({\n open: true,\n color: 'error',\n title: '이미지 사이즈',\n content: (\n <>\n <div>\n <Typography color='error'>{sizeText} 사이즈의 이미지만 사용 가능합니다.</Typography>\n </div>\n <div style={{ opacity: 0.7 }}>\n (선택한 이미지 사이즈 : {width}*{height})\n </div>\n </>\n ),\n });\n reject();\n }\n };\n img.onerror = () => {\n setAlertDialogProps({ open: true, title: '이미지 사이즈', content: '이미지를 불러올 수 없습니다.' });\n\n reject();\n };\n\n if (file instanceof File) {\n img.src = urlKit.createObjectURL(file);\n } else {\n img.src = file;\n }\n });\n }\n return Promise.resolve();\n },\n [urlKit, imageSize]\n );\n\n /********************************************************************************************************************\n * Event Handler\n * ******************************************************************************************************************/\n\n const handleChange = useCallback(\n (value: string) => {\n setValue(value);\n onChange && onChange(value);\n },\n [onChange, setValue]\n );\n\n const handleFile = useCallback(\n (file: File) => {\n return new Promise<string>((resolve, reject) => {\n imageSizeCheck(file)\n .then(() => {\n if (onFile) {\n onFile(file)\n .then((url: string) => {\n resolve(url);\n })\n .catch(() => reject());\n } else {\n reject();\n }\n })\n .catch(() => {\n reject();\n });\n });\n },\n [onFile, imageSizeCheck]\n );\n\n const handleLink = useCallback(\n (url: string) => {\n return new Promise<string>((resolve, reject) => {\n imageSizeCheck(url)\n .then(() => {\n if (onLink) {\n onLink(url)\n .then((finalUrl) => resolve(finalUrl))\n .catch(() => reject());\n } else {\n resolve(url);\n }\n })\n .catch(() => {\n reject();\n });\n });\n },\n [onLink, imageSizeCheck]\n );\n\n /********************************************************************************************************************\n * Memo\n * ******************************************************************************************************************/\n\n const previewNode = useMemo(() => {\n if (preview && value) {\n return (\n <a href={value} target='_blank'>\n <Tooltip\n title={\n <div style={{ paddingTop: 3, paddingBottom: 3 }}>\n <img src={value} style={{ maxWidth: '100%', verticalAlign: 'middle' }} alt='' />\n </div>\n }\n >\n <img className='preview-img' src={value} style={{ maxHeight: previewMaxHeight || undefined }} alt='' />\n </Tooltip>\n </a>\n );\n }\n }, [preview, previewMaxHeight, value]);\n\n /********************************************************************************************************************\n * Render\n * ******************************************************************************************************************/\n\n return (\n <>\n <FormFile\n ref={ref}\n className={classNames(className, 'FormImageFile')}\n value={value}\n preview={previewNode}\n onChange={handleChange}\n onFile={handleFile}\n onLink={handleLink}\n {...props}\n />\n <PrivateAlertDialog {...alertDialogProps} onClose={() => setAlertDialogProps({ open: false })} />\n </>\n );\n }\n);\n\nFormImageFile.displayName = 'FormImageFile';\nFormImageFile.defaultProps = FormImageFileDefaultProps;\n\nexport default FormImageFile;\n","import {\n FormValueItemProps,\n FormValueItemBaseCommands,\n FormYearMonthValueItemNameCommands,\n FormYearMonthValueItemCommands,\n} from '../../@types';\nimport { CommonSxProps } from '../../@types';\nimport { ReactNode } from 'react';\nimport { PrivateMonthPickerBaseValue, PrivateMonthPickerValue } from '../../@private';\n\nexport type FormMonthPickerBaseValue = PrivateMonthPickerBaseValue;\n\nexport type FormMonthPickerValue = PrivateMonthPickerValue;\n\nexport interface FormMonthPickerProps extends CommonSxProps, FormValueItemProps<FormMonthPickerValue, false> {\n required?: boolean;\n icon?: string;\n format?: string;\n labelShrink?: boolean;\n disablePast?: boolean;\n disableFuture?: boolean;\n minValue?: FormMonthPickerBaseValue;\n maxValue?: FormMonthPickerBaseValue;\n inputWidth?: number | string;\n readOnlyInput?: boolean;\n startAdornment?: ReactNode;\n endAdornment?: ReactNode;\n formValueYearNameSuffix?: string;\n formValueMonthNameSuffix?: string;\n}\n\nexport const FormMonthPickerDefaultProps: Required<\n Pick<\n FormMonthPickerProps,\n 'format' | 'formValueYearNameSuffix' | 'formValueMonthNameSuffix' | 'minValue' | 'maxValue'\n >\n> = {\n format: 'YYYY년 MM월',\n formValueYearNameSuffix: '_year',\n formValueMonthNameSuffix: '_month',\n minValue: {\n year: 2020,\n month: 1,\n },\n maxValue: {\n year: 2050,\n month: 12,\n },\n};\n\nexport interface FormMonthPickerCommands\n extends FormValueItemBaseCommands<FormMonthPickerValue, false>,\n FormYearMonthValueItemCommands,\n FormYearMonthValueItemNameCommands {}\n","import React, { useCallback, useEffect, useId, useLayoutEffect, useMemo, useRef, useState } from 'react';\nimport classNames from 'classnames';\nimport { ClickAwayListener, FormHelperText } from '@mui/material';\nimport { useAutoUpdateState, useFirstSkipEffect } from '@pdg/react-hook';\nimport { empty, getDateValidationErrorText, nextTick } from '../../@util';\nimport {\n FormMonthPickerProps as Props,\n FormMonthPickerDefaultProps,\n FormMonthPickerCommands,\n FormMonthPickerValue,\n FormMonthPickerBaseValue,\n} from './FormMonthPicker.types';\nimport { useFormState } from '../../FormContext';\nimport { LocalizationProvider, DateValidationError } from '@mui/x-date-pickers';\nimport { AdapterDayjs } from '@mui/x-date-pickers/AdapterDayjs';\nimport { PrivateInputDatePicker, PrivateMonthPicker, PrivateStyledTooltip } from '../../@private';\nimport dayjs, { Dayjs } from 'dayjs';\nimport 'dayjs/locale/ko';\n\nconst DEFAULT_VALUE = null;\nconst DEFAULT_FORMAT = 'YYYY년 MM월';\n\nconst FormMonthPicker = React.forwardRef<FormMonthPickerCommands, Props>(\n (\n {\n variant: initVariant,\n size: initSize,\n color: initColor,\n focused: initFocused,\n //----------------------------------------------------------------------------------------------------------------\n hidden: initHidden,\n //----------------------------------------------------------------------------------------------------------------\n name,\n labelIcon,\n label,\n readOnly,\n required,\n fullWidth: initFullWidth,\n disabled: initDisabled,\n error: initError,\n helperText,\n value: initValue,\n data: initData,\n exceptValue,\n onChange,\n onValidate,\n // -------------------------------------------------------------------------------------------------------------------\n icon,\n format: initFormat,\n labelShrink: initLabelShrink,\n disablePast,\n disableFuture,\n minValue: initMinValue,\n maxValue: initMaxValue,\n inputWidth,\n readOnlyInput,\n startAdornment,\n endAdornment,\n formValueYearNameSuffix,\n formValueMonthNameSuffix,\n //----------------------------------------------------------------------------------------------------------------\n className,\n style: initStyle,\n sx,\n },\n ref\n ) => {\n /********************************************************************************************************************\n * ID\n * ******************************************************************************************************************/\n\n const id = useId();\n\n /********************************************************************************************************************\n * FormState\n * ******************************************************************************************************************/\n\n const {\n variant: formVariant,\n size: formSize,\n color: formColor,\n focused: formFocused,\n labelShrink: formLabelShrink,\n fullWidth: formFullWidth,\n disabled: formDisabled,\n formColWithHelperText,\n onAddValueItem,\n onRemoveValueItem,\n onValueChange,\n onValueChangeByUser,\n onRequestSearchSubmit,\n } = useFormState();\n\n /********************************************************************************************************************\n * Memo - FormState\n * ******************************************************************************************************************/\n\n const variant = useMemo(() => (initVariant == null ? formVariant : initVariant), [initVariant, formVariant]);\n const size = useMemo(() => (initSize == null ? formSize : initSize), [initSize, formSize]);\n const color = useMemo(() => (initColor == null ? formColor : initColor), [initColor, formColor]);\n const focused = useMemo(() => (initFocused == null ? formFocused : initFocused), [initFocused, formFocused]);\n const labelShrink = useMemo(\n () => (initLabelShrink == null ? formLabelShrink : initLabelShrink),\n [initLabelShrink, formLabelShrink]\n );\n const fullWidth = useMemo(\n () => (initFullWidth == null ? formFullWidth : initFullWidth),\n [initFullWidth, formFullWidth]\n );\n\n /********************************************************************************************************************\n * Ref\n * ******************************************************************************************************************/\n\n const ratingRef = useRef<HTMLSpanElement>(null);\n const inputRef = useRef<HTMLInputElement>();\n const closeTimeoutRef = useRef<NodeJS.Timeout>();\n const mouseDownTimeRef = useRef<number>();\n const inputDatePickerErrorRef = useRef<DateValidationError>(null);\n const openValueRef = useRef<FormMonthPickerValue>();\n\n /********************************************************************************************************************\n * State\n * ******************************************************************************************************************/\n\n const [error, setError] = useAutoUpdateState<Props['error']>(initError);\n const [errorHelperText, setErrorHelperText] = useState<Props['helperText']>();\n const [disabled, setDisabled] = useAutoUpdateState<Props['disabled']>(\n initDisabled == null ? formDisabled : initDisabled\n );\n const [hidden, setHidden] = useAutoUpdateState<Props['hidden']>(initHidden);\n const [data, setData] = useAutoUpdateState<Props['data']>(initData);\n const [open, setOpen] = useState(false);\n\n /********************************************************************************************************************\n * Function - getFinalValue\n * ******************************************************************************************************************/\n\n const getFinalValue = useCallback((value: FormMonthPickerValue | undefined): FormMonthPickerValue => {\n return value || DEFAULT_VALUE;\n }, []);\n\n /********************************************************************************************************************\n * State - value\n * ******************************************************************************************************************/\n\n const [value, setValue] = useAutoUpdateState<FormMonthPickerValue>(\n useCallback(() => {\n return initValue || DEFAULT_VALUE;\n }, [initValue])\n );\n\n useFirstSkipEffect(() => {\n if (error) validate(value);\n if (onChange) onChange(value);\n onValueChange(name, value);\n }, [value]);\n\n /********************************************************************************************************************\n * Function\n * ******************************************************************************************************************/\n\n const valueToDate = useCallback((v: FormMonthPickerBaseValue) => dayjs(`${v.year}-${v.month}-01`), []);\n const valueToYm = useCallback((v: FormMonthPickerBaseValue) => v.year * 100 + v.month, []);\n const dateToValue = useCallback((v: Dayjs) => ({ year: v.year(), month: v.month() + 1 }), []);\n\n /********************************************************************************************************************\n * Memo\n * ******************************************************************************************************************/\n\n const nowDate = useMemo(() => dayjs(), []);\n const nowValue = useMemo(() => dateToValue(nowDate), [dateToValue, nowDate]);\n const nowYm = useMemo(() => valueToYm(nowValue), [nowValue, valueToYm]);\n\n const valueDate = useMemo(() => (value ? valueToDate(value) : null), [value, valueToDate]);\n\n const minValue = useMemo(() => initMinValue || FormMonthPickerDefaultProps.minValue, [initMinValue]);\n const maxValue = useMemo(() => initMaxValue || FormMonthPickerDefaultProps.maxValue, [initMaxValue]);\n\n const minDate = useMemo(() => valueToDate(minValue), [minValue, valueToDate]);\n const maxDate = useMemo(() => valueToDate(maxValue), [maxValue, valueToDate]);\n\n const minAvailableValue = useMemo(() => {\n if (disablePast) {\n const minYm = valueToYm(minValue);\n return nowYm > minYm ? nowValue : minValue;\n } else {\n return minValue;\n }\n }, [disablePast, valueToYm, minValue, nowYm, nowValue]);\n const minAvailableYm = useMemo(() => valueToYm(minAvailableValue), [minAvailableValue, valueToYm]);\n\n const maxAvailableValue = useMemo(() => {\n if (disableFuture) {\n const maxYm = valueToYm(maxValue);\n return nowYm < maxYm ? nowValue : maxValue;\n } else {\n return maxValue;\n }\n }, [disableFuture, valueToYm, maxValue, nowYm, nowValue]);\n const maxAvailableYm = useMemo(() => valueToYm(maxAvailableValue), [maxAvailableValue, valueToYm]);\n\n /********************************************************************************************************************\n * Memo\n * ******************************************************************************************************************/\n\n const format = useMemo(() => initFormat || DEFAULT_FORMAT, [initFormat]);\n\n /********************************************************************************************************************\n * Effect\n * ******************************************************************************************************************/\n\n useEffect(() => {\n if (value !== initValue) {\n if (onChange) onChange(value);\n onValueChange(name, value);\n }\n\n if (ratingRef.current) {\n inputRef.current = ratingRef.current.querySelector('input') || undefined;\n }\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, []);\n\n useFirstSkipEffect(() => {\n if (open) {\n openValueRef.current = value;\n } else {\n if (openValueRef.current !== value) {\n let runOnRequestSearchSubmit;\n if (openValueRef.current && value) {\n runOnRequestSearchSubmit =\n openValueRef.current.year !== value.year || openValueRef.current.month !== value.month;\n } else {\n runOnRequestSearchSubmit = true;\n }\n\n if (runOnRequestSearchSubmit) {\n onRequestSearchSubmit(name, value);\n }\n }\n }\n }, [open]);\n\n /********************************************************************************************************************\n * Function\n * ******************************************************************************************************************/\n\n const focus = useCallback(function () {\n inputRef.current?.focus();\n setTimeout(() => {\n inputRef.current?.blur();\n });\n }, []);\n\n const setErrorErrorHelperText = useCallback(\n function (error: Props['error'], errorHelperText: Props['helperText']) {\n setError(error);\n setErrorHelperText(errorHelperText);\n },\n [setError]\n );\n\n const validate = useCallback(\n function (value: FormMonthPickerValue) {\n if (required && empty(value)) {\n setErrorErrorHelperText(true, '필수 선택 항목입니다.');\n return false;\n }\n\n if (inputDatePickerErrorRef.current) {\n setErrorErrorHelperText(true, getDateValidationErrorText(inputDatePickerErrorRef.current));\n return false;\n }\n\n if (onValidate) {\n const onValidateResult = onValidate(value);\n if (onValidateResult != null && onValidateResult !== true) {\n setErrorErrorHelperText(true, onValidateResult);\n return false;\n }\n }\n\n setErrorErrorHelperText(false, undefined);\n\n return true;\n },\n [onValidate, required, setErrorErrorHelperText]\n );\n\n /********************************************************************************************************************\n * Commands\n * ******************************************************************************************************************/\n\n useLayoutEffect(() => {\n let lastValue = value;\n let lastData = data;\n let lastDisabled = !!disabled;\n let lastHidden = !!hidden;\n\n const commands: FormMonthPickerCommands = {\n getType: () => 'FormMonthPicker',\n getName: () => name,\n getReset: () => getFinalValue(initValue),\n reset: () => {\n lastValue = getFinalValue(initValue);\n setValue(lastValue);\n },\n getValue: () => lastValue,\n setValue: (value) => {\n lastValue = getFinalValue(value);\n setValue(lastValue);\n },\n getData: () => lastData,\n setData: (data) => {\n lastData = data;\n setData(data);\n },\n getYear: () => (lastValue ? lastValue.year : null),\n setYear: (year: number | null) => {\n lastValue = getFinalValue(\n year === null\n ? null\n : lastValue\n ? { year, month: lastValue.month }\n : { year, month: year === new Date().getFullYear() ? new Date().getMonth() + 1 : 1 }\n );\n setValue(lastValue);\n },\n getMonth: () => (lastValue ? lastValue.month : null),\n setMonth: (month: number | null) => {\n lastValue = getFinalValue(\n month === null\n ? null\n : lastValue\n ? { year: lastValue.year, month }\n : { year: new Date().getFullYear(), month }\n );\n setValue(lastValue);\n },\n isExceptValue: () => !!exceptValue,\n isDisabled: () => lastDisabled,\n setDisabled: (disabled) => {\n lastDisabled = disabled;\n setDisabled(disabled);\n },\n isHidden: () => lastHidden,\n setHidden: (hidden) => {\n lastHidden = hidden;\n setHidden(hidden);\n },\n focus,\n focusValidate: focus,\n validate: () => validate(value),\n setError: (error: Props['error'], errorHelperText: Props['helperText']) =>\n setErrorErrorHelperText(error, error ? errorHelperText : undefined),\n getFormValueYearNameSuffix: () =>\n formValueYearNameSuffix || FormMonthPickerDefaultProps.formValueYearNameSuffix,\n getFormValueMonthNameSuffix: () =>\n formValueMonthNameSuffix || FormMonthPickerDefaultProps.formValueMonthNameSuffix,\n getFormValueYearName: () => {\n return `${name}${formValueYearNameSuffix || FormMonthPickerDefaultProps.formValueYearNameSuffix}`;\n },\n getFormValueMonthName: () => {\n return `${name}${formValueMonthNameSuffix || FormMonthPickerDefaultProps.formValueMonthNameSuffix}`;\n },\n };\n\n onAddValueItem(id, commands);\n\n if (ref) {\n if (typeof ref === 'function') {\n ref(commands);\n } else {\n ref.current = commands;\n }\n }\n\n return () => {\n onRemoveValueItem(id);\n\n if (ref) {\n if (typeof ref === 'function') {\n ref(null);\n } else {\n ref.current = null;\n }\n }\n };\n }, [\n name,\n initValue,\n value,\n getFinalValue,\n exceptValue,\n disabled,\n focus,\n validate,\n ref,\n onAddValueItem,\n onRemoveValueItem,\n id,\n setValue,\n setDisabled,\n setErrorErrorHelperText,\n data,\n setData,\n formValueYearNameSuffix,\n formValueMonthNameSuffix,\n hidden,\n setHidden,\n ]);\n\n /********************************************************************************************************************\n * Event Handler\n * ******************************************************************************************************************/\n\n const handleContainerMouseDown = useCallback(() => {\n if (closeTimeoutRef.current) {\n clearTimeout(closeTimeoutRef.current);\n closeTimeoutRef.current = undefined;\n }\n mouseDownTimeRef.current = new Date().getTime();\n }, []);\n\n const handleContainerFocus = useCallback(() => {\n if (closeTimeoutRef.current) {\n clearTimeout(closeTimeoutRef.current);\n closeTimeoutRef.current = undefined;\n }\n }, []);\n\n const handleContainerBlur = useCallback(() => {\n if (closeTimeoutRef.current) {\n clearTimeout(closeTimeoutRef.current);\n closeTimeoutRef.current = undefined;\n }\n\n if (!mouseDownTimeRef.current || new Date().getTime() - mouseDownTimeRef.current > 100) {\n closeTimeoutRef.current = setTimeout(() => {\n closeTimeoutRef.current = undefined;\n setOpen(false);\n }, 10);\n }\n }, []);\n\n const handleContainerChange = useCallback(\n (newValue: FormMonthPickerBaseValue, isMonthSelect: boolean) => {\n setValue(newValue);\n if (isMonthSelect) setOpen(false);\n\n nextTick(() => {\n onValueChangeByUser(name, newValue);\n });\n },\n [name, onValueChangeByUser, setValue]\n );\n\n const handleInputDatePickerFocus = useCallback(() => {\n if (readOnly || disabled) return;\n\n setOpen(true);\n }, [readOnly, disabled]);\n\n const handleInputDatePickerShouldDisableYear = useCallback(\n (date: Dayjs) => {\n const dateYm = Number(date.format('YYYYMM'));\n return dateYm < minAvailableYm || dateYm > maxAvailableYm;\n },\n [maxAvailableYm, minAvailableYm]\n );\n\n /********************************************************************************************************************\n * Memo\n * ******************************************************************************************************************/\n\n const inputDatePickerProps = useMemo(\n () => ({\n variant,\n size,\n color,\n labelShrink,\n fullWidth,\n disabled,\n format,\n minDate,\n maxDate,\n }),\n [variant, size, color, labelShrink, fullWidth, disabled, format, minDate, maxDate]\n );\n\n const inputStyle = useMemo(\n () => (inputWidth != null ? { width: inputWidth } : { width: fullWidth ? undefined : 150, ...initStyle }),\n [inputWidth, fullWidth, initStyle]\n );\n\n const wrapStyle = useMemo(\n () => ({\n display: hidden ? 'none' : fullWidth ? 'block' : 'inline-block',\n flex: fullWidth ? 1 : undefined,\n }),\n [hidden, fullWidth]\n );\n\n /********************************************************************************************************************\n * Render\n * ******************************************************************************************************************/\n\n return (\n <LocalizationProvider dateAdapter={AdapterDayjs} adapterLocale='ko'>\n <ClickAwayListener mouseEvent='onMouseDown' touchEvent='onTouchStart' onClickAway={() => setOpen(false)}>\n <div\n className={classNames(className, 'FormMonthPicker')}\n style={wrapStyle}\n onMouseDown={handleContainerMouseDown}\n onFocus={handleContainerFocus}\n onBlur={handleContainerBlur}\n >\n <PrivateStyledTooltip\n open={open}\n PopperProps={{\n modifiers: [\n {\n name: 'offset',\n options: {\n offset: [0, error && errorHelperText ? 8 : -14],\n },\n },\n ],\n }}\n title={\n <div style={{ display: 'flex' }}>\n <PrivateMonthPicker\n minValue={minValue}\n maxValue={maxValue}\n disablePast={disablePast}\n disableFuture={disableFuture}\n value={value}\n onChange={handleContainerChange}\n />\n </div>\n }\n >\n <div>\n <PrivateInputDatePicker\n {...inputDatePickerProps}\n style={inputStyle}\n sx={sx}\n value={valueDate}\n label={label}\n labelIcon={labelIcon}\n error={error}\n focused={focused}\n required={required}\n readOnly={readOnly}\n readOnlyInput={readOnlyInput}\n icon={icon}\n startAdornment={startAdornment}\n endAdornment={endAdornment}\n inputRef={inputRef}\n onChange={(v) => setValue(v ? dateToValue(v) : v)}\n onFocus={handleInputDatePickerFocus}\n onError={(reason) => (inputDatePickerErrorRef.current = reason)}\n shouldDisableYear={handleInputDatePickerShouldDisableYear}\n />\n </div>\n </PrivateStyledTooltip>\n {!formColWithHelperText && (!!helperText || (error && !!errorHelperText)) && (\n <FormHelperText error={error} style={{ marginLeft: variant === 'standard' ? 0 : 14 }}>\n {error ? errorHelperText : helperText}\n </FormHelperText>\n )}\n </div>\n </ClickAwayListener>\n </LocalizationProvider>\n );\n }\n);\n\nFormMonthPicker.displayName = 'FormMonthPicker';\nFormMonthPicker.defaultProps = FormMonthPickerDefaultProps;\n\nexport default FormMonthPicker;\n","import {\n FormValueItemProps,\n FormValueItemBaseCommands,\n FormRangeValueItemCommands,\n FormYearMonthRangeValueItemNameCommands,\n FormYearMonthRangeValueItemCommands,\n} from '../../@types';\nimport { CommonSxProps } from '../../@types';\nimport { ReactNode } from 'react';\nimport {\n PrivateInputDatePickerProps,\n PrivateMonthRangePickerBaseValue,\n PrivateMonthRangePickerValue,\n} from '../../@private';\n\nexport type FormMonthRangePickerBaseValue = PrivateMonthRangePickerBaseValue;\n\nexport type FormMonthRangePickerValue = PrivateMonthRangePickerValue;\n\nexport interface FormMonthRangePickerProps\n extends CommonSxProps,\n Omit<FormValueItemProps<FormMonthRangePickerValue, false>, 'label' | 'labelIcon' | 'width'>,\n Pick<PrivateInputDatePickerProps, 'align'> {\n fromLabel?: ReactNode;\n fromLabelIcon?: string;\n toLabel?: ReactNode;\n toLabelIcon?: string;\n required?: boolean;\n icon?: string;\n format?: string;\n labelShrink?: boolean;\n disablePast?: boolean;\n disableFuture?: boolean;\n minValue?: FormMonthRangePickerBaseValue;\n maxValue?: FormMonthRangePickerBaseValue;\n inputWidth?: number | string;\n readOnlyInput?: boolean;\n startAdornment?: ReactNode;\n endAdornment?: ReactNode;\n formValueFromYearNameSuffix?: string;\n formValueFromMonthNameSuffix?: string;\n formValueToYearNameSuffix?: string;\n formValueToMonthNameSuffix?: string;\n}\n\nexport const FormMonthRangePickerDefaultProps: Required<\n Pick<\n FormMonthRangePickerProps,\n | 'format'\n | 'minValue'\n | 'maxValue'\n | 'formValueFromYearNameSuffix'\n | 'formValueFromMonthNameSuffix'\n | 'formValueToYearNameSuffix'\n | 'formValueToMonthNameSuffix'\n >\n> = {\n format: 'YYYY년 MM월',\n minValue: {\n year: 2020,\n month: 1,\n },\n maxValue: {\n year: 2050,\n month: 12,\n },\n formValueFromYearNameSuffix: '_from_year',\n formValueFromMonthNameSuffix: '_from_month',\n formValueToYearNameSuffix: '_to_year',\n formValueToMonthNameSuffix: '_to_month',\n};\n\nexport interface FormMonthRangePickerCommands\n extends FormValueItemBaseCommands<FormMonthRangePickerValue, false>,\n FormRangeValueItemCommands<FormMonthRangePickerBaseValue>,\n FormYearMonthRangeValueItemCommands,\n FormYearMonthRangeValueItemNameCommands {}\n","import React, { ReactNode, useCallback, useEffect, useId, useLayoutEffect, useMemo, useRef, useState } from 'react';\nimport classNames from 'classnames';\nimport { ClickAwayListener, FormHelperText, Grid } from '@mui/material';\nimport { useAutoUpdateState, useFirstSkipEffect } from '@pdg/react-hook';\nimport { getDateValidationErrorText, nextTick } from '../../@util';\nimport {\n FormMonthRangePickerProps as Props,\n FormMonthRangePickerDefaultProps,\n FormMonthRangePickerCommands,\n FormMonthRangePickerValue,\n} from './FormMonthRangePicker.types';\nimport { useFormState } from '../../FormContext';\nimport { LocalizationProvider, DateValidationError } from '@mui/x-date-pickers';\nimport { AdapterDayjs } from '@mui/x-date-pickers/AdapterDayjs';\nimport {\n PrivateInputDatePicker,\n PrivateInputDatePickerValue,\n PrivateMonthRangePicker,\n PrivateMonthRangePickerSelectType,\n PrivateStyledTooltip,\n PrivateYearRangePickerSelectType,\n} from '../../@private';\nimport { FormDateRangePickerDefaultProps } from '../FormDateRangePicker';\nimport { FormMonthPickerBaseValue } from '../FormMonthPicker';\nimport dayjs, { Dayjs } from 'dayjs';\nimport 'dayjs/locale/ko';\n\nconst DEFAULT_VALUE: FormMonthRangePickerValue = [null, null];\nconst DEFAULT_FORMAT = 'YYYY년 MM월';\n\nconst FormMonthRangePicker = React.forwardRef<FormMonthRangePickerCommands, Props>(\n (\n {\n variant: initVariant,\n size: initSize,\n color: initColor,\n focused: initFocused,\n //----------------------------------------------------------------------------------------------------------------\n hidden: initHidden,\n //----------------------------------------------------------------------------------------------------------------\n name,\n fromLabel,\n fromLabelIcon,\n toLabel,\n toLabelIcon,\n readOnly,\n required,\n fullWidth: initFullWidth,\n disabled: initDisabled,\n error: initError,\n helperText,\n value: initValue,\n data: initData,\n exceptValue,\n onChange,\n onValidate,\n // -------------------------------------------------------------------------------------------------------------------\n icon,\n format: initFormat,\n labelShrink: initLabelShrink,\n disablePast,\n disableFuture,\n minValue: initMinValue,\n maxValue: initMaxValue,\n inputWidth,\n readOnlyInput,\n startAdornment,\n endAdornment,\n formValueFromYearNameSuffix,\n formValueFromMonthNameSuffix,\n formValueToYearNameSuffix,\n formValueToMonthNameSuffix,\n align,\n //----------------------------------------------------------------------------------------------------------------\n className,\n style: initStyle,\n sx,\n },\n ref\n ) => {\n /********************************************************************************************************************\n * ID\n * ******************************************************************************************************************/\n\n const id = useId();\n\n /********************************************************************************************************************\n * FormState\n * ******************************************************************************************************************/\n\n const {\n variant: formVariant,\n size: formSize,\n color: formColor,\n focused: formFocused,\n labelShrink: formLabelShrink,\n fullWidth: formFullWidth,\n disabled: formDisabled,\n formColWithHelperText,\n onAddValueItem,\n onRemoveValueItem,\n onValueChange,\n onValueChangeByUser,\n onRequestSearchSubmit,\n } = useFormState();\n\n /********************************************************************************************************************\n * Memo - FormState\n * ******************************************************************************************************************/\n\n const variant = useMemo(() => (initVariant == null ? formVariant : initVariant), [initVariant, formVariant]);\n const size = useMemo(() => (initSize == null ? formSize : initSize), [initSize, formSize]);\n const color = useMemo(() => (initColor == null ? formColor : initColor), [initColor, formColor]);\n const focused = useMemo(() => (initFocused == null ? formFocused : initFocused), [initFocused, formFocused]);\n const labelShrink = useMemo(\n () => (initLabelShrink == null ? formLabelShrink : initLabelShrink),\n [initLabelShrink, formLabelShrink]\n );\n const fullWidth = useMemo(\n () => (initFullWidth == null ? formFullWidth : initFullWidth),\n [initFullWidth, formFullWidth]\n );\n\n /********************************************************************************************************************\n * Ref\n * ******************************************************************************************************************/\n\n const startInputRef = useRef<HTMLInputElement>();\n const endInputRef = useRef<HTMLInputElement>();\n const startInputDatePickerErrorRef = useRef<DateValidationError>(null);\n const endInputDatePickerErrorRef = useRef<DateValidationError>(null);\n const openValueRef = useRef<FormMonthRangePickerValue>();\n\n /********************************************************************************************************************\n * State\n * ******************************************************************************************************************/\n\n const [error, setError] = useAutoUpdateState<Props['error']>(initError);\n const [errorHelperText, setErrorHelperText] = useState<Props['helperText']>();\n const [fromError, setFromError] = useState(false);\n const [fromErrorHelperText, setFromErrorHelperText] = useState<Props['helperText']>();\n const [toError, setToError] = useState(false);\n const [toErrorHelperText, setToErrorHelperText] = useState<Props['helperText']>();\n const [disabled, setDisabled] = useAutoUpdateState<Props['disabled']>(\n initDisabled == null ? formDisabled : initDisabled\n );\n const [hidden, setHidden] = useAutoUpdateState<Props['hidden']>(initHidden);\n const [data, setData] = useAutoUpdateState<Props['data']>(initData);\n const [open, setOpen] = useState(false);\n\n /********************************************************************************************************************\n * Function - getFinalValue\n * ******************************************************************************************************************/\n\n const getFinalValue = useCallback((value: FormMonthRangePickerValue | undefined): FormMonthRangePickerValue => {\n return value || DEFAULT_VALUE;\n }, []);\n\n /********************************************************************************************************************\n * State - value\n * ******************************************************************************************************************/\n\n const [value, setValue] = useAutoUpdateState<FormMonthRangePickerValue>(\n useCallback(() => {\n return initValue || DEFAULT_VALUE;\n }, [initValue])\n );\n\n useFirstSkipEffect(() => {\n if (error || fromError || toError) validate(value);\n if (onChange) onChange(value);\n onValueChange(name, value);\n }, [value]);\n\n /********************************************************************************************************************\n * Function\n * ******************************************************************************************************************/\n\n const valueToDate = useCallback((v: FormMonthPickerBaseValue) => dayjs(`${v.year}-${v.month}-01`), []);\n const valueToYm = useCallback((v: FormMonthPickerBaseValue) => v.year * 100 + v.month, []);\n const dateToValue = useCallback((v: Dayjs) => ({ year: v.year(), month: v.month() + 1 }), []);\n\n /********************************************************************************************************************\n * Memo\n * ******************************************************************************************************************/\n\n const nowDate = useMemo(() => dayjs(), []);\n const nowValue = useMemo(() => dateToValue(nowDate), [dateToValue, nowDate]);\n const nowYm = useMemo(() => valueToYm(nowValue), [nowValue, valueToYm]);\n\n const valueDate = useMemo(\n () => [\n !!value && !!value[0] ? valueToDate(value[0]) : null,\n !!value && !!value[1] ? valueToDate(value[1]) : null,\n ],\n [value, valueToDate]\n );\n\n const minValue = useMemo(() => initMinValue || FormMonthRangePickerDefaultProps.minValue, [initMinValue]);\n const maxValue = useMemo(() => initMaxValue || FormMonthRangePickerDefaultProps.maxValue, [initMaxValue]);\n\n const minDate = useMemo(() => (minValue ? valueToDate(minValue) : undefined), [minValue, valueToDate]);\n const maxDate = useMemo(() => (maxValue ? valueToDate(maxValue) : undefined), [maxValue, valueToDate]);\n\n const minAvailableValue = useMemo(() => {\n if (disablePast) {\n const minYm = valueToYm(minValue);\n return nowYm > minYm ? nowValue : minValue;\n } else {\n return minValue;\n }\n }, [disablePast, valueToYm, minValue, nowYm, nowValue]);\n const minAvailableYm = useMemo(() => valueToYm(minAvailableValue), [minAvailableValue, valueToYm]);\n\n const maxAvailableValue = useMemo(() => {\n if (disableFuture) {\n const maxYm = valueToYm(maxValue);\n return nowYm < maxYm ? nowValue : maxValue;\n } else {\n return maxValue;\n }\n }, [disableFuture, valueToYm, maxValue, nowYm, nowValue]);\n const maxAvailableYm = useMemo(() => valueToYm(maxAvailableValue), [maxAvailableValue, valueToYm]);\n\n /********************************************************************************************************************\n * Memo\n * ******************************************************************************************************************/\n\n const format = useMemo(() => initFormat || DEFAULT_FORMAT, [initFormat]);\n\n /********************************************************************************************************************\n * Effect\n * ******************************************************************************************************************/\n\n useEffect(() => {\n if (value !== initValue) {\n if (onChange) onChange(value);\n onValueChange(name, value);\n }\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, []);\n\n useFirstSkipEffect(() => {\n if (open) {\n openValueRef.current = value;\n } else {\n if (openValueRef.current !== value) {\n let runOnRequestSearchSubmit;\n if (openValueRef.current && value) {\n runOnRequestSearchSubmit = openValueRef.current !== value;\n } else {\n runOnRequestSearchSubmit = true;\n }\n\n if (runOnRequestSearchSubmit) {\n onRequestSearchSubmit(name, value);\n }\n }\n }\n }, [open]);\n\n /********************************************************************************************************************\n * Function\n * ******************************************************************************************************************/\n\n const focus = useCallback(function () {\n startInputRef.current?.focus();\n }, []);\n\n const setFromErrorErrorHelperText = useCallback((error: boolean, fromErrorHelperText: ReactNode) => {\n setFromError(error);\n setFromErrorHelperText(fromErrorHelperText);\n }, []);\n\n const setToErrorErrorHelperText = useCallback((error: boolean, toErrorHelperText: ReactNode) => {\n setToError(error);\n setToErrorHelperText(toErrorHelperText);\n }, []);\n\n const setErrorErrorHelperText = useCallback(\n function (error: Props['error'], errorHelperText: Props['helperText']) {\n setError(error);\n setErrorHelperText(errorHelperText);\n },\n [setError]\n );\n\n const validate = useCallback(\n function (value: FormMonthRangePickerValue) {\n if (required && (value[0] == null || value[1] == null)) {\n if (value[0] == null && value[1] == null) {\n setErrorErrorHelperText(true, '필수 입력 항목입니다.');\n } else if (value[0] == null) {\n setFromErrorErrorHelperText(true, '필수 입력 항목입니다.');\n } else {\n setToErrorErrorHelperText(true, '필수 입력 항목입니다.');\n }\n return false;\n }\n\n if (startInputDatePickerErrorRef.current) {\n setFromErrorErrorHelperText(true, getDateValidationErrorText(startInputDatePickerErrorRef.current));\n if (endInputDatePickerErrorRef.current) {\n setToErrorErrorHelperText(true, getDateValidationErrorText(endInputDatePickerErrorRef.current));\n }\n return false;\n }\n if (endInputDatePickerErrorRef.current) {\n setToErrorErrorHelperText(true, getDateValidationErrorText(endInputDatePickerErrorRef.current));\n return false;\n }\n\n if (onValidate) {\n const onValidateResult = onValidate(value);\n if (onValidateResult != null && onValidateResult !== true) {\n setErrorErrorHelperText(true, onValidateResult);\n return false;\n }\n }\n\n setErrorErrorHelperText(false, undefined);\n setFromErrorErrorHelperText(false, undefined);\n setToErrorErrorHelperText(false, undefined);\n\n return true;\n },\n [onValidate, required, setToErrorErrorHelperText, setErrorErrorHelperText, setFromErrorErrorHelperText]\n );\n\n /********************************************************************************************************************\n * Commands\n * ******************************************************************************************************************/\n\n useLayoutEffect(() => {\n let lastValue = value;\n let lastData = data;\n let lastDisabled = !!disabled;\n let lastHidden = !!hidden;\n\n const commands: FormMonthRangePickerCommands = {\n getType: () => 'FormMonthRangePicker',\n getName: () => name,\n getReset: () => getFinalValue(initValue),\n reset: () => {\n lastValue = getFinalValue(initValue);\n setValue(lastValue);\n },\n getValue: () => lastValue,\n setValue: (value) => {\n lastValue = getFinalValue(value);\n setValue(lastValue);\n },\n getData: () => lastData,\n setData: (data) => {\n lastData = data;\n setData(data);\n },\n getFromValue: () => lastValue[0],\n setFromValue: (value) => {\n lastValue = [value, lastValue[1]];\n setValue(lastValue);\n },\n getToValue: () => lastValue[1],\n setToValue: (value) => {\n lastValue = [lastValue[0], value];\n setValue(lastValue);\n },\n getFromYear: () => (lastValue[0] ? lastValue[0].year : null),\n setFromYear: (year: number | null) => {\n lastValue = getFinalValue([\n year === null\n ? null\n : lastValue[0]\n ? { year, month: lastValue[0].month }\n : { year, month: year === new Date().getFullYear() ? new Date().getMonth() + 1 : 1 },\n lastValue[1],\n ]);\n setValue(lastValue);\n },\n getFromMonth: () => (lastValue[0] ? lastValue[0].month : null),\n setFromMonth: (month: number | null) => {\n lastValue = getFinalValue([\n month === null\n ? null\n : lastValue[0]\n ? { year: lastValue[0].year, month }\n : { year: new Date().getFullYear(), month },\n lastValue[1],\n ]);\n setValue(lastValue);\n },\n getToYear: () => (lastValue[1] ? lastValue[1].year : null),\n setToYear: (year: number | null) => {\n lastValue = getFinalValue([\n lastValue[0],\n year === null\n ? null\n : lastValue[1]\n ? { year, month: lastValue[1].month }\n : { year, month: year === new Date().getFullYear() ? new Date().getMonth() + 1 : 1 },\n ]);\n setValue(lastValue);\n },\n getToMonth: () => (lastValue[1] ? lastValue[1].month : null),\n setToMonth: (month: number | null) => {\n lastValue = getFinalValue([\n lastValue[0],\n month === null\n ? null\n : lastValue[1]\n ? { year: lastValue[1].year, month }\n : { year: new Date().getFullYear(), month },\n ]);\n setValue(lastValue);\n },\n isExceptValue: () => !!exceptValue,\n isDisabled: () => lastDisabled,\n setDisabled: (disabled) => {\n lastDisabled = disabled;\n setDisabled(disabled);\n },\n isHidden: () => lastHidden,\n setHidden: (hidden) => {\n lastHidden = hidden;\n setHidden(hidden);\n },\n focus,\n focusValidate: focus,\n validate: () => validate(value),\n setError: (error: Props['error'], errorHelperText: Props['helperText']) =>\n setErrorErrorHelperText(error, error ? errorHelperText : undefined),\n getFormValueFromYearNameSuffix: () =>\n formValueFromYearNameSuffix || FormDateRangePickerDefaultProps.formValueFromNameSuffix,\n getFormValueFromMonthNameSuffix: () =>\n formValueFromMonthNameSuffix || FormDateRangePickerDefaultProps.formValueFromNameSuffix,\n getFormValueToYearNameSuffix: () =>\n formValueToYearNameSuffix || FormDateRangePickerDefaultProps.formValueToNameSuffix,\n getFormValueToMonthNameSuffix: () =>\n formValueToMonthNameSuffix || FormDateRangePickerDefaultProps.formValueToNameSuffix,\n getFormValueFromYearName: () => {\n return `${name}${formValueFromYearNameSuffix || FormDateRangePickerDefaultProps.formValueFromNameSuffix}`;\n },\n getFormValueFromMonthName: () => {\n return `${name}${formValueFromMonthNameSuffix || FormDateRangePickerDefaultProps.formValueFromNameSuffix}`;\n },\n getFormValueToYearName: () => {\n return `${name}${formValueToYearNameSuffix || FormDateRangePickerDefaultProps.formValueToNameSuffix}`;\n },\n getFormValueToMonthName: () => {\n return `${name}${formValueToMonthNameSuffix || FormDateRangePickerDefaultProps.formValueToNameSuffix}`;\n },\n };\n\n onAddValueItem(id, commands);\n\n if (ref) {\n if (typeof ref === 'function') {\n ref(commands);\n } else {\n ref.current = commands;\n }\n }\n\n return () => {\n onRemoveValueItem(id);\n\n if (ref) {\n if (typeof ref === 'function') {\n ref(null);\n } else {\n ref.current = null;\n }\n }\n };\n }, [\n name,\n initValue,\n value,\n getFinalValue,\n exceptValue,\n disabled,\n focus,\n validate,\n ref,\n onAddValueItem,\n onRemoveValueItem,\n id,\n setValue,\n setDisabled,\n setErrorErrorHelperText,\n data,\n setData,\n formValueFromYearNameSuffix,\n formValueFromMonthNameSuffix,\n formValueToYearNameSuffix,\n formValueToMonthNameSuffix,\n hidden,\n setHidden,\n ]);\n\n /********************************************************************************************************************\n * Event Handler\n * ******************************************************************************************************************/\n\n const handleContainerChange = useCallback(\n (newValue: FormMonthRangePickerValue, selectType: PrivateMonthRangePickerSelectType, isMonthSelect: boolean) => {\n setValue(newValue);\n if (selectType === 'start' && isMonthSelect) {\n nextTick(() => {\n endInputRef.current?.focus();\n });\n } else if (selectType === 'end' && isMonthSelect) {\n setOpen(false);\n }\n\n nextTick(() => {\n onValueChangeByUser(name, newValue);\n });\n },\n [name, onValueChangeByUser, setValue]\n );\n\n const handleInputDatePickerChange = useCallback(\n (selectType: PrivateYearRangePickerSelectType, date: PrivateInputDatePickerValue) => {\n if (date == null || date.isValid()) {\n if (selectType === 'start') {\n setValue((old) => {\n const newValue: FormMonthRangePickerValue = [date ? dateToValue(date) : null, old[1]];\n if (\n newValue[0] !== null &&\n valueToYm(newValue[0]) >= minAvailableYm &&\n valueToYm(newValue[0]) <= maxAvailableYm\n ) {\n if (newValue[1] !== null && newValue[1] < newValue[0]) {\n newValue[1] = newValue[0];\n }\n }\n\n if (fromError) {\n validate(newValue);\n }\n nextTick(() => {\n onValueChangeByUser(name, newValue);\n });\n return newValue;\n });\n } else {\n setValue((old) => {\n const newValue: FormMonthRangePickerValue = [old[0], date ? dateToValue(date) : null];\n if (\n newValue[1] !== null &&\n valueToYm(newValue[1]) >= minAvailableYm &&\n valueToYm(newValue[1]) <= maxAvailableYm\n ) {\n if (newValue[0] !== null && newValue[0] > newValue[1]) {\n newValue[0] = newValue[1];\n }\n }\n if (toError) {\n validate(newValue);\n }\n nextTick(() => {\n onValueChangeByUser(name, newValue);\n });\n return newValue;\n });\n }\n }\n },\n [\n dateToValue,\n toError,\n maxAvailableYm,\n minAvailableYm,\n name,\n onValueChangeByUser,\n setValue,\n fromError,\n validate,\n valueToYm,\n ]\n );\n\n const handleInputDatePickerFocus = useCallback(\n (selectType: PrivateYearRangePickerSelectType) => {\n if (readOnly || disabled) return;\n\n if (selectType === 'end' && value[0] == null) {\n startInputRef.current?.focus();\n } else {\n setOpen(true);\n }\n },\n [readOnly, disabled, value]\n );\n\n const handleInputDatePickerShouldDisableYear = useCallback(\n (dt: Dayjs) => {\n const ym = dt.year() * 100 + (dt.month() + 1);\n return ym < minAvailableYm || ym > maxAvailableYm;\n },\n [maxAvailableYm, minAvailableYm]\n );\n\n /********************************************************************************************************************\n * Memo\n * ******************************************************************************************************************/\n\n const inputDatePickerProps = useMemo(\n () => ({\n align,\n variant,\n size,\n color,\n labelShrink,\n fullWidth,\n disabled,\n format,\n minDate,\n maxDate,\n }),\n [align, variant, size, color, labelShrink, fullWidth, disabled, format, minDate, maxDate]\n );\n\n const inputStyle = useMemo(\n () => (inputWidth != null ? { width: inputWidth } : { width: fullWidth ? undefined : 150, ...initStyle }),\n [inputWidth, fullWidth, initStyle]\n );\n\n const wrapStyle = useMemo(\n () => ({\n display: hidden ? 'none' : fullWidth ? 'block' : 'inline-block',\n flex: fullWidth ? 1 : undefined,\n }),\n [hidden, fullWidth]\n );\n\n /********************************************************************************************************************\n * Render\n * ******************************************************************************************************************/\n\n return (\n <LocalizationProvider dateAdapter={AdapterDayjs} adapterLocale='ko'>\n <ClickAwayListener mouseEvent='onMouseDown' touchEvent='onTouchStart' onClickAway={() => setOpen(false)}>\n <div className={classNames(className, 'FormMonthRangePicker')} style={wrapStyle}>\n <PrivateStyledTooltip\n open={open}\n PopperProps={{\n modifiers: [\n {\n name: 'offset',\n options: {\n offset: [0, error && errorHelperText ? 8 : -14],\n },\n },\n ],\n }}\n title={\n <div style={{ display: 'flex' }}>\n <PrivateMonthRangePicker\n minValue={minValue}\n maxValue={maxValue}\n disablePast={disablePast}\n disableFuture={disableFuture}\n value={value}\n onChange={handleContainerChange}\n />\n </div>\n }\n >\n <Grid container alignItems='center'>\n <Grid item flex={1}>\n <PrivateInputDatePicker\n {...inputDatePickerProps}\n style={inputStyle}\n sx={sx}\n value={valueDate[0]}\n label={fromLabel}\n labelIcon={fromLabelIcon}\n error={error || fromError}\n focused={focused || open}\n required={required}\n readOnly={readOnly}\n readOnlyInput={readOnlyInput}\n icon={icon}\n startAdornment={startAdornment}\n endAdornment={endAdornment}\n inputRef={startInputRef}\n onChange={(v) => handleInputDatePickerChange('start', v)}\n onFocus={() => handleInputDatePickerFocus('start')}\n onError={(reason) => (startInputDatePickerErrorRef.current = reason)}\n shouldDisableYear={handleInputDatePickerShouldDisableYear}\n />\n </Grid>\n <Grid item sx={{ px: 1 }}>\n ~\n </Grid>\n <Grid item flex={1}>\n <PrivateInputDatePicker\n {...inputDatePickerProps}\n style={inputStyle}\n sx={sx}\n value={valueDate[1]}\n label={toLabel}\n labelIcon={toLabelIcon}\n error={error || toError}\n focused={focused || open}\n required={required}\n readOnly={readOnly}\n readOnlyInput={readOnlyInput}\n icon={icon}\n startAdornment={startAdornment}\n endAdornment={endAdornment}\n inputRef={endInputRef}\n onChange={(v) => handleInputDatePickerChange('end', v)}\n onFocus={() => handleInputDatePickerFocus('end')}\n onError={(reason) => (endInputDatePickerErrorRef.current = reason)}\n shouldDisableYear={handleInputDatePickerShouldDisableYear}\n />\n </Grid>\n </Grid>\n </PrivateStyledTooltip>\n {!formColWithHelperText &&\n (helperText ||\n (error && errorHelperText) ||\n (fromError && fromErrorHelperText) ||\n (toError && toErrorHelperText)) && (\n <FormHelperText\n error={error || fromError || toError}\n style={{ marginLeft: variant === 'standard' ? 0 : 14 }}\n >\n {error ? errorHelperText : fromError ? fromErrorHelperText : toError ? toErrorHelperText : helperText}\n </FormHelperText>\n )}\n </div>\n </ClickAwayListener>\n </LocalizationProvider>\n );\n }\n);\n\nFormMonthRangePicker.displayName = 'FormMonthRangePicker';\nFormMonthRangePicker.defaultProps = FormMonthRangePickerDefaultProps;\n\nexport default FormMonthRangePicker;\n","import { FormValueItemProps, FormValueItemBaseCommands } from '../../@types';\nimport { CommonSxProps } from '../../@types';\nimport { ReactNode } from 'react';\nimport { PrivateYearPickerBaseValue, PrivateYearPickerValue } from '../../@private';\n\nexport type FormYearPickerBaseValue = PrivateYearPickerBaseValue;\n\nexport type FormYearPickerValue = PrivateYearPickerValue;\n\nexport interface FormYearPickerProps extends CommonSxProps, FormValueItemProps<FormYearPickerValue, false> {\n required?: boolean;\n icon?: string;\n format?: string;\n labelShrink?: boolean;\n disablePast?: boolean;\n disableFuture?: boolean;\n minYear?: FormYearPickerBaseValue;\n maxYear?: FormYearPickerBaseValue;\n inputWidth?: number | string;\n readOnlyInput?: boolean;\n startAdornment?: ReactNode;\n endAdornment?: ReactNode;\n}\n\nexport const FormYearPickerDefaultProps: Required<Pick<FormYearPickerProps, 'format' | 'minYear' | 'maxYear'>> = {\n format: 'YYYY년',\n minYear: 2020,\n maxYear: 2050,\n};\n\nexport interface FormYearPickerCommands extends FormValueItemBaseCommands<FormYearPickerValue, false> {}\n","import React, { useCallback, useEffect, useId, useLayoutEffect, useMemo, useRef, useState } from 'react';\nimport classNames from 'classnames';\nimport { ClickAwayListener, FormHelperText } from '@mui/material';\nimport { useAutoUpdateState, useFirstSkipEffect } from '@pdg/react-hook';\nimport { empty, getDateValidationErrorText, nextTick } from '../../@util';\nimport {\n FormYearPickerProps as Props,\n FormYearPickerDefaultProps,\n FormYearPickerCommands,\n FormYearPickerValue,\n FormYearPickerBaseValue,\n} from './FormYearPicker.types';\nimport { useFormState } from '../../FormContext';\nimport { LocalizationProvider, DateValidationError } from '@mui/x-date-pickers';\nimport { AdapterDayjs } from '@mui/x-date-pickers/AdapterDayjs';\nimport {\n PrivateDatePickerValue,\n PrivateInputDatePicker,\n PrivateStyledTooltip,\n PrivateYearPicker,\n} from '../../@private';\nimport dayjs, { Dayjs } from 'dayjs';\n\nconst DEFAULT_VALUE = null;\nconst DEFAULT_FORMAT = 'YYYY년 MM월';\n\nconst FormYearPicker = React.forwardRef<FormYearPickerCommands, Props>(\n (\n {\n variant: initVariant,\n size: initSize,\n color: initColor,\n focused: initFocused,\n //----------------------------------------------------------------------------------------------------------------\n hidden: initHidden,\n //----------------------------------------------------------------------------------------------------------------\n name,\n labelIcon,\n label,\n readOnly,\n required,\n fullWidth: initFullWidth,\n disabled: initDisabled,\n error: initError,\n helperText,\n value: initValue,\n data: initData,\n exceptValue,\n onChange,\n onValidate,\n // -------------------------------------------------------------------------------------------------------------------\n icon,\n format: initFormat,\n labelShrink: initLabelShrink,\n disablePast,\n disableFuture,\n minYear,\n maxYear,\n inputWidth,\n readOnlyInput,\n startAdornment,\n endAdornment,\n //----------------------------------------------------------------------------------------------------------------\n className,\n style: initStyle,\n sx,\n },\n ref\n ) => {\n /********************************************************************************************************************\n * ID\n * ******************************************************************************************************************/\n\n const id = useId();\n\n /********************************************************************************************************************\n * FormState\n * ******************************************************************************************************************/\n\n const {\n variant: formVariant,\n size: formSize,\n color: formColor,\n focused: formFocused,\n labelShrink: formLabelShrink,\n fullWidth: formFullWidth,\n disabled: formDisabled,\n formColWithHelperText,\n onAddValueItem,\n onRemoveValueItem,\n onValueChange,\n onValueChangeByUser,\n onRequestSearchSubmit,\n } = useFormState();\n\n /********************************************************************************************************************\n * Memo - FormState\n * ******************************************************************************************************************/\n\n const variant = useMemo(() => (initVariant == null ? formVariant : initVariant), [initVariant, formVariant]);\n const size = useMemo(() => (initSize == null ? formSize : initSize), [initSize, formSize]);\n const color = useMemo(() => (initColor == null ? formColor : initColor), [initColor, formColor]);\n const focused = useMemo(() => (initFocused == null ? formFocused : initFocused), [initFocused, formFocused]);\n const labelShrink = useMemo(\n () => (initLabelShrink == null ? formLabelShrink : initLabelShrink),\n [initLabelShrink, formLabelShrink]\n );\n const fullWidth = useMemo(\n () => (initFullWidth == null ? formFullWidth : initFullWidth),\n [initFullWidth, formFullWidth]\n );\n\n /********************************************************************************************************************\n * Ref\n * ******************************************************************************************************************/\n\n const ratingRef = useRef<HTMLSpanElement>(null);\n const inputRef = useRef<HTMLInputElement>();\n const closeTimeoutRef = useRef<NodeJS.Timeout>();\n const mouseDownTimeRef = useRef<number>();\n const inputDatePickerErrorRef = useRef<DateValidationError>(null);\n const openValueRef = useRef<FormYearPickerValue>();\n\n /********************************************************************************************************************\n * State\n * ******************************************************************************************************************/\n\n const [error, setError] = useAutoUpdateState<Props['error']>(initError);\n const [errorHelperText, setErrorHelperText] = useState<Props['helperText']>();\n const [disabled, setDisabled] = useAutoUpdateState<Props['disabled']>(\n initDisabled == null ? formDisabled : initDisabled\n );\n const [hidden, setHidden] = useAutoUpdateState<Props['hidden']>(initHidden);\n const [data, setData] = useAutoUpdateState<Props['data']>(initData);\n const [open, setOpen] = useState(false);\n\n /********************************************************************************************************************\n * Function - getFinalValue\n * ******************************************************************************************************************/\n\n const getFinalValue = useCallback((value: FormYearPickerValue | undefined): FormYearPickerValue => {\n return value || DEFAULT_VALUE;\n }, []);\n\n /********************************************************************************************************************\n * State - value\n * ******************************************************************************************************************/\n\n const [value, setValue] = useAutoUpdateState<FormYearPickerValue>(\n useCallback(() => {\n return initValue || DEFAULT_VALUE;\n }, [initValue])\n );\n\n useFirstSkipEffect(() => {\n if (error) validate(value);\n if (onChange) onChange(value);\n onValueChange(name, value);\n }, [value]);\n\n /********************************************************************************************************************\n * Function\n * ******************************************************************************************************************/\n\n const valueToDate = useCallback((v: FormYearPickerBaseValue) => dayjs(`${v}-01-01`), []);\n const dateToValue = useCallback((v: Dayjs) => v.year(), []);\n\n /********************************************************************************************************************\n * Memo\n * ******************************************************************************************************************/\n\n const nowYear = useMemo(() => new Date().getFullYear(), []);\n const valueDate = useMemo(() => (value ? valueToDate(value) : null), [value, valueToDate]);\n const minDate = useMemo(() => (minYear ? valueToDate(minYear) : undefined), [minYear, valueToDate]);\n const maxDate = useMemo(() => (maxYear ? valueToDate(maxYear) : undefined), [maxYear, valueToDate]);\n\n /********************************************************************************************************************\n * Memo\n * ******************************************************************************************************************/\n\n const format = useMemo(() => initFormat || DEFAULT_FORMAT, [initFormat]);\n\n /********************************************************************************************************************\n * Effect\n * ******************************************************************************************************************/\n\n useEffect(() => {\n if (value !== initValue) {\n if (onChange) onChange(value);\n onValueChange(name, value);\n }\n\n if (ratingRef.current) {\n inputRef.current = ratingRef.current.querySelector('input') || undefined;\n }\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, []);\n\n useFirstSkipEffect(() => {\n if (open) {\n openValueRef.current = value;\n } else {\n if (openValueRef.current !== value) {\n let runOnRequestSearchSubmit;\n if (openValueRef.current && value) {\n runOnRequestSearchSubmit = openValueRef.current !== value;\n } else {\n runOnRequestSearchSubmit = true;\n }\n\n if (runOnRequestSearchSubmit) {\n onRequestSearchSubmit(name, value);\n }\n }\n }\n }, [open]);\n\n /********************************************************************************************************************\n * Function\n * ******************************************************************************************************************/\n\n const focus = useCallback(function () {\n inputRef.current?.focus();\n setTimeout(() => {\n inputRef.current?.blur();\n });\n }, []);\n\n const setErrorErrorHelperText = useCallback(\n function (error: Props['error'], errorHelperText: Props['helperText']) {\n setError(error);\n setErrorHelperText(errorHelperText);\n },\n [setError]\n );\n\n const validate = useCallback(\n function (value: FormYearPickerValue) {\n if (required && empty(value)) {\n setErrorErrorHelperText(true, '필수 선택 항목입니다.');\n return false;\n }\n\n if (inputDatePickerErrorRef.current) {\n setErrorErrorHelperText(true, getDateValidationErrorText(inputDatePickerErrorRef.current));\n return false;\n }\n\n if (onValidate) {\n const onValidateResult = onValidate(value);\n if (onValidateResult != null && onValidateResult !== true) {\n setErrorErrorHelperText(true, onValidateResult);\n return false;\n }\n }\n\n setErrorErrorHelperText(false, undefined);\n\n return true;\n },\n [onValidate, required, setErrorErrorHelperText]\n );\n\n /********************************************************************************************************************\n * Commands\n * ******************************************************************************************************************/\n\n useLayoutEffect(() => {\n let lastValue = value;\n let lastData = data;\n let lastDisabled = !!disabled;\n let lastHidden = !!hidden;\n\n const commands: FormYearPickerCommands = {\n getType: () => 'FormYearPicker',\n getName: () => name,\n getReset: () => getFinalValue(initValue),\n reset: () => {\n lastValue = getFinalValue(initValue);\n setValue(lastValue);\n },\n getValue: () => lastValue,\n setValue: (value) => {\n lastValue = getFinalValue(value);\n setValue(lastValue);\n },\n getData: () => lastData,\n setData: (data) => {\n lastData = data;\n setData(data);\n },\n isExceptValue: () => !!exceptValue,\n isDisabled: () => lastDisabled,\n setDisabled: (disabled) => {\n lastDisabled = disabled;\n setDisabled(disabled);\n },\n isHidden: () => lastHidden,\n setHidden: (hidden) => {\n lastHidden = hidden;\n setHidden(hidden);\n },\n focus,\n focusValidate: focus,\n validate: () => validate(value),\n setError: (error: Props['error'], errorHelperText: Props['helperText']) =>\n setErrorErrorHelperText(error, error ? errorHelperText : undefined),\n };\n\n onAddValueItem(id, commands);\n\n if (ref) {\n if (typeof ref === 'function') {\n ref(commands);\n } else {\n ref.current = commands;\n }\n }\n\n return () => {\n onRemoveValueItem(id);\n\n if (ref) {\n if (typeof ref === 'function') {\n ref(null);\n } else {\n ref.current = null;\n }\n }\n };\n }, [\n name,\n initValue,\n value,\n getFinalValue,\n exceptValue,\n disabled,\n focus,\n validate,\n ref,\n onAddValueItem,\n onRemoveValueItem,\n id,\n setValue,\n setDisabled,\n setErrorErrorHelperText,\n data,\n setData,\n hidden,\n setHidden,\n ]);\n\n /********************************************************************************************************************\n * Event Handler\n * ******************************************************************************************************************/\n\n const handleContainerMouseDown = useCallback(() => {\n if (closeTimeoutRef.current) {\n clearTimeout(closeTimeoutRef.current);\n closeTimeoutRef.current = undefined;\n }\n mouseDownTimeRef.current = new Date().getTime();\n }, []);\n\n const handleContainerFocus = useCallback(() => {\n if (closeTimeoutRef.current) {\n clearTimeout(closeTimeoutRef.current);\n closeTimeoutRef.current = undefined;\n }\n }, []);\n\n const handleContainerBlur = useCallback(() => {\n if (closeTimeoutRef.current) {\n clearTimeout(closeTimeoutRef.current);\n closeTimeoutRef.current = undefined;\n }\n\n if (!mouseDownTimeRef.current || new Date().getTime() - mouseDownTimeRef.current > 100) {\n closeTimeoutRef.current = setTimeout(() => {\n closeTimeoutRef.current = undefined;\n setOpen(false);\n }, 10);\n }\n }, []);\n\n const handleContainerChange = useCallback(\n (newValue: FormYearPickerBaseValue, isClick: boolean) => {\n setValue(newValue);\n if (isClick) setOpen(false);\n\n nextTick(() => {\n onValueChangeByUser(name, newValue);\n });\n },\n [name, onValueChangeByUser, setValue]\n );\n\n const handleInputDatePickerChange = useCallback(\n (v: PrivateDatePickerValue) => {\n const newValue = v ? dateToValue(v) : v;\n setValue(newValue);\n nextTick(() => {\n onValueChangeByUser(name, newValue);\n });\n },\n [dateToValue, name, onValueChangeByUser, setValue]\n );\n\n const handleInputDatePickerFocus = useCallback(() => {\n if (readOnly || disabled) return;\n\n setOpen(true);\n }, [readOnly, disabled]);\n\n const handleInputDatePickerShouldDisableYear = useCallback(\n (year: Dayjs) => {\n return (!!disablePast && year.year() < nowYear) || (!!disableFuture && year.year() > nowYear);\n },\n [disableFuture, disablePast, nowYear]\n );\n\n /********************************************************************************************************************\n * Memo\n * ******************************************************************************************************************/\n\n const inputDatePickerProps = useMemo(\n () => ({\n variant,\n size,\n color,\n labelShrink,\n fullWidth,\n disabled,\n format,\n minDate,\n maxDate,\n }),\n [variant, size, color, labelShrink, fullWidth, disabled, format, minDate, maxDate]\n );\n\n const inputStyle = useMemo(\n () => (inputWidth != null ? { width: inputWidth } : { width: fullWidth ? undefined : 150, ...initStyle }),\n [inputWidth, fullWidth, initStyle]\n );\n\n const wrapStyle = useMemo(\n () => ({\n display: hidden ? 'none' : fullWidth ? 'block' : 'inline-block',\n flex: fullWidth ? 1 : undefined,\n }),\n [hidden, fullWidth]\n );\n\n /********************************************************************************************************************\n * Render\n * ******************************************************************************************************************/\n\n return (\n <LocalizationProvider dateAdapter={AdapterDayjs}>\n <ClickAwayListener mouseEvent='onMouseDown' touchEvent='onTouchStart' onClickAway={() => setOpen(false)}>\n <div\n className={classNames(className, 'FormYearPicker')}\n style={wrapStyle}\n onMouseDown={handleContainerMouseDown}\n onFocus={handleContainerFocus}\n onBlur={handleContainerBlur}\n >\n <PrivateStyledTooltip\n open={open}\n PopperProps={{\n modifiers: [\n {\n name: 'offset',\n options: {\n offset: [0, error && errorHelperText ? 8 : -14],\n },\n },\n ],\n }}\n title={\n <div style={{ display: 'flex' }}>\n <PrivateYearPicker\n minYear={minYear}\n maxYear={maxYear}\n disablePast={disablePast}\n disableFuture={disableFuture}\n value={value}\n onChange={handleContainerChange}\n />\n </div>\n }\n >\n <div>\n <PrivateInputDatePicker\n {...inputDatePickerProps}\n style={inputStyle}\n sx={sx}\n value={valueDate}\n label={label}\n labelIcon={labelIcon}\n error={error}\n focused={focused}\n required={required}\n readOnly={readOnly}\n readOnlyInput={readOnlyInput}\n icon={icon}\n startAdornment={startAdornment}\n endAdornment={endAdornment}\n inputRef={inputRef}\n onChange={handleInputDatePickerChange}\n onFocus={handleInputDatePickerFocus}\n onError={(reason) => (inputDatePickerErrorRef.current = reason)}\n shouldDisableYear={handleInputDatePickerShouldDisableYear}\n />\n </div>\n </PrivateStyledTooltip>\n {!formColWithHelperText && (!!helperText || (error && !!errorHelperText)) && (\n <FormHelperText error={error} style={{ marginLeft: variant === 'standard' ? 0 : 14 }}>\n {error ? errorHelperText : helperText}\n </FormHelperText>\n )}\n </div>\n </ClickAwayListener>\n </LocalizationProvider>\n );\n }\n);\n\nFormYearPicker.displayName = 'FormYearPicker';\nFormYearPicker.defaultProps = FormYearPickerDefaultProps;\n\nexport default FormYearPicker;\n","import {\n FormValueItemProps,\n FormValueItemBaseCommands,\n FormRangeValueItemCommands,\n FormRangeValueItemNameCommands,\n} from '../../@types';\nimport { CommonSxProps } from '../../@types';\nimport { ReactNode } from 'react';\nimport {\n PrivateInputDatePickerProps,\n PrivateYearRangePickerBaseValue,\n PrivateYearRangePickerValue,\n} from '../../@private';\n\nexport type FormYearRangePickerBaseValue = PrivateYearRangePickerBaseValue;\n\nexport type FormYearRangePickerValue = PrivateYearRangePickerValue;\n\nexport interface FormYearRangePickerProps\n extends CommonSxProps,\n Omit<FormValueItemProps<FormYearRangePickerValue, false>, 'label' | 'labelIcon' | 'width'>,\n Pick<PrivateInputDatePickerProps, 'align'> {\n fromLabel?: ReactNode;\n fromLabelIcon?: string;\n toLabel?: ReactNode;\n toLabelIcon?: string;\n required?: boolean;\n icon?: string;\n format?: string;\n labelShrink?: boolean;\n disablePast?: boolean;\n disableFuture?: boolean;\n minYear?: FormYearRangePickerBaseValue;\n maxYear?: FormYearRangePickerBaseValue;\n inputWidth?: number | string;\n readOnlyInput?: boolean;\n startAdornment?: ReactNode;\n endAdornment?: ReactNode;\n formValueFromNameSuffix?: string;\n formValueToNameSuffix?: string;\n}\n\nexport const FormYearRangePickerDefaultProps: Required<\n Pick<FormYearRangePickerProps, 'format' | 'minYear' | 'maxYear' | 'formValueFromNameSuffix' | 'formValueToNameSuffix'>\n> = {\n format: 'YYYY년',\n minYear: 2020,\n maxYear: 2050,\n formValueFromNameSuffix: '_from',\n formValueToNameSuffix: '_to',\n};\n\nexport interface FormYearRangePickerCommands\n extends FormValueItemBaseCommands<FormYearRangePickerValue, false>,\n FormRangeValueItemCommands<FormYearRangePickerBaseValue>,\n FormRangeValueItemNameCommands {}\n","import React, { ReactNode, useCallback, useEffect, useId, useLayoutEffect, useMemo, useRef, useState } from 'react';\nimport classNames from 'classnames';\nimport { ClickAwayListener, FormHelperText, Grid } from '@mui/material';\nimport { useAutoUpdateState, useFirstSkipEffect } from '@pdg/react-hook';\nimport { getDateValidationErrorText, nextTick } from '../../@util';\nimport {\n FormYearRangePickerProps as Props,\n FormYearRangePickerDefaultProps,\n FormYearRangePickerCommands,\n FormYearRangePickerValue,\n FormYearRangePickerBaseValue,\n} from './FormYearRangePicker.types';\nimport { useFormState } from '../../FormContext';\nimport { LocalizationProvider, DateValidationError } from '@mui/x-date-pickers';\nimport { AdapterDayjs } from '@mui/x-date-pickers/AdapterDayjs';\nimport {\n PrivateInputDatePicker,\n PrivateInputDatePickerValue,\n PrivateStyledTooltip,\n PrivateYearRangePicker,\n PrivateYearRangePickerSelectType,\n} from '../../@private';\nimport dayjs, { Dayjs } from 'dayjs';\nimport { FormDateRangePickerDefaultProps } from '../FormDateRangePicker';\n\nconst DEFAULT_VALUE: FormYearRangePickerValue = [null, null];\nconst DEFAULT_FORMAT = 'YYYY년 MM월';\n\nconst FormYearRangePicker = React.forwardRef<FormYearRangePickerCommands, Props>(\n (\n {\n variant: initVariant,\n size: initSize,\n color: initColor,\n focused: initFocused,\n //----------------------------------------------------------------------------------------------------------------\n hidden: initHidden,\n //----------------------------------------------------------------------------------------------------------------\n name,\n fromLabel,\n fromLabelIcon,\n toLabel,\n toLabelIcon,\n readOnly,\n required,\n fullWidth: initFullWidth,\n disabled: initDisabled,\n error: initError,\n helperText,\n value: initValue,\n data: initData,\n exceptValue,\n onChange,\n onValidate,\n // -------------------------------------------------------------------------------------------------------------------\n icon,\n format: initFormat,\n labelShrink: initLabelShrink,\n disablePast,\n disableFuture,\n minYear: initMinYear,\n maxYear: initMaxYear,\n inputWidth,\n readOnlyInput,\n startAdornment,\n endAdornment,\n formValueFromNameSuffix,\n formValueToNameSuffix,\n align,\n //----------------------------------------------------------------------------------------------------------------\n className,\n style: initStyle,\n sx,\n },\n ref\n ) => {\n /********************************************************************************************************************\n * ID\n * ******************************************************************************************************************/\n\n const id = useId();\n\n /********************************************************************************************************************\n * FormState\n * ******************************************************************************************************************/\n\n const {\n variant: formVariant,\n size: formSize,\n color: formColor,\n focused: formFocused,\n labelShrink: formLabelShrink,\n fullWidth: formFullWidth,\n disabled: formDisabled,\n formColWithHelperText,\n onAddValueItem,\n onRemoveValueItem,\n onValueChange,\n onValueChangeByUser,\n onRequestSearchSubmit,\n } = useFormState();\n\n /********************************************************************************************************************\n * Memo - FormState\n * ******************************************************************************************************************/\n\n const variant = useMemo(() => (initVariant == null ? formVariant : initVariant), [initVariant, formVariant]);\n const size = useMemo(() => (initSize == null ? formSize : initSize), [initSize, formSize]);\n const color = useMemo(() => (initColor == null ? formColor : initColor), [initColor, formColor]);\n const focused = useMemo(() => (initFocused == null ? formFocused : initFocused), [initFocused, formFocused]);\n const labelShrink = useMemo(\n () => (initLabelShrink == null ? formLabelShrink : initLabelShrink),\n [initLabelShrink, formLabelShrink]\n );\n const fullWidth = useMemo(\n () => (initFullWidth == null ? formFullWidth : initFullWidth),\n [initFullWidth, formFullWidth]\n );\n\n /********************************************************************************************************************\n * Ref\n * ******************************************************************************************************************/\n\n const startInputRef = useRef<HTMLInputElement>();\n const endInputRef = useRef<HTMLInputElement>();\n const startInputDatePickerErrorRef = useRef<DateValidationError>(null);\n const endInputDatePickerErrorRef = useRef<DateValidationError>(null);\n const openValueRef = useRef<FormYearRangePickerValue>();\n\n /********************************************************************************************************************\n * State\n * ******************************************************************************************************************/\n\n const [error, setError] = useAutoUpdateState<Props['error']>(initError);\n const [errorHelperText, setErrorHelperText] = useState<Props['helperText']>();\n const [fromError, setFromError] = useState(false);\n const [fromErrorHelperText, setFromErrorHelperText] = useState<Props['helperText']>();\n const [toError, setToError] = useState(false);\n const [toErrorHelperText, setToErrorHelperText] = useState<Props['helperText']>();\n const [disabled, setDisabled] = useAutoUpdateState<Props['disabled']>(\n initDisabled == null ? formDisabled : initDisabled\n );\n const [hidden, setHidden] = useAutoUpdateState<Props['hidden']>(initHidden);\n const [data, setData] = useAutoUpdateState<Props['data']>(initData);\n const [open, setOpen] = useState(false);\n const [selectType, setSelectType] = useState<PrivateYearRangePickerSelectType>('start');\n\n /********************************************************************************************************************\n * Function - getFinalValue\n * ******************************************************************************************************************/\n\n const getFinalValue = useCallback((value: FormYearRangePickerValue | undefined): FormYearRangePickerValue => {\n return value || DEFAULT_VALUE;\n }, []);\n\n /********************************************************************************************************************\n * State - value\n * ******************************************************************************************************************/\n\n const [value, setValue] = useAutoUpdateState<FormYearRangePickerValue>(\n useCallback(() => {\n return initValue || DEFAULT_VALUE;\n }, [initValue])\n );\n\n useFirstSkipEffect(() => {\n if (error || fromError || toError) validate(value);\n if (onChange) onChange(value);\n onValueChange(name, value);\n }, [value]);\n\n /********************************************************************************************************************\n * Function\n * ******************************************************************************************************************/\n\n const valueToDate = useCallback((v: FormYearRangePickerBaseValue) => dayjs(`${v}-01-01`), []);\n const dateToValue = useCallback((v: Dayjs) => v.year(), []);\n\n /********************************************************************************************************************\n * Memo\n * ******************************************************************************************************************/\n\n const nowYear = useMemo(() => new Date().getFullYear(), []);\n\n const valueDate = useMemo(\n () => [\n !!value && !!value[0] ? valueToDate(value[0]) : null,\n !!value && !!value[1] ? valueToDate(value[1]) : null,\n ],\n [value, valueToDate]\n );\n\n const minYear = useMemo(\n () => Math.max(initMinYear || FormYearRangePickerDefaultProps.minYear, FormYearRangePickerDefaultProps.minYear),\n [initMinYear]\n );\n const maxYear = useMemo(\n () => Math.min(initMaxYear || FormYearRangePickerDefaultProps.maxYear, FormYearRangePickerDefaultProps.maxYear),\n [initMaxYear]\n );\n\n const minDate = useMemo(() => (minYear ? valueToDate(minYear) : undefined), [minYear, valueToDate]);\n const maxDate = useMemo(() => (maxYear ? valueToDate(maxYear) : undefined), [maxYear, valueToDate]);\n\n /********************************************************************************************************************\n * Memo\n * ******************************************************************************************************************/\n\n const format = useMemo(() => initFormat || DEFAULT_FORMAT, [initFormat]);\n\n /********************************************************************************************************************\n * Effect\n * ******************************************************************************************************************/\n\n useEffect(() => {\n if (value !== initValue) {\n if (onChange) onChange(value);\n onValueChange(name, value);\n }\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, []);\n\n useFirstSkipEffect(() => {\n if (open) {\n openValueRef.current = value;\n } else {\n if (openValueRef.current !== value) {\n let runOnRequestSearchSubmit;\n if (openValueRef.current && value) {\n runOnRequestSearchSubmit = openValueRef.current !== value;\n } else {\n runOnRequestSearchSubmit = true;\n }\n\n if (runOnRequestSearchSubmit) {\n onRequestSearchSubmit(name, value);\n }\n }\n }\n }, [open]);\n\n /********************************************************************************************************************\n * Function\n * ******************************************************************************************************************/\n\n const focus = useCallback(function () {\n startInputRef.current?.focus();\n }, []);\n\n const setFromErrorErrorHelperText = useCallback((error: boolean, fromErrorHelperText: ReactNode) => {\n setFromError(error);\n setFromErrorHelperText(fromErrorHelperText);\n }, []);\n\n const setToErrorErrorHelperText = useCallback((error: boolean, toErrorHelperText: ReactNode) => {\n setToError(error);\n setToErrorHelperText(toErrorHelperText);\n }, []);\n\n const setErrorErrorHelperText = useCallback(\n function (error: Props['error'], errorHelperText: Props['helperText']) {\n setError(error);\n setErrorHelperText(errorHelperText);\n },\n [setError]\n );\n\n const validate = useCallback(\n function (value: FormYearRangePickerValue) {\n if (required && (value[0] == null || value[1] == null)) {\n if (value[0] == null && value[1] == null) {\n setErrorErrorHelperText(true, '필수 입력 항목입니다.');\n } else if (value[0] == null) {\n setFromErrorErrorHelperText(true, '필수 입력 항목입니다.');\n } else {\n setToErrorErrorHelperText(true, '필수 입력 항목입니다.');\n }\n return false;\n }\n\n if (startInputDatePickerErrorRef.current) {\n setFromErrorErrorHelperText(true, getDateValidationErrorText(startInputDatePickerErrorRef.current));\n if (endInputDatePickerErrorRef.current) {\n setToErrorErrorHelperText(true, getDateValidationErrorText(endInputDatePickerErrorRef.current));\n }\n return false;\n }\n if (endInputDatePickerErrorRef.current) {\n setToErrorErrorHelperText(true, getDateValidationErrorText(endInputDatePickerErrorRef.current));\n return false;\n }\n\n if (onValidate) {\n const onValidateResult = onValidate(value);\n if (onValidateResult != null && onValidateResult !== true) {\n setErrorErrorHelperText(true, onValidateResult);\n return false;\n }\n }\n\n setErrorErrorHelperText(false, undefined);\n setFromErrorErrorHelperText(false, undefined);\n setToErrorErrorHelperText(false, undefined);\n\n return true;\n },\n [onValidate, required, setToErrorErrorHelperText, setErrorErrorHelperText, setFromErrorErrorHelperText]\n );\n\n /********************************************************************************************************************\n * Commands\n * ******************************************************************************************************************/\n\n useLayoutEffect(() => {\n let lastValue = value;\n let lastData = data;\n let lastDisabled = !!disabled;\n let lastHidden = !!hidden;\n\n const commands: FormYearRangePickerCommands = {\n getType: () => 'FormYearRangePicker',\n getName: () => name,\n getReset: () => getFinalValue(initValue),\n reset: () => {\n lastValue = getFinalValue(initValue);\n setValue(lastValue);\n },\n getValue: () => lastValue,\n setValue: (value) => {\n lastValue = getFinalValue(value);\n setValue(lastValue);\n },\n getData: () => lastData,\n setData: (data) => {\n lastData = data;\n setData(data);\n },\n getFromValue: () => lastValue[0],\n setFromValue: (value) => {\n lastValue = [value, lastValue[1]];\n setValue(lastValue);\n },\n getToValue: () => lastValue[1],\n setToValue: (value) => {\n lastValue = [lastValue[0], value];\n setValue(lastValue);\n },\n isExceptValue: () => !!exceptValue,\n isDisabled: () => lastDisabled,\n setDisabled: (disabled) => {\n lastDisabled = disabled;\n setDisabled(disabled);\n },\n isHidden: () => lastHidden,\n setHidden: (hidden) => {\n lastHidden = hidden;\n setHidden(hidden);\n },\n focus,\n focusValidate: focus,\n validate: () => validate(value),\n setError: (error: Props['error'], errorHelperText: Props['helperText']) =>\n setErrorErrorHelperText(error, error ? errorHelperText : undefined),\n getFormValueFromNameSuffix: () =>\n formValueFromNameSuffix || FormDateRangePickerDefaultProps.formValueFromNameSuffix,\n getFormValueToNameSuffix: () => formValueToNameSuffix || FormDateRangePickerDefaultProps.formValueToNameSuffix,\n getFormValueFromName: () => {\n return `${name}${formValueFromNameSuffix || FormDateRangePickerDefaultProps.formValueFromNameSuffix}`;\n },\n getFormValueToName: () => {\n return `${name}${formValueToNameSuffix || FormDateRangePickerDefaultProps.formValueToNameSuffix}`;\n },\n };\n\n onAddValueItem(id, commands);\n\n if (ref) {\n if (typeof ref === 'function') {\n ref(commands);\n } else {\n ref.current = commands;\n }\n }\n\n return () => {\n onRemoveValueItem(id);\n\n if (ref) {\n if (typeof ref === 'function') {\n ref(null);\n } else {\n ref.current = null;\n }\n }\n };\n }, [\n name,\n initValue,\n value,\n getFinalValue,\n exceptValue,\n disabled,\n focus,\n validate,\n ref,\n onAddValueItem,\n onRemoveValueItem,\n id,\n setValue,\n setDisabled,\n setErrorErrorHelperText,\n data,\n setData,\n formValueFromNameSuffix,\n formValueToNameSuffix,\n hidden,\n setHidden,\n ]);\n\n /********************************************************************************************************************\n * Event Handler\n * ******************************************************************************************************************/\n\n const handleContainerChange = useCallback(\n (newValue: FormYearRangePickerValue, selectType: PrivateYearRangePickerSelectType) => {\n setValue(newValue);\n if (selectType === 'start') {\n nextTick(() => {\n setSelectType('end');\n endInputRef.current?.focus();\n });\n } else if (selectType === 'end') {\n setOpen(false);\n }\n\n nextTick(() => {\n onValueChangeByUser(name, newValue);\n });\n },\n [name, onValueChangeByUser, setValue]\n );\n\n const handleInputDatePickerChange = useCallback(\n (selectType: PrivateYearRangePickerSelectType, date: PrivateInputDatePickerValue) => {\n if (date == null || date.isValid()) {\n if (selectType === 'start') {\n setValue((old) => {\n const newValue: FormYearRangePickerValue = [date ? dateToValue(date) : null, old[1]];\n if (newValue[0] !== null && newValue[0] >= minYear && newValue[0] <= maxYear) {\n if (newValue[1] !== null && newValue[1] < newValue[0]) {\n newValue[1] = newValue[0];\n }\n }\n\n if (fromError) {\n validate(newValue);\n }\n nextTick(() => {\n onValueChangeByUser(name, newValue);\n });\n return newValue;\n });\n } else {\n setValue((old) => {\n const newValue: FormYearRangePickerValue = [old[0], date ? dateToValue(date) : null];\n if (newValue[1] !== null && newValue[1] >= minYear && newValue[1] <= maxYear) {\n if (newValue[0] !== null && newValue[0] > newValue[1]) {\n newValue[0] = newValue[1];\n }\n }\n if (toError) {\n validate(newValue);\n }\n nextTick(() => {\n onValueChangeByUser(name, newValue);\n });\n return newValue;\n });\n }\n }\n },\n [dateToValue, toError, maxYear, minYear, name, onValueChangeByUser, setValue, fromError, validate]\n );\n\n const handleInputDatePickerFocus = useCallback(\n (selectType: PrivateYearRangePickerSelectType) => {\n if (readOnly || disabled) return;\n\n if (selectType === 'end' && value[0] == null) {\n startInputRef.current?.focus();\n } else {\n setSelectType(selectType);\n setOpen(true);\n }\n },\n [readOnly, disabled, value]\n );\n\n const handleInputDatePickerShouldDisableYear = useCallback(\n (year: Dayjs) => {\n return (!!disablePast && year.year() < nowYear) || (!!disableFuture && year.year() > nowYear);\n },\n [disableFuture, disablePast, nowYear]\n );\n\n /********************************************************************************************************************\n * Memo\n * ******************************************************************************************************************/\n\n const inputDatePickerProps = useMemo(\n () => ({\n align,\n variant,\n size,\n color,\n labelShrink,\n fullWidth,\n disabled,\n format,\n minDate,\n maxDate,\n }),\n [align, variant, size, color, labelShrink, fullWidth, disabled, format, minDate, maxDate]\n );\n\n const inputStyle = useMemo(\n () => (inputWidth != null ? { width: inputWidth } : { width: fullWidth ? undefined : 150, ...initStyle }),\n [inputWidth, fullWidth, initStyle]\n );\n\n const wrapStyle = useMemo(\n () => ({\n display: hidden ? 'none' : fullWidth ? 'block' : 'inline-block',\n flex: fullWidth ? 1 : undefined,\n }),\n [hidden, fullWidth]\n );\n\n /********************************************************************************************************************\n * Render\n * ******************************************************************************************************************/\n\n return (\n <LocalizationProvider dateAdapter={AdapterDayjs}>\n <ClickAwayListener mouseEvent='onMouseDown' touchEvent='onTouchStart' onClickAway={() => setOpen(false)}>\n <div className={classNames(className, 'FormYearRangePicker')} style={wrapStyle}>\n <PrivateStyledTooltip\n open={open}\n PopperProps={{\n modifiers: [\n {\n name: 'offset',\n options: {\n offset: [0, error && errorHelperText ? 8 : -14],\n },\n },\n ],\n }}\n title={\n <div style={{ display: 'flex' }}>\n <PrivateYearRangePicker\n selectType={selectType}\n minYear={minYear}\n maxYear={maxYear}\n disablePast={disablePast}\n disableFuture={disableFuture}\n value={value}\n onChange={handleContainerChange}\n />\n </div>\n }\n >\n <Grid container alignItems='center'>\n <Grid item flex={1}>\n <PrivateInputDatePicker\n {...inputDatePickerProps}\n style={inputStyle}\n sx={sx}\n value={valueDate[0]}\n label={fromLabel}\n labelIcon={fromLabelIcon}\n error={error || fromError}\n focused={focused || (open && selectType === 'start')}\n required={required}\n readOnly={readOnly}\n readOnlyInput={readOnlyInput}\n icon={icon}\n startAdornment={startAdornment}\n endAdornment={endAdornment}\n inputRef={startInputRef}\n onChange={(v) => handleInputDatePickerChange('start', v)}\n onFocus={() => handleInputDatePickerFocus('start')}\n onError={(reason) => (startInputDatePickerErrorRef.current = reason)}\n shouldDisableYear={handleInputDatePickerShouldDisableYear}\n />\n </Grid>\n <Grid item sx={{ px: 1 }}>\n ~\n </Grid>\n <Grid item flex={1}>\n <PrivateInputDatePicker\n {...inputDatePickerProps}\n style={inputStyle}\n sx={sx}\n value={valueDate[1]}\n label={toLabel}\n labelIcon={toLabelIcon}\n error={error || toError}\n focused={focused || (open && selectType === 'end')}\n required={required}\n readOnly={readOnly}\n readOnlyInput={readOnlyInput}\n icon={icon}\n startAdornment={startAdornment}\n endAdornment={endAdornment}\n inputRef={endInputRef}\n onChange={(v) => handleInputDatePickerChange('end', v)}\n onFocus={() => handleInputDatePickerFocus('end')}\n onError={(reason) => (endInputDatePickerErrorRef.current = reason)}\n shouldDisableYear={handleInputDatePickerShouldDisableYear}\n />\n </Grid>\n </Grid>\n </PrivateStyledTooltip>\n {!formColWithHelperText &&\n (helperText ||\n (error && errorHelperText) ||\n (fromError && fromErrorHelperText) ||\n (toError && toErrorHelperText)) && (\n <FormHelperText\n error={error || fromError || toError}\n style={{ marginLeft: variant === 'standard' ? 0 : 14 }}\n >\n {error ? errorHelperText : fromError ? fromErrorHelperText : toError ? toErrorHelperText : helperText}\n </FormHelperText>\n )}\n </div>\n </ClickAwayListener>\n </LocalizationProvider>\n );\n }\n);\n\nFormYearRangePicker.displayName = 'FormYearRangePicker';\nFormYearRangePicker.defaultProps = FormYearRangePickerDefaultProps;\n\nexport default FormYearRangePicker;\n","import { FormValueItemProps, FormValueItemBaseCommands } from '../../@types';\nimport { CommonSxProps } from '../../@types';\nimport { ReactNode } from 'react';\nimport { FormControlLabelProps } from '@mui/material';\n\nexport interface FormSwitchProps extends CommonSxProps, Omit<FormValueItemProps<boolean, false>, 'fullWidth'> {\n switchLabel?: ReactNode;\n switchLabelProps?: Omit<FormControlLabelProps, 'children' | 'control' | 'label' | 'required' | 'disabled'>;\n onValue?(value: boolean): boolean;\n}\n\nexport const FormSwitchDefaultProps = {};\n\nexport interface FormSwitchCommands extends FormValueItemBaseCommands<boolean, false> {}\n","import React, { useCallback, useEffect, useId, useLayoutEffect, useMemo, useRef, useState } from 'react';\nimport classNames from 'classnames';\nimport { FormControlLabel, Switch } from '@mui/material';\nimport { useAutoUpdateState, useFirstSkipEffect } from '@pdg/react-hook';\nimport { nextTick } from '../../@util';\nimport { FormSwitchProps as Props, FormSwitchDefaultProps, FormSwitchCommands } from './FormSwitch.types';\nimport FormItemBase from '../FormItemBase';\nimport { useFormState } from '../../FormContext';\n\nconst FormSwitch = React.forwardRef<FormSwitchCommands, Props>(\n (\n {\n variant: initVariant,\n size: initSize,\n color: initColor,\n focused: initFocused,\n //----------------------------------------------------------------------------------------------------------------\n hidden: initHidden,\n //----------------------------------------------------------------------------------------------------------------\n name,\n labelIcon,\n label,\n readOnly,\n disabled: initDisabled,\n error: initError,\n helperText,\n value: initValue,\n data: initData,\n exceptValue,\n onChange,\n onValidate,\n onValue,\n //----------------------------------------------------------------------------------------------------------------\n switchLabel,\n //----------------------------------------------------------------------------------------------------------------\n className,\n style,\n sx,\n },\n ref\n ) => {\n /********************************************************************************************************************\n * ID\n * ******************************************************************************************************************/\n\n const id = useId();\n\n /********************************************************************************************************************\n * FormState\n * ******************************************************************************************************************/\n\n const {\n variant: formVariant,\n size: formSize,\n color: formColor,\n focused: formFocused,\n disabled: formDisabled,\n onAddValueItem,\n onRemoveValueItem,\n onValueChange,\n onValueChangeByUser,\n onRequestSearchSubmit,\n } = useFormState();\n\n /********************************************************************************************************************\n * Memo - FormState\n * ******************************************************************************************************************/\n\n const variant = useMemo(() => (initVariant == null ? formVariant : initVariant), [initVariant, formVariant]);\n const size = useMemo(() => (initSize == null ? formSize : initSize), [initSize, formSize]);\n const color = useMemo(() => (initColor == null ? formColor : initColor), [initColor, formColor]);\n\n /********************************************************************************************************************\n * State - FormState\n * ******************************************************************************************************************/\n\n const [focused, setFocused] = useAutoUpdateState<Props['focused']>(initFocused == null ? formFocused : initFocused);\n\n /********************************************************************************************************************\n * Ref\n * ******************************************************************************************************************/\n\n const inputRef = useRef<HTMLInputElement>();\n\n /********************************************************************************************************************\n * State\n * ******************************************************************************************************************/\n\n const [error, setError] = useAutoUpdateState<Props['error']>(initError);\n const [errorHelperText, setErrorHelperText] = useState<Props['helperText']>();\n const [disabled, setDisabled] = useAutoUpdateState<Props['disabled']>(\n initDisabled == null ? formDisabled : initDisabled\n );\n const [hidden, setHidden] = useAutoUpdateState<Props['hidden']>(initHidden);\n const [data, setData] = useAutoUpdateState<Props['data']>(initData);\n\n /********************************************************************************************************************\n * Function - getFinalValue\n * ******************************************************************************************************************/\n\n const getFinalValue = useCallback(\n (value: boolean): boolean => {\n return onValue ? onValue(value) : value;\n },\n [onValue]\n );\n\n /********************************************************************************************************************\n * State - value\n * ******************************************************************************************************************/\n\n const [value, setValue] = useAutoUpdateState<boolean>(initValue || false, getFinalValue);\n\n useFirstSkipEffect(() => {\n if (error) validate(value);\n if (onChange) onChange(value);\n onValueChange(name, value);\n }, [value]);\n\n /********************************************************************************************************************\n * Effect\n * ******************************************************************************************************************/\n\n useEffect(() => {\n if (value !== initValue) {\n if (onChange) onChange(value);\n onValueChange(name, value);\n }\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, []);\n\n /********************************************************************************************************************\n * Function\n * ******************************************************************************************************************/\n\n const focus = useCallback(function () {\n inputRef.current?.focus();\n setTimeout(() => {\n inputRef.current?.blur();\n });\n }, []);\n\n const setErrorErrorHelperText = useCallback(\n function (error: Props['error'], errorHelperText: Props['helperText']) {\n setError(error);\n setErrorHelperText(errorHelperText);\n },\n [setError]\n );\n\n const validate = useCallback(\n function (value: boolean) {\n if (onValidate) {\n const onValidateResult = onValidate(value);\n if (onValidateResult != null && onValidateResult !== true) {\n setErrorErrorHelperText(true, onValidateResult);\n return false;\n }\n }\n\n setErrorErrorHelperText(false, undefined);\n\n return true;\n },\n [onValidate, setErrorErrorHelperText]\n );\n\n /********************************************************************************************************************\n * Commands\n * ******************************************************************************************************************/\n\n useLayoutEffect(() => {\n let lastValue = value;\n let lastData = data;\n let lastDisabled = !!disabled;\n let lastHidden = !!hidden;\n\n const commands: FormSwitchCommands = {\n getType: () => 'FormSwitch',\n getName: () => name,\n getReset: () => getFinalValue(initValue || false),\n reset: () => {\n lastValue = getFinalValue(initValue || false);\n setValue(lastValue);\n },\n getValue: () => lastValue,\n setValue: (value: boolean) => {\n lastValue = getFinalValue(value);\n setValue(lastValue);\n },\n getData: () => lastData,\n setData: (data) => {\n lastData = data;\n setData(data);\n },\n isExceptValue: () => !!exceptValue,\n isDisabled: () => lastDisabled,\n setDisabled: (disabled) => {\n lastDisabled = disabled;\n setDisabled(disabled);\n },\n isHidden: () => lastHidden,\n setHidden: (hidden) => {\n lastHidden = hidden;\n setHidden(hidden);\n },\n focus,\n focusValidate: focus,\n validate: () => validate(value),\n setError: (error: Props['error'], errorHelperText: Props['helperText']) =>\n setErrorErrorHelperText(error, error ? errorHelperText : undefined),\n };\n\n onAddValueItem(id, commands);\n\n if (ref) {\n if (typeof ref === 'function') {\n ref(commands);\n } else {\n ref.current = commands;\n }\n }\n\n return () => {\n onRemoveValueItem(id);\n\n if (ref) {\n if (typeof ref === 'function') {\n ref(null);\n } else {\n ref.current = null;\n }\n }\n };\n }, [\n name,\n initValue,\n value,\n getFinalValue,\n exceptValue,\n disabled,\n focus,\n validate,\n ref,\n onAddValueItem,\n onRemoveValueItem,\n id,\n setValue,\n setDisabled,\n setErrorErrorHelperText,\n data,\n setData,\n hidden,\n setHidden,\n ]);\n\n /********************************************************************************************************************\n * Event Handler\n * ******************************************************************************************************************/\n\n const handleChange = useCallback(\n (e: React.SyntheticEvent, checked: boolean) => {\n if (readOnly) {\n e.preventDefault();\n } else {\n const finalValue = getFinalValue(checked);\n setValue(finalValue);\n nextTick(() => {\n onValueChangeByUser(name, finalValue);\n onRequestSearchSubmit(name, finalValue);\n });\n }\n },\n [readOnly, getFinalValue, setValue, onValueChangeByUser, name, onRequestSearchSubmit]\n );\n\n /********************************************************************************************************************\n * Render\n * ******************************************************************************************************************/\n\n const switchControl = useMemo(\n () => (\n <Switch\n size={size}\n name={name}\n checked={value}\n disabled={disabled}\n onChange={handleChange}\n onFocus={() => setFocused(initFocused || true)}\n onBlur={() => setFocused(initFocused || false)}\n />\n ),\n [disabled, handleChange, initFocused, name, setFocused, size, value]\n );\n\n return (\n <FormItemBase\n variant={variant}\n size={size}\n color={color}\n focused={focused}\n className={classNames(className, 'FormValueItem', 'FormSwitch')}\n labelIcon={labelIcon}\n label={label}\n error={error}\n fullWidth={false}\n helperText={error ? errorHelperText : helperText}\n helperTextProps={{ style: { marginLeft: 5 } }}\n style={style}\n sx={sx}\n hidden={hidden}\n autoSize\n controlHeight={size === 'small' ? 21 : 26}\n controlVerticalCenter\n control={\n switchLabel ? (\n <FormControlLabel control={switchControl} label={switchLabel} disabled={disabled} />\n ) : (\n switchControl\n )\n }\n />\n );\n }\n);\n\nFormSwitch.displayName = 'FormSwitch';\nFormSwitch.defaultProps = FormSwitchDefaultProps;\n\nexport default FormSwitch;\n","import { FormCommands, FormProps } from '../../Form';\nimport { CommonSxProps } from '../../@types';\nexport interface SearchCommands extends FormCommands {}\n\nexport interface SearchProps\n extends CommonSxProps,\n Pick<\n FormProps,\n 'color' | 'spacing' | 'focused' | 'labelShrink' | 'onValueChange' | 'onValueChangeByUser' | 'onSubmit'\n > {\n autoSubmit?: boolean;\n}\n\nexport const SearchDefaultProps: Pick<SearchProps, 'color' | 'spacing'> = {\n color: 'primary',\n};\n","import { CommonSxProps } from '../../@types';\n\nexport interface SearchGroupRowProps extends CommonSxProps {}\n\nexport const SearchGroupRowDefaultProps = {};\n","import React from 'react';\nimport { SearchGroupRowProps as Props, SearchGroupRowDefaultProps } from './SearchGroupRow.types';\nimport { FormCol, FormRow } from '../../FormLayout';\nimport { Grid } from '@mui/material';\n\nconst SearchGroupRow: React.FC<Props> = ({ children, ...props }) => {\n return (\n <FormRow {...props}>\n <FormCol>\n <Grid container spacing={1} alignItems='center'>\n {children}\n </Grid>\n </FormCol>\n </FormRow>\n );\n};\n\nSearchGroupRow.displayName = 'SearchGroupRow';\nSearchGroupRow.defaultProps = SearchGroupRowDefaultProps;\n\nexport default SearchGroupRow;\n","import React, { ReactNode, useEffect, useMemo, useRef } from 'react';\nimport { Paper } from '@mui/material';\nimport { SearchProps as Props, SearchCommands, SearchDefaultProps } from './Search.types';\nimport { Form, FormCommands } from '../../Form';\nimport { FormBody } from '../../FormLayout';\nimport FormContextProvider from '../../FormContextProvider';\nimport SearchGroupRow from '../SearchGroupRow';\n\nconst Search = React.forwardRef<SearchCommands, Props>(\n (\n {\n children,\n className,\n style,\n sx,\n //----------------------------------------------------------------------------------------------------------------\n color,\n spacing,\n focused,\n labelShrink,\n autoSubmit,\n ...otherProps\n },\n ref\n ) => {\n /********************************************************************************************************************\n * Ref\n * ******************************************************************************************************************/\n\n const formRef = useRef<FormCommands>();\n\n /********************************************************************************************************************\n * Effect\n * ******************************************************************************************************************/\n\n useEffect(() => {\n if (autoSubmit) {\n formRef.current?.submit();\n }\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, []);\n\n /********************************************************************************************************************\n * Memo\n * ******************************************************************************************************************/\n\n const renderChildren = useMemo(() => {\n const rowItems: ReactNode[] = [];\n const basicRowItems: ReactNode[] = [];\n\n React.Children.forEach(children, (child) => {\n if (React.isValidElement(child)) {\n if (child.type.toString() === SearchGroupRow.toString()) {\n rowItems.push(child);\n } else {\n basicRowItems.push(child);\n }\n }\n });\n\n if (basicRowItems.length > 0) {\n return [<SearchGroupRow key='$basicRow$'>{basicRowItems}</SearchGroupRow>, ...rowItems];\n } else {\n return rowItems;\n }\n }, [children]);\n\n /********************************************************************************************************************\n * Render\n * ******************************************************************************************************************/\n\n return (\n <FormContextProvider\n value={{\n id: 'search',\n variant: 'outlined',\n size: 'small',\n color,\n spacing,\n focused,\n labelShrink,\n fullWidth: false,\n // eslint-disable-next-line\n onAddValueItem() {},\n // eslint-disable-next-line\n onRemoveValueItem() {},\n // eslint-disable-next-line\n onValueChange() {},\n // eslint-disable-next-line\n onValueChangeByUser() {},\n onRequestSearchSubmit() {\n if (autoSubmit) {\n formRef.current?.submit();\n }\n },\n }}\n >\n <Paper variant='outlined' className={className} sx={{ p: 1.5, ...sx }} style={style}>\n <Form\n ref={(commands) => {\n if (ref) {\n if (typeof ref === 'function') {\n ref(commands);\n } else {\n ref.current = commands;\n }\n }\n\n formRef.current = commands || undefined;\n }}\n className='Search'\n variant='outlined'\n size='small'\n color={color}\n spacing={spacing}\n focused={focused}\n labelShrink={labelShrink}\n fullWidth={false}\n {...otherProps}\n >\n <FormBody>{renderChildren}</FormBody>\n </Form>\n </Paper>\n </FormContextProvider>\n );\n }\n);\n\nSearch.displayName = 'Search';\nSearch.defaultProps = SearchDefaultProps;\n\nexport default Search;\n","import { CommonSxProps } from '../../@types';\nimport { GridProps } from '@mui/material';\n\nexport interface SearchGroupProps extends CommonSxProps {\n align?: 'left' | 'center' | 'right';\n max?: boolean;\n hidden?: boolean;\n spacing?: GridProps['spacing'];\n}\n\nexport const SearchGroupDefaultProps: Pick<SearchGroupProps, 'spacing'> = {\n spacing: 1.5,\n};\n","import { Grid, styled } from '@mui/material';\n\nexport const StyledItem = styled(Grid)`\n &:has(> [style*='display: none;']) {\n display: none;\n }\n`;\n","import React, { ReactElement, useMemo } from 'react';\nimport classNames from 'classnames';\nimport { SearchGroupDefaultProps as Props, SearchGroupProps } from './SearchGroup.types';\nimport { Grid } from '@mui/material';\nimport { FormHidden } from '../../FormItemTextFieldBase';\nimport { StyledItem } from './SearchGroup.style';\n\nconst isReactFragment = (child: ReactElement) => {\n try {\n return child.type.toString() === React.Fragment.toString();\n } catch (e) {\n return false;\n }\n};\n\nconst removeReactFragment = (el: ReactElement): any => {\n if (isReactFragment(el)) {\n const children: ReactElement | ReactElement[] = el.props.children;\n if (children) {\n if (Array.isArray(children)) {\n return children.map((child) => {\n if (React.isValidElement(child)) {\n return removeReactFragment(child);\n } else {\n return <Grid item>{child}</Grid>;\n }\n });\n } else {\n return (\n <StyledItem item style={{ display: el.type === FormHidden ? 'none' : undefined }}>\n {el}\n </StyledItem>\n );\n }\n } else {\n return (\n <StyledItem item style={{ display: el.type === FormHidden ? 'none' : undefined }}>\n {el}\n </StyledItem>\n );\n }\n } else {\n return (\n <StyledItem item style={{ display: el.type === FormHidden ? 'none' : undefined }}>\n {el}\n </StyledItem>\n );\n }\n};\n\nconst SearchGroup: React.FC<SearchGroupProps> = ({\n children,\n className,\n style,\n sx,\n //--------------------------------------------------------------------------------------------------------------------\n max,\n align,\n hidden,\n spacing,\n}) => {\n /********************************************************************************************************************\n * State\n * ******************************************************************************************************************/\n\n const justifyContent = useMemo(() => {\n switch (align) {\n case undefined:\n case 'left':\n return 'start';\n case 'center':\n return 'center';\n case 'right':\n return 'end';\n }\n }, [align]);\n\n /********************************************************************************************************************\n * Render\n * ******************************************************************************************************************/\n\n return (\n <Grid\n item\n className={classNames(className, 'SearchGroup')}\n style={{ flex: max ? 1 : undefined, display: hidden ? 'none' : undefined }}\n >\n <Grid\n container\n wrap='wrap'\n spacing={spacing}\n justifyContent={justifyContent}\n alignItems='start'\n style={style}\n sx={sx}\n >\n {React.Children.map(children, (child) => {\n if (React.isValidElement(child)) {\n return removeReactFragment(child);\n } else {\n return child;\n }\n })}\n </Grid>\n </Grid>\n );\n};\n\nSearchGroup.defaultProps = Props;\n\nexport default SearchGroup;\n","import { FormButtonProps } from '../../FormCommon';\n\nexport interface SearchButtonProps extends Omit<FormButtonProps, 'fullWidth'> {}\n\nexport const SearchButtonDefaultProps = {};\n","import React, { useMemo } from 'react';\nimport classNames from 'classnames';\nimport { SearchButtonProps as Props, SearchButtonDefaultProps } from './SearchButton.types';\nimport { FormButton } from '../../FormCommon';\n\nconst SearchButton: React.FC<Props> = ({ children, className, sx: initSx, startIcon, endIcon, icon, ...props }) => {\n /********************************************************************************************************************\n * Memo\n * ******************************************************************************************************************/\n\n const sx = useMemo(\n () => ({ minWidth: 0, px: !startIcon && !endIcon && !icon ? 1.2 : 1.7, ...initSx }),\n [endIcon, icon, initSx, startIcon]\n );\n\n /********************************************************************************************************************\n * Render\n * ******************************************************************************************************************/\n\n return (\n <FormButton\n className={classNames(className, 'SearchButton')}\n size='medium'\n sx={sx}\n fullWidth={false}\n startIcon={startIcon}\n endIcon={endIcon}\n icon={icon}\n {...props}\n >\n {children}\n </FormButton>\n );\n};\n\nSearchButton.defaultProps = SearchButtonDefaultProps;\n\nexport default SearchButton;\n","import { FormButtonProps } from '../../FormCommon';\nimport { ReactNode } from 'react';\n\nexport interface SearchMenuButtonProps extends Omit<FormButtonProps, 'fullWidth' | 'endIcon' | 'onClick'> {\n menuList: ReactNode;\n placement?:\n | 'top'\n | 'top-left'\n | 'top-right'\n | 'left'\n | 'left-top'\n | 'left-bottom'\n | 'right'\n | 'right-top'\n | 'right-bottom'\n | 'bottom'\n | 'bottom-left'\n | 'bottom-right';\n}\n\nexport const SearchMenuButtonDefaultProps = {};\n","import React, { useCallback, useId, useMemo, useState } from 'react';\nimport classNames from 'classnames';\nimport { SearchMenuButtonProps as Props, SearchMenuButtonDefaultProps } from './SearchMenuButton.types';\nimport { FormButton } from '../../FormCommon';\nimport { Menu, PopoverOrigin } from '@mui/material';\n\nconst SearchMenuButton: React.FC<Props> = ({\n children,\n className,\n sx: initSx,\n menuList,\n startIcon,\n icon,\n placement,\n ...props\n}) => {\n /********************************************************************************************************************\n * ID\n * ******************************************************************************************************************/\n\n const buttonId = useId();\n const menuId = useId();\n\n /********************************************************************************************************************\n * State\n * ******************************************************************************************************************/\n\n const [anchorEl, setAnchorEl] = useState<HTMLElement | null>(null);\n const [endIcon, setEndIcon] = useState('ArrowDropDown');\n\n /********************************************************************************************************************\n * Event Handler\n * ******************************************************************************************************************/\n\n const handleClick = useCallback((e: React.MouseEvent<HTMLButtonElement>) => {\n setAnchorEl(e.currentTarget);\n setEndIcon('ArrowDropUp');\n }, []);\n\n const handleClose = useCallback(() => {\n setAnchorEl(null);\n setEndIcon('ArrowDropDown');\n }, []);\n\n /********************************************************************************************************************\n * Memo\n * ******************************************************************************************************************/\n\n const open = useMemo(() => !!anchorEl, [anchorEl]);\n\n const sx = useMemo(\n () => ({ minWidth: 0, px: !startIcon && !endIcon && !icon ? 1.2 : 1.7, ...initSx }),\n [endIcon, icon, initSx, startIcon]\n );\n\n const anchorOrigin = useMemo((): PopoverOrigin => {\n switch (placement || 'bottom') {\n case 'bottom':\n return { vertical: 'bottom', horizontal: 'center' };\n case 'bottom-left':\n return { vertical: 'bottom', horizontal: 'left' };\n case 'bottom-right':\n return { vertical: 'bottom', horizontal: 'right' };\n case 'top':\n return { vertical: 'top', horizontal: 'center' };\n case 'top-left':\n return { vertical: 'top', horizontal: 'left' };\n case 'top-right':\n return { vertical: 'top', horizontal: 'right' };\n case 'left':\n return { vertical: 'center', horizontal: 'left' };\n case 'left-top':\n return { vertical: 'top', horizontal: 'left' };\n case 'left-bottom':\n return { vertical: 'bottom', horizontal: 'left' };\n case 'right':\n return { vertical: 'center', horizontal: 'right' };\n case 'right-top':\n return { vertical: 'top', horizontal: 'right' };\n case 'right-bottom':\n return { vertical: 'bottom', horizontal: 'right' };\n }\n }, [placement]);\n\n const transformOrigin = useMemo((): PopoverOrigin => {\n switch (placement || 'bottom') {\n case 'bottom':\n return { vertical: 'top', horizontal: 'center' };\n case 'bottom-left':\n return { vertical: 'top', horizontal: 'left' };\n case 'bottom-right':\n return { vertical: 'top', horizontal: 'right' };\n case 'top':\n return { vertical: 'bottom', horizontal: 'center' };\n case 'top-left':\n return { vertical: 'bottom', horizontal: 'left' };\n case 'top-right':\n return { vertical: 'bottom', horizontal: 'right' };\n case 'left':\n return { vertical: 'center', horizontal: 'right' };\n case 'left-top':\n return { vertical: 'top', horizontal: 'right' };\n case 'left-bottom':\n return { vertical: 'bottom', horizontal: 'right' };\n case 'right':\n return { vertical: 'center', horizontal: 'left' };\n case 'right-top':\n return { vertical: 'top', horizontal: 'left' };\n case 'right-bottom':\n return { vertical: 'bottom', horizontal: 'left' };\n }\n }, [placement]);\n\n /********************************************************************************************************************\n * Render\n * ******************************************************************************************************************/\n\n return (\n <>\n <FormButton\n className={classNames(className, 'SearchMenuButton')}\n size='medium'\n sx={sx}\n fullWidth={false}\n startIcon={startIcon}\n icon={icon}\n {...props}\n id={buttonId}\n aria-controls={open ? menuId : undefined}\n aria-haspopup='true'\n aria-expanded={open ? 'true' : undefined}\n endIcon={endIcon}\n onClick={handleClick}\n >\n {children}\n </FormButton>\n <Menu\n id={menuId}\n aria-labelledby={buttonId}\n anchorEl={anchorEl}\n open={open}\n onClose={handleClose}\n onClick={handleClose}\n anchorOrigin={anchorOrigin}\n transformOrigin={transformOrigin}\n >\n {menuList}\n </Menu>\n </>\n );\n};\n\nSearchMenuButton.defaultProps = SearchMenuButtonDefaultProps;\n\nexport default SearchMenuButton;\n"],"names":["createContext","useContext","useMemo","useRef","useState","useCallback","useLayoutEffect","Box","Icon","Button","styled","templateObject_1","templateObject_2","useTheme","InputLabel","Grid","StyledWrapGrid","useAutoUpdateState","useEffect","Collapse","FormHelperText","useId","useResizeDetector","useFirstSkipEffect","InputAdornment","IconButton","TextField","Chip","Autocomplete","autoDash","NumericFormat","CircularProgress","MenuItem","Checkbox","FormControl","Input","OutlinedInput","FilledInput","FormControlLabel","CheckBox","CheckBoxOutlineBlank","Typography","RadioGroup","Radio","RadioButtonUnchecked","RadioButtonChecked","ToggleButton","ToggleButtonGroup","Rating","Skeleton","Editor","darken","YEARS","i","MONTHS","DEFAULT_MINUTES","DEFAULT_HOURS","DEFAULT_SECONDS","PickersDay","StaticDatePicker","Tooltip","tooltipClasses","IconText","LocalizationProvider","AdapterDayjs","ClickAwayListener","DesktopDatePicker","StaticDateTimePicker","DesktopDateTimePicker","Dialog","DialogTitle","DialogContent","DialogActions","StyledContainer","StyledButton","_lastCloseTime","StyledTitleContainer","templateObject_3","templateObject_4","StyledActionContainer","templateObject_5","StyledActionButton","DEFAULT_VALUE","StyledIconButton","StyledYearMonth","StyledYearMonthError","DEFAULT_FORMAT","Switch","Paper","Props","Menu"],"mappings":"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","x_google_ignoreList":[35]}
|