@yamada-ui/editable 1.0.45-next-20241005220055 → 1.0.45-next-20241008193728
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/{chunk-IZRLAY3V.mjs → chunk-PCLA7CWV.mjs} +79 -79
- package/dist/chunk-PCLA7CWV.mjs.map +1 -0
- package/dist/editable.d.mts +35 -35
- package/dist/editable.d.ts +35 -35
- package/dist/editable.js +70 -70
- package/dist/editable.js.map +1 -1
- package/dist/editable.mjs +1 -1
- package/dist/index.js +70 -70
- package/dist/index.js.map +1 -1
- package/dist/index.mjs +1 -1
- package/package.json +6 -6
- package/dist/chunk-IZRLAY3V.mjs.map +0 -1
@@ -2,10 +2,10 @@
|
|
2
2
|
|
3
3
|
// src/editable.tsx
|
4
4
|
import {
|
5
|
-
ui,
|
6
5
|
forwardRef,
|
7
|
-
|
8
|
-
|
6
|
+
omitThemeProps,
|
7
|
+
ui,
|
8
|
+
useComponentMultiStyle
|
9
9
|
} from "@yamada-ui/core";
|
10
10
|
import {
|
11
11
|
formControlProperties,
|
@@ -16,35 +16,35 @@ import { useFocusOnPointerDown } from "@yamada-ui/use-focus";
|
|
16
16
|
import {
|
17
17
|
createContext,
|
18
18
|
cx,
|
19
|
+
handlerAll,
|
20
|
+
isContains,
|
21
|
+
mergeRefs,
|
22
|
+
pickObject,
|
19
23
|
runIfFunc,
|
20
24
|
useCallbackRef,
|
21
25
|
useSafeLayoutEffect,
|
22
|
-
useUpdateEffect
|
23
|
-
isContains,
|
24
|
-
handlerAll,
|
25
|
-
mergeRefs,
|
26
|
-
pickObject
|
26
|
+
useUpdateEffect
|
27
27
|
} from "@yamada-ui/utils";
|
28
28
|
import { useCallback, useEffect, useRef, useState } from "react";
|
29
29
|
import { jsx } from "react/jsx-runtime";
|
30
30
|
var useEditable = (props) => {
|
31
31
|
const {
|
32
32
|
id,
|
33
|
+
defaultValue,
|
34
|
+
isPreviewFocusable = true,
|
33
35
|
placeholder,
|
36
|
+
selectAllOnFocus = true,
|
37
|
+
startWithEditView,
|
38
|
+
submitOnBlur = true,
|
34
39
|
value: valueProp,
|
35
|
-
onChange: onChangeProp,
|
36
40
|
onCancel: onCancelProp,
|
37
|
-
|
41
|
+
onChange: onChangeProp,
|
38
42
|
onEdit: onEditProp,
|
39
|
-
|
40
|
-
startWithEditView,
|
41
|
-
isPreviewFocusable = true,
|
42
|
-
submitOnBlur = true,
|
43
|
-
selectAllOnFocus = true,
|
43
|
+
onSubmit: onSubmitProp,
|
44
44
|
...rest
|
45
45
|
} = useFormControlProps(props);
|
46
46
|
const onEditRef = useCallbackRef(onEditProp);
|
47
|
-
const {
|
47
|
+
const { disabled, readOnly, required, ...formControlProps } = pickObject(
|
48
48
|
rest,
|
49
49
|
formControlProperties
|
50
50
|
);
|
@@ -66,8 +66,8 @@ var useEditable = (props) => {
|
|
66
66
|
const submitRef = useRef(null);
|
67
67
|
useFocusOnPointerDown({
|
68
68
|
ref: inputRef,
|
69
|
-
|
70
|
-
|
69
|
+
elements: [cancelRef, submitRef],
|
70
|
+
enabled: isEditing
|
71
71
|
});
|
72
72
|
useSafeLayoutEffect(() => {
|
73
73
|
var _a, _b;
|
@@ -116,7 +116,7 @@ var useEditable = (props) => {
|
|
116
116
|
if (ev.key === "Escape") {
|
117
117
|
onCancel();
|
118
118
|
} else {
|
119
|
-
const {
|
119
|
+
const { metaKey, shiftKey } = ev;
|
120
120
|
if (!shiftKey && !metaKey) onSubmit();
|
121
121
|
}
|
122
122
|
},
|
@@ -152,9 +152,9 @@ var useEditable = (props) => {
|
|
152
152
|
(props2 = {}, ref = null) => ({
|
153
153
|
...props2,
|
154
154
|
ref: mergeRefs(ref, previewRef),
|
155
|
+
children: isValueEmpty ? placeholder : value,
|
155
156
|
hidden: isEditing,
|
156
157
|
tabIndex: isInteractive && isPreviewFocusable ? 0 : void 0,
|
157
|
-
children: isValueEmpty ? placeholder : value,
|
158
158
|
onFocus: handlerAll(props2.onFocus, onEdit, onUpdatePrevValue)
|
159
159
|
}),
|
160
160
|
[
|
@@ -172,18 +172,18 @@ var useEditable = (props) => {
|
|
172
172
|
(props2 = {}, ref = null) => ({
|
173
173
|
...formControlProps,
|
174
174
|
...props2,
|
175
|
-
ref: mergeRefs(ref, inputRef),
|
176
175
|
id,
|
177
|
-
|
178
|
-
hidden: !isEditing,
|
179
|
-
value,
|
180
|
-
required,
|
176
|
+
ref: mergeRefs(ref, inputRef),
|
181
177
|
disabled,
|
178
|
+
hidden: !isEditing,
|
179
|
+
placeholder,
|
182
180
|
readOnly,
|
181
|
+
required,
|
182
|
+
value,
|
183
183
|
onBlur: handlerAll(props2.onBlur, onBlur),
|
184
184
|
onChange: handlerAll(props2.onChange, onChange),
|
185
|
-
|
186
|
-
|
185
|
+
onFocus: handlerAll(props2.onFocus, onUpdatePrevValue),
|
186
|
+
onKeyDown: handlerAll(props2.onKeyDown, onKeyDown)
|
187
187
|
}),
|
188
188
|
[
|
189
189
|
disabled,
|
@@ -204,18 +204,18 @@ var useEditable = (props) => {
|
|
204
204
|
(props2 = {}, ref = null) => ({
|
205
205
|
...formControlProps,
|
206
206
|
...props2,
|
207
|
-
ref: mergeRefs(ref, inputRef),
|
208
207
|
id,
|
209
|
-
|
210
|
-
hidden: !isEditing,
|
211
|
-
value,
|
212
|
-
required,
|
208
|
+
ref: mergeRefs(ref, inputRef),
|
213
209
|
disabled,
|
210
|
+
hidden: !isEditing,
|
211
|
+
placeholder,
|
214
212
|
readOnly,
|
213
|
+
required,
|
214
|
+
value,
|
215
215
|
onBlur: handlerAll(props2.onBlur, onBlur),
|
216
216
|
onChange: handlerAll(props2.onChange, onChange),
|
217
|
-
|
218
|
-
|
217
|
+
onFocus: handlerAll(props2.onFocus, onUpdatePrevValue),
|
218
|
+
onKeyDown: handlerAll(props2.onKeyDown, onKeyDownWithoutSubmit)
|
219
219
|
}),
|
220
220
|
[
|
221
221
|
disabled,
|
@@ -271,85 +271,85 @@ var useEditable = (props) => {
|
|
271
271
|
return {
|
272
272
|
isEditing,
|
273
273
|
value,
|
274
|
-
|
275
|
-
onCancel,
|
276
|
-
onSubmit,
|
277
|
-
getPreviewProps,
|
278
|
-
getInputProps,
|
279
|
-
getTextareaProps,
|
274
|
+
getCancelProps,
|
280
275
|
getEditProps,
|
276
|
+
getInputProps,
|
277
|
+
getPreviewProps,
|
281
278
|
getSubmitProps,
|
282
|
-
|
279
|
+
getTextareaProps,
|
280
|
+
onCancel,
|
281
|
+
onEdit,
|
282
|
+
onSubmit
|
283
283
|
};
|
284
284
|
};
|
285
285
|
var useEditableControl = () => {
|
286
|
-
const { isEditing,
|
287
|
-
return { isEditing,
|
286
|
+
const { isEditing, getCancelProps, getEditProps, getSubmitProps } = useEditableContext();
|
287
|
+
return { isEditing, getCancelProps, getEditProps, getSubmitProps };
|
288
288
|
};
|
289
289
|
var [EditableProvider, useEditableContext] = createContext({
|
290
290
|
name: "EditableContext",
|
291
291
|
errorMessage: "useEditableContext: context is undefined. Seems you forgot to wrap the editable components in `<Editable />`"
|
292
292
|
});
|
293
293
|
var Editable = forwardRef(
|
294
|
-
({
|
294
|
+
({ errorBorderColor, focusBorderColor, ...props }, ref) => {
|
295
295
|
const [styles, mergedProps] = useComponentMultiStyle("Editable", {
|
296
|
-
focusBorderColor,
|
297
296
|
errorBorderColor,
|
297
|
+
focusBorderColor,
|
298
298
|
...props
|
299
299
|
});
|
300
300
|
const {
|
301
301
|
className,
|
302
302
|
children,
|
303
|
+
defaultValue,
|
304
|
+
isDisabled,
|
303
305
|
isInvalid,
|
306
|
+
isPreviewFocusable,
|
304
307
|
isReadOnly,
|
305
308
|
isRequired,
|
306
|
-
isDisabled,
|
307
309
|
placeholder,
|
308
|
-
|
309
|
-
defaultValue,
|
310
|
+
selectAllOnFocus,
|
310
311
|
startWithEditView,
|
311
|
-
isPreviewFocusable,
|
312
312
|
submitOnBlur,
|
313
|
-
|
314
|
-
onChange,
|
313
|
+
value,
|
315
314
|
onCancel: onCancelProp,
|
316
|
-
|
315
|
+
onChange,
|
317
316
|
onEdit: onEditProp,
|
317
|
+
onSubmit: onSubmitProp,
|
318
318
|
...rest
|
319
319
|
} = omitThemeProps(mergedProps);
|
320
320
|
const {
|
321
321
|
isEditing,
|
322
|
-
getPreviewProps,
|
323
|
-
getInputProps,
|
324
|
-
getTextareaProps,
|
325
|
-
getEditProps,
|
326
322
|
getCancelProps,
|
323
|
+
getEditProps,
|
324
|
+
getInputProps,
|
325
|
+
getPreviewProps,
|
327
326
|
getSubmitProps,
|
328
|
-
|
327
|
+
getTextareaProps,
|
329
328
|
onCancel,
|
330
|
-
onEdit
|
329
|
+
onEdit,
|
330
|
+
onSubmit
|
331
331
|
} = useEditable({
|
332
|
+
defaultValue,
|
333
|
+
isDisabled,
|
332
334
|
isInvalid,
|
335
|
+
isPreviewFocusable,
|
333
336
|
isReadOnly,
|
334
337
|
isRequired,
|
335
|
-
isDisabled,
|
336
338
|
placeholder,
|
337
|
-
|
338
|
-
defaultValue,
|
339
|
+
selectAllOnFocus,
|
339
340
|
startWithEditView,
|
340
|
-
isPreviewFocusable,
|
341
341
|
submitOnBlur,
|
342
|
-
|
343
|
-
onChange,
|
342
|
+
value,
|
344
343
|
onCancel: onCancelProp,
|
345
|
-
|
346
|
-
onEdit: onEditProp
|
344
|
+
onChange,
|
345
|
+
onEdit: onEditProp,
|
346
|
+
onSubmit: onSubmitProp
|
347
347
|
});
|
348
348
|
const cloneChildren = runIfFunc(children, {
|
349
349
|
isEditing,
|
350
|
-
onSubmit,
|
351
350
|
onCancel,
|
352
|
-
onEdit
|
351
|
+
onEdit,
|
352
|
+
onSubmit
|
353
353
|
});
|
354
354
|
const css = { ...styles.container };
|
355
355
|
return /* @__PURE__ */ jsx(
|
@@ -357,13 +357,13 @@ var Editable = forwardRef(
|
|
357
357
|
{
|
358
358
|
value: {
|
359
359
|
isEditing,
|
360
|
-
|
361
|
-
getInputProps,
|
362
|
-
getTextareaProps,
|
363
|
-
getEditProps,
|
360
|
+
styles,
|
364
361
|
getCancelProps,
|
362
|
+
getEditProps,
|
363
|
+
getInputProps,
|
364
|
+
getPreviewProps,
|
365
365
|
getSubmitProps,
|
366
|
-
|
366
|
+
getTextareaProps
|
367
367
|
},
|
368
368
|
children: /* @__PURE__ */ jsx(
|
369
369
|
ui.div,
|
@@ -385,12 +385,12 @@ var EditablePreview = forwardRef(
|
|
385
385
|
({ className, ...rest }, ref) => {
|
386
386
|
const { styles, getPreviewProps } = useEditableContext();
|
387
387
|
const css = {
|
388
|
+
bg: "transparent",
|
388
389
|
cursor: "text",
|
389
390
|
display: "inline-block",
|
390
391
|
fontSize: "inherit",
|
391
392
|
fontWeight: "inherit",
|
392
393
|
textAlign: "inherit",
|
393
|
-
bg: "transparent",
|
394
394
|
...styles.preview
|
395
395
|
};
|
396
396
|
return /* @__PURE__ */ jsx(
|
@@ -409,11 +409,11 @@ var EditableInput = forwardRef(
|
|
409
409
|
({ className, ...rest }, ref) => {
|
410
410
|
const { styles, getInputProps } = useEditableContext();
|
411
411
|
const css = {
|
412
|
-
|
412
|
+
bg: "transparent",
|
413
413
|
fontSize: "inherit",
|
414
414
|
fontWeight: "inherit",
|
415
|
+
outline: 0,
|
415
416
|
textAlign: "inherit",
|
416
|
-
bg: "transparent",
|
417
417
|
...styles.input
|
418
418
|
};
|
419
419
|
return /* @__PURE__ */ jsx(
|
@@ -432,11 +432,11 @@ var EditableTextarea = forwardRef(
|
|
432
432
|
({ className, ...rest }, ref) => {
|
433
433
|
const { styles, getTextareaProps } = useEditableContext();
|
434
434
|
const css = {
|
435
|
-
|
435
|
+
bg: "transparent",
|
436
436
|
fontSize: "inherit",
|
437
437
|
fontWeight: "inherit",
|
438
|
+
outline: 0,
|
438
439
|
textAlign: "inherit",
|
439
|
-
bg: "transparent",
|
440
440
|
...styles.textarea
|
441
441
|
};
|
442
442
|
return /* @__PURE__ */ jsx(
|
@@ -460,4 +460,4 @@ export {
|
|
460
460
|
EditableInput,
|
461
461
|
EditableTextarea
|
462
462
|
};
|
463
|
-
//# sourceMappingURL=chunk-
|
463
|
+
//# sourceMappingURL=chunk-PCLA7CWV.mjs.map
|
@@ -0,0 +1 @@
|
|
1
|
+
{"version":3,"sources":["../src/editable.tsx"],"sourcesContent":["import type {\n ColorModeToken,\n CSS,\n CSSUIObject,\n HTMLUIProps,\n PropGetter,\n ThemeProps,\n} from \"@yamada-ui/core\"\nimport type { FormControlOptions } from \"@yamada-ui/form-control\"\nimport type { ChangeEvent, FocusEvent, KeyboardEvent, ReactNode } from \"react\"\nimport {\n forwardRef,\n omitThemeProps,\n ui,\n useComponentMultiStyle,\n} from \"@yamada-ui/core\"\nimport {\n formControlProperties,\n useFormControlProps,\n} from \"@yamada-ui/form-control\"\nimport { useControllableState } from \"@yamada-ui/use-controllable-state\"\nimport { useFocusOnPointerDown } from \"@yamada-ui/use-focus\"\nimport {\n createContext,\n cx,\n handlerAll,\n isContains,\n mergeRefs,\n pickObject,\n runIfFunc,\n useCallbackRef,\n useSafeLayoutEffect,\n useUpdateEffect,\n} from \"@yamada-ui/utils\"\nimport { useCallback, useEffect, useRef, useState } from \"react\"\n\nexport interface UseEditableProps extends FormControlOptions {\n /**\n * The initial value of the Editable in both edit & preview mode.\n */\n defaultValue?: string\n /**\n * If `true`, the read only view, has a `tabIndex` set to `0`\n * so it can receive focus via the keyboard or click.\n *\n * @default true\n */\n isPreviewFocusable?: boolean\n /**\n * The placeholder text when the value is empty.\n */\n placeholder?: string\n /**\n * If `true`, the input's text will be highlighted on focus.\n *\n * @default true\n */\n selectAllOnFocus?: boolean\n /**\n * If `true`, the Editable will start with edit mode by default.\n */\n startWithEditView?: boolean\n /**\n * If `true`, it'll update the value onBlur and turn off the edit mode.\n *\n * @default true\n */\n submitOnBlur?: boolean\n /**\n * The value of the Editable in both edit & preview mode.\n */\n value?: string\n /**\n * Callback invoked when user cancels input with the `Esc` key.\n * It provides the last confirmed value as argument.\n */\n onCancel?: (preValue: string) => void\n /**\n * A callback invoked when user changes input.\n */\n onChange?: (value: string) => void\n /**\n * A callback invoked once the user enters edit mode.\n */\n onEdit?: () => void\n /**\n * A callback invoked when user confirms value with `enter` key or by blurring input.\n */\n onSubmit?: (value: string) => void\n}\n\nexport const useEditable = (props: UseEditableProps) => {\n const {\n id,\n defaultValue,\n isPreviewFocusable = true,\n placeholder,\n selectAllOnFocus = true,\n startWithEditView,\n submitOnBlur = true,\n value: valueProp,\n onCancel: onCancelProp,\n onChange: onChangeProp,\n onEdit: onEditProp,\n onSubmit: onSubmitProp,\n ...rest\n } = useFormControlProps(props)\n const onEditRef = useCallbackRef(onEditProp)\n const { disabled, readOnly, required, ...formControlProps } = pickObject(\n rest,\n formControlProperties,\n )\n\n const [isEditing, setIsEditing] = useState<boolean>(\n !!startWithEditView && !disabled,\n )\n\n const [value, setValue] = useControllableState({\n defaultValue: defaultValue || \"\",\n value: valueProp,\n onChange: onChangeProp,\n })\n\n const isInteractive = !isEditing && !disabled\n const isValueEmpty = value.length === 0\n\n const [prevValue, setPrevValue] = useState(value)\n\n const inputRef = useRef<HTMLInputElement | HTMLTextAreaElement>(null)\n const previewRef = useRef<HTMLElement>(null)\n const editRef = useRef<HTMLButtonElement>(null)\n const cancelRef = useRef<HTMLButtonElement>(null)\n const submitRef = useRef<HTMLButtonElement>(null)\n\n useFocusOnPointerDown({\n ref: inputRef,\n elements: [cancelRef, submitRef],\n enabled: isEditing,\n })\n\n useSafeLayoutEffect(() => {\n if (!isEditing) return\n\n inputRef.current?.focus()\n\n if (selectAllOnFocus) inputRef.current?.select()\n }, [])\n\n useUpdateEffect(() => {\n if (!isEditing) {\n editRef.current?.focus()\n\n return\n }\n\n inputRef.current?.focus()\n\n if (selectAllOnFocus) inputRef.current?.select()\n\n onEditRef()\n }, [isEditing, onEditRef, selectAllOnFocus])\n\n useEffect(() => {\n if (isEditing) return\n\n const el = inputRef.current\n const activeEl = el?.ownerDocument.activeElement\n\n if (activeEl === el) el?.blur()\n }, [isEditing])\n\n const onChange = useCallback(\n (ev: ChangeEvent<HTMLInputElement | HTMLTextAreaElement>) =>\n setValue(ev.currentTarget.value),\n [setValue],\n )\n\n const onUpdatePrevValue = useCallback(() => setPrevValue(value), [value])\n\n const onEdit = useCallback(() => {\n if (isInteractive) setIsEditing(true)\n }, [isInteractive])\n\n const onCancel = useCallback(() => {\n setIsEditing(false)\n setValue(prevValue)\n onCancelProp?.(prevValue)\n }, [prevValue, onCancelProp, setValue])\n\n const onSubmit = useCallback(() => {\n setIsEditing(false)\n setPrevValue(value)\n onSubmitProp?.(value)\n }, [onSubmitProp, value])\n\n const onKeyDown = useCallback(\n (ev: KeyboardEvent) => {\n if (ev.key !== \"Escape\" && ev.key !== \"Enter\") return\n\n ev.preventDefault()\n\n if (ev.key === \"Escape\") {\n onCancel()\n } else {\n const { metaKey, shiftKey } = ev\n\n if (!shiftKey && !metaKey) onSubmit()\n }\n },\n [onCancel, onSubmit],\n )\n\n const onKeyDownWithoutSubmit = useCallback(\n (ev: KeyboardEvent) => {\n if (ev.key !== \"Escape\") return\n\n ev.preventDefault()\n onCancel()\n },\n [onCancel],\n )\n\n const onBlur = useCallback(\n (ev: FocusEvent) => {\n if (!isEditing) return\n\n const ownerDocument = ev.currentTarget.ownerDocument\n const relatedTarget = (ev.relatedTarget ??\n ownerDocument.activeElement) as HTMLElement\n const targetIsCancel = isContains(cancelRef.current, relatedTarget)\n const targetIsSubmit = isContains(submitRef.current, relatedTarget)\n const isValidBlur = !targetIsCancel && !targetIsSubmit\n\n if (!isValidBlur) return\n\n if (submitOnBlur) {\n onSubmit()\n } else {\n onCancel()\n }\n },\n [isEditing, submitOnBlur, onSubmit, onCancel],\n )\n\n const getPreviewProps: PropGetter<\"span\"> = useCallback(\n (props = {}, ref = null) => ({\n ...props,\n ref: mergeRefs(ref, previewRef),\n children: isValueEmpty ? placeholder : value,\n hidden: isEditing,\n tabIndex: isInteractive && isPreviewFocusable ? 0 : undefined,\n onFocus: handlerAll(props.onFocus, onEdit, onUpdatePrevValue),\n }),\n [\n isEditing,\n isInteractive,\n isPreviewFocusable,\n isValueEmpty,\n onEdit,\n onUpdatePrevValue,\n placeholder,\n value,\n ],\n )\n\n const getInputProps: PropGetter<\"input\"> = useCallback(\n (props = {}, ref = null) => ({\n ...formControlProps,\n ...props,\n id,\n ref: mergeRefs(ref, inputRef),\n disabled,\n hidden: !isEditing,\n placeholder,\n readOnly,\n required,\n value,\n onBlur: handlerAll(props.onBlur, onBlur),\n onChange: handlerAll(props.onChange, onChange),\n onFocus: handlerAll(props.onFocus, onUpdatePrevValue),\n onKeyDown: handlerAll(props.onKeyDown, onKeyDown),\n }),\n [\n disabled,\n id,\n isEditing,\n onBlur,\n onChange,\n onKeyDown,\n onUpdatePrevValue,\n placeholder,\n readOnly,\n required,\n formControlProps,\n value,\n ],\n )\n\n const getTextareaProps: PropGetter<\"textarea\"> = useCallback(\n (props = {}, ref = null) => ({\n ...formControlProps,\n ...props,\n id,\n ref: mergeRefs(ref, inputRef),\n disabled,\n hidden: !isEditing,\n placeholder,\n readOnly,\n required,\n value,\n onBlur: handlerAll(props.onBlur, onBlur),\n onChange: handlerAll(props.onChange, onChange),\n onFocus: handlerAll(props.onFocus, onUpdatePrevValue),\n onKeyDown: handlerAll(props.onKeyDown, onKeyDownWithoutSubmit),\n }),\n [\n disabled,\n id,\n isEditing,\n onBlur,\n onChange,\n onKeyDownWithoutSubmit,\n onUpdatePrevValue,\n placeholder,\n readOnly,\n required,\n formControlProps,\n value,\n ],\n )\n\n const getEditProps: PropGetter<\"button\"> = useCallback(\n (props = {}, ref = null) => ({\n ...formControlProps,\n ...props,\n ref: mergeRefs(ref, editRef),\n type: \"button\",\n disabled,\n readOnly,\n onClick: handlerAll(props.onClick, onEdit),\n }),\n [disabled, onEdit, readOnly, formControlProps],\n )\n\n const getSubmitProps: PropGetter<\"button\"> = useCallback(\n (props = {}, ref = null) => ({\n ...formControlProps,\n ...props,\n ref: mergeRefs(submitRef, ref),\n type: \"button\",\n disabled,\n readOnly,\n onClick: handlerAll(props.onClick, onSubmit),\n }),\n [disabled, onSubmit, readOnly, formControlProps],\n )\n\n const getCancelProps: PropGetter<\"button\"> = useCallback(\n (props = {}, ref = null) => ({\n ...formControlProps,\n ...props,\n ref: mergeRefs(cancelRef, ref),\n type: \"button\",\n disabled,\n readOnly,\n onClick: handlerAll(props.onClick, onCancel),\n }),\n [disabled, onCancel, readOnly, formControlProps],\n )\n\n return {\n isEditing,\n value,\n getCancelProps,\n getEditProps,\n getInputProps,\n getPreviewProps,\n getSubmitProps,\n getTextareaProps,\n onCancel,\n onEdit,\n onSubmit,\n }\n}\n\nexport type UseEditableReturn = ReturnType<typeof useEditable>\n\nexport const useEditableControl = () => {\n const { isEditing, getCancelProps, getEditProps, getSubmitProps } =\n useEditableContext()\n\n return { isEditing, getCancelProps, getEditProps, getSubmitProps }\n}\n\ninterface EditableContext {\n isEditing: boolean\n styles: { [key: string]: CSSUIObject | undefined }\n getCancelProps: PropGetter<\"button\">\n getEditProps: PropGetter<\"button\">\n getInputProps: PropGetter<\"input\">\n getPreviewProps: PropGetter<\"span\">\n getSubmitProps: PropGetter<\"button\">\n getTextareaProps: PropGetter<\"textarea\">\n}\n\nconst [EditableProvider, useEditableContext] = createContext<EditableContext>({\n name: \"EditableContext\",\n errorMessage:\n \"useEditableContext: context is undefined. Seems you forgot to wrap the editable components in `<Editable />`\",\n})\n\ninterface EditableElementProps\n extends Pick<\n UseEditableReturn,\n \"isEditing\" | \"onCancel\" | \"onEdit\" | \"onSubmit\"\n > {}\n\ntype EditableElement = (props: EditableElementProps) => ReactNode\n\ninterface EditableOptions {\n children?: EditableElement | ReactNode\n /**\n * The border color when the input is invalid.\n */\n errorBorderColor?: ColorModeToken<CSS.Property.BorderColor, \"colors\">\n /**\n * The border color when the input is focused.\n */\n focusBorderColor?: ColorModeToken<CSS.Property.BorderColor, \"colors\">\n}\n\nexport interface EditableProps\n extends Omit<\n HTMLUIProps,\n \"children\" | \"defaultValue\" | \"onChange\" | \"onSubmit\" | \"value\"\n >,\n ThemeProps<\"Editable\">,\n UseEditableProps,\n EditableOptions {}\n\n/**\n * `Editable` is a component used to obtain inline editable text input.\n *\n * @see Docs https://yamada-ui.com/components/forms/editable\n */\nexport const Editable = forwardRef<EditableProps, \"div\">(\n ({ errorBorderColor, focusBorderColor, ...props }, ref) => {\n const [styles, mergedProps] = useComponentMultiStyle(\"Editable\", {\n errorBorderColor,\n focusBorderColor,\n ...props,\n })\n const {\n className,\n children,\n defaultValue,\n isDisabled,\n isInvalid,\n isPreviewFocusable,\n isReadOnly,\n isRequired,\n placeholder,\n selectAllOnFocus,\n startWithEditView,\n submitOnBlur,\n value,\n onCancel: onCancelProp,\n onChange,\n onEdit: onEditProp,\n onSubmit: onSubmitProp,\n ...rest\n } = omitThemeProps(mergedProps)\n const {\n isEditing,\n getCancelProps,\n getEditProps,\n getInputProps,\n getPreviewProps,\n getSubmitProps,\n getTextareaProps,\n onCancel,\n onEdit,\n onSubmit,\n } = useEditable({\n defaultValue,\n isDisabled,\n isInvalid,\n isPreviewFocusable,\n isReadOnly,\n isRequired,\n placeholder,\n selectAllOnFocus,\n startWithEditView,\n submitOnBlur,\n value,\n onCancel: onCancelProp,\n onChange,\n onEdit: onEditProp,\n onSubmit: onSubmitProp,\n })\n\n const cloneChildren = runIfFunc(children, {\n isEditing,\n onCancel,\n onEdit,\n onSubmit,\n })\n\n const css: CSSUIObject = { ...styles.container }\n\n return (\n <EditableProvider\n value={{\n isEditing,\n styles,\n getCancelProps,\n getEditProps,\n getInputProps,\n getPreviewProps,\n getSubmitProps,\n getTextareaProps,\n }}\n >\n <ui.div\n ref={ref}\n className={cx(\"ui-editable\", className)}\n {...rest}\n __css={css}\n >\n {cloneChildren}\n </ui.div>\n </EditableProvider>\n )\n },\n)\n\nEditable.displayName = \"Editable\"\nEditable.__ui__ = \"Editable\"\n\nexport interface EditablePreviewProps extends HTMLUIProps<\"span\"> {}\n\nexport const EditablePreview = forwardRef<EditablePreviewProps, \"span\">(\n ({ className, ...rest }, ref) => {\n const { styles, getPreviewProps } = useEditableContext()\n\n const css: CSSUIObject = {\n bg: \"transparent\",\n cursor: \"text\",\n display: \"inline-block\",\n fontSize: \"inherit\",\n fontWeight: \"inherit\",\n textAlign: \"inherit\",\n ...styles.preview,\n }\n\n return (\n <ui.span\n className={cx(\"ui-editable__preview\", className)}\n {...getPreviewProps(rest, ref)}\n __css={css}\n />\n )\n },\n)\n\nEditablePreview.displayName = \"EditablePreview\"\nEditablePreview.__ui__ = \"EditablePreview\"\n\nexport interface EditableInputProps extends HTMLUIProps<\"input\"> {}\n\nexport const EditableInput = forwardRef<EditableInputProps, \"input\">(\n ({ className, ...rest }, ref) => {\n const { styles, getInputProps } = useEditableContext()\n\n const css: CSSUIObject = {\n bg: \"transparent\",\n fontSize: \"inherit\",\n fontWeight: \"inherit\",\n outline: 0,\n textAlign: \"inherit\",\n ...styles.input,\n }\n\n return (\n <ui.input\n className={cx(\"ui-editable__input\", className)}\n {...getInputProps(rest, ref)}\n __css={css}\n />\n )\n },\n)\n\nEditableInput.displayName = \"EditableInput\"\nEditableInput.__ui__ = \"EditableInput\"\n\nexport interface EditableTextareaProps extends HTMLUIProps<\"textarea\"> {}\n\nexport const EditableTextarea = forwardRef<EditableTextareaProps, \"textarea\">(\n ({ className, ...rest }, ref) => {\n const { styles, getTextareaProps } = useEditableContext()\n\n const css: CSSUIObject = {\n bg: \"transparent\",\n fontSize: \"inherit\",\n fontWeight: \"inherit\",\n outline: 0,\n textAlign: \"inherit\",\n ...styles.textarea,\n }\n\n return (\n <ui.textarea\n className={cx(\"ui-editable__textarea\", className)}\n {...getTextareaProps(rest, ref)}\n __css={css}\n />\n )\n },\n)\n\nEditableTextarea.displayName = \"EditableTextarea\"\nEditableTextarea.__ui__ = \"EditableTextarea\"\n"],"mappings":"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","names":["props"]}
|
package/dist/editable.d.mts
CHANGED
@@ -4,22 +4,10 @@ import { FormControlOptions } from '@yamada-ui/form-control';
|
|
4
4
|
import { ReactNode } from 'react';
|
5
5
|
|
6
6
|
interface UseEditableProps extends FormControlOptions {
|
7
|
-
/**
|
8
|
-
* The placeholder text when the value is empty.
|
9
|
-
*/
|
10
|
-
placeholder?: string;
|
11
|
-
/**
|
12
|
-
* The value of the Editable in both edit & preview mode.
|
13
|
-
*/
|
14
|
-
value?: string;
|
15
7
|
/**
|
16
8
|
* The initial value of the Editable in both edit & preview mode.
|
17
9
|
*/
|
18
10
|
defaultValue?: string;
|
19
|
-
/**
|
20
|
-
* If `true`, the Editable will start with edit mode by default.
|
21
|
-
*/
|
22
|
-
startWithEditView?: boolean;
|
23
11
|
/**
|
24
12
|
* If `true`, the read only view, has a `tabIndex` set to `0`
|
25
13
|
* so it can receive focus via the keyboard or click.
|
@@ -28,11 +16,9 @@ interface UseEditableProps extends FormControlOptions {
|
|
28
16
|
*/
|
29
17
|
isPreviewFocusable?: boolean;
|
30
18
|
/**
|
31
|
-
*
|
32
|
-
*
|
33
|
-
* @default true
|
19
|
+
* The placeholder text when the value is empty.
|
34
20
|
*/
|
35
|
-
|
21
|
+
placeholder?: string;
|
36
22
|
/**
|
37
23
|
* If `true`, the input's text will be highlighted on focus.
|
38
24
|
*
|
@@ -40,58 +26,72 @@ interface UseEditableProps extends FormControlOptions {
|
|
40
26
|
*/
|
41
27
|
selectAllOnFocus?: boolean;
|
42
28
|
/**
|
43
|
-
*
|
29
|
+
* If `true`, the Editable will start with edit mode by default.
|
44
30
|
*/
|
45
|
-
|
31
|
+
startWithEditView?: boolean;
|
32
|
+
/**
|
33
|
+
* If `true`, it'll update the value onBlur and turn off the edit mode.
|
34
|
+
*
|
35
|
+
* @default true
|
36
|
+
*/
|
37
|
+
submitOnBlur?: boolean;
|
38
|
+
/**
|
39
|
+
* The value of the Editable in both edit & preview mode.
|
40
|
+
*/
|
41
|
+
value?: string;
|
46
42
|
/**
|
47
43
|
* Callback invoked when user cancels input with the `Esc` key.
|
48
44
|
* It provides the last confirmed value as argument.
|
49
45
|
*/
|
50
46
|
onCancel?: (preValue: string) => void;
|
51
47
|
/**
|
52
|
-
* A callback invoked when user
|
48
|
+
* A callback invoked when user changes input.
|
53
49
|
*/
|
54
|
-
|
50
|
+
onChange?: (value: string) => void;
|
55
51
|
/**
|
56
52
|
* A callback invoked once the user enters edit mode.
|
57
53
|
*/
|
58
54
|
onEdit?: () => void;
|
55
|
+
/**
|
56
|
+
* A callback invoked when user confirms value with `enter` key or by blurring input.
|
57
|
+
*/
|
58
|
+
onSubmit?: (value: string) => void;
|
59
59
|
}
|
60
60
|
declare const useEditable: (props: UseEditableProps) => {
|
61
61
|
isEditing: boolean;
|
62
62
|
value: string;
|
63
|
-
|
64
|
-
onCancel: () => void;
|
65
|
-
onSubmit: () => void;
|
66
|
-
getPreviewProps: PropGetter<"span", undefined>;
|
67
|
-
getInputProps: PropGetter<"input", undefined>;
|
68
|
-
getTextareaProps: PropGetter<"textarea", undefined>;
|
63
|
+
getCancelProps: PropGetter<"button", undefined>;
|
69
64
|
getEditProps: PropGetter<"button", undefined>;
|
65
|
+
getInputProps: PropGetter<"input", undefined>;
|
66
|
+
getPreviewProps: PropGetter<"span", undefined>;
|
70
67
|
getSubmitProps: PropGetter<"button", undefined>;
|
71
|
-
|
68
|
+
getTextareaProps: PropGetter<"textarea", undefined>;
|
69
|
+
onCancel: () => void;
|
70
|
+
onEdit: () => void;
|
71
|
+
onSubmit: () => void;
|
72
72
|
};
|
73
73
|
type UseEditableReturn = ReturnType<typeof useEditable>;
|
74
74
|
declare const useEditableControl: () => {
|
75
75
|
isEditing: boolean;
|
76
|
-
getEditProps: PropGetter<"button", undefined>;
|
77
76
|
getCancelProps: PropGetter<"button", undefined>;
|
77
|
+
getEditProps: PropGetter<"button", undefined>;
|
78
78
|
getSubmitProps: PropGetter<"button", undefined>;
|
79
79
|
};
|
80
|
-
interface EditableElementProps extends Pick<UseEditableReturn, "isEditing" | "
|
80
|
+
interface EditableElementProps extends Pick<UseEditableReturn, "isEditing" | "onCancel" | "onEdit" | "onSubmit"> {
|
81
81
|
}
|
82
82
|
type EditableElement = (props: EditableElementProps) => ReactNode;
|
83
83
|
interface EditableOptions {
|
84
|
-
|
85
|
-
* The border color when the input is focused.
|
86
|
-
*/
|
87
|
-
focusBorderColor?: ColorModeToken<CSS.Property.BorderColor, "colors">;
|
84
|
+
children?: EditableElement | ReactNode;
|
88
85
|
/**
|
89
86
|
* The border color when the input is invalid.
|
90
87
|
*/
|
91
88
|
errorBorderColor?: ColorModeToken<CSS.Property.BorderColor, "colors">;
|
92
|
-
|
89
|
+
/**
|
90
|
+
* The border color when the input is focused.
|
91
|
+
*/
|
92
|
+
focusBorderColor?: ColorModeToken<CSS.Property.BorderColor, "colors">;
|
93
93
|
}
|
94
|
-
interface EditableProps extends Omit<HTMLUIProps, "
|
94
|
+
interface EditableProps extends Omit<HTMLUIProps, "children" | "defaultValue" | "onChange" | "onSubmit" | "value">, ThemeProps<"Editable">, UseEditableProps, EditableOptions {
|
95
95
|
}
|
96
96
|
/**
|
97
97
|
* `Editable` is a component used to obtain inline editable text input.
|
package/dist/editable.d.ts
CHANGED
@@ -4,22 +4,10 @@ import { FormControlOptions } from '@yamada-ui/form-control';
|
|
4
4
|
import { ReactNode } from 'react';
|
5
5
|
|
6
6
|
interface UseEditableProps extends FormControlOptions {
|
7
|
-
/**
|
8
|
-
* The placeholder text when the value is empty.
|
9
|
-
*/
|
10
|
-
placeholder?: string;
|
11
|
-
/**
|
12
|
-
* The value of the Editable in both edit & preview mode.
|
13
|
-
*/
|
14
|
-
value?: string;
|
15
7
|
/**
|
16
8
|
* The initial value of the Editable in both edit & preview mode.
|
17
9
|
*/
|
18
10
|
defaultValue?: string;
|
19
|
-
/**
|
20
|
-
* If `true`, the Editable will start with edit mode by default.
|
21
|
-
*/
|
22
|
-
startWithEditView?: boolean;
|
23
11
|
/**
|
24
12
|
* If `true`, the read only view, has a `tabIndex` set to `0`
|
25
13
|
* so it can receive focus via the keyboard or click.
|
@@ -28,11 +16,9 @@ interface UseEditableProps extends FormControlOptions {
|
|
28
16
|
*/
|
29
17
|
isPreviewFocusable?: boolean;
|
30
18
|
/**
|
31
|
-
*
|
32
|
-
*
|
33
|
-
* @default true
|
19
|
+
* The placeholder text when the value is empty.
|
34
20
|
*/
|
35
|
-
|
21
|
+
placeholder?: string;
|
36
22
|
/**
|
37
23
|
* If `true`, the input's text will be highlighted on focus.
|
38
24
|
*
|
@@ -40,58 +26,72 @@ interface UseEditableProps extends FormControlOptions {
|
|
40
26
|
*/
|
41
27
|
selectAllOnFocus?: boolean;
|
42
28
|
/**
|
43
|
-
*
|
29
|
+
* If `true`, the Editable will start with edit mode by default.
|
44
30
|
*/
|
45
|
-
|
31
|
+
startWithEditView?: boolean;
|
32
|
+
/**
|
33
|
+
* If `true`, it'll update the value onBlur and turn off the edit mode.
|
34
|
+
*
|
35
|
+
* @default true
|
36
|
+
*/
|
37
|
+
submitOnBlur?: boolean;
|
38
|
+
/**
|
39
|
+
* The value of the Editable in both edit & preview mode.
|
40
|
+
*/
|
41
|
+
value?: string;
|
46
42
|
/**
|
47
43
|
* Callback invoked when user cancels input with the `Esc` key.
|
48
44
|
* It provides the last confirmed value as argument.
|
49
45
|
*/
|
50
46
|
onCancel?: (preValue: string) => void;
|
51
47
|
/**
|
52
|
-
* A callback invoked when user
|
48
|
+
* A callback invoked when user changes input.
|
53
49
|
*/
|
54
|
-
|
50
|
+
onChange?: (value: string) => void;
|
55
51
|
/**
|
56
52
|
* A callback invoked once the user enters edit mode.
|
57
53
|
*/
|
58
54
|
onEdit?: () => void;
|
55
|
+
/**
|
56
|
+
* A callback invoked when user confirms value with `enter` key or by blurring input.
|
57
|
+
*/
|
58
|
+
onSubmit?: (value: string) => void;
|
59
59
|
}
|
60
60
|
declare const useEditable: (props: UseEditableProps) => {
|
61
61
|
isEditing: boolean;
|
62
62
|
value: string;
|
63
|
-
|
64
|
-
onCancel: () => void;
|
65
|
-
onSubmit: () => void;
|
66
|
-
getPreviewProps: PropGetter<"span", undefined>;
|
67
|
-
getInputProps: PropGetter<"input", undefined>;
|
68
|
-
getTextareaProps: PropGetter<"textarea", undefined>;
|
63
|
+
getCancelProps: PropGetter<"button", undefined>;
|
69
64
|
getEditProps: PropGetter<"button", undefined>;
|
65
|
+
getInputProps: PropGetter<"input", undefined>;
|
66
|
+
getPreviewProps: PropGetter<"span", undefined>;
|
70
67
|
getSubmitProps: PropGetter<"button", undefined>;
|
71
|
-
|
68
|
+
getTextareaProps: PropGetter<"textarea", undefined>;
|
69
|
+
onCancel: () => void;
|
70
|
+
onEdit: () => void;
|
71
|
+
onSubmit: () => void;
|
72
72
|
};
|
73
73
|
type UseEditableReturn = ReturnType<typeof useEditable>;
|
74
74
|
declare const useEditableControl: () => {
|
75
75
|
isEditing: boolean;
|
76
|
-
getEditProps: PropGetter<"button", undefined>;
|
77
76
|
getCancelProps: PropGetter<"button", undefined>;
|
77
|
+
getEditProps: PropGetter<"button", undefined>;
|
78
78
|
getSubmitProps: PropGetter<"button", undefined>;
|
79
79
|
};
|
80
|
-
interface EditableElementProps extends Pick<UseEditableReturn, "isEditing" | "
|
80
|
+
interface EditableElementProps extends Pick<UseEditableReturn, "isEditing" | "onCancel" | "onEdit" | "onSubmit"> {
|
81
81
|
}
|
82
82
|
type EditableElement = (props: EditableElementProps) => ReactNode;
|
83
83
|
interface EditableOptions {
|
84
|
-
|
85
|
-
* The border color when the input is focused.
|
86
|
-
*/
|
87
|
-
focusBorderColor?: ColorModeToken<CSS.Property.BorderColor, "colors">;
|
84
|
+
children?: EditableElement | ReactNode;
|
88
85
|
/**
|
89
86
|
* The border color when the input is invalid.
|
90
87
|
*/
|
91
88
|
errorBorderColor?: ColorModeToken<CSS.Property.BorderColor, "colors">;
|
92
|
-
|
89
|
+
/**
|
90
|
+
* The border color when the input is focused.
|
91
|
+
*/
|
92
|
+
focusBorderColor?: ColorModeToken<CSS.Property.BorderColor, "colors">;
|
93
93
|
}
|
94
|
-
interface EditableProps extends Omit<HTMLUIProps, "
|
94
|
+
interface EditableProps extends Omit<HTMLUIProps, "children" | "defaultValue" | "onChange" | "onSubmit" | "value">, ThemeProps<"Editable">, UseEditableProps, EditableOptions {
|
95
95
|
}
|
96
96
|
/**
|
97
97
|
* `Editable` is a component used to obtain inline editable text input.
|