@team-monolith/cds 1.11.1 → 1.11.2
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/patterns/LexicalEditor/nodes/ProblemInputNode/InputComponent.d.ts +1 -1
- package/dist/patterns/LexicalEditor/nodes/ProblemInputNode/InputComponent.js +2 -2
- package/dist/patterns/LexicalEditor/nodes/ProblemInputNode/ProblemInputNode.d.ts +6 -6
- package/dist/patterns/LexicalEditor/nodes/ProblemInputNode/ProblemInputNode.js +12 -12
- package/dist/patterns/LexicalEditor/nodes/ProblemInputNode/SettingForm/{FormCharacterCount.d.ts → FormCharacterNumber.d.ts} +2 -2
- package/dist/patterns/LexicalEditor/nodes/ProblemInputNode/SettingForm/{FormCharacterCount.js → FormCharacterNumber.js} +2 -2
- package/dist/patterns/LexicalEditor/nodes/ProblemInputNode/SettingForm/SettingForm.d.ts +1 -1
- package/dist/patterns/LexicalEditor/nodes/ProblemInputNode/SettingForm/SettingForm.js +6 -6
- package/dist/patterns/LexicalEditor/nodes/ProblemInputNode/SettingForm/index.d.ts +1 -1
- package/dist/patterns/LexicalEditor/nodes/ProblemInputNode/SettingForm/index.js +1 -1
- package/dist/patterns/LexicalEditor/plugins/ComponentPickerMenuPlugin/ComponentPickerMenuPlugin.js +1 -1
- package/package.json +2 -2
|
@@ -2,7 +2,7 @@ import { Solution } from "./ProblemInputNode";
|
|
|
2
2
|
import { NodeKey } from "lexical";
|
|
3
3
|
export declare function InputComponent(props: {
|
|
4
4
|
solutions: Solution[];
|
|
5
|
-
|
|
5
|
+
showCharacterNumber: boolean;
|
|
6
6
|
placeholder: string;
|
|
7
7
|
answer: string;
|
|
8
8
|
nodeKey: NodeKey;
|
|
@@ -26,7 +26,7 @@ import TextInput from "./TextInput";
|
|
|
26
26
|
import SegmentedInput from "./SegmentedInput";
|
|
27
27
|
export function InputComponent(props) {
|
|
28
28
|
const { answer } = props, settingFormProps = __rest(props, ["answer"]);
|
|
29
|
-
const { solutions,
|
|
29
|
+
const { solutions, showCharacterNumber, placeholder, nodeKey } = settingFormProps;
|
|
30
30
|
const [editor] = useLexicalComposerContext();
|
|
31
31
|
const [settingOpen, setSettingOpen] = useState(false);
|
|
32
32
|
const isEditable = useLexicalEditable();
|
|
@@ -40,7 +40,7 @@ export function InputComponent(props) {
|
|
|
40
40
|
const answerFormat = solutions[0].value;
|
|
41
41
|
// 학생 view
|
|
42
42
|
if (!isEditable) {
|
|
43
|
-
if (
|
|
43
|
+
if (showCharacterNumber) {
|
|
44
44
|
return (_jsx(SegmentedInput, { readOnly: lexicalCustomConfig.freezeProblemNode, answerFormat: answerFormat, placeholder: placeholder || "여기에 입력하세요.", value: answerInput, onChange: (value) => {
|
|
45
45
|
setAnswerInput(value);
|
|
46
46
|
editor.update(() => {
|
|
@@ -5,7 +5,7 @@ export interface Solution {
|
|
|
5
5
|
value: string;
|
|
6
6
|
}
|
|
7
7
|
export interface ProblemInputPayload {
|
|
8
|
-
|
|
8
|
+
showCharacterNumber: boolean;
|
|
9
9
|
placeholder: string;
|
|
10
10
|
solutions: Solution[];
|
|
11
11
|
answer: string;
|
|
@@ -18,26 +18,26 @@ export type SerializedProblemInputNode = Spread<ProblemInputPayload, SerializedL
|
|
|
18
18
|
*/
|
|
19
19
|
export declare class ProblemInputNode extends DecoratorNode<ReactNode> {
|
|
20
20
|
__solutions: Solution[];
|
|
21
|
-
|
|
21
|
+
__showCharacterNumber: boolean;
|
|
22
22
|
__placeholder: string;
|
|
23
23
|
__answer: string;
|
|
24
24
|
isInline(): boolean;
|
|
25
25
|
static getType(): string;
|
|
26
26
|
getSolutions(): Solution[];
|
|
27
|
-
|
|
27
|
+
getShowCharacterNumber(): boolean;
|
|
28
28
|
getPlaceholder(): string;
|
|
29
29
|
getAnswer(): string;
|
|
30
30
|
setSolutions(solutions: Solution[]): void;
|
|
31
|
-
|
|
31
|
+
setShowCharacterNumber(showCharacterNumber: boolean): void;
|
|
32
32
|
setPlaceholder(placeholder: string): void;
|
|
33
33
|
setAnswer(answer: string): void;
|
|
34
34
|
static clone(node: ProblemInputNode): ProblemInputNode;
|
|
35
|
-
constructor(
|
|
35
|
+
constructor(showCharacterNumber: boolean, placeholder: string, solutions: Solution[], answer: string, key?: NodeKey);
|
|
36
36
|
createDOM(config: EditorConfig): HTMLElement;
|
|
37
37
|
updateDOM(): boolean;
|
|
38
38
|
static importJSON(serializedNode: SerializedProblemInputNode): ProblemInputNode;
|
|
39
39
|
exportJSON(): SerializedProblemInputNode;
|
|
40
40
|
decorate(): ReactNode;
|
|
41
41
|
}
|
|
42
|
-
export declare function $createProblemInputNode({
|
|
42
|
+
export declare function $createProblemInputNode({ showCharacterNumber, placeholder, solutions, answer, key, }: ProblemInputPayload): ProblemInputNode;
|
|
43
43
|
export declare function $isProblemInputNode(node: LexicalNode | null | undefined): node is ProblemInputNode;
|
|
@@ -16,8 +16,8 @@ export class ProblemInputNode extends DecoratorNode {
|
|
|
16
16
|
getSolutions() {
|
|
17
17
|
return this.__solutions;
|
|
18
18
|
}
|
|
19
|
-
|
|
20
|
-
return this.
|
|
19
|
+
getShowCharacterNumber() {
|
|
20
|
+
return this.__showCharacterNumber;
|
|
21
21
|
}
|
|
22
22
|
getPlaceholder() {
|
|
23
23
|
return this.__placeholder;
|
|
@@ -29,9 +29,9 @@ export class ProblemInputNode extends DecoratorNode {
|
|
|
29
29
|
const self = this.getWritable();
|
|
30
30
|
self.__solutions = solutions;
|
|
31
31
|
}
|
|
32
|
-
|
|
32
|
+
setShowCharacterNumber(showCharacterNumber) {
|
|
33
33
|
const self = this.getWritable();
|
|
34
|
-
self.
|
|
34
|
+
self.__showCharacterNumber = showCharacterNumber;
|
|
35
35
|
}
|
|
36
36
|
setPlaceholder(placeholder) {
|
|
37
37
|
const self = this.getWritable();
|
|
@@ -42,11 +42,11 @@ export class ProblemInputNode extends DecoratorNode {
|
|
|
42
42
|
self.__answer = answer;
|
|
43
43
|
}
|
|
44
44
|
static clone(node) {
|
|
45
|
-
return new ProblemInputNode(node.
|
|
45
|
+
return new ProblemInputNode(node.__showCharacterNumber, node.__placeholder, node.__solutions, node.__answer, node.__key);
|
|
46
46
|
}
|
|
47
|
-
constructor(
|
|
47
|
+
constructor(showCharacterNumber, placeholder, solutions, answer, key) {
|
|
48
48
|
super(key);
|
|
49
|
-
this.
|
|
49
|
+
this.__showCharacterNumber = showCharacterNumber;
|
|
50
50
|
this.__placeholder = placeholder;
|
|
51
51
|
this.__solutions = solutions;
|
|
52
52
|
this.__answer = answer;
|
|
@@ -64,7 +64,7 @@ export class ProblemInputNode extends DecoratorNode {
|
|
|
64
64
|
const node = $createProblemInputNode({
|
|
65
65
|
key: serializedNode.key,
|
|
66
66
|
solutions: serializedNode.solutions,
|
|
67
|
-
|
|
67
|
+
showCharacterNumber: serializedNode.showCharacterNumber,
|
|
68
68
|
placeholder: serializedNode.placeholder,
|
|
69
69
|
answer: serializedNode.answer,
|
|
70
70
|
});
|
|
@@ -74,18 +74,18 @@ export class ProblemInputNode extends DecoratorNode {
|
|
|
74
74
|
return {
|
|
75
75
|
version: 1,
|
|
76
76
|
type: "problem-input",
|
|
77
|
-
|
|
77
|
+
showCharacterNumber: this.__showCharacterNumber,
|
|
78
78
|
placeholder: this.__placeholder,
|
|
79
79
|
solutions: this.__solutions,
|
|
80
80
|
answer: this.__answer,
|
|
81
81
|
};
|
|
82
82
|
}
|
|
83
83
|
decorate() {
|
|
84
|
-
return (_jsx(InputComponent, { solutions: this.__solutions,
|
|
84
|
+
return (_jsx(InputComponent, { solutions: this.__solutions, showCharacterNumber: this.__showCharacterNumber, placeholder: this.__placeholder, answer: this.__answer, nodeKey: this.getKey() }));
|
|
85
85
|
}
|
|
86
86
|
}
|
|
87
|
-
export function $createProblemInputNode({
|
|
88
|
-
return $applyNodeReplacement(new ProblemInputNode(
|
|
87
|
+
export function $createProblemInputNode({ showCharacterNumber, placeholder, solutions, answer, key, }) {
|
|
88
|
+
return $applyNodeReplacement(new ProblemInputNode(showCharacterNumber, placeholder, solutions, answer, key));
|
|
89
89
|
}
|
|
90
90
|
export function $isProblemInputNode(node) {
|
|
91
91
|
return node instanceof ProblemInputNode;
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { Control, UseFormTrigger } from "react-hook-form";
|
|
2
2
|
import { ProblemInputPayload } from "../ProblemInputNode";
|
|
3
|
-
export interface
|
|
3
|
+
export interface FormCharacterNumberProps {
|
|
4
4
|
control: Control<ProblemInputPayload, any>;
|
|
5
5
|
trigger: UseFormTrigger<ProblemInputPayload>;
|
|
6
6
|
}
|
|
7
|
-
export declare function
|
|
7
|
+
export declare function FormCharacterNumber(props: FormCharacterNumberProps): import("react/jsx-runtime").JSX.Element;
|
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
2
|
import { Controller } from "react-hook-form";
|
|
3
3
|
import { SegmentedControlButton, SegmentedControlGroup, } from "../../../../SegmentedControl";
|
|
4
|
-
export function
|
|
4
|
+
export function FormCharacterNumber(props) {
|
|
5
5
|
const { control, trigger } = props;
|
|
6
|
-
return (_jsx(Controller, { name: "
|
|
6
|
+
return (_jsx(Controller, { name: "showCharacterNumber", control: control, render: ({ field: { value, onChange } }) => {
|
|
7
7
|
return (_jsxs(SegmentedControlGroup, Object.assign({ size: "xsmall", value: value.toString(), onChange: (value) => {
|
|
8
8
|
onChange(value === "true");
|
|
9
9
|
trigger("solutions");
|
|
@@ -2,7 +2,7 @@ import { Solution } from "../ProblemInputNode";
|
|
|
2
2
|
import { NodeKey } from "lexical";
|
|
3
3
|
export interface SettingFormProps {
|
|
4
4
|
solutions: Solution[];
|
|
5
|
-
|
|
5
|
+
showCharacterNumber: boolean;
|
|
6
6
|
placeholder: string;
|
|
7
7
|
nodeKey: NodeKey;
|
|
8
8
|
onClose: () => void;
|
|
@@ -9,18 +9,18 @@ import { $isProblemInputNode, } from "../ProblemInputNode";
|
|
|
9
9
|
import { FormSolution } from "./FormSolution";
|
|
10
10
|
import Button from "../../../../../components/Button";
|
|
11
11
|
import Tooltip from "../../../../../components/Tooltip";
|
|
12
|
-
import {
|
|
12
|
+
import { FormCharacterNumber } from "./FormCharacterNumber";
|
|
13
13
|
import { FormPlaceholder } from "./FormPlaceholder";
|
|
14
14
|
import { useLexicalComposerContext } from "@lexical/react/LexicalComposerContext";
|
|
15
15
|
import { $getNodeByKey } from "lexical";
|
|
16
16
|
export default function SettingForm(props) {
|
|
17
|
-
const { solutions,
|
|
17
|
+
const { solutions, showCharacterNumber, placeholder, nodeKey, onClose } = props;
|
|
18
18
|
const [editor] = useLexicalComposerContext();
|
|
19
19
|
const { control, handleSubmit, watch, trigger } = useForm({
|
|
20
20
|
mode: "all",
|
|
21
21
|
defaultValues: {
|
|
22
22
|
solutions,
|
|
23
|
-
|
|
23
|
+
showCharacterNumber,
|
|
24
24
|
placeholder,
|
|
25
25
|
},
|
|
26
26
|
});
|
|
@@ -37,12 +37,12 @@ export default function SettingForm(props) {
|
|
|
37
37
|
return;
|
|
38
38
|
}
|
|
39
39
|
node.setSolutions(data.solutions);
|
|
40
|
-
node.
|
|
40
|
+
node.setShowCharacterNumber(data.showCharacterNumber);
|
|
41
41
|
node.setPlaceholder(data.placeholder);
|
|
42
42
|
});
|
|
43
43
|
onClose();
|
|
44
44
|
};
|
|
45
|
-
const multipleSolutionsDisabled = watch("
|
|
45
|
+
const multipleSolutionsDisabled = watch("showCharacterNumber");
|
|
46
46
|
return (_jsxs(Form, Object.assign({ onSubmit: handleSubmit(onSettingSubmit) }, { children: [_jsxs(Title, { children: [_jsx(InputMethodLineIcon, { css: css `
|
|
47
47
|
width: 12px;
|
|
48
48
|
height: 12px;
|
|
@@ -72,7 +72,7 @@ export default function SettingForm(props) {
|
|
|
72
72
|
` }), _jsxs(Label, { children: ["\uB744\uC5B4\uC4F0\uAE30, \uC54C\uD30C\uBCB3\uC758 \uB300\uC18C\uBB38\uC790 \uAD6C\uBD84\uAE4C\uC9C0 \uC77C\uCE58\uD574\uC57C \uC815\uB2F5\uC73C\uB85C \uCC98\uB9AC\uB429\uB2C8\uB2E4.", _jsx("br", {}), "\uAC00\uB2A5\uD55C \uC815\uB2F5\uC744 \uBAA8\uB450 \uCD94\uAC00\uD574\uC57C \uC6D0\uD65C\uD558\uAC8C \uC790\uB3D9 \uCC44\uC810\uD560 \uC218 \uC788\uC5B4\uC694."] })] }))] }), _jsxs(Right, { children: [_jsxs(FormArea, { children: [_jsxs(Label, { children: ["\uC785\uB825 \uCE78", _jsx(Tooltip, Object.assign({ text: _jsxs("span", { children: ["\uC608\uB97C \uB4E4\uC5B4 \uC815\uB2F5\uC774 '\uAE00\uC790 \uC218'\uC774\uACE0", _jsx("br", {}), _jsx("b", { children: "\uAE00\uC790 \uC218\uB300\uB85C" }), " \uC635\uC158\uC744 \uC120\uD0DD\uD588\uB2E4\uBA74", _jsx("br", {}), "\uC785\uB825 \uCE78\uC774 '\u2610\u2610 \u2610' \uCC98\uB7FC \uD45C\uC2DC\uB429\uB2C8\uB2E4."] }), placement: "top" }, { children: _jsx(QuestionFillIcon, { css: css `
|
|
73
73
|
width: 12px;
|
|
74
74
|
height: 12px;
|
|
75
|
-
` }) }))] }), _jsx(
|
|
75
|
+
` }) }))] }), _jsx(FormCharacterNumber, { control: control, trigger: trigger })] }), _jsxs(FormArea, { children: [_jsxs(Label, { children: ["\uC790\uB9AC \uD45C\uC2DC\uC790", _jsx(Tooltip, Object.assign({ text: _jsx("span", { children: "\uC785\uB825 \uCE78\uC5D0 \uAE30\uBCF8\uC73C\uB85C \uB178\uCD9C\uB418\uB294 \uD14D\uC2A4\uD2B8\uC785\uB2C8\uB2E4." }), placement: "top" }, { children: _jsx(QuestionFillIcon, { css: css `
|
|
76
76
|
width: 12px;
|
|
77
77
|
height: 12px;
|
|
78
78
|
` }) }))] }), _jsx(FormPlaceholder, { control: control })] })] })] }), _jsxs(Buttons, { children: [_jsx(Button, { color: "grey", size: "xsmall", label: "\uB2EB\uAE30", onClick: onClose }), _jsx(Button, { color: "primary", size: "xsmall", label: "\uC774\uB300\uB85C \uB123\uAE30", type: "submit" })] })] })));
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@team-monolith/cds",
|
|
3
|
-
"version": "1.11.
|
|
3
|
+
"version": "1.11.2",
|
|
4
4
|
"main": "dist/index.js",
|
|
5
5
|
"types": "dist/index.d.ts",
|
|
6
6
|
"sideEffects": false,
|
|
@@ -12,7 +12,7 @@
|
|
|
12
12
|
"@mui/material": "^5.13.6",
|
|
13
13
|
"@types/node": "^16.11.26",
|
|
14
14
|
"@types/react": "^18.2.28",
|
|
15
|
-
"@types/react-dom": "^18.2.13",
|
|
15
|
+
"@types/react-dom": "^18.2.13",
|
|
16
16
|
"hex-to-css-filter": "^5.4.0",
|
|
17
17
|
"lexical": "^0.12.4",
|
|
18
18
|
"react": "^18.2.0",
|