@ionic/core 7.5.7-dev.11701113479.149fdab6 → 7.5.7-dev.11701201960.104b3a1f
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/components/data.js +1 -1
- package/components/ion-datetime.js +16 -16
- package/components/{ion-picker-internal.d.ts → ion-picker-column.d.ts} +4 -4
- package/components/ion-picker-column.js +9 -0
- package/components/ion-picker-legacy-column.js +1 -1
- package/components/ion-picker-legacy.js +2 -2
- package/components/ion-picker.d.ts +11 -0
- package/components/ion-picker.js +9 -0
- package/components/picker-column.js +333 -322
- package/components/picker-column2.js +379 -0
- package/components/{picker-internal.js → picker.js} +16 -16
- package/dist/cjs/{data-c8d21093.js → data-4845b494.js} +1 -1
- package/dist/cjs/ion-datetime-button.cjs.entry.js +1 -1
- package/dist/cjs/ion-datetime_3.cjs.entry.js +13 -13
- package/dist/cjs/{ion-picker-column-internal.cjs.entry.js → ion-picker-column.cjs.entry.js} +9 -9
- package/dist/cjs/{ion-picker-internal.cjs.entry.js → ion-picker.cjs.entry.js} +13 -13
- package/dist/cjs/ionic.cjs.js +1 -1
- package/dist/cjs/loader.cjs.js +1 -1
- package/dist/collection/collection-manifest.json +3 -3
- package/dist/collection/components/datetime/datetime.ios.css +1 -1
- package/dist/collection/components/datetime/datetime.js +9 -9
- package/dist/collection/components/datetime/datetime.md.css +1 -1
- package/dist/collection/components/datetime/test/disabled/datetime.spec.js +4 -4
- package/dist/collection/components/datetime/test/minmax/datetime.e2e.js +5 -5
- package/dist/collection/components/datetime/test/prefer-wheel/datetime.e2e.js +2 -2
- package/dist/collection/components/datetime/test/presentation/datetime.e2e.js +1 -1
- package/dist/collection/components/datetime/test/values/datetime.e2e.js +5 -5
- package/dist/collection/components/datetime/utils/data.js +1 -1
- package/dist/collection/components/{picker-internal/picker-internal.ios.css → picker/picker.ios.css} +3 -3
- package/dist/collection/components/{picker-internal/picker-internal.js → picker/picker.js} +17 -18
- package/dist/collection/components/{picker-internal/picker-internal.md.css → picker/picker.md.css} +3 -3
- package/dist/collection/components/{picker-internal/test/a11y/picker-internal.e2e.js → picker/test/a11y/picker.e2e.js} +2 -2
- package/dist/collection/components/{picker-internal/test/basic/picker-internal.e2e.js → picker/test/basic/picker.e2e.js} +22 -22
- package/dist/collection/components/{picker-internal/test/keyboard-entry/picker-internal.e2e.js → picker/test/keyboard-entry/picker.e2e.js} +20 -20
- package/dist/collection/components/{picker-column-internal/picker-column-internal.js → picker-column/picker-column.js} +12 -13
- package/dist/collection/components/{picker-column-internal/test/basic/picker-column-internal.e2e.js → picker-column/test/basic/picker-column.e2e.js} +7 -7
- package/dist/collection/components/{picker-column-internal/test/disabled/picker-column-internal.e2e.js → picker-column/test/disabled/picker-column.e2e.js} +39 -39
- package/dist/collection/components/picker-legacy/picker.js +1 -1
- package/dist/collection/components/{picker-column-legacy → picker-legacy-column}/test/standalone/picker-column.e2e.js +1 -1
- package/dist/docs.json +307 -14
- package/dist/esm/{data-44d9e816.js → data-12e24f00.js} +1 -1
- package/dist/esm/ion-datetime-button.entry.js +1 -1
- package/dist/esm/ion-datetime_3.entry.js +13 -13
- package/dist/esm/{ion-picker-column-internal.entry.js → ion-picker-column.entry.js} +9 -9
- package/dist/esm/{ion-picker-internal.entry.js → ion-picker.entry.js} +13 -13
- package/dist/esm/ionic.js +1 -1
- package/dist/esm/loader.js +1 -1
- package/dist/esm-es5/ion-datetime-button.entry.js +1 -1
- package/dist/esm-es5/ion-datetime_3.entry.js +1 -1
- package/dist/esm-es5/ion-picker-column.entry.js +4 -0
- package/dist/esm-es5/ion-picker.entry.js +4 -0
- package/dist/esm-es5/ionic.js +1 -1
- package/dist/esm-es5/loader.js +1 -1
- package/dist/html.html-data.json +95 -0
- package/dist/ionic/ionic.esm.js +1 -1
- package/dist/ionic/p-39074595.entry.js +4 -0
- package/dist/ionic/p-40903d34.system.js +1 -1
- package/dist/ionic/p-439e20ef.entry.js +4 -0
- package/dist/ionic/p-7c66a566.system.entry.js +4 -0
- package/dist/ionic/p-9403b297.system.entry.js +4 -0
- package/dist/ionic/p-ba70d455.entry.js +4 -0
- package/dist/ionic/{p-8ad82eb3.entry.js → p-baa7cb1e.entry.js} +1 -1
- package/dist/ionic/p-c32bf078.system.entry.js +4 -0
- package/dist/ionic/{p-4c80afe1.system.entry.js → p-cb62e3fc.system.entry.js} +1 -1
- package/dist/types/components/datetime/utils/data.d.ts +2 -2
- package/dist/types/components/picker/picker-interfaces.d.ts +8 -0
- package/dist/types/components/{picker-internal/picker-internal.d.ts → picker/picker.d.ts} +4 -5
- package/dist/types/components/{picker-column-internal/picker-column-internal.d.ts → picker-column/picker-column.d.ts} +3 -4
- package/dist/types/components.d.ts +47 -47
- package/hydrate/index.js +1046 -1048
- package/package.json +1 -1
- package/components/ion-picker-column-internal.d.ts +0 -11
- package/components/ion-picker-column-internal.js +0 -9
- package/components/ion-picker-internal.js +0 -9
- package/components/picker-column-internal.js +0 -390
- package/dist/esm-es5/ion-picker-column-internal.entry.js +0 -4
- package/dist/esm-es5/ion-picker-internal.entry.js +0 -4
- package/dist/ionic/p-1a368f2e.system.entry.js +0 -4
- package/dist/ionic/p-29fe18ef.entry.js +0 -4
- package/dist/ionic/p-5bd4e009.entry.js +0 -4
- package/dist/ionic/p-beb64be7.system.entry.js +0 -4
- package/dist/ionic/p-c56b6570.system.entry.js +0 -4
- package/dist/ionic/p-c59d068a.entry.js +0 -4
- package/dist/types/components/picker-internal/picker-internal-interfaces.d.ts +0 -8
- /package/dist/collection/components/{picker-internal/picker-internal-interfaces.js → picker/picker-interfaces.js} +0 -0
- /package/dist/collection/components/{picker-column-internal/picker-column-internal-interfaces.js → picker-column/picker-column-interfaces.js} +0 -0
- /package/dist/collection/components/{picker-column-internal/picker-column-internal.ios.css → picker-column/picker-column.ios.css} +0 -0
- /package/dist/collection/components/{picker-column-internal/picker-column-internal.md.css → picker-column/picker-column.md.css} +0 -0
- /package/dist/collection/components/{picker-column-legacy → picker-legacy-column}/picker-column.ios.css +0 -0
- /package/dist/collection/components/{picker-column-legacy → picker-legacy-column}/picker-column.js +0 -0
- /package/dist/collection/components/{picker-column-legacy → picker-legacy-column}/picker-column.md.css +0 -0
- /package/dist/collection/components/{picker-column-legacy → picker-legacy-column}/test/picker-column-aria.spec.js +0 -0
- /package/dist/collection/components/{picker-column-legacy → picker-legacy-column}/test/picker-column-dynamic.spec.js +0 -0
- /package/dist/collection/components/{picker-column-legacy → picker-legacy-column}/test/picker-column.spec.js +0 -0
- /package/dist/collection/components/{picker-column-legacy → picker-legacy-column}/test/test.utils.js +0 -0
- /package/dist/esm-es5/{data-44d9e816.js → data-12e24f00.js} +0 -0
- /package/dist/ionic/{p-17240d90.js → p-bb849ebb.js} +0 -0
- /package/dist/ionic/{p-b8c3f071.system.js → p-e4219e27.system.js} +0 -0
- /package/dist/types/components/{picker-column-internal/picker-column-internal-interfaces.d.ts → picker-column/picker-column-interfaces.d.ts} +0 -0
- /package/dist/types/components/{picker-column-legacy → picker-legacy-column}/picker-column.d.ts +0 -0
- /package/dist/types/components/{picker-column-legacy → picker-legacy-column}/test/test.utils.d.ts +0 -0
|
@@ -7,28 +7,28 @@ import { configs, test } from "../../../../utils/test/playwright/index";
|
|
|
7
7
|
* This behavior does not vary across directions.
|
|
8
8
|
*/
|
|
9
9
|
configs({ directions: ['ltr'] }).forEach(({ title, screenshot, config }) => {
|
|
10
|
-
test.describe(title('picker
|
|
10
|
+
test.describe(title('picker: rendering'), () => {
|
|
11
11
|
test('inline pickers should not have visual regression', async ({ page }) => {
|
|
12
|
-
await page.goto(`/src/components/picker
|
|
12
|
+
await page.goto(`/src/components/picker/test/basic`, config);
|
|
13
13
|
const fullStack = page.locator('#inline button[data-value="full-stack"]');
|
|
14
14
|
const onion = page.locator('#inline button[data-value="onion"]');
|
|
15
15
|
await expect(fullStack).toHaveClass(/picker-item-active/);
|
|
16
16
|
await expect(onion).toHaveClass(/picker-item-active/);
|
|
17
17
|
await page.waitForChanges();
|
|
18
|
-
await expect(page.locator('#inline')).toHaveScreenshot(screenshot(`picker-
|
|
18
|
+
await expect(page.locator('#inline')).toHaveScreenshot(screenshot(`picker-inline-diff`));
|
|
19
19
|
});
|
|
20
20
|
});
|
|
21
|
-
test.describe(title('picker
|
|
21
|
+
test.describe(title('picker: overlay rendering'), () => {
|
|
22
22
|
test('popover: should not have visual regression', async ({ page }) => {
|
|
23
|
-
await page.goto(`/src/components/picker
|
|
23
|
+
await page.goto(`/src/components/picker/test/basic`, config);
|
|
24
24
|
const button = page.locator('#popover');
|
|
25
25
|
const didPresent = await page.spyOnEvent('ionPopoverDidPresent');
|
|
26
|
-
const
|
|
26
|
+
const picker = page.locator('ion-popover ion-picker');
|
|
27
27
|
await button.click();
|
|
28
28
|
await didPresent.next();
|
|
29
|
-
await expect(
|
|
29
|
+
await expect(picker).toBeVisible();
|
|
30
30
|
const popoverContent = page.locator('ion-popover .ion-delegate-host');
|
|
31
|
-
await expect(popoverContent).toHaveScreenshot(screenshot(`picker-
|
|
31
|
+
await expect(popoverContent).toHaveScreenshot(screenshot(`picker-popover-diff`), {
|
|
32
32
|
/**
|
|
33
33
|
* Animations must be enabled to capture the screenshot.
|
|
34
34
|
* By default, animations are disabled with toHaveScreenshot,
|
|
@@ -40,15 +40,15 @@ configs({ directions: ['ltr'] }).forEach(({ title, screenshot, config }) => {
|
|
|
40
40
|
});
|
|
41
41
|
});
|
|
42
42
|
test('modal: should not have visual regression', async ({ page }) => {
|
|
43
|
-
await page.goto('/src/components/picker
|
|
43
|
+
await page.goto('/src/components/picker/test/basic', config);
|
|
44
44
|
const button = page.locator('#modal');
|
|
45
45
|
const didPresent = await page.spyOnEvent('ionModalDidPresent');
|
|
46
|
-
const
|
|
46
|
+
const picker = page.locator('ion-modal ion-picker');
|
|
47
47
|
await button.click();
|
|
48
48
|
await didPresent.next();
|
|
49
|
-
await expect(
|
|
49
|
+
await expect(picker).toBeVisible();
|
|
50
50
|
const modalContent = page.locator('ion-modal .ion-delegate-host');
|
|
51
|
-
await expect(modalContent).toHaveScreenshot(screenshot(`picker-
|
|
51
|
+
await expect(modalContent).toHaveScreenshot(screenshot(`picker-modal-diff`), {
|
|
52
52
|
/**
|
|
53
53
|
* Animations must be enabled to capture the screenshot.
|
|
54
54
|
* By default, animations are disabled with toHaveScreenshot,
|
|
@@ -65,16 +65,16 @@ configs({ directions: ['ltr'] }).forEach(({ title, screenshot, config }) => {
|
|
|
65
65
|
* This behavior does not vary across modes/directions.
|
|
66
66
|
*/
|
|
67
67
|
configs({ modes: ['ios'], directions: ['ltr'] }).forEach(({ title, config }) => {
|
|
68
|
-
test.describe(title('picker
|
|
68
|
+
test.describe(title('picker: focus'), () => {
|
|
69
69
|
test.beforeEach(async ({ page }) => {
|
|
70
70
|
await page.setContent(`
|
|
71
|
-
<ion-picker
|
|
72
|
-
<ion-picker-column
|
|
73
|
-
<ion-picker-column
|
|
74
|
-
</ion-picker
|
|
71
|
+
<ion-picker>
|
|
72
|
+
<ion-picker-column value="full-stack" id="first"></ion-picker-column>
|
|
73
|
+
<ion-picker-column value="onion" id="second"></ion-picker-column>
|
|
74
|
+
</ion-picker>
|
|
75
75
|
|
|
76
76
|
<script>
|
|
77
|
-
const columns = document.querySelectorAll('ion-picker-column
|
|
77
|
+
const columns = document.querySelectorAll('ion-picker-column');
|
|
78
78
|
columns[0].items = [
|
|
79
79
|
{ text: 'Minified', value: 'minified' },
|
|
80
80
|
{ text: 'Responsive', value: 'responsive' },
|
|
@@ -94,8 +94,8 @@ configs({ modes: ['ios'], directions: ['ltr'] }).forEach(({ title, config }) =>
|
|
|
94
94
|
`, config);
|
|
95
95
|
});
|
|
96
96
|
test('tabbing should correctly move focus between columns', async ({ page }) => {
|
|
97
|
-
const firstColumn = page.locator('ion-picker-column
|
|
98
|
-
const secondColumn = page.locator('ion-picker-column
|
|
97
|
+
const firstColumn = page.locator('ion-picker-column#first');
|
|
98
|
+
const secondColumn = page.locator('ion-picker-column#second');
|
|
99
99
|
// Focus first column
|
|
100
100
|
await page.keyboard.press('Tab');
|
|
101
101
|
await expect(firstColumn).toBeFocused();
|
|
@@ -105,8 +105,8 @@ configs({ modes: ['ios'], directions: ['ltr'] }).forEach(({ title, config }) =>
|
|
|
105
105
|
await expect(secondColumn).toBeFocused();
|
|
106
106
|
});
|
|
107
107
|
test('tabbing should correctly move focus back', async ({ page }) => {
|
|
108
|
-
const firstColumn = page.locator('ion-picker-column
|
|
109
|
-
const secondColumn = page.locator('ion-picker-column
|
|
108
|
+
const firstColumn = page.locator('ion-picker-column#first');
|
|
109
|
+
const secondColumn = page.locator('ion-picker-column#second');
|
|
110
110
|
await secondColumn.focus();
|
|
111
111
|
await expect(secondColumn).toBeFocused();
|
|
112
112
|
await page.waitForChanges();
|
|
@@ -7,15 +7,15 @@ import { configs, test } from "../../../../utils/test/playwright/index";
|
|
|
7
7
|
* This behavior does not vary across modes/directions.
|
|
8
8
|
*/
|
|
9
9
|
configs({ modes: ['ios'], directions: ['ltr'] }).forEach(({ title, config }) => {
|
|
10
|
-
test.describe(title('picker
|
|
10
|
+
test.describe(title('picker: keyboard entry'), () => {
|
|
11
11
|
test('should scroll to and update the value prop for a single column', async ({ page }) => {
|
|
12
12
|
await page.setContent(`
|
|
13
|
-
<ion-picker
|
|
14
|
-
<ion-picker-column
|
|
15
|
-
</ion-picker
|
|
13
|
+
<ion-picker>
|
|
14
|
+
<ion-picker-column></ion-picker-column>
|
|
15
|
+
</ion-picker>
|
|
16
16
|
|
|
17
17
|
<script>
|
|
18
|
-
const column = document.querySelector('ion-picker-column
|
|
18
|
+
const column = document.querySelector('ion-picker-column');
|
|
19
19
|
column.items = [
|
|
20
20
|
{ text: '01', value: 1 },
|
|
21
21
|
{ text: '02', value: 2 },
|
|
@@ -27,7 +27,7 @@ configs({ modes: ['ios'], directions: ['ltr'] }).forEach(({ title, config }) =>
|
|
|
27
27
|
column.numericInput = true;
|
|
28
28
|
</script>
|
|
29
29
|
`, config);
|
|
30
|
-
const column = page.locator('ion-picker-column
|
|
30
|
+
const column = page.locator('ion-picker-column');
|
|
31
31
|
const ionChange = await page.spyOnEvent('ionChange');
|
|
32
32
|
await column.focus();
|
|
33
33
|
await page.keyboard.press('Digit2');
|
|
@@ -36,13 +36,13 @@ configs({ modes: ['ios'], directions: ['ltr'] }).forEach(({ title, config }) =>
|
|
|
36
36
|
});
|
|
37
37
|
test('should scroll to and update the value prop for multiple columns', async ({ page }) => {
|
|
38
38
|
await page.setContent(`
|
|
39
|
-
<ion-picker
|
|
40
|
-
<ion-picker-column
|
|
41
|
-
<ion-picker-column
|
|
42
|
-
</ion-picker
|
|
39
|
+
<ion-picker>
|
|
40
|
+
<ion-picker-column id="first"></ion-picker-column>
|
|
41
|
+
<ion-picker-column id="second"></ion-picker-column>
|
|
42
|
+
</ion-picker>
|
|
43
43
|
|
|
44
44
|
<script>
|
|
45
|
-
const firstColumn = document.querySelector('ion-picker-column
|
|
45
|
+
const firstColumn = document.querySelector('ion-picker-column#first');
|
|
46
46
|
firstColumn.items = [
|
|
47
47
|
{ text: '01', value: 1 },
|
|
48
48
|
{ text: '02', value: 2 },
|
|
@@ -53,7 +53,7 @@ configs({ modes: ['ios'], directions: ['ltr'] }).forEach(({ title, config }) =>
|
|
|
53
53
|
firstColumn.value = 5;
|
|
54
54
|
firstColumn.numericInput = true;
|
|
55
55
|
|
|
56
|
-
const secondColumn = document.querySelector('ion-picker-column
|
|
56
|
+
const secondColumn = document.querySelector('ion-picker-column#second');
|
|
57
57
|
secondColumn.items = [
|
|
58
58
|
{ text: '20', value: 20 },
|
|
59
59
|
{ text: '21', value: 21 },
|
|
@@ -65,9 +65,9 @@ configs({ modes: ['ios'], directions: ['ltr'] }).forEach(({ title, config }) =>
|
|
|
65
65
|
secondColumn.numericInput = true;
|
|
66
66
|
</script>
|
|
67
67
|
`, config);
|
|
68
|
-
const firstColumn = page.locator('ion-picker-column
|
|
69
|
-
const secondColumn = page.locator('ion-picker-column
|
|
70
|
-
const highlight = page.locator('ion-picker
|
|
68
|
+
const firstColumn = page.locator('ion-picker-column#first');
|
|
69
|
+
const secondColumn = page.locator('ion-picker-column#second');
|
|
70
|
+
const highlight = page.locator('ion-picker .picker-highlight');
|
|
71
71
|
const firstIonChange = await firstColumn.spyOnEvent('ionChange');
|
|
72
72
|
const secondIonChange = await secondColumn.spyOnEvent('ionChange');
|
|
73
73
|
const box = await highlight.boundingBox();
|
|
@@ -85,12 +85,12 @@ configs({ modes: ['ios'], directions: ['ltr'] }).forEach(({ title, config }) =>
|
|
|
85
85
|
});
|
|
86
86
|
test('should select 00', async ({ page }) => {
|
|
87
87
|
await page.setContent(`
|
|
88
|
-
<ion-picker
|
|
89
|
-
<ion-picker-column
|
|
90
|
-
</ion-picker
|
|
88
|
+
<ion-picker>
|
|
89
|
+
<ion-picker-column></ion-picker-column>
|
|
90
|
+
</ion-picker>
|
|
91
91
|
|
|
92
92
|
<script>
|
|
93
|
-
const column = document.querySelector('ion-picker-column
|
|
93
|
+
const column = document.querySelector('ion-picker-column');
|
|
94
94
|
column.items = [
|
|
95
95
|
{ text: '00', value: 12 },
|
|
96
96
|
{ text: '01', value: 1 },
|
|
@@ -103,7 +103,7 @@ configs({ modes: ['ios'], directions: ['ltr'] }).forEach(({ title, config }) =>
|
|
|
103
103
|
column.numericInput = true;
|
|
104
104
|
</script>
|
|
105
105
|
`, config);
|
|
106
|
-
const column = page.locator('ion-picker-column
|
|
106
|
+
const column = page.locator('ion-picker-column');
|
|
107
107
|
const ionChange = await page.spyOnEvent('ionChange');
|
|
108
108
|
await column.focus();
|
|
109
109
|
await page.keyboard.press('Digit0');
|
|
@@ -9,9 +9,8 @@ import { createColorClasses } from "../../utils/theme";
|
|
|
9
9
|
import { getIonMode } from "../../global/ionic-global";
|
|
10
10
|
/**
|
|
11
11
|
* @virtualProp {"ios" | "md"} mode - The mode determines which platform styles to use.
|
|
12
|
-
* @internal
|
|
13
12
|
*/
|
|
14
|
-
export class
|
|
13
|
+
export class PickerColumn {
|
|
15
14
|
constructor() {
|
|
16
15
|
this.isScrolling = false;
|
|
17
16
|
this.isColumnVisible = false;
|
|
@@ -271,7 +270,7 @@ export class PickerColumnInternal {
|
|
|
271
270
|
}
|
|
272
271
|
};
|
|
273
272
|
new IntersectionObserver(visibleCallback, { threshold: 0.001 }).observe(this.el);
|
|
274
|
-
const parentEl = (this.parentEl = this.el.closest('ion-picker
|
|
273
|
+
const parentEl = (this.parentEl = this.el.closest('ion-picker'));
|
|
275
274
|
if (parentEl !== null) {
|
|
276
275
|
// TODO(FW-2832): type
|
|
277
276
|
parentEl.addEventListener('ionInputModeChange', (ev) => this.inputModeChange(ev));
|
|
@@ -331,7 +330,7 @@ export class PickerColumnInternal {
|
|
|
331
330
|
* exportparts is needed so ion-datetime can expose the parts
|
|
332
331
|
* from two layers of shadow nesting. If this causes problems,
|
|
333
332
|
* the attribute can be moved to datetime.tsx and set on every
|
|
334
|
-
* instance of ion-picker-column
|
|
333
|
+
* instance of ion-picker-column there instead.
|
|
335
334
|
*/
|
|
336
335
|
return (h(Host, { exportparts: `${PICKER_ITEM_PART}, ${PICKER_ITEM_ACTIVE_PART}`, disabled: pickerDisabled, tabindex: pickerDisabled ? null : 0, class: createColorClasses(color, {
|
|
337
336
|
[mode]: true,
|
|
@@ -356,18 +355,18 @@ export class PickerColumnInternal {
|
|
|
356
355
|
}, disabled: isItemDisabled, part: PICKER_ITEM_PART }, item.text));
|
|
357
356
|
}), h("div", { class: "picker-item picker-item-empty", "aria-hidden": "true" }, "\u00A0"), h("div", { class: "picker-item picker-item-empty", "aria-hidden": "true" }, "\u00A0"), h("div", { class: "picker-item picker-item-empty", "aria-hidden": "true" }, "\u00A0")));
|
|
358
357
|
}
|
|
359
|
-
static get is() { return "ion-picker-column
|
|
358
|
+
static get is() { return "ion-picker-column"; }
|
|
360
359
|
static get encapsulation() { return "shadow"; }
|
|
361
360
|
static get originalStyleUrls() {
|
|
362
361
|
return {
|
|
363
|
-
"ios": ["picker-column
|
|
364
|
-
"md": ["picker-column
|
|
362
|
+
"ios": ["picker-column.ios.scss"],
|
|
363
|
+
"md": ["picker-column.md.scss"]
|
|
365
364
|
};
|
|
366
365
|
}
|
|
367
366
|
static get styleUrls() {
|
|
368
367
|
return {
|
|
369
|
-
"ios": ["picker-column
|
|
370
|
-
"md": ["picker-column
|
|
368
|
+
"ios": ["picker-column.ios.css"],
|
|
369
|
+
"md": ["picker-column.md.css"]
|
|
371
370
|
};
|
|
372
371
|
}
|
|
373
372
|
static get properties() {
|
|
@@ -399,8 +398,8 @@ export class PickerColumnInternal {
|
|
|
399
398
|
"references": {
|
|
400
399
|
"PickerColumnItem": {
|
|
401
400
|
"location": "import",
|
|
402
|
-
"path": "./picker-column-
|
|
403
|
-
"id": "src/components/picker-column
|
|
401
|
+
"path": "./picker-column-interfaces",
|
|
402
|
+
"id": "src/components/picker-column/picker-column-interfaces.ts::PickerColumnItem"
|
|
404
403
|
}
|
|
405
404
|
}
|
|
406
405
|
},
|
|
@@ -498,8 +497,8 @@ export class PickerColumnInternal {
|
|
|
498
497
|
"references": {
|
|
499
498
|
"PickerColumnItem": {
|
|
500
499
|
"location": "import",
|
|
501
|
-
"path": "./picker-column-
|
|
502
|
-
"id": "src/components/picker-column
|
|
500
|
+
"path": "./picker-column-interfaces",
|
|
501
|
+
"id": "src/components/picker-column/picker-column-interfaces.ts::PickerColumnItem"
|
|
503
502
|
}
|
|
504
503
|
}
|
|
505
504
|
}
|
|
@@ -7,20 +7,20 @@ import { configs, test } from "../../../../utils/test/playwright/index";
|
|
|
7
7
|
* This behavior does not vary across modes/directions.
|
|
8
8
|
*/
|
|
9
9
|
configs({ modes: ['ios'], directions: ['ltr'] }).forEach(({ title, config }) => {
|
|
10
|
-
test.describe(title('picker-column
|
|
10
|
+
test.describe(title('picker-column'), () => {
|
|
11
11
|
test.beforeEach(async ({ page }) => {
|
|
12
|
-
await page.goto('/src/components/picker-column
|
|
12
|
+
await page.goto('/src/components/picker-column/test/basic', config);
|
|
13
13
|
});
|
|
14
14
|
test('should render a picker item for each item', async ({ page }) => {
|
|
15
|
-
const columns = page.locator('ion-picker-column
|
|
15
|
+
const columns = page.locator('ion-picker-column .picker-item:not(.picker-item-empty)');
|
|
16
16
|
await expect(columns).toHaveCount(24);
|
|
17
17
|
});
|
|
18
18
|
test('should render 6 empty picker items', async ({ page }) => {
|
|
19
|
-
const columns = page.locator('ion-picker-column
|
|
19
|
+
const columns = page.locator('ion-picker-column .picker-item-empty');
|
|
20
20
|
await expect(columns).toHaveCount(6);
|
|
21
21
|
});
|
|
22
22
|
test('should not have an active item when value is not set', async ({ page }) => {
|
|
23
|
-
const activeColumn = page.locator('ion-picker-column
|
|
23
|
+
const activeColumn = page.locator('ion-picker-column .picker-item-active');
|
|
24
24
|
await expect(activeColumn).toHaveCount(0);
|
|
25
25
|
});
|
|
26
26
|
test('should have an active item when value is set', async ({ page }) => {
|
|
@@ -28,7 +28,7 @@ configs({ modes: ['ios'], directions: ['ltr'] }).forEach(({ title, config }) =>
|
|
|
28
28
|
el.value = '12';
|
|
29
29
|
});
|
|
30
30
|
await page.waitForChanges();
|
|
31
|
-
const activeColumn = page.locator('ion-picker-column
|
|
31
|
+
const activeColumn = page.locator('ion-picker-column .picker-item-active');
|
|
32
32
|
expect(activeColumn).not.toBeNull();
|
|
33
33
|
});
|
|
34
34
|
// TODO FW-3616
|
|
@@ -38,7 +38,7 @@ configs({ modes: ['ios'], directions: ['ltr'] }).forEach(({ title, config }) =>
|
|
|
38
38
|
el.scrollTop = 801;
|
|
39
39
|
});
|
|
40
40
|
await page.waitForChanges();
|
|
41
|
-
const activeColumn = page.locator('ion-picker-column
|
|
41
|
+
const activeColumn = page.locator('ion-picker-column .picker-item-active');
|
|
42
42
|
expect(await (activeColumn === null || activeColumn === void 0 ? void 0 : activeColumn.innerText())).toEqual('23');
|
|
43
43
|
});
|
|
44
44
|
test('should not emit ionChange when the value is modified externally', async ({ page, skip }) => {
|
|
@@ -7,15 +7,15 @@ import { configs, test } from "../../../../utils/test/playwright/index";
|
|
|
7
7
|
* This behavior does not vary across directions.
|
|
8
8
|
*/
|
|
9
9
|
configs({ directions: ['ltr'] }).forEach(({ title, screenshot, config }) => {
|
|
10
|
-
test.describe(title('picker-column
|
|
10
|
+
test.describe(title('picker-column: disabled rendering'), () => {
|
|
11
11
|
test('should not have visual regressions', async ({ page }) => {
|
|
12
12
|
await page.setContent(`
|
|
13
|
-
<ion-picker
|
|
14
|
-
<ion-picker-column
|
|
15
|
-
</ion-picker
|
|
13
|
+
<ion-picker>
|
|
14
|
+
<ion-picker-column value="b"></ion-picker-column>
|
|
15
|
+
</ion-picker>
|
|
16
16
|
|
|
17
17
|
<script>
|
|
18
|
-
const column = document.querySelector('ion-picker-column
|
|
18
|
+
const column = document.querySelector('ion-picker-column');
|
|
19
19
|
column.items = [
|
|
20
20
|
{ text: 'A', value: 'a', disabled: true },
|
|
21
21
|
{ text: 'B', value: 'b' },
|
|
@@ -23,8 +23,8 @@ configs({ directions: ['ltr'] }).forEach(({ title, screenshot, config }) => {
|
|
|
23
23
|
]
|
|
24
24
|
</script>
|
|
25
25
|
`, config);
|
|
26
|
-
const picker = page.locator('ion-picker
|
|
27
|
-
await expect(picker).toHaveScreenshot(screenshot(`picker-
|
|
26
|
+
const picker = page.locator('ion-picker');
|
|
27
|
+
await expect(picker).toHaveScreenshot(screenshot(`picker-disabled`));
|
|
28
28
|
});
|
|
29
29
|
});
|
|
30
30
|
});
|
|
@@ -32,15 +32,15 @@ configs({ directions: ['ltr'] }).forEach(({ title, screenshot, config }) => {
|
|
|
32
32
|
* This behavior does not vary across modes/directions.
|
|
33
33
|
*/
|
|
34
34
|
configs({ modes: ['ios'], directions: ['ltr'] }).forEach(({ title, config }) => {
|
|
35
|
-
test.describe(title('picker-column
|
|
35
|
+
test.describe(title('picker-column: disabled items'), () => {
|
|
36
36
|
test('all picker items should be enabled by default', async ({ page }) => {
|
|
37
37
|
await page.setContent(`
|
|
38
|
-
<ion-picker
|
|
39
|
-
<ion-picker-column
|
|
40
|
-
</ion-picker
|
|
38
|
+
<ion-picker>
|
|
39
|
+
<ion-picker-column></ion-picker-column>
|
|
40
|
+
</ion-picker>
|
|
41
41
|
|
|
42
42
|
<script>
|
|
43
|
-
const column = document.querySelector('ion-picker-column
|
|
43
|
+
const column = document.querySelector('ion-picker-column');
|
|
44
44
|
column.items = [
|
|
45
45
|
{ text: 'A', value: 'a' },
|
|
46
46
|
{ text: 'B', value: 'b' },
|
|
@@ -48,17 +48,17 @@ configs({ modes: ['ios'], directions: ['ltr'] }).forEach(({ title, config }) =>
|
|
|
48
48
|
]
|
|
49
49
|
</script>
|
|
50
50
|
`, config);
|
|
51
|
-
const pickerItems = page.locator('ion-picker-column
|
|
51
|
+
const pickerItems = page.locator('ion-picker-column .picker-item:not(.picker-item-empty, [disabled])');
|
|
52
52
|
expect(await pickerItems.count()).toBe(3);
|
|
53
53
|
});
|
|
54
54
|
test('disabled picker item should not be interactive', async ({ page }) => {
|
|
55
55
|
await page.setContent(`
|
|
56
|
-
<ion-picker
|
|
57
|
-
<ion-picker-column
|
|
58
|
-
</ion-picker
|
|
56
|
+
<ion-picker>
|
|
57
|
+
<ion-picker-column></ion-picker-column>
|
|
58
|
+
</ion-picker>
|
|
59
59
|
|
|
60
60
|
<script>
|
|
61
|
-
const column = document.querySelector('ion-picker-column
|
|
61
|
+
const column = document.querySelector('ion-picker-column');
|
|
62
62
|
column.items = [
|
|
63
63
|
{ text: 'A', value: 'a' },
|
|
64
64
|
{ text: 'B', value: 'b', disabled: true },
|
|
@@ -66,17 +66,17 @@ configs({ modes: ['ios'], directions: ['ltr'] }).forEach(({ title, config }) =>
|
|
|
66
66
|
]
|
|
67
67
|
</script>
|
|
68
68
|
`, config);
|
|
69
|
-
const disabledItem = page.locator('ion-picker-column
|
|
69
|
+
const disabledItem = page.locator('ion-picker-column .picker-item[disabled]');
|
|
70
70
|
await expect(disabledItem).not.toBeEnabled();
|
|
71
71
|
});
|
|
72
72
|
test('disabled picker item should not be considered active', async ({ page }) => {
|
|
73
73
|
await page.setContent(`
|
|
74
|
-
<ion-picker
|
|
75
|
-
<ion-picker-column
|
|
76
|
-
</ion-picker
|
|
74
|
+
<ion-picker>
|
|
75
|
+
<ion-picker-column value="b"></ion-picker-column>
|
|
76
|
+
</ion-picker>
|
|
77
77
|
|
|
78
78
|
<script>
|
|
79
|
-
const column = document.querySelector('ion-picker-column
|
|
79
|
+
const column = document.querySelector('ion-picker-column');
|
|
80
80
|
column.items = [
|
|
81
81
|
{ text: 'A', value: 'a' },
|
|
82
82
|
{ text: 'B', value: 'b', disabled: true },
|
|
@@ -84,17 +84,17 @@ configs({ modes: ['ios'], directions: ['ltr'] }).forEach(({ title, config }) =>
|
|
|
84
84
|
]
|
|
85
85
|
</script>
|
|
86
86
|
`, config);
|
|
87
|
-
const disabledItem = page.locator('ion-picker-column
|
|
87
|
+
const disabledItem = page.locator('ion-picker-column .picker-item[data-value="b"]');
|
|
88
88
|
await expect(disabledItem).not.toHaveClass(/picker-item-active/);
|
|
89
89
|
});
|
|
90
90
|
test('setting the value to a disabled item should not cause that item to be active', async ({ page }) => {
|
|
91
91
|
await page.setContent(`
|
|
92
|
-
<ion-picker
|
|
93
|
-
<ion-picker-column
|
|
94
|
-
</ion-picker
|
|
92
|
+
<ion-picker>
|
|
93
|
+
<ion-picker-column></ion-picker-column>
|
|
94
|
+
</ion-picker>
|
|
95
95
|
|
|
96
96
|
<script>
|
|
97
|
-
const column = document.querySelector('ion-picker-column
|
|
97
|
+
const column = document.querySelector('ion-picker-column');
|
|
98
98
|
column.items = [
|
|
99
99
|
{ text: 'A', value: 'a' },
|
|
100
100
|
{ text: 'B', value: 'b', disabled: true },
|
|
@@ -102,21 +102,21 @@ configs({ modes: ['ios'], directions: ['ltr'] }).forEach(({ title, config }) =>
|
|
|
102
102
|
]
|
|
103
103
|
</script>
|
|
104
104
|
`, config);
|
|
105
|
-
const pickerColumn = page.locator('ion-picker-column
|
|
105
|
+
const pickerColumn = page.locator('ion-picker-column');
|
|
106
106
|
await pickerColumn.evaluate((el) => (el.value = 'b'));
|
|
107
107
|
await page.waitForChanges();
|
|
108
|
-
const disabledItem = page.locator('ion-picker-column
|
|
108
|
+
const disabledItem = page.locator('ion-picker-column .picker-item[data-value="b"]');
|
|
109
109
|
await expect(disabledItem).toBeDisabled();
|
|
110
110
|
await expect(disabledItem).not.toHaveClass(/picker-item-active/);
|
|
111
111
|
});
|
|
112
112
|
test('defaulting the value to a disabled item should not cause that item to be active', async ({ page }) => {
|
|
113
113
|
await page.setContent(`
|
|
114
|
-
<ion-picker
|
|
115
|
-
<ion-picker-column
|
|
116
|
-
</ion-picker
|
|
114
|
+
<ion-picker>
|
|
115
|
+
<ion-picker-column></ion-picker-column>
|
|
116
|
+
</ion-picker>
|
|
117
117
|
|
|
118
118
|
<script>
|
|
119
|
-
const column = document.querySelector('ion-picker-column
|
|
119
|
+
const column = document.querySelector('ion-picker-column');
|
|
120
120
|
column.items = [
|
|
121
121
|
{ text: 'A', value: 'a' },
|
|
122
122
|
{ text: 'B', value: 'b', disabled: true },
|
|
@@ -125,7 +125,7 @@ configs({ modes: ['ios'], directions: ['ltr'] }).forEach(({ title, config }) =>
|
|
|
125
125
|
column.value = 'b'
|
|
126
126
|
</script>
|
|
127
127
|
`, config);
|
|
128
|
-
const disabledItem = page.locator('ion-picker-column
|
|
128
|
+
const disabledItem = page.locator('ion-picker-column .picker-item[data-value="b"]');
|
|
129
129
|
await expect(disabledItem).toBeDisabled();
|
|
130
130
|
await expect(disabledItem).not.toHaveClass(/picker-item-active/);
|
|
131
131
|
});
|
|
@@ -135,14 +135,14 @@ configs({ modes: ['ios'], directions: ['ltr'] }).forEach(({ title, config }) =>
|
|
|
135
135
|
* This behavior does not vary across directions.
|
|
136
136
|
*/
|
|
137
137
|
configs({ directions: ['ltr'] }).forEach(({ title, screenshot, config }) => {
|
|
138
|
-
test.describe(title('picker-column
|
|
138
|
+
test.describe(title('picker-column: disabled column rendering'), () => {
|
|
139
139
|
test.beforeEach(async ({ page }) => {
|
|
140
|
-
await page.goto('/src/components/picker-column
|
|
140
|
+
await page.goto('/src/components/picker-column/test/disabled', config);
|
|
141
141
|
});
|
|
142
142
|
test('disabled column should not have visual regressions', async ({ page }) => {
|
|
143
143
|
const disabledColumn = page.locator('#column-disabled');
|
|
144
144
|
await page.waitForChanges();
|
|
145
|
-
await expect(disabledColumn).toHaveScreenshot(screenshot('picker-
|
|
145
|
+
await expect(disabledColumn).toHaveScreenshot(screenshot('picker-disabled-column'));
|
|
146
146
|
});
|
|
147
147
|
});
|
|
148
148
|
});
|
|
@@ -150,9 +150,9 @@ configs({ directions: ['ltr'] }).forEach(({ title, screenshot, config }) => {
|
|
|
150
150
|
* This behavior does not vary across modes/directions.
|
|
151
151
|
*/
|
|
152
152
|
configs({ modes: ['ios'], directions: ['ltr'] }).forEach(({ title, config }) => {
|
|
153
|
-
test.describe(title('picker-column
|
|
153
|
+
test.describe(title('picker-column: disabled column'), () => {
|
|
154
154
|
test.beforeEach(async ({ page }) => {
|
|
155
|
-
await page.goto('/src/components/picker-column
|
|
155
|
+
await page.goto('/src/components/picker-column/test/disabled', config);
|
|
156
156
|
});
|
|
157
157
|
test('item in disabled column should not be interactive', async ({ page }) => {
|
|
158
158
|
const secondItem = page.locator('#column-disabled .picker-item:not(.picker-item-empty)').nth(1);
|
|
@@ -72,7 +72,7 @@ export class Picker {
|
|
|
72
72
|
setOverlayId(this.el);
|
|
73
73
|
}
|
|
74
74
|
componentDidLoad() {
|
|
75
|
-
printIonWarning('ion-picker-legacy and ion-picker-legacy-column have been deprecated in favor of the ion-picker and ion-picker-column components. These new components display inline with your page content allowing for more presentation flexibility than before.', this.el);
|
|
75
|
+
printIonWarning('ion-picker-legacy and ion-picker-legacy-column have been deprecated in favor of new versions of the ion-picker and ion-picker-column components. These new components display inline with your page content allowing for more presentation flexibility than before.', this.el);
|
|
76
76
|
/**
|
|
77
77
|
* If picker was rendered with isOpen="true"
|
|
78
78
|
* then we should open picker immediately.
|
|
@@ -6,7 +6,7 @@ import { configs, test } from "../../../../utils/test/playwright/index";
|
|
|
6
6
|
configs({ modes: ['ios'], directions: ['ltr'] }).forEach(({ title, config }) => {
|
|
7
7
|
test.describe(title('picker-column'), () => {
|
|
8
8
|
test.beforeEach(async ({ page }) => {
|
|
9
|
-
await page.goto(`/src/components/picker-column
|
|
9
|
+
await page.goto(`/src/components/picker-legacy-column/test/standalone`, config);
|
|
10
10
|
});
|
|
11
11
|
test('should present picker without ion-app', async ({ page }) => {
|
|
12
12
|
const ionPickerDidPresent = await page.spyOnEvent('ionPickerDidPresent');
|