@pdg/react-form 1.0.4 → 1.0.6
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/README.md +1 -1
- package/dist/@private/PrivateAlertDialog/PrivateAlertDialog.types.d.ts +2 -1
- package/dist/FormItemCustom/FormImageFile/FormImageFile.types.d.ts +2 -2
- package/dist/index.esm.js +27 -24
- package/dist/index.esm.js.map +1 -1
- package/dist/index.js +26 -23
- package/dist/index.js.map +1 -1
- package/package.json +1 -1
package/README.md
CHANGED
|
@@ -4,5 +4,5 @@ React Form
|
|
|
4
4
|
|
|
5
5
|
## 설치
|
|
6
6
|
```
|
|
7
|
-
npm install -D @pdg/react-form @mui/material @mui/icons-material @emotion/react @emotion/styled @mui/x-date-pickers dayjs
|
|
7
|
+
npm install -D @pdg/react-form @pdg/react-dialog @mui/material @mui/icons-material @emotion/react @emotion/styled @mui/x-date-pickers dayjs
|
|
8
8
|
```
|
|
@@ -1,8 +1,9 @@
|
|
|
1
1
|
import { ReactNode } from 'react';
|
|
2
2
|
export interface PrivateAlertDialogProps {
|
|
3
|
+
color?: 'primary' | 'secondary' | 'error' | 'info' | 'success' | 'warning';
|
|
3
4
|
title?: ReactNode;
|
|
4
5
|
content?: ReactNode;
|
|
5
6
|
open?: boolean;
|
|
6
7
|
onClose?: () => void;
|
|
7
8
|
}
|
|
8
|
-
export declare const PrivateAlertDialogDefaultProps:
|
|
9
|
+
export declare const PrivateAlertDialogDefaultProps: Pick<PrivateAlertDialogProps, 'color'>;
|
|
@@ -1,10 +1,10 @@
|
|
|
1
1
|
import { FormFileCommands, FormFileProps } from '../FormFile';
|
|
2
|
-
export interface
|
|
2
|
+
export interface FormImageFileImageSize {
|
|
3
3
|
width: number;
|
|
4
4
|
height: number;
|
|
5
5
|
}
|
|
6
6
|
export interface FormImageFileProps extends Omit<FormFileProps, 'preview'> {
|
|
7
|
-
|
|
7
|
+
imageSize?: FormImageFileImageSize | FormImageFileImageSize[];
|
|
8
8
|
preview?: boolean;
|
|
9
9
|
previewMaxHeight?: number;
|
|
10
10
|
}
|
package/dist/index.esm.js
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import*as React from'react';import React__default,{useRef,useEffect,useState,useCallback,useLayoutEffect,createContext,useContext,cloneElement,isValidElement,createRef,PureComponent,useId}from'react';import {Box,Grid,Icon as Icon$1,Button,InputLabel,styled,FormHelperText,InputAdornment,IconButton,TextField,Chip,Autocomplete,CircularProgress,MenuItem,Checkbox,FormControl,Input,OutlinedInput,FilledInput,FormControlLabel,Typography,useTheme,RadioGroup,Radio,ToggleButtonGroup,ToggleButton,Rating,Skeleton,darken,Tooltip,tooltipClasses,ClickAwayListener,Dialog,DialogTitle,DialogContent,DialogActions,
|
|
1
|
+
import*as React from'react';import React__default,{useRef,useEffect,useState,useCallback,useLayoutEffect,createContext,useContext,cloneElement,isValidElement,createRef,PureComponent,useId}from'react';import {Box,Grid,Icon as Icon$1,Button,InputLabel,styled,FormHelperText,InputAdornment,IconButton,TextField,Chip,Autocomplete,CircularProgress,MenuItem,Checkbox,FormControl,Input,OutlinedInput,FilledInput,FormControlLabel,Typography,useTheme,RadioGroup,Radio,ToggleButtonGroup,ToggleButton,Rating,Skeleton,darken,Tooltip,tooltipClasses,ClickAwayListener,Dialog,DialogTitle,DialogContent,DialogActions,Paper}from'@mui/material';import dayjs from'dayjs';import {findDOMNode}from'react-dom';import {CheckBox,CheckBoxOutlineBlank,RadioButtonUnchecked,RadioButtonChecked}from'@mui/icons-material';import CircularProgress$1 from'@mui/material/CircularProgress';import {AdapterDayjs}from'@mui/x-date-pickers/AdapterDayjs';import {PickersDay,StaticDatePicker,LocalizationProvider,DesktopDatePicker}from'@mui/x-date-pickers';import dayjsLocale from'dayjs/locale/ko';import dayjsIsSameOrAfter from'dayjs/plugin/isSameOrAfter';import dayjsIsSameOrBefore from'dayjs/plugin/isSameOrBefore';import dayjsIsBetween from'dayjs/plugin/isBetween';/******************************************************************************
|
|
2
2
|
Copyright (c) Microsoft Corporation.
|
|
3
3
|
|
|
4
4
|
Permission to use, copy, modify, and/or distribute this software for any
|
|
@@ -14857,12 +14857,14 @@ styleInject(css_248z$5);var PrivateDatePicker = React__default.forwardRef(functi
|
|
|
14857
14857
|
!formColWithHelperText && helperText && (React__default.createElement(FormHelperText, { error: error, style: { marginLeft: variant === 'standard' ? 0 : 14 } }, helperText))))));
|
|
14858
14858
|
});
|
|
14859
14859
|
PrivateDatePicker.displayName = 'PrivateDatePicker';
|
|
14860
|
-
PrivateDatePicker.defaultProps = PrivateDatePickerDefaultProps;var PrivateAlertDialogDefaultProps = {
|
|
14861
|
-
|
|
14860
|
+
PrivateDatePicker.defaultProps = PrivateDatePickerDefaultProps;var PrivateAlertDialogDefaultProps = {
|
|
14861
|
+
color: 'primary',
|
|
14862
|
+
};var PrivateAlertDialog = function (_a) {
|
|
14863
|
+
var color = _a.color, open = _a.open, title = _a.title, content = _a.content, onClose = _a.onClose;
|
|
14862
14864
|
var handleClose = useCallback(function () {
|
|
14863
14865
|
onClose && onClose();
|
|
14864
14866
|
}, [onClose]);
|
|
14865
|
-
return (React__default.createElement(Dialog, { open: !!open, onClose: handleClose, "aria-labelledby": 'alert-dialog-title' },
|
|
14867
|
+
return (React__default.createElement(Dialog, { className: "color-".concat(color), open: !!open, onClose: handleClose, "aria-labelledby": 'alert-dialog-title' },
|
|
14866
14868
|
title && React__default.createElement(DialogTitle, { id: 'alert-dialog-title' }, title),
|
|
14867
14869
|
React__default.createElement(DialogContent, null, content),
|
|
14868
14870
|
React__default.createElement(DialogActions, null,
|
|
@@ -15954,7 +15956,7 @@ FormDateRangePicker.defaultProps = FormDateRangePickerDefaultProps;var FormFileD
|
|
|
15954
15956
|
onClose && onClose();
|
|
15955
15957
|
}, [onCancel, onClose]);
|
|
15956
15958
|
// Render ----------------------------------------------------------------------------------------------------------
|
|
15957
|
-
return (React__default.createElement(Dialog, { open: !!open, maxWidth: 'sm', fullWidth: true, onClose: function (e, reason) {
|
|
15959
|
+
return (React__default.createElement(Dialog, { className: 'color-primary', open: !!open, maxWidth: 'sm', fullWidth: true, onClose: function (e, reason) {
|
|
15958
15960
|
if (reason === 'backdropClick') {
|
|
15959
15961
|
if (empty$1(value)) {
|
|
15960
15962
|
onClose && onClose();
|
|
@@ -15963,13 +15965,14 @@ FormDateRangePicker.defaultProps = FormDateRangePickerDefaultProps;var FormFileD
|
|
|
15963
15965
|
} },
|
|
15964
15966
|
React__default.createElement(DialogTitle, null, "\uD30C\uC77C \uB9C1\uD06C"),
|
|
15965
15967
|
React__default.createElement(DialogContent, null,
|
|
15966
|
-
React__default.createElement(
|
|
15967
|
-
|
|
15968
|
-
|
|
15969
|
-
ref
|
|
15970
|
-
|
|
15971
|
-
|
|
15972
|
-
|
|
15968
|
+
React__default.createElement(Box, null,
|
|
15969
|
+
React__default.createElement("div", null, "\uD30C\uC77C\uC758 \uB9C1\uD06C URL\uC744 \uC785\uB825\uD574\uC8FC\uC138\uC694."),
|
|
15970
|
+
React__default.createElement(FormUrl, { ref: function (ref) {
|
|
15971
|
+
if (inputRef.current == null && ref !== null) {
|
|
15972
|
+
ref.focus();
|
|
15973
|
+
}
|
|
15974
|
+
inputRef.current = ref;
|
|
15975
|
+
}, name: 'form-file-link-url', label: '\uB9C1\uD06C URL', value: value, required: true, style: { marginTop: 15 }, onChange: setValue }))),
|
|
15973
15976
|
React__default.createElement(DialogActions, null,
|
|
15974
15977
|
React__default.createElement(Button, { variant: 'text', onClick: handleCancel }, "\uCDE8\uC18C"),
|
|
15975
15978
|
React__default.createElement(Button, { variant: 'text', onClick: handleSubmit }, "\uD655\uC778"))));
|
|
@@ -16013,9 +16016,7 @@ styleInject(css_248z$1);var FormFile = React__default.forwardRef(function (_a, r
|
|
|
16013
16016
|
var _e = useAutoUpdateState$1(initHelperText), helperText = _e[0], setHelperText = _e[1];
|
|
16014
16017
|
var _f = useAutoUpdateState$1(initDisabled), disabled = _f[0], setDisabled = _f[1];
|
|
16015
16018
|
var _g = useState(false), isOpenLinkDialog = _g[0], setIsOpenLinkDialog = _g[1];
|
|
16016
|
-
var _h = useState({
|
|
16017
|
-
open: false,
|
|
16018
|
-
}), alertDialogProps = _h[0], setAlertDialogProps = _h[1];
|
|
16019
|
+
var _h = useState({ open: false }), alertDialogProps = _h[0], setAlertDialogProps = _h[1];
|
|
16019
16020
|
var label = useAutoUpdateState$1(useCallback(function () {
|
|
16020
16021
|
return labelIcon ? (React__default.createElement(React__default.Fragment, null,
|
|
16021
16022
|
React__default.createElement(FormIcon, { style: { verticalAlign: 'middle', marginRight: 4 } }, labelIcon),
|
|
@@ -16130,13 +16131,14 @@ styleInject(css_248z$1);var FormFile = React__default.forwardRef(function (_a, r
|
|
|
16130
16131
|
if (file.size > maxFileSize) {
|
|
16131
16132
|
setAlertDialogProps({
|
|
16132
16133
|
open: true,
|
|
16134
|
+
color: 'error',
|
|
16133
16135
|
title: '파일 사이즈',
|
|
16134
16136
|
content: (React__default.createElement("div", null,
|
|
16135
16137
|
React__default.createElement("div", null,
|
|
16136
16138
|
React__default.createElement(Typography, { color: 'error' },
|
|
16137
16139
|
getFileSizeText(maxFileSize),
|
|
16138
16140
|
" \uC774\uD558\uC758 \uD30C\uC77C\uB9CC \uC0AC\uC6A9 \uAC00\uB2A5\uD569\uB2C8\uB2E4.")),
|
|
16139
|
-
React__default.createElement("div",
|
|
16141
|
+
React__default.createElement("div", { style: { opacity: 0.7 } },
|
|
16140
16142
|
"(\uC120\uD0DD\uD55C \uD30C\uC77C \uC0AC\uC774\uC988 : ",
|
|
16141
16143
|
getFileSizeText(file.size),
|
|
16142
16144
|
")"))),
|
|
@@ -16247,7 +16249,7 @@ styleInject(css_248z$1);var FormFile = React__default.forwardRef(function (_a, r
|
|
|
16247
16249
|
FormFile.displayName = 'FormFile';
|
|
16248
16250
|
FormFile.defaultProps = FormFileDefaultProps;var FormImageFileDefaultProps = __assign$4(__assign$4({}, FormFileDefaultProps), { accept: '.jpg,.jpeg,.png' });var css_248z = ".FormImageFile .preview-img {\n max-width: 100%;\n}\n.FormImageFile:not(.hide-file-name):not(.variant-standard) .preview-img {\n padding-right: 14px;\n}";
|
|
16249
16251
|
styleInject(css_248z);var FormImageFile = React__default.forwardRef(function (_a, ref) {
|
|
16250
|
-
var className = _a.className,
|
|
16252
|
+
var className = _a.className, imageSize = _a.imageSize, preview = _a.preview, previewMaxHeight = _a.previewMaxHeight, initValue = _a.value, onChange = _a.onChange, onFile = _a.onFile, onLink = _a.onLink, props = __rest$2(_a, ["className", "imageSize", "preview", "previewMaxHeight", "value", "onChange", "onFile", "onLink"]);
|
|
16251
16253
|
var _b = useAutoUpdateState$1(initValue), value = _b[0], setValue = _b[1];
|
|
16252
16254
|
var _c = useState(), previewNode = _c[0], setPreviewNode = _c[1];
|
|
16253
16255
|
var _d = useState({
|
|
@@ -16265,7 +16267,7 @@ styleInject(css_248z);var FormImageFile = React__default.forwardRef(function (_a
|
|
|
16265
16267
|
}, [value, preview, previewMaxHeight]);
|
|
16266
16268
|
// Function --------------------------------------------------------------------------------------------------------
|
|
16267
16269
|
var imageSizeCheck = useCallback(function (file) {
|
|
16268
|
-
if (
|
|
16270
|
+
if (imageSize && urlKit) {
|
|
16269
16271
|
return new Promise(function (resolve, reject) {
|
|
16270
16272
|
var img = new Image();
|
|
16271
16273
|
img.onload = function () {
|
|
@@ -16274,8 +16276,8 @@ styleInject(css_248z);var FormImageFile = React__default.forwardRef(function (_a
|
|
|
16274
16276
|
urlKit.revokeObjectURL(img.src);
|
|
16275
16277
|
var sizeOk = false;
|
|
16276
16278
|
var sizeText = '';
|
|
16277
|
-
if (Array.isArray(
|
|
16278
|
-
|
|
16279
|
+
if (Array.isArray(imageSize)) {
|
|
16280
|
+
imageSize.forEach(function (a) {
|
|
16279
16281
|
if (width === a.width && height === a.height) {
|
|
16280
16282
|
sizeOk = true;
|
|
16281
16283
|
}
|
|
@@ -16285,8 +16287,8 @@ styleInject(css_248z);var FormImageFile = React__default.forwardRef(function (_a
|
|
|
16285
16287
|
});
|
|
16286
16288
|
}
|
|
16287
16289
|
else {
|
|
16288
|
-
sizeOk = width ===
|
|
16289
|
-
sizeText = "".concat(
|
|
16290
|
+
sizeOk = width === imageSize.width && height === imageSize.height;
|
|
16291
|
+
sizeText = "".concat(imageSize.width, "*").concat(imageSize.height);
|
|
16290
16292
|
}
|
|
16291
16293
|
if (sizeOk) {
|
|
16292
16294
|
resolve();
|
|
@@ -16294,13 +16296,14 @@ styleInject(css_248z);var FormImageFile = React__default.forwardRef(function (_a
|
|
|
16294
16296
|
else {
|
|
16295
16297
|
setAlertDialogProps({
|
|
16296
16298
|
open: true,
|
|
16299
|
+
color: 'error',
|
|
16297
16300
|
title: '이미지 사이즈',
|
|
16298
16301
|
content: (React__default.createElement(React__default.Fragment, null,
|
|
16299
16302
|
React__default.createElement("div", null,
|
|
16300
16303
|
React__default.createElement(Typography, { color: 'error' },
|
|
16301
16304
|
sizeText,
|
|
16302
16305
|
" \uC0AC\uC774\uC988\uC758 \uC774\uBBF8\uC9C0\uB9CC \uC0AC\uC6A9 \uAC00\uB2A5\uD569\uB2C8\uB2E4.")),
|
|
16303
|
-
React__default.createElement("div",
|
|
16306
|
+
React__default.createElement("div", { style: { opacity: 0.7 } },
|
|
16304
16307
|
"(\uC120\uD0DD\uD55C \uC774\uBBF8\uC9C0 \uC0AC\uC774\uC988 : ",
|
|
16305
16308
|
width,
|
|
16306
16309
|
"*",
|
|
@@ -16321,7 +16324,7 @@ styleInject(css_248z);var FormImageFile = React__default.forwardRef(function (_a
|
|
|
16321
16324
|
});
|
|
16322
16325
|
}
|
|
16323
16326
|
return Promise.resolve();
|
|
16324
|
-
}, [urlKit,
|
|
16327
|
+
}, [urlKit, imageSize]);
|
|
16325
16328
|
// Event Handler ---------------------------------------------------------------------------------------------------
|
|
16326
16329
|
var handleChange = useCallback(function (value) {
|
|
16327
16330
|
setValue(value);
|