Merge branch 'main' into rebase-next-after-8.4-release

This commit is contained in:
Tanner Reits
2024-11-04 17:33:10 -05:00
89 changed files with 2163 additions and 201 deletions

View File

@ -3,6 +3,19 @@
All notable changes to this project will be documented in this file.
See [Conventional Commits](https://conventionalcommits.org) for commit guidelines.
# [8.4.0](https://github.com/ionic-team/ionic-framework/compare/v8.3.4...v8.4.0) (2024-11-04)
### Features
* **menu:** pass role to ionWillClose and ionDidClose events ([#29954](https://github.com/ionic-team/ionic-framework/issues/29954)) ([ee2fa19](https://github.com/ionic-team/ionic-framework/commit/ee2fa19a1e9f09d492c7c08340d95ba6a56ebb2b))
* **segment-view:** adds support for new `ion-segment-view` component ([#29969](https://github.com/ionic-team/ionic-framework/issues/29969)) ([89508fb](https://github.com/ionic-team/ionic-framework/commit/89508fb89172900b1d11cc3fc18883f57a7fbab6))
* **select:** add `modal` as interface ([#29972](https://github.com/ionic-team/ionic-framework/issues/29972)) ([3628ea8](https://github.com/ionic-team/ionic-framework/commit/3628ea875a66a717783de5e0a4df440872339040))
## [8.3.4](https://github.com/ionic-team/ionic-framework/compare/v8.3.3...v8.3.4) (2024-10-30)

View File

@ -1,15 +1,15 @@
{
"name": "@ionic/angular",
"version": "8.3.4",
"version": "8.4.0",
"lockfileVersion": 2,
"requires": true,
"packages": {
"": {
"name": "@ionic/angular",
"version": "8.3.4",
"version": "8.4.0",
"license": "MIT",
"dependencies": {
"@ionic/core": "^8.3.4",
"@ionic/core": "^8.4.0",
"ionicons": "^7.0.0",
"jsonc-parser": "^3.0.0",
"tslib": "^2.3.0"
@ -1398,9 +1398,9 @@
"dev": true
},
"node_modules/@ionic/core": {
"version": "8.3.4",
"resolved": "https://registry.npmjs.org/@ionic/core/-/core-8.3.4.tgz",
"integrity": "sha512-MkgaQ9+oQwj3AK/i25MkLgKUUH3/nvNjd4YlmUyFjPG7l2IBHsrLlSmuFGCyniB+doI9Hynu3T9CZP7NS4RjRQ==",
"version": "8.4.0",
"resolved": "https://registry.npmjs.org/@ionic/core/-/core-8.4.0.tgz",
"integrity": "sha512-mZ2Ni9QByFGWBNr5W/F/nyPV+cXLhK+6W5BRziy7QPX6YIS57KH8FpY+CjE7BEcpE78anyY49bZt3eOWcES02g==",
"dependencies": {
"@stencil/core": "4.20.0",
"ionicons": "^7.2.2",
@ -9820,9 +9820,9 @@
"dev": true
},
"@ionic/core": {
"version": "8.3.4",
"resolved": "https://registry.npmjs.org/@ionic/core/-/core-8.3.4.tgz",
"integrity": "sha512-MkgaQ9+oQwj3AK/i25MkLgKUUH3/nvNjd4YlmUyFjPG7l2IBHsrLlSmuFGCyniB+doI9Hynu3T9CZP7NS4RjRQ==",
"version": "8.4.0",
"resolved": "https://registry.npmjs.org/@ionic/core/-/core-8.4.0.tgz",
"integrity": "sha512-mZ2Ni9QByFGWBNr5W/F/nyPV+cXLhK+6W5BRziy7QPX6YIS57KH8FpY+CjE7BEcpE78anyY49bZt3eOWcES02g==",
"requires": {
"@stencil/core": "4.20.0",
"ionicons": "^7.2.2",

View File

@ -1,6 +1,6 @@
{
"name": "@ionic/angular",
"version": "8.3.4",
"version": "8.4.0",
"description": "Angular specific wrappers for @ionic/core",
"keywords": [
"ionic",
@ -47,7 +47,7 @@
}
},
"dependencies": {
"@ionic/core": "^8.3.4",
"@ionic/core": "^8.4.0",
"ionicons": "^7.0.0",
"jsonc-parser": "^3.0.0",
"tslib": "^2.3.0"

View File

@ -69,7 +69,10 @@ export const DIRECTIVES = [
d.IonSearchbar,
d.IonSegment,
d.IonSegmentButton,
d.IonSegmentContent,
d.IonSegmentView,
d.IonSelect,
d.IonSelectModal,
d.IonSelectOption,
d.IonSkeletonText,
d.IonSpinner,

View File

@ -1338,6 +1338,8 @@ export class IonMenu {
}
import type { MenuCloseEventDetail as IIonMenuMenuCloseEventDetail } from '@ionic/core';
export declare interface IonMenu extends Components.IonMenu {
/**
* Emitted when the menu is about to be opened.
@ -1346,7 +1348,7 @@ export declare interface IonMenu extends Components.IonMenu {
/**
* Emitted when the menu is about to be closed.
*/
ionWillClose: EventEmitter<CustomEvent<void>>;
ionWillClose: EventEmitter<CustomEvent<IIonMenuMenuCloseEventDetail>>;
/**
* Emitted when the menu is open.
*/
@ -1354,7 +1356,7 @@ export declare interface IonMenu extends Components.IonMenu {
/**
* Emitted when the menu is closed.
*/
ionDidClose: EventEmitter<CustomEvent<void>>;
ionDidClose: EventEmitter<CustomEvent<IIonMenuMenuCloseEventDetail>>;
}
@ -1991,14 +1993,14 @@ This event will not emit when programmatically setting the `value` property.
@ProxyCmp({
inputs: ['disabled', 'layout', 'mode', 'theme', 'type', 'value']
inputs: ['contentId', 'disabled', 'layout', 'mode', 'theme', 'type', 'value']
})
@Component({
selector: 'ion-segment-button',
changeDetection: ChangeDetectionStrategy.OnPush,
template: '<ng-content></ng-content>',
// eslint-disable-next-line @angular-eslint/no-inputs-metadata-property
inputs: ['disabled', 'layout', 'mode', 'theme', 'type', 'value'],
inputs: ['contentId', 'disabled', 'layout', 'mode', 'theme', 'type', 'value'],
})
export class IonSegmentButton {
protected el: HTMLElement;
@ -2012,6 +2014,57 @@ export class IonSegmentButton {
export declare interface IonSegmentButton extends Components.IonSegmentButton {}
@ProxyCmp({
})
@Component({
selector: 'ion-segment-content',
changeDetection: ChangeDetectionStrategy.OnPush,
template: '<ng-content></ng-content>',
// eslint-disable-next-line @angular-eslint/no-inputs-metadata-property
inputs: [],
})
export class IonSegmentContent {
protected el: HTMLElement;
constructor(c: ChangeDetectorRef, r: ElementRef, protected z: NgZone) {
c.detach();
this.el = r.nativeElement;
}
}
export declare interface IonSegmentContent extends Components.IonSegmentContent {}
@ProxyCmp({
inputs: ['disabled']
})
@Component({
selector: 'ion-segment-view',
changeDetection: ChangeDetectionStrategy.OnPush,
template: '<ng-content></ng-content>',
// eslint-disable-next-line @angular-eslint/no-inputs-metadata-property
inputs: ['disabled'],
})
export class IonSegmentView {
protected el: HTMLElement;
constructor(c: ChangeDetectorRef, r: ElementRef, protected z: NgZone) {
c.detach();
this.el = r.nativeElement;
proxyOutputs(this, this.el, ['ionSegmentViewScroll']);
}
}
import type { SegmentViewScrollEvent as IIonSegmentViewSegmentViewScrollEvent } from '@ionic/core';
export declare interface IonSegmentView extends Components.IonSegmentView {
/**
* Emitted when the segment view is scrolled.
*/
ionSegmentViewScroll: EventEmitter<CustomEvent<IIonSegmentViewSegmentViewScrollEvent>>;
}
@ProxyCmp({
inputs: ['cancelText', 'color', 'compareWith', 'disabled', 'expandedIcon', 'fill', 'interface', 'interfaceOptions', 'justify', 'label', 'labelPlacement', 'mode', 'multiple', 'name', 'okText', 'placeholder', 'selectedText', 'shape', 'theme', 'toggleIcon', 'value'],
methods: ['open']
@ -2061,6 +2114,28 @@ This event will not emit when programmatically setting the `value` property.
}
@ProxyCmp({
inputs: ['header', 'multiple', 'options']
})
@Component({
selector: 'ion-select-modal',
changeDetection: ChangeDetectionStrategy.OnPush,
template: '<ng-content></ng-content>',
// eslint-disable-next-line @angular-eslint/no-inputs-metadata-property
inputs: ['header', 'multiple', 'options'],
})
export class IonSelectModal {
protected el: HTMLElement;
constructor(c: ChangeDetectorRef, r: ElementRef, protected z: NgZone) {
c.detach();
this.el = r.nativeElement;
}
}
export declare interface IonSelectModal extends Components.IonSelectModal {}
@ProxyCmp({
inputs: ['disabled', 'mode', 'theme', 'value']
})

View File

@ -65,6 +65,9 @@ import { defineCustomElement as defineIonReorderGroup } from '@ionic/core/compon
import { defineCustomElement as defineIonRippleEffect } from '@ionic/core/components/ion-ripple-effect.js';
import { defineCustomElement as defineIonRow } from '@ionic/core/components/ion-row.js';
import { defineCustomElement as defineIonSegmentButton } from '@ionic/core/components/ion-segment-button.js';
import { defineCustomElement as defineIonSegmentContent } from '@ionic/core/components/ion-segment-content.js';
import { defineCustomElement as defineIonSegmentView } from '@ionic/core/components/ion-segment-view.js';
import { defineCustomElement as defineIonSelectModal } from '@ionic/core/components/ion-select-modal.js';
import { defineCustomElement as defineIonSelectOption } from '@ionic/core/components/ion-select-option.js';
import { defineCustomElement as defineIonSkeletonText } from '@ionic/core/components/ion-skeleton-text.js';
import { defineCustomElement as defineIonSpinner } from '@ionic/core/components/ion-spinner.js';
@ -1322,6 +1325,8 @@ export class IonMenu {
}
import type { MenuCloseEventDetail as IIonMenuMenuCloseEventDetail } from '@ionic/core/components';
export declare interface IonMenu extends Components.IonMenu {
/**
* Emitted when the menu is about to be opened.
@ -1330,7 +1335,7 @@ export declare interface IonMenu extends Components.IonMenu {
/**
* Emitted when the menu is about to be closed.
*/
ionWillClose: EventEmitter<CustomEvent<void>>;
ionWillClose: EventEmitter<CustomEvent<IIonMenuMenuCloseEventDetail>>;
/**
* Emitted when the menu is open.
*/
@ -1338,7 +1343,7 @@ export declare interface IonMenu extends Components.IonMenu {
/**
* Emitted when the menu is closed.
*/
ionDidClose: EventEmitter<CustomEvent<void>>;
ionDidClose: EventEmitter<CustomEvent<IIonMenuMenuCloseEventDetail>>;
}
@ -1822,14 +1827,14 @@ export declare interface IonRow extends Components.IonRow {}
@ProxyCmp({
defineCustomElementFn: defineIonSegmentButton,
inputs: ['disabled', 'layout', 'mode', 'theme', 'type', 'value']
inputs: ['contentId', 'disabled', 'layout', 'mode', 'theme', 'type', 'value']
})
@Component({
selector: 'ion-segment-button',
changeDetection: ChangeDetectionStrategy.OnPush,
template: '<ng-content></ng-content>',
// eslint-disable-next-line @angular-eslint/no-inputs-metadata-property
inputs: ['disabled', 'layout', 'mode', 'theme', 'type', 'value'],
inputs: ['contentId', 'disabled', 'layout', 'mode', 'theme', 'type', 'value'],
standalone: true
})
export class IonSegmentButton {
@ -1844,6 +1849,85 @@ export class IonSegmentButton {
export declare interface IonSegmentButton extends Components.IonSegmentButton {}
@ProxyCmp({
defineCustomElementFn: defineIonSegmentContent
})
@Component({
selector: 'ion-segment-content',
changeDetection: ChangeDetectionStrategy.OnPush,
template: '<ng-content></ng-content>',
// eslint-disable-next-line @angular-eslint/no-inputs-metadata-property
inputs: [],
standalone: true
})
export class IonSegmentContent {
protected el: HTMLElement;
constructor(c: ChangeDetectorRef, r: ElementRef, protected z: NgZone) {
c.detach();
this.el = r.nativeElement;
}
}
export declare interface IonSegmentContent extends Components.IonSegmentContent {}
@ProxyCmp({
defineCustomElementFn: defineIonSegmentView,
inputs: ['disabled']
})
@Component({
selector: 'ion-segment-view',
changeDetection: ChangeDetectionStrategy.OnPush,
template: '<ng-content></ng-content>',
// eslint-disable-next-line @angular-eslint/no-inputs-metadata-property
inputs: ['disabled'],
standalone: true
})
export class IonSegmentView {
protected el: HTMLElement;
constructor(c: ChangeDetectorRef, r: ElementRef, protected z: NgZone) {
c.detach();
this.el = r.nativeElement;
proxyOutputs(this, this.el, ['ionSegmentViewScroll']);
}
}
import type { SegmentViewScrollEvent as IIonSegmentViewSegmentViewScrollEvent } from '@ionic/core/components';
export declare interface IonSegmentView extends Components.IonSegmentView {
/**
* Emitted when the segment view is scrolled.
*/
ionSegmentViewScroll: EventEmitter<CustomEvent<IIonSegmentViewSegmentViewScrollEvent>>;
}
@ProxyCmp({
defineCustomElementFn: defineIonSelectModal,
inputs: ['header', 'multiple', 'options']
})
@Component({
selector: 'ion-select-modal',
changeDetection: ChangeDetectionStrategy.OnPush,
template: '<ng-content></ng-content>',
// eslint-disable-next-line @angular-eslint/no-inputs-metadata-property
inputs: ['header', 'multiple', 'options'],
standalone: true
})
export class IonSelectModal {
protected el: HTMLElement;
constructor(c: ChangeDetectorRef, r: ElementRef, protected z: NgZone) {
c.detach();
this.el = r.nativeElement;
}
}
export declare interface IonSelectModal extends Components.IonSelectModal {}
@ProxyCmp({
defineCustomElementFn: defineIonSelectOption,
inputs: ['disabled', 'mode', 'theme', 'value']