Skip to content

Commit

Permalink
Create a function to get the public options for a Table widget (#2189)
Browse files Browse the repository at this point in the history
Issue: https://khanacademy.atlassian.net/browse/LEMS-2766

## Test plan:

`yarn test`

Author: benchristel

Reviewers: Myranae, benchristel, handeyeco, jeremywiebe

Required Reviewers:

Approved By: Myranae

Checks: ✅ Publish npm snapshot (ubuntu-latest, 20.x), ✅ Lint, Typecheck, Format, and Test (ubuntu-latest, 20.x), ✅ Cypress (ubuntu-latest, 20.x), ✅ Check for .changeset entries for all changed files (ubuntu-latest, 20.x), ✅ Check builds for changes in size (ubuntu-latest, 20.x), ✅ Publish Storybook to Chromatic (ubuntu-latest, 20.x)

Pull Request URL: #2189
  • Loading branch information
benchristel authored Feb 4, 2025
1 parent 10ee67a commit 3ba74d1
Show file tree
Hide file tree
Showing 6 changed files with 50 additions and 1 deletion.
6 changes: 6 additions & 0 deletions .changeset/dull-jobs-crash.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@
---
"@khanacademy/perseus": minor
"@khanacademy/perseus-core": minor
---

Create a function to get the public options for a Table widget
1 change: 1 addition & 0 deletions packages/perseus-core/src/index.ts
Original file line number Diff line number Diff line change
Expand Up @@ -132,3 +132,4 @@ export {default as getDropdownPublicWidgetOptions} from "./widgets/dropdown/drop
export {default as getNumericInputPublicWidgetOptions} from "./widgets/numeric-input/numeric-input-util";
export {default as getNumberLinePublicWidgetOptions} from "./widgets/number-line/number-line-util";
export {default as getRadioPublicWidgetOptions} from "./widgets/radio/radio-util";
export {default as getTablePublicWidgetOptions} from "./widgets/table/table-util";
25 changes: 25 additions & 0 deletions packages/perseus-core/src/widgets/table/table-util.test.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,25 @@
import getTablePublicWidgetOptions from "./table-util";

import type {PerseusTableWidgetOptions} from "@khanacademy/perseus-core";

describe("getTablePublicWidgetOptions", () => {
it("removes the answers", () => {
const options: PerseusTableWidgetOptions = {
headers: ["a", "b"],
answers: [
["1", "2"],
["3", "4"],
],
columns: 2,
rows: 2,
};

const publicOptions = getTablePublicWidgetOptions(options);

expect(publicOptions).toEqual({
headers: ["a", "b"],
columns: 2,
rows: 2,
});
});
});
13 changes: 13 additions & 0 deletions packages/perseus-core/src/widgets/table/table-util.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,13 @@
import type {PerseusTableWidgetOptions} from "@khanacademy/perseus-core";

type TablePublicWidgetOptions = Pick<
PerseusTableWidgetOptions,
"headers" | "rows" | "columns"
>;

export default function getTablePublicWidgetOptions(
options: PerseusTableWidgetOptions,
): TablePublicWidgetOptions {
const {answers: _, ...publicOptions} = options;
return publicOptions;
}
4 changes: 3 additions & 1 deletion packages/perseus/src/types.ts
Original file line number Diff line number Diff line change
Expand Up @@ -22,6 +22,7 @@ import type {
getNumericInputPublicWidgetOptions,
getNumberLinePublicWidgetOptions,
getRadioPublicWidgetOptions,
getTablePublicWidgetOptions,
} from "@khanacademy/perseus-core";
import type {LinterContextProps} from "@khanacademy/perseus-linter";
import type {
Expand Down Expand Up @@ -526,7 +527,8 @@ export type PublicWidgetOptionsFunction =
| typeof getLabelImagePublicWidgetOptions
| typeof getSorterPublicWidgetOptions
| typeof getCSProgramPublicWidgetOptions
| typeof getNumberLinePublicWidgetOptions;
| typeof getNumberLinePublicWidgetOptions
| typeof getTablePublicWidgetOptions;

export type WidgetExports<
T extends React.ComponentType<any> & Widget = React.ComponentType<any>,
Expand Down
2 changes: 2 additions & 0 deletions packages/perseus/src/widgets/table/table.tsx
Original file line number Diff line number Diff line change
@@ -1,3 +1,4 @@
import {getTablePublicWidgetOptions} from "@khanacademy/perseus-core";
import {linterContextDefault} from "@khanacademy/perseus-linter";
import * as React from "react";
import ReactDOM from "react-dom";
Expand Down Expand Up @@ -322,4 +323,5 @@ export default {
transform: propTransform,
hidden: true,
isLintable: true,
getPublicWidgetOptions: getTablePublicWidgetOptions,
} satisfies WidgetExports<typeof Table>;

0 comments on commit 3ba74d1

Please sign in to comment.