mirror of
https://github.com/mermaid-js/mermaid.git
synced 2025-09-20 15:59:51 +02:00
Merge pull request #4602 from aloisklink/fix/make-quadrant-chart-options-optional
Make quadrant chart options TypeScript types optional
This commit is contained in:
@@ -1,56 +0,0 @@
|
|||||||
import * as configApi from './config.js';
|
|
||||||
|
|
||||||
describe('when working with site config', function () {
|
|
||||||
beforeEach(() => {
|
|
||||||
// Resets the site config to default config
|
|
||||||
configApi.setSiteConfig({});
|
|
||||||
});
|
|
||||||
it('should set site config and config properly', function () {
|
|
||||||
let config_0 = { foo: 'bar', bar: 0 };
|
|
||||||
configApi.setSiteConfig(config_0);
|
|
||||||
let config_1 = configApi.getSiteConfig();
|
|
||||||
let config_2 = configApi.getConfig();
|
|
||||||
expect(config_1.foo).toEqual(config_0.foo);
|
|
||||||
expect(config_1.bar).toEqual(config_0.bar);
|
|
||||||
expect(config_1).toEqual(config_2);
|
|
||||||
});
|
|
||||||
it('should respect secure keys when applying directives', function () {
|
|
||||||
let config_0 = {
|
|
||||||
foo: 'bar',
|
|
||||||
bar: 'cant-be-changed',
|
|
||||||
secure: [...configApi.defaultConfig.secure, 'bar'],
|
|
||||||
};
|
|
||||||
configApi.setSiteConfig(config_0);
|
|
||||||
const directive = { foo: 'baf', bar: 'should-not-be-allowed' };
|
|
||||||
const cfg = configApi.updateCurrentConfig(config_0, [directive]);
|
|
||||||
expect(cfg.foo).toEqual(directive.foo);
|
|
||||||
expect(cfg.bar).toBe(config_0.bar);
|
|
||||||
});
|
|
||||||
it('should set reset config properly', function () {
|
|
||||||
let config_0 = { foo: 'bar', bar: 0 };
|
|
||||||
configApi.setSiteConfig(config_0);
|
|
||||||
let config_1 = { foo: 'baf' };
|
|
||||||
configApi.setConfig(config_1);
|
|
||||||
let config_2 = configApi.getConfig();
|
|
||||||
expect(config_2.foo).toEqual(config_1.foo);
|
|
||||||
configApi.reset();
|
|
||||||
let config_3 = configApi.getConfig();
|
|
||||||
expect(config_3.foo).toEqual(config_0.foo);
|
|
||||||
let config_4 = configApi.getSiteConfig();
|
|
||||||
expect(config_4.foo).toEqual(config_0.foo);
|
|
||||||
});
|
|
||||||
it('should set global reset config properly', function () {
|
|
||||||
let config_0 = { foo: 'bar', bar: 0 };
|
|
||||||
configApi.setSiteConfig(config_0);
|
|
||||||
let config_1 = configApi.getSiteConfig();
|
|
||||||
expect(config_1.foo).toEqual(config_0.foo);
|
|
||||||
let config_2 = configApi.getConfig();
|
|
||||||
expect(config_2.foo).toEqual(config_0.foo);
|
|
||||||
configApi.setConfig({ foobar: 'bar0' });
|
|
||||||
let config_3 = configApi.getConfig();
|
|
||||||
expect(config_3.foobar).toEqual('bar0');
|
|
||||||
configApi.reset();
|
|
||||||
let config_4 = configApi.getConfig();
|
|
||||||
expect(config_4.foobar).toBeUndefined();
|
|
||||||
});
|
|
||||||
});
|
|
72
packages/mermaid/src/config.spec.ts
Normal file
72
packages/mermaid/src/config.spec.ts
Normal file
@@ -0,0 +1,72 @@
|
|||||||
|
import * as configApi from './config.js';
|
||||||
|
|
||||||
|
describe('when working with site config', function () {
|
||||||
|
beforeEach(() => {
|
||||||
|
// Resets the site config to default config
|
||||||
|
configApi.setSiteConfig({});
|
||||||
|
});
|
||||||
|
it('should set site config and config properly', function () {
|
||||||
|
const config_0 = { fontFamily: 'foo-font', fontSize: 150 };
|
||||||
|
configApi.setSiteConfig(config_0);
|
||||||
|
const config_1 = configApi.getSiteConfig();
|
||||||
|
const config_2 = configApi.getConfig();
|
||||||
|
expect(config_1.fontFamily).toEqual(config_0.fontFamily);
|
||||||
|
expect(config_1.fontSize).toEqual(config_0.fontSize);
|
||||||
|
expect(config_1).toEqual(config_2);
|
||||||
|
});
|
||||||
|
it('should respect secure keys when applying directives', function () {
|
||||||
|
const config_0 = {
|
||||||
|
fontFamily: 'foo-font',
|
||||||
|
fontSize: 12345, // can't be changed
|
||||||
|
secure: [...configApi.defaultConfig.secure!, 'fontSize'],
|
||||||
|
};
|
||||||
|
configApi.setSiteConfig(config_0);
|
||||||
|
const directive = { fontFamily: 'baf', fontSize: 54321 /* fontSize shouldn't be changed */ };
|
||||||
|
const cfg = configApi.updateCurrentConfig(config_0, [directive]);
|
||||||
|
expect(cfg.fontFamily).toEqual(directive.fontFamily);
|
||||||
|
expect(cfg.fontSize).toBe(config_0.fontSize);
|
||||||
|
});
|
||||||
|
it('should allow setting partial options', function () {
|
||||||
|
const defaultConfig = configApi.getConfig();
|
||||||
|
|
||||||
|
configApi.setConfig({
|
||||||
|
quadrantChart: {
|
||||||
|
chartHeight: 600,
|
||||||
|
},
|
||||||
|
});
|
||||||
|
|
||||||
|
const updatedConfig = configApi.getConfig();
|
||||||
|
|
||||||
|
// deep options we didn't update should remain the same
|
||||||
|
expect(defaultConfig.quadrantChart!.chartWidth).toEqual(
|
||||||
|
updatedConfig.quadrantChart!.chartWidth
|
||||||
|
);
|
||||||
|
});
|
||||||
|
it('should set reset config properly', function () {
|
||||||
|
const config_0 = { fontFamily: 'foo-font', fontSize: 150 };
|
||||||
|
configApi.setSiteConfig(config_0);
|
||||||
|
const config_1 = { fontFamily: 'baf' };
|
||||||
|
configApi.setConfig(config_1);
|
||||||
|
const config_2 = configApi.getConfig();
|
||||||
|
expect(config_2.fontFamily).toEqual(config_1.fontFamily);
|
||||||
|
configApi.reset();
|
||||||
|
const config_3 = configApi.getConfig();
|
||||||
|
expect(config_3.fontFamily).toEqual(config_0.fontFamily);
|
||||||
|
const config_4 = configApi.getSiteConfig();
|
||||||
|
expect(config_4.fontFamily).toEqual(config_0.fontFamily);
|
||||||
|
});
|
||||||
|
it('should set global reset config properly', function () {
|
||||||
|
const config_0 = { fontFamily: 'foo-font', fontSize: 150 };
|
||||||
|
configApi.setSiteConfig(config_0);
|
||||||
|
const config_1 = configApi.getSiteConfig();
|
||||||
|
expect(config_1.fontFamily).toEqual(config_0.fontFamily);
|
||||||
|
const config_2 = configApi.getConfig();
|
||||||
|
expect(config_2.fontFamily).toEqual(config_0.fontFamily);
|
||||||
|
configApi.setConfig({ altFontFamily: 'bar-font' });
|
||||||
|
const config_3 = configApi.getConfig();
|
||||||
|
expect(config_3.altFontFamily).toEqual('bar-font');
|
||||||
|
configApi.reset();
|
||||||
|
const config_4 = configApi.getConfig();
|
||||||
|
expect(config_4.altFontFamily).toBeUndefined();
|
||||||
|
});
|
||||||
|
});
|
@@ -229,24 +229,24 @@ export interface PieDiagramConfig extends BaseDiagramConfig {
|
|||||||
}
|
}
|
||||||
|
|
||||||
export interface QuadrantChartConfig extends BaseDiagramConfig {
|
export interface QuadrantChartConfig extends BaseDiagramConfig {
|
||||||
chartWidth: number;
|
chartWidth?: number;
|
||||||
chartHeight: number;
|
chartHeight?: number;
|
||||||
titleFontSize: number;
|
titleFontSize?: number;
|
||||||
titlePadding: number;
|
titlePadding?: number;
|
||||||
quadrantPadding: number;
|
quadrantPadding?: number;
|
||||||
xAxisLabelPadding: number;
|
xAxisLabelPadding?: number;
|
||||||
yAxisLabelPadding: number;
|
yAxisLabelPadding?: number;
|
||||||
xAxisLabelFontSize: number;
|
xAxisLabelFontSize?: number;
|
||||||
yAxisLabelFontSize: number;
|
yAxisLabelFontSize?: number;
|
||||||
quadrantLabelFontSize: number;
|
quadrantLabelFontSize?: number;
|
||||||
quadrantTextTopPadding: number;
|
quadrantTextTopPadding?: number;
|
||||||
pointTextPadding: number;
|
pointTextPadding?: number;
|
||||||
pointLabelFontSize: number;
|
pointLabelFontSize?: number;
|
||||||
pointRadius: number;
|
pointRadius?: number;
|
||||||
xAxisPosition: 'top' | 'bottom';
|
xAxisPosition?: 'top' | 'bottom';
|
||||||
yAxisPosition: 'left' | 'right';
|
yAxisPosition?: 'left' | 'right';
|
||||||
quadrantInternalBorderStrokeWidth: number;
|
quadrantInternalBorderStrokeWidth?: number;
|
||||||
quadrantExternalBorderStrokeWidth: number;
|
quadrantExternalBorderStrokeWidth?: number;
|
||||||
}
|
}
|
||||||
|
|
||||||
export interface ErDiagramConfig extends BaseDiagramConfig {
|
export interface ErDiagramConfig extends BaseDiagramConfig {
|
||||||
|
@@ -1,7 +1,7 @@
|
|||||||
// @ts-ignore: TODO Fix ts errors
|
// @ts-ignore: TODO Fix ts errors
|
||||||
import { scaleLinear } from 'd3';
|
import { scaleLinear } from 'd3';
|
||||||
import { log } from '../../logger.js';
|
import { log } from '../../logger.js';
|
||||||
import { QuadrantChartConfig } from '../../config.type.js';
|
import type { BaseDiagramConfig, QuadrantChartConfig } from '../../config.type.js';
|
||||||
import defaultConfig from '../../defaultConfig.js';
|
import defaultConfig from '../../defaultConfig.js';
|
||||||
import { getThemeVariables } from '../../themes/theme-default.js';
|
import { getThemeVariables } from '../../themes/theme-default.js';
|
||||||
|
|
||||||
@@ -71,7 +71,8 @@ export interface quadrantBuilderData {
|
|||||||
points: QuadrantPointInputType[];
|
points: QuadrantPointInputType[];
|
||||||
}
|
}
|
||||||
|
|
||||||
export interface QuadrantBuilderConfig extends QuadrantChartConfig {
|
export interface QuadrantBuilderConfig
|
||||||
|
extends Required<Omit<QuadrantChartConfig, keyof BaseDiagramConfig>> {
|
||||||
showXAxis: boolean;
|
showXAxis: boolean;
|
||||||
showYAxis: boolean;
|
showYAxis: boolean;
|
||||||
showTitle: boolean;
|
showTitle: boolean;
|
||||||
|
Reference in New Issue
Block a user