feat(toggle): add toggleOnOffLabels global config option (#26087)

Co-authored-by: Liam DeBeasi <liamdebeasi@users.noreply.github.com>
This commit is contained in:
Hans
2022-10-31 15:49:15 +01:00
committed by GitHub
parent b364d58710
commit 43e2b3975d
3 changed files with 50 additions and 1 deletions

View File

@ -0,0 +1,43 @@
import { newSpecPage } from '@stencil/core/testing';
import { config } from '../../../global/config';
import { Toggle } from '../toggle';
describe('toggle', () => {
beforeEach(() => {
config.reset({});
});
const newToggle = async (): Promise<Toggle> => {
const { rootInstance } = await newSpecPage({
components: [Toggle],
html: `<ion-toggle></ion-toggle>`,
});
return rootInstance;
};
describe('enableOnOffLabels', () => {
it('should disable on/off labels when setting to false on component', async () => {
const t = await newToggle();
t.enableOnOffLabels = false;
config.reset({
toggleOnOffLabels: true,
});
expect(t.enableOnOffLabels).toBe(false);
});
it('should enable on/off labels when setting to true on global config', async () => {
config.reset({
toggleOnOffLabels: true,
});
const t = await newToggle();
expect(t.enableOnOffLabels).toBe(true);
});
it('should enable on/off labels when setting to true on component', async () => {
const t = await newToggle();
t.enableOnOffLabels = true;
expect(t.enableOnOffLabels).toBe(true);
});
});
});

View File

@ -2,6 +2,7 @@ import type { ComponentInterface, EventEmitter } from '@stencil/core';
import { Component, Element, Event, Host, Prop, State, Watch, h } from '@stencil/core'; import { Component, Element, Event, Host, Prop, State, Watch, h } from '@stencil/core';
import { checkmarkOutline, removeOutline, ellipseOutline } from 'ionicons/icons'; import { checkmarkOutline, removeOutline, ellipseOutline } from 'ionicons/icons';
import { config } from '../../global/config';
import { getIonMode } from '../../global/ionic-global'; import { getIonMode } from '../../global/ionic-global';
import type { Color, Gesture, GestureDetail, Mode, StyleEventDetail, ToggleChangeEventDetail } from '../../interface'; import type { Color, Gesture, GestureDetail, Mode, StyleEventDetail, ToggleChangeEventDetail } from '../../interface';
import { getAriaLabel, renderHiddenInput } from '../../utils/helpers'; import { getAriaLabel, renderHiddenInput } from '../../utils/helpers';
@ -67,7 +68,7 @@ export class Toggle implements ComponentInterface {
/** /**
* Enables the on/off accessibility switch labels within the toggle. * Enables the on/off accessibility switch labels within the toggle.
*/ */
@Prop() enableOnOffLabels: boolean | undefined = undefined; @Prop() enableOnOffLabels: boolean | undefined = config.get('toggleOnOffLabels');
/** /**
* Emitted when the value property has changed. * Emitted when the value property has changed.

View File

@ -64,6 +64,11 @@ export interface IonicConfig {
*/ */
spinner?: SpinnerTypes; spinner?: SpinnerTypes;
/**
* Overrides the default enableOnOffLabels in all `<ion-toggle>` components.
*/
toggleOnOffLabels?: boolean;
/** /**
* Overrides the default spinner for all `ion-loading` overlays, ie. the ones * Overrides the default spinner for all `ion-loading` overlays, ie. the ones
* created with `ion-loading-controller`. * created with `ion-loading-controller`.