Skip to content

Commit 2444c36

Browse files
authored
Merge pull request #3398 from plotly/feature/dcc-refactor-input
dcc: refactor input
2 parents 36c7171 + 0bfaa19 commit 2444c36

File tree

29 files changed

+1358
-19967
lines changed

29 files changed

+1358
-19967
lines changed

@plotly/dash-generator-test-component-typescript/generator.test.ts

Lines changed: 34 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -289,6 +289,40 @@ describe('Test Typescript component metadata generation', () => {
289289
expect(propType.value[1].value).toBe('small');
290290
}
291291
)
292+
293+
test(
294+
'union of boolean and literal values', () => {
295+
const propType = R.path(
296+
propPath('TypeScriptComponent', 'boolean_enum').concat(
297+
'type'
298+
),
299+
metadata
300+
);
301+
expect(propType.name).toBe('union');
302+
expect(propType.value.length).toBe(3);
303+
expect(propType.value[0].name).toBe('bool');
304+
expect(propType.value[1].name).toBe('literal');
305+
expect(propType.value[2].name).toBe('literal');
306+
expect(propType.value[0].value).toBe(undefined);
307+
expect(propType.value[1].value).toBe('small');
308+
expect(propType.value[2].value).toBe('large');
309+
}
310+
)
311+
312+
test(
313+
'union of duplicated types', () => {
314+
const propType = R.path(
315+
propPath('TypeScriptComponent', 'duplicated_enum').concat(
316+
'type'
317+
),
318+
metadata
319+
);
320+
expect(propType.name).toBe('union');
321+
expect(propType.value.length).toBe(2);
322+
expect(propType.value[0].name).toBe('number');
323+
expect(propType.value[1].name).toBe('bool');
324+
}
325+
)
292326
});
293327

294328
describe('Test component comments', () => {

@plotly/dash-generator-test-component-typescript/src/props.ts

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -48,7 +48,9 @@ export type TypescriptComponentProps = {
4848
object_of_string?: {[k: string]: string};
4949
object_of_components?: {[k: string]: JSX.Element};
5050
ignored_prop?: {ignore: {me: string}};
51-
union_enum?: number | 'small' | 'large'
51+
union_enum?: number | 'small' | 'large';
52+
boolean_enum?: boolean | 'small' | 'large';
53+
duplicated_enum?: boolean | number | number;
5254
};
5355

5456
export type WrappedHTMLProps = {

components/dash-core-components/.eslintrc

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -25,6 +25,19 @@
2525
"jasmine": true,
2626
"node": true
2727
},
28+
"overrides": [
29+
{
30+
"files": ["*.ts", "*.tsx"],
31+
"parser": "@typescript-eslint/parser",
32+
"plugins": ["@typescript-eslint"],
33+
"extends": [
34+
"plugin:@typescript-eslint/recommended"
35+
],
36+
"rules": {
37+
// You can add TypeScript-specific rules here
38+
}
39+
}
40+
],
2841
"plugins": [
2942
"react",
3043
"import"

components/dash-core-components/dash_core_components_base/__init__.py

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -122,6 +122,11 @@
122122
"namespace": "dash",
123123
"dynamic": True,
124124
},
125+
{
126+
"dev_package_path": "dcc/proptypes.js",
127+
"dev_only": True,
128+
"namespace": "dash",
129+
},
125130
]
126131
)
127132

0 commit comments

Comments
 (0)