@khanacademy/perseus 66.2.1 → 66.3.0
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/es/index.css +13 -1
- package/dist/es/index.css.map +1 -1
- package/dist/es/index.js +49 -49
- package/dist/es/index.js.map +1 -1
- package/dist/index.css +13 -1
- package/dist/index.css.map +1 -1
- package/dist/index.d.ts +1 -0
- package/dist/index.js +52 -49
- package/dist/index.js.map +1 -1
- package/dist/server-item-renderer.d.ts +2 -2
- package/dist/user-input-manager.d.ts +2 -2
- package/dist/widget-ai-utils/categorizer/categorizer-ai-utils.d.ts +1 -1
- package/dist/widgets/categorizer/categorizer.d.ts +1 -1
- package/dist/widgets/graded-group/graded-group-answer-bar.d.ts +1 -1
- package/dist/widgets/graded-group/graded-group.d.ts +2 -2
- package/dist/widgets/radio/base-radio.d.ts +1 -0
- package/dist/widgets/radio/choice.new.d.ts +9 -26
- package/dist/widgets/radio/multiple-choice-component.new.d.ts +3 -25
- package/dist/widgets/radio/multiple-choice-widget.new.d.ts +17 -1
- package/package.json +41 -41
- package/dist/widgets/radio/choice-none-above.new.d.ts +0 -14
- package/dist/widgets/radio/focus-ring.new.d.ts +0 -19
- package/dist/widgets/radio/multiple-choice-option.new.d.ts +0 -11
- package/dist/widgets/radio/option-status.new.d.ts +0 -23
|
@@ -124,7 +124,7 @@ export declare class ServerItemRenderer extends React.Component<Props, State> im
|
|
|
124
124
|
setAssetStatus: (assetKey: string, status: boolean) => void;
|
|
125
125
|
render(): React.ReactNode;
|
|
126
126
|
}
|
|
127
|
-
declare const
|
|
127
|
+
declare const _default: React.ForwardRefExoticComponent<Omit<Pick<SharedRendererProps & OwnProps & HOCProps, keyof OwnProps> & {
|
|
128
128
|
apiOptions?: Readonly<{
|
|
129
129
|
isArticle?: boolean;
|
|
130
130
|
onFocusChange?: (newFocusPath: FocusPath, oldFocusPath: FocusPath, keypadHeight?: number, focusedElement?: HTMLElement) => unknown;
|
|
@@ -164,4 +164,4 @@ declare const ref: React.ForwardRefExoticComponent<Omit<Pick<SharedRendererProps
|
|
|
164
164
|
linterContext?: PerseusLinter.LinterContextProps | undefined;
|
|
165
165
|
onRendered?: ((isRendered: boolean) => void) | undefined;
|
|
166
166
|
} & {}, "onRendered"> & React.RefAttributes<ServerItemRenderer>>;
|
|
167
|
-
export default
|
|
167
|
+
export default _default;
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import type { PerseusWidgetsMap, UserInputMap } from "@khanacademy/perseus-core";
|
|
2
2
|
export type InitializeUserInputCallback = (widgetOptions: PerseusWidgetsMap, problemNum: number) => void;
|
|
3
3
|
export type RestoreUserInputFromSerializedStateCallback = (serializedState: unknown, widgetOptions: PerseusWidgetsMap) => void;
|
|
4
|
-
export type HandleUserInputCallback = (widgetId: string, userInput: UserInputMap[keyof UserInputMap]) => void;
|
|
4
|
+
export type HandleUserInputCallback = (widgetId: string, userInput: UserInputMap[keyof UserInputMap], widgetsEmpty: boolean) => void;
|
|
5
5
|
type FunctionChildParams = {
|
|
6
6
|
userInput: UserInputMap;
|
|
7
7
|
handleUserInput: HandleUserInputCallback;
|
|
@@ -14,7 +14,7 @@ type FunctionChildParams = {
|
|
|
14
14
|
type Props = {
|
|
15
15
|
widgets: PerseusWidgetsMap;
|
|
16
16
|
problemNum: number;
|
|
17
|
-
handleUserInput?: (userInput: UserInputMap) => void;
|
|
17
|
+
handleUserInput?: (userInput: UserInputMap, widgetsEmpty: boolean) => void;
|
|
18
18
|
children: (payload: FunctionChildParams) => JSX.Element | null;
|
|
19
19
|
};
|
|
20
20
|
/**
|
|
@@ -7,7 +7,7 @@ export type CategorizerPromptJSON = {
|
|
|
7
7
|
categories: ReadonlyArray<string>;
|
|
8
8
|
};
|
|
9
9
|
userInput: {
|
|
10
|
-
itemToCategoryMapping: ReadonlyArray<number>;
|
|
10
|
+
itemToCategoryMapping: ReadonlyArray<number | null | undefined>;
|
|
11
11
|
};
|
|
12
12
|
};
|
|
13
13
|
export declare const getPromptJSON: (renderProps: React.ComponentProps<typeof categorizer.widget>) => CategorizerPromptJSON;
|
|
@@ -24,7 +24,7 @@ export declare class Categorizer extends React.Component<Props, State> implement
|
|
|
24
24
|
*/
|
|
25
25
|
getSerializedState(): any;
|
|
26
26
|
getPromptJSON(): CategorizerPromptJSON;
|
|
27
|
-
_handleUserInput(itemNum:
|
|
27
|
+
_handleUserInput(itemNum: number, catNum: number): void;
|
|
28
28
|
render(): React.ReactNode;
|
|
29
29
|
}
|
|
30
30
|
type RenderProps = {
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import * as React from "react";
|
|
2
2
|
import { PerseusI18nContext } from "../../components/i18n-context";
|
|
3
3
|
import type { APIOptions } from "../../types";
|
|
4
|
-
export type ANSWER_BAR_STATES = "
|
|
4
|
+
export type ANSWER_BAR_STATES = "ACTIVE" | "INACTIVE" | "INCORRECT" | "CORRECT";
|
|
5
5
|
type Props = {
|
|
6
6
|
answerBarState: ANSWER_BAR_STATES;
|
|
7
7
|
apiOptions: APIOptions;
|
|
@@ -4,7 +4,7 @@ import Renderer from "../../renderer";
|
|
|
4
4
|
import type { ANSWER_BAR_STATES } from "./graded-group-answer-bar";
|
|
5
5
|
import type { FocusPath, TrackingGradedGroupExtraArguments, Widget, WidgetProps } from "../../types";
|
|
6
6
|
import type { GradedGroupPromptJSON } from "../../widget-ai-utils/graded-group/graded-group-ai-utils";
|
|
7
|
-
import type { PerseusGradedGroupWidgetOptions } from "@khanacademy/perseus-core";
|
|
7
|
+
import type { PerseusGradedGroupWidgetOptions, UserInputMap } from "@khanacademy/perseus-core";
|
|
8
8
|
declare const GRADING_STATUSES: {
|
|
9
9
|
readonly ungraded: "ungraded";
|
|
10
10
|
readonly correct: "correct";
|
|
@@ -40,7 +40,7 @@ export declare class GradedGroup extends React.Component<Props, State> implement
|
|
|
40
40
|
hintRendererRef: React.RefObject<Renderer>;
|
|
41
41
|
shouldComponentUpdate(nextProps: Props, nextState: State): boolean;
|
|
42
42
|
change: (...args: ReadonlyArray<unknown>) => any;
|
|
43
|
-
_handleUserInput(): void;
|
|
43
|
+
_handleUserInput(_userInput: UserInputMap, widgetsEmpty: boolean): void;
|
|
44
44
|
_checkAnswer: () => void;
|
|
45
45
|
getInputPaths: () => ReadonlyArray<FocusPath>;
|
|
46
46
|
getPromptJSON(): GradedGroupPromptJSON;
|
|
@@ -2,6 +2,7 @@ import { type PerseusRadioWidgetOptions } from "@khanacademy/perseus-core";
|
|
|
2
2
|
import * as React from "react";
|
|
3
3
|
import type { APIOptions } from "../../types";
|
|
4
4
|
export type ChoiceType = {
|
|
5
|
+
id: string;
|
|
5
6
|
checked: boolean;
|
|
6
7
|
content: React.ReactNode;
|
|
7
8
|
rationale: React.ReactNode;
|
|
@@ -1,28 +1,11 @@
|
|
|
1
|
-
import
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
disabled?: boolean;
|
|
10
|
-
pos: number;
|
|
11
|
-
reviewMode: boolean;
|
|
12
|
-
showRationale: boolean;
|
|
13
|
-
showCorrectness: boolean;
|
|
14
|
-
multipleSelect: boolean;
|
|
15
|
-
previouslyAnswered?: boolean;
|
|
16
|
-
onChange?: (newValues: {
|
|
17
|
-
checked: boolean;
|
|
18
|
-
}) => void;
|
|
1
|
+
import React from "react";
|
|
2
|
+
export interface IndicatorProps {
|
|
3
|
+
checked: boolean;
|
|
4
|
+
children: React.ReactNode | React.ReactNode[];
|
|
5
|
+
indicatorContent: string;
|
|
6
|
+
isMultiSelect: boolean;
|
|
7
|
+
showCorrectness?: "correct" | "wrong";
|
|
8
|
+
updateChecked: (isChecked: boolean) => void;
|
|
19
9
|
}
|
|
20
|
-
|
|
21
|
-
* This component is a duplicate of the Choice component in choice.tsx
|
|
22
|
-
* for the Radio Revitalization Project. (LEMS-2933)
|
|
23
|
-
* This component will eventually replace choice.tsx when the feature flag is no longer needed.
|
|
24
|
-
*
|
|
25
|
-
* TODO(LEMS-2994): Clean up this file.
|
|
26
|
-
*/
|
|
27
|
-
declare const Choice: React.ForwardRefExoticComponent<ChoiceProps & React.RefAttributes<HTMLButtonElement>>;
|
|
10
|
+
declare const Choice: (props: IndicatorProps) => React.JSX.Element;
|
|
28
11
|
export default Choice;
|
|
@@ -1,37 +1,15 @@
|
|
|
1
|
-
import { type PerseusRadioWidgetOptions } from "@khanacademy/perseus-core";
|
|
2
1
|
import * as React from "react";
|
|
3
|
-
import type {
|
|
4
|
-
/**
|
|
5
|
-
* Represents a single choice in the MultipleChoiceComponent
|
|
6
|
-
*/
|
|
7
|
-
export interface ChoiceType {
|
|
8
|
-
checked: boolean;
|
|
9
|
-
content: React.ReactNode;
|
|
10
|
-
rationale: React.ReactNode;
|
|
11
|
-
hasRationale: boolean;
|
|
12
|
-
showRationale: boolean;
|
|
13
|
-
showCorrectness: boolean;
|
|
14
|
-
correct: boolean;
|
|
15
|
-
isNoneOfTheAbove: boolean;
|
|
16
|
-
previouslyAnswered: boolean;
|
|
17
|
-
revealNoneOfTheAbove: boolean;
|
|
18
|
-
disabled: boolean;
|
|
19
|
-
}
|
|
2
|
+
import type { ChoiceType } from "./multiple-choice-widget.new";
|
|
20
3
|
/**
|
|
21
4
|
* Props for the MultipleChoiceComponent
|
|
22
5
|
*/
|
|
23
|
-
interface MultipleChoiceComponentProps {
|
|
24
|
-
apiOptions: APIOptions;
|
|
6
|
+
export interface MultipleChoiceComponentProps {
|
|
25
7
|
choices: ReadonlyArray<ChoiceType>;
|
|
26
8
|
countChoices: boolean | null | undefined;
|
|
27
|
-
editMode?: boolean;
|
|
28
|
-
isLastUsedWidget?: boolean;
|
|
29
|
-
labelWrap: boolean;
|
|
30
9
|
multipleSelect?: boolean;
|
|
31
10
|
numCorrect: number;
|
|
32
11
|
onChoiceChange: (choiceIndex: number, newCheckedState: boolean) => void;
|
|
33
12
|
reviewMode: boolean;
|
|
34
|
-
reviewModeRubric?: PerseusRadioWidgetOptions | null;
|
|
35
13
|
}
|
|
36
14
|
/**
|
|
37
15
|
* The MultipleChoiceComponent renders the UI for multiple choice questions.
|
|
@@ -44,5 +22,5 @@ interface MultipleChoiceComponentProps {
|
|
|
44
22
|
*
|
|
45
23
|
* Created as part of the Radio Revitalization Project (LEMS-2933).
|
|
46
24
|
*/
|
|
47
|
-
declare const MultipleChoiceComponent: ({
|
|
25
|
+
declare const MultipleChoiceComponent: ({ choices, countChoices, multipleSelect, numCorrect, onChoiceChange, reviewMode, }: MultipleChoiceComponentProps) => React.ReactElement;
|
|
48
26
|
export default MultipleChoiceComponent;
|
|
@@ -1,9 +1,25 @@
|
|
|
1
1
|
import * as React from "react";
|
|
2
|
-
import type { ChoiceType } from "./multiple-choice-component.new";
|
|
3
2
|
import type { PerseusStrings } from "../../strings";
|
|
4
3
|
import type { WidgetProps, ChoiceState, Widget } from "../../types";
|
|
5
4
|
import type { RadioPromptJSON } from "../../widget-ai-utils/radio/radio-ai-utils";
|
|
6
5
|
import type { PerseusRadioChoice, PerseusRadioRubric, PerseusRadioUserInput } from "@khanacademy/perseus-core";
|
|
6
|
+
/**
|
|
7
|
+
* Represents a single choice in the MultipleChoiceComponent
|
|
8
|
+
*/
|
|
9
|
+
export interface ChoiceType {
|
|
10
|
+
id: string;
|
|
11
|
+
checked: boolean;
|
|
12
|
+
content: React.ReactNode;
|
|
13
|
+
rationale: React.ReactNode;
|
|
14
|
+
hasRationale: boolean;
|
|
15
|
+
showRationale: boolean;
|
|
16
|
+
showCorrectness: boolean;
|
|
17
|
+
correct: boolean;
|
|
18
|
+
isNoneOfTheAbove: boolean;
|
|
19
|
+
previouslyAnswered: boolean;
|
|
20
|
+
revealNoneOfTheAbove: boolean;
|
|
21
|
+
disabled: boolean;
|
|
22
|
+
}
|
|
7
23
|
export type RenderProps = {
|
|
8
24
|
numCorrect: number;
|
|
9
25
|
hasNoneOfTheAbove?: boolean;
|
package/package.json
CHANGED
|
@@ -3,7 +3,7 @@
|
|
|
3
3
|
"description": "Core Perseus API (includes renderers and widgets)",
|
|
4
4
|
"author": "Khan Academy",
|
|
5
5
|
"license": "MIT",
|
|
6
|
-
"version": "66.
|
|
6
|
+
"version": "66.3.0",
|
|
7
7
|
"publishConfig": {
|
|
8
8
|
"access": "public"
|
|
9
9
|
},
|
|
@@ -42,36 +42,36 @@
|
|
|
42
42
|
"tiny-invariant": "1.3.1",
|
|
43
43
|
"uuid": "^10.0.0",
|
|
44
44
|
"@khanacademy/kas": "2.1.0",
|
|
45
|
-
"@khanacademy/
|
|
46
|
-
"@khanacademy/
|
|
47
|
-
"@khanacademy/math-input": "26.1.
|
|
48
|
-
"@khanacademy/perseus-core": "18.
|
|
49
|
-
"@khanacademy/perseus-linter": "4.2.
|
|
45
|
+
"@khanacademy/keypad-context": "3.1.2",
|
|
46
|
+
"@khanacademy/kmath": "2.1.2",
|
|
47
|
+
"@khanacademy/math-input": "26.1.3",
|
|
48
|
+
"@khanacademy/perseus-core": "18.5.0",
|
|
49
|
+
"@khanacademy/perseus-linter": "4.2.2",
|
|
50
|
+
"@khanacademy/perseus-score": "7.5.0",
|
|
50
51
|
"@khanacademy/perseus-utils": "2.1.0",
|
|
51
|
-
"@khanacademy/perseus-score": "7.4.0",
|
|
52
52
|
"@khanacademy/pure-markdown": "2.2.0",
|
|
53
53
|
"@khanacademy/simple-markdown": "2.1.0"
|
|
54
54
|
},
|
|
55
55
|
"devDependencies": {
|
|
56
|
-
"@khanacademy/wonder-blocks-banner": "4.2.
|
|
57
|
-
"@khanacademy/wonder-blocks-button": "
|
|
58
|
-
"@khanacademy/wonder-blocks-clickable": "7.1.
|
|
56
|
+
"@khanacademy/wonder-blocks-banner": "4.2.14",
|
|
57
|
+
"@khanacademy/wonder-blocks-button": "11.0.0",
|
|
58
|
+
"@khanacademy/wonder-blocks-clickable": "7.1.20",
|
|
59
59
|
"@khanacademy/wonder-blocks-core": "12.3.0",
|
|
60
60
|
"@khanacademy/wonder-blocks-data": "14.1.4",
|
|
61
|
-
"@khanacademy/wonder-blocks-dropdown": "10.3.
|
|
62
|
-
"@khanacademy/wonder-blocks-form": "7.3.
|
|
63
|
-
"@khanacademy/wonder-blocks-icon-button": "10.3.
|
|
64
|
-
"@khanacademy/wonder-blocks-icon": "5.2.
|
|
65
|
-
"@khanacademy/wonder-blocks-labeled-field": "
|
|
66
|
-
"@khanacademy/wonder-blocks-layout": "3.1.
|
|
67
|
-
"@khanacademy/wonder-blocks-link": "9.1.
|
|
68
|
-
"@khanacademy/wonder-blocks-pill": "3.1.
|
|
69
|
-
"@khanacademy/wonder-blocks-popover": "6.1.
|
|
70
|
-
"@khanacademy/wonder-blocks-progress-spinner": "3.1.
|
|
71
|
-
"@khanacademy/wonder-blocks-switch": "3.3.
|
|
72
|
-
"@khanacademy/wonder-blocks-tokens": "12.0.
|
|
73
|
-
"@khanacademy/wonder-blocks-tooltip": "4.1.
|
|
74
|
-
"@khanacademy/wonder-blocks-typography": "4.2.
|
|
61
|
+
"@khanacademy/wonder-blocks-dropdown": "10.3.2",
|
|
62
|
+
"@khanacademy/wonder-blocks-form": "7.3.2",
|
|
63
|
+
"@khanacademy/wonder-blocks-icon-button": "10.3.15",
|
|
64
|
+
"@khanacademy/wonder-blocks-icon": "5.2.14",
|
|
65
|
+
"@khanacademy/wonder-blocks-labeled-field": "4.0.0",
|
|
66
|
+
"@khanacademy/wonder-blocks-layout": "3.1.31",
|
|
67
|
+
"@khanacademy/wonder-blocks-link": "9.1.20",
|
|
68
|
+
"@khanacademy/wonder-blocks-pill": "3.1.35",
|
|
69
|
+
"@khanacademy/wonder-blocks-popover": "6.1.24",
|
|
70
|
+
"@khanacademy/wonder-blocks-progress-spinner": "3.1.31",
|
|
71
|
+
"@khanacademy/wonder-blocks-switch": "3.3.13",
|
|
72
|
+
"@khanacademy/wonder-blocks-tokens": "12.0.2",
|
|
73
|
+
"@khanacademy/wonder-blocks-tooltip": "4.1.38",
|
|
74
|
+
"@khanacademy/wonder-blocks-typography": "4.2.16",
|
|
75
75
|
"@khanacademy/wonder-stuff-core": "1.5.5",
|
|
76
76
|
"@phosphor-icons/core": "2.0.2",
|
|
77
77
|
"@popperjs/core": "2.10.2",
|
|
@@ -90,25 +90,25 @@
|
|
|
90
90
|
"raphael": "1.5.4"
|
|
91
91
|
},
|
|
92
92
|
"peerDependencies": {
|
|
93
|
-
"@khanacademy/wonder-blocks-banner": "^4.2.
|
|
94
|
-
"@khanacademy/wonder-blocks-button": "^
|
|
95
|
-
"@khanacademy/wonder-blocks-clickable": "^7.1.
|
|
93
|
+
"@khanacademy/wonder-blocks-banner": "^4.2.14",
|
|
94
|
+
"@khanacademy/wonder-blocks-button": "^11.0.0",
|
|
95
|
+
"@khanacademy/wonder-blocks-clickable": "^7.1.20",
|
|
96
96
|
"@khanacademy/wonder-blocks-core": "^12.3.0",
|
|
97
97
|
"@khanacademy/wonder-blocks-data": "^14.1.4",
|
|
98
|
-
"@khanacademy/wonder-blocks-dropdown": "^10.3.
|
|
99
|
-
"@khanacademy/wonder-blocks-form": "^7.3.
|
|
100
|
-
"@khanacademy/wonder-blocks-icon": "^5.2.
|
|
101
|
-
"@khanacademy/wonder-blocks-icon-button": "^10.3.
|
|
102
|
-
"@khanacademy/wonder-blocks-labeled-field": "^
|
|
103
|
-
"@khanacademy/wonder-blocks-layout": "^3.1.
|
|
104
|
-
"@khanacademy/wonder-blocks-link": "^9.1.
|
|
105
|
-
"@khanacademy/wonder-blocks-pill": "^3.1.
|
|
106
|
-
"@khanacademy/wonder-blocks-popover": "^6.1.
|
|
107
|
-
"@khanacademy/wonder-blocks-progress-spinner": "^3.1.
|
|
108
|
-
"@khanacademy/wonder-blocks-switch": "^3.3.
|
|
109
|
-
"@khanacademy/wonder-blocks-tokens": "^12.0.
|
|
110
|
-
"@khanacademy/wonder-blocks-tooltip": "^4.1.
|
|
111
|
-
"@khanacademy/wonder-blocks-typography": "^4.2.
|
|
98
|
+
"@khanacademy/wonder-blocks-dropdown": "^10.3.2",
|
|
99
|
+
"@khanacademy/wonder-blocks-form": "^7.3.2",
|
|
100
|
+
"@khanacademy/wonder-blocks-icon": "^5.2.14",
|
|
101
|
+
"@khanacademy/wonder-blocks-icon-button": "^10.3.15",
|
|
102
|
+
"@khanacademy/wonder-blocks-labeled-field": "^4.0.0",
|
|
103
|
+
"@khanacademy/wonder-blocks-layout": "^3.1.31",
|
|
104
|
+
"@khanacademy/wonder-blocks-link": "^9.1.20",
|
|
105
|
+
"@khanacademy/wonder-blocks-pill": "^3.1.35",
|
|
106
|
+
"@khanacademy/wonder-blocks-popover": "^6.1.24",
|
|
107
|
+
"@khanacademy/wonder-blocks-progress-spinner": "^3.1.31",
|
|
108
|
+
"@khanacademy/wonder-blocks-switch": "^3.3.13",
|
|
109
|
+
"@khanacademy/wonder-blocks-tokens": "^12.0.2",
|
|
110
|
+
"@khanacademy/wonder-blocks-tooltip": "^4.1.38",
|
|
111
|
+
"@khanacademy/wonder-blocks-typography": "^4.2.16",
|
|
112
112
|
"@khanacademy/wonder-stuff-core": "^1.5.5",
|
|
113
113
|
"@phosphor-icons/core": "^2.0.2",
|
|
114
114
|
"@popperjs/core": "^2.10.2",
|
|
@@ -1,14 +0,0 @@
|
|
|
1
|
-
import * as React from "react";
|
|
2
|
-
import type { ChoiceProps } from "./choice.new";
|
|
3
|
-
interface ChoiceNoneAboveProps extends ChoiceProps {
|
|
4
|
-
showContent?: boolean;
|
|
5
|
-
}
|
|
6
|
-
/**
|
|
7
|
-
* This component is a duplicate of the ChoiceNoneAbove component in choice-none-above.tsx
|
|
8
|
-
* for the Radio Revitalization Project. (LEMS-2933)
|
|
9
|
-
* This component will eventually replace choice-none-above.tsx when the feature flag is no longer needed.
|
|
10
|
-
*
|
|
11
|
-
* TODO(LEMS-2994): Clean up this file.
|
|
12
|
-
*/
|
|
13
|
-
declare const ChoiceNoneAbove: React.ForwardRefExoticComponent<ChoiceNoneAboveProps & React.RefAttributes<HTMLButtonElement>>;
|
|
14
|
-
export default ChoiceNoneAbove;
|
|
@@ -1,19 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Renders a circular selection ring around the child.
|
|
3
|
-
*/
|
|
4
|
-
import * as React from "react";
|
|
5
|
-
interface FocusRingProps {
|
|
6
|
-
children?: React.ReactNode;
|
|
7
|
-
visible?: boolean;
|
|
8
|
-
color?: string;
|
|
9
|
-
multipleSelect?: boolean;
|
|
10
|
-
}
|
|
11
|
-
/**
|
|
12
|
-
* This component is a duplicate of the FocusRing component in focus-ring.tsx
|
|
13
|
-
* for the Radio Revitalization Project. (LEMS-2933)
|
|
14
|
-
* This component will eventually replace focus-ring.tsx when the feature flag is no longer needed.
|
|
15
|
-
*
|
|
16
|
-
* TODO(LEMS-2994): Clean up this file.
|
|
17
|
-
*/
|
|
18
|
-
declare const FocusRing: ({ visible, color, multipleSelect, children, }: FocusRingProps) => React.ReactElement;
|
|
19
|
-
export default FocusRing;
|
|
@@ -1,11 +0,0 @@
|
|
|
1
|
-
import React from "react";
|
|
2
|
-
export interface IndicatorProps {
|
|
3
|
-
checked: boolean;
|
|
4
|
-
children: React.ReactNode | React.ReactNode[];
|
|
5
|
-
indicatorContent: string;
|
|
6
|
-
isMultiSelect: boolean;
|
|
7
|
-
showCorrectness?: "correct" | "wrong";
|
|
8
|
-
updateChecked: (isChecked: boolean) => void;
|
|
9
|
-
}
|
|
10
|
-
declare const Choice: (props: IndicatorProps) => React.JSX.Element;
|
|
11
|
-
export default Choice;
|
|
@@ -1,23 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Renders text indicating whether the choice was correct or
|
|
3
|
-
* not and whether the choice was selected or not.
|
|
4
|
-
* This information is redundant with that provided in the
|
|
5
|
-
* ChoiceIcon visualizations but is meant to make the distinctions
|
|
6
|
-
* between the states more immediately clear to users.
|
|
7
|
-
*/
|
|
8
|
-
import * as React from "react";
|
|
9
|
-
interface OptionStatusProps {
|
|
10
|
-
correct: boolean;
|
|
11
|
-
checked: boolean;
|
|
12
|
-
previouslyAnswered: boolean;
|
|
13
|
-
reviewMode: boolean;
|
|
14
|
-
}
|
|
15
|
-
/**
|
|
16
|
-
* This component is a duplicate of the OptionStatus component in option-status.tsx
|
|
17
|
-
* for the Radio Revitalization Project. (LEMS-2933)
|
|
18
|
-
* This component will eventually replace option-status.tsx when the feature flag is no longer needed.
|
|
19
|
-
*
|
|
20
|
-
* TODO(LEMS-2994): Clean up this file.
|
|
21
|
-
*/
|
|
22
|
-
declare const OptionStatus: ({ checked, correct, previouslyAnswered, reviewMode, }: OptionStatusProps) => React.ReactElement | null;
|
|
23
|
-
export default OptionStatus;
|