Skip to content

Commit 7563ed5

Browse files
committed
Merge branch 'next' of github.com:ionic-team/ionic-framework into ROU-11314
2 parents ba1f50f + 51cb777 commit 7563ed5

File tree

141 files changed

+1015
-256
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

141 files changed

+1015
-256
lines changed

CHANGELOG.md

Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,23 @@
33
All notable changes to this project will be documented in this file.
44
See [Conventional Commits](https://conventionalcommits.org) for commit guidelines.
55

6+
## [8.3.4](https://github.com/ionic-team/ionic-framework/compare/v8.3.3...v8.3.4) (2024-10-30)
7+
8+
9+
### Bug Fixes
10+
11+
* **angular:** add missing 'compareWith' input to standalone ion-radio-group ([#29870](https://github.com/ionic-team/ionic-framework/issues/29870)) ([47ba703](https://github.com/ionic-team/ionic-framework/commit/47ba703a57d1ca506f943f6b790d0bf7583d79cb)), closes [#29826](https://github.com/ionic-team/ionic-framework/issues/29826)
12+
* **backdrop:** remove tabindex for improved accessibility ([#29956](https://github.com/ionic-team/ionic-framework/issues/29956)) ([7294e96](https://github.com/ionic-team/ionic-framework/commit/7294e969bb913692eaf28e54860614f445132713)), closes [#29773](https://github.com/ionic-team/ionic-framework/issues/29773)
13+
* **input, textarea:** ensure screen readers announce helper and error text when focused ([#29958](https://github.com/ionic-team/ionic-framework/issues/29958)) ([5a73145](https://github.com/ionic-team/ionic-framework/commit/5a7314553a8def87bd19275640c92dd72a6ef1a4))
14+
* **overlay:** hide from screen readers while animating ([#29951](https://github.com/ionic-team/ionic-framework/issues/29951)) ([cb60073](https://github.com/ionic-team/ionic-framework/commit/cb6007363a8d42b5f126945427c2bfc3d7209c21)), closes [#29857](https://github.com/ionic-team/ionic-framework/issues/29857)
15+
* **overlays:** do not hide root when toast appears ([#29962](https://github.com/ionic-team/ionic-framework/issues/29962)) ([322d7c9](https://github.com/ionic-team/ionic-framework/commit/322d7c98cf6613df0b0db3f119e3f892e6a17e7b)), closes [#29773](https://github.com/ionic-team/ionic-framework/issues/29773)
16+
* **overlays:** hide the focus trap div from screen readers ([#29970](https://github.com/ionic-team/ionic-framework/issues/29970)) ([c3b58f1](https://github.com/ionic-team/ionic-framework/commit/c3b58f1620bcb74db43e3983ef570b7b982abd83)), closes [#29858](https://github.com/ionic-team/ionic-framework/issues/29858)
17+
* **vue:** incorrect view rendered when using router.go(-n) ([#29877](https://github.com/ionic-team/ionic-framework/issues/29877)) ([e32fbe0](https://github.com/ionic-team/ionic-framework/commit/e32fbe02102fe80db29f73c26496a40852032354)), closes [#28201](https://github.com/ionic-team/ionic-framework/issues/28201) [#28201](https://github.com/ionic-team/ionic-framework/issues/28201) [#29847](https://github.com/ionic-team/ionic-framework/issues/29847)
18+
19+
20+
21+
22+
623
## [8.3.3](https://github.com/ionic-team/ionic-framework/compare/v8.3.2...v8.3.3) (2024-10-16)
724

825

core/CHANGELOG.md

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,21 @@
33
All notable changes to this project will be documented in this file.
44
See [Conventional Commits](https://conventionalcommits.org) for commit guidelines.
55

6+
## [8.3.4](https://github.com/ionic-team/ionic-framework/compare/v8.3.3...v8.3.4) (2024-10-30)
7+
8+
9+
### Bug Fixes
10+
11+
* **backdrop:** remove tabindex for improved accessibility ([#29956](https://github.com/ionic-team/ionic-framework/issues/29956)) ([7294e96](https://github.com/ionic-team/ionic-framework/commit/7294e969bb913692eaf28e54860614f445132713)), closes [#29773](https://github.com/ionic-team/ionic-framework/issues/29773)
12+
* **input, textarea:** ensure screen readers announce helper and error text when focused ([#29958](https://github.com/ionic-team/ionic-framework/issues/29958)) ([5a73145](https://github.com/ionic-team/ionic-framework/commit/5a7314553a8def87bd19275640c92dd72a6ef1a4))
13+
* **overlay:** hide from screen readers while animating ([#29951](https://github.com/ionic-team/ionic-framework/issues/29951)) ([cb60073](https://github.com/ionic-team/ionic-framework/commit/cb6007363a8d42b5f126945427c2bfc3d7209c21)), closes [#29857](https://github.com/ionic-team/ionic-framework/issues/29857)
14+
* **overlays:** do not hide root when toast appears ([#29962](https://github.com/ionic-team/ionic-framework/issues/29962)) ([322d7c9](https://github.com/ionic-team/ionic-framework/commit/322d7c98cf6613df0b0db3f119e3f892e6a17e7b)), closes [#29773](https://github.com/ionic-team/ionic-framework/issues/29773)
15+
* **overlays:** hide the focus trap div from screen readers ([#29970](https://github.com/ionic-team/ionic-framework/issues/29970)) ([c3b58f1](https://github.com/ionic-team/ionic-framework/commit/c3b58f1620bcb74db43e3983ef570b7b982abd83)), closes [#29858](https://github.com/ionic-team/ionic-framework/issues/29858)
16+
17+
18+
19+
20+
621
## [8.3.3](https://github.com/ionic-team/ionic-framework/compare/v8.3.2...v8.3.3) (2024-10-16)
722

823
**Note:** Version bump only for package @ionic/core

core/api.txt

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,7 @@ ion-accordion-group,prop,expand,"compact" | "inset",'compact',false,false
1818
ion-accordion-group,prop,mode,"ios" | "md",undefined,false,false
1919
ion-accordion-group,prop,multiple,boolean | undefined,undefined,false,false
2020
ion-accordion-group,prop,readonly,boolean,false,false,false
21+
ion-accordion-group,prop,shape,"rectangular" | "round" | "soft" | undefined,undefined,false,false
2122
ion-accordion-group,prop,theme,"ios" | "md" | "ionic",undefined,false,false
2223
ion-accordion-group,prop,value,null | string | string[] | undefined,undefined,false,false
2324
ion-accordion-group,event,ionChange,AccordionGroupChangeEventDetail<any>,true

core/package-lock.json

Lines changed: 2 additions & 2 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

core/package.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
{
22
"name": "@ionic/core",
3-
"version": "8.3.3",
3+
"version": "8.3.4",
44
"description": "Base components for Ionic",
55
"keywords": [
66
"ionic",

core/scripts/testing/scripts.js

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -47,6 +47,11 @@
4747
linkTag.setAttribute('href', '/css/ionic/bundle.ionic.css');
4848
document.head.appendChild(linkTag);
4949
}
50+
51+
const defaultThemeLinkTag = document.querySelector('link[href*="css/ionic.bundle.css"]');
52+
if (defaultThemeLinkTag) {
53+
defaultThemeLinkTag.remove();
54+
}
5055
}
5156

5257
window.Ionic = window.Ionic || {};

core/scripts/tokens/index.js

Lines changed: 130 additions & 127 deletions
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,7 @@
1212
generateTypographyOutput,
1313
generateValue,
1414
generateColorUtilityClasses,
15+
generateDefaultSpaceUtilityClasses,
1516
generateSpaceUtilityClasses,
1617
removeConsecutiveRepeatedWords,
1718
setPrefixValue,
@@ -23,136 +24,138 @@
2324
} = require('./utils.js');
2425

2526
const StyleDictionary = (await import('style-dictionary')).default;
26-
27+
2728
// Set the prefix for variables and classes
2829
setPrefixValue('ion');
2930

3031
// Register a custom file header
3132
StyleDictionary.registerFileHeader({
32-
name: 'custom-header',
33-
fileHeader: async (defaultMessages = []) => {
34-
return [...defaultMessages, 'Do not edit directly, this file was auto-generated.'];
35-
},
33+
name: 'custom-header',
34+
fileHeader: async (defaultMessages = []) => {
35+
return [...defaultMessages, 'Do not edit directly, this file was auto-generated.'];
36+
},
3637
});
3738

3839
// SCSS variables format
3940
StyleDictionary.registerFormat({
4041
name: 'scssVariablesFormat',
41-
format: async function({ dictionary, file}) {
42+
format: async function ({ dictionary, file }) {
4243

4344
console.log('Generating SCSS variables...');
4445

45-
// Separate typography tokens from the rest
46-
const typographyProperties = dictionary.allTokens.filter((prop) => prop.$type === 'typography');
47-
const otherProperties = dictionary.allTokens.filter((prop) => prop.$type !== 'typography');
48-
49-
// Make sure the reused scss variables are defined first, to avoid compilation errors
50-
const sortedProperties = [...otherProperties, ...typographyProperties];
51-
52-
const prefixedVariables = sortedProperties.map((prop) => {
53-
// Remove consecutive repeated words from the token name, like border-border-color
54-
const propName = removeConsecutiveRepeatedWords(prop.name);
55-
56-
switch (prop.$type) {
57-
case 'boxShadow':
58-
return generateShadowValue(prop, propName);
59-
case 'fontFamilies':
60-
return generateFontFamilyValue(prop, propName, 'scss');
61-
case 'fontSizes':
62-
return generateFontSizeValue(prop, propName, 'scss');
63-
case 'typography':
64-
return generateTypographyOutput(prop, propName, true);
65-
default:
66-
return generateValue(prop, propName);
67-
}
68-
});
69-
70-
const fileHeader = await file.options.fileHeader();
71-
72-
return [
73-
`/*\n${fileHeader.join('\n')}\n*/`,
74-
'@use "../themes/functions.sizes" as font;\n',
75-
prefixedVariables.join('\n') + '\n',
76-
].join('\n');
46+
// Separate typography tokens from the rest
47+
const typographyProperties = dictionary.allTokens.filter((prop) => prop.$type === 'typography');
48+
const otherProperties = dictionary.allTokens.filter((prop) => prop.$type !== 'typography');
49+
50+
// Make sure the reused scss variables are defined first, to avoid compilation errors
51+
const sortedProperties = [...otherProperties, ...typographyProperties];
52+
53+
const prefixedVariables = sortedProperties.map((prop) => {
54+
// Remove consecutive repeated words from the token name, like border-border-color
55+
const propName = removeConsecutiveRepeatedWords(prop.name);
56+
57+
switch (prop.$type) {
58+
case 'boxShadow':
59+
return generateShadowValue(prop, propName);
60+
case 'fontFamilies':
61+
return generateFontFamilyValue(prop, propName, 'scss');
62+
case 'fontSizes':
63+
return generateFontSizeValue(prop, propName, 'scss');
64+
case 'typography':
65+
return generateTypographyOutput(prop, propName, true);
66+
default:
67+
return generateValue(prop, propName);
68+
}
69+
});
70+
71+
const fileHeader = await file.options.fileHeader();
72+
73+
return [
74+
`/*\n${fileHeader.join('\n')}\n*/`,
75+
'@use "../themes/functions.sizes" as font;\n',
76+
prefixedVariables.join('\n') + '\n',
77+
].join('\n');
7778
},
7879
});
7980

8081
// Create utility-classes
8182
StyleDictionary.registerFormat({
8283
name: 'cssUtilityClassesFormat',
83-
format: async function({ dictionary, file}) {
84-
85-
console.log('Generating Utility-Classes...');
86-
87-
// Arrays to store specific utility classes
88-
const typographyUtilityClasses = [];
89-
const otherUtilityClasses = [];
90-
91-
// Generate utility classes for each token
92-
dictionary.allTokens.map((prop) => {
93-
94-
const tokenCategory = prop.attributes.category;
95-
96-
if (prop.$type === 'fontFamilies' || tokenCategory === 'scale' || tokenCategory === 'backdrop') {
97-
// Not creating for the tokens below, as they make no sense to exist as utility-classes.
98-
return;
99-
}
100-
101-
// Remove consecutive repeated words from the token name, like border-border-color
102-
const propName = removeConsecutiveRepeatedWords(prop.name);
103-
104-
if (prop.$type === 'typography') {
105-
// Typography tokens are handled differently, as each might have a different tokenType
106-
return typographyUtilityClasses.push(generateTypographyOutput(prop, propName, false));
107-
108-
} else if(tokenCategory.startsWith('round') || tokenCategory.startsWith('rectangular') || tokenCategory.startsWith('soft')) {
109-
// Generate utility classes for border-radius shape tokens, as they have their own token json file, based on primitive tokens
110-
return otherUtilityClasses.push(generateRadiusUtilityClasses(propName));
111-
112-
}
113-
114-
let utilityClass = '';
115-
116-
switch (tokenCategory) {
117-
case 'color':
118-
case 'primitives':
119-
case 'semantics':
120-
case 'text':
121-
case 'bg':
122-
case 'icon':
123-
case 'state':
124-
utilityClass = generateColorUtilityClasses(prop, propName);
125-
break;
126-
case 'border-size':
127-
utilityClass = generateBorderSizeUtilityClasses(propName);
128-
break;
129-
case 'font':
130-
utilityClass = generateFontUtilityClasses(prop, propName);
131-
break;
132-
case 'space':
133-
utilityClass = generateSpaceUtilityClasses(prop, propName);
134-
break;
135-
case 'shadow':
136-
case 'elevation':
137-
utilityClass = generateShadowUtilityClasses(propName);
138-
break;
139-
default:
140-
utilityClass = generateUtilityClasses(tokenCategory, propName);
141-
}
142-
143-
return otherUtilityClasses.push(utilityClass);
144-
});
145-
146-
// Concatenate typography utility classes at the beginning
147-
const finalOutput = typographyUtilityClasses.concat(otherUtilityClasses).join('\n');
148-
149-
const fileHeader = await file.options.fileHeader();
150-
151-
return [
152-
`/*\n${fileHeader.join('\n')}\n*/`,
153-
'@import "./ionic.vars";\n@import "../themes/mixins";\n',
154-
finalOutput,
155-
].join('\n');
84+
format: async function ({ dictionary, file }) {
85+
86+
console.log('Generating Utility-Classes...');
87+
88+
// Arrays to store specific utility classes
89+
const typographyUtilityClasses = [];
90+
const otherUtilityClasses = [];
91+
92+
// Generate utility classes for each token
93+
dictionary.allTokens.map((prop) => {
94+
95+
const tokenCategory = prop.attributes.category;
96+
97+
if (prop.$type === 'fontFamilies' || tokenCategory === 'scale' || tokenCategory === 'backdrop') {
98+
// Not creating for the tokens below, as they make no sense to exist as utility-classes.
99+
return;
100+
}
101+
102+
// Remove consecutive repeated words from the token name, like border-border-color
103+
const propName = removeConsecutiveRepeatedWords(prop.name);
104+
105+
if (prop.$type === 'typography') {
106+
// Typography tokens are handled differently, as each might have a different tokenType
107+
return typographyUtilityClasses.push(generateTypographyOutput(prop, propName, false));
108+
109+
} else if (tokenCategory.startsWith('round') || tokenCategory.startsWith('rectangular') || tokenCategory.startsWith('soft')) {
110+
// Generate utility classes for border-radius shape tokens, as they have their own token json file, based on primitive tokens
111+
return otherUtilityClasses.push(generateRadiusUtilityClasses(propName));
112+
}
113+
114+
let utilityClass = '';
115+
116+
switch (tokenCategory) {
117+
case 'color':
118+
case 'primitives':
119+
case 'semantics':
120+
case 'text':
121+
case 'bg':
122+
case 'icon':
123+
case 'state':
124+
utilityClass = generateColorUtilityClasses(prop, propName);
125+
break;
126+
case 'border-size':
127+
utilityClass = generateBorderSizeUtilityClasses(propName);
128+
break;
129+
case 'font':
130+
utilityClass = generateFontUtilityClasses(prop, propName);
131+
break;
132+
case 'space':
133+
utilityClass = generateSpaceUtilityClasses(prop, propName);
134+
break;
135+
case 'shadow':
136+
case 'elevation':
137+
utilityClass = generateShadowUtilityClasses(propName);
138+
break;
139+
default:
140+
utilityClass = generateUtilityClasses(tokenCategory, propName);
141+
}
142+
143+
return otherUtilityClasses.push(utilityClass);
144+
});
145+
146+
const defaultSpaceUtilityClasses = generateDefaultSpaceUtilityClasses();
147+
otherUtilityClasses.push(defaultSpaceUtilityClasses);
148+
149+
// Concatenate typography utility classes at the beginning
150+
const finalOutput = typographyUtilityClasses.concat(otherUtilityClasses).join('\n');
151+
152+
const fileHeader = await file.options.fileHeader();
153+
154+
return [
155+
`/*\n${fileHeader.join('\n')}\n*/`,
156+
'@import "./ionic.vars";\n@import "../themes/mixins";\n',
157+
finalOutput,
158+
].join('\n');
156159
},
157160
});
158161

@@ -163,24 +166,24 @@ module.exports = {
163166
source: ["node_modules/outsystems-design-tokens/tokens/**/*.json"],
164167
platforms: {
165168
scss: {
166-
transformGroup: "scss",
167-
buildPath: './src/foundations/',
168-
files: [
169-
{
170-
destination: "ionic.vars.scss",
171-
format: "scssVariablesFormat",
172-
options: {
173-
fileHeader: `custom-header`,
174-
},
169+
transformGroup: "scss",
170+
buildPath: './src/foundations/',
171+
files: [
172+
{
173+
destination: "ionic.vars.scss",
174+
format: "scssVariablesFormat",
175+
options: {
176+
fileHeader: `custom-header`,
175177
},
176-
{
177-
destination: "ionic.utility.scss",
178-
format: "cssUtilityClassesFormat",
179-
options: {
180-
fileHeader: `custom-header`
181-
}
178+
},
179+
{
180+
destination: "ionic.utility.scss",
181+
format: "cssUtilityClassesFormat",
182+
options: {
183+
fileHeader: `custom-header`
182184
}
183-
]
185+
}
186+
]
184187
}
185188
}
186189
};

0 commit comments

Comments
 (0)