feat(checkbox): display as block when justify or alignment properties are defined (#29783)
- Change the checkbox's `display` property to `block` when the `justify` or `alignment` property is set. - Set the default `justify-content` style to `space-between` so that a checkbox with `width: 100%` set without `justify` or `alignment` set will still have the same default - Modifies the `label` e2e test to remove the explicit width as setting the property will make them full-width - Adds two examples to the `label` e2e test of labels that do not have `justify` set but use `width: 100%` to ensure they are working as expected without it
@ -393,12 +393,12 @@ ion-card-title,css-prop,--color,ios
|
|||||||
ion-card-title,css-prop,--color,md
|
ion-card-title,css-prop,--color,md
|
||||||
|
|
||||||
ion-checkbox,shadow
|
ion-checkbox,shadow
|
||||||
ion-checkbox,prop,alignment,"center" | "start",'center',false,false
|
ion-checkbox,prop,alignment,"center" | "start" | undefined,undefined,false,false
|
||||||
ion-checkbox,prop,checked,boolean,false,false,false
|
ion-checkbox,prop,checked,boolean,false,false,false
|
||||||
ion-checkbox,prop,color,"danger" | "dark" | "light" | "medium" | "primary" | "secondary" | "success" | "tertiary" | "warning" | string & Record<never, never> | undefined,undefined,false,true
|
ion-checkbox,prop,color,"danger" | "dark" | "light" | "medium" | "primary" | "secondary" | "success" | "tertiary" | "warning" | string & Record<never, never> | undefined,undefined,false,true
|
||||||
ion-checkbox,prop,disabled,boolean,false,false,false
|
ion-checkbox,prop,disabled,boolean,false,false,false
|
||||||
ion-checkbox,prop,indeterminate,boolean,false,false,false
|
ion-checkbox,prop,indeterminate,boolean,false,false,false
|
||||||
ion-checkbox,prop,justify,"end" | "space-between" | "start",'space-between',false,false
|
ion-checkbox,prop,justify,"end" | "space-between" | "start" | undefined,undefined,false,false
|
||||||
ion-checkbox,prop,labelPlacement,"end" | "fixed" | "stacked" | "start",'start',false,false
|
ion-checkbox,prop,labelPlacement,"end" | "fixed" | "stacked" | "start",'start',false,false
|
||||||
ion-checkbox,prop,mode,"ios" | "md",undefined,false,false
|
ion-checkbox,prop,mode,"ios" | "md",undefined,false,false
|
||||||
ion-checkbox,prop,name,string,this.inputId,false,false
|
ion-checkbox,prop,name,string,this.inputId,false,false
|
||||||
|
12
core/src/components.d.ts
vendored
@ -601,9 +601,9 @@ export namespace Components {
|
|||||||
}
|
}
|
||||||
interface IonCheckbox {
|
interface IonCheckbox {
|
||||||
/**
|
/**
|
||||||
* How to control the alignment of the checkbox and label on the cross axis. `"start"`: The label and control will appear on the left of the cross axis in LTR, and on the right side in RTL. `"center"`: The label and control will appear at the center of the cross axis in both LTR and RTL.
|
* How to control the alignment of the checkbox and label on the cross axis. `"start"`: The label and control will appear on the left of the cross axis in LTR, and on the right side in RTL. `"center"`: The label and control will appear at the center of the cross axis in both LTR and RTL. Setting this property will change the checkbox `display` to `block`.
|
||||||
*/
|
*/
|
||||||
"alignment": 'start' | 'center';
|
"alignment"?: 'start' | 'center';
|
||||||
/**
|
/**
|
||||||
* If `true`, the checkbox is selected.
|
* If `true`, the checkbox is selected.
|
||||||
*/
|
*/
|
||||||
@ -621,9 +621,9 @@ export namespace Components {
|
|||||||
*/
|
*/
|
||||||
"indeterminate": boolean;
|
"indeterminate": boolean;
|
||||||
/**
|
/**
|
||||||
* How to pack the label and checkbox within a line. `"start"`: The label and checkbox will appear on the left in LTR and on the right in RTL. `"end"`: The label and checkbox will appear on the right in LTR and on the left in RTL. `"space-between"`: The label and checkbox will appear on opposite ends of the line with space between the two elements.
|
* How to pack the label and checkbox within a line. `"start"`: The label and checkbox will appear on the left in LTR and on the right in RTL. `"end"`: The label and checkbox will appear on the right in LTR and on the left in RTL. `"space-between"`: The label and checkbox will appear on opposite ends of the line with space between the two elements. Setting this property will change the checkbox `display` to `block`.
|
||||||
*/
|
*/
|
||||||
"justify": 'start' | 'end' | 'space-between';
|
"justify"?: 'start' | 'end' | 'space-between';
|
||||||
/**
|
/**
|
||||||
* Where to place the label relative to the checkbox. `"start"`: The label will appear to the left of the checkbox in LTR and to the right in RTL. `"end"`: The label will appear to the right of the checkbox in LTR and to the left in RTL. `"fixed"`: The label has the same behavior as `"start"` except it also has a fixed width. Long text will be truncated with ellipses ("..."). `"stacked"`: The label will appear above the checkbox regardless of the direction. The alignment of the label can be controlled with the `alignment` property.
|
* Where to place the label relative to the checkbox. `"start"`: The label will appear to the left of the checkbox in LTR and to the right in RTL. `"end"`: The label will appear to the right of the checkbox in LTR and to the left in RTL. `"fixed"`: The label has the same behavior as `"start"` except it also has a fixed width. Long text will be truncated with ellipses ("..."). `"stacked"`: The label will appear above the checkbox regardless of the direction. The alignment of the label can be controlled with the `alignment` property.
|
||||||
*/
|
*/
|
||||||
@ -5321,7 +5321,7 @@ declare namespace LocalJSX {
|
|||||||
}
|
}
|
||||||
interface IonCheckbox {
|
interface IonCheckbox {
|
||||||
/**
|
/**
|
||||||
* How to control the alignment of the checkbox and label on the cross axis. `"start"`: The label and control will appear on the left of the cross axis in LTR, and on the right side in RTL. `"center"`: The label and control will appear at the center of the cross axis in both LTR and RTL.
|
* How to control the alignment of the checkbox and label on the cross axis. `"start"`: The label and control will appear on the left of the cross axis in LTR, and on the right side in RTL. `"center"`: The label and control will appear at the center of the cross axis in both LTR and RTL. Setting this property will change the checkbox `display` to `block`.
|
||||||
*/
|
*/
|
||||||
"alignment"?: 'start' | 'center';
|
"alignment"?: 'start' | 'center';
|
||||||
/**
|
/**
|
||||||
@ -5341,7 +5341,7 @@ declare namespace LocalJSX {
|
|||||||
*/
|
*/
|
||||||
"indeterminate"?: boolean;
|
"indeterminate"?: boolean;
|
||||||
/**
|
/**
|
||||||
* How to pack the label and checkbox within a line. `"start"`: The label and checkbox will appear on the left in LTR and on the right in RTL. `"end"`: The label and checkbox will appear on the right in LTR and on the left in RTL. `"space-between"`: The label and checkbox will appear on opposite ends of the line with space between the two elements.
|
* How to pack the label and checkbox within a line. `"start"`: The label and checkbox will appear on the left in LTR and on the right in RTL. `"end"`: The label and checkbox will appear on the right in LTR and on the left in RTL. `"space-between"`: The label and checkbox will appear on opposite ends of the line with space between the two elements. Setting this property will change the checkbox `display` to `block`.
|
||||||
*/
|
*/
|
||||||
"justify"?: 'start' | 'end' | 'space-between';
|
"justify"?: 'start' | 'end' | 'space-between';
|
||||||
/**
|
/**
|
||||||
|
@ -72,6 +72,7 @@
|
|||||||
flex-grow: 1;
|
flex-grow: 1;
|
||||||
|
|
||||||
align-items: center;
|
align-items: center;
|
||||||
|
justify-content: space-between;
|
||||||
|
|
||||||
height: inherit;
|
height: inherit;
|
||||||
|
|
||||||
@ -170,6 +171,20 @@ input {
|
|||||||
align-items: center;
|
align-items: center;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Justify Content & Align Items
|
||||||
|
// ---------------------------------------------
|
||||||
|
|
||||||
|
// The checkbox should be displayed as block when either justify
|
||||||
|
// or alignment is set; otherwise, these properties will have no
|
||||||
|
// visible effect.
|
||||||
|
:host(.checkbox-justify-space-between),
|
||||||
|
:host(.checkbox-justify-start),
|
||||||
|
:host(.checkbox-justify-end),
|
||||||
|
:host(.checkbox-alignment-start),
|
||||||
|
:host(.checkbox-alignment-center) {
|
||||||
|
display: block;
|
||||||
|
}
|
||||||
|
|
||||||
// Label Placement - Start
|
// Label Placement - Start
|
||||||
// ----------------------------------------------------------------
|
// ----------------------------------------------------------------
|
||||||
|
|
||||||
|
@ -86,15 +86,17 @@ export class Checkbox implements ComponentInterface {
|
|||||||
* on the left in RTL.
|
* on the left in RTL.
|
||||||
* `"space-between"`: The label and checkbox will appear on opposite
|
* `"space-between"`: The label and checkbox will appear on opposite
|
||||||
* ends of the line with space between the two elements.
|
* ends of the line with space between the two elements.
|
||||||
|
* Setting this property will change the checkbox `display` to `block`.
|
||||||
*/
|
*/
|
||||||
@Prop() justify: 'start' | 'end' | 'space-between' = 'space-between';
|
@Prop() justify?: 'start' | 'end' | 'space-between';
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* How to control the alignment of the checkbox and label on the cross axis.
|
* How to control the alignment of the checkbox and label on the cross axis.
|
||||||
* `"start"`: The label and control will appear on the left of the cross axis in LTR, and on the right side in RTL.
|
* `"start"`: The label and control will appear on the left of the cross axis in LTR, and on the right side in RTL.
|
||||||
* `"center"`: The label and control will appear at the center of the cross axis in both LTR and RTL.
|
* `"center"`: The label and control will appear at the center of the cross axis in both LTR and RTL.
|
||||||
|
* Setting this property will change the checkbox `display` to `block`.
|
||||||
*/
|
*/
|
||||||
@Prop() alignment: 'start' | 'center' = 'center';
|
@Prop() alignment?: 'start' | 'center';
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Emitted when the checked property has changed as a result of a user action such as a click.
|
* Emitted when the checked property has changed as a result of a user action such as a click.
|
||||||
@ -194,8 +196,8 @@ export class Checkbox implements ComponentInterface {
|
|||||||
'checkbox-disabled': disabled,
|
'checkbox-disabled': disabled,
|
||||||
'checkbox-indeterminate': indeterminate,
|
'checkbox-indeterminate': indeterminate,
|
||||||
interactive: true,
|
interactive: true,
|
||||||
[`checkbox-justify-${justify}`]: true,
|
[`checkbox-justify-${justify}`]: justify !== undefined,
|
||||||
[`checkbox-alignment-${alignment}`]: true,
|
[`checkbox-alignment-${alignment}`]: alignment !== undefined,
|
||||||
[`checkbox-label-placement-${labelPlacement}`]: true,
|
[`checkbox-label-placement-${labelPlacement}`]: true,
|
||||||
})}
|
})}
|
||||||
onClick={this.onClick}
|
onClick={this.onClick}
|
||||||
|
@ -36,7 +36,7 @@ configs({ directions: ['ltr'] }).forEach(({ title, config, screenshot }) => {
|
|||||||
font-size: 310%;
|
font-size: 310%;
|
||||||
}
|
}
|
||||||
</style>
|
</style>
|
||||||
<ion-checkbox justify="start" checked>Checked</ion-checkbox>
|
<ion-checkbox checked>Checked</ion-checkbox>
|
||||||
`,
|
`,
|
||||||
config
|
config
|
||||||
);
|
);
|
||||||
|
@ -15,7 +15,6 @@
|
|||||||
</head>
|
</head>
|
||||||
<style>
|
<style>
|
||||||
ion-checkbox {
|
ion-checkbox {
|
||||||
display: block;
|
|
||||||
margin-bottom: 8px;
|
margin-bottom: 8px;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -23,6 +22,10 @@
|
|||||||
transform: scale(0.5);
|
transform: scale(0.5);
|
||||||
transform-origin: center;
|
transform-origin: center;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
hr {
|
||||||
|
background: #ddd;
|
||||||
|
}
|
||||||
</style>
|
</style>
|
||||||
<body>
|
<body>
|
||||||
<ion-app>
|
<ion-app>
|
||||||
@ -33,15 +36,19 @@
|
|||||||
</ion-header>
|
</ion-header>
|
||||||
|
|
||||||
<ion-content class="ion-padding">
|
<ion-content class="ion-padding">
|
||||||
<div id="checkboxes">
|
<ion-checkbox>Unchecked</ion-checkbox><br />
|
||||||
<ion-checkbox justify="start">Unchecked</ion-checkbox>
|
<ion-checkbox checked>Checked</ion-checkbox><br />
|
||||||
<ion-checkbox justify="start" checked>Checked</ion-checkbox>
|
<ion-checkbox disabled>Disabled</ion-checkbox><br />
|
||||||
<ion-checkbox justify="start" disabled>Disabled</ion-checkbox>
|
<ion-checkbox disabled checked>Disabled, Checked</ion-checkbox><br />
|
||||||
<ion-checkbox justify="start" disabled checked>Disabled, Checked</ion-checkbox>
|
<ion-checkbox checked style="--checkmark-width: 7">Checkmark Width</ion-checkbox><br />
|
||||||
<ion-checkbox justify="start" checked style="--checkmark-width: 7">Checkmark Width</ion-checkbox>
|
<ion-checkbox checked class="checkbox-part">Checkmark Shadow Part</ion-checkbox><br />
|
||||||
<ion-checkbox justify="start" checked class="checkbox-part">Checkmark Shadow Part</ion-checkbox>
|
<ion-checkbox checked style="--size: 100px">--size</ion-checkbox><br />
|
||||||
<ion-checkbox justify="start" checked style="--size: 100px">--size</ion-checkbox>
|
|
||||||
</div>
|
<hr />
|
||||||
|
|
||||||
|
<ion-checkbox checked>Default width</ion-checkbox><br />
|
||||||
|
<ion-checkbox checked style="width: 200px">Specified width</ion-checkbox><br />
|
||||||
|
<ion-checkbox checked style="width: 100%">Full-width</ion-checkbox><br />
|
||||||
</ion-content>
|
</ion-content>
|
||||||
</ion-app>
|
</ion-app>
|
||||||
</body>
|
</body>
|
||||||
|
Before Width: | Height: | Size: 2.3 KiB After Width: | Height: | Size: 2.1 KiB |
Before Width: | Height: | Size: 3.0 KiB After Width: | Height: | Size: 3.0 KiB |
Before Width: | Height: | Size: 2.0 KiB After Width: | Height: | Size: 2.0 KiB |
@ -2,20 +2,50 @@ import { expect } from '@playwright/test';
|
|||||||
import { configs, test } from '@utils/test/playwright';
|
import { configs, test } from '@utils/test/playwright';
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* By default ion-checkbox only takes up
|
* By default ion-checkbox only takes up as much space
|
||||||
* as much space as it needs. Justification is
|
* as it needs. Justification is used for when the
|
||||||
* used for when the checkbox takes up the full
|
* checkbox should take up the full line (such as in an
|
||||||
* line (such as in an ion-item). As a result,
|
* ion-item or when it has 100% width).
|
||||||
* we set the width of the checkbox so we can
|
|
||||||
* see the justification results.
|
|
||||||
*/
|
*/
|
||||||
configs().forEach(({ title, screenshot, config }) => {
|
configs().forEach(({ title, screenshot, config }) => {
|
||||||
test.describe(title('checkbox: label'), () => {
|
test.describe(title('checkbox: label'), () => {
|
||||||
|
test.describe('checkbox: default placement', () => {
|
||||||
|
test('should render a space between justification with a full width checkbox', async ({ page }) => {
|
||||||
|
await page.setContent(
|
||||||
|
`
|
||||||
|
<ion-checkbox style="width: 100%">
|
||||||
|
Label
|
||||||
|
</ion-checkbox>
|
||||||
|
`,
|
||||||
|
config
|
||||||
|
);
|
||||||
|
|
||||||
|
const checkbox = page.locator('ion-checkbox');
|
||||||
|
await expect(checkbox).toHaveScreenshot(screenshot(`checkbox-label-full-width`));
|
||||||
|
});
|
||||||
|
|
||||||
|
test('should truncate long labels with ellipses', async ({ page }) => {
|
||||||
|
// Checkbox needs to be full width to truncate properly
|
||||||
|
// because it is not inside of an `ion-app` in tests
|
||||||
|
await page.setContent(
|
||||||
|
`
|
||||||
|
<ion-checkbox style="width: 100%">
|
||||||
|
Long Label Long Label Long Label Long Label Long Label Long Label
|
||||||
|
</ion-checkbox>
|
||||||
|
`,
|
||||||
|
config
|
||||||
|
);
|
||||||
|
|
||||||
|
const checkbox = page.locator('ion-checkbox');
|
||||||
|
await expect(checkbox).toHaveScreenshot(screenshot(`checkbox-label-long-label`));
|
||||||
|
});
|
||||||
|
});
|
||||||
|
|
||||||
test.describe('checkbox: start placement', () => {
|
test.describe('checkbox: start placement', () => {
|
||||||
test('should render a start justification with label in the start position', async ({ page }) => {
|
test('should render a start justification with label in the start position', async ({ page }) => {
|
||||||
await page.setContent(
|
await page.setContent(
|
||||||
`
|
`
|
||||||
<ion-checkbox label-placement="start" justify="start" style="width: 200px">Label</ion-checkbox>
|
<ion-checkbox label-placement="start" justify="start">Label</ion-checkbox>
|
||||||
`,
|
`,
|
||||||
config
|
config
|
||||||
);
|
);
|
||||||
@ -27,7 +57,7 @@ configs().forEach(({ title, screenshot, config }) => {
|
|||||||
test('should render an end justification with label in the start position', async ({ page }) => {
|
test('should render an end justification with label in the start position', async ({ page }) => {
|
||||||
await page.setContent(
|
await page.setContent(
|
||||||
`
|
`
|
||||||
<ion-checkbox label-placement="start" justify="end" style="width: 200px">Label</ion-checkbox>
|
<ion-checkbox label-placement="start" justify="end">Label</ion-checkbox>
|
||||||
`,
|
`,
|
||||||
config
|
config
|
||||||
);
|
);
|
||||||
@ -39,7 +69,7 @@ configs().forEach(({ title, screenshot, config }) => {
|
|||||||
test('should render a space between justification with label in the start position', async ({ page }) => {
|
test('should render a space between justification with label in the start position', async ({ page }) => {
|
||||||
await page.setContent(
|
await page.setContent(
|
||||||
`
|
`
|
||||||
<ion-checkbox label-placement="start" justify="space-between" style="width: 200px">Label</ion-checkbox>
|
<ion-checkbox label-placement="start" justify="space-between">Label</ion-checkbox>
|
||||||
`,
|
`,
|
||||||
config
|
config
|
||||||
);
|
);
|
||||||
@ -51,7 +81,7 @@ configs().forEach(({ title, screenshot, config }) => {
|
|||||||
test('should truncate long labels with ellipses', async ({ page }) => {
|
test('should truncate long labels with ellipses', async ({ page }) => {
|
||||||
await page.setContent(
|
await page.setContent(
|
||||||
`
|
`
|
||||||
<ion-checkbox label-placement="start" justify="start" style="width: 200px">
|
<ion-checkbox label-placement="start" justify="start">
|
||||||
Long Label Long Label Long Label Long Label Long Label Long Label
|
Long Label Long Label Long Label Long Label Long Label Long Label
|
||||||
</ion-checkbox>
|
</ion-checkbox>
|
||||||
`,
|
`,
|
||||||
@ -59,7 +89,7 @@ configs().forEach(({ title, screenshot, config }) => {
|
|||||||
);
|
);
|
||||||
|
|
||||||
const checkbox = page.locator('ion-checkbox');
|
const checkbox = page.locator('ion-checkbox');
|
||||||
await expect(checkbox).toHaveScreenshot(screenshot(`checkbox-long-label`));
|
await expect(checkbox).toHaveScreenshot(screenshot(`checkbox-label-start-justify-start-long-label`));
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
|
|
||||||
@ -67,7 +97,7 @@ configs().forEach(({ title, screenshot, config }) => {
|
|||||||
test('should render a start justification with label in the end position', async ({ page }) => {
|
test('should render a start justification with label in the end position', async ({ page }) => {
|
||||||
await page.setContent(
|
await page.setContent(
|
||||||
`
|
`
|
||||||
<ion-checkbox label-placement="end" justify="start" style="width: 200px">Label</ion-checkbox>
|
<ion-checkbox label-placement="end" justify="start">Label</ion-checkbox>
|
||||||
`,
|
`,
|
||||||
config
|
config
|
||||||
);
|
);
|
||||||
@ -79,7 +109,7 @@ configs().forEach(({ title, screenshot, config }) => {
|
|||||||
test('should render an end justification with label in the end position', async ({ page }) => {
|
test('should render an end justification with label in the end position', async ({ page }) => {
|
||||||
await page.setContent(
|
await page.setContent(
|
||||||
`
|
`
|
||||||
<ion-checkbox label-placement="end" justify="end" style="width: 200px">Label</ion-checkbox>
|
<ion-checkbox label-placement="end" justify="end">Label</ion-checkbox>
|
||||||
`,
|
`,
|
||||||
config
|
config
|
||||||
);
|
);
|
||||||
@ -91,7 +121,7 @@ configs().forEach(({ title, screenshot, config }) => {
|
|||||||
test('should render a space between justification with label in the end position', async ({ page }) => {
|
test('should render a space between justification with label in the end position', async ({ page }) => {
|
||||||
await page.setContent(
|
await page.setContent(
|
||||||
`
|
`
|
||||||
<ion-checkbox label-placement="end" justify="space-between" style="width: 200px">Label</ion-checkbox>
|
<ion-checkbox label-placement="end" justify="space-between">Label</ion-checkbox>
|
||||||
`,
|
`,
|
||||||
config
|
config
|
||||||
);
|
);
|
||||||
@ -105,7 +135,7 @@ configs().forEach(({ title, screenshot, config }) => {
|
|||||||
test('should render a start justification with label in the fixed position', async ({ page }) => {
|
test('should render a start justification with label in the fixed position', async ({ page }) => {
|
||||||
await page.setContent(
|
await page.setContent(
|
||||||
`
|
`
|
||||||
<ion-checkbox label-placement="fixed" justify="start" style="width: 200px">This is a long label</ion-checkbox>
|
<ion-checkbox label-placement="fixed" justify="start">This is a long label</ion-checkbox>
|
||||||
`,
|
`,
|
||||||
config
|
config
|
||||||
);
|
);
|
||||||
@ -117,7 +147,7 @@ configs().forEach(({ title, screenshot, config }) => {
|
|||||||
test('should render an end justification with label in the fixed position', async ({ page }) => {
|
test('should render an end justification with label in the fixed position', async ({ page }) => {
|
||||||
await page.setContent(
|
await page.setContent(
|
||||||
`
|
`
|
||||||
<ion-checkbox label-placement="fixed" justify="end" style="width: 200px">This is a long label</ion-checkbox>
|
<ion-checkbox label-placement="fixed" justify="end">This is a long label</ion-checkbox>
|
||||||
`,
|
`,
|
||||||
config
|
config
|
||||||
);
|
);
|
||||||
@ -129,7 +159,7 @@ configs().forEach(({ title, screenshot, config }) => {
|
|||||||
test('should render a space between justification with label in the fixed position', async ({ page }) => {
|
test('should render a space between justification with label in the fixed position', async ({ page }) => {
|
||||||
await page.setContent(
|
await page.setContent(
|
||||||
`
|
`
|
||||||
<ion-checkbox label-placement="fixed" justify="space-between" style="width: 200px">This is a long label</ion-checkbox>
|
<ion-checkbox label-placement="fixed" justify="space-between">This is a long label</ion-checkbox>
|
||||||
`,
|
`,
|
||||||
config
|
config
|
||||||
);
|
);
|
||||||
@ -143,7 +173,7 @@ configs().forEach(({ title, screenshot, config }) => {
|
|||||||
test('should align the label to the start of the container in the stacked position', async ({ page }) => {
|
test('should align the label to the start of the container in the stacked position', async ({ page }) => {
|
||||||
await page.setContent(
|
await page.setContent(
|
||||||
`
|
`
|
||||||
<ion-checkbox label-placement="stacked" alignment="start" style="width: 200px">This is a long label</ion-checkbox>
|
<ion-checkbox label-placement="stacked" alignment="start">This is a long label</ion-checkbox>
|
||||||
`,
|
`,
|
||||||
config
|
config
|
||||||
);
|
);
|
||||||
@ -155,7 +185,7 @@ configs().forEach(({ title, screenshot, config }) => {
|
|||||||
test('should align the label to the center of the container in the stacked position', async ({ page }) => {
|
test('should align the label to the center of the container in the stacked position', async ({ page }) => {
|
||||||
await page.setContent(
|
await page.setContent(
|
||||||
`
|
`
|
||||||
<ion-checkbox label-placement="stacked" alignment="center" style="width: 200px">This is a long label</ion-checkbox>
|
<ion-checkbox label-placement="stacked" alignment="center">This is a long label</ion-checkbox>
|
||||||
`,
|
`,
|
||||||
config
|
config
|
||||||
);
|
);
|
||||||
@ -172,7 +202,7 @@ configs({ modes: ['md'], directions: ['ltr'] }).forEach(({ title, config, screen
|
|||||||
test('long label should truncate', async ({ page }) => {
|
test('long label should truncate', async ({ page }) => {
|
||||||
await page.setContent(
|
await page.setContent(
|
||||||
`
|
`
|
||||||
<ion-checkbox label-placement="stacked" alignment="start" style="width: 200px">Enable Notifications Enable Notifications Enable Notifications Enable Notifications Enable Notifications Enable Notifications Enable Notifications</ion-checkbox>
|
<ion-checkbox label-placement="stacked" alignment="start">Enable Notifications Enable Notifications Enable Notifications Enable Notifications Enable Notifications Enable Notifications Enable Notifications</ion-checkbox>
|
||||||
`,
|
`,
|
||||||
config
|
config
|
||||||
);
|
);
|
||||||
|
Before Width: | Height: | Size: 1.5 KiB After Width: | Height: | Size: 1.4 KiB |
Before Width: | Height: | Size: 1.4 KiB After Width: | Height: | Size: 1.5 KiB |
Before Width: | Height: | Size: 1.4 KiB After Width: | Height: | Size: 1.4 KiB |
Before Width: | Height: | Size: 1.5 KiB After Width: | Height: | Size: 1.4 KiB |
Before Width: | Height: | Size: 1.4 KiB After Width: | Height: | Size: 1.5 KiB |
Before Width: | Height: | Size: 1.4 KiB After Width: | Height: | Size: 1.4 KiB |
Before Width: | Height: | Size: 1.0 KiB After Width: | Height: | Size: 992 B |
Before Width: | Height: | Size: 1.0 KiB After Width: | Height: | Size: 1.2 KiB |
Before Width: | Height: | Size: 956 B After Width: | Height: | Size: 986 B |
Before Width: | Height: | Size: 1.0 KiB After Width: | Height: | Size: 1012 B |
Before Width: | Height: | Size: 998 B After Width: | Height: | Size: 1.1 KiB |
Before Width: | Height: | Size: 977 B After Width: | Height: | Size: 1000 B |
Before Width: | Height: | Size: 1.5 KiB After Width: | Height: | Size: 1.4 KiB |
Before Width: | Height: | Size: 1.4 KiB After Width: | Height: | Size: 1.5 KiB |
Before Width: | Height: | Size: 1.4 KiB After Width: | Height: | Size: 1.4 KiB |
Before Width: | Height: | Size: 1.5 KiB After Width: | Height: | Size: 1.4 KiB |
Before Width: | Height: | Size: 1.4 KiB After Width: | Height: | Size: 1.5 KiB |
Before Width: | Height: | Size: 1.3 KiB After Width: | Height: | Size: 1.4 KiB |
Before Width: | Height: | Size: 1.0 KiB After Width: | Height: | Size: 988 B |
Before Width: | Height: | Size: 1016 B After Width: | Height: | Size: 1.1 KiB |
Before Width: | Height: | Size: 948 B After Width: | Height: | Size: 976 B |
Before Width: | Height: | Size: 1.0 KiB After Width: | Height: | Size: 988 B |
Before Width: | Height: | Size: 989 B After Width: | Height: | Size: 1.1 KiB |
Before Width: | Height: | Size: 946 B After Width: | Height: | Size: 969 B |
Before Width: | Height: | Size: 1.5 KiB After Width: | Height: | Size: 1.4 KiB |
Before Width: | Height: | Size: 1.4 KiB After Width: | Height: | Size: 1.5 KiB |
Before Width: | Height: | Size: 1.4 KiB After Width: | Height: | Size: 1.4 KiB |
Before Width: | Height: | Size: 1.5 KiB After Width: | Height: | Size: 1.4 KiB |
Before Width: | Height: | Size: 1.4 KiB After Width: | Height: | Size: 1.5 KiB |
Before Width: | Height: | Size: 1.3 KiB After Width: | Height: | Size: 1.4 KiB |
Before Width: | Height: | Size: 1.0 KiB After Width: | Height: | Size: 1008 B |
Before Width: | Height: | Size: 989 B After Width: | Height: | Size: 1.1 KiB |
Before Width: | Height: | Size: 962 B After Width: | Height: | Size: 994 B |
Before Width: | Height: | Size: 1.0 KiB After Width: | Height: | Size: 980 B |
Before Width: | Height: | Size: 982 B After Width: | Height: | Size: 1.1 KiB |
Before Width: | Height: | Size: 939 B After Width: | Height: | Size: 964 B |
Before Width: | Height: | Size: 1.8 KiB After Width: | Height: | Size: 1.7 KiB |
Before Width: | Height: | Size: 1.7 KiB After Width: | Height: | Size: 1.8 KiB |
Before Width: | Height: | Size: 1.6 KiB After Width: | Height: | Size: 1.6 KiB |
Before Width: | Height: | Size: 2.3 KiB After Width: | Height: | Size: 2.1 KiB |
Before Width: | Height: | Size: 2.1 KiB After Width: | Height: | Size: 2.3 KiB |
Before Width: | Height: | Size: 2.0 KiB After Width: | Height: | Size: 2.1 KiB |
Before Width: | Height: | Size: 1.4 KiB After Width: | Height: | Size: 1.3 KiB |
Before Width: | Height: | Size: 1.4 KiB After Width: | Height: | Size: 1.5 KiB |
Before Width: | Height: | Size: 1.2 KiB After Width: | Height: | Size: 1.3 KiB |
Before Width: | Height: | Size: 1.8 KiB After Width: | Height: | Size: 1.6 KiB |
Before Width: | Height: | Size: 1.7 KiB After Width: | Height: | Size: 1.9 KiB |
Before Width: | Height: | Size: 1.5 KiB After Width: | Height: | Size: 1.5 KiB |
Before Width: | Height: | Size: 1.8 KiB After Width: | Height: | Size: 1.7 KiB |
Before Width: | Height: | Size: 1.7 KiB After Width: | Height: | Size: 1.8 KiB |
Before Width: | Height: | Size: 1.6 KiB After Width: | Height: | Size: 1.6 KiB |
Before Width: | Height: | Size: 2.3 KiB After Width: | Height: | Size: 2.1 KiB |
Before Width: | Height: | Size: 2.1 KiB After Width: | Height: | Size: 2.3 KiB |
Before Width: | Height: | Size: 2.0 KiB After Width: | Height: | Size: 2.0 KiB |
Before Width: | Height: | Size: 1.4 KiB After Width: | Height: | Size: 1.3 KiB |
Before Width: | Height: | Size: 1.4 KiB After Width: | Height: | Size: 1.5 KiB |
Before Width: | Height: | Size: 1.2 KiB After Width: | Height: | Size: 1.2 KiB |
Before Width: | Height: | Size: 1.7 KiB After Width: | Height: | Size: 1.6 KiB |
Before Width: | Height: | Size: 1.7 KiB After Width: | Height: | Size: 1.8 KiB |
Before Width: | Height: | Size: 1.5 KiB After Width: | Height: | Size: 1.5 KiB |
Before Width: | Height: | Size: 1.8 KiB After Width: | Height: | Size: 1.7 KiB |
Before Width: | Height: | Size: 1.7 KiB After Width: | Height: | Size: 1.9 KiB |
Before Width: | Height: | Size: 1.6 KiB After Width: | Height: | Size: 1.7 KiB |
Before Width: | Height: | Size: 2.3 KiB After Width: | Height: | Size: 2.1 KiB |
Before Width: | Height: | Size: 2.1 KiB After Width: | Height: | Size: 2.3 KiB |
Before Width: | Height: | Size: 2.0 KiB After Width: | Height: | Size: 2.1 KiB |
Before Width: | Height: | Size: 1.5 KiB After Width: | Height: | Size: 1.4 KiB |
Before Width: | Height: | Size: 1.4 KiB After Width: | Height: | Size: 1.6 KiB |
Before Width: | Height: | Size: 1.3 KiB After Width: | Height: | Size: 1.3 KiB |
Before Width: | Height: | Size: 1.8 KiB After Width: | Height: | Size: 1.6 KiB |
Before Width: | Height: | Size: 1.7 KiB After Width: | Height: | Size: 1.9 KiB |
Before Width: | Height: | Size: 1.5 KiB After Width: | Height: | Size: 1.5 KiB |
After Width: | Height: | Size: 1.4 KiB |
After Width: | Height: | Size: 1.5 KiB |
After Width: | Height: | Size: 1.4 KiB |
After Width: | Height: | Size: 1.4 KiB |
After Width: | Height: | Size: 1.5 KiB |
After Width: | Height: | Size: 1.4 KiB |
After Width: | Height: | Size: 988 B |
After Width: | Height: | Size: 1.1 KiB |
After Width: | Height: | Size: 969 B |
After Width: | Height: | Size: 988 B |
After Width: | Height: | Size: 1.1 KiB |
After Width: | Height: | Size: 976 B |
After Width: | Height: | Size: 2.2 KiB |
After Width: | Height: | Size: 4.2 KiB |
After Width: | Height: | Size: 2.1 KiB |
After Width: | Height: | Size: 2.2 KiB |
After Width: | Height: | Size: 4.3 KiB |
After Width: | Height: | Size: 2.1 KiB |