From 42c9db52a77f1ceab770d03e48d925edf45c0958 Mon Sep 17 00:00:00 2001 From: Brandy Carney <6577830+brandyscarney@users.noreply.github.com> Date: Fri, 6 Dec 2024 12:05:55 -0500 Subject: [PATCH 1/5] test(angular): add new pages to navigate between lazy and standalone tests --- core/src/components.d.ts | 650 ------------------ .../standalone/src/directives/proxies.ts | 66 ++ packages/vue/src/proxies.ts | 5 +- 3 files changed, 68 insertions(+), 653 deletions(-) diff --git a/core/src/components.d.ts b/core/src/components.d.ts index 6e0e2405840..2ad44d97348 100644 --- a/core/src/components.d.ts +++ b/core/src/components.d.ts @@ -85,7 +85,6 @@ export namespace Components { interface IonAccordion { /** * If `true`, the accordion cannot be interacted with. - * @default false */ "disabled": boolean; /** @@ -94,39 +93,32 @@ export namespace Components { "mode"?: "ios" | "md"; /** * If `true`, the accordion cannot be interacted with, but does not alter the opacity. - * @default false */ "readonly": boolean; /** * The toggle icon to use. This icon will be rotated when the accordion is expanded or collapsed. - * @default chevronDown */ "toggleIcon": string; /** * The slot inside of `ion-item` to place the toggle icon. Defaults to `"end"`. - * @default 'end' */ "toggleIconSlot": 'start' | 'end'; /** * The value of the accordion. Defaults to an autogenerated value. - * @default `ion-accordion-${accordionIds++}` */ "value": string; } interface IonAccordionGroup { /** * If `true`, all accordions inside of the accordion group will animate when expanding or collapsing. - * @default true */ "animated": boolean; /** * If `true`, the accordion group cannot be interacted with. - * @default false */ "disabled": boolean; /** * Describes the expansion behavior for each accordion. Possible values are `"compact"` and `"inset"`. Defaults to `"compact"`. - * @default 'compact' */ "expand": 'compact' | 'inset'; "getAccordions": () => Promise; @@ -140,7 +132,6 @@ export namespace Components { "multiple"?: boolean; /** * If `true`, the accordion group cannot be interacted with, but does not alter the opacity. - * @default false */ "readonly": boolean; /** @@ -155,17 +146,14 @@ export namespace Components { interface IonActionSheet { /** * If `true`, the action sheet will animate. - * @default true */ "animated": boolean; /** * If `true`, the action sheet will be dismissed when the backdrop is clicked. - * @default true */ "backdropDismiss": boolean; /** * An array of buttons for the action sheet. - * @default [] */ "buttons": (ActionSheetButton | string)[]; /** @@ -183,9 +171,6 @@ export namespace Components { * Animation to use when the action sheet is presented. */ "enterAnimation"?: AnimationBuilder; - /** - * @default false - */ "hasController": boolean; /** * Title for the action sheet. @@ -197,12 +182,10 @@ export namespace Components { "htmlAttributes"?: { [key: string]: any }; /** * If `true`, the action sheet will open. If `false`, the action sheet will close. Use this if you need finer grained control over presentation, otherwise just use the actionSheetController or the `trigger` property. Note: `isOpen` will not automatically be set back to `false` when the action sheet dismisses. You will need to do that in your code. - * @default false */ "isOpen": boolean; /** * If `true`, the keyboard will be automatically dismissed when the overlay is presented. - * @default true */ "keyboardClose": boolean; /** @@ -232,7 +215,6 @@ export namespace Components { "subHeader"?: string; /** * If `true`, the action sheet will be translucent. Only applies when the mode is `"ios"` and the device supports [`backdrop-filter`](https://developer.mozilla.org/en-US/docs/Web/CSS/backdrop-filter#Browser_compatibility). - * @default false */ "translucent": boolean; /** @@ -243,17 +225,14 @@ export namespace Components { interface IonAlert { /** * If `true`, the alert will animate. - * @default true */ "animated": boolean; /** * If `true`, the alert will be dismissed when the backdrop is clicked. - * @default true */ "backdropDismiss": boolean; /** * Array of buttons to be added to the alert. - * @default [] */ "buttons": (AlertButton | string)[]; /** @@ -271,9 +250,6 @@ export namespace Components { * Animation to use when the alert is presented. */ "enterAnimation"?: AnimationBuilder; - /** - * @default false - */ "hasController": boolean; /** * The main title in the heading of the alert. @@ -285,17 +261,14 @@ export namespace Components { "htmlAttributes"?: { [key: string]: any }; /** * Array of input to show in the alert. - * @default [] */ "inputs": AlertInput[]; /** * If `true`, the alert will open. If `false`, the alert will close. Use this if you need finer grained control over presentation, otherwise just use the alertController or the `trigger` property. Note: `isOpen` will not automatically be set back to `false` when the alert dismisses. You will need to do that in your code. - * @default false */ "isOpen": boolean; /** * If `true`, the keyboard will be automatically dismissed when the overlay is presented. - * @default true */ "keyboardClose": boolean; /** @@ -329,7 +302,6 @@ export namespace Components { "subHeader"?: string; /** * If `true`, the alert will be translucent. Only applies when the mode is `"ios"` and the device supports [`backdrop-filter`](https://developer.mozilla.org/en-US/docs/Web/CSS/backdrop-filter#Browser_compatibility). - * @default false */ "translucent": boolean; /** @@ -357,7 +329,6 @@ export namespace Components { "defaultHref"?: string; /** * If `true`, the user cannot interact with the button. - * @default false */ "disabled": boolean; /** @@ -378,24 +349,20 @@ export namespace Components { "text"?: string | null; /** * The type of the button. - * @default 'button' */ "type": 'submit' | 'reset' | 'button'; } interface IonBackdrop { /** * If `true`, the backdrop will stop propagation on tap. - * @default true */ "stopPropagation": boolean; /** * If `true`, the backdrop will can be clicked and will emit the `ionBackdropTap` event. - * @default true */ "tappable": boolean; /** * If `true`, the backdrop will be visible. - * @default true */ "visible": boolean; } @@ -412,12 +379,8 @@ export namespace Components { interface IonBreadcrumb { /** * If `true`, the breadcrumb will take on a different look to show that it is the currently active breadcrumb. Defaults to `true` for the last breadcrumb if it is not set on any. - * @default false */ "active": boolean; - /** - * @default false - */ "collapsed": boolean; /** * The color to use from your application's color palette. Default options are: `"primary"`, `"secondary"`, `"tertiary"`, `"success"`, `"warning"`, `"danger"`, `"light"`, `"medium"`, and `"dark"`. For more information on colors, see [theming](/docs/theming/basics). @@ -425,7 +388,6 @@ export namespace Components { "color"?: Color; /** * If `true`, the user cannot interact with the breadcrumb. - * @default false */ "disabled": boolean; /** @@ -451,7 +413,6 @@ export namespace Components { "routerAnimation": AnimationBuilder | undefined; /** * When using a router, it specifies the transition direction when navigating to another page using `href`. - * @default 'forward' */ "routerDirection": RouterDirection; /** @@ -471,12 +432,10 @@ export namespace Components { "color"?: Color; /** * The number of breadcrumbs to show after the collapsed indicator. If `itemsBeforeCollapse` + `itemsAfterCollapse` is greater than `maxItems`, the breadcrumbs will not be collapsed. - * @default 1 */ "itemsAfterCollapse": number; /** * The number of breadcrumbs to show before the collapsed indicator. If `itemsBeforeCollapse` + `itemsAfterCollapse` is greater than `maxItems`, the breadcrumbs will not be collapsed. - * @default 1 */ "itemsBeforeCollapse": number; /** @@ -491,7 +450,6 @@ export namespace Components { interface IonButton { /** * The type of button. - * @default 'button' */ "buttonType": string; /** @@ -500,7 +458,6 @@ export namespace Components { "color"?: Color; /** * If `true`, the user cannot interact with the button. - * @default false */ "disabled": boolean; /** @@ -537,7 +494,6 @@ export namespace Components { "routerAnimation": AnimationBuilder | undefined; /** * When using a router, it specifies the transition direction when navigating to another page using `href`. - * @default 'forward' */ "routerDirection": RouterDirection; /** @@ -550,7 +506,6 @@ export namespace Components { "size"?: 'small' | 'default' | 'large'; /** * If `true`, activates a button with a heavier font weight. - * @default false */ "strong": boolean; /** @@ -559,21 +514,18 @@ export namespace Components { "target": string | undefined; /** * The type of the button. - * @default 'button' */ "type": 'submit' | 'reset' | 'button'; } interface IonButtons { /** * If true, buttons will disappear when its parent toolbar has fully collapsed if the toolbar is not the first toolbar. If the toolbar is the first toolbar, the buttons will be hidden and will only be shown once all toolbars have fully collapsed. Only applies in `ios` mode with `collapse` set to `true` on `ion-header`. Typically used for [Collapsible Large Titles](https://ionicframework.com/docs/api/title#collapsible-large-titles) - * @default false */ "collapse": boolean; } interface IonCard { /** * If `true`, a button tag will be rendered and the card will be tappable. - * @default false */ "button": boolean; /** @@ -582,7 +534,6 @@ export namespace Components { "color"?: Color; /** * If `true`, the user cannot interact with the card. - * @default false */ "disabled": boolean; /** @@ -607,7 +558,6 @@ export namespace Components { "routerAnimation": AnimationBuilder | undefined; /** * When using a router, it specifies the transition direction when navigating to another page using `href`. - * @default 'forward' */ "routerDirection": RouterDirection; /** @@ -616,7 +566,6 @@ export namespace Components { "target": string | undefined; /** * The type of the button. Only used when an `onclick` or `button` property is present. - * @default 'button' */ "type": 'submit' | 'reset' | 'button'; } @@ -637,7 +586,6 @@ export namespace Components { "mode"?: "ios" | "md"; /** * If `true`, the card header will be translucent. Only applies when the mode is `"ios"` and the device supports [`backdrop-filter`](https://developer.mozilla.org/en-US/docs/Web/CSS/backdrop-filter#Browser_compatibility). - * @default false */ "translucent": boolean; } @@ -668,7 +616,6 @@ export namespace Components { "alignment"?: 'start' | 'center'; /** * If `true`, the checkbox is selected. - * @default false */ "checked": boolean; /** @@ -677,7 +624,6 @@ export namespace Components { "color"?: Color; /** * If `true`, the user cannot interact with the checkbox. - * @default false */ "disabled": boolean; /** @@ -690,7 +636,6 @@ export namespace Components { "helperText"?: string; /** * If `true`, the checkbox will visually appear as indeterminate. - * @default false */ "indeterminate": boolean; /** @@ -699,7 +644,6 @@ export namespace Components { "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. - * @default 'start' */ "labelPlacement": 'start' | 'end' | 'fixed' | 'stacked'; /** @@ -708,18 +652,15 @@ export namespace Components { "mode"?: "ios" | "md"; /** * The name of the control, which is submitted with the form data. - * @default this.inputId */ "name": string; /** * If true, screen readers will announce it as a required field. This property works only for accessibility purposes, it will not prevent the form from submitting if the value is invalid. - * @default false */ "required": boolean; "setFocus": () => Promise; /** * The value of the checkbox does not mean if it's checked or not, use the `checked` property for that. The value of a checkbox is analogous to the value of an ``, it's only used when the checkbox participates in a native `
`. - * @default 'on' */ "value": any | null; } @@ -730,7 +671,6 @@ export namespace Components { "color"?: Color; /** * If `true`, the user cannot interact with the chip. - * @default false */ "disabled": boolean; /** @@ -739,7 +679,6 @@ export namespace Components { "mode"?: "ios" | "md"; /** * Display an outline style button. - * @default false */ "outline": boolean; } @@ -848,7 +787,6 @@ export namespace Components { "color"?: Color; /** * Controls where the fixed content is placed relative to the main content in the DOM. This can be used to control the order in which fixed elements receive keyboard focus. For example, if a FAB in the fixed slot should receive keyboard focus before the main page content, set this property to `'before'`. - * @default 'after' */ "fixedSlotPlacement": 'after' | 'before'; /** @@ -857,7 +795,6 @@ export namespace Components { "forceOverscroll"?: boolean; /** * If `true`, the content will scroll behind the headers and footers. This effect can easily be seen by setting the toolbar to transparent. - * @default false */ "fullscreen": boolean; /** @@ -877,7 +814,6 @@ export namespace Components { "scrollByPoint": (x: number, y: number, duration: number) => Promise; /** * Because of performance reasons, ionScroll events are disabled by default, in order to enable them and start listening from (ionScroll), set this property to `true`. - * @default false */ "scrollEvents": boolean; /** @@ -899,12 +835,10 @@ export namespace Components { "scrollToTop": (duration?: number) => Promise; /** * If you want to enable the content scrolling in the X axis, set this property to `true`. - * @default false */ "scrollX": boolean; /** * If you want to disable the content scrolling in the Y axis, set this property to `false`. - * @default true */ "scrollY": boolean; } @@ -916,17 +850,14 @@ export namespace Components { "cancel": (closeOverlay?: boolean) => Promise; /** * The text to display on the picker's cancel button. - * @default 'Cancel' */ "cancelText": string; /** * The text to display on the picker's "Clear" button. - * @default 'Clear' */ "clearText": string; /** * The color to use from your application's color palette. Default options are: `"primary"`, `"secondary"`, `"tertiary"`, `"success"`, `"warning"`, `"danger"`, `"light"`, `"medium"`, and `"dark"`. For more information on colors, see [theming](/docs/theming/basics). - * @default 'primary' */ "color"?: Color; /** @@ -940,17 +871,14 @@ export namespace Components { "dayValues"?: number[] | number | string; /** * If `true`, the user cannot interact with the datetime. - * @default false */ "disabled": boolean; /** * The text to display on the picker's "Done" button. - * @default 'Done' */ "doneText": string; /** * The first day of the week to use for `ion-datetime`. The default value is `0` and represents Sunday. - * @default 0 */ "firstDayOfWeek": number; /** @@ -975,7 +903,6 @@ export namespace Components { "isDateEnabled"?: (dateIsoString: string) => boolean; /** * The locale to use for `ion-datetime`. This impacts month and day name formatting. The `"default"` value refers to the default locale set by your device. - * @default 'default' */ "locale": string; /** @@ -1000,27 +927,22 @@ export namespace Components { "monthValues"?: number[] | number | string; /** * If `true`, multiple dates can be selected at once. Only applies to `presentation="date"` and `preferWheel="false"`. - * @default false */ "multiple": boolean; /** * The name of the control, which is submitted with the form data. - * @default this.inputId */ "name": string; /** * If `true`, a wheel picker will be rendered instead of a calendar grid where possible. If `false`, a calendar grid will be rendered instead of a wheel picker where possible. A wheel picker can be rendered instead of a grid when `presentation` is one of the following values: `"date"`, `"date-time"`, or `"time-date"`. A wheel picker will always be rendered regardless of the `preferWheel` value when `presentation` is one of the following values: `"time"`, `"month"`, `"month-year"`, or `"year"`. - * @default false */ "preferWheel": boolean; /** * Which values you want to select. `"date"` will show a calendar picker to select the month, day, and year. `"time"` will show a time picker to select the hour, minute, and (optionally) AM/PM. `"date-time"` will show the date picker first and time picker second. `"time-date"` will show the time picker first and date picker second. - * @default 'date-time' */ "presentation": DatetimePresentation; /** * If `true`, the datetime appears normal but the selected date cannot be changed. - * @default false */ "readonly": boolean; /** @@ -1030,32 +952,26 @@ export namespace Components { "reset": (startDate?: string) => Promise; /** * If `true`, the datetime calendar displays a six-week (42-day) layout, including days from the previous and next months to fill the grid. These adjacent days are selectable unless disabled. - * @default false */ "showAdjacentDays": boolean; /** * If `true`, a "Clear" button will be rendered alongside the default "Cancel" and "OK" buttons at the bottom of the `ion-datetime` component. Developers can also use the `button` slot if they want to customize these buttons. If custom buttons are set in the `button` slot then the default buttons will not be rendered. - * @default false */ "showClearButton": boolean; /** * If `true`, the default "Cancel" and "OK" buttons will be rendered at the bottom of the `ion-datetime` component. Developers can also use the `button` slot if they want to customize these buttons. If custom buttons are set in the `button` slot then the default buttons will not be rendered. - * @default false */ "showDefaultButtons": boolean; /** * If `true`, the default "Time" label will be rendered for the time selector of the `ion-datetime` component. Developers can also use the `time-label` slot if they want to customize this label. If a custom label is set in the `time-label` slot then the default label will not be rendered. - * @default true */ "showDefaultTimeLabel": boolean; /** * If `true`, a header will be shown above the calendar picker. This will include both the slotted title, and the selected date. - * @default false */ "showDefaultTitle": boolean; /** * If `cover`, the `ion-datetime` will expand to cover the full width of its container. If `fixed`, the `ion-datetime` will have a fixed width. - * @default 'fixed' */ "size": 'cover' | 'fixed'; /** @@ -1074,7 +990,6 @@ export namespace Components { interface IonDatetimeButton { /** * The color to use from your application's color palette. Default options are: `"primary"`, `"secondary"`, `"tertiary"`, `"success"`, `"warning"`, `"danger"`, `"light"`, `"medium"`, and `"dark"`. For more information on colors, see [theming](/docs/theming/basics). - * @default 'primary' */ "color"?: Color; /** @@ -1083,7 +998,6 @@ export namespace Components { "datetime"?: string; /** * If `true`, the user cannot interact with the button. - * @default false */ "disabled": boolean; /** @@ -1094,7 +1008,6 @@ export namespace Components { interface IonFab { /** * If `true`, both the `ion-fab-button` and all `ion-fab-list` inside `ion-fab` will become active. That means `ion-fab-button` will become a `close` icon and `ion-fab-list` will become visible. - * @default false */ "activated": boolean; /** @@ -1103,7 +1016,6 @@ export namespace Components { "close": () => Promise; /** * If `true`, the fab will display on the edge of the header if `vertical` is `"top"`, and on the edge of the footer if it is `"bottom"`. Should be used with a `fixed` slot. - * @default false */ "edge": boolean; /** @@ -1122,12 +1034,10 @@ export namespace Components { interface IonFabButton { /** * If `true`, the fab button will be show a close icon. - * @default false */ "activated": boolean; /** * The icon name to use for the close icon. This will appear when the fab button is pressed. Only applies if it is the main button inside of a fab containing a fab list. - * @default close */ "closeIcon": string; /** @@ -1136,7 +1046,6 @@ export namespace Components { "color"?: Color; /** * If `true`, the user cannot interact with the fab button. - * @default false */ "disabled": boolean; /** @@ -1161,12 +1070,10 @@ export namespace Components { "routerAnimation": AnimationBuilder | undefined; /** * When using a router, it specifies the transition direction when navigating to another page using `href`. - * @default 'forward' */ "routerDirection": RouterDirection; /** * If `true`, the fab button will show when in a fab-list. - * @default false */ "show": boolean; /** @@ -1179,24 +1086,20 @@ export namespace Components { "target": string | undefined; /** * If `true`, the fab button will be translucent. Only applies when the mode is `"ios"` and the device supports [`backdrop-filter`](https://developer.mozilla.org/en-US/docs/Web/CSS/backdrop-filter#Browser_compatibility). - * @default false */ "translucent": boolean; /** * The type of the button. - * @default 'button' */ "type": 'submit' | 'reset' | 'button'; } interface IonFabList { /** * If `true`, the fab list will show all fab buttons in the list. - * @default false */ "activated": boolean; /** * The side the fab list will show on relative to the main fab button. - * @default 'bottom' */ "side": 'start' | 'end' | 'top' | 'bottom'; } @@ -1211,14 +1114,12 @@ export namespace Components { "mode"?: "ios" | "md"; /** * If `true`, the footer will be translucent. Only applies when the mode is `"ios"` and the device supports [`backdrop-filter`](https://developer.mozilla.org/en-US/docs/Web/CSS/backdrop-filter#Browser_compatibility). Note: In order to scroll content behind the footer, the `fullscreen` attribute needs to be set on the content. - * @default false */ "translucent": boolean; } interface IonGrid { /** * If `true`, the grid will have a fixed width based on the screen size. - * @default false */ "fixed": boolean; } @@ -1233,7 +1134,6 @@ export namespace Components { "mode"?: "ios" | "md"; /** * If `true`, the header will be translucent. Only applies when the mode is `"ios"` and the device supports [`backdrop-filter`](https://developer.mozilla.org/en-US/docs/Web/CSS/backdrop-filter#Browser_compatibility). Note: In order to scroll content behind the header, the `fullscreen` attribute needs to be set on the content. - * @default false */ "translucent": boolean; } @@ -1254,17 +1154,14 @@ export namespace Components { "complete": () => Promise; /** * If `true`, the infinite scroll will be hidden and scroll event listeners will be removed. Set this to true to disable the infinite scroll from actively trying to receive new data while scrolling. This is useful when it is known that there is no more data that can be added, and the infinite scroll is no longer needed. - * @default false */ "disabled": boolean; /** * The position of the infinite scroll element. The value can be either `top` or `bottom`. - * @default 'bottom' */ "position": 'top' | 'bottom'; /** * The threshold distance from the bottom of the content to call the `infinite` output event when scrolled. The threshold value can be either a percent, or in pixels. For example, use the value of `10%` for the `infinite` output event to get called when the user has scrolled 10% from the bottom of the page. Use the value `100px` when the scroll is within 100 pixels from the bottom of the page. - * @default '15%' */ "threshold": string; } @@ -1281,27 +1178,22 @@ export namespace Components { interface IonInput { /** * Indicates whether and how the text value should be automatically capitalized as it is entered/edited by the user. Available options: `"off"`, `"none"`, `"on"`, `"sentences"`, `"words"`, `"characters"`. - * @default 'off' */ "autocapitalize": string; /** * Indicates whether the value of the control can be automatically completed by the browser. - * @default 'off' */ "autocomplete": AutocompleteTypes; /** * Whether auto correction should be enabled when the user is entering/editing the text value. - * @default 'off' */ "autocorrect": 'on' | 'off'; /** * Sets the [`autofocus` attribute](https://developer.mozilla.org/en-US/docs/Web/HTML/Global_attributes/autofocus) on the native input element. This may not be sufficient for the element to be focused on page load. See [managing focus](/docs/developing/managing-focus) for more information. - * @default false */ "autofocus": boolean; /** * If `true`, a clear icon will appear in the input when there is a value. Clicking it clears the input. - * @default false */ "clearInput": boolean; /** @@ -1318,7 +1210,6 @@ export namespace Components { "color"?: Color; /** * If `true`, a character counter will display the ratio of characters used and the total character limit. Developers must also set the `maxlength` property for the counter to be calculated correctly. - * @default false */ "counter": boolean; /** @@ -1331,7 +1222,6 @@ export namespace Components { "debounce"?: number; /** * If `true`, the user cannot interact with the input. - * @default false */ "disabled": boolean; /** @@ -1364,7 +1254,6 @@ export namespace Components { "label"?: string; /** * Where to place the label relative to the input. `"start"`: The label will appear to the left of the input in LTR and to the right in RTL. `"end"`: The label will appear to the right of the input in LTR and to the left in RTL. `"floating"`: The label will appear smaller and above the input when the input is focused or it has a value. Otherwise it will appear on top of the input. `"stacked"`: The label will appear smaller and above the input regardless even when the input is blurred or has no value. `"fixed"`: The label has the same behavior as `"start"` except it also has a fixed width. Long text will be truncated with ellipses ("..."). - * @default 'start' */ "labelPlacement": 'start' | 'end' | 'floating' | 'stacked' | 'fixed'; /** @@ -1393,7 +1282,6 @@ export namespace Components { "multiple"?: boolean; /** * The name of the control, which is submitted with the form data. - * @default this.inputId */ "name": string; /** @@ -1406,12 +1294,10 @@ export namespace Components { "placeholder"?: string; /** * If `true`, the user cannot modify the value. - * @default false */ "readonly": boolean; /** * If `true`, the user must fill in a value before submitting a form. - * @default false */ "required": boolean; /** @@ -1424,7 +1310,6 @@ export namespace Components { "shape"?: 'round'; /** * If `true`, the element will have its spelling and grammar checked. - * @default false */ "spellcheck": boolean; /** @@ -1433,19 +1318,16 @@ export namespace Components { "step"?: string; /** * The type of control to display. The default type is text. - * @default 'text' */ "type": TextFieldTypes; /** * The value of the input. - * @default '' */ "value"?: string | number | null; } interface IonInputOtp { /** * Indicates whether and how the text value should be automatically capitalized as it is entered/edited by the user. Available options: `"off"`, `"none"`, `"on"`, `"sentences"`, `"words"`, `"characters"`. - * @default 'off' */ "autocapitalize": string; /** @@ -1454,12 +1336,10 @@ export namespace Components { "color"?: Color; /** * If `true`, the user cannot interact with the input. - * @default false */ "disabled": boolean; /** * The fill for the input boxes. If `"solid"` the input boxes will have a background. If `"outline"` the input boxes will be transparent with a border. - * @default 'outline' */ "fill"?: 'outline' | 'solid'; /** @@ -1468,7 +1348,6 @@ export namespace Components { "inputmode"?: 'none' | 'text' | 'tel' | 'url' | 'email' | 'numeric' | 'decimal' | 'search'; /** * The number of input boxes to display. - * @default 4 */ "length": number; /** @@ -1477,7 +1356,6 @@ export namespace Components { "pattern"?: string; /** * If `true`, the user cannot modify the value. - * @default false */ "readonly": boolean; /** @@ -1491,22 +1369,18 @@ export namespace Components { "setFocus": (index?: number) => Promise; /** * The shape of the input boxes. If "round" they will have an increased border radius. If "rectangular" they will have no border radius. If "soft" they will have a soft border radius. - * @default 'round' */ "shape": 'round' | 'rectangular' | 'soft'; /** * The size of the input boxes. - * @default 'medium' */ "size": 'small' | 'medium' | 'large'; /** * The type of input allowed in the input boxes. - * @default 'number' */ "type": 'text' | 'number'; /** * The value of the input group. - * @default '' */ "value"?: string | number | null; } @@ -1527,15 +1401,11 @@ export namespace Components { * The icon that can be used to represent showing a password. If not set, the "eye" Ionicon will be used. */ "showIcon"?: string; - /** - * @default 'password' - */ "type": TextFieldTypes; } interface IonItem { /** * If `true`, a button tag will be rendered and the item will be tappable. - * @default false */ "button": boolean; /** @@ -1548,12 +1418,10 @@ export namespace Components { "detail"?: boolean; /** * The icon to use when `detail` is set to `true`. - * @default chevronForward */ "detailIcon": string; /** * If `true`, the user cannot interact with the item. - * @default false */ "disabled": boolean; /** @@ -1582,7 +1450,6 @@ export namespace Components { "routerAnimation": AnimationBuilder | undefined; /** * When using a router, it specifies the transition direction when navigating to another page using `href`. - * @default 'forward' */ "routerDirection": RouterDirection; /** @@ -1591,7 +1458,6 @@ export namespace Components { "target": string | undefined; /** * The type of the button. Only used when an `onclick` or `button` property is present. - * @default 'button' */ "type": 'submit' | 'reset' | 'button'; } @@ -1606,7 +1472,6 @@ export namespace Components { "mode"?: "ios" | "md"; /** * When it's set to `true`, the item-divider will stay visible when it reaches the top of the viewport until the next `ion-item-divider` replaces it. This feature relies in `position:sticky`: https://caniuse.com/#feat=css-sticky - * @default false */ "sticky": boolean; } @@ -1619,7 +1484,6 @@ export namespace Components { "color"?: Color; /** * If `true`, the user cannot interact with the item option. - * @default false */ "disabled": boolean; /** @@ -1628,7 +1492,6 @@ export namespace Components { "download": string | undefined; /** * If `true`, the option will expand to take up the available width and cover any other options. - * @default false */ "expandable": boolean; /** @@ -1649,7 +1512,6 @@ export namespace Components { "target": string | undefined; /** * The type of the button. - * @default 'button' */ "type": 'submit' | 'reset' | 'button'; } @@ -1657,7 +1519,6 @@ export namespace Components { "fireSwipeEvent": () => Promise; /** * The side the option button should be on. Possible values: `"start"` and `"end"`. If you have multiple `ion-item-options`, a side must be provided for each. - * @default 'end' */ "side": Side; } @@ -1672,7 +1533,6 @@ export namespace Components { "closeOpened": () => Promise; /** * If `true`, the user cannot interact with the sliding item. - * @default false */ "disabled": boolean; /** @@ -1710,7 +1570,6 @@ export namespace Components { "closeSlidingItems": () => Promise; /** * If `true`, the list will have margin around it and rounded corners. - * @default false */ "inset": boolean; /** @@ -1739,12 +1598,10 @@ export namespace Components { interface IonLoading { /** * If `true`, the loading indicator will animate. - * @default true */ "animated": boolean; /** * If `true`, the loading indicator will be dismissed when the backdrop is clicked. - * @default false */ "backdropDismiss": boolean; /** @@ -1760,16 +1617,12 @@ export namespace Components { "dismiss": (data?: any, role?: string) => Promise; /** * Number of milliseconds to wait before dismissing the loading indicator. - * @default 0 */ "duration": number; /** * Animation to use when the loading indicator is presented. */ "enterAnimation"?: AnimationBuilder; - /** - * @default false - */ "hasController": boolean; /** * Additional attributes to pass to the loader. @@ -1777,12 +1630,10 @@ export namespace Components { "htmlAttributes"?: { [key: string]: any }; /** * If `true`, the loading indicator will open. If `false`, the loading indicator will close. Use this if you need finer grained control over presentation, otherwise just use the loadingController or the `trigger` property. Note: `isOpen` will not automatically be set back to `false` when the loading indicator dismisses. You will need to do that in your code. - * @default false */ "isOpen": boolean; /** * If `true`, the keyboard will be automatically dismissed when the overlay is presented. - * @default true */ "keyboardClose": boolean; /** @@ -1812,7 +1663,6 @@ export namespace Components { "present": () => Promise; /** * If `true`, a backdrop will be displayed behind the loading indicator. - * @default true */ "showBackdrop": boolean; /** @@ -1821,7 +1671,6 @@ export namespace Components { "spinner"?: SpinnerTypes | null; /** * If `true`, the loading indicator will be translucent. Only applies when the mode is `"ios"` and the device supports [`backdrop-filter`](https://developer.mozilla.org/en-US/docs/Web/CSS/backdrop-filter#Browser_compatibility). - * @default false */ "translucent": boolean; /** @@ -1842,7 +1691,6 @@ export namespace Components { "contentId"?: string; /** * If `true`, the menu is disabled. - * @default false */ "disabled": boolean; /** @@ -1855,7 +1703,6 @@ export namespace Components { "isOpen": () => Promise; /** * The edge threshold for dragging the menu open. If a drag/swipe happens over this value, the menu is not triggered. - * @default 50 */ "maxEdgeStart": number; /** @@ -1876,12 +1723,10 @@ export namespace Components { "setOpen": (shouldOpen: boolean, animated?: boolean, role?: string) => Promise; /** * Which side of the view the menu should be placed. - * @default 'start' */ "side": Side; /** * If `true`, swiping the menu is enabled. - * @default true */ "swipeGesture": boolean; /** @@ -1897,7 +1742,6 @@ export namespace Components { interface IonMenuButton { /** * Automatically hides the menu button when the corresponding menu is not active - * @default true */ "autoHide": boolean; /** @@ -1906,7 +1750,6 @@ export namespace Components { "color"?: Color; /** * If `true`, the user cannot interact with the menu button. - * @default false */ "disabled": boolean; /** @@ -1919,14 +1762,12 @@ export namespace Components { "mode"?: "ios" | "md"; /** * The type of the button. - * @default 'button' */ "type": 'submit' | 'reset' | 'button'; } interface IonMenuToggle { /** * Automatically hides the content when the corresponding menu is not active. By default, it's `true`. Change it to `false` in order to keep `ion-menu-toggle` always visible regardless the state of the menu. - * @default true */ "autoHide": boolean; /** @@ -1937,17 +1778,14 @@ export namespace Components { interface IonModal { /** * If `true`, the modal will animate. - * @default true */ "animated": boolean; /** * A decimal value between 0 and 1 that indicates the point after which the backdrop will begin to fade in when using a sheet modal. Prior to this point, the backdrop will be hidden and the content underneath the sheet can be interacted with. This value is exclusive meaning the backdrop will become active after the value specified. - * @default 0 */ "backdropBreakpoint": number; /** * If `true`, the modal will be dismissed when the backdrop is clicked. - * @default true */ "backdropDismiss": boolean; /** @@ -1956,7 +1794,6 @@ export namespace Components { "breakpoints"?: number[]; /** * Determines whether or not a modal can dismiss when calling the `dismiss` method. If the value is `true` or the value's function returns `true`, the modal will close when trying to dismiss. If the value is `false` or the value's function returns `false`, the modal will not close when trying to dismiss. See https://ionicframework.com/docs/troubleshooting/runtime#accessing-this if you need to access `this` from within the callback. - * @default true */ "canDismiss": boolean | ((data?: any, role?: string) => Promise); /** @@ -1984,12 +1821,10 @@ export namespace Components { "enterAnimation"?: AnimationBuilder; /** * Controls whether scrolling or dragging within the sheet modal expands it to a larger breakpoint. This only takes effect when `breakpoints` and `initialBreakpoint` are set. If `true`, scrolling or dragging anywhere in the modal will first expand it to the next breakpoint. Once fully expanded, scrolling will affect the content. If `false`, scrolling will always affect the content. The modal will only expand when dragging the header or handle. The modal will close when dragging the header or handle. It can also be closed when dragging the content, but only if the content is scrolled to the top. - * @default true */ "expandToScroll": boolean; /** * If `true`, focus will not be allowed to move outside of this overlay. If `false`, focus will be allowed to move outside of the overlay. In most scenarios this property should remain set to `true`. Setting this property to `false` can cause severe accessibility issues as users relying on assistive technologies may be able to move focus into a confusing state. We recommend only setting this to `false` when absolutely necessary. Developers may want to consider disabling focus trapping if this overlay presents a non-Ionic overlay from a 3rd party library. Developers would disable focus trapping on the Ionic overlay when presenting the 3rd party overlay and then re-enable focus trapping when dismissing the 3rd party overlay and moving focus back to the Ionic overlay. - * @default true */ "focusTrap": boolean; /** @@ -2002,12 +1837,8 @@ export namespace Components { "handle"?: boolean; /** * The interaction behavior for the sheet modal when the handle is pressed. Defaults to `"none"`, which means the modal will not change size or position when the handle is pressed. Set to `"cycle"` to let the modal cycle between available breakpoints when pressed. Handle behavior is unavailable when the `handle` property is set to `false` or when the `breakpoints` property is not set (using a fullscreen or card modal). - * @default 'none' */ "handleBehavior"?: ModalHandleBehavior; - /** - * @default false - */ "hasController": boolean; /** * Additional attributes to pass to the modal. @@ -2019,17 +1850,14 @@ export namespace Components { "initialBreakpoint"?: number; /** * If `true`, the modal will open. If `false`, the modal will close. Use this if you need finer grained control over presentation, otherwise just use the modalController or the `trigger` property. Note: `isOpen` will not automatically be set back to `false` when the modal dismisses. You will need to do that in your code. - * @default false */ "isOpen": boolean; /** * If `true`, the component passed into `ion-modal` will automatically be mounted when the modal is created. The component will remain mounted even when the modal is dismissed. However, the component will be destroyed when the modal is destroyed. This property is not reactive and should only be used when initially creating a modal. Note: This feature only applies to inline modals in JavaScript frameworks such as Angular, React, and Vue. - * @default false */ "keepContentsMounted": boolean; /** * If `true`, the keyboard will be automatically dismissed when the overlay is presented. - * @default true */ "keyboardClose": boolean; /** @@ -2064,7 +1892,6 @@ export namespace Components { "setCurrentBreakpoint": (breakpoint: number) => Promise; /** * If `true`, a backdrop will be displayed behind the modal. This property controls whether or not the backdrop darkens the screen when the modal is presented. It does not control whether or not the backdrop is active or present in the DOM. - * @default true */ "showBackdrop": boolean; /** @@ -2075,7 +1902,6 @@ export namespace Components { interface IonNav { /** * If `true`, the nav should animate the transition of components. - * @default true */ "animated": boolean; /** @@ -2214,7 +2040,6 @@ export namespace Components { "routerAnimation"?: AnimationBuilder; /** * The transition direction when navigating to another page. - * @default 'forward' */ "routerDirection": RouterDirection; } @@ -2238,12 +2063,10 @@ export namespace Components { interface IonPickerColumn { /** * The color to use from your application's color palette. Default options are: `"primary"`, `"secondary"`, `"tertiary"`, `"success"`, `"warning"`, `"danger"`, `"light"`, `"medium"`, and `"dark"`. For more information on colors, see [theming](/docs/theming/basics). - * @default 'primary' */ "color"?: Color; /** * If `true`, the user cannot interact with the picker. - * @default false */ "disabled": boolean; /** @@ -2252,7 +2075,6 @@ export namespace Components { "mode"?: "ios" | "md"; /** * If `true`, tapping the picker will reveal a number input keyboard that lets the user type in values for each picker column. This is useful when working with time pickers. - * @default false */ "numericInput": boolean; "scrollActiveItemIntoView": (smooth?: boolean) => Promise; @@ -2272,12 +2094,10 @@ export namespace Components { interface IonPickerColumnOption { /** * The color to use from your application's color palette. Default options are: `"primary"`, `"secondary"`, `"tertiary"`, `"success"`, `"warning"`, `"danger"`, `"light"`, `"medium"`, and `"dark"`. For more information on colors, see [theming](/docs/theming/basics). - * @default 'primary' */ "color"?: Color; /** * If `true`, the user cannot interact with the picker column option. - * @default false */ "disabled": boolean; /** @@ -2288,22 +2108,18 @@ export namespace Components { interface IonPickerLegacy { /** * If `true`, the picker will animate. - * @default true */ "animated": boolean; /** * If `true`, the picker will be dismissed when the backdrop is clicked. - * @default true */ "backdropDismiss": boolean; /** * Array of buttons to be displayed at the top of the picker. - * @default [] */ "buttons": PickerButton[]; /** * Array of columns to be displayed in the picker. - * @default [] */ "columns": PickerColumn[]; /** @@ -2319,7 +2135,6 @@ export namespace Components { "dismiss": (data?: any, role?: string) => Promise; /** * Number of milliseconds to wait before dismissing the picker. - * @default 0 */ "duration": number; /** @@ -2331,9 +2146,6 @@ export namespace Components { * @param name The name of the column. */ "getColumn": (name: string) => Promise; - /** - * @default false - */ "hasController": boolean; /** * Additional attributes to pass to the picker. @@ -2341,12 +2153,10 @@ export namespace Components { "htmlAttributes"?: { [key: string]: any }; /** * If `true`, the picker will open. If `false`, the picker will close. Use this if you need finer grained control over presentation, otherwise just use the pickerController or the `trigger` property. Note: `isOpen` will not automatically be set back to `false` when the picker dismisses. You will need to do that in your code. - * @default false */ "isOpen": boolean; /** * If `true`, the keyboard will be automatically dismissed when the overlay is presented. - * @default true */ "keyboardClose": boolean; /** @@ -2372,7 +2182,6 @@ export namespace Components { "present": () => Promise; /** * If `true`, a backdrop will be displayed behind the picker. - * @default true */ "showBackdrop": boolean; /** @@ -2393,17 +2202,14 @@ export namespace Components { "alignment"?: PositionAlign; /** * If `true`, the popover will animate. - * @default true */ "animated": boolean; /** * If `true`, the popover will display an arrow that points at the `reference` when running in `ios` mode. Does not apply in `md` mode. - * @default true */ "arrow": boolean; /** * If `true`, the popover will be dismissed when the backdrop is clicked. - * @default true */ "backdropDismiss": boolean; /** @@ -2428,7 +2234,6 @@ export namespace Components { "dismiss": (data?: any, role?: string, dismissParentPopover?: boolean) => Promise; /** * If `true`, the popover will be automatically dismissed when the content has been clicked. - * @default false */ "dismissOnSelect": boolean; /** @@ -2441,13 +2246,9 @@ export namespace Components { "event": any; /** * If `true`, focus will not be allowed to move outside of this overlay. If `false`, focus will be allowed to move outside of the overlay. In most scenarios this property should remain set to `true`. Setting this property to `false` can cause severe accessibility issues as users relying on assistive technologies may be able to move focus into a confusing state. We recommend only setting this to `false` when absolutely necessary. Developers may want to consider disabling focus trapping if this overlay presents a non-Ionic overlay from a 3rd party library. Developers would disable focus trapping on the Ionic overlay when presenting the 3rd party overlay and then re-enable focus trapping when dismissing the 3rd party overlay and moving focus back to the Ionic overlay. - * @default true */ "focusTrap": boolean; "getParentPopover": () => Promise; - /** - * @default false - */ "hasController": boolean; /** * Additional attributes to pass to the popover. @@ -2455,22 +2256,16 @@ export namespace Components { "htmlAttributes"?: { [key: string]: any }; /** * If `true`, the popover will open. If `false`, the popover will close. Use this if you need finer grained control over presentation, otherwise just use the popoverController or the `trigger` property. Note: `isOpen` will not automatically be set back to `false` when the popover dismisses. You will need to do that in your code. - * @default false */ "isOpen": boolean; /** * If `true`, the component passed into `ion-popover` will automatically be mounted when the popover is created. The component will remain mounted even when the popover is dismissed. However, the component will be destroyed when the popover is destroyed. This property is not reactive and should only be used when initially creating a popover. Note: This feature only applies to inline popovers in JavaScript frameworks such as Angular, React, and Vue. - * @default false */ "keepContentsMounted": boolean; /** * If `true`, the keyboard will be automatically dismissed when the overlay is presented. - * @default true */ "keyboardClose": boolean; - /** - * @default false - */ "keyboardEvents": boolean; /** * Animation to use when the popover is dismissed. @@ -2500,27 +2295,22 @@ export namespace Components { "presentFromTrigger": (event?: any, focusDescendant?: boolean) => Promise; /** * Describes what to position the popover relative to. If `"trigger"`, the popover will be positioned relative to the trigger button. If passing in an event, this is determined via event.target. If `"event"`, the popover will be positioned relative to the x/y coordinates of the trigger action. If passing in an event, this is determined via event.clientX and event.clientY. - * @default 'trigger' */ "reference": PositionReference; /** * If `true`, a backdrop will be displayed behind the popover. This property controls whether or not the backdrop darkens the screen when the popover is presented. It does not control whether or not the backdrop is active or present in the DOM. - * @default true */ "showBackdrop": boolean; /** * Describes which side of the `reference` point to position the popover on. The `"start"` and `"end"` values are RTL-aware, and the `"left"` and `"right"` values are not. - * @default 'bottom' */ "side": PositionSide; /** * Describes how to calculate the popover width. If `"cover"`, the popover width will match the width of the trigger. If `"auto"`, the popover width will be set to a static default value. - * @default 'auto' */ "size": PopoverSize; /** * If `true`, the popover will be translucent. Only applies when the mode is `"ios"` and the device supports [`backdrop-filter`](https://developer.mozilla.org/en-US/docs/Web/CSS/backdrop-filter#Browser_compatibility). - * @default false */ "translucent": boolean; /** @@ -2529,14 +2319,12 @@ export namespace Components { "trigger": string | undefined; /** * Describes what kind of interaction with the trigger that should cause the popover to open. Does not apply when the `trigger` property is `undefined`. If `"click"`, the popover will be presented when the trigger is left clicked. If `"hover"`, the popover will be presented when a pointer hovers over the trigger. If `"context-menu"`, the popover will be presented when the trigger is right clicked on desktop and long pressed on mobile. This will also prevent your device's normal context menu from appearing. - * @default 'click' */ "triggerAction": TriggerAction; } interface IonProgressBar { /** * If the buffer and value are smaller than 1, the buffer circles will show. The buffer should be between [0, 1]. - * @default 1 */ "buffer": number; /** @@ -2549,17 +2337,14 @@ export namespace Components { "mode"?: "ios" | "md"; /** * If true, reverse the progress bar direction. - * @default false */ "reversed": boolean; /** * The state of the progress bar, based on if the time the process takes is known or not. Default options are: `"determinate"` (no animation), `"indeterminate"` (animate from left to right). - * @default 'determinate' */ "type": 'determinate' | 'indeterminate'; /** * The value determines how much of the active bar should display when the `type` is `"determinate"`. The value should be between [0, 1]. - * @default 0 */ "value": number; } @@ -2574,7 +2359,6 @@ export namespace Components { "color"?: Color; /** * If `true`, the user cannot interact with the radio. - * @default false */ "disabled": boolean; /** @@ -2583,7 +2367,6 @@ export namespace Components { "justify"?: 'start' | 'end' | 'space-between'; /** * Where to place the label relative to the radio. `"start"`: The label will appear to the left of the radio in LTR and to the right in RTL. `"end"`: The label will appear to the right of the radio 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 radio regardless of the direction. The alignment of the label can be controlled with the `alignment` property. - * @default 'start' */ "labelPlacement": 'start' | 'end' | 'fixed' | 'stacked'; /** @@ -2592,7 +2375,6 @@ export namespace Components { "mode"?: "ios" | "md"; /** * The name of the control, which is submitted with the form data. - * @default this.inputId */ "name": string; "setButtonTabindex": (value: number) => Promise; @@ -2605,7 +2387,6 @@ export namespace Components { interface IonRadioGroup { /** * If `true`, the radios can be deselected. - * @default false */ "allowEmptySelection": boolean; /** @@ -2622,7 +2403,6 @@ export namespace Components { "helperText"?: string; /** * The name of the control, which is submitted with the form data. - * @default this.inputId */ "name": string; "setFocus": () => Promise; @@ -2646,12 +2426,10 @@ export namespace Components { "debounce"?: number; /** * If `true`, the user cannot interact with the range. - * @default false */ "disabled": boolean; /** * Show two knobs. - * @default false */ "dualKnobs": boolean; /** @@ -2660,17 +2438,14 @@ export namespace Components { "label"?: string; /** * Where to place the label relative to the range. `"start"`: The label will appear to the left of the range in LTR and to the right in RTL. `"end"`: The label will appear to the right of the range 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 range regardless of the direction. - * @default 'start' */ "labelPlacement": 'start' | 'end' | 'fixed' | 'stacked'; /** * Maximum integer value of the range. - * @default 100 */ "max": number; /** * Minimum integer value of the range. - * @default 0 */ "min": number; /** @@ -2679,37 +2454,30 @@ export namespace Components { "mode"?: "ios" | "md"; /** * The name of the control, which is submitted with the form data. - * @default this.rangeId */ "name": string; /** * If `true`, a pin with integer value is shown when the knob is pressed. - * @default false */ "pin": boolean; /** * A callback used to format the pin text. By default the pin text is set to `Math.round(value)`. See https://ionicframework.com/docs/troubleshooting/runtime#accessing-this if you need to access `this` from within the callback. - * @default (value: number): number => Math.round(value) */ "pinFormatter": PinFormatter; /** * If `true`, the knob snaps to tick marks evenly spaced based on the step property value. - * @default false */ "snaps": boolean; /** * Specifies the value granularity. - * @default 1 */ "step": number; /** * If `true`, tick marks are displayed based on the step value. Only applies when `snaps` is `true`. - * @default true */ "ticks": boolean; /** * the value of the range. - * @default 0 */ "value": RangeValue; } @@ -2720,7 +2488,6 @@ export namespace Components { "cancel": () => Promise; /** * Time it takes to close the refresher. Does not apply when the refresher content uses a spinner, enabling the native refresher. - * @default '280ms' */ "closeDuration": string; /** @@ -2729,7 +2496,6 @@ export namespace Components { "complete": () => Promise; /** * If `true`, the refresher will be hidden. - * @default false */ "disabled": boolean; /** @@ -2742,22 +2508,18 @@ export namespace Components { "mode"?: "ios" | "md"; /** * How much to multiply the pull speed by. To slow the pull animation down, pass a number less than `1`. To speed up the pull, pass a number greater than `1`. The default value is `1` which is equal to the speed of the cursor. If a negative value is passed in, the factor will be `1` instead. For example: If the value passed is `1.2` and the content is dragged by `10` pixels, instead of `10` pixels the content will be pulled by `12` pixels (an increase of 20 percent). If the value passed is `0.8`, the dragged amount will be `8` pixels, less than the amount the cursor has moved. Does not apply when the refresher content uses a spinner, enabling the native refresher. - * @default 1 */ "pullFactor": number; /** * The maximum distance of the pull until the refresher will automatically go into the `refreshing` state. Defaults to the result of `pullMin + 60`. Does not apply when the refresher content uses a spinner, enabling the native refresher. - * @default this.pullMin + 60 */ "pullMax": number; /** * The minimum distance the user must pull down until the refresher will go into the `refreshing` state. Does not apply when the refresher content uses a spinner, enabling the native refresher. - * @default 60 */ "pullMin": number; /** * Time it takes the refresher to snap back to the `refreshing` state. Does not apply when the refresher content uses a spinner, enabling the native refresher. - * @default '280ms' */ "snapbackDuration": string; } @@ -2789,7 +2551,6 @@ export namespace Components { "complete": (listOrReorder?: boolean | any[]) => Promise; /** * If `true`, the reorder will be hidden. - * @default true */ "disabled": boolean; } @@ -2802,7 +2563,6 @@ export namespace Components { "addRipple": (x: number, y: number) => Promise<() => void>; /** * Sets the type of ripple-effect: - `bounded`: the ripple effect expands from the user's click position - `unbounded`: the ripple effect expands from the center of the button and overflows the container. NOTE: Surfaces for bounded ripples should have the overflow property set to hidden, while surfaces for unbounded ripples should have it set to visible. - * @default 'bounded' */ "type": 'bounded' | 'unbounded'; } @@ -2825,7 +2585,6 @@ export namespace Components { "componentProps"?: { [key: string]: any }; /** * Relative path that needs to match in order for this route to apply. Accepts paths similar to expressjs so that you can define parameters in the url /foo/:bar where bar would be available in incoming props. - * @default '' */ "url": string; } @@ -2856,12 +2615,10 @@ export namespace Components { "push": (path: string, direction?: RouterDirection, animation?: AnimationBuilder) => Promise; /** * The root path to use when matching URLs. By default, this is set to "/", but you can specify an alternate prefix for all URL paths. - * @default '/' */ "root": string; /** * The router can work in two "modes": - With hash: `/index.html#/path/to/page` - Without hash: `/path/to/page` Using one or another might depend in the requirements of your app and/or where it's deployed. Usually "hash-less" navigation works better for SEO and it's more user friendly too, but it might requires additional server-side configuration in order to properly work. On the other side hash-navigation is much easier to deploy, it even works over the file protocol. By default, this property is `true`, change to `false` to allow hash-less URLs. - * @default true */ "useHash": boolean; } @@ -2884,7 +2641,6 @@ export namespace Components { "routerAnimation": AnimationBuilder | undefined; /** * When using a router, it specifies the transition direction when navigating to another page using `href`. - * @default 'forward' */ "routerDirection": RouterDirection; /** @@ -2895,7 +2651,6 @@ export namespace Components { interface IonRouterOutlet { /** * If `true`, the router-outlet should animate the transition of components. - * @default true */ "animated": boolean; /** @@ -2907,7 +2662,6 @@ export namespace Components { "getRouteId": () => Promise; /** * The mode determines which platform styles to use. - * @default getIonMode(this) */ "mode": "ios" | "md"; "setRouteId": (id: string, params: ComponentProps | undefined, direction: RouterDirection, animation?: AnimationBuilder) => Promise; @@ -2918,32 +2672,26 @@ export namespace Components { interface IonSearchbar { /** * If `true`, enable searchbar animation. - * @default false */ "animated": boolean; /** * Indicates whether and how the text value should be automatically capitalized as it is entered/edited by the user. Available options: `"off"`, `"none"`, `"on"`, `"sentences"`, `"words"`, `"characters"`. - * @default 'off' */ "autocapitalize": string; /** * Set the input's autocomplete property. - * @default 'off' */ "autocomplete": AutocompleteTypes; /** * Set the input's autocorrect property. - * @default 'off' */ "autocorrect": 'on' | 'off'; /** * Set the cancel button icon. Only applies to `md` mode. Defaults to `arrow-back-sharp`. - * @default config.get('backButtonIcon', arrowBackSharp) as string */ "cancelButtonIcon": string; /** * Set the cancel button text. Only applies to `ios` mode. - * @default 'Cancel' */ "cancelButtonText": string; /** @@ -2960,7 +2708,6 @@ export namespace Components { "debounce"?: number; /** * If `true`, the user cannot interact with the input. - * @default false */ "disabled": boolean; /** @@ -2989,12 +2736,10 @@ export namespace Components { "mode"?: "ios" | "md"; /** * If used in a form, set the name of the control, which is submitted with the form data. - * @default this.inputId */ "name": string; /** * Set the input's placeholder. `placeholder` can accept either plaintext or HTML as a string. To display characters normally reserved for HTML, they must be escaped. For example `` would become `<Ionic>` For more information: [Security Documentation](https://ionicframework.com/docs/faq/security) - * @default 'Search' */ "placeholder": string; /** @@ -3007,27 +2752,22 @@ export namespace Components { "setFocus": () => Promise; /** * Sets the behavior for the cancel button. Defaults to `"never"`. Setting to `"focus"` shows the cancel button on focus. Setting to `"never"` hides the cancel button. Setting to `"always"` shows the cancel button regardless of focus state. - * @default 'never' */ "showCancelButton": 'never' | 'focus' | 'always'; /** * Sets the behavior for the clear button. Defaults to `"focus"`. Setting to `"focus"` shows the clear button on focus if the input is not empty. Setting to `"never"` hides the clear button. Setting to `"always"` shows the clear button regardless of focus state, but only if the input is not empty. - * @default 'always' */ "showClearButton": 'never' | 'focus' | 'always'; /** * If `true`, enable spellcheck on the input. - * @default false */ "spellcheck": boolean; /** * Set the type of the input. - * @default 'search' */ "type": 'text' | 'password' | 'email' | 'number' | 'search' | 'tel' | 'url'; /** * the value of the searchbar. - * @default '' */ "value"?: string | null; } @@ -3038,7 +2778,6 @@ export namespace Components { "color"?: Color; /** * If `true`, the user cannot interact with the segment. - * @default false */ "disabled": boolean; /** @@ -3047,17 +2786,14 @@ export namespace Components { "mode"?: "ios" | "md"; /** * If `true`, the segment buttons will overflow and the user can swipe to see them. In addition, this will disable the gesture to drag the indicator between the buttons in order to swipe to see hidden buttons. - * @default false */ "scrollable": boolean; /** * If `true`, navigating to an `ion-segment-button` with the keyboard will focus and select the element. If `false`, keyboard navigation will only focus the `ion-segment-button` element. - * @default false */ "selectOnFocus": boolean; /** * If `true`, users will be able to swipe between segment buttons to activate them. - * @default true */ "swipeGesture": boolean; /** @@ -3072,12 +2808,10 @@ export namespace Components { "contentId"?: string; /** * If `true`, the user cannot interact with the segment button. - * @default false */ "disabled": boolean; /** * Set the layout of the text and icon in the segment. - * @default 'icon-top' */ "layout"?: SegmentButtonLayout; /** @@ -3087,12 +2821,10 @@ export namespace Components { "setFocus": () => Promise; /** * The type of the button. - * @default 'button' */ "type": 'submit' | 'reset' | 'button'; /** * The value of the segment button. - * @default 'ion-sb-' + ids++ */ "value": SegmentValue; } @@ -3101,7 +2833,6 @@ export namespace Components { interface IonSegmentView { /** * If `true`, the segment view cannot be interacted with. - * @default false */ "disabled": boolean; /** @@ -3113,7 +2844,6 @@ export namespace Components { interface IonSelect { /** * The text to display on the cancel button. - * @default 'Cancel' */ "cancelText": string; /** @@ -3126,7 +2856,6 @@ export namespace Components { "compareWith"?: string | SelectCompareFn | null; /** * If `true`, the user cannot interact with the select. - * @default false */ "disabled": boolean; /** @@ -3147,12 +2876,10 @@ export namespace Components { "helperText"?: string; /** * The interface the select should use: `action-sheet`, `popover`, `alert`, or `modal`. - * @default 'alert' */ "interface": SelectInterface; /** * Any additional options that the `alert`, `action-sheet` or `popover` interface can take. See the [ion-alert docs](./alert), the [ion-action-sheet docs](./action-sheet), the [ion-popover docs](./popover), and the [ion-modal docs](./modal) for the create options for each interface. Note: `interfaceOptions` will not override `inputs` or `buttons` with the `alert` interface. - * @default {} */ "interfaceOptions": any; /** @@ -3165,7 +2892,6 @@ export namespace Components { "label"?: string; /** * Where to place the label relative to the select. `"start"`: The label will appear to the left of the select in LTR and to the right in RTL. `"end"`: The label will appear to the right of the select in LTR and to the left in RTL. `"floating"`: The label will appear smaller and above the select when the select is focused or it has a value. Otherwise it will appear on top of the select. `"stacked"`: The label will appear smaller and above the select regardless even when the select is blurred or has no value. `"fixed"`: The label has the same behavior as `"start"` except it also has a fixed width. Long text will be truncated with ellipses ("..."). When using `"floating"` or `"stacked"` we recommend initializing the select with either a `value` or a `placeholder`. - * @default 'start' */ "labelPlacement"?: 'start' | 'end' | 'floating' | 'stacked' | 'fixed'; /** @@ -3174,17 +2900,14 @@ export namespace Components { "mode"?: "ios" | "md"; /** * If `true`, the select can accept multiple values. - * @default false */ "multiple": boolean; /** * The name of the control, which is submitted with the form data. - * @default this.inputId */ "name": string; /** * The text to display on the ok button. - * @default 'OK' */ "okText": string; /** @@ -3198,7 +2921,6 @@ export namespace Components { "placeholder"?: string; /** * If true, screen readers will announce it as a required field. This property works only for accessibility purposes, it will not prevent the form from submitting if the value is invalid. - * @default false */ "required": boolean; /** @@ -3221,15 +2943,11 @@ export namespace Components { interface IonSelectModal { "header"?: string; "multiple"?: boolean; - /** - * @default [] - */ "options": SelectModalOption[]; } interface IonSelectOption { /** * If `true`, the user cannot interact with the select option. This property does not apply when `interface="action-sheet"` as `ion-action-sheet` does not allow for disabled buttons. - * @default false */ "disabled": boolean; /** @@ -3252,7 +2970,6 @@ export namespace Components { "multiple"?: boolean; /** * An array of options for the popover - * @default [] */ "options": SelectPopoverOption[]; /** @@ -3263,7 +2980,6 @@ export namespace Components { interface IonSkeletonText { /** * If `true`, the skeleton text will animate. - * @default false */ "animated": boolean; } @@ -3282,7 +2998,6 @@ export namespace Components { "name"?: SpinnerTypes; /** * If `true`, the spinner's animation will be paused. - * @default false */ "paused": boolean; } @@ -3293,20 +3008,15 @@ export namespace Components { "contentId"?: string; /** * If `true`, the split pane will be hidden. - * @default false */ "disabled": boolean; "isVisible": () => Promise; /** * When the split-pane should be shown. Can be a CSS media query expression, or a shortcut expression. Can also be a boolean expression. - * @default QUERY['lg'] */ "when": string | boolean; } interface IonTab { - /** - * @default false - */ "active": boolean; /** * The component to display inside of the tab. @@ -3337,14 +3047,12 @@ export namespace Components { "selectedTab"?: string; /** * If `true`, the tab bar will be translucent. Only applies when the mode is `"ios"` and the device supports [`backdrop-filter`](https://developer.mozilla.org/en-US/docs/Web/CSS/backdrop-filter#Browser_compatibility). - * @default false */ "translucent": boolean; } interface IonTabButton { /** * If `true`, the user cannot interact with the tab button. - * @default false */ "disabled": boolean; /** @@ -3369,7 +3077,6 @@ export namespace Components { "rel": string | undefined; /** * The selected tab component - * @default false */ "selected": boolean; /** @@ -3398,9 +3105,6 @@ export namespace Components { */ "select": (tab: string | HTMLIonTabElement) => Promise; "setRouteId": (id: string) => Promise; - /** - * @default false - */ "useRouter": boolean; } interface IonText { @@ -3416,22 +3120,18 @@ export namespace Components { interface IonTextarea { /** * If `true`, the textarea container will grow and shrink based on the contents of the textarea. - * @default false */ "autoGrow": boolean; /** * Indicates whether and how the text value should be automatically capitalized as it is entered/edited by the user. Available options: `"off"`, `"none"`, `"on"`, `"sentences"`, `"words"`, `"characters"`. - * @default 'none' */ "autocapitalize": string; /** * Sets the [`autofocus` attribute](https://developer.mozilla.org/en-US/docs/Web/HTML/Global_attributes/autofocus) on the native input element. This may not be sufficient for the element to be focused on page load. See [managing focus](/docs/developing/managing-focus) for more information. - * @default false */ "autofocus": boolean; /** * If `true`, the value will be cleared after focus upon edit. - * @default false */ "clearOnEdit": boolean; /** @@ -3444,7 +3144,6 @@ export namespace Components { "cols"?: number; /** * If `true`, a character counter will display the ratio of characters used and the total character limit. Developers must also set the `maxlength` property for the counter to be calculated correctly. - * @default false */ "counter": boolean; /** @@ -3457,7 +3156,6 @@ export namespace Components { "debounce"?: number; /** * If `true`, the user cannot interact with the textarea. - * @default false */ "disabled": boolean; /** @@ -3490,7 +3188,6 @@ export namespace Components { "label"?: string; /** * Where to place the label relative to the textarea. `"start"`: The label will appear to the left of the textarea in LTR and to the right in RTL. `"end"`: The label will appear to the right of the textarea in LTR and to the left in RTL. `"floating"`: The label will appear smaller and above the textarea when the textarea is focused or it has a value. Otherwise it will appear on top of the textarea. `"stacked"`: The label will appear smaller and above the textarea regardless even when the textarea is blurred or has no value. `"fixed"`: The label has the same behavior as `"start"` except it also has a fixed width. Long text will be truncated with ellipses ("..."). - * @default 'start' */ "labelPlacement": 'start' | 'end' | 'floating' | 'stacked' | 'fixed'; /** @@ -3507,7 +3204,6 @@ export namespace Components { "mode"?: "ios" | "md"; /** * The name of the control, which is submitted with the form data. - * @default this.inputId */ "name": string; /** @@ -3516,12 +3212,10 @@ export namespace Components { "placeholder"?: string; /** * If `true`, the user cannot modify the value. - * @default false */ "readonly": boolean; /** * If `true`, the user must fill in a value before submitting a form. - * @default false */ "required": boolean; /** @@ -3538,12 +3232,10 @@ export namespace Components { "shape"?: 'round'; /** * If `true`, the element will have its spelling and grammar checked. - * @default false */ "spellcheck": boolean; /** * The value of the textarea. - * @default '' */ "value"?: string | null; /** @@ -3566,7 +3258,6 @@ export namespace Components { interface IonToast { /** * If `true`, the toast will animate. - * @default true */ "animated": boolean; /** @@ -3590,16 +3281,12 @@ export namespace Components { "dismiss": (data?: any, role?: string) => Promise; /** * How many milliseconds to wait before hiding the toast. By default, it will show until `dismiss()` is called. - * @default config.getNumber('toastDuration', 0) */ "duration": number; /** * Animation to use when the toast is presented. */ "enterAnimation"?: AnimationBuilder; - /** - * @default false - */ "hasController": boolean; /** * Header to be shown in the toast. @@ -3615,17 +3302,14 @@ export namespace Components { "icon"?: string; /** * If `true`, the toast will open. If `false`, the toast will close. Use this if you need finer grained control over presentation, otherwise just use the toastController or the `trigger` property. Note: `isOpen` will not automatically be set back to `false` when the toast dismisses. You will need to do that in your code. - * @default false */ "isOpen": boolean; /** * If `true`, the keyboard will be automatically dismissed when the overlay is presented. - * @default false */ "keyboardClose": boolean; /** * Defines how the message and buttons are laid out in the toast. 'baseline': The message and the buttons will appear on the same line. Message text may wrap within the message container. 'stacked': The buttons containers and message will stack on top of each other. Use this if you have long text in your buttons. - * @default 'baseline' */ "layout": ToastLayout; /** @@ -3651,7 +3335,6 @@ export namespace Components { "overlayIndex": number; /** * The starting position of the toast on the screen. Can be tweaked further using the `positionAnchor` property. - * @default 'bottom' */ "position": ToastPosition; /** @@ -3668,7 +3351,6 @@ export namespace Components { "swipeGesture"?: ToastSwipeGestureDirection; /** * If `true`, the toast will be translucent. Only applies when the mode is `"ios"` and the device supports [`backdrop-filter`](https://developer.mozilla.org/en-US/docs/Web/CSS/backdrop-filter#Browser_compatibility). - * @default false */ "translucent": boolean; /** @@ -3683,7 +3365,6 @@ export namespace Components { "alignment"?: 'start' | 'center'; /** * If `true`, the toggle is selected. - * @default false */ "checked": boolean; /** @@ -3692,12 +3373,10 @@ export namespace Components { "color"?: Color; /** * If `true`, the user cannot interact with the toggle. - * @default false */ "disabled": boolean; /** * Enables the on/off accessibility switch labels within the toggle. - * @default config.get('toggleOnOffLabels') */ "enableOnOffLabels": boolean | undefined; /** @@ -3714,7 +3393,6 @@ export namespace Components { "justify"?: 'start' | 'end' | 'space-between'; /** * Where to place the label relative to the input. `"start"`: The label will appear to the left of the toggle in LTR and to the right in RTL. `"end"`: The label will appear to the right of the toggle 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 toggle regardless of the direction. The alignment of the label can be controlled with the `alignment` property. - * @default 'start' */ "labelPlacement": 'start' | 'end' | 'fixed' | 'stacked'; /** @@ -3723,17 +3401,14 @@ export namespace Components { "mode"?: "ios" | "md"; /** * The name of the control, which is submitted with the form data. - * @default this.inputId */ "name": string; /** * If true, screen readers will announce it as a required field. This property works only for accessibility purposes, it will not prevent the form from submitting if the value is invalid. - * @default false */ "required": boolean; /** * The value of the toggle does not mean if it's checked or not, use the `checked` property for that. The value of a toggle is analogous to the value of a ``, it's only used when the toggle participates in a native ``. - * @default 'on' */ "value"?: string | null; } @@ -5286,7 +4961,6 @@ declare namespace LocalJSX { interface IonAccordion { /** * If `true`, the accordion cannot be interacted with. - * @default false */ "disabled"?: boolean; /** @@ -5295,39 +4969,32 @@ declare namespace LocalJSX { "mode"?: "ios" | "md"; /** * If `true`, the accordion cannot be interacted with, but does not alter the opacity. - * @default false */ "readonly"?: boolean; /** * The toggle icon to use. This icon will be rotated when the accordion is expanded or collapsed. - * @default chevronDown */ "toggleIcon"?: string; /** * The slot inside of `ion-item` to place the toggle icon. Defaults to `"end"`. - * @default 'end' */ "toggleIconSlot"?: 'start' | 'end'; /** * The value of the accordion. Defaults to an autogenerated value. - * @default `ion-accordion-${accordionIds++}` */ "value"?: string; } interface IonAccordionGroup { /** * If `true`, all accordions inside of the accordion group will animate when expanding or collapsing. - * @default true */ "animated"?: boolean; /** * If `true`, the accordion group cannot be interacted with. - * @default false */ "disabled"?: boolean; /** * Describes the expansion behavior for each accordion. Possible values are `"compact"` and `"inset"`. Defaults to `"compact"`. - * @default 'compact' */ "expand"?: 'compact' | 'inset'; /** @@ -5348,7 +5015,6 @@ declare namespace LocalJSX { "onIonValueChange"?: (event: IonAccordionGroupCustomEvent) => void; /** * If `true`, the accordion group cannot be interacted with, but does not alter the opacity. - * @default false */ "readonly"?: boolean; /** @@ -5359,17 +5025,14 @@ declare namespace LocalJSX { interface IonActionSheet { /** * If `true`, the action sheet will animate. - * @default true */ "animated"?: boolean; /** * If `true`, the action sheet will be dismissed when the backdrop is clicked. - * @default true */ "backdropDismiss"?: boolean; /** * An array of buttons for the action sheet. - * @default [] */ "buttons"?: (ActionSheetButton | string)[]; /** @@ -5381,9 +5044,6 @@ declare namespace LocalJSX { * Animation to use when the action sheet is presented. */ "enterAnimation"?: AnimationBuilder; - /** - * @default false - */ "hasController"?: boolean; /** * Title for the action sheet. @@ -5395,12 +5055,10 @@ declare namespace LocalJSX { "htmlAttributes"?: { [key: string]: any }; /** * If `true`, the action sheet will open. If `false`, the action sheet will close. Use this if you need finer grained control over presentation, otherwise just use the actionSheetController or the `trigger` property. Note: `isOpen` will not automatically be set back to `false` when the action sheet dismisses. You will need to do that in your code. - * @default false */ "isOpen"?: boolean; /** * If `true`, the keyboard will be automatically dismissed when the overlay is presented. - * @default true */ "keyboardClose"?: boolean; /** @@ -5450,7 +5108,6 @@ declare namespace LocalJSX { "subHeader"?: string; /** * If `true`, the action sheet will be translucent. Only applies when the mode is `"ios"` and the device supports [`backdrop-filter`](https://developer.mozilla.org/en-US/docs/Web/CSS/backdrop-filter#Browser_compatibility). - * @default false */ "translucent"?: boolean; /** @@ -5461,17 +5118,14 @@ declare namespace LocalJSX { interface IonAlert { /** * If `true`, the alert will animate. - * @default true */ "animated"?: boolean; /** * If `true`, the alert will be dismissed when the backdrop is clicked. - * @default true */ "backdropDismiss"?: boolean; /** * Array of buttons to be added to the alert. - * @default [] */ "buttons"?: (AlertButton | string)[]; /** @@ -5483,9 +5137,6 @@ declare namespace LocalJSX { * Animation to use when the alert is presented. */ "enterAnimation"?: AnimationBuilder; - /** - * @default false - */ "hasController"?: boolean; /** * The main title in the heading of the alert. @@ -5497,17 +5148,14 @@ declare namespace LocalJSX { "htmlAttributes"?: { [key: string]: any }; /** * Array of input to show in the alert. - * @default [] */ "inputs"?: AlertInput[]; /** * If `true`, the alert will open. If `false`, the alert will close. Use this if you need finer grained control over presentation, otherwise just use the alertController or the `trigger` property. Note: `isOpen` will not automatically be set back to `false` when the alert dismisses. You will need to do that in your code. - * @default false */ "isOpen"?: boolean; /** * If `true`, the keyboard will be automatically dismissed when the overlay is presented. - * @default true */ "keyboardClose"?: boolean; /** @@ -5561,7 +5209,6 @@ declare namespace LocalJSX { "subHeader"?: string; /** * If `true`, the alert will be translucent. Only applies when the mode is `"ios"` and the device supports [`backdrop-filter`](https://developer.mozilla.org/en-US/docs/Web/CSS/backdrop-filter#Browser_compatibility). - * @default false */ "translucent"?: boolean; /** @@ -5584,7 +5231,6 @@ declare namespace LocalJSX { "defaultHref"?: string; /** * If `true`, the user cannot interact with the button. - * @default false */ "disabled"?: boolean; /** @@ -5605,7 +5251,6 @@ declare namespace LocalJSX { "text"?: string | null; /** * The type of the button. - * @default 'button' */ "type"?: 'submit' | 'reset' | 'button'; } @@ -5616,17 +5261,14 @@ declare namespace LocalJSX { "onIonBackdropTap"?: (event: IonBackdropCustomEvent) => void; /** * If `true`, the backdrop will stop propagation on tap. - * @default true */ "stopPropagation"?: boolean; /** * If `true`, the backdrop will can be clicked and will emit the `ionBackdropTap` event. - * @default true */ "tappable"?: boolean; /** * If `true`, the backdrop will be visible. - * @default true */ "visible"?: boolean; } @@ -5643,12 +5285,8 @@ declare namespace LocalJSX { interface IonBreadcrumb { /** * If `true`, the breadcrumb will take on a different look to show that it is the currently active breadcrumb. Defaults to `true` for the last breadcrumb if it is not set on any. - * @default false */ "active"?: boolean; - /** - * @default false - */ "collapsed"?: boolean; /** * The color to use from your application's color palette. Default options are: `"primary"`, `"secondary"`, `"tertiary"`, `"success"`, `"warning"`, `"danger"`, `"light"`, `"medium"`, and `"dark"`. For more information on colors, see [theming](/docs/theming/basics). @@ -5656,7 +5294,6 @@ declare namespace LocalJSX { "color"?: Color; /** * If `true`, the user cannot interact with the breadcrumb. - * @default false */ "disabled"?: boolean; /** @@ -5694,7 +5331,6 @@ declare namespace LocalJSX { "routerAnimation"?: AnimationBuilder | undefined; /** * When using a router, it specifies the transition direction when navigating to another page using `href`. - * @default 'forward' */ "routerDirection"?: RouterDirection; /** @@ -5714,12 +5350,10 @@ declare namespace LocalJSX { "color"?: Color; /** * The number of breadcrumbs to show after the collapsed indicator. If `itemsBeforeCollapse` + `itemsAfterCollapse` is greater than `maxItems`, the breadcrumbs will not be collapsed. - * @default 1 */ "itemsAfterCollapse"?: number; /** * The number of breadcrumbs to show before the collapsed indicator. If `itemsBeforeCollapse` + `itemsAfterCollapse` is greater than `maxItems`, the breadcrumbs will not be collapsed. - * @default 1 */ "itemsBeforeCollapse"?: number; /** @@ -5738,7 +5372,6 @@ declare namespace LocalJSX { interface IonButton { /** * The type of button. - * @default 'button' */ "buttonType"?: string; /** @@ -5747,7 +5380,6 @@ declare namespace LocalJSX { "color"?: Color; /** * If `true`, the user cannot interact with the button. - * @default false */ "disabled"?: boolean; /** @@ -5792,7 +5424,6 @@ declare namespace LocalJSX { "routerAnimation"?: AnimationBuilder | undefined; /** * When using a router, it specifies the transition direction when navigating to another page using `href`. - * @default 'forward' */ "routerDirection"?: RouterDirection; /** @@ -5805,7 +5436,6 @@ declare namespace LocalJSX { "size"?: 'small' | 'default' | 'large'; /** * If `true`, activates a button with a heavier font weight. - * @default false */ "strong"?: boolean; /** @@ -5814,21 +5444,18 @@ declare namespace LocalJSX { "target"?: string | undefined; /** * The type of the button. - * @default 'button' */ "type"?: 'submit' | 'reset' | 'button'; } interface IonButtons { /** * If true, buttons will disappear when its parent toolbar has fully collapsed if the toolbar is not the first toolbar. If the toolbar is the first toolbar, the buttons will be hidden and will only be shown once all toolbars have fully collapsed. Only applies in `ios` mode with `collapse` set to `true` on `ion-header`. Typically used for [Collapsible Large Titles](https://ionicframework.com/docs/api/title#collapsible-large-titles) - * @default false */ "collapse"?: boolean; } interface IonCard { /** * If `true`, a button tag will be rendered and the card will be tappable. - * @default false */ "button"?: boolean; /** @@ -5837,7 +5464,6 @@ declare namespace LocalJSX { "color"?: Color; /** * If `true`, the user cannot interact with the card. - * @default false */ "disabled"?: boolean; /** @@ -5862,7 +5488,6 @@ declare namespace LocalJSX { "routerAnimation"?: AnimationBuilder | undefined; /** * When using a router, it specifies the transition direction when navigating to another page using `href`. - * @default 'forward' */ "routerDirection"?: RouterDirection; /** @@ -5871,7 +5496,6 @@ declare namespace LocalJSX { "target"?: string | undefined; /** * The type of the button. Only used when an `onclick` or `button` property is present. - * @default 'button' */ "type"?: 'submit' | 'reset' | 'button'; } @@ -5892,7 +5516,6 @@ declare namespace LocalJSX { "mode"?: "ios" | "md"; /** * If `true`, the card header will be translucent. Only applies when the mode is `"ios"` and the device supports [`backdrop-filter`](https://developer.mozilla.org/en-US/docs/Web/CSS/backdrop-filter#Browser_compatibility). - * @default false */ "translucent"?: boolean; } @@ -5923,7 +5546,6 @@ declare namespace LocalJSX { "alignment"?: 'start' | 'center'; /** * If `true`, the checkbox is selected. - * @default false */ "checked"?: boolean; /** @@ -5932,7 +5554,6 @@ declare namespace LocalJSX { "color"?: Color; /** * If `true`, the user cannot interact with the checkbox. - * @default false */ "disabled"?: boolean; /** @@ -5945,7 +5566,6 @@ declare namespace LocalJSX { "helperText"?: string; /** * If `true`, the checkbox will visually appear as indeterminate. - * @default false */ "indeterminate"?: boolean; /** @@ -5954,7 +5574,6 @@ declare namespace LocalJSX { "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. - * @default 'start' */ "labelPlacement"?: 'start' | 'end' | 'fixed' | 'stacked'; /** @@ -5963,7 +5582,6 @@ declare namespace LocalJSX { "mode"?: "ios" | "md"; /** * The name of the control, which is submitted with the form data. - * @default this.inputId */ "name"?: string; /** @@ -5980,12 +5598,10 @@ declare namespace LocalJSX { "onIonFocus"?: (event: IonCheckboxCustomEvent) => void; /** * If true, screen readers will announce it as a required field. This property works only for accessibility purposes, it will not prevent the form from submitting if the value is invalid. - * @default false */ "required"?: boolean; /** * The value of the checkbox does not mean if it's checked or not, use the `checked` property for that. The value of a checkbox is analogous to the value of an ``, it's only used when the checkbox participates in a native ``. - * @default 'on' */ "value"?: any | null; } @@ -5996,7 +5612,6 @@ declare namespace LocalJSX { "color"?: Color; /** * If `true`, the user cannot interact with the chip. - * @default false */ "disabled"?: boolean; /** @@ -6005,7 +5620,6 @@ declare namespace LocalJSX { "mode"?: "ios" | "md"; /** * Display an outline style button. - * @default false */ "outline"?: boolean; } @@ -6114,7 +5728,6 @@ declare namespace LocalJSX { "color"?: Color; /** * Controls where the fixed content is placed relative to the main content in the DOM. This can be used to control the order in which fixed elements receive keyboard focus. For example, if a FAB in the fixed slot should receive keyboard focus before the main page content, set this property to `'before'`. - * @default 'after' */ "fixedSlotPlacement"?: 'after' | 'before'; /** @@ -6123,7 +5736,6 @@ declare namespace LocalJSX { "forceOverscroll"?: boolean; /** * If `true`, the content will scroll behind the headers and footers. This effect can easily be seen by setting the toolbar to transparent. - * @default false */ "fullscreen"?: boolean; /** @@ -6140,34 +5752,28 @@ declare namespace LocalJSX { "onIonScrollStart"?: (event: IonContentCustomEvent) => void; /** * Because of performance reasons, ionScroll events are disabled by default, in order to enable them and start listening from (ionScroll), set this property to `true`. - * @default false */ "scrollEvents"?: boolean; /** * If you want to enable the content scrolling in the X axis, set this property to `true`. - * @default false */ "scrollX"?: boolean; /** * If you want to disable the content scrolling in the Y axis, set this property to `false`. - * @default true */ "scrollY"?: boolean; } interface IonDatetime { /** * The text to display on the picker's cancel button. - * @default 'Cancel' */ "cancelText"?: string; /** * The text to display on the picker's "Clear" button. - * @default 'Clear' */ "clearText"?: string; /** * The color to use from your application's color palette. Default options are: `"primary"`, `"secondary"`, `"tertiary"`, `"success"`, `"warning"`, `"danger"`, `"light"`, `"medium"`, and `"dark"`. For more information on colors, see [theming](/docs/theming/basics). - * @default 'primary' */ "color"?: Color; /** @@ -6176,17 +5782,14 @@ declare namespace LocalJSX { "dayValues"?: number[] | number | string; /** * If `true`, the user cannot interact with the datetime. - * @default false */ "disabled"?: boolean; /** * The text to display on the picker's "Done" button. - * @default 'Done' */ "doneText"?: string; /** * The first day of the week to use for `ion-datetime`. The default value is `0` and represents Sunday. - * @default 0 */ "firstDayOfWeek"?: number; /** @@ -6211,7 +5814,6 @@ declare namespace LocalJSX { "isDateEnabled"?: (dateIsoString: string) => boolean; /** * The locale to use for `ion-datetime`. This impacts month and day name formatting. The `"default"` value refers to the default locale set by your device. - * @default 'default' */ "locale"?: string; /** @@ -6236,12 +5838,10 @@ declare namespace LocalJSX { "monthValues"?: number[] | number | string; /** * If `true`, multiple dates can be selected at once. Only applies to `presentation="date"` and `preferWheel="false"`. - * @default false */ "multiple"?: boolean; /** * The name of the control, which is submitted with the form data. - * @default this.inputId */ "name"?: string; /** @@ -6274,47 +5874,38 @@ declare namespace LocalJSX { "onIonValueChange"?: (event: IonDatetimeCustomEvent) => void; /** * If `true`, a wheel picker will be rendered instead of a calendar grid where possible. If `false`, a calendar grid will be rendered instead of a wheel picker where possible. A wheel picker can be rendered instead of a grid when `presentation` is one of the following values: `"date"`, `"date-time"`, or `"time-date"`. A wheel picker will always be rendered regardless of the `preferWheel` value when `presentation` is one of the following values: `"time"`, `"month"`, `"month-year"`, or `"year"`. - * @default false */ "preferWheel"?: boolean; /** * Which values you want to select. `"date"` will show a calendar picker to select the month, day, and year. `"time"` will show a time picker to select the hour, minute, and (optionally) AM/PM. `"date-time"` will show the date picker first and time picker second. `"time-date"` will show the time picker first and date picker second. - * @default 'date-time' */ "presentation"?: DatetimePresentation; /** * If `true`, the datetime appears normal but the selected date cannot be changed. - * @default false */ "readonly"?: boolean; /** * If `true`, the datetime calendar displays a six-week (42-day) layout, including days from the previous and next months to fill the grid. These adjacent days are selectable unless disabled. - * @default false */ "showAdjacentDays"?: boolean; /** * If `true`, a "Clear" button will be rendered alongside the default "Cancel" and "OK" buttons at the bottom of the `ion-datetime` component. Developers can also use the `button` slot if they want to customize these buttons. If custom buttons are set in the `button` slot then the default buttons will not be rendered. - * @default false */ "showClearButton"?: boolean; /** * If `true`, the default "Cancel" and "OK" buttons will be rendered at the bottom of the `ion-datetime` component. Developers can also use the `button` slot if they want to customize these buttons. If custom buttons are set in the `button` slot then the default buttons will not be rendered. - * @default false */ "showDefaultButtons"?: boolean; /** * If `true`, the default "Time" label will be rendered for the time selector of the `ion-datetime` component. Developers can also use the `time-label` slot if they want to customize this label. If a custom label is set in the `time-label` slot then the default label will not be rendered. - * @default true */ "showDefaultTimeLabel"?: boolean; /** * If `true`, a header will be shown above the calendar picker. This will include both the slotted title, and the selected date. - * @default false */ "showDefaultTitle"?: boolean; /** * If `cover`, the `ion-datetime` will expand to cover the full width of its container. If `fixed`, the `ion-datetime` will have a fixed width. - * @default 'fixed' */ "size"?: 'cover' | 'fixed'; /** @@ -6333,7 +5924,6 @@ declare namespace LocalJSX { interface IonDatetimeButton { /** * The color to use from your application's color palette. Default options are: `"primary"`, `"secondary"`, `"tertiary"`, `"success"`, `"warning"`, `"danger"`, `"light"`, `"medium"`, and `"dark"`. For more information on colors, see [theming](/docs/theming/basics). - * @default 'primary' */ "color"?: Color; /** @@ -6342,7 +5932,6 @@ declare namespace LocalJSX { "datetime"?: string; /** * If `true`, the user cannot interact with the button. - * @default false */ "disabled"?: boolean; /** @@ -6353,12 +5942,10 @@ declare namespace LocalJSX { interface IonFab { /** * If `true`, both the `ion-fab-button` and all `ion-fab-list` inside `ion-fab` will become active. That means `ion-fab-button` will become a `close` icon and `ion-fab-list` will become visible. - * @default false */ "activated"?: boolean; /** * If `true`, the fab will display on the edge of the header if `vertical` is `"top"`, and on the edge of the footer if it is `"bottom"`. Should be used with a `fixed` slot. - * @default false */ "edge"?: boolean; /** @@ -6373,12 +5960,10 @@ declare namespace LocalJSX { interface IonFabButton { /** * If `true`, the fab button will be show a close icon. - * @default false */ "activated"?: boolean; /** * The icon name to use for the close icon. This will appear when the fab button is pressed. Only applies if it is the main button inside of a fab containing a fab list. - * @default close */ "closeIcon"?: string; /** @@ -6387,7 +5972,6 @@ declare namespace LocalJSX { "color"?: Color; /** * If `true`, the user cannot interact with the fab button. - * @default false */ "disabled"?: boolean; /** @@ -6420,12 +6004,10 @@ declare namespace LocalJSX { "routerAnimation"?: AnimationBuilder | undefined; /** * When using a router, it specifies the transition direction when navigating to another page using `href`. - * @default 'forward' */ "routerDirection"?: RouterDirection; /** * If `true`, the fab button will show when in a fab-list. - * @default false */ "show"?: boolean; /** @@ -6438,24 +6020,20 @@ declare namespace LocalJSX { "target"?: string | undefined; /** * If `true`, the fab button will be translucent. Only applies when the mode is `"ios"` and the device supports [`backdrop-filter`](https://developer.mozilla.org/en-US/docs/Web/CSS/backdrop-filter#Browser_compatibility). - * @default false */ "translucent"?: boolean; /** * The type of the button. - * @default 'button' */ "type"?: 'submit' | 'reset' | 'button'; } interface IonFabList { /** * If `true`, the fab list will show all fab buttons in the list. - * @default false */ "activated"?: boolean; /** * The side the fab list will show on relative to the main fab button. - * @default 'bottom' */ "side"?: 'start' | 'end' | 'top' | 'bottom'; } @@ -6470,14 +6048,12 @@ declare namespace LocalJSX { "mode"?: "ios" | "md"; /** * If `true`, the footer will be translucent. Only applies when the mode is `"ios"` and the device supports [`backdrop-filter`](https://developer.mozilla.org/en-US/docs/Web/CSS/backdrop-filter#Browser_compatibility). Note: In order to scroll content behind the footer, the `fullscreen` attribute needs to be set on the content. - * @default false */ "translucent"?: boolean; } interface IonGrid { /** * If `true`, the grid will have a fixed width based on the screen size. - * @default false */ "fixed"?: boolean; } @@ -6492,7 +6068,6 @@ declare namespace LocalJSX { "mode"?: "ios" | "md"; /** * If `true`, the header will be translucent. Only applies when the mode is `"ios"` and the device supports [`backdrop-filter`](https://developer.mozilla.org/en-US/docs/Web/CSS/backdrop-filter#Browser_compatibility). Note: In order to scroll content behind the header, the `fullscreen` attribute needs to be set on the content. - * @default false */ "translucent"?: boolean; } @@ -6521,7 +6096,6 @@ declare namespace LocalJSX { interface IonInfiniteScroll { /** * If `true`, the infinite scroll will be hidden and scroll event listeners will be removed. Set this to true to disable the infinite scroll from actively trying to receive new data while scrolling. This is useful when it is known that there is no more data that can be added, and the infinite scroll is no longer needed. - * @default false */ "disabled"?: boolean; /** @@ -6530,12 +6104,10 @@ declare namespace LocalJSX { "onIonInfinite"?: (event: IonInfiniteScrollCustomEvent) => void; /** * The position of the infinite scroll element. The value can be either `top` or `bottom`. - * @default 'bottom' */ "position"?: 'top' | 'bottom'; /** * The threshold distance from the bottom of the content to call the `infinite` output event when scrolled. The threshold value can be either a percent, or in pixels. For example, use the value of `10%` for the `infinite` output event to get called when the user has scrolled 10% from the bottom of the page. Use the value `100px` when the scroll is within 100 pixels from the bottom of the page. - * @default '15%' */ "threshold"?: string; } @@ -6552,27 +6124,22 @@ declare namespace LocalJSX { interface IonInput { /** * Indicates whether and how the text value should be automatically capitalized as it is entered/edited by the user. Available options: `"off"`, `"none"`, `"on"`, `"sentences"`, `"words"`, `"characters"`. - * @default 'off' */ "autocapitalize"?: string; /** * Indicates whether the value of the control can be automatically completed by the browser. - * @default 'off' */ "autocomplete"?: AutocompleteTypes; /** * Whether auto correction should be enabled when the user is entering/editing the text value. - * @default 'off' */ "autocorrect"?: 'on' | 'off'; /** * Sets the [`autofocus` attribute](https://developer.mozilla.org/en-US/docs/Web/HTML/Global_attributes/autofocus) on the native input element. This may not be sufficient for the element to be focused on page load. See [managing focus](/docs/developing/managing-focus) for more information. - * @default false */ "autofocus"?: boolean; /** * If `true`, a clear icon will appear in the input when there is a value. Clicking it clears the input. - * @default false */ "clearInput"?: boolean; /** @@ -6589,7 +6156,6 @@ declare namespace LocalJSX { "color"?: Color; /** * If `true`, a character counter will display the ratio of characters used and the total character limit. Developers must also set the `maxlength` property for the counter to be calculated correctly. - * @default false */ "counter"?: boolean; /** @@ -6602,7 +6168,6 @@ declare namespace LocalJSX { "debounce"?: number; /** * If `true`, the user cannot interact with the input. - * @default false */ "disabled"?: boolean; /** @@ -6631,7 +6196,6 @@ declare namespace LocalJSX { "label"?: string; /** * Where to place the label relative to the input. `"start"`: The label will appear to the left of the input in LTR and to the right in RTL. `"end"`: The label will appear to the right of the input in LTR and to the left in RTL. `"floating"`: The label will appear smaller and above the input when the input is focused or it has a value. Otherwise it will appear on top of the input. `"stacked"`: The label will appear smaller and above the input regardless even when the input is blurred or has no value. `"fixed"`: The label has the same behavior as `"start"` except it also has a fixed width. Long text will be truncated with ellipses ("..."). - * @default 'start' */ "labelPlacement"?: 'start' | 'end' | 'floating' | 'stacked' | 'fixed'; /** @@ -6660,7 +6224,6 @@ declare namespace LocalJSX { "multiple"?: boolean; /** * The name of the control, which is submitted with the form data. - * @default this.inputId */ "name"?: string; /** @@ -6689,12 +6252,10 @@ declare namespace LocalJSX { "placeholder"?: string; /** * If `true`, the user cannot modify the value. - * @default false */ "readonly"?: boolean; /** * If `true`, the user must fill in a value before submitting a form. - * @default false */ "required"?: boolean; /** @@ -6703,7 +6264,6 @@ declare namespace LocalJSX { "shape"?: 'round'; /** * If `true`, the element will have its spelling and grammar checked. - * @default false */ "spellcheck"?: boolean; /** @@ -6712,19 +6272,16 @@ declare namespace LocalJSX { "step"?: string; /** * The type of control to display. The default type is text. - * @default 'text' */ "type"?: TextFieldTypes; /** * The value of the input. - * @default '' */ "value"?: string | number | null; } interface IonInputOtp { /** * Indicates whether and how the text value should be automatically capitalized as it is entered/edited by the user. Available options: `"off"`, `"none"`, `"on"`, `"sentences"`, `"words"`, `"characters"`. - * @default 'off' */ "autocapitalize"?: string; /** @@ -6733,12 +6290,10 @@ declare namespace LocalJSX { "color"?: Color; /** * If `true`, the user cannot interact with the input. - * @default false */ "disabled"?: boolean; /** * The fill for the input boxes. If `"solid"` the input boxes will have a background. If `"outline"` the input boxes will be transparent with a border. - * @default 'outline' */ "fill"?: 'outline' | 'solid'; /** @@ -6747,7 +6302,6 @@ declare namespace LocalJSX { "inputmode"?: 'none' | 'text' | 'tel' | 'url' | 'email' | 'numeric' | 'decimal' | 'search'; /** * The number of input boxes to display. - * @default 4 */ "length"?: number; /** @@ -6776,7 +6330,6 @@ declare namespace LocalJSX { "pattern"?: string; /** * If `true`, the user cannot modify the value. - * @default false */ "readonly"?: boolean; /** @@ -6785,22 +6338,18 @@ declare namespace LocalJSX { "separators"?: 'all' | string | number[]; /** * The shape of the input boxes. If "round" they will have an increased border radius. If "rectangular" they will have no border radius. If "soft" they will have a soft border radius. - * @default 'round' */ "shape"?: 'round' | 'rectangular' | 'soft'; /** * The size of the input boxes. - * @default 'medium' */ "size"?: 'small' | 'medium' | 'large'; /** * The type of input allowed in the input boxes. - * @default 'number' */ "type"?: 'text' | 'number'; /** * The value of the input group. - * @default '' */ "value"?: string | number | null; } @@ -6821,15 +6370,11 @@ declare namespace LocalJSX { * The icon that can be used to represent showing a password. If not set, the "eye" Ionicon will be used. */ "showIcon"?: string; - /** - * @default 'password' - */ "type"?: TextFieldTypes; } interface IonItem { /** * If `true`, a button tag will be rendered and the item will be tappable. - * @default false */ "button"?: boolean; /** @@ -6842,12 +6387,10 @@ declare namespace LocalJSX { "detail"?: boolean; /** * The icon to use when `detail` is set to `true`. - * @default chevronForward */ "detailIcon"?: string; /** * If `true`, the user cannot interact with the item. - * @default false */ "disabled"?: boolean; /** @@ -6876,7 +6419,6 @@ declare namespace LocalJSX { "routerAnimation"?: AnimationBuilder | undefined; /** * When using a router, it specifies the transition direction when navigating to another page using `href`. - * @default 'forward' */ "routerDirection"?: RouterDirection; /** @@ -6885,7 +6427,6 @@ declare namespace LocalJSX { "target"?: string | undefined; /** * The type of the button. Only used when an `onclick` or `button` property is present. - * @default 'button' */ "type"?: 'submit' | 'reset' | 'button'; } @@ -6900,7 +6441,6 @@ declare namespace LocalJSX { "mode"?: "ios" | "md"; /** * When it's set to `true`, the item-divider will stay visible when it reaches the top of the viewport until the next `ion-item-divider` replaces it. This feature relies in `position:sticky`: https://caniuse.com/#feat=css-sticky - * @default false */ "sticky"?: boolean; } @@ -6913,7 +6453,6 @@ declare namespace LocalJSX { "color"?: Color; /** * If `true`, the user cannot interact with the item option. - * @default false */ "disabled"?: boolean; /** @@ -6922,7 +6461,6 @@ declare namespace LocalJSX { "download"?: string | undefined; /** * If `true`, the option will expand to take up the available width and cover any other options. - * @default false */ "expandable"?: boolean; /** @@ -6943,7 +6481,6 @@ declare namespace LocalJSX { "target"?: string | undefined; /** * The type of the button. - * @default 'button' */ "type"?: 'submit' | 'reset' | 'button'; } @@ -6954,14 +6491,12 @@ declare namespace LocalJSX { "onIonSwipe"?: (event: IonItemOptionsCustomEvent) => void; /** * The side the option button should be on. Possible values: `"start"` and `"end"`. If you have multiple `ion-item-options`, a side must be provided for each. - * @default 'end' */ "side"?: Side; } interface IonItemSliding { /** * If `true`, the user cannot interact with the sliding item. - * @default false */ "disabled"?: boolean; /** @@ -6994,7 +6529,6 @@ declare namespace LocalJSX { interface IonList { /** * If `true`, the list will have margin around it and rounded corners. - * @default false */ "inset"?: boolean; /** @@ -7023,12 +6557,10 @@ declare namespace LocalJSX { interface IonLoading { /** * If `true`, the loading indicator will animate. - * @default true */ "animated"?: boolean; /** * If `true`, the loading indicator will be dismissed when the backdrop is clicked. - * @default false */ "backdropDismiss"?: boolean; /** @@ -7038,16 +6570,12 @@ declare namespace LocalJSX { "delegate"?: FrameworkDelegate; /** * Number of milliseconds to wait before dismissing the loading indicator. - * @default 0 */ "duration"?: number; /** * Animation to use when the loading indicator is presented. */ "enterAnimation"?: AnimationBuilder; - /** - * @default false - */ "hasController"?: boolean; /** * Additional attributes to pass to the loader. @@ -7055,12 +6583,10 @@ declare namespace LocalJSX { "htmlAttributes"?: { [key: string]: any }; /** * If `true`, the loading indicator will open. If `false`, the loading indicator will close. Use this if you need finer grained control over presentation, otherwise just use the loadingController or the `trigger` property. Note: `isOpen` will not automatically be set back to `false` when the loading indicator dismisses. You will need to do that in your code. - * @default false */ "isOpen"?: boolean; /** * If `true`, the keyboard will be automatically dismissed when the overlay is presented. - * @default true */ "keyboardClose"?: boolean; /** @@ -7110,7 +6636,6 @@ declare namespace LocalJSX { "overlayIndex": number; /** * If `true`, a backdrop will be displayed behind the loading indicator. - * @default true */ "showBackdrop"?: boolean; /** @@ -7119,7 +6644,6 @@ declare namespace LocalJSX { "spinner"?: SpinnerTypes | null; /** * If `true`, the loading indicator will be translucent. Only applies when the mode is `"ios"` and the device supports [`backdrop-filter`](https://developer.mozilla.org/en-US/docs/Web/CSS/backdrop-filter#Browser_compatibility). - * @default false */ "translucent"?: boolean; /** @@ -7134,12 +6658,10 @@ declare namespace LocalJSX { "contentId"?: string; /** * If `true`, the menu is disabled. - * @default false */ "disabled"?: boolean; /** * The edge threshold for dragging the menu open. If a drag/swipe happens over this value, the menu is not triggered. - * @default 50 */ "maxEdgeStart"?: number; /** @@ -7168,12 +6690,10 @@ declare namespace LocalJSX { "onIonWillOpen"?: (event: IonMenuCustomEvent) => void; /** * Which side of the view the menu should be placed. - * @default 'start' */ "side"?: Side; /** * If `true`, swiping the menu is enabled. - * @default true */ "swipeGesture"?: boolean; /** @@ -7184,7 +6704,6 @@ declare namespace LocalJSX { interface IonMenuButton { /** * Automatically hides the menu button when the corresponding menu is not active - * @default true */ "autoHide"?: boolean; /** @@ -7193,7 +6712,6 @@ declare namespace LocalJSX { "color"?: Color; /** * If `true`, the user cannot interact with the menu button. - * @default false */ "disabled"?: boolean; /** @@ -7206,14 +6724,12 @@ declare namespace LocalJSX { "mode"?: "ios" | "md"; /** * The type of the button. - * @default 'button' */ "type"?: 'submit' | 'reset' | 'button'; } interface IonMenuToggle { /** * Automatically hides the content when the corresponding menu is not active. By default, it's `true`. Change it to `false` in order to keep `ion-menu-toggle` always visible regardless the state of the menu. - * @default true */ "autoHide"?: boolean; /** @@ -7224,17 +6740,14 @@ declare namespace LocalJSX { interface IonModal { /** * If `true`, the modal will animate. - * @default true */ "animated"?: boolean; /** * A decimal value between 0 and 1 that indicates the point after which the backdrop will begin to fade in when using a sheet modal. Prior to this point, the backdrop will be hidden and the content underneath the sheet can be interacted with. This value is exclusive meaning the backdrop will become active after the value specified. - * @default 0 */ "backdropBreakpoint"?: number; /** * If `true`, the modal will be dismissed when the backdrop is clicked. - * @default true */ "backdropDismiss"?: boolean; /** @@ -7243,7 +6756,6 @@ declare namespace LocalJSX { "breakpoints"?: number[]; /** * Determines whether or not a modal can dismiss when calling the `dismiss` method. If the value is `true` or the value's function returns `true`, the modal will close when trying to dismiss. If the value is `false` or the value's function returns `false`, the modal will not close when trying to dismiss. See https://ionicframework.com/docs/troubleshooting/runtime#accessing-this if you need to access `this` from within the callback. - * @default true */ "canDismiss"?: boolean | ((data?: any, role?: string) => Promise); /** @@ -7265,12 +6777,10 @@ declare namespace LocalJSX { "enterAnimation"?: AnimationBuilder; /** * Controls whether scrolling or dragging within the sheet modal expands it to a larger breakpoint. This only takes effect when `breakpoints` and `initialBreakpoint` are set. If `true`, scrolling or dragging anywhere in the modal will first expand it to the next breakpoint. Once fully expanded, scrolling will affect the content. If `false`, scrolling will always affect the content. The modal will only expand when dragging the header or handle. The modal will close when dragging the header or handle. It can also be closed when dragging the content, but only if the content is scrolled to the top. - * @default true */ "expandToScroll"?: boolean; /** * If `true`, focus will not be allowed to move outside of this overlay. If `false`, focus will be allowed to move outside of the overlay. In most scenarios this property should remain set to `true`. Setting this property to `false` can cause severe accessibility issues as users relying on assistive technologies may be able to move focus into a confusing state. We recommend only setting this to `false` when absolutely necessary. Developers may want to consider disabling focus trapping if this overlay presents a non-Ionic overlay from a 3rd party library. Developers would disable focus trapping on the Ionic overlay when presenting the 3rd party overlay and then re-enable focus trapping when dismissing the 3rd party overlay and moving focus back to the Ionic overlay. - * @default true */ "focusTrap"?: boolean; /** @@ -7279,12 +6789,8 @@ declare namespace LocalJSX { "handle"?: boolean; /** * The interaction behavior for the sheet modal when the handle is pressed. Defaults to `"none"`, which means the modal will not change size or position when the handle is pressed. Set to `"cycle"` to let the modal cycle between available breakpoints when pressed. Handle behavior is unavailable when the `handle` property is set to `false` or when the `breakpoints` property is not set (using a fullscreen or card modal). - * @default 'none' */ "handleBehavior"?: ModalHandleBehavior; - /** - * @default false - */ "hasController"?: boolean; /** * Additional attributes to pass to the modal. @@ -7296,17 +6802,14 @@ declare namespace LocalJSX { "initialBreakpoint"?: number; /** * If `true`, the modal will open. If `false`, the modal will close. Use this if you need finer grained control over presentation, otherwise just use the modalController or the `trigger` property. Note: `isOpen` will not automatically be set back to `false` when the modal dismisses. You will need to do that in your code. - * @default false */ "isOpen"?: boolean; /** * If `true`, the component passed into `ion-modal` will automatically be mounted when the modal is created. The component will remain mounted even when the modal is dismissed. However, the component will be destroyed when the modal is destroyed. This property is not reactive and should only be used when initially creating a modal. Note: This feature only applies to inline modals in JavaScript frameworks such as Angular, React, and Vue. - * @default false */ "keepContentsMounted"?: boolean; /** * If `true`, the keyboard will be automatically dismissed when the overlay is presented. - * @default true */ "keyboardClose"?: boolean; /** @@ -7364,7 +6867,6 @@ declare namespace LocalJSX { "presentingElement"?: HTMLElement; /** * If `true`, a backdrop will be displayed behind the modal. This property controls whether or not the backdrop darkens the screen when the modal is presented. It does not control whether or not the backdrop is active or present in the DOM. - * @default true */ "showBackdrop"?: boolean; /** @@ -7375,7 +6877,6 @@ declare namespace LocalJSX { interface IonNav { /** * If `true`, the nav should animate the transition of components. - * @default true */ "animated"?: boolean; /** @@ -7423,7 +6924,6 @@ declare namespace LocalJSX { "routerAnimation"?: AnimationBuilder; /** * The transition direction when navigating to another page. - * @default 'forward' */ "routerDirection"?: RouterDirection; } @@ -7447,12 +6947,10 @@ declare namespace LocalJSX { interface IonPickerColumn { /** * The color to use from your application's color palette. Default options are: `"primary"`, `"secondary"`, `"tertiary"`, `"success"`, `"warning"`, `"danger"`, `"light"`, `"medium"`, and `"dark"`. For more information on colors, see [theming](/docs/theming/basics). - * @default 'primary' */ "color"?: Color; /** * If `true`, the user cannot interact with the picker. - * @default false */ "disabled"?: boolean; /** @@ -7461,7 +6959,6 @@ declare namespace LocalJSX { "mode"?: "ios" | "md"; /** * If `true`, tapping the picker will reveal a number input keyboard that lets the user type in values for each picker column. This is useful when working with time pickers. - * @default false */ "numericInput"?: boolean; /** @@ -7476,12 +6973,10 @@ declare namespace LocalJSX { interface IonPickerColumnOption { /** * The color to use from your application's color palette. Default options are: `"primary"`, `"secondary"`, `"tertiary"`, `"success"`, `"warning"`, `"danger"`, `"light"`, `"medium"`, and `"dark"`. For more information on colors, see [theming](/docs/theming/basics). - * @default 'primary' */ "color"?: Color; /** * If `true`, the user cannot interact with the picker column option. - * @default false */ "disabled"?: boolean; /** @@ -7492,22 +6987,18 @@ declare namespace LocalJSX { interface IonPickerLegacy { /** * If `true`, the picker will animate. - * @default true */ "animated"?: boolean; /** * If `true`, the picker will be dismissed when the backdrop is clicked. - * @default true */ "backdropDismiss"?: boolean; /** * Array of buttons to be displayed at the top of the picker. - * @default [] */ "buttons"?: PickerButton[]; /** * Array of columns to be displayed in the picker. - * @default [] */ "columns"?: PickerColumn[]; /** @@ -7517,16 +7008,12 @@ declare namespace LocalJSX { "delegate"?: FrameworkDelegate; /** * Number of milliseconds to wait before dismissing the picker. - * @default 0 */ "duration"?: number; /** * Animation to use when the picker is presented. */ "enterAnimation"?: AnimationBuilder; - /** - * @default false - */ "hasController"?: boolean; /** * Additional attributes to pass to the picker. @@ -7534,12 +7021,10 @@ declare namespace LocalJSX { "htmlAttributes"?: { [key: string]: any }; /** * If `true`, the picker will open. If `false`, the picker will close. Use this if you need finer grained control over presentation, otherwise just use the pickerController or the `trigger` property. Note: `isOpen` will not automatically be set back to `false` when the picker dismisses. You will need to do that in your code. - * @default false */ "isOpen"?: boolean; /** * If `true`, the keyboard will be automatically dismissed when the overlay is presented. - * @default true */ "keyboardClose"?: boolean; /** @@ -7585,7 +7070,6 @@ declare namespace LocalJSX { "overlayIndex": number; /** * If `true`, a backdrop will be displayed behind the picker. - * @default true */ "showBackdrop"?: boolean; /** @@ -7610,17 +7094,14 @@ declare namespace LocalJSX { "alignment"?: PositionAlign; /** * If `true`, the popover will animate. - * @default true */ "animated"?: boolean; /** * If `true`, the popover will display an arrow that points at the `reference` when running in `ios` mode. Does not apply in `md` mode. - * @default true */ "arrow"?: boolean; /** * If `true`, the popover will be dismissed when the backdrop is clicked. - * @default true */ "backdropDismiss"?: boolean; /** @@ -7638,7 +7119,6 @@ declare namespace LocalJSX { "delegate"?: FrameworkDelegate; /** * If `true`, the popover will be automatically dismissed when the content has been clicked. - * @default false */ "dismissOnSelect"?: boolean; /** @@ -7651,12 +7131,8 @@ declare namespace LocalJSX { "event"?: any; /** * If `true`, focus will not be allowed to move outside of this overlay. If `false`, focus will be allowed to move outside of the overlay. In most scenarios this property should remain set to `true`. Setting this property to `false` can cause severe accessibility issues as users relying on assistive technologies may be able to move focus into a confusing state. We recommend only setting this to `false` when absolutely necessary. Developers may want to consider disabling focus trapping if this overlay presents a non-Ionic overlay from a 3rd party library. Developers would disable focus trapping on the Ionic overlay when presenting the 3rd party overlay and then re-enable focus trapping when dismissing the 3rd party overlay and moving focus back to the Ionic overlay. - * @default true */ "focusTrap"?: boolean; - /** - * @default false - */ "hasController"?: boolean; /** * Additional attributes to pass to the popover. @@ -7664,22 +7140,16 @@ declare namespace LocalJSX { "htmlAttributes"?: { [key: string]: any }; /** * If `true`, the popover will open. If `false`, the popover will close. Use this if you need finer grained control over presentation, otherwise just use the popoverController or the `trigger` property. Note: `isOpen` will not automatically be set back to `false` when the popover dismisses. You will need to do that in your code. - * @default false */ "isOpen"?: boolean; /** * If `true`, the component passed into `ion-popover` will automatically be mounted when the popover is created. The component will remain mounted even when the popover is dismissed. However, the component will be destroyed when the popover is destroyed. This property is not reactive and should only be used when initially creating a popover. Note: This feature only applies to inline popovers in JavaScript frameworks such as Angular, React, and Vue. - * @default false */ "keepContentsMounted"?: boolean; /** * If `true`, the keyboard will be automatically dismissed when the overlay is presented. - * @default true */ "keyboardClose"?: boolean; - /** - * @default false - */ "keyboardEvents"?: boolean; /** * Animation to use when the popover is dismissed. @@ -7728,27 +7198,22 @@ declare namespace LocalJSX { "overlayIndex": number; /** * Describes what to position the popover relative to. If `"trigger"`, the popover will be positioned relative to the trigger button. If passing in an event, this is determined via event.target. If `"event"`, the popover will be positioned relative to the x/y coordinates of the trigger action. If passing in an event, this is determined via event.clientX and event.clientY. - * @default 'trigger' */ "reference"?: PositionReference; /** * If `true`, a backdrop will be displayed behind the popover. This property controls whether or not the backdrop darkens the screen when the popover is presented. It does not control whether or not the backdrop is active or present in the DOM. - * @default true */ "showBackdrop"?: boolean; /** * Describes which side of the `reference` point to position the popover on. The `"start"` and `"end"` values are RTL-aware, and the `"left"` and `"right"` values are not. - * @default 'bottom' */ "side"?: PositionSide; /** * Describes how to calculate the popover width. If `"cover"`, the popover width will match the width of the trigger. If `"auto"`, the popover width will be set to a static default value. - * @default 'auto' */ "size"?: PopoverSize; /** * If `true`, the popover will be translucent. Only applies when the mode is `"ios"` and the device supports [`backdrop-filter`](https://developer.mozilla.org/en-US/docs/Web/CSS/backdrop-filter#Browser_compatibility). - * @default false */ "translucent"?: boolean; /** @@ -7757,14 +7222,12 @@ declare namespace LocalJSX { "trigger"?: string | undefined; /** * Describes what kind of interaction with the trigger that should cause the popover to open. Does not apply when the `trigger` property is `undefined`. If `"click"`, the popover will be presented when the trigger is left clicked. If `"hover"`, the popover will be presented when a pointer hovers over the trigger. If `"context-menu"`, the popover will be presented when the trigger is right clicked on desktop and long pressed on mobile. This will also prevent your device's normal context menu from appearing. - * @default 'click' */ "triggerAction"?: TriggerAction; } interface IonProgressBar { /** * If the buffer and value are smaller than 1, the buffer circles will show. The buffer should be between [0, 1]. - * @default 1 */ "buffer"?: number; /** @@ -7777,17 +7240,14 @@ declare namespace LocalJSX { "mode"?: "ios" | "md"; /** * If true, reverse the progress bar direction. - * @default false */ "reversed"?: boolean; /** * The state of the progress bar, based on if the time the process takes is known or not. Default options are: `"determinate"` (no animation), `"indeterminate"` (animate from left to right). - * @default 'determinate' */ "type"?: 'determinate' | 'indeterminate'; /** * The value determines how much of the active bar should display when the `type` is `"determinate"`. The value should be between [0, 1]. - * @default 0 */ "value"?: number; } @@ -7802,7 +7262,6 @@ declare namespace LocalJSX { "color"?: Color; /** * If `true`, the user cannot interact with the radio. - * @default false */ "disabled"?: boolean; /** @@ -7811,7 +7270,6 @@ declare namespace LocalJSX { "justify"?: 'start' | 'end' | 'space-between'; /** * Where to place the label relative to the radio. `"start"`: The label will appear to the left of the radio in LTR and to the right in RTL. `"end"`: The label will appear to the right of the radio 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 radio regardless of the direction. The alignment of the label can be controlled with the `alignment` property. - * @default 'start' */ "labelPlacement"?: 'start' | 'end' | 'fixed' | 'stacked'; /** @@ -7820,7 +7278,6 @@ declare namespace LocalJSX { "mode"?: "ios" | "md"; /** * The name of the control, which is submitted with the form data. - * @default this.inputId */ "name"?: string; /** @@ -7839,7 +7296,6 @@ declare namespace LocalJSX { interface IonRadioGroup { /** * If `true`, the radios can be deselected. - * @default false */ "allowEmptySelection"?: boolean; /** @@ -7856,7 +7312,6 @@ declare namespace LocalJSX { "helperText"?: string; /** * The name of the control, which is submitted with the form data. - * @default this.inputId */ "name"?: string; /** @@ -7887,12 +7342,10 @@ declare namespace LocalJSX { "debounce"?: number; /** * If `true`, the user cannot interact with the range. - * @default false */ "disabled"?: boolean; /** * Show two knobs. - * @default false */ "dualKnobs"?: boolean; /** @@ -7901,17 +7354,14 @@ declare namespace LocalJSX { "label"?: string; /** * Where to place the label relative to the range. `"start"`: The label will appear to the left of the range in LTR and to the right in RTL. `"end"`: The label will appear to the right of the range 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 range regardless of the direction. - * @default 'start' */ "labelPlacement"?: 'start' | 'end' | 'fixed' | 'stacked'; /** * Maximum integer value of the range. - * @default 100 */ "max"?: number; /** * Minimum integer value of the range. - * @default 0 */ "min"?: number; /** @@ -7920,7 +7370,6 @@ declare namespace LocalJSX { "mode"?: "ios" | "md"; /** * The name of the control, which is submitted with the form data. - * @default this.rangeId */ "name"?: string; /** @@ -7949,44 +7398,36 @@ declare namespace LocalJSX { "onIonKnobMoveStart"?: (event: IonRangeCustomEvent) => void; /** * If `true`, a pin with integer value is shown when the knob is pressed. - * @default false */ "pin"?: boolean; /** * A callback used to format the pin text. By default the pin text is set to `Math.round(value)`. See https://ionicframework.com/docs/troubleshooting/runtime#accessing-this if you need to access `this` from within the callback. - * @default (value: number): number => Math.round(value) */ "pinFormatter"?: PinFormatter; /** * If `true`, the knob snaps to tick marks evenly spaced based on the step property value. - * @default false */ "snaps"?: boolean; /** * Specifies the value granularity. - * @default 1 */ "step"?: number; /** * If `true`, tick marks are displayed based on the step value. Only applies when `snaps` is `true`. - * @default true */ "ticks"?: boolean; /** * the value of the range. - * @default 0 */ "value"?: RangeValue; } interface IonRefresher { /** * Time it takes to close the refresher. Does not apply when the refresher content uses a spinner, enabling the native refresher. - * @default '280ms' */ "closeDuration"?: string; /** * If `true`, the refresher will be hidden. - * @default false */ "disabled"?: boolean; /** @@ -8007,22 +7448,18 @@ declare namespace LocalJSX { "onIonStart"?: (event: IonRefresherCustomEvent) => void; /** * How much to multiply the pull speed by. To slow the pull animation down, pass a number less than `1`. To speed up the pull, pass a number greater than `1`. The default value is `1` which is equal to the speed of the cursor. If a negative value is passed in, the factor will be `1` instead. For example: If the value passed is `1.2` and the content is dragged by `10` pixels, instead of `10` pixels the content will be pulled by `12` pixels (an increase of 20 percent). If the value passed is `0.8`, the dragged amount will be `8` pixels, less than the amount the cursor has moved. Does not apply when the refresher content uses a spinner, enabling the native refresher. - * @default 1 */ "pullFactor"?: number; /** * The maximum distance of the pull until the refresher will automatically go into the `refreshing` state. Defaults to the result of `pullMin + 60`. Does not apply when the refresher content uses a spinner, enabling the native refresher. - * @default this.pullMin + 60 */ "pullMax"?: number; /** * The minimum distance the user must pull down until the refresher will go into the `refreshing` state. Does not apply when the refresher content uses a spinner, enabling the native refresher. - * @default 60 */ "pullMin"?: number; /** * Time it takes the refresher to snap back to the `refreshing` state. Does not apply when the refresher content uses a spinner, enabling the native refresher. - * @default '280ms' */ "snapbackDuration"?: string; } @@ -8049,7 +7486,6 @@ declare namespace LocalJSX { interface IonReorderGroup { /** * If `true`, the reorder will be hidden. - * @default true */ "disabled"?: boolean; /** @@ -8060,7 +7496,6 @@ declare namespace LocalJSX { interface IonRippleEffect { /** * Sets the type of ripple-effect: - `bounded`: the ripple effect expands from the user's click position - `unbounded`: the ripple effect expands from the center of the button and overflows the container. NOTE: Surfaces for bounded ripples should have the overflow property set to hidden, while surfaces for unbounded ripples should have it set to visible. - * @default 'bounded' */ "type"?: 'bounded' | 'unbounded'; } @@ -8087,7 +7522,6 @@ declare namespace LocalJSX { "onIonRouteDataChanged"?: (event: IonRouteCustomEvent) => void; /** * Relative path that needs to match in order for this route to apply. Accepts paths similar to expressjs so that you can define parameters in the url /foo/:bar where bar would be available in incoming props. - * @default '' */ "url"?: string; } @@ -8116,12 +7550,10 @@ declare namespace LocalJSX { "onIonRouteWillChange"?: (event: IonRouterCustomEvent) => void; /** * The root path to use when matching URLs. By default, this is set to "/", but you can specify an alternate prefix for all URL paths. - * @default '/' */ "root"?: string; /** * The router can work in two "modes": - With hash: `/index.html#/path/to/page` - Without hash: `/path/to/page` Using one or another might depend in the requirements of your app and/or where it's deployed. Usually "hash-less" navigation works better for SEO and it's more user friendly too, but it might requires additional server-side configuration in order to properly work. On the other side hash-navigation is much easier to deploy, it even works over the file protocol. By default, this property is `true`, change to `false` to allow hash-less URLs. - * @default true */ "useHash"?: boolean; } @@ -8144,7 +7576,6 @@ declare namespace LocalJSX { "routerAnimation"?: AnimationBuilder | undefined; /** * When using a router, it specifies the transition direction when navigating to another page using `href`. - * @default 'forward' */ "routerDirection"?: RouterDirection; /** @@ -8155,7 +7586,6 @@ declare namespace LocalJSX { interface IonRouterOutlet { /** * If `true`, the router-outlet should animate the transition of components. - * @default true */ "animated"?: boolean; /** @@ -8165,7 +7595,6 @@ declare namespace LocalJSX { "delegate"?: FrameworkDelegate; /** * The mode determines which platform styles to use. - * @default getIonMode(this) */ "mode"?: "ios" | "md"; "onIonNavDidChange"?: (event: IonRouterOutletCustomEvent) => void; @@ -8178,32 +7607,26 @@ declare namespace LocalJSX { interface IonSearchbar { /** * If `true`, enable searchbar animation. - * @default false */ "animated"?: boolean; /** * Indicates whether and how the text value should be automatically capitalized as it is entered/edited by the user. Available options: `"off"`, `"none"`, `"on"`, `"sentences"`, `"words"`, `"characters"`. - * @default 'off' */ "autocapitalize"?: string; /** * Set the input's autocomplete property. - * @default 'off' */ "autocomplete"?: AutocompleteTypes; /** * Set the input's autocorrect property. - * @default 'off' */ "autocorrect"?: 'on' | 'off'; /** * Set the cancel button icon. Only applies to `md` mode. Defaults to `arrow-back-sharp`. - * @default config.get('backButtonIcon', arrowBackSharp) as string */ "cancelButtonIcon"?: string; /** * Set the cancel button text. Only applies to `ios` mode. - * @default 'Cancel' */ "cancelButtonText"?: string; /** @@ -8220,7 +7643,6 @@ declare namespace LocalJSX { "debounce"?: number; /** * If `true`, the user cannot interact with the input. - * @default false */ "disabled"?: boolean; /** @@ -8245,7 +7667,6 @@ declare namespace LocalJSX { "mode"?: "ios" | "md"; /** * If used in a form, set the name of the control, which is submitted with the form data. - * @default this.inputId */ "name"?: string; /** @@ -8278,7 +7699,6 @@ declare namespace LocalJSX { "onIonStyle"?: (event: IonSearchbarCustomEvent) => void; /** * Set the input's placeholder. `placeholder` can accept either plaintext or HTML as a string. To display characters normally reserved for HTML, they must be escaped. For example `` would become `<Ionic>` For more information: [Security Documentation](https://ionicframework.com/docs/faq/security) - * @default 'Search' */ "placeholder"?: string; /** @@ -8287,27 +7707,22 @@ declare namespace LocalJSX { "searchIcon"?: string; /** * Sets the behavior for the cancel button. Defaults to `"never"`. Setting to `"focus"` shows the cancel button on focus. Setting to `"never"` hides the cancel button. Setting to `"always"` shows the cancel button regardless of focus state. - * @default 'never' */ "showCancelButton"?: 'never' | 'focus' | 'always'; /** * Sets the behavior for the clear button. Defaults to `"focus"`. Setting to `"focus"` shows the clear button on focus if the input is not empty. Setting to `"never"` hides the clear button. Setting to `"always"` shows the clear button regardless of focus state, but only if the input is not empty. - * @default 'always' */ "showClearButton"?: 'never' | 'focus' | 'always'; /** * If `true`, enable spellcheck on the input. - * @default false */ "spellcheck"?: boolean; /** * Set the type of the input. - * @default 'search' */ "type"?: 'text' | 'password' | 'email' | 'number' | 'search' | 'tel' | 'url'; /** * the value of the searchbar. - * @default '' */ "value"?: string | null; } @@ -8318,7 +7733,6 @@ declare namespace LocalJSX { "color"?: Color; /** * If `true`, the user cannot interact with the segment. - * @default false */ "disabled"?: boolean; /** @@ -8339,17 +7753,14 @@ declare namespace LocalJSX { "onIonStyle"?: (event: IonSegmentCustomEvent) => void; /** * If `true`, the segment buttons will overflow and the user can swipe to see them. In addition, this will disable the gesture to drag the indicator between the buttons in order to swipe to see hidden buttons. - * @default false */ "scrollable"?: boolean; /** * If `true`, navigating to an `ion-segment-button` with the keyboard will focus and select the element. If `false`, keyboard navigation will only focus the `ion-segment-button` element. - * @default false */ "selectOnFocus"?: boolean; /** * If `true`, users will be able to swipe between segment buttons to activate them. - * @default true */ "swipeGesture"?: boolean; /** @@ -8364,12 +7775,10 @@ declare namespace LocalJSX { "contentId"?: string; /** * If `true`, the user cannot interact with the segment button. - * @default false */ "disabled"?: boolean; /** * Set the layout of the text and icon in the segment. - * @default 'icon-top' */ "layout"?: SegmentButtonLayout; /** @@ -8378,12 +7787,10 @@ declare namespace LocalJSX { "mode"?: "ios" | "md"; /** * The type of the button. - * @default 'button' */ "type"?: 'submit' | 'reset' | 'button'; /** * The value of the segment button. - * @default 'ion-sb-' + ids++ */ "value"?: SegmentValue; } @@ -8392,7 +7799,6 @@ declare namespace LocalJSX { interface IonSegmentView { /** * If `true`, the segment view cannot be interacted with. - * @default false */ "disabled"?: boolean; /** @@ -8403,7 +7809,6 @@ declare namespace LocalJSX { interface IonSelect { /** * The text to display on the cancel button. - * @default 'Cancel' */ "cancelText"?: string; /** @@ -8416,7 +7821,6 @@ declare namespace LocalJSX { "compareWith"?: string | SelectCompareFn | null; /** * If `true`, the user cannot interact with the select. - * @default false */ "disabled"?: boolean; /** @@ -8437,12 +7841,10 @@ declare namespace LocalJSX { "helperText"?: string; /** * The interface the select should use: `action-sheet`, `popover`, `alert`, or `modal`. - * @default 'alert' */ "interface"?: SelectInterface; /** * Any additional options that the `alert`, `action-sheet` or `popover` interface can take. See the [ion-alert docs](./alert), the [ion-action-sheet docs](./action-sheet), the [ion-popover docs](./popover), and the [ion-modal docs](./modal) for the create options for each interface. Note: `interfaceOptions` will not override `inputs` or `buttons` with the `alert` interface. - * @default {} */ "interfaceOptions"?: any; /** @@ -8455,7 +7857,6 @@ declare namespace LocalJSX { "label"?: string; /** * Where to place the label relative to the select. `"start"`: The label will appear to the left of the select in LTR and to the right in RTL. `"end"`: The label will appear to the right of the select in LTR and to the left in RTL. `"floating"`: The label will appear smaller and above the select when the select is focused or it has a value. Otherwise it will appear on top of the select. `"stacked"`: The label will appear smaller and above the select regardless even when the select is blurred or has no value. `"fixed"`: The label has the same behavior as `"start"` except it also has a fixed width. Long text will be truncated with ellipses ("..."). When using `"floating"` or `"stacked"` we recommend initializing the select with either a `value` or a `placeholder`. - * @default 'start' */ "labelPlacement"?: 'start' | 'end' | 'floating' | 'stacked' | 'fixed'; /** @@ -8464,17 +7865,14 @@ declare namespace LocalJSX { "mode"?: "ios" | "md"; /** * If `true`, the select can accept multiple values. - * @default false */ "multiple"?: boolean; /** * The name of the control, which is submitted with the form data. - * @default this.inputId */ "name"?: string; /** * The text to display on the ok button. - * @default 'OK' */ "okText"?: string; /** @@ -8507,7 +7905,6 @@ declare namespace LocalJSX { "placeholder"?: string; /** * If true, screen readers will announce it as a required field. This property works only for accessibility purposes, it will not prevent the form from submitting if the value is invalid. - * @default false */ "required"?: boolean; /** @@ -8530,15 +7927,11 @@ declare namespace LocalJSX { interface IonSelectModal { "header"?: string; "multiple"?: boolean; - /** - * @default [] - */ "options"?: SelectModalOption[]; } interface IonSelectOption { /** * If `true`, the user cannot interact with the select option. This property does not apply when `interface="action-sheet"` as `ion-action-sheet` does not allow for disabled buttons. - * @default false */ "disabled"?: boolean; /** @@ -8561,7 +7954,6 @@ declare namespace LocalJSX { "multiple"?: boolean; /** * An array of options for the popover - * @default [] */ "options"?: SelectPopoverOption[]; /** @@ -8572,7 +7964,6 @@ declare namespace LocalJSX { interface IonSkeletonText { /** * If `true`, the skeleton text will animate. - * @default false */ "animated"?: boolean; /** @@ -8595,7 +7986,6 @@ declare namespace LocalJSX { "name"?: SpinnerTypes; /** * If `true`, the spinner's animation will be paused. - * @default false */ "paused"?: boolean; } @@ -8606,7 +7996,6 @@ declare namespace LocalJSX { "contentId"?: string; /** * If `true`, the split pane will be hidden. - * @default false */ "disabled"?: boolean; /** @@ -8615,14 +8004,10 @@ declare namespace LocalJSX { "onIonSplitPaneVisible"?: (event: IonSplitPaneCustomEvent<{ visible: boolean }>) => void; /** * When the split-pane should be shown. Can be a CSS media query expression, or a shortcut expression. Can also be a boolean expression. - * @default QUERY['lg'] */ "when"?: string | boolean; } interface IonTab { - /** - * @default false - */ "active"?: boolean; /** * The component to display inside of the tab. @@ -8651,14 +8036,12 @@ declare namespace LocalJSX { "selectedTab"?: string; /** * If `true`, the tab bar will be translucent. Only applies when the mode is `"ios"` and the device supports [`backdrop-filter`](https://developer.mozilla.org/en-US/docs/Web/CSS/backdrop-filter#Browser_compatibility). - * @default false */ "translucent"?: boolean; } interface IonTabButton { /** * If `true`, the user cannot interact with the tab button. - * @default false */ "disabled"?: boolean; /** @@ -8687,7 +8070,6 @@ declare namespace LocalJSX { "rel"?: string | undefined; /** * The selected tab component - * @default false */ "selected"?: boolean; /** @@ -8712,9 +8094,6 @@ declare namespace LocalJSX { * Emitted when the navigation is about to transition to a new component. */ "onIonTabsWillChange"?: (event: IonTabsCustomEvent<{ tab: string }>) => void; - /** - * @default false - */ "useRouter"?: boolean; } interface IonText { @@ -8730,22 +8109,18 @@ declare namespace LocalJSX { interface IonTextarea { /** * If `true`, the textarea container will grow and shrink based on the contents of the textarea. - * @default false */ "autoGrow"?: boolean; /** * Indicates whether and how the text value should be automatically capitalized as it is entered/edited by the user. Available options: `"off"`, `"none"`, `"on"`, `"sentences"`, `"words"`, `"characters"`. - * @default 'none' */ "autocapitalize"?: string; /** * Sets the [`autofocus` attribute](https://developer.mozilla.org/en-US/docs/Web/HTML/Global_attributes/autofocus) on the native input element. This may not be sufficient for the element to be focused on page load. See [managing focus](/docs/developing/managing-focus) for more information. - * @default false */ "autofocus"?: boolean; /** * If `true`, the value will be cleared after focus upon edit. - * @default false */ "clearOnEdit"?: boolean; /** @@ -8758,7 +8133,6 @@ declare namespace LocalJSX { "cols"?: number; /** * If `true`, a character counter will display the ratio of characters used and the total character limit. Developers must also set the `maxlength` property for the counter to be calculated correctly. - * @default false */ "counter"?: boolean; /** @@ -8771,7 +8145,6 @@ declare namespace LocalJSX { "debounce"?: number; /** * If `true`, the user cannot interact with the textarea. - * @default false */ "disabled"?: boolean; /** @@ -8800,7 +8173,6 @@ declare namespace LocalJSX { "label"?: string; /** * Where to place the label relative to the textarea. `"start"`: The label will appear to the left of the textarea in LTR and to the right in RTL. `"end"`: The label will appear to the right of the textarea in LTR and to the left in RTL. `"floating"`: The label will appear smaller and above the textarea when the textarea is focused or it has a value. Otherwise it will appear on top of the textarea. `"stacked"`: The label will appear smaller and above the textarea regardless even when the textarea is blurred or has no value. `"fixed"`: The label has the same behavior as `"start"` except it also has a fixed width. Long text will be truncated with ellipses ("..."). - * @default 'start' */ "labelPlacement"?: 'start' | 'end' | 'floating' | 'stacked' | 'fixed'; /** @@ -8817,7 +8189,6 @@ declare namespace LocalJSX { "mode"?: "ios" | "md"; /** * The name of the control, which is submitted with the form data. - * @default this.inputId */ "name"?: string; /** @@ -8842,12 +8213,10 @@ declare namespace LocalJSX { "placeholder"?: string; /** * If `true`, the user cannot modify the value. - * @default false */ "readonly"?: boolean; /** * If `true`, the user must fill in a value before submitting a form. - * @default false */ "required"?: boolean; /** @@ -8860,12 +8229,10 @@ declare namespace LocalJSX { "shape"?: 'round'; /** * If `true`, the element will have its spelling and grammar checked. - * @default false */ "spellcheck"?: boolean; /** * The value of the textarea. - * @default '' */ "value"?: string | null; /** @@ -8892,7 +8259,6 @@ declare namespace LocalJSX { interface IonToast { /** * If `true`, the toast will animate. - * @default true */ "animated"?: boolean; /** @@ -8910,16 +8276,12 @@ declare namespace LocalJSX { "delegate"?: FrameworkDelegate; /** * How many milliseconds to wait before hiding the toast. By default, it will show until `dismiss()` is called. - * @default config.getNumber('toastDuration', 0) */ "duration"?: number; /** * Animation to use when the toast is presented. */ "enterAnimation"?: AnimationBuilder; - /** - * @default false - */ "hasController"?: boolean; /** * Header to be shown in the toast. @@ -8935,17 +8297,14 @@ declare namespace LocalJSX { "icon"?: string; /** * If `true`, the toast will open. If `false`, the toast will close. Use this if you need finer grained control over presentation, otherwise just use the toastController or the `trigger` property. Note: `isOpen` will not automatically be set back to `false` when the toast dismisses. You will need to do that in your code. - * @default false */ "isOpen"?: boolean; /** * If `true`, the keyboard will be automatically dismissed when the overlay is presented. - * @default false */ "keyboardClose"?: boolean; /** * Defines how the message and buttons are laid out in the toast. 'baseline': The message and the buttons will appear on the same line. Message text may wrap within the message container. 'stacked': The buttons containers and message will stack on top of each other. Use this if you have long text in your buttons. - * @default 'baseline' */ "layout"?: ToastLayout; /** @@ -8995,7 +8354,6 @@ declare namespace LocalJSX { "overlayIndex": number; /** * The starting position of the toast on the screen. Can be tweaked further using the `positionAnchor` property. - * @default 'bottom' */ "position"?: ToastPosition; /** @@ -9008,7 +8366,6 @@ declare namespace LocalJSX { "swipeGesture"?: ToastSwipeGestureDirection; /** * If `true`, the toast will be translucent. Only applies when the mode is `"ios"` and the device supports [`backdrop-filter`](https://developer.mozilla.org/en-US/docs/Web/CSS/backdrop-filter#Browser_compatibility). - * @default false */ "translucent"?: boolean; /** @@ -9023,7 +8380,6 @@ declare namespace LocalJSX { "alignment"?: 'start' | 'center'; /** * If `true`, the toggle is selected. - * @default false */ "checked"?: boolean; /** @@ -9032,12 +8388,10 @@ declare namespace LocalJSX { "color"?: Color; /** * If `true`, the user cannot interact with the toggle. - * @default false */ "disabled"?: boolean; /** * Enables the on/off accessibility switch labels within the toggle. - * @default config.get('toggleOnOffLabels') */ "enableOnOffLabels"?: boolean | undefined; /** @@ -9054,7 +8408,6 @@ declare namespace LocalJSX { "justify"?: 'start' | 'end' | 'space-between'; /** * Where to place the label relative to the input. `"start"`: The label will appear to the left of the toggle in LTR and to the right in RTL. `"end"`: The label will appear to the right of the toggle 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 toggle regardless of the direction. The alignment of the label can be controlled with the `alignment` property. - * @default 'start' */ "labelPlacement"?: 'start' | 'end' | 'fixed' | 'stacked'; /** @@ -9063,7 +8416,6 @@ declare namespace LocalJSX { "mode"?: "ios" | "md"; /** * The name of the control, which is submitted with the form data. - * @default this.inputId */ "name"?: string; /** @@ -9080,12 +8432,10 @@ declare namespace LocalJSX { "onIonFocus"?: (event: IonToggleCustomEvent) => void; /** * If true, screen readers will announce it as a required field. This property works only for accessibility purposes, it will not prevent the form from submitting if the value is invalid. - * @default false */ "required"?: boolean; /** * The value of the toggle does not mean if it's checked or not, use the `checked` property for that. The value of a toggle is analogous to the value of a ``, it's only used when the toggle participates in a native ``. - * @default 'on' */ "value"?: string | null; } diff --git a/packages/angular/standalone/src/directives/proxies.ts b/packages/angular/standalone/src/directives/proxies.ts index c7d111f7bef..f5aac37c0fc 100644 --- a/packages/angular/standalone/src/directives/proxies.ts +++ b/packages/angular/standalone/src/directives/proxies.ts @@ -36,6 +36,7 @@ import { defineCustomElement as defineIonHeader } from '@ionic/core/components/i import { defineCustomElement as defineIonImg } from '@ionic/core/components/ion-img.js'; import { defineCustomElement as defineIonInfiniteScroll } from '@ionic/core/components/ion-infinite-scroll.js'; import { defineCustomElement as defineIonInfiniteScrollContent } from '@ionic/core/components/ion-infinite-scroll-content.js'; +import { defineCustomElement as defineIonInputOtp } from '@ionic/core/components/ion-input-otp.js'; import { defineCustomElement as defineIonInputPasswordToggle } from '@ionic/core/components/ion-input-password-toggle.js'; import { defineCustomElement as defineIonItem } from '@ionic/core/components/ion-item.js'; import { defineCustomElement as defineIonItemDivider } from '@ionic/core/components/ion-item-divider.js'; @@ -981,6 +982,71 @@ export class IonInfiniteScrollContent { export declare interface IonInfiniteScrollContent extends Components.IonInfiniteScrollContent {} +@ProxyCmp({ + defineCustomElementFn: defineIonInputOtp, + inputs: ['autocapitalize', 'color', 'disabled', 'fill', 'inputmode', 'length', 'pattern', 'readonly', 'separators', 'shape', 'size', 'type', 'value'], + methods: ['setFocus'] +}) +@Component({ + selector: 'ion-input-otp', + changeDetection: ChangeDetectionStrategy.OnPush, + template: '', + // eslint-disable-next-line @angular-eslint/no-inputs-metadata-property + inputs: ['autocapitalize', 'color', 'disabled', 'fill', 'inputmode', 'length', 'pattern', 'readonly', 'separators', 'shape', 'size', 'type', 'value'], + standalone: true +}) +export class IonInputOtp { + protected el: HTMLIonInputOtpElement; + constructor(c: ChangeDetectorRef, r: ElementRef, protected z: NgZone) { + c.detach(); + this.el = r.nativeElement; + proxyOutputs(this, this.el, ['ionInput', 'ionChange', 'ionComplete', 'ionBlur', 'ionFocus']); + } +} + + +import type { InputOtpInputEventDetail as IIonInputOtpInputOtpInputEventDetail } from '@ionic/core/components'; +import type { InputOtpChangeEventDetail as IIonInputOtpInputOtpChangeEventDetail } from '@ionic/core/components'; +import type { InputOtpCompleteEventDetail as IIonInputOtpInputOtpCompleteEventDetail } from '@ionic/core/components'; + +export declare interface IonInputOtp extends Components.IonInputOtp { + /** + * The `ionInput` event is fired each time the user modifies the input's value. +Unlike the `ionChange` event, the `ionInput` event is fired for each alteration +to the input's value. This typically happens for each keystroke as the user types. + +For elements that accept text input (`type=text`, `type=tel`, etc.), the interface +is [`InputEvent`](https://developer.mozilla.org/en-US/docs/Web/API/InputEvent); for others, +the interface is [`Event`](https://developer.mozilla.org/en-US/docs/Web/API/Event). If +the input is cleared on edit, the type is `null`. + */ + ionInput: EventEmitter>; + /** + * The `ionChange` event is fired when the user modifies the input's value. +Unlike the `ionInput` event, the `ionChange` event is only fired when changes +are committed, not as the user types. + +The `ionChange` event fires when the `` component loses +focus after its value has changed. + +This event will not emit when programmatically setting the `value` property. + */ + ionChange: EventEmitter>; + /** + * Emitted when all input boxes have been filled with valid values. + */ + ionComplete: EventEmitter>; + /** + * Emitted when the input group loses focus. + */ + ionBlur: EventEmitter>; + /** + * Emitted when the input group has focus. + */ + ionFocus: EventEmitter>; +} + + @ProxyCmp({ defineCustomElementFn: defineIonInputPasswordToggle, inputs: ['color', 'hideIcon', 'mode', 'showIcon'] diff --git a/packages/vue/src/proxies.ts b/packages/vue/src/proxies.ts index 0db034f746d..1e316544a4c 100644 --- a/packages/vue/src/proxies.ts +++ b/packages/vue/src/proxies.ts @@ -492,7 +492,7 @@ export const IonInput: StencilVueComponent 'value', 'ion-input'); -export const IonInputOtp: StencilVueComponent = /*@__PURE__*/ defineContainer('ion-input-otp', defineIonInputOtp, [ +export const IonInputOtp: StencilVueComponent = /*@__PURE__*/ defineContainer('ion-input-otp', defineIonInputOtp, [ 'autocapitalize', 'color', 'disabled', @@ -517,8 +517,7 @@ export const IonInputOtp: StencilVueComponent = /*@__PURE__*/ defineContainer('ion-input-password-toggle', defineIonInputPasswordToggle, [ From b09caeb0536ef83981e2671f735aa7776577d840 Mon Sep 17 00:00:00 2001 From: Brandy Carney <6577830+brandyscarney@users.noreply.github.com> Date: Tue, 7 Jan 2025 13:47:50 -0500 Subject: [PATCH 2/5] fix(utils): update focus visible to remove keydown approach --- core/src/utils/focus-visible.ts | 41 ++++++--------------------------- 1 file changed, 7 insertions(+), 34 deletions(-) diff --git a/core/src/utils/focus-visible.ts b/core/src/utils/focus-visible.ts index b5473c9e680..851e32f1ab2 100644 --- a/core/src/utils/focus-visible.ts +++ b/core/src/utils/focus-visible.ts @@ -1,19 +1,5 @@ const ION_FOCUSED = 'ion-focused'; const ION_FOCUSABLE = 'ion-focusable'; -const FOCUS_KEYS = [ - 'Tab', - 'ArrowDown', - 'Space', - 'Escape', - ' ', - 'Shift', - 'Enter', - 'ArrowLeft', - 'ArrowRight', - 'ArrowUp', - 'Home', - 'End', -]; export interface FocusVisibleUtility { destroy: () => void; @@ -22,7 +8,6 @@ export interface FocusVisibleUtility { export const startFocusVisible = (rootEl?: HTMLElement): FocusVisibleUtility => { let currentFocus: Element[] = []; - let keyboardMode = true; const ref = rootEl ? rootEl.shadowRoot! : document; const root = rootEl ? rootEl : document.body; @@ -32,43 +17,31 @@ export const startFocusVisible = (rootEl?: HTMLElement): FocusVisibleUtility => elements.forEach((el) => el.classList.add(ION_FOCUSED)); currentFocus = elements; }; + const pointerDown = () => { - keyboardMode = false; setFocus([]); }; - const onKeydown = (ev: Event) => { - keyboardMode = FOCUS_KEYS.includes((ev as KeyboardEvent).key); - if (!keyboardMode) { - setFocus([]); - } - }; const onFocusin = (ev: Event) => { - if (keyboardMode && ev.composedPath !== undefined) { - const toFocus = ev.composedPath().filter((el: any) => { - // TODO(FW-2832): type - if (el.classList) { - return el.classList.contains(ION_FOCUSABLE); - } - return false; - }) as Element[]; - setFocus(toFocus); - } + const toFocus = ev.composedPath().filter((el): el is HTMLElement => { + return el instanceof HTMLElement && el.classList.contains(ION_FOCUSABLE); + }); + + setFocus(toFocus); }; + const onFocusout = () => { if (ref.activeElement === root) { setFocus([]); } }; - ref.addEventListener('keydown', onKeydown); ref.addEventListener('focusin', onFocusin); ref.addEventListener('focusout', onFocusout); ref.addEventListener('touchstart', pointerDown, { passive: true }); ref.addEventListener('mousedown', pointerDown); const destroy = () => { - ref.removeEventListener('keydown', onKeydown); ref.removeEventListener('focusin', onFocusin); ref.removeEventListener('focusout', onFocusout); ref.removeEventListener('touchstart', pointerDown); From 0ded8ba19f71f04d83cdb053efd66333c9155b22 Mon Sep 17 00:00:00 2001 From: Brandy Smith <6577830+brandyscarney@users.noreply.github.com> Date: Tue, 1 Jul 2025 18:53:03 -0400 Subject: [PATCH 3/5] fix(utils): update focus visible to work with keydown again --- core/src/utils/focus-visible.ts | 54 ++++++++++++++++++++++++++++++--- 1 file changed, 49 insertions(+), 5 deletions(-) diff --git a/core/src/utils/focus-visible.ts b/core/src/utils/focus-visible.ts index 851e32f1ab2..f1411e6996f 100644 --- a/core/src/utils/focus-visible.ts +++ b/core/src/utils/focus-visible.ts @@ -1,5 +1,19 @@ const ION_FOCUSED = 'ion-focused'; const ION_FOCUSABLE = 'ion-focusable'; +const FOCUS_KEYS = [ + 'Tab', + 'ArrowDown', + 'Space', + 'Escape', + ' ', + 'Shift', + 'Enter', + 'ArrowLeft', + 'ArrowRight', + 'ArrowUp', + 'Home', + 'End', +]; export interface FocusVisibleUtility { destroy: () => void; @@ -8,6 +22,8 @@ export interface FocusVisibleUtility { export const startFocusVisible = (rootEl?: HTMLElement): FocusVisibleUtility => { let currentFocus: Element[] = []; + let keyboardMode = false; + let lastPointerType: string | null = null; const ref = rootEl ? rootEl.shadowRoot! : document; const root = rootEl ? rootEl : document.body; @@ -18,16 +34,40 @@ export const startFocusVisible = (rootEl?: HTMLElement): FocusVisibleUtility => currentFocus = elements; }; - const pointerDown = () => { + const pointerDown = (ev: Event) => { + const pointerEvent = ev as PointerEvent; + lastPointerType = pointerEvent.pointerType; + keyboardMode = false; setFocus([]); }; + const onKeydown = (ev: Event) => { + const keyboardEvent = ev as KeyboardEvent; + // Always set keyboard mode to true when any key is pressed + // This handles the WebKit Tab key bug where keydown might not fire + keyboardMode = true; + + // If it's not a focus key, clear focus immediately + if (!FOCUS_KEYS.includes(keyboardEvent.key)) { + setFocus([]); + } + }; + const onFocusin = (ev: Event) => { - const toFocus = ev.composedPath().filter((el): el is HTMLElement => { - return el instanceof HTMLElement && el.classList.contains(ION_FOCUSABLE); - }); + // Check if this focus event is likely from keyboard navigation + // We can detect this by checking if there was a recent keydown event + // or if the focus target is a focusable element that typically gets focus via keyboard + const target = ev.target as HTMLElement; - setFocus(toFocus); + if (target.classList.contains(ION_FOCUSABLE)) { + // If we're in keyboard mode or this looks like keyboard navigation + if (keyboardMode || !lastPointerType) { + const toFocus = ev.composedPath().filter((el): el is HTMLElement => { + return el instanceof HTMLElement && el.classList.contains(ION_FOCUSABLE); + }); + setFocus(toFocus); + } + } }; const onFocusout = () => { @@ -36,14 +76,18 @@ export const startFocusVisible = (rootEl?: HTMLElement): FocusVisibleUtility => } }; + ref.addEventListener('keydown', onKeydown); ref.addEventListener('focusin', onFocusin); ref.addEventListener('focusout', onFocusout); + ref.addEventListener('pointerdown', pointerDown, { passive: true }); ref.addEventListener('touchstart', pointerDown, { passive: true }); ref.addEventListener('mousedown', pointerDown); const destroy = () => { + ref.removeEventListener('keydown', onKeydown); ref.removeEventListener('focusin', onFocusin); ref.removeEventListener('focusout', onFocusout); + ref.removeEventListener('pointerdown', pointerDown); ref.removeEventListener('touchstart', pointerDown); ref.removeEventListener('mousedown', pointerDown); }; From f1dc0b2b06653ed23ebfdeb90c52be918f2a88e5 Mon Sep 17 00:00:00 2001 From: Brandy Smith <6577830+brandyscarney@users.noreply.github.com> Date: Wed, 2 Jul 2025 13:29:00 -0400 Subject: [PATCH 4/5] fix(utils): update to track pointer instead of keyboard --- core/src/utils/focus-visible.ts | 48 +++++++++++++++------------------ 1 file changed, 21 insertions(+), 27 deletions(-) diff --git a/core/src/utils/focus-visible.ts b/core/src/utils/focus-visible.ts index f1411e6996f..91284109c6e 100644 --- a/core/src/utils/focus-visible.ts +++ b/core/src/utils/focus-visible.ts @@ -22,51 +22,49 @@ export interface FocusVisibleUtility { export const startFocusVisible = (rootEl?: HTMLElement): FocusVisibleUtility => { let currentFocus: Element[] = []; - let keyboardMode = false; - let lastPointerType: string | null = null; + // Tracks if the last interaction was a pointer event (mouse, touch, pen) + // Used to distinguish between pointer and keyboard navigation for focus styling + let hadPointerEvent = false; const ref = rootEl ? rootEl.shadowRoot! : document; const root = rootEl ? rootEl : document.body; + // Adds or removes the focused class for styling const setFocus = (elements: Element[]) => { currentFocus.forEach((el) => el.classList.remove(ION_FOCUSED)); elements.forEach((el) => el.classList.add(ION_FOCUSED)); currentFocus = elements; }; + // Do not set focus on pointer interactions const pointerDown = (ev: Event) => { - const pointerEvent = ev as PointerEvent; - lastPointerType = pointerEvent.pointerType; - keyboardMode = false; - setFocus([]); + if (ev instanceof PointerEvent && ev.pointerType !== '') { + hadPointerEvent = true; + // Reset after the event loop so only the immediate focusin is suppressed + setTimeout(() => { hadPointerEvent = false; }, 0); + } }; + // Clear hadPointerEvent so keyboard navigation shows focus + // Also, clear focus if the key is not a navigation key const onKeydown = (ev: Event) => { - const keyboardEvent = ev as KeyboardEvent; - // Always set keyboard mode to true when any key is pressed - // This handles the WebKit Tab key bug where keydown might not fire - keyboardMode = true; + hadPointerEvent = false; - // If it's not a focus key, clear focus immediately + const keyboardEvent = ev as KeyboardEvent; if (!FOCUS_KEYS.includes(keyboardEvent.key)) { setFocus([]); } }; + // Set focus if the last interaction was NOT a pointer event + // This works around iOS/Safari bugs where keydown is not fired for Tab const onFocusin = (ev: Event) => { - // Check if this focus event is likely from keyboard navigation - // We can detect this by checking if there was a recent keydown event - // or if the focus target is a focusable element that typically gets focus via keyboard const target = ev.target as HTMLElement; - - if (target.classList.contains(ION_FOCUSABLE)) { - // If we're in keyboard mode or this looks like keyboard navigation - if (keyboardMode || !lastPointerType) { - const toFocus = ev.composedPath().filter((el): el is HTMLElement => { - return el instanceof HTMLElement && el.classList.contains(ION_FOCUSABLE); - }); - setFocus(toFocus); - } + if (target.classList.contains(ION_FOCUSABLE) && !hadPointerEvent) { + const toFocus = ev.composedPath().filter((el): el is HTMLElement => + el instanceof HTMLElement && el.classList.contains(ION_FOCUSABLE) + ); + setFocus(toFocus); } }; @@ -80,16 +78,12 @@ export const startFocusVisible = (rootEl?: HTMLElement): FocusVisibleUtility => ref.addEventListener('focusin', onFocusin); ref.addEventListener('focusout', onFocusout); ref.addEventListener('pointerdown', pointerDown, { passive: true }); - ref.addEventListener('touchstart', pointerDown, { passive: true }); - ref.addEventListener('mousedown', pointerDown); const destroy = () => { ref.removeEventListener('keydown', onKeydown); ref.removeEventListener('focusin', onFocusin); ref.removeEventListener('focusout', onFocusout); ref.removeEventListener('pointerdown', pointerDown); - ref.removeEventListener('touchstart', pointerDown); - ref.removeEventListener('mousedown', pointerDown); }; return { From cb7436f051a371f1447d339ed306b048a52c3bb6 Mon Sep 17 00:00:00 2001 From: Brandy Smith <6577830+brandyscarney@users.noreply.github.com> Date: Wed, 2 Jul 2025 13:32:26 -0400 Subject: [PATCH 5/5] chore: build & lint --- core/src/components.d.ts | 650 ++++++++++++++++++ core/src/utils/focus-visible.ts | 10 +- .../standalone/src/directives/proxies.ts | 66 -- packages/vue/src/proxies.ts | 5 +- 4 files changed, 659 insertions(+), 72 deletions(-) diff --git a/core/src/components.d.ts b/core/src/components.d.ts index 2ad44d97348..6e0e2405840 100644 --- a/core/src/components.d.ts +++ b/core/src/components.d.ts @@ -85,6 +85,7 @@ export namespace Components { interface IonAccordion { /** * If `true`, the accordion cannot be interacted with. + * @default false */ "disabled": boolean; /** @@ -93,32 +94,39 @@ export namespace Components { "mode"?: "ios" | "md"; /** * If `true`, the accordion cannot be interacted with, but does not alter the opacity. + * @default false */ "readonly": boolean; /** * The toggle icon to use. This icon will be rotated when the accordion is expanded or collapsed. + * @default chevronDown */ "toggleIcon": string; /** * The slot inside of `ion-item` to place the toggle icon. Defaults to `"end"`. + * @default 'end' */ "toggleIconSlot": 'start' | 'end'; /** * The value of the accordion. Defaults to an autogenerated value. + * @default `ion-accordion-${accordionIds++}` */ "value": string; } interface IonAccordionGroup { /** * If `true`, all accordions inside of the accordion group will animate when expanding or collapsing. + * @default true */ "animated": boolean; /** * If `true`, the accordion group cannot be interacted with. + * @default false */ "disabled": boolean; /** * Describes the expansion behavior for each accordion. Possible values are `"compact"` and `"inset"`. Defaults to `"compact"`. + * @default 'compact' */ "expand": 'compact' | 'inset'; "getAccordions": () => Promise; @@ -132,6 +140,7 @@ export namespace Components { "multiple"?: boolean; /** * If `true`, the accordion group cannot be interacted with, but does not alter the opacity. + * @default false */ "readonly": boolean; /** @@ -146,14 +155,17 @@ export namespace Components { interface IonActionSheet { /** * If `true`, the action sheet will animate. + * @default true */ "animated": boolean; /** * If `true`, the action sheet will be dismissed when the backdrop is clicked. + * @default true */ "backdropDismiss": boolean; /** * An array of buttons for the action sheet. + * @default [] */ "buttons": (ActionSheetButton | string)[]; /** @@ -171,6 +183,9 @@ export namespace Components { * Animation to use when the action sheet is presented. */ "enterAnimation"?: AnimationBuilder; + /** + * @default false + */ "hasController": boolean; /** * Title for the action sheet. @@ -182,10 +197,12 @@ export namespace Components { "htmlAttributes"?: { [key: string]: any }; /** * If `true`, the action sheet will open. If `false`, the action sheet will close. Use this if you need finer grained control over presentation, otherwise just use the actionSheetController or the `trigger` property. Note: `isOpen` will not automatically be set back to `false` when the action sheet dismisses. You will need to do that in your code. + * @default false */ "isOpen": boolean; /** * If `true`, the keyboard will be automatically dismissed when the overlay is presented. + * @default true */ "keyboardClose": boolean; /** @@ -215,6 +232,7 @@ export namespace Components { "subHeader"?: string; /** * If `true`, the action sheet will be translucent. Only applies when the mode is `"ios"` and the device supports [`backdrop-filter`](https://developer.mozilla.org/en-US/docs/Web/CSS/backdrop-filter#Browser_compatibility). + * @default false */ "translucent": boolean; /** @@ -225,14 +243,17 @@ export namespace Components { interface IonAlert { /** * If `true`, the alert will animate. + * @default true */ "animated": boolean; /** * If `true`, the alert will be dismissed when the backdrop is clicked. + * @default true */ "backdropDismiss": boolean; /** * Array of buttons to be added to the alert. + * @default [] */ "buttons": (AlertButton | string)[]; /** @@ -250,6 +271,9 @@ export namespace Components { * Animation to use when the alert is presented. */ "enterAnimation"?: AnimationBuilder; + /** + * @default false + */ "hasController": boolean; /** * The main title in the heading of the alert. @@ -261,14 +285,17 @@ export namespace Components { "htmlAttributes"?: { [key: string]: any }; /** * Array of input to show in the alert. + * @default [] */ "inputs": AlertInput[]; /** * If `true`, the alert will open. If `false`, the alert will close. Use this if you need finer grained control over presentation, otherwise just use the alertController or the `trigger` property. Note: `isOpen` will not automatically be set back to `false` when the alert dismisses. You will need to do that in your code. + * @default false */ "isOpen": boolean; /** * If `true`, the keyboard will be automatically dismissed when the overlay is presented. + * @default true */ "keyboardClose": boolean; /** @@ -302,6 +329,7 @@ export namespace Components { "subHeader"?: string; /** * If `true`, the alert will be translucent. Only applies when the mode is `"ios"` and the device supports [`backdrop-filter`](https://developer.mozilla.org/en-US/docs/Web/CSS/backdrop-filter#Browser_compatibility). + * @default false */ "translucent": boolean; /** @@ -329,6 +357,7 @@ export namespace Components { "defaultHref"?: string; /** * If `true`, the user cannot interact with the button. + * @default false */ "disabled": boolean; /** @@ -349,20 +378,24 @@ export namespace Components { "text"?: string | null; /** * The type of the button. + * @default 'button' */ "type": 'submit' | 'reset' | 'button'; } interface IonBackdrop { /** * If `true`, the backdrop will stop propagation on tap. + * @default true */ "stopPropagation": boolean; /** * If `true`, the backdrop will can be clicked and will emit the `ionBackdropTap` event. + * @default true */ "tappable": boolean; /** * If `true`, the backdrop will be visible. + * @default true */ "visible": boolean; } @@ -379,8 +412,12 @@ export namespace Components { interface IonBreadcrumb { /** * If `true`, the breadcrumb will take on a different look to show that it is the currently active breadcrumb. Defaults to `true` for the last breadcrumb if it is not set on any. + * @default false */ "active": boolean; + /** + * @default false + */ "collapsed": boolean; /** * The color to use from your application's color palette. Default options are: `"primary"`, `"secondary"`, `"tertiary"`, `"success"`, `"warning"`, `"danger"`, `"light"`, `"medium"`, and `"dark"`. For more information on colors, see [theming](/docs/theming/basics). @@ -388,6 +425,7 @@ export namespace Components { "color"?: Color; /** * If `true`, the user cannot interact with the breadcrumb. + * @default false */ "disabled": boolean; /** @@ -413,6 +451,7 @@ export namespace Components { "routerAnimation": AnimationBuilder | undefined; /** * When using a router, it specifies the transition direction when navigating to another page using `href`. + * @default 'forward' */ "routerDirection": RouterDirection; /** @@ -432,10 +471,12 @@ export namespace Components { "color"?: Color; /** * The number of breadcrumbs to show after the collapsed indicator. If `itemsBeforeCollapse` + `itemsAfterCollapse` is greater than `maxItems`, the breadcrumbs will not be collapsed. + * @default 1 */ "itemsAfterCollapse": number; /** * The number of breadcrumbs to show before the collapsed indicator. If `itemsBeforeCollapse` + `itemsAfterCollapse` is greater than `maxItems`, the breadcrumbs will not be collapsed. + * @default 1 */ "itemsBeforeCollapse": number; /** @@ -450,6 +491,7 @@ export namespace Components { interface IonButton { /** * The type of button. + * @default 'button' */ "buttonType": string; /** @@ -458,6 +500,7 @@ export namespace Components { "color"?: Color; /** * If `true`, the user cannot interact with the button. + * @default false */ "disabled": boolean; /** @@ -494,6 +537,7 @@ export namespace Components { "routerAnimation": AnimationBuilder | undefined; /** * When using a router, it specifies the transition direction when navigating to another page using `href`. + * @default 'forward' */ "routerDirection": RouterDirection; /** @@ -506,6 +550,7 @@ export namespace Components { "size"?: 'small' | 'default' | 'large'; /** * If `true`, activates a button with a heavier font weight. + * @default false */ "strong": boolean; /** @@ -514,18 +559,21 @@ export namespace Components { "target": string | undefined; /** * The type of the button. + * @default 'button' */ "type": 'submit' | 'reset' | 'button'; } interface IonButtons { /** * If true, buttons will disappear when its parent toolbar has fully collapsed if the toolbar is not the first toolbar. If the toolbar is the first toolbar, the buttons will be hidden and will only be shown once all toolbars have fully collapsed. Only applies in `ios` mode with `collapse` set to `true` on `ion-header`. Typically used for [Collapsible Large Titles](https://ionicframework.com/docs/api/title#collapsible-large-titles) + * @default false */ "collapse": boolean; } interface IonCard { /** * If `true`, a button tag will be rendered and the card will be tappable. + * @default false */ "button": boolean; /** @@ -534,6 +582,7 @@ export namespace Components { "color"?: Color; /** * If `true`, the user cannot interact with the card. + * @default false */ "disabled": boolean; /** @@ -558,6 +607,7 @@ export namespace Components { "routerAnimation": AnimationBuilder | undefined; /** * When using a router, it specifies the transition direction when navigating to another page using `href`. + * @default 'forward' */ "routerDirection": RouterDirection; /** @@ -566,6 +616,7 @@ export namespace Components { "target": string | undefined; /** * The type of the button. Only used when an `onclick` or `button` property is present. + * @default 'button' */ "type": 'submit' | 'reset' | 'button'; } @@ -586,6 +637,7 @@ export namespace Components { "mode"?: "ios" | "md"; /** * If `true`, the card header will be translucent. Only applies when the mode is `"ios"` and the device supports [`backdrop-filter`](https://developer.mozilla.org/en-US/docs/Web/CSS/backdrop-filter#Browser_compatibility). + * @default false */ "translucent": boolean; } @@ -616,6 +668,7 @@ export namespace Components { "alignment"?: 'start' | 'center'; /** * If `true`, the checkbox is selected. + * @default false */ "checked": boolean; /** @@ -624,6 +677,7 @@ export namespace Components { "color"?: Color; /** * If `true`, the user cannot interact with the checkbox. + * @default false */ "disabled": boolean; /** @@ -636,6 +690,7 @@ export namespace Components { "helperText"?: string; /** * If `true`, the checkbox will visually appear as indeterminate. + * @default false */ "indeterminate": boolean; /** @@ -644,6 +699,7 @@ export namespace Components { "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. + * @default 'start' */ "labelPlacement": 'start' | 'end' | 'fixed' | 'stacked'; /** @@ -652,15 +708,18 @@ export namespace Components { "mode"?: "ios" | "md"; /** * The name of the control, which is submitted with the form data. + * @default this.inputId */ "name": string; /** * If true, screen readers will announce it as a required field. This property works only for accessibility purposes, it will not prevent the form from submitting if the value is invalid. + * @default false */ "required": boolean; "setFocus": () => Promise; /** * The value of the checkbox does not mean if it's checked or not, use the `checked` property for that. The value of a checkbox is analogous to the value of an ``, it's only used when the checkbox participates in a native ``. + * @default 'on' */ "value": any | null; } @@ -671,6 +730,7 @@ export namespace Components { "color"?: Color; /** * If `true`, the user cannot interact with the chip. + * @default false */ "disabled": boolean; /** @@ -679,6 +739,7 @@ export namespace Components { "mode"?: "ios" | "md"; /** * Display an outline style button. + * @default false */ "outline": boolean; } @@ -787,6 +848,7 @@ export namespace Components { "color"?: Color; /** * Controls where the fixed content is placed relative to the main content in the DOM. This can be used to control the order in which fixed elements receive keyboard focus. For example, if a FAB in the fixed slot should receive keyboard focus before the main page content, set this property to `'before'`. + * @default 'after' */ "fixedSlotPlacement": 'after' | 'before'; /** @@ -795,6 +857,7 @@ export namespace Components { "forceOverscroll"?: boolean; /** * If `true`, the content will scroll behind the headers and footers. This effect can easily be seen by setting the toolbar to transparent. + * @default false */ "fullscreen": boolean; /** @@ -814,6 +877,7 @@ export namespace Components { "scrollByPoint": (x: number, y: number, duration: number) => Promise; /** * Because of performance reasons, ionScroll events are disabled by default, in order to enable them and start listening from (ionScroll), set this property to `true`. + * @default false */ "scrollEvents": boolean; /** @@ -835,10 +899,12 @@ export namespace Components { "scrollToTop": (duration?: number) => Promise; /** * If you want to enable the content scrolling in the X axis, set this property to `true`. + * @default false */ "scrollX": boolean; /** * If you want to disable the content scrolling in the Y axis, set this property to `false`. + * @default true */ "scrollY": boolean; } @@ -850,14 +916,17 @@ export namespace Components { "cancel": (closeOverlay?: boolean) => Promise; /** * The text to display on the picker's cancel button. + * @default 'Cancel' */ "cancelText": string; /** * The text to display on the picker's "Clear" button. + * @default 'Clear' */ "clearText": string; /** * The color to use from your application's color palette. Default options are: `"primary"`, `"secondary"`, `"tertiary"`, `"success"`, `"warning"`, `"danger"`, `"light"`, `"medium"`, and `"dark"`. For more information on colors, see [theming](/docs/theming/basics). + * @default 'primary' */ "color"?: Color; /** @@ -871,14 +940,17 @@ export namespace Components { "dayValues"?: number[] | number | string; /** * If `true`, the user cannot interact with the datetime. + * @default false */ "disabled": boolean; /** * The text to display on the picker's "Done" button. + * @default 'Done' */ "doneText": string; /** * The first day of the week to use for `ion-datetime`. The default value is `0` and represents Sunday. + * @default 0 */ "firstDayOfWeek": number; /** @@ -903,6 +975,7 @@ export namespace Components { "isDateEnabled"?: (dateIsoString: string) => boolean; /** * The locale to use for `ion-datetime`. This impacts month and day name formatting. The `"default"` value refers to the default locale set by your device. + * @default 'default' */ "locale": string; /** @@ -927,22 +1000,27 @@ export namespace Components { "monthValues"?: number[] | number | string; /** * If `true`, multiple dates can be selected at once. Only applies to `presentation="date"` and `preferWheel="false"`. + * @default false */ "multiple": boolean; /** * The name of the control, which is submitted with the form data. + * @default this.inputId */ "name": string; /** * If `true`, a wheel picker will be rendered instead of a calendar grid where possible. If `false`, a calendar grid will be rendered instead of a wheel picker where possible. A wheel picker can be rendered instead of a grid when `presentation` is one of the following values: `"date"`, `"date-time"`, or `"time-date"`. A wheel picker will always be rendered regardless of the `preferWheel` value when `presentation` is one of the following values: `"time"`, `"month"`, `"month-year"`, or `"year"`. + * @default false */ "preferWheel": boolean; /** * Which values you want to select. `"date"` will show a calendar picker to select the month, day, and year. `"time"` will show a time picker to select the hour, minute, and (optionally) AM/PM. `"date-time"` will show the date picker first and time picker second. `"time-date"` will show the time picker first and date picker second. + * @default 'date-time' */ "presentation": DatetimePresentation; /** * If `true`, the datetime appears normal but the selected date cannot be changed. + * @default false */ "readonly": boolean; /** @@ -952,26 +1030,32 @@ export namespace Components { "reset": (startDate?: string) => Promise; /** * If `true`, the datetime calendar displays a six-week (42-day) layout, including days from the previous and next months to fill the grid. These adjacent days are selectable unless disabled. + * @default false */ "showAdjacentDays": boolean; /** * If `true`, a "Clear" button will be rendered alongside the default "Cancel" and "OK" buttons at the bottom of the `ion-datetime` component. Developers can also use the `button` slot if they want to customize these buttons. If custom buttons are set in the `button` slot then the default buttons will not be rendered. + * @default false */ "showClearButton": boolean; /** * If `true`, the default "Cancel" and "OK" buttons will be rendered at the bottom of the `ion-datetime` component. Developers can also use the `button` slot if they want to customize these buttons. If custom buttons are set in the `button` slot then the default buttons will not be rendered. + * @default false */ "showDefaultButtons": boolean; /** * If `true`, the default "Time" label will be rendered for the time selector of the `ion-datetime` component. Developers can also use the `time-label` slot if they want to customize this label. If a custom label is set in the `time-label` slot then the default label will not be rendered. + * @default true */ "showDefaultTimeLabel": boolean; /** * If `true`, a header will be shown above the calendar picker. This will include both the slotted title, and the selected date. + * @default false */ "showDefaultTitle": boolean; /** * If `cover`, the `ion-datetime` will expand to cover the full width of its container. If `fixed`, the `ion-datetime` will have a fixed width. + * @default 'fixed' */ "size": 'cover' | 'fixed'; /** @@ -990,6 +1074,7 @@ export namespace Components { interface IonDatetimeButton { /** * The color to use from your application's color palette. Default options are: `"primary"`, `"secondary"`, `"tertiary"`, `"success"`, `"warning"`, `"danger"`, `"light"`, `"medium"`, and `"dark"`. For more information on colors, see [theming](/docs/theming/basics). + * @default 'primary' */ "color"?: Color; /** @@ -998,6 +1083,7 @@ export namespace Components { "datetime"?: string; /** * If `true`, the user cannot interact with the button. + * @default false */ "disabled": boolean; /** @@ -1008,6 +1094,7 @@ export namespace Components { interface IonFab { /** * If `true`, both the `ion-fab-button` and all `ion-fab-list` inside `ion-fab` will become active. That means `ion-fab-button` will become a `close` icon and `ion-fab-list` will become visible. + * @default false */ "activated": boolean; /** @@ -1016,6 +1103,7 @@ export namespace Components { "close": () => Promise; /** * If `true`, the fab will display on the edge of the header if `vertical` is `"top"`, and on the edge of the footer if it is `"bottom"`. Should be used with a `fixed` slot. + * @default false */ "edge": boolean; /** @@ -1034,10 +1122,12 @@ export namespace Components { interface IonFabButton { /** * If `true`, the fab button will be show a close icon. + * @default false */ "activated": boolean; /** * The icon name to use for the close icon. This will appear when the fab button is pressed. Only applies if it is the main button inside of a fab containing a fab list. + * @default close */ "closeIcon": string; /** @@ -1046,6 +1136,7 @@ export namespace Components { "color"?: Color; /** * If `true`, the user cannot interact with the fab button. + * @default false */ "disabled": boolean; /** @@ -1070,10 +1161,12 @@ export namespace Components { "routerAnimation": AnimationBuilder | undefined; /** * When using a router, it specifies the transition direction when navigating to another page using `href`. + * @default 'forward' */ "routerDirection": RouterDirection; /** * If `true`, the fab button will show when in a fab-list. + * @default false */ "show": boolean; /** @@ -1086,20 +1179,24 @@ export namespace Components { "target": string | undefined; /** * If `true`, the fab button will be translucent. Only applies when the mode is `"ios"` and the device supports [`backdrop-filter`](https://developer.mozilla.org/en-US/docs/Web/CSS/backdrop-filter#Browser_compatibility). + * @default false */ "translucent": boolean; /** * The type of the button. + * @default 'button' */ "type": 'submit' | 'reset' | 'button'; } interface IonFabList { /** * If `true`, the fab list will show all fab buttons in the list. + * @default false */ "activated": boolean; /** * The side the fab list will show on relative to the main fab button. + * @default 'bottom' */ "side": 'start' | 'end' | 'top' | 'bottom'; } @@ -1114,12 +1211,14 @@ export namespace Components { "mode"?: "ios" | "md"; /** * If `true`, the footer will be translucent. Only applies when the mode is `"ios"` and the device supports [`backdrop-filter`](https://developer.mozilla.org/en-US/docs/Web/CSS/backdrop-filter#Browser_compatibility). Note: In order to scroll content behind the footer, the `fullscreen` attribute needs to be set on the content. + * @default false */ "translucent": boolean; } interface IonGrid { /** * If `true`, the grid will have a fixed width based on the screen size. + * @default false */ "fixed": boolean; } @@ -1134,6 +1233,7 @@ export namespace Components { "mode"?: "ios" | "md"; /** * If `true`, the header will be translucent. Only applies when the mode is `"ios"` and the device supports [`backdrop-filter`](https://developer.mozilla.org/en-US/docs/Web/CSS/backdrop-filter#Browser_compatibility). Note: In order to scroll content behind the header, the `fullscreen` attribute needs to be set on the content. + * @default false */ "translucent": boolean; } @@ -1154,14 +1254,17 @@ export namespace Components { "complete": () => Promise; /** * If `true`, the infinite scroll will be hidden and scroll event listeners will be removed. Set this to true to disable the infinite scroll from actively trying to receive new data while scrolling. This is useful when it is known that there is no more data that can be added, and the infinite scroll is no longer needed. + * @default false */ "disabled": boolean; /** * The position of the infinite scroll element. The value can be either `top` or `bottom`. + * @default 'bottom' */ "position": 'top' | 'bottom'; /** * The threshold distance from the bottom of the content to call the `infinite` output event when scrolled. The threshold value can be either a percent, or in pixels. For example, use the value of `10%` for the `infinite` output event to get called when the user has scrolled 10% from the bottom of the page. Use the value `100px` when the scroll is within 100 pixels from the bottom of the page. + * @default '15%' */ "threshold": string; } @@ -1178,22 +1281,27 @@ export namespace Components { interface IonInput { /** * Indicates whether and how the text value should be automatically capitalized as it is entered/edited by the user. Available options: `"off"`, `"none"`, `"on"`, `"sentences"`, `"words"`, `"characters"`. + * @default 'off' */ "autocapitalize": string; /** * Indicates whether the value of the control can be automatically completed by the browser. + * @default 'off' */ "autocomplete": AutocompleteTypes; /** * Whether auto correction should be enabled when the user is entering/editing the text value. + * @default 'off' */ "autocorrect": 'on' | 'off'; /** * Sets the [`autofocus` attribute](https://developer.mozilla.org/en-US/docs/Web/HTML/Global_attributes/autofocus) on the native input element. This may not be sufficient for the element to be focused on page load. See [managing focus](/docs/developing/managing-focus) for more information. + * @default false */ "autofocus": boolean; /** * If `true`, a clear icon will appear in the input when there is a value. Clicking it clears the input. + * @default false */ "clearInput": boolean; /** @@ -1210,6 +1318,7 @@ export namespace Components { "color"?: Color; /** * If `true`, a character counter will display the ratio of characters used and the total character limit. Developers must also set the `maxlength` property for the counter to be calculated correctly. + * @default false */ "counter": boolean; /** @@ -1222,6 +1331,7 @@ export namespace Components { "debounce"?: number; /** * If `true`, the user cannot interact with the input. + * @default false */ "disabled": boolean; /** @@ -1254,6 +1364,7 @@ export namespace Components { "label"?: string; /** * Where to place the label relative to the input. `"start"`: The label will appear to the left of the input in LTR and to the right in RTL. `"end"`: The label will appear to the right of the input in LTR and to the left in RTL. `"floating"`: The label will appear smaller and above the input when the input is focused or it has a value. Otherwise it will appear on top of the input. `"stacked"`: The label will appear smaller and above the input regardless even when the input is blurred or has no value. `"fixed"`: The label has the same behavior as `"start"` except it also has a fixed width. Long text will be truncated with ellipses ("..."). + * @default 'start' */ "labelPlacement": 'start' | 'end' | 'floating' | 'stacked' | 'fixed'; /** @@ -1282,6 +1393,7 @@ export namespace Components { "multiple"?: boolean; /** * The name of the control, which is submitted with the form data. + * @default this.inputId */ "name": string; /** @@ -1294,10 +1406,12 @@ export namespace Components { "placeholder"?: string; /** * If `true`, the user cannot modify the value. + * @default false */ "readonly": boolean; /** * If `true`, the user must fill in a value before submitting a form. + * @default false */ "required": boolean; /** @@ -1310,6 +1424,7 @@ export namespace Components { "shape"?: 'round'; /** * If `true`, the element will have its spelling and grammar checked. + * @default false */ "spellcheck": boolean; /** @@ -1318,16 +1433,19 @@ export namespace Components { "step"?: string; /** * The type of control to display. The default type is text. + * @default 'text' */ "type": TextFieldTypes; /** * The value of the input. + * @default '' */ "value"?: string | number | null; } interface IonInputOtp { /** * Indicates whether and how the text value should be automatically capitalized as it is entered/edited by the user. Available options: `"off"`, `"none"`, `"on"`, `"sentences"`, `"words"`, `"characters"`. + * @default 'off' */ "autocapitalize": string; /** @@ -1336,10 +1454,12 @@ export namespace Components { "color"?: Color; /** * If `true`, the user cannot interact with the input. + * @default false */ "disabled": boolean; /** * The fill for the input boxes. If `"solid"` the input boxes will have a background. If `"outline"` the input boxes will be transparent with a border. + * @default 'outline' */ "fill"?: 'outline' | 'solid'; /** @@ -1348,6 +1468,7 @@ export namespace Components { "inputmode"?: 'none' | 'text' | 'tel' | 'url' | 'email' | 'numeric' | 'decimal' | 'search'; /** * The number of input boxes to display. + * @default 4 */ "length": number; /** @@ -1356,6 +1477,7 @@ export namespace Components { "pattern"?: string; /** * If `true`, the user cannot modify the value. + * @default false */ "readonly": boolean; /** @@ -1369,18 +1491,22 @@ export namespace Components { "setFocus": (index?: number) => Promise; /** * The shape of the input boxes. If "round" they will have an increased border radius. If "rectangular" they will have no border radius. If "soft" they will have a soft border radius. + * @default 'round' */ "shape": 'round' | 'rectangular' | 'soft'; /** * The size of the input boxes. + * @default 'medium' */ "size": 'small' | 'medium' | 'large'; /** * The type of input allowed in the input boxes. + * @default 'number' */ "type": 'text' | 'number'; /** * The value of the input group. + * @default '' */ "value"?: string | number | null; } @@ -1401,11 +1527,15 @@ export namespace Components { * The icon that can be used to represent showing a password. If not set, the "eye" Ionicon will be used. */ "showIcon"?: string; + /** + * @default 'password' + */ "type": TextFieldTypes; } interface IonItem { /** * If `true`, a button tag will be rendered and the item will be tappable. + * @default false */ "button": boolean; /** @@ -1418,10 +1548,12 @@ export namespace Components { "detail"?: boolean; /** * The icon to use when `detail` is set to `true`. + * @default chevronForward */ "detailIcon": string; /** * If `true`, the user cannot interact with the item. + * @default false */ "disabled": boolean; /** @@ -1450,6 +1582,7 @@ export namespace Components { "routerAnimation": AnimationBuilder | undefined; /** * When using a router, it specifies the transition direction when navigating to another page using `href`. + * @default 'forward' */ "routerDirection": RouterDirection; /** @@ -1458,6 +1591,7 @@ export namespace Components { "target": string | undefined; /** * The type of the button. Only used when an `onclick` or `button` property is present. + * @default 'button' */ "type": 'submit' | 'reset' | 'button'; } @@ -1472,6 +1606,7 @@ export namespace Components { "mode"?: "ios" | "md"; /** * When it's set to `true`, the item-divider will stay visible when it reaches the top of the viewport until the next `ion-item-divider` replaces it. This feature relies in `position:sticky`: https://caniuse.com/#feat=css-sticky + * @default false */ "sticky": boolean; } @@ -1484,6 +1619,7 @@ export namespace Components { "color"?: Color; /** * If `true`, the user cannot interact with the item option. + * @default false */ "disabled": boolean; /** @@ -1492,6 +1628,7 @@ export namespace Components { "download": string | undefined; /** * If `true`, the option will expand to take up the available width and cover any other options. + * @default false */ "expandable": boolean; /** @@ -1512,6 +1649,7 @@ export namespace Components { "target": string | undefined; /** * The type of the button. + * @default 'button' */ "type": 'submit' | 'reset' | 'button'; } @@ -1519,6 +1657,7 @@ export namespace Components { "fireSwipeEvent": () => Promise; /** * The side the option button should be on. Possible values: `"start"` and `"end"`. If you have multiple `ion-item-options`, a side must be provided for each. + * @default 'end' */ "side": Side; } @@ -1533,6 +1672,7 @@ export namespace Components { "closeOpened": () => Promise; /** * If `true`, the user cannot interact with the sliding item. + * @default false */ "disabled": boolean; /** @@ -1570,6 +1710,7 @@ export namespace Components { "closeSlidingItems": () => Promise; /** * If `true`, the list will have margin around it and rounded corners. + * @default false */ "inset": boolean; /** @@ -1598,10 +1739,12 @@ export namespace Components { interface IonLoading { /** * If `true`, the loading indicator will animate. + * @default true */ "animated": boolean; /** * If `true`, the loading indicator will be dismissed when the backdrop is clicked. + * @default false */ "backdropDismiss": boolean; /** @@ -1617,12 +1760,16 @@ export namespace Components { "dismiss": (data?: any, role?: string) => Promise; /** * Number of milliseconds to wait before dismissing the loading indicator. + * @default 0 */ "duration": number; /** * Animation to use when the loading indicator is presented. */ "enterAnimation"?: AnimationBuilder; + /** + * @default false + */ "hasController": boolean; /** * Additional attributes to pass to the loader. @@ -1630,10 +1777,12 @@ export namespace Components { "htmlAttributes"?: { [key: string]: any }; /** * If `true`, the loading indicator will open. If `false`, the loading indicator will close. Use this if you need finer grained control over presentation, otherwise just use the loadingController or the `trigger` property. Note: `isOpen` will not automatically be set back to `false` when the loading indicator dismisses. You will need to do that in your code. + * @default false */ "isOpen": boolean; /** * If `true`, the keyboard will be automatically dismissed when the overlay is presented. + * @default true */ "keyboardClose": boolean; /** @@ -1663,6 +1812,7 @@ export namespace Components { "present": () => Promise; /** * If `true`, a backdrop will be displayed behind the loading indicator. + * @default true */ "showBackdrop": boolean; /** @@ -1671,6 +1821,7 @@ export namespace Components { "spinner"?: SpinnerTypes | null; /** * If `true`, the loading indicator will be translucent. Only applies when the mode is `"ios"` and the device supports [`backdrop-filter`](https://developer.mozilla.org/en-US/docs/Web/CSS/backdrop-filter#Browser_compatibility). + * @default false */ "translucent": boolean; /** @@ -1691,6 +1842,7 @@ export namespace Components { "contentId"?: string; /** * If `true`, the menu is disabled. + * @default false */ "disabled": boolean; /** @@ -1703,6 +1855,7 @@ export namespace Components { "isOpen": () => Promise; /** * The edge threshold for dragging the menu open. If a drag/swipe happens over this value, the menu is not triggered. + * @default 50 */ "maxEdgeStart": number; /** @@ -1723,10 +1876,12 @@ export namespace Components { "setOpen": (shouldOpen: boolean, animated?: boolean, role?: string) => Promise; /** * Which side of the view the menu should be placed. + * @default 'start' */ "side": Side; /** * If `true`, swiping the menu is enabled. + * @default true */ "swipeGesture": boolean; /** @@ -1742,6 +1897,7 @@ export namespace Components { interface IonMenuButton { /** * Automatically hides the menu button when the corresponding menu is not active + * @default true */ "autoHide": boolean; /** @@ -1750,6 +1906,7 @@ export namespace Components { "color"?: Color; /** * If `true`, the user cannot interact with the menu button. + * @default false */ "disabled": boolean; /** @@ -1762,12 +1919,14 @@ export namespace Components { "mode"?: "ios" | "md"; /** * The type of the button. + * @default 'button' */ "type": 'submit' | 'reset' | 'button'; } interface IonMenuToggle { /** * Automatically hides the content when the corresponding menu is not active. By default, it's `true`. Change it to `false` in order to keep `ion-menu-toggle` always visible regardless the state of the menu. + * @default true */ "autoHide": boolean; /** @@ -1778,14 +1937,17 @@ export namespace Components { interface IonModal { /** * If `true`, the modal will animate. + * @default true */ "animated": boolean; /** * A decimal value between 0 and 1 that indicates the point after which the backdrop will begin to fade in when using a sheet modal. Prior to this point, the backdrop will be hidden and the content underneath the sheet can be interacted with. This value is exclusive meaning the backdrop will become active after the value specified. + * @default 0 */ "backdropBreakpoint": number; /** * If `true`, the modal will be dismissed when the backdrop is clicked. + * @default true */ "backdropDismiss": boolean; /** @@ -1794,6 +1956,7 @@ export namespace Components { "breakpoints"?: number[]; /** * Determines whether or not a modal can dismiss when calling the `dismiss` method. If the value is `true` or the value's function returns `true`, the modal will close when trying to dismiss. If the value is `false` or the value's function returns `false`, the modal will not close when trying to dismiss. See https://ionicframework.com/docs/troubleshooting/runtime#accessing-this if you need to access `this` from within the callback. + * @default true */ "canDismiss": boolean | ((data?: any, role?: string) => Promise); /** @@ -1821,10 +1984,12 @@ export namespace Components { "enterAnimation"?: AnimationBuilder; /** * Controls whether scrolling or dragging within the sheet modal expands it to a larger breakpoint. This only takes effect when `breakpoints` and `initialBreakpoint` are set. If `true`, scrolling or dragging anywhere in the modal will first expand it to the next breakpoint. Once fully expanded, scrolling will affect the content. If `false`, scrolling will always affect the content. The modal will only expand when dragging the header or handle. The modal will close when dragging the header or handle. It can also be closed when dragging the content, but only if the content is scrolled to the top. + * @default true */ "expandToScroll": boolean; /** * If `true`, focus will not be allowed to move outside of this overlay. If `false`, focus will be allowed to move outside of the overlay. In most scenarios this property should remain set to `true`. Setting this property to `false` can cause severe accessibility issues as users relying on assistive technologies may be able to move focus into a confusing state. We recommend only setting this to `false` when absolutely necessary. Developers may want to consider disabling focus trapping if this overlay presents a non-Ionic overlay from a 3rd party library. Developers would disable focus trapping on the Ionic overlay when presenting the 3rd party overlay and then re-enable focus trapping when dismissing the 3rd party overlay and moving focus back to the Ionic overlay. + * @default true */ "focusTrap": boolean; /** @@ -1837,8 +2002,12 @@ export namespace Components { "handle"?: boolean; /** * The interaction behavior for the sheet modal when the handle is pressed. Defaults to `"none"`, which means the modal will not change size or position when the handle is pressed. Set to `"cycle"` to let the modal cycle between available breakpoints when pressed. Handle behavior is unavailable when the `handle` property is set to `false` or when the `breakpoints` property is not set (using a fullscreen or card modal). + * @default 'none' */ "handleBehavior"?: ModalHandleBehavior; + /** + * @default false + */ "hasController": boolean; /** * Additional attributes to pass to the modal. @@ -1850,14 +2019,17 @@ export namespace Components { "initialBreakpoint"?: number; /** * If `true`, the modal will open. If `false`, the modal will close. Use this if you need finer grained control over presentation, otherwise just use the modalController or the `trigger` property. Note: `isOpen` will not automatically be set back to `false` when the modal dismisses. You will need to do that in your code. + * @default false */ "isOpen": boolean; /** * If `true`, the component passed into `ion-modal` will automatically be mounted when the modal is created. The component will remain mounted even when the modal is dismissed. However, the component will be destroyed when the modal is destroyed. This property is not reactive and should only be used when initially creating a modal. Note: This feature only applies to inline modals in JavaScript frameworks such as Angular, React, and Vue. + * @default false */ "keepContentsMounted": boolean; /** * If `true`, the keyboard will be automatically dismissed when the overlay is presented. + * @default true */ "keyboardClose": boolean; /** @@ -1892,6 +2064,7 @@ export namespace Components { "setCurrentBreakpoint": (breakpoint: number) => Promise; /** * If `true`, a backdrop will be displayed behind the modal. This property controls whether or not the backdrop darkens the screen when the modal is presented. It does not control whether or not the backdrop is active or present in the DOM. + * @default true */ "showBackdrop": boolean; /** @@ -1902,6 +2075,7 @@ export namespace Components { interface IonNav { /** * If `true`, the nav should animate the transition of components. + * @default true */ "animated": boolean; /** @@ -2040,6 +2214,7 @@ export namespace Components { "routerAnimation"?: AnimationBuilder; /** * The transition direction when navigating to another page. + * @default 'forward' */ "routerDirection": RouterDirection; } @@ -2063,10 +2238,12 @@ export namespace Components { interface IonPickerColumn { /** * The color to use from your application's color palette. Default options are: `"primary"`, `"secondary"`, `"tertiary"`, `"success"`, `"warning"`, `"danger"`, `"light"`, `"medium"`, and `"dark"`. For more information on colors, see [theming](/docs/theming/basics). + * @default 'primary' */ "color"?: Color; /** * If `true`, the user cannot interact with the picker. + * @default false */ "disabled": boolean; /** @@ -2075,6 +2252,7 @@ export namespace Components { "mode"?: "ios" | "md"; /** * If `true`, tapping the picker will reveal a number input keyboard that lets the user type in values for each picker column. This is useful when working with time pickers. + * @default false */ "numericInput": boolean; "scrollActiveItemIntoView": (smooth?: boolean) => Promise; @@ -2094,10 +2272,12 @@ export namespace Components { interface IonPickerColumnOption { /** * The color to use from your application's color palette. Default options are: `"primary"`, `"secondary"`, `"tertiary"`, `"success"`, `"warning"`, `"danger"`, `"light"`, `"medium"`, and `"dark"`. For more information on colors, see [theming](/docs/theming/basics). + * @default 'primary' */ "color"?: Color; /** * If `true`, the user cannot interact with the picker column option. + * @default false */ "disabled": boolean; /** @@ -2108,18 +2288,22 @@ export namespace Components { interface IonPickerLegacy { /** * If `true`, the picker will animate. + * @default true */ "animated": boolean; /** * If `true`, the picker will be dismissed when the backdrop is clicked. + * @default true */ "backdropDismiss": boolean; /** * Array of buttons to be displayed at the top of the picker. + * @default [] */ "buttons": PickerButton[]; /** * Array of columns to be displayed in the picker. + * @default [] */ "columns": PickerColumn[]; /** @@ -2135,6 +2319,7 @@ export namespace Components { "dismiss": (data?: any, role?: string) => Promise; /** * Number of milliseconds to wait before dismissing the picker. + * @default 0 */ "duration": number; /** @@ -2146,6 +2331,9 @@ export namespace Components { * @param name The name of the column. */ "getColumn": (name: string) => Promise; + /** + * @default false + */ "hasController": boolean; /** * Additional attributes to pass to the picker. @@ -2153,10 +2341,12 @@ export namespace Components { "htmlAttributes"?: { [key: string]: any }; /** * If `true`, the picker will open. If `false`, the picker will close. Use this if you need finer grained control over presentation, otherwise just use the pickerController or the `trigger` property. Note: `isOpen` will not automatically be set back to `false` when the picker dismisses. You will need to do that in your code. + * @default false */ "isOpen": boolean; /** * If `true`, the keyboard will be automatically dismissed when the overlay is presented. + * @default true */ "keyboardClose": boolean; /** @@ -2182,6 +2372,7 @@ export namespace Components { "present": () => Promise; /** * If `true`, a backdrop will be displayed behind the picker. + * @default true */ "showBackdrop": boolean; /** @@ -2202,14 +2393,17 @@ export namespace Components { "alignment"?: PositionAlign; /** * If `true`, the popover will animate. + * @default true */ "animated": boolean; /** * If `true`, the popover will display an arrow that points at the `reference` when running in `ios` mode. Does not apply in `md` mode. + * @default true */ "arrow": boolean; /** * If `true`, the popover will be dismissed when the backdrop is clicked. + * @default true */ "backdropDismiss": boolean; /** @@ -2234,6 +2428,7 @@ export namespace Components { "dismiss": (data?: any, role?: string, dismissParentPopover?: boolean) => Promise; /** * If `true`, the popover will be automatically dismissed when the content has been clicked. + * @default false */ "dismissOnSelect": boolean; /** @@ -2246,9 +2441,13 @@ export namespace Components { "event": any; /** * If `true`, focus will not be allowed to move outside of this overlay. If `false`, focus will be allowed to move outside of the overlay. In most scenarios this property should remain set to `true`. Setting this property to `false` can cause severe accessibility issues as users relying on assistive technologies may be able to move focus into a confusing state. We recommend only setting this to `false` when absolutely necessary. Developers may want to consider disabling focus trapping if this overlay presents a non-Ionic overlay from a 3rd party library. Developers would disable focus trapping on the Ionic overlay when presenting the 3rd party overlay and then re-enable focus trapping when dismissing the 3rd party overlay and moving focus back to the Ionic overlay. + * @default true */ "focusTrap": boolean; "getParentPopover": () => Promise; + /** + * @default false + */ "hasController": boolean; /** * Additional attributes to pass to the popover. @@ -2256,16 +2455,22 @@ export namespace Components { "htmlAttributes"?: { [key: string]: any }; /** * If `true`, the popover will open. If `false`, the popover will close. Use this if you need finer grained control over presentation, otherwise just use the popoverController or the `trigger` property. Note: `isOpen` will not automatically be set back to `false` when the popover dismisses. You will need to do that in your code. + * @default false */ "isOpen": boolean; /** * If `true`, the component passed into `ion-popover` will automatically be mounted when the popover is created. The component will remain mounted even when the popover is dismissed. However, the component will be destroyed when the popover is destroyed. This property is not reactive and should only be used when initially creating a popover. Note: This feature only applies to inline popovers in JavaScript frameworks such as Angular, React, and Vue. + * @default false */ "keepContentsMounted": boolean; /** * If `true`, the keyboard will be automatically dismissed when the overlay is presented. + * @default true */ "keyboardClose": boolean; + /** + * @default false + */ "keyboardEvents": boolean; /** * Animation to use when the popover is dismissed. @@ -2295,22 +2500,27 @@ export namespace Components { "presentFromTrigger": (event?: any, focusDescendant?: boolean) => Promise; /** * Describes what to position the popover relative to. If `"trigger"`, the popover will be positioned relative to the trigger button. If passing in an event, this is determined via event.target. If `"event"`, the popover will be positioned relative to the x/y coordinates of the trigger action. If passing in an event, this is determined via event.clientX and event.clientY. + * @default 'trigger' */ "reference": PositionReference; /** * If `true`, a backdrop will be displayed behind the popover. This property controls whether or not the backdrop darkens the screen when the popover is presented. It does not control whether or not the backdrop is active or present in the DOM. + * @default true */ "showBackdrop": boolean; /** * Describes which side of the `reference` point to position the popover on. The `"start"` and `"end"` values are RTL-aware, and the `"left"` and `"right"` values are not. + * @default 'bottom' */ "side": PositionSide; /** * Describes how to calculate the popover width. If `"cover"`, the popover width will match the width of the trigger. If `"auto"`, the popover width will be set to a static default value. + * @default 'auto' */ "size": PopoverSize; /** * If `true`, the popover will be translucent. Only applies when the mode is `"ios"` and the device supports [`backdrop-filter`](https://developer.mozilla.org/en-US/docs/Web/CSS/backdrop-filter#Browser_compatibility). + * @default false */ "translucent": boolean; /** @@ -2319,12 +2529,14 @@ export namespace Components { "trigger": string | undefined; /** * Describes what kind of interaction with the trigger that should cause the popover to open. Does not apply when the `trigger` property is `undefined`. If `"click"`, the popover will be presented when the trigger is left clicked. If `"hover"`, the popover will be presented when a pointer hovers over the trigger. If `"context-menu"`, the popover will be presented when the trigger is right clicked on desktop and long pressed on mobile. This will also prevent your device's normal context menu from appearing. + * @default 'click' */ "triggerAction": TriggerAction; } interface IonProgressBar { /** * If the buffer and value are smaller than 1, the buffer circles will show. The buffer should be between [0, 1]. + * @default 1 */ "buffer": number; /** @@ -2337,14 +2549,17 @@ export namespace Components { "mode"?: "ios" | "md"; /** * If true, reverse the progress bar direction. + * @default false */ "reversed": boolean; /** * The state of the progress bar, based on if the time the process takes is known or not. Default options are: `"determinate"` (no animation), `"indeterminate"` (animate from left to right). + * @default 'determinate' */ "type": 'determinate' | 'indeterminate'; /** * The value determines how much of the active bar should display when the `type` is `"determinate"`. The value should be between [0, 1]. + * @default 0 */ "value": number; } @@ -2359,6 +2574,7 @@ export namespace Components { "color"?: Color; /** * If `true`, the user cannot interact with the radio. + * @default false */ "disabled": boolean; /** @@ -2367,6 +2583,7 @@ export namespace Components { "justify"?: 'start' | 'end' | 'space-between'; /** * Where to place the label relative to the radio. `"start"`: The label will appear to the left of the radio in LTR and to the right in RTL. `"end"`: The label will appear to the right of the radio 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 radio regardless of the direction. The alignment of the label can be controlled with the `alignment` property. + * @default 'start' */ "labelPlacement": 'start' | 'end' | 'fixed' | 'stacked'; /** @@ -2375,6 +2592,7 @@ export namespace Components { "mode"?: "ios" | "md"; /** * The name of the control, which is submitted with the form data. + * @default this.inputId */ "name": string; "setButtonTabindex": (value: number) => Promise; @@ -2387,6 +2605,7 @@ export namespace Components { interface IonRadioGroup { /** * If `true`, the radios can be deselected. + * @default false */ "allowEmptySelection": boolean; /** @@ -2403,6 +2622,7 @@ export namespace Components { "helperText"?: string; /** * The name of the control, which is submitted with the form data. + * @default this.inputId */ "name": string; "setFocus": () => Promise; @@ -2426,10 +2646,12 @@ export namespace Components { "debounce"?: number; /** * If `true`, the user cannot interact with the range. + * @default false */ "disabled": boolean; /** * Show two knobs. + * @default false */ "dualKnobs": boolean; /** @@ -2438,14 +2660,17 @@ export namespace Components { "label"?: string; /** * Where to place the label relative to the range. `"start"`: The label will appear to the left of the range in LTR and to the right in RTL. `"end"`: The label will appear to the right of the range 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 range regardless of the direction. + * @default 'start' */ "labelPlacement": 'start' | 'end' | 'fixed' | 'stacked'; /** * Maximum integer value of the range. + * @default 100 */ "max": number; /** * Minimum integer value of the range. + * @default 0 */ "min": number; /** @@ -2454,30 +2679,37 @@ export namespace Components { "mode"?: "ios" | "md"; /** * The name of the control, which is submitted with the form data. + * @default this.rangeId */ "name": string; /** * If `true`, a pin with integer value is shown when the knob is pressed. + * @default false */ "pin": boolean; /** * A callback used to format the pin text. By default the pin text is set to `Math.round(value)`. See https://ionicframework.com/docs/troubleshooting/runtime#accessing-this if you need to access `this` from within the callback. + * @default (value: number): number => Math.round(value) */ "pinFormatter": PinFormatter; /** * If `true`, the knob snaps to tick marks evenly spaced based on the step property value. + * @default false */ "snaps": boolean; /** * Specifies the value granularity. + * @default 1 */ "step": number; /** * If `true`, tick marks are displayed based on the step value. Only applies when `snaps` is `true`. + * @default true */ "ticks": boolean; /** * the value of the range. + * @default 0 */ "value": RangeValue; } @@ -2488,6 +2720,7 @@ export namespace Components { "cancel": () => Promise; /** * Time it takes to close the refresher. Does not apply when the refresher content uses a spinner, enabling the native refresher. + * @default '280ms' */ "closeDuration": string; /** @@ -2496,6 +2729,7 @@ export namespace Components { "complete": () => Promise; /** * If `true`, the refresher will be hidden. + * @default false */ "disabled": boolean; /** @@ -2508,18 +2742,22 @@ export namespace Components { "mode"?: "ios" | "md"; /** * How much to multiply the pull speed by. To slow the pull animation down, pass a number less than `1`. To speed up the pull, pass a number greater than `1`. The default value is `1` which is equal to the speed of the cursor. If a negative value is passed in, the factor will be `1` instead. For example: If the value passed is `1.2` and the content is dragged by `10` pixels, instead of `10` pixels the content will be pulled by `12` pixels (an increase of 20 percent). If the value passed is `0.8`, the dragged amount will be `8` pixels, less than the amount the cursor has moved. Does not apply when the refresher content uses a spinner, enabling the native refresher. + * @default 1 */ "pullFactor": number; /** * The maximum distance of the pull until the refresher will automatically go into the `refreshing` state. Defaults to the result of `pullMin + 60`. Does not apply when the refresher content uses a spinner, enabling the native refresher. + * @default this.pullMin + 60 */ "pullMax": number; /** * The minimum distance the user must pull down until the refresher will go into the `refreshing` state. Does not apply when the refresher content uses a spinner, enabling the native refresher. + * @default 60 */ "pullMin": number; /** * Time it takes the refresher to snap back to the `refreshing` state. Does not apply when the refresher content uses a spinner, enabling the native refresher. + * @default '280ms' */ "snapbackDuration": string; } @@ -2551,6 +2789,7 @@ export namespace Components { "complete": (listOrReorder?: boolean | any[]) => Promise; /** * If `true`, the reorder will be hidden. + * @default true */ "disabled": boolean; } @@ -2563,6 +2802,7 @@ export namespace Components { "addRipple": (x: number, y: number) => Promise<() => void>; /** * Sets the type of ripple-effect: - `bounded`: the ripple effect expands from the user's click position - `unbounded`: the ripple effect expands from the center of the button and overflows the container. NOTE: Surfaces for bounded ripples should have the overflow property set to hidden, while surfaces for unbounded ripples should have it set to visible. + * @default 'bounded' */ "type": 'bounded' | 'unbounded'; } @@ -2585,6 +2825,7 @@ export namespace Components { "componentProps"?: { [key: string]: any }; /** * Relative path that needs to match in order for this route to apply. Accepts paths similar to expressjs so that you can define parameters in the url /foo/:bar where bar would be available in incoming props. + * @default '' */ "url": string; } @@ -2615,10 +2856,12 @@ export namespace Components { "push": (path: string, direction?: RouterDirection, animation?: AnimationBuilder) => Promise; /** * The root path to use when matching URLs. By default, this is set to "/", but you can specify an alternate prefix for all URL paths. + * @default '/' */ "root": string; /** * The router can work in two "modes": - With hash: `/index.html#/path/to/page` - Without hash: `/path/to/page` Using one or another might depend in the requirements of your app and/or where it's deployed. Usually "hash-less" navigation works better for SEO and it's more user friendly too, but it might requires additional server-side configuration in order to properly work. On the other side hash-navigation is much easier to deploy, it even works over the file protocol. By default, this property is `true`, change to `false` to allow hash-less URLs. + * @default true */ "useHash": boolean; } @@ -2641,6 +2884,7 @@ export namespace Components { "routerAnimation": AnimationBuilder | undefined; /** * When using a router, it specifies the transition direction when navigating to another page using `href`. + * @default 'forward' */ "routerDirection": RouterDirection; /** @@ -2651,6 +2895,7 @@ export namespace Components { interface IonRouterOutlet { /** * If `true`, the router-outlet should animate the transition of components. + * @default true */ "animated": boolean; /** @@ -2662,6 +2907,7 @@ export namespace Components { "getRouteId": () => Promise; /** * The mode determines which platform styles to use. + * @default getIonMode(this) */ "mode": "ios" | "md"; "setRouteId": (id: string, params: ComponentProps | undefined, direction: RouterDirection, animation?: AnimationBuilder) => Promise; @@ -2672,26 +2918,32 @@ export namespace Components { interface IonSearchbar { /** * If `true`, enable searchbar animation. + * @default false */ "animated": boolean; /** * Indicates whether and how the text value should be automatically capitalized as it is entered/edited by the user. Available options: `"off"`, `"none"`, `"on"`, `"sentences"`, `"words"`, `"characters"`. + * @default 'off' */ "autocapitalize": string; /** * Set the input's autocomplete property. + * @default 'off' */ "autocomplete": AutocompleteTypes; /** * Set the input's autocorrect property. + * @default 'off' */ "autocorrect": 'on' | 'off'; /** * Set the cancel button icon. Only applies to `md` mode. Defaults to `arrow-back-sharp`. + * @default config.get('backButtonIcon', arrowBackSharp) as string */ "cancelButtonIcon": string; /** * Set the cancel button text. Only applies to `ios` mode. + * @default 'Cancel' */ "cancelButtonText": string; /** @@ -2708,6 +2960,7 @@ export namespace Components { "debounce"?: number; /** * If `true`, the user cannot interact with the input. + * @default false */ "disabled": boolean; /** @@ -2736,10 +2989,12 @@ export namespace Components { "mode"?: "ios" | "md"; /** * If used in a form, set the name of the control, which is submitted with the form data. + * @default this.inputId */ "name": string; /** * Set the input's placeholder. `placeholder` can accept either plaintext or HTML as a string. To display characters normally reserved for HTML, they must be escaped. For example `` would become `<Ionic>` For more information: [Security Documentation](https://ionicframework.com/docs/faq/security) + * @default 'Search' */ "placeholder": string; /** @@ -2752,22 +3007,27 @@ export namespace Components { "setFocus": () => Promise; /** * Sets the behavior for the cancel button. Defaults to `"never"`. Setting to `"focus"` shows the cancel button on focus. Setting to `"never"` hides the cancel button. Setting to `"always"` shows the cancel button regardless of focus state. + * @default 'never' */ "showCancelButton": 'never' | 'focus' | 'always'; /** * Sets the behavior for the clear button. Defaults to `"focus"`. Setting to `"focus"` shows the clear button on focus if the input is not empty. Setting to `"never"` hides the clear button. Setting to `"always"` shows the clear button regardless of focus state, but only if the input is not empty. + * @default 'always' */ "showClearButton": 'never' | 'focus' | 'always'; /** * If `true`, enable spellcheck on the input. + * @default false */ "spellcheck": boolean; /** * Set the type of the input. + * @default 'search' */ "type": 'text' | 'password' | 'email' | 'number' | 'search' | 'tel' | 'url'; /** * the value of the searchbar. + * @default '' */ "value"?: string | null; } @@ -2778,6 +3038,7 @@ export namespace Components { "color"?: Color; /** * If `true`, the user cannot interact with the segment. + * @default false */ "disabled": boolean; /** @@ -2786,14 +3047,17 @@ export namespace Components { "mode"?: "ios" | "md"; /** * If `true`, the segment buttons will overflow and the user can swipe to see them. In addition, this will disable the gesture to drag the indicator between the buttons in order to swipe to see hidden buttons. + * @default false */ "scrollable": boolean; /** * If `true`, navigating to an `ion-segment-button` with the keyboard will focus and select the element. If `false`, keyboard navigation will only focus the `ion-segment-button` element. + * @default false */ "selectOnFocus": boolean; /** * If `true`, users will be able to swipe between segment buttons to activate them. + * @default true */ "swipeGesture": boolean; /** @@ -2808,10 +3072,12 @@ export namespace Components { "contentId"?: string; /** * If `true`, the user cannot interact with the segment button. + * @default false */ "disabled": boolean; /** * Set the layout of the text and icon in the segment. + * @default 'icon-top' */ "layout"?: SegmentButtonLayout; /** @@ -2821,10 +3087,12 @@ export namespace Components { "setFocus": () => Promise; /** * The type of the button. + * @default 'button' */ "type": 'submit' | 'reset' | 'button'; /** * The value of the segment button. + * @default 'ion-sb-' + ids++ */ "value": SegmentValue; } @@ -2833,6 +3101,7 @@ export namespace Components { interface IonSegmentView { /** * If `true`, the segment view cannot be interacted with. + * @default false */ "disabled": boolean; /** @@ -2844,6 +3113,7 @@ export namespace Components { interface IonSelect { /** * The text to display on the cancel button. + * @default 'Cancel' */ "cancelText": string; /** @@ -2856,6 +3126,7 @@ export namespace Components { "compareWith"?: string | SelectCompareFn | null; /** * If `true`, the user cannot interact with the select. + * @default false */ "disabled": boolean; /** @@ -2876,10 +3147,12 @@ export namespace Components { "helperText"?: string; /** * The interface the select should use: `action-sheet`, `popover`, `alert`, or `modal`. + * @default 'alert' */ "interface": SelectInterface; /** * Any additional options that the `alert`, `action-sheet` or `popover` interface can take. See the [ion-alert docs](./alert), the [ion-action-sheet docs](./action-sheet), the [ion-popover docs](./popover), and the [ion-modal docs](./modal) for the create options for each interface. Note: `interfaceOptions` will not override `inputs` or `buttons` with the `alert` interface. + * @default {} */ "interfaceOptions": any; /** @@ -2892,6 +3165,7 @@ export namespace Components { "label"?: string; /** * Where to place the label relative to the select. `"start"`: The label will appear to the left of the select in LTR and to the right in RTL. `"end"`: The label will appear to the right of the select in LTR and to the left in RTL. `"floating"`: The label will appear smaller and above the select when the select is focused or it has a value. Otherwise it will appear on top of the select. `"stacked"`: The label will appear smaller and above the select regardless even when the select is blurred or has no value. `"fixed"`: The label has the same behavior as `"start"` except it also has a fixed width. Long text will be truncated with ellipses ("..."). When using `"floating"` or `"stacked"` we recommend initializing the select with either a `value` or a `placeholder`. + * @default 'start' */ "labelPlacement"?: 'start' | 'end' | 'floating' | 'stacked' | 'fixed'; /** @@ -2900,14 +3174,17 @@ export namespace Components { "mode"?: "ios" | "md"; /** * If `true`, the select can accept multiple values. + * @default false */ "multiple": boolean; /** * The name of the control, which is submitted with the form data. + * @default this.inputId */ "name": string; /** * The text to display on the ok button. + * @default 'OK' */ "okText": string; /** @@ -2921,6 +3198,7 @@ export namespace Components { "placeholder"?: string; /** * If true, screen readers will announce it as a required field. This property works only for accessibility purposes, it will not prevent the form from submitting if the value is invalid. + * @default false */ "required": boolean; /** @@ -2943,11 +3221,15 @@ export namespace Components { interface IonSelectModal { "header"?: string; "multiple"?: boolean; + /** + * @default [] + */ "options": SelectModalOption[]; } interface IonSelectOption { /** * If `true`, the user cannot interact with the select option. This property does not apply when `interface="action-sheet"` as `ion-action-sheet` does not allow for disabled buttons. + * @default false */ "disabled": boolean; /** @@ -2970,6 +3252,7 @@ export namespace Components { "multiple"?: boolean; /** * An array of options for the popover + * @default [] */ "options": SelectPopoverOption[]; /** @@ -2980,6 +3263,7 @@ export namespace Components { interface IonSkeletonText { /** * If `true`, the skeleton text will animate. + * @default false */ "animated": boolean; } @@ -2998,6 +3282,7 @@ export namespace Components { "name"?: SpinnerTypes; /** * If `true`, the spinner's animation will be paused. + * @default false */ "paused": boolean; } @@ -3008,15 +3293,20 @@ export namespace Components { "contentId"?: string; /** * If `true`, the split pane will be hidden. + * @default false */ "disabled": boolean; "isVisible": () => Promise; /** * When the split-pane should be shown. Can be a CSS media query expression, or a shortcut expression. Can also be a boolean expression. + * @default QUERY['lg'] */ "when": string | boolean; } interface IonTab { + /** + * @default false + */ "active": boolean; /** * The component to display inside of the tab. @@ -3047,12 +3337,14 @@ export namespace Components { "selectedTab"?: string; /** * If `true`, the tab bar will be translucent. Only applies when the mode is `"ios"` and the device supports [`backdrop-filter`](https://developer.mozilla.org/en-US/docs/Web/CSS/backdrop-filter#Browser_compatibility). + * @default false */ "translucent": boolean; } interface IonTabButton { /** * If `true`, the user cannot interact with the tab button. + * @default false */ "disabled": boolean; /** @@ -3077,6 +3369,7 @@ export namespace Components { "rel": string | undefined; /** * The selected tab component + * @default false */ "selected": boolean; /** @@ -3105,6 +3398,9 @@ export namespace Components { */ "select": (tab: string | HTMLIonTabElement) => Promise; "setRouteId": (id: string) => Promise; + /** + * @default false + */ "useRouter": boolean; } interface IonText { @@ -3120,18 +3416,22 @@ export namespace Components { interface IonTextarea { /** * If `true`, the textarea container will grow and shrink based on the contents of the textarea. + * @default false */ "autoGrow": boolean; /** * Indicates whether and how the text value should be automatically capitalized as it is entered/edited by the user. Available options: `"off"`, `"none"`, `"on"`, `"sentences"`, `"words"`, `"characters"`. + * @default 'none' */ "autocapitalize": string; /** * Sets the [`autofocus` attribute](https://developer.mozilla.org/en-US/docs/Web/HTML/Global_attributes/autofocus) on the native input element. This may not be sufficient for the element to be focused on page load. See [managing focus](/docs/developing/managing-focus) for more information. + * @default false */ "autofocus": boolean; /** * If `true`, the value will be cleared after focus upon edit. + * @default false */ "clearOnEdit": boolean; /** @@ -3144,6 +3444,7 @@ export namespace Components { "cols"?: number; /** * If `true`, a character counter will display the ratio of characters used and the total character limit. Developers must also set the `maxlength` property for the counter to be calculated correctly. + * @default false */ "counter": boolean; /** @@ -3156,6 +3457,7 @@ export namespace Components { "debounce"?: number; /** * If `true`, the user cannot interact with the textarea. + * @default false */ "disabled": boolean; /** @@ -3188,6 +3490,7 @@ export namespace Components { "label"?: string; /** * Where to place the label relative to the textarea. `"start"`: The label will appear to the left of the textarea in LTR and to the right in RTL. `"end"`: The label will appear to the right of the textarea in LTR and to the left in RTL. `"floating"`: The label will appear smaller and above the textarea when the textarea is focused or it has a value. Otherwise it will appear on top of the textarea. `"stacked"`: The label will appear smaller and above the textarea regardless even when the textarea is blurred or has no value. `"fixed"`: The label has the same behavior as `"start"` except it also has a fixed width. Long text will be truncated with ellipses ("..."). + * @default 'start' */ "labelPlacement": 'start' | 'end' | 'floating' | 'stacked' | 'fixed'; /** @@ -3204,6 +3507,7 @@ export namespace Components { "mode"?: "ios" | "md"; /** * The name of the control, which is submitted with the form data. + * @default this.inputId */ "name": string; /** @@ -3212,10 +3516,12 @@ export namespace Components { "placeholder"?: string; /** * If `true`, the user cannot modify the value. + * @default false */ "readonly": boolean; /** * If `true`, the user must fill in a value before submitting a form. + * @default false */ "required": boolean; /** @@ -3232,10 +3538,12 @@ export namespace Components { "shape"?: 'round'; /** * If `true`, the element will have its spelling and grammar checked. + * @default false */ "spellcheck": boolean; /** * The value of the textarea. + * @default '' */ "value"?: string | null; /** @@ -3258,6 +3566,7 @@ export namespace Components { interface IonToast { /** * If `true`, the toast will animate. + * @default true */ "animated": boolean; /** @@ -3281,12 +3590,16 @@ export namespace Components { "dismiss": (data?: any, role?: string) => Promise; /** * How many milliseconds to wait before hiding the toast. By default, it will show until `dismiss()` is called. + * @default config.getNumber('toastDuration', 0) */ "duration": number; /** * Animation to use when the toast is presented. */ "enterAnimation"?: AnimationBuilder; + /** + * @default false + */ "hasController": boolean; /** * Header to be shown in the toast. @@ -3302,14 +3615,17 @@ export namespace Components { "icon"?: string; /** * If `true`, the toast will open. If `false`, the toast will close. Use this if you need finer grained control over presentation, otherwise just use the toastController or the `trigger` property. Note: `isOpen` will not automatically be set back to `false` when the toast dismisses. You will need to do that in your code. + * @default false */ "isOpen": boolean; /** * If `true`, the keyboard will be automatically dismissed when the overlay is presented. + * @default false */ "keyboardClose": boolean; /** * Defines how the message and buttons are laid out in the toast. 'baseline': The message and the buttons will appear on the same line. Message text may wrap within the message container. 'stacked': The buttons containers and message will stack on top of each other. Use this if you have long text in your buttons. + * @default 'baseline' */ "layout": ToastLayout; /** @@ -3335,6 +3651,7 @@ export namespace Components { "overlayIndex": number; /** * The starting position of the toast on the screen. Can be tweaked further using the `positionAnchor` property. + * @default 'bottom' */ "position": ToastPosition; /** @@ -3351,6 +3668,7 @@ export namespace Components { "swipeGesture"?: ToastSwipeGestureDirection; /** * If `true`, the toast will be translucent. Only applies when the mode is `"ios"` and the device supports [`backdrop-filter`](https://developer.mozilla.org/en-US/docs/Web/CSS/backdrop-filter#Browser_compatibility). + * @default false */ "translucent": boolean; /** @@ -3365,6 +3683,7 @@ export namespace Components { "alignment"?: 'start' | 'center'; /** * If `true`, the toggle is selected. + * @default false */ "checked": boolean; /** @@ -3373,10 +3692,12 @@ export namespace Components { "color"?: Color; /** * If `true`, the user cannot interact with the toggle. + * @default false */ "disabled": boolean; /** * Enables the on/off accessibility switch labels within the toggle. + * @default config.get('toggleOnOffLabels') */ "enableOnOffLabels": boolean | undefined; /** @@ -3393,6 +3714,7 @@ export namespace Components { "justify"?: 'start' | 'end' | 'space-between'; /** * Where to place the label relative to the input. `"start"`: The label will appear to the left of the toggle in LTR and to the right in RTL. `"end"`: The label will appear to the right of the toggle 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 toggle regardless of the direction. The alignment of the label can be controlled with the `alignment` property. + * @default 'start' */ "labelPlacement": 'start' | 'end' | 'fixed' | 'stacked'; /** @@ -3401,14 +3723,17 @@ export namespace Components { "mode"?: "ios" | "md"; /** * The name of the control, which is submitted with the form data. + * @default this.inputId */ "name": string; /** * If true, screen readers will announce it as a required field. This property works only for accessibility purposes, it will not prevent the form from submitting if the value is invalid. + * @default false */ "required": boolean; /** * The value of the toggle does not mean if it's checked or not, use the `checked` property for that. The value of a toggle is analogous to the value of a ``, it's only used when the toggle participates in a native ``. + * @default 'on' */ "value"?: string | null; } @@ -4961,6 +5286,7 @@ declare namespace LocalJSX { interface IonAccordion { /** * If `true`, the accordion cannot be interacted with. + * @default false */ "disabled"?: boolean; /** @@ -4969,32 +5295,39 @@ declare namespace LocalJSX { "mode"?: "ios" | "md"; /** * If `true`, the accordion cannot be interacted with, but does not alter the opacity. + * @default false */ "readonly"?: boolean; /** * The toggle icon to use. This icon will be rotated when the accordion is expanded or collapsed. + * @default chevronDown */ "toggleIcon"?: string; /** * The slot inside of `ion-item` to place the toggle icon. Defaults to `"end"`. + * @default 'end' */ "toggleIconSlot"?: 'start' | 'end'; /** * The value of the accordion. Defaults to an autogenerated value. + * @default `ion-accordion-${accordionIds++}` */ "value"?: string; } interface IonAccordionGroup { /** * If `true`, all accordions inside of the accordion group will animate when expanding or collapsing. + * @default true */ "animated"?: boolean; /** * If `true`, the accordion group cannot be interacted with. + * @default false */ "disabled"?: boolean; /** * Describes the expansion behavior for each accordion. Possible values are `"compact"` and `"inset"`. Defaults to `"compact"`. + * @default 'compact' */ "expand"?: 'compact' | 'inset'; /** @@ -5015,6 +5348,7 @@ declare namespace LocalJSX { "onIonValueChange"?: (event: IonAccordionGroupCustomEvent) => void; /** * If `true`, the accordion group cannot be interacted with, but does not alter the opacity. + * @default false */ "readonly"?: boolean; /** @@ -5025,14 +5359,17 @@ declare namespace LocalJSX { interface IonActionSheet { /** * If `true`, the action sheet will animate. + * @default true */ "animated"?: boolean; /** * If `true`, the action sheet will be dismissed when the backdrop is clicked. + * @default true */ "backdropDismiss"?: boolean; /** * An array of buttons for the action sheet. + * @default [] */ "buttons"?: (ActionSheetButton | string)[]; /** @@ -5044,6 +5381,9 @@ declare namespace LocalJSX { * Animation to use when the action sheet is presented. */ "enterAnimation"?: AnimationBuilder; + /** + * @default false + */ "hasController"?: boolean; /** * Title for the action sheet. @@ -5055,10 +5395,12 @@ declare namespace LocalJSX { "htmlAttributes"?: { [key: string]: any }; /** * If `true`, the action sheet will open. If `false`, the action sheet will close. Use this if you need finer grained control over presentation, otherwise just use the actionSheetController or the `trigger` property. Note: `isOpen` will not automatically be set back to `false` when the action sheet dismisses. You will need to do that in your code. + * @default false */ "isOpen"?: boolean; /** * If `true`, the keyboard will be automatically dismissed when the overlay is presented. + * @default true */ "keyboardClose"?: boolean; /** @@ -5108,6 +5450,7 @@ declare namespace LocalJSX { "subHeader"?: string; /** * If `true`, the action sheet will be translucent. Only applies when the mode is `"ios"` and the device supports [`backdrop-filter`](https://developer.mozilla.org/en-US/docs/Web/CSS/backdrop-filter#Browser_compatibility). + * @default false */ "translucent"?: boolean; /** @@ -5118,14 +5461,17 @@ declare namespace LocalJSX { interface IonAlert { /** * If `true`, the alert will animate. + * @default true */ "animated"?: boolean; /** * If `true`, the alert will be dismissed when the backdrop is clicked. + * @default true */ "backdropDismiss"?: boolean; /** * Array of buttons to be added to the alert. + * @default [] */ "buttons"?: (AlertButton | string)[]; /** @@ -5137,6 +5483,9 @@ declare namespace LocalJSX { * Animation to use when the alert is presented. */ "enterAnimation"?: AnimationBuilder; + /** + * @default false + */ "hasController"?: boolean; /** * The main title in the heading of the alert. @@ -5148,14 +5497,17 @@ declare namespace LocalJSX { "htmlAttributes"?: { [key: string]: any }; /** * Array of input to show in the alert. + * @default [] */ "inputs"?: AlertInput[]; /** * If `true`, the alert will open. If `false`, the alert will close. Use this if you need finer grained control over presentation, otherwise just use the alertController or the `trigger` property. Note: `isOpen` will not automatically be set back to `false` when the alert dismisses. You will need to do that in your code. + * @default false */ "isOpen"?: boolean; /** * If `true`, the keyboard will be automatically dismissed when the overlay is presented. + * @default true */ "keyboardClose"?: boolean; /** @@ -5209,6 +5561,7 @@ declare namespace LocalJSX { "subHeader"?: string; /** * If `true`, the alert will be translucent. Only applies when the mode is `"ios"` and the device supports [`backdrop-filter`](https://developer.mozilla.org/en-US/docs/Web/CSS/backdrop-filter#Browser_compatibility). + * @default false */ "translucent"?: boolean; /** @@ -5231,6 +5584,7 @@ declare namespace LocalJSX { "defaultHref"?: string; /** * If `true`, the user cannot interact with the button. + * @default false */ "disabled"?: boolean; /** @@ -5251,6 +5605,7 @@ declare namespace LocalJSX { "text"?: string | null; /** * The type of the button. + * @default 'button' */ "type"?: 'submit' | 'reset' | 'button'; } @@ -5261,14 +5616,17 @@ declare namespace LocalJSX { "onIonBackdropTap"?: (event: IonBackdropCustomEvent) => void; /** * If `true`, the backdrop will stop propagation on tap. + * @default true */ "stopPropagation"?: boolean; /** * If `true`, the backdrop will can be clicked and will emit the `ionBackdropTap` event. + * @default true */ "tappable"?: boolean; /** * If `true`, the backdrop will be visible. + * @default true */ "visible"?: boolean; } @@ -5285,8 +5643,12 @@ declare namespace LocalJSX { interface IonBreadcrumb { /** * If `true`, the breadcrumb will take on a different look to show that it is the currently active breadcrumb. Defaults to `true` for the last breadcrumb if it is not set on any. + * @default false */ "active"?: boolean; + /** + * @default false + */ "collapsed"?: boolean; /** * The color to use from your application's color palette. Default options are: `"primary"`, `"secondary"`, `"tertiary"`, `"success"`, `"warning"`, `"danger"`, `"light"`, `"medium"`, and `"dark"`. For more information on colors, see [theming](/docs/theming/basics). @@ -5294,6 +5656,7 @@ declare namespace LocalJSX { "color"?: Color; /** * If `true`, the user cannot interact with the breadcrumb. + * @default false */ "disabled"?: boolean; /** @@ -5331,6 +5694,7 @@ declare namespace LocalJSX { "routerAnimation"?: AnimationBuilder | undefined; /** * When using a router, it specifies the transition direction when navigating to another page using `href`. + * @default 'forward' */ "routerDirection"?: RouterDirection; /** @@ -5350,10 +5714,12 @@ declare namespace LocalJSX { "color"?: Color; /** * The number of breadcrumbs to show after the collapsed indicator. If `itemsBeforeCollapse` + `itemsAfterCollapse` is greater than `maxItems`, the breadcrumbs will not be collapsed. + * @default 1 */ "itemsAfterCollapse"?: number; /** * The number of breadcrumbs to show before the collapsed indicator. If `itemsBeforeCollapse` + `itemsAfterCollapse` is greater than `maxItems`, the breadcrumbs will not be collapsed. + * @default 1 */ "itemsBeforeCollapse"?: number; /** @@ -5372,6 +5738,7 @@ declare namespace LocalJSX { interface IonButton { /** * The type of button. + * @default 'button' */ "buttonType"?: string; /** @@ -5380,6 +5747,7 @@ declare namespace LocalJSX { "color"?: Color; /** * If `true`, the user cannot interact with the button. + * @default false */ "disabled"?: boolean; /** @@ -5424,6 +5792,7 @@ declare namespace LocalJSX { "routerAnimation"?: AnimationBuilder | undefined; /** * When using a router, it specifies the transition direction when navigating to another page using `href`. + * @default 'forward' */ "routerDirection"?: RouterDirection; /** @@ -5436,6 +5805,7 @@ declare namespace LocalJSX { "size"?: 'small' | 'default' | 'large'; /** * If `true`, activates a button with a heavier font weight. + * @default false */ "strong"?: boolean; /** @@ -5444,18 +5814,21 @@ declare namespace LocalJSX { "target"?: string | undefined; /** * The type of the button. + * @default 'button' */ "type"?: 'submit' | 'reset' | 'button'; } interface IonButtons { /** * If true, buttons will disappear when its parent toolbar has fully collapsed if the toolbar is not the first toolbar. If the toolbar is the first toolbar, the buttons will be hidden and will only be shown once all toolbars have fully collapsed. Only applies in `ios` mode with `collapse` set to `true` on `ion-header`. Typically used for [Collapsible Large Titles](https://ionicframework.com/docs/api/title#collapsible-large-titles) + * @default false */ "collapse"?: boolean; } interface IonCard { /** * If `true`, a button tag will be rendered and the card will be tappable. + * @default false */ "button"?: boolean; /** @@ -5464,6 +5837,7 @@ declare namespace LocalJSX { "color"?: Color; /** * If `true`, the user cannot interact with the card. + * @default false */ "disabled"?: boolean; /** @@ -5488,6 +5862,7 @@ declare namespace LocalJSX { "routerAnimation"?: AnimationBuilder | undefined; /** * When using a router, it specifies the transition direction when navigating to another page using `href`. + * @default 'forward' */ "routerDirection"?: RouterDirection; /** @@ -5496,6 +5871,7 @@ declare namespace LocalJSX { "target"?: string | undefined; /** * The type of the button. Only used when an `onclick` or `button` property is present. + * @default 'button' */ "type"?: 'submit' | 'reset' | 'button'; } @@ -5516,6 +5892,7 @@ declare namespace LocalJSX { "mode"?: "ios" | "md"; /** * If `true`, the card header will be translucent. Only applies when the mode is `"ios"` and the device supports [`backdrop-filter`](https://developer.mozilla.org/en-US/docs/Web/CSS/backdrop-filter#Browser_compatibility). + * @default false */ "translucent"?: boolean; } @@ -5546,6 +5923,7 @@ declare namespace LocalJSX { "alignment"?: 'start' | 'center'; /** * If `true`, the checkbox is selected. + * @default false */ "checked"?: boolean; /** @@ -5554,6 +5932,7 @@ declare namespace LocalJSX { "color"?: Color; /** * If `true`, the user cannot interact with the checkbox. + * @default false */ "disabled"?: boolean; /** @@ -5566,6 +5945,7 @@ declare namespace LocalJSX { "helperText"?: string; /** * If `true`, the checkbox will visually appear as indeterminate. + * @default false */ "indeterminate"?: boolean; /** @@ -5574,6 +5954,7 @@ declare namespace LocalJSX { "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. + * @default 'start' */ "labelPlacement"?: 'start' | 'end' | 'fixed' | 'stacked'; /** @@ -5582,6 +5963,7 @@ declare namespace LocalJSX { "mode"?: "ios" | "md"; /** * The name of the control, which is submitted with the form data. + * @default this.inputId */ "name"?: string; /** @@ -5598,10 +5980,12 @@ declare namespace LocalJSX { "onIonFocus"?: (event: IonCheckboxCustomEvent) => void; /** * If true, screen readers will announce it as a required field. This property works only for accessibility purposes, it will not prevent the form from submitting if the value is invalid. + * @default false */ "required"?: boolean; /** * The value of the checkbox does not mean if it's checked or not, use the `checked` property for that. The value of a checkbox is analogous to the value of an ``, it's only used when the checkbox participates in a native ``. + * @default 'on' */ "value"?: any | null; } @@ -5612,6 +5996,7 @@ declare namespace LocalJSX { "color"?: Color; /** * If `true`, the user cannot interact with the chip. + * @default false */ "disabled"?: boolean; /** @@ -5620,6 +6005,7 @@ declare namespace LocalJSX { "mode"?: "ios" | "md"; /** * Display an outline style button. + * @default false */ "outline"?: boolean; } @@ -5728,6 +6114,7 @@ declare namespace LocalJSX { "color"?: Color; /** * Controls where the fixed content is placed relative to the main content in the DOM. This can be used to control the order in which fixed elements receive keyboard focus. For example, if a FAB in the fixed slot should receive keyboard focus before the main page content, set this property to `'before'`. + * @default 'after' */ "fixedSlotPlacement"?: 'after' | 'before'; /** @@ -5736,6 +6123,7 @@ declare namespace LocalJSX { "forceOverscroll"?: boolean; /** * If `true`, the content will scroll behind the headers and footers. This effect can easily be seen by setting the toolbar to transparent. + * @default false */ "fullscreen"?: boolean; /** @@ -5752,28 +6140,34 @@ declare namespace LocalJSX { "onIonScrollStart"?: (event: IonContentCustomEvent) => void; /** * Because of performance reasons, ionScroll events are disabled by default, in order to enable them and start listening from (ionScroll), set this property to `true`. + * @default false */ "scrollEvents"?: boolean; /** * If you want to enable the content scrolling in the X axis, set this property to `true`. + * @default false */ "scrollX"?: boolean; /** * If you want to disable the content scrolling in the Y axis, set this property to `false`. + * @default true */ "scrollY"?: boolean; } interface IonDatetime { /** * The text to display on the picker's cancel button. + * @default 'Cancel' */ "cancelText"?: string; /** * The text to display on the picker's "Clear" button. + * @default 'Clear' */ "clearText"?: string; /** * The color to use from your application's color palette. Default options are: `"primary"`, `"secondary"`, `"tertiary"`, `"success"`, `"warning"`, `"danger"`, `"light"`, `"medium"`, and `"dark"`. For more information on colors, see [theming](/docs/theming/basics). + * @default 'primary' */ "color"?: Color; /** @@ -5782,14 +6176,17 @@ declare namespace LocalJSX { "dayValues"?: number[] | number | string; /** * If `true`, the user cannot interact with the datetime. + * @default false */ "disabled"?: boolean; /** * The text to display on the picker's "Done" button. + * @default 'Done' */ "doneText"?: string; /** * The first day of the week to use for `ion-datetime`. The default value is `0` and represents Sunday. + * @default 0 */ "firstDayOfWeek"?: number; /** @@ -5814,6 +6211,7 @@ declare namespace LocalJSX { "isDateEnabled"?: (dateIsoString: string) => boolean; /** * The locale to use for `ion-datetime`. This impacts month and day name formatting. The `"default"` value refers to the default locale set by your device. + * @default 'default' */ "locale"?: string; /** @@ -5838,10 +6236,12 @@ declare namespace LocalJSX { "monthValues"?: number[] | number | string; /** * If `true`, multiple dates can be selected at once. Only applies to `presentation="date"` and `preferWheel="false"`. + * @default false */ "multiple"?: boolean; /** * The name of the control, which is submitted with the form data. + * @default this.inputId */ "name"?: string; /** @@ -5874,38 +6274,47 @@ declare namespace LocalJSX { "onIonValueChange"?: (event: IonDatetimeCustomEvent) => void; /** * If `true`, a wheel picker will be rendered instead of a calendar grid where possible. If `false`, a calendar grid will be rendered instead of a wheel picker where possible. A wheel picker can be rendered instead of a grid when `presentation` is one of the following values: `"date"`, `"date-time"`, or `"time-date"`. A wheel picker will always be rendered regardless of the `preferWheel` value when `presentation` is one of the following values: `"time"`, `"month"`, `"month-year"`, or `"year"`. + * @default false */ "preferWheel"?: boolean; /** * Which values you want to select. `"date"` will show a calendar picker to select the month, day, and year. `"time"` will show a time picker to select the hour, minute, and (optionally) AM/PM. `"date-time"` will show the date picker first and time picker second. `"time-date"` will show the time picker first and date picker second. + * @default 'date-time' */ "presentation"?: DatetimePresentation; /** * If `true`, the datetime appears normal but the selected date cannot be changed. + * @default false */ "readonly"?: boolean; /** * If `true`, the datetime calendar displays a six-week (42-day) layout, including days from the previous and next months to fill the grid. These adjacent days are selectable unless disabled. + * @default false */ "showAdjacentDays"?: boolean; /** * If `true`, a "Clear" button will be rendered alongside the default "Cancel" and "OK" buttons at the bottom of the `ion-datetime` component. Developers can also use the `button` slot if they want to customize these buttons. If custom buttons are set in the `button` slot then the default buttons will not be rendered. + * @default false */ "showClearButton"?: boolean; /** * If `true`, the default "Cancel" and "OK" buttons will be rendered at the bottom of the `ion-datetime` component. Developers can also use the `button` slot if they want to customize these buttons. If custom buttons are set in the `button` slot then the default buttons will not be rendered. + * @default false */ "showDefaultButtons"?: boolean; /** * If `true`, the default "Time" label will be rendered for the time selector of the `ion-datetime` component. Developers can also use the `time-label` slot if they want to customize this label. If a custom label is set in the `time-label` slot then the default label will not be rendered. + * @default true */ "showDefaultTimeLabel"?: boolean; /** * If `true`, a header will be shown above the calendar picker. This will include both the slotted title, and the selected date. + * @default false */ "showDefaultTitle"?: boolean; /** * If `cover`, the `ion-datetime` will expand to cover the full width of its container. If `fixed`, the `ion-datetime` will have a fixed width. + * @default 'fixed' */ "size"?: 'cover' | 'fixed'; /** @@ -5924,6 +6333,7 @@ declare namespace LocalJSX { interface IonDatetimeButton { /** * The color to use from your application's color palette. Default options are: `"primary"`, `"secondary"`, `"tertiary"`, `"success"`, `"warning"`, `"danger"`, `"light"`, `"medium"`, and `"dark"`. For more information on colors, see [theming](/docs/theming/basics). + * @default 'primary' */ "color"?: Color; /** @@ -5932,6 +6342,7 @@ declare namespace LocalJSX { "datetime"?: string; /** * If `true`, the user cannot interact with the button. + * @default false */ "disabled"?: boolean; /** @@ -5942,10 +6353,12 @@ declare namespace LocalJSX { interface IonFab { /** * If `true`, both the `ion-fab-button` and all `ion-fab-list` inside `ion-fab` will become active. That means `ion-fab-button` will become a `close` icon and `ion-fab-list` will become visible. + * @default false */ "activated"?: boolean; /** * If `true`, the fab will display on the edge of the header if `vertical` is `"top"`, and on the edge of the footer if it is `"bottom"`. Should be used with a `fixed` slot. + * @default false */ "edge"?: boolean; /** @@ -5960,10 +6373,12 @@ declare namespace LocalJSX { interface IonFabButton { /** * If `true`, the fab button will be show a close icon. + * @default false */ "activated"?: boolean; /** * The icon name to use for the close icon. This will appear when the fab button is pressed. Only applies if it is the main button inside of a fab containing a fab list. + * @default close */ "closeIcon"?: string; /** @@ -5972,6 +6387,7 @@ declare namespace LocalJSX { "color"?: Color; /** * If `true`, the user cannot interact with the fab button. + * @default false */ "disabled"?: boolean; /** @@ -6004,10 +6420,12 @@ declare namespace LocalJSX { "routerAnimation"?: AnimationBuilder | undefined; /** * When using a router, it specifies the transition direction when navigating to another page using `href`. + * @default 'forward' */ "routerDirection"?: RouterDirection; /** * If `true`, the fab button will show when in a fab-list. + * @default false */ "show"?: boolean; /** @@ -6020,20 +6438,24 @@ declare namespace LocalJSX { "target"?: string | undefined; /** * If `true`, the fab button will be translucent. Only applies when the mode is `"ios"` and the device supports [`backdrop-filter`](https://developer.mozilla.org/en-US/docs/Web/CSS/backdrop-filter#Browser_compatibility). + * @default false */ "translucent"?: boolean; /** * The type of the button. + * @default 'button' */ "type"?: 'submit' | 'reset' | 'button'; } interface IonFabList { /** * If `true`, the fab list will show all fab buttons in the list. + * @default false */ "activated"?: boolean; /** * The side the fab list will show on relative to the main fab button. + * @default 'bottom' */ "side"?: 'start' | 'end' | 'top' | 'bottom'; } @@ -6048,12 +6470,14 @@ declare namespace LocalJSX { "mode"?: "ios" | "md"; /** * If `true`, the footer will be translucent. Only applies when the mode is `"ios"` and the device supports [`backdrop-filter`](https://developer.mozilla.org/en-US/docs/Web/CSS/backdrop-filter#Browser_compatibility). Note: In order to scroll content behind the footer, the `fullscreen` attribute needs to be set on the content. + * @default false */ "translucent"?: boolean; } interface IonGrid { /** * If `true`, the grid will have a fixed width based on the screen size. + * @default false */ "fixed"?: boolean; } @@ -6068,6 +6492,7 @@ declare namespace LocalJSX { "mode"?: "ios" | "md"; /** * If `true`, the header will be translucent. Only applies when the mode is `"ios"` and the device supports [`backdrop-filter`](https://developer.mozilla.org/en-US/docs/Web/CSS/backdrop-filter#Browser_compatibility). Note: In order to scroll content behind the header, the `fullscreen` attribute needs to be set on the content. + * @default false */ "translucent"?: boolean; } @@ -6096,6 +6521,7 @@ declare namespace LocalJSX { interface IonInfiniteScroll { /** * If `true`, the infinite scroll will be hidden and scroll event listeners will be removed. Set this to true to disable the infinite scroll from actively trying to receive new data while scrolling. This is useful when it is known that there is no more data that can be added, and the infinite scroll is no longer needed. + * @default false */ "disabled"?: boolean; /** @@ -6104,10 +6530,12 @@ declare namespace LocalJSX { "onIonInfinite"?: (event: IonInfiniteScrollCustomEvent) => void; /** * The position of the infinite scroll element. The value can be either `top` or `bottom`. + * @default 'bottom' */ "position"?: 'top' | 'bottom'; /** * The threshold distance from the bottom of the content to call the `infinite` output event when scrolled. The threshold value can be either a percent, or in pixels. For example, use the value of `10%` for the `infinite` output event to get called when the user has scrolled 10% from the bottom of the page. Use the value `100px` when the scroll is within 100 pixels from the bottom of the page. + * @default '15%' */ "threshold"?: string; } @@ -6124,22 +6552,27 @@ declare namespace LocalJSX { interface IonInput { /** * Indicates whether and how the text value should be automatically capitalized as it is entered/edited by the user. Available options: `"off"`, `"none"`, `"on"`, `"sentences"`, `"words"`, `"characters"`. + * @default 'off' */ "autocapitalize"?: string; /** * Indicates whether the value of the control can be automatically completed by the browser. + * @default 'off' */ "autocomplete"?: AutocompleteTypes; /** * Whether auto correction should be enabled when the user is entering/editing the text value. + * @default 'off' */ "autocorrect"?: 'on' | 'off'; /** * Sets the [`autofocus` attribute](https://developer.mozilla.org/en-US/docs/Web/HTML/Global_attributes/autofocus) on the native input element. This may not be sufficient for the element to be focused on page load. See [managing focus](/docs/developing/managing-focus) for more information. + * @default false */ "autofocus"?: boolean; /** * If `true`, a clear icon will appear in the input when there is a value. Clicking it clears the input. + * @default false */ "clearInput"?: boolean; /** @@ -6156,6 +6589,7 @@ declare namespace LocalJSX { "color"?: Color; /** * If `true`, a character counter will display the ratio of characters used and the total character limit. Developers must also set the `maxlength` property for the counter to be calculated correctly. + * @default false */ "counter"?: boolean; /** @@ -6168,6 +6602,7 @@ declare namespace LocalJSX { "debounce"?: number; /** * If `true`, the user cannot interact with the input. + * @default false */ "disabled"?: boolean; /** @@ -6196,6 +6631,7 @@ declare namespace LocalJSX { "label"?: string; /** * Where to place the label relative to the input. `"start"`: The label will appear to the left of the input in LTR and to the right in RTL. `"end"`: The label will appear to the right of the input in LTR and to the left in RTL. `"floating"`: The label will appear smaller and above the input when the input is focused or it has a value. Otherwise it will appear on top of the input. `"stacked"`: The label will appear smaller and above the input regardless even when the input is blurred or has no value. `"fixed"`: The label has the same behavior as `"start"` except it also has a fixed width. Long text will be truncated with ellipses ("..."). + * @default 'start' */ "labelPlacement"?: 'start' | 'end' | 'floating' | 'stacked' | 'fixed'; /** @@ -6224,6 +6660,7 @@ declare namespace LocalJSX { "multiple"?: boolean; /** * The name of the control, which is submitted with the form data. + * @default this.inputId */ "name"?: string; /** @@ -6252,10 +6689,12 @@ declare namespace LocalJSX { "placeholder"?: string; /** * If `true`, the user cannot modify the value. + * @default false */ "readonly"?: boolean; /** * If `true`, the user must fill in a value before submitting a form. + * @default false */ "required"?: boolean; /** @@ -6264,6 +6703,7 @@ declare namespace LocalJSX { "shape"?: 'round'; /** * If `true`, the element will have its spelling and grammar checked. + * @default false */ "spellcheck"?: boolean; /** @@ -6272,16 +6712,19 @@ declare namespace LocalJSX { "step"?: string; /** * The type of control to display. The default type is text. + * @default 'text' */ "type"?: TextFieldTypes; /** * The value of the input. + * @default '' */ "value"?: string | number | null; } interface IonInputOtp { /** * Indicates whether and how the text value should be automatically capitalized as it is entered/edited by the user. Available options: `"off"`, `"none"`, `"on"`, `"sentences"`, `"words"`, `"characters"`. + * @default 'off' */ "autocapitalize"?: string; /** @@ -6290,10 +6733,12 @@ declare namespace LocalJSX { "color"?: Color; /** * If `true`, the user cannot interact with the input. + * @default false */ "disabled"?: boolean; /** * The fill for the input boxes. If `"solid"` the input boxes will have a background. If `"outline"` the input boxes will be transparent with a border. + * @default 'outline' */ "fill"?: 'outline' | 'solid'; /** @@ -6302,6 +6747,7 @@ declare namespace LocalJSX { "inputmode"?: 'none' | 'text' | 'tel' | 'url' | 'email' | 'numeric' | 'decimal' | 'search'; /** * The number of input boxes to display. + * @default 4 */ "length"?: number; /** @@ -6330,6 +6776,7 @@ declare namespace LocalJSX { "pattern"?: string; /** * If `true`, the user cannot modify the value. + * @default false */ "readonly"?: boolean; /** @@ -6338,18 +6785,22 @@ declare namespace LocalJSX { "separators"?: 'all' | string | number[]; /** * The shape of the input boxes. If "round" they will have an increased border radius. If "rectangular" they will have no border radius. If "soft" they will have a soft border radius. + * @default 'round' */ "shape"?: 'round' | 'rectangular' | 'soft'; /** * The size of the input boxes. + * @default 'medium' */ "size"?: 'small' | 'medium' | 'large'; /** * The type of input allowed in the input boxes. + * @default 'number' */ "type"?: 'text' | 'number'; /** * The value of the input group. + * @default '' */ "value"?: string | number | null; } @@ -6370,11 +6821,15 @@ declare namespace LocalJSX { * The icon that can be used to represent showing a password. If not set, the "eye" Ionicon will be used. */ "showIcon"?: string; + /** + * @default 'password' + */ "type"?: TextFieldTypes; } interface IonItem { /** * If `true`, a button tag will be rendered and the item will be tappable. + * @default false */ "button"?: boolean; /** @@ -6387,10 +6842,12 @@ declare namespace LocalJSX { "detail"?: boolean; /** * The icon to use when `detail` is set to `true`. + * @default chevronForward */ "detailIcon"?: string; /** * If `true`, the user cannot interact with the item. + * @default false */ "disabled"?: boolean; /** @@ -6419,6 +6876,7 @@ declare namespace LocalJSX { "routerAnimation"?: AnimationBuilder | undefined; /** * When using a router, it specifies the transition direction when navigating to another page using `href`. + * @default 'forward' */ "routerDirection"?: RouterDirection; /** @@ -6427,6 +6885,7 @@ declare namespace LocalJSX { "target"?: string | undefined; /** * The type of the button. Only used when an `onclick` or `button` property is present. + * @default 'button' */ "type"?: 'submit' | 'reset' | 'button'; } @@ -6441,6 +6900,7 @@ declare namespace LocalJSX { "mode"?: "ios" | "md"; /** * When it's set to `true`, the item-divider will stay visible when it reaches the top of the viewport until the next `ion-item-divider` replaces it. This feature relies in `position:sticky`: https://caniuse.com/#feat=css-sticky + * @default false */ "sticky"?: boolean; } @@ -6453,6 +6913,7 @@ declare namespace LocalJSX { "color"?: Color; /** * If `true`, the user cannot interact with the item option. + * @default false */ "disabled"?: boolean; /** @@ -6461,6 +6922,7 @@ declare namespace LocalJSX { "download"?: string | undefined; /** * If `true`, the option will expand to take up the available width and cover any other options. + * @default false */ "expandable"?: boolean; /** @@ -6481,6 +6943,7 @@ declare namespace LocalJSX { "target"?: string | undefined; /** * The type of the button. + * @default 'button' */ "type"?: 'submit' | 'reset' | 'button'; } @@ -6491,12 +6954,14 @@ declare namespace LocalJSX { "onIonSwipe"?: (event: IonItemOptionsCustomEvent) => void; /** * The side the option button should be on. Possible values: `"start"` and `"end"`. If you have multiple `ion-item-options`, a side must be provided for each. + * @default 'end' */ "side"?: Side; } interface IonItemSliding { /** * If `true`, the user cannot interact with the sliding item. + * @default false */ "disabled"?: boolean; /** @@ -6529,6 +6994,7 @@ declare namespace LocalJSX { interface IonList { /** * If `true`, the list will have margin around it and rounded corners. + * @default false */ "inset"?: boolean; /** @@ -6557,10 +7023,12 @@ declare namespace LocalJSX { interface IonLoading { /** * If `true`, the loading indicator will animate. + * @default true */ "animated"?: boolean; /** * If `true`, the loading indicator will be dismissed when the backdrop is clicked. + * @default false */ "backdropDismiss"?: boolean; /** @@ -6570,12 +7038,16 @@ declare namespace LocalJSX { "delegate"?: FrameworkDelegate; /** * Number of milliseconds to wait before dismissing the loading indicator. + * @default 0 */ "duration"?: number; /** * Animation to use when the loading indicator is presented. */ "enterAnimation"?: AnimationBuilder; + /** + * @default false + */ "hasController"?: boolean; /** * Additional attributes to pass to the loader. @@ -6583,10 +7055,12 @@ declare namespace LocalJSX { "htmlAttributes"?: { [key: string]: any }; /** * If `true`, the loading indicator will open. If `false`, the loading indicator will close. Use this if you need finer grained control over presentation, otherwise just use the loadingController or the `trigger` property. Note: `isOpen` will not automatically be set back to `false` when the loading indicator dismisses. You will need to do that in your code. + * @default false */ "isOpen"?: boolean; /** * If `true`, the keyboard will be automatically dismissed when the overlay is presented. + * @default true */ "keyboardClose"?: boolean; /** @@ -6636,6 +7110,7 @@ declare namespace LocalJSX { "overlayIndex": number; /** * If `true`, a backdrop will be displayed behind the loading indicator. + * @default true */ "showBackdrop"?: boolean; /** @@ -6644,6 +7119,7 @@ declare namespace LocalJSX { "spinner"?: SpinnerTypes | null; /** * If `true`, the loading indicator will be translucent. Only applies when the mode is `"ios"` and the device supports [`backdrop-filter`](https://developer.mozilla.org/en-US/docs/Web/CSS/backdrop-filter#Browser_compatibility). + * @default false */ "translucent"?: boolean; /** @@ -6658,10 +7134,12 @@ declare namespace LocalJSX { "contentId"?: string; /** * If `true`, the menu is disabled. + * @default false */ "disabled"?: boolean; /** * The edge threshold for dragging the menu open. If a drag/swipe happens over this value, the menu is not triggered. + * @default 50 */ "maxEdgeStart"?: number; /** @@ -6690,10 +7168,12 @@ declare namespace LocalJSX { "onIonWillOpen"?: (event: IonMenuCustomEvent) => void; /** * Which side of the view the menu should be placed. + * @default 'start' */ "side"?: Side; /** * If `true`, swiping the menu is enabled. + * @default true */ "swipeGesture"?: boolean; /** @@ -6704,6 +7184,7 @@ declare namespace LocalJSX { interface IonMenuButton { /** * Automatically hides the menu button when the corresponding menu is not active + * @default true */ "autoHide"?: boolean; /** @@ -6712,6 +7193,7 @@ declare namespace LocalJSX { "color"?: Color; /** * If `true`, the user cannot interact with the menu button. + * @default false */ "disabled"?: boolean; /** @@ -6724,12 +7206,14 @@ declare namespace LocalJSX { "mode"?: "ios" | "md"; /** * The type of the button. + * @default 'button' */ "type"?: 'submit' | 'reset' | 'button'; } interface IonMenuToggle { /** * Automatically hides the content when the corresponding menu is not active. By default, it's `true`. Change it to `false` in order to keep `ion-menu-toggle` always visible regardless the state of the menu. + * @default true */ "autoHide"?: boolean; /** @@ -6740,14 +7224,17 @@ declare namespace LocalJSX { interface IonModal { /** * If `true`, the modal will animate. + * @default true */ "animated"?: boolean; /** * A decimal value between 0 and 1 that indicates the point after which the backdrop will begin to fade in when using a sheet modal. Prior to this point, the backdrop will be hidden and the content underneath the sheet can be interacted with. This value is exclusive meaning the backdrop will become active after the value specified. + * @default 0 */ "backdropBreakpoint"?: number; /** * If `true`, the modal will be dismissed when the backdrop is clicked. + * @default true */ "backdropDismiss"?: boolean; /** @@ -6756,6 +7243,7 @@ declare namespace LocalJSX { "breakpoints"?: number[]; /** * Determines whether or not a modal can dismiss when calling the `dismiss` method. If the value is `true` or the value's function returns `true`, the modal will close when trying to dismiss. If the value is `false` or the value's function returns `false`, the modal will not close when trying to dismiss. See https://ionicframework.com/docs/troubleshooting/runtime#accessing-this if you need to access `this` from within the callback. + * @default true */ "canDismiss"?: boolean | ((data?: any, role?: string) => Promise); /** @@ -6777,10 +7265,12 @@ declare namespace LocalJSX { "enterAnimation"?: AnimationBuilder; /** * Controls whether scrolling or dragging within the sheet modal expands it to a larger breakpoint. This only takes effect when `breakpoints` and `initialBreakpoint` are set. If `true`, scrolling or dragging anywhere in the modal will first expand it to the next breakpoint. Once fully expanded, scrolling will affect the content. If `false`, scrolling will always affect the content. The modal will only expand when dragging the header or handle. The modal will close when dragging the header or handle. It can also be closed when dragging the content, but only if the content is scrolled to the top. + * @default true */ "expandToScroll"?: boolean; /** * If `true`, focus will not be allowed to move outside of this overlay. If `false`, focus will be allowed to move outside of the overlay. In most scenarios this property should remain set to `true`. Setting this property to `false` can cause severe accessibility issues as users relying on assistive technologies may be able to move focus into a confusing state. We recommend only setting this to `false` when absolutely necessary. Developers may want to consider disabling focus trapping if this overlay presents a non-Ionic overlay from a 3rd party library. Developers would disable focus trapping on the Ionic overlay when presenting the 3rd party overlay and then re-enable focus trapping when dismissing the 3rd party overlay and moving focus back to the Ionic overlay. + * @default true */ "focusTrap"?: boolean; /** @@ -6789,8 +7279,12 @@ declare namespace LocalJSX { "handle"?: boolean; /** * The interaction behavior for the sheet modal when the handle is pressed. Defaults to `"none"`, which means the modal will not change size or position when the handle is pressed. Set to `"cycle"` to let the modal cycle between available breakpoints when pressed. Handle behavior is unavailable when the `handle` property is set to `false` or when the `breakpoints` property is not set (using a fullscreen or card modal). + * @default 'none' */ "handleBehavior"?: ModalHandleBehavior; + /** + * @default false + */ "hasController"?: boolean; /** * Additional attributes to pass to the modal. @@ -6802,14 +7296,17 @@ declare namespace LocalJSX { "initialBreakpoint"?: number; /** * If `true`, the modal will open. If `false`, the modal will close. Use this if you need finer grained control over presentation, otherwise just use the modalController or the `trigger` property. Note: `isOpen` will not automatically be set back to `false` when the modal dismisses. You will need to do that in your code. + * @default false */ "isOpen"?: boolean; /** * If `true`, the component passed into `ion-modal` will automatically be mounted when the modal is created. The component will remain mounted even when the modal is dismissed. However, the component will be destroyed when the modal is destroyed. This property is not reactive and should only be used when initially creating a modal. Note: This feature only applies to inline modals in JavaScript frameworks such as Angular, React, and Vue. + * @default false */ "keepContentsMounted"?: boolean; /** * If `true`, the keyboard will be automatically dismissed when the overlay is presented. + * @default true */ "keyboardClose"?: boolean; /** @@ -6867,6 +7364,7 @@ declare namespace LocalJSX { "presentingElement"?: HTMLElement; /** * If `true`, a backdrop will be displayed behind the modal. This property controls whether or not the backdrop darkens the screen when the modal is presented. It does not control whether or not the backdrop is active or present in the DOM. + * @default true */ "showBackdrop"?: boolean; /** @@ -6877,6 +7375,7 @@ declare namespace LocalJSX { interface IonNav { /** * If `true`, the nav should animate the transition of components. + * @default true */ "animated"?: boolean; /** @@ -6924,6 +7423,7 @@ declare namespace LocalJSX { "routerAnimation"?: AnimationBuilder; /** * The transition direction when navigating to another page. + * @default 'forward' */ "routerDirection"?: RouterDirection; } @@ -6947,10 +7447,12 @@ declare namespace LocalJSX { interface IonPickerColumn { /** * The color to use from your application's color palette. Default options are: `"primary"`, `"secondary"`, `"tertiary"`, `"success"`, `"warning"`, `"danger"`, `"light"`, `"medium"`, and `"dark"`. For more information on colors, see [theming](/docs/theming/basics). + * @default 'primary' */ "color"?: Color; /** * If `true`, the user cannot interact with the picker. + * @default false */ "disabled"?: boolean; /** @@ -6959,6 +7461,7 @@ declare namespace LocalJSX { "mode"?: "ios" | "md"; /** * If `true`, tapping the picker will reveal a number input keyboard that lets the user type in values for each picker column. This is useful when working with time pickers. + * @default false */ "numericInput"?: boolean; /** @@ -6973,10 +7476,12 @@ declare namespace LocalJSX { interface IonPickerColumnOption { /** * The color to use from your application's color palette. Default options are: `"primary"`, `"secondary"`, `"tertiary"`, `"success"`, `"warning"`, `"danger"`, `"light"`, `"medium"`, and `"dark"`. For more information on colors, see [theming](/docs/theming/basics). + * @default 'primary' */ "color"?: Color; /** * If `true`, the user cannot interact with the picker column option. + * @default false */ "disabled"?: boolean; /** @@ -6987,18 +7492,22 @@ declare namespace LocalJSX { interface IonPickerLegacy { /** * If `true`, the picker will animate. + * @default true */ "animated"?: boolean; /** * If `true`, the picker will be dismissed when the backdrop is clicked. + * @default true */ "backdropDismiss"?: boolean; /** * Array of buttons to be displayed at the top of the picker. + * @default [] */ "buttons"?: PickerButton[]; /** * Array of columns to be displayed in the picker. + * @default [] */ "columns"?: PickerColumn[]; /** @@ -7008,12 +7517,16 @@ declare namespace LocalJSX { "delegate"?: FrameworkDelegate; /** * Number of milliseconds to wait before dismissing the picker. + * @default 0 */ "duration"?: number; /** * Animation to use when the picker is presented. */ "enterAnimation"?: AnimationBuilder; + /** + * @default false + */ "hasController"?: boolean; /** * Additional attributes to pass to the picker. @@ -7021,10 +7534,12 @@ declare namespace LocalJSX { "htmlAttributes"?: { [key: string]: any }; /** * If `true`, the picker will open. If `false`, the picker will close. Use this if you need finer grained control over presentation, otherwise just use the pickerController or the `trigger` property. Note: `isOpen` will not automatically be set back to `false` when the picker dismisses. You will need to do that in your code. + * @default false */ "isOpen"?: boolean; /** * If `true`, the keyboard will be automatically dismissed when the overlay is presented. + * @default true */ "keyboardClose"?: boolean; /** @@ -7070,6 +7585,7 @@ declare namespace LocalJSX { "overlayIndex": number; /** * If `true`, a backdrop will be displayed behind the picker. + * @default true */ "showBackdrop"?: boolean; /** @@ -7094,14 +7610,17 @@ declare namespace LocalJSX { "alignment"?: PositionAlign; /** * If `true`, the popover will animate. + * @default true */ "animated"?: boolean; /** * If `true`, the popover will display an arrow that points at the `reference` when running in `ios` mode. Does not apply in `md` mode. + * @default true */ "arrow"?: boolean; /** * If `true`, the popover will be dismissed when the backdrop is clicked. + * @default true */ "backdropDismiss"?: boolean; /** @@ -7119,6 +7638,7 @@ declare namespace LocalJSX { "delegate"?: FrameworkDelegate; /** * If `true`, the popover will be automatically dismissed when the content has been clicked. + * @default false */ "dismissOnSelect"?: boolean; /** @@ -7131,8 +7651,12 @@ declare namespace LocalJSX { "event"?: any; /** * If `true`, focus will not be allowed to move outside of this overlay. If `false`, focus will be allowed to move outside of the overlay. In most scenarios this property should remain set to `true`. Setting this property to `false` can cause severe accessibility issues as users relying on assistive technologies may be able to move focus into a confusing state. We recommend only setting this to `false` when absolutely necessary. Developers may want to consider disabling focus trapping if this overlay presents a non-Ionic overlay from a 3rd party library. Developers would disable focus trapping on the Ionic overlay when presenting the 3rd party overlay and then re-enable focus trapping when dismissing the 3rd party overlay and moving focus back to the Ionic overlay. + * @default true */ "focusTrap"?: boolean; + /** + * @default false + */ "hasController"?: boolean; /** * Additional attributes to pass to the popover. @@ -7140,16 +7664,22 @@ declare namespace LocalJSX { "htmlAttributes"?: { [key: string]: any }; /** * If `true`, the popover will open. If `false`, the popover will close. Use this if you need finer grained control over presentation, otherwise just use the popoverController or the `trigger` property. Note: `isOpen` will not automatically be set back to `false` when the popover dismisses. You will need to do that in your code. + * @default false */ "isOpen"?: boolean; /** * If `true`, the component passed into `ion-popover` will automatically be mounted when the popover is created. The component will remain mounted even when the popover is dismissed. However, the component will be destroyed when the popover is destroyed. This property is not reactive and should only be used when initially creating a popover. Note: This feature only applies to inline popovers in JavaScript frameworks such as Angular, React, and Vue. + * @default false */ "keepContentsMounted"?: boolean; /** * If `true`, the keyboard will be automatically dismissed when the overlay is presented. + * @default true */ "keyboardClose"?: boolean; + /** + * @default false + */ "keyboardEvents"?: boolean; /** * Animation to use when the popover is dismissed. @@ -7198,22 +7728,27 @@ declare namespace LocalJSX { "overlayIndex": number; /** * Describes what to position the popover relative to. If `"trigger"`, the popover will be positioned relative to the trigger button. If passing in an event, this is determined via event.target. If `"event"`, the popover will be positioned relative to the x/y coordinates of the trigger action. If passing in an event, this is determined via event.clientX and event.clientY. + * @default 'trigger' */ "reference"?: PositionReference; /** * If `true`, a backdrop will be displayed behind the popover. This property controls whether or not the backdrop darkens the screen when the popover is presented. It does not control whether or not the backdrop is active or present in the DOM. + * @default true */ "showBackdrop"?: boolean; /** * Describes which side of the `reference` point to position the popover on. The `"start"` and `"end"` values are RTL-aware, and the `"left"` and `"right"` values are not. + * @default 'bottom' */ "side"?: PositionSide; /** * Describes how to calculate the popover width. If `"cover"`, the popover width will match the width of the trigger. If `"auto"`, the popover width will be set to a static default value. + * @default 'auto' */ "size"?: PopoverSize; /** * If `true`, the popover will be translucent. Only applies when the mode is `"ios"` and the device supports [`backdrop-filter`](https://developer.mozilla.org/en-US/docs/Web/CSS/backdrop-filter#Browser_compatibility). + * @default false */ "translucent"?: boolean; /** @@ -7222,12 +7757,14 @@ declare namespace LocalJSX { "trigger"?: string | undefined; /** * Describes what kind of interaction with the trigger that should cause the popover to open. Does not apply when the `trigger` property is `undefined`. If `"click"`, the popover will be presented when the trigger is left clicked. If `"hover"`, the popover will be presented when a pointer hovers over the trigger. If `"context-menu"`, the popover will be presented when the trigger is right clicked on desktop and long pressed on mobile. This will also prevent your device's normal context menu from appearing. + * @default 'click' */ "triggerAction"?: TriggerAction; } interface IonProgressBar { /** * If the buffer and value are smaller than 1, the buffer circles will show. The buffer should be between [0, 1]. + * @default 1 */ "buffer"?: number; /** @@ -7240,14 +7777,17 @@ declare namespace LocalJSX { "mode"?: "ios" | "md"; /** * If true, reverse the progress bar direction. + * @default false */ "reversed"?: boolean; /** * The state of the progress bar, based on if the time the process takes is known or not. Default options are: `"determinate"` (no animation), `"indeterminate"` (animate from left to right). + * @default 'determinate' */ "type"?: 'determinate' | 'indeterminate'; /** * The value determines how much of the active bar should display when the `type` is `"determinate"`. The value should be between [0, 1]. + * @default 0 */ "value"?: number; } @@ -7262,6 +7802,7 @@ declare namespace LocalJSX { "color"?: Color; /** * If `true`, the user cannot interact with the radio. + * @default false */ "disabled"?: boolean; /** @@ -7270,6 +7811,7 @@ declare namespace LocalJSX { "justify"?: 'start' | 'end' | 'space-between'; /** * Where to place the label relative to the radio. `"start"`: The label will appear to the left of the radio in LTR and to the right in RTL. `"end"`: The label will appear to the right of the radio 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 radio regardless of the direction. The alignment of the label can be controlled with the `alignment` property. + * @default 'start' */ "labelPlacement"?: 'start' | 'end' | 'fixed' | 'stacked'; /** @@ -7278,6 +7820,7 @@ declare namespace LocalJSX { "mode"?: "ios" | "md"; /** * The name of the control, which is submitted with the form data. + * @default this.inputId */ "name"?: string; /** @@ -7296,6 +7839,7 @@ declare namespace LocalJSX { interface IonRadioGroup { /** * If `true`, the radios can be deselected. + * @default false */ "allowEmptySelection"?: boolean; /** @@ -7312,6 +7856,7 @@ declare namespace LocalJSX { "helperText"?: string; /** * The name of the control, which is submitted with the form data. + * @default this.inputId */ "name"?: string; /** @@ -7342,10 +7887,12 @@ declare namespace LocalJSX { "debounce"?: number; /** * If `true`, the user cannot interact with the range. + * @default false */ "disabled"?: boolean; /** * Show two knobs. + * @default false */ "dualKnobs"?: boolean; /** @@ -7354,14 +7901,17 @@ declare namespace LocalJSX { "label"?: string; /** * Where to place the label relative to the range. `"start"`: The label will appear to the left of the range in LTR and to the right in RTL. `"end"`: The label will appear to the right of the range 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 range regardless of the direction. + * @default 'start' */ "labelPlacement"?: 'start' | 'end' | 'fixed' | 'stacked'; /** * Maximum integer value of the range. + * @default 100 */ "max"?: number; /** * Minimum integer value of the range. + * @default 0 */ "min"?: number; /** @@ -7370,6 +7920,7 @@ declare namespace LocalJSX { "mode"?: "ios" | "md"; /** * The name of the control, which is submitted with the form data. + * @default this.rangeId */ "name"?: string; /** @@ -7398,36 +7949,44 @@ declare namespace LocalJSX { "onIonKnobMoveStart"?: (event: IonRangeCustomEvent) => void; /** * If `true`, a pin with integer value is shown when the knob is pressed. + * @default false */ "pin"?: boolean; /** * A callback used to format the pin text. By default the pin text is set to `Math.round(value)`. See https://ionicframework.com/docs/troubleshooting/runtime#accessing-this if you need to access `this` from within the callback. + * @default (value: number): number => Math.round(value) */ "pinFormatter"?: PinFormatter; /** * If `true`, the knob snaps to tick marks evenly spaced based on the step property value. + * @default false */ "snaps"?: boolean; /** * Specifies the value granularity. + * @default 1 */ "step"?: number; /** * If `true`, tick marks are displayed based on the step value. Only applies when `snaps` is `true`. + * @default true */ "ticks"?: boolean; /** * the value of the range. + * @default 0 */ "value"?: RangeValue; } interface IonRefresher { /** * Time it takes to close the refresher. Does not apply when the refresher content uses a spinner, enabling the native refresher. + * @default '280ms' */ "closeDuration"?: string; /** * If `true`, the refresher will be hidden. + * @default false */ "disabled"?: boolean; /** @@ -7448,18 +8007,22 @@ declare namespace LocalJSX { "onIonStart"?: (event: IonRefresherCustomEvent) => void; /** * How much to multiply the pull speed by. To slow the pull animation down, pass a number less than `1`. To speed up the pull, pass a number greater than `1`. The default value is `1` which is equal to the speed of the cursor. If a negative value is passed in, the factor will be `1` instead. For example: If the value passed is `1.2` and the content is dragged by `10` pixels, instead of `10` pixels the content will be pulled by `12` pixels (an increase of 20 percent). If the value passed is `0.8`, the dragged amount will be `8` pixels, less than the amount the cursor has moved. Does not apply when the refresher content uses a spinner, enabling the native refresher. + * @default 1 */ "pullFactor"?: number; /** * The maximum distance of the pull until the refresher will automatically go into the `refreshing` state. Defaults to the result of `pullMin + 60`. Does not apply when the refresher content uses a spinner, enabling the native refresher. + * @default this.pullMin + 60 */ "pullMax"?: number; /** * The minimum distance the user must pull down until the refresher will go into the `refreshing` state. Does not apply when the refresher content uses a spinner, enabling the native refresher. + * @default 60 */ "pullMin"?: number; /** * Time it takes the refresher to snap back to the `refreshing` state. Does not apply when the refresher content uses a spinner, enabling the native refresher. + * @default '280ms' */ "snapbackDuration"?: string; } @@ -7486,6 +8049,7 @@ declare namespace LocalJSX { interface IonReorderGroup { /** * If `true`, the reorder will be hidden. + * @default true */ "disabled"?: boolean; /** @@ -7496,6 +8060,7 @@ declare namespace LocalJSX { interface IonRippleEffect { /** * Sets the type of ripple-effect: - `bounded`: the ripple effect expands from the user's click position - `unbounded`: the ripple effect expands from the center of the button and overflows the container. NOTE: Surfaces for bounded ripples should have the overflow property set to hidden, while surfaces for unbounded ripples should have it set to visible. + * @default 'bounded' */ "type"?: 'bounded' | 'unbounded'; } @@ -7522,6 +8087,7 @@ declare namespace LocalJSX { "onIonRouteDataChanged"?: (event: IonRouteCustomEvent) => void; /** * Relative path that needs to match in order for this route to apply. Accepts paths similar to expressjs so that you can define parameters in the url /foo/:bar where bar would be available in incoming props. + * @default '' */ "url"?: string; } @@ -7550,10 +8116,12 @@ declare namespace LocalJSX { "onIonRouteWillChange"?: (event: IonRouterCustomEvent) => void; /** * The root path to use when matching URLs. By default, this is set to "/", but you can specify an alternate prefix for all URL paths. + * @default '/' */ "root"?: string; /** * The router can work in two "modes": - With hash: `/index.html#/path/to/page` - Without hash: `/path/to/page` Using one or another might depend in the requirements of your app and/or where it's deployed. Usually "hash-less" navigation works better for SEO and it's more user friendly too, but it might requires additional server-side configuration in order to properly work. On the other side hash-navigation is much easier to deploy, it even works over the file protocol. By default, this property is `true`, change to `false` to allow hash-less URLs. + * @default true */ "useHash"?: boolean; } @@ -7576,6 +8144,7 @@ declare namespace LocalJSX { "routerAnimation"?: AnimationBuilder | undefined; /** * When using a router, it specifies the transition direction when navigating to another page using `href`. + * @default 'forward' */ "routerDirection"?: RouterDirection; /** @@ -7586,6 +8155,7 @@ declare namespace LocalJSX { interface IonRouterOutlet { /** * If `true`, the router-outlet should animate the transition of components. + * @default true */ "animated"?: boolean; /** @@ -7595,6 +8165,7 @@ declare namespace LocalJSX { "delegate"?: FrameworkDelegate; /** * The mode determines which platform styles to use. + * @default getIonMode(this) */ "mode"?: "ios" | "md"; "onIonNavDidChange"?: (event: IonRouterOutletCustomEvent) => void; @@ -7607,26 +8178,32 @@ declare namespace LocalJSX { interface IonSearchbar { /** * If `true`, enable searchbar animation. + * @default false */ "animated"?: boolean; /** * Indicates whether and how the text value should be automatically capitalized as it is entered/edited by the user. Available options: `"off"`, `"none"`, `"on"`, `"sentences"`, `"words"`, `"characters"`. + * @default 'off' */ "autocapitalize"?: string; /** * Set the input's autocomplete property. + * @default 'off' */ "autocomplete"?: AutocompleteTypes; /** * Set the input's autocorrect property. + * @default 'off' */ "autocorrect"?: 'on' | 'off'; /** * Set the cancel button icon. Only applies to `md` mode. Defaults to `arrow-back-sharp`. + * @default config.get('backButtonIcon', arrowBackSharp) as string */ "cancelButtonIcon"?: string; /** * Set the cancel button text. Only applies to `ios` mode. + * @default 'Cancel' */ "cancelButtonText"?: string; /** @@ -7643,6 +8220,7 @@ declare namespace LocalJSX { "debounce"?: number; /** * If `true`, the user cannot interact with the input. + * @default false */ "disabled"?: boolean; /** @@ -7667,6 +8245,7 @@ declare namespace LocalJSX { "mode"?: "ios" | "md"; /** * If used in a form, set the name of the control, which is submitted with the form data. + * @default this.inputId */ "name"?: string; /** @@ -7699,6 +8278,7 @@ declare namespace LocalJSX { "onIonStyle"?: (event: IonSearchbarCustomEvent) => void; /** * Set the input's placeholder. `placeholder` can accept either plaintext or HTML as a string. To display characters normally reserved for HTML, they must be escaped. For example `` would become `<Ionic>` For more information: [Security Documentation](https://ionicframework.com/docs/faq/security) + * @default 'Search' */ "placeholder"?: string; /** @@ -7707,22 +8287,27 @@ declare namespace LocalJSX { "searchIcon"?: string; /** * Sets the behavior for the cancel button. Defaults to `"never"`. Setting to `"focus"` shows the cancel button on focus. Setting to `"never"` hides the cancel button. Setting to `"always"` shows the cancel button regardless of focus state. + * @default 'never' */ "showCancelButton"?: 'never' | 'focus' | 'always'; /** * Sets the behavior for the clear button. Defaults to `"focus"`. Setting to `"focus"` shows the clear button on focus if the input is not empty. Setting to `"never"` hides the clear button. Setting to `"always"` shows the clear button regardless of focus state, but only if the input is not empty. + * @default 'always' */ "showClearButton"?: 'never' | 'focus' | 'always'; /** * If `true`, enable spellcheck on the input. + * @default false */ "spellcheck"?: boolean; /** * Set the type of the input. + * @default 'search' */ "type"?: 'text' | 'password' | 'email' | 'number' | 'search' | 'tel' | 'url'; /** * the value of the searchbar. + * @default '' */ "value"?: string | null; } @@ -7733,6 +8318,7 @@ declare namespace LocalJSX { "color"?: Color; /** * If `true`, the user cannot interact with the segment. + * @default false */ "disabled"?: boolean; /** @@ -7753,14 +8339,17 @@ declare namespace LocalJSX { "onIonStyle"?: (event: IonSegmentCustomEvent) => void; /** * If `true`, the segment buttons will overflow and the user can swipe to see them. In addition, this will disable the gesture to drag the indicator between the buttons in order to swipe to see hidden buttons. + * @default false */ "scrollable"?: boolean; /** * If `true`, navigating to an `ion-segment-button` with the keyboard will focus and select the element. If `false`, keyboard navigation will only focus the `ion-segment-button` element. + * @default false */ "selectOnFocus"?: boolean; /** * If `true`, users will be able to swipe between segment buttons to activate them. + * @default true */ "swipeGesture"?: boolean; /** @@ -7775,10 +8364,12 @@ declare namespace LocalJSX { "contentId"?: string; /** * If `true`, the user cannot interact with the segment button. + * @default false */ "disabled"?: boolean; /** * Set the layout of the text and icon in the segment. + * @default 'icon-top' */ "layout"?: SegmentButtonLayout; /** @@ -7787,10 +8378,12 @@ declare namespace LocalJSX { "mode"?: "ios" | "md"; /** * The type of the button. + * @default 'button' */ "type"?: 'submit' | 'reset' | 'button'; /** * The value of the segment button. + * @default 'ion-sb-' + ids++ */ "value"?: SegmentValue; } @@ -7799,6 +8392,7 @@ declare namespace LocalJSX { interface IonSegmentView { /** * If `true`, the segment view cannot be interacted with. + * @default false */ "disabled"?: boolean; /** @@ -7809,6 +8403,7 @@ declare namespace LocalJSX { interface IonSelect { /** * The text to display on the cancel button. + * @default 'Cancel' */ "cancelText"?: string; /** @@ -7821,6 +8416,7 @@ declare namespace LocalJSX { "compareWith"?: string | SelectCompareFn | null; /** * If `true`, the user cannot interact with the select. + * @default false */ "disabled"?: boolean; /** @@ -7841,10 +8437,12 @@ declare namespace LocalJSX { "helperText"?: string; /** * The interface the select should use: `action-sheet`, `popover`, `alert`, or `modal`. + * @default 'alert' */ "interface"?: SelectInterface; /** * Any additional options that the `alert`, `action-sheet` or `popover` interface can take. See the [ion-alert docs](./alert), the [ion-action-sheet docs](./action-sheet), the [ion-popover docs](./popover), and the [ion-modal docs](./modal) for the create options for each interface. Note: `interfaceOptions` will not override `inputs` or `buttons` with the `alert` interface. + * @default {} */ "interfaceOptions"?: any; /** @@ -7857,6 +8455,7 @@ declare namespace LocalJSX { "label"?: string; /** * Where to place the label relative to the select. `"start"`: The label will appear to the left of the select in LTR and to the right in RTL. `"end"`: The label will appear to the right of the select in LTR and to the left in RTL. `"floating"`: The label will appear smaller and above the select when the select is focused or it has a value. Otherwise it will appear on top of the select. `"stacked"`: The label will appear smaller and above the select regardless even when the select is blurred or has no value. `"fixed"`: The label has the same behavior as `"start"` except it also has a fixed width. Long text will be truncated with ellipses ("..."). When using `"floating"` or `"stacked"` we recommend initializing the select with either a `value` or a `placeholder`. + * @default 'start' */ "labelPlacement"?: 'start' | 'end' | 'floating' | 'stacked' | 'fixed'; /** @@ -7865,14 +8464,17 @@ declare namespace LocalJSX { "mode"?: "ios" | "md"; /** * If `true`, the select can accept multiple values. + * @default false */ "multiple"?: boolean; /** * The name of the control, which is submitted with the form data. + * @default this.inputId */ "name"?: string; /** * The text to display on the ok button. + * @default 'OK' */ "okText"?: string; /** @@ -7905,6 +8507,7 @@ declare namespace LocalJSX { "placeholder"?: string; /** * If true, screen readers will announce it as a required field. This property works only for accessibility purposes, it will not prevent the form from submitting if the value is invalid. + * @default false */ "required"?: boolean; /** @@ -7927,11 +8530,15 @@ declare namespace LocalJSX { interface IonSelectModal { "header"?: string; "multiple"?: boolean; + /** + * @default [] + */ "options"?: SelectModalOption[]; } interface IonSelectOption { /** * If `true`, the user cannot interact with the select option. This property does not apply when `interface="action-sheet"` as `ion-action-sheet` does not allow for disabled buttons. + * @default false */ "disabled"?: boolean; /** @@ -7954,6 +8561,7 @@ declare namespace LocalJSX { "multiple"?: boolean; /** * An array of options for the popover + * @default [] */ "options"?: SelectPopoverOption[]; /** @@ -7964,6 +8572,7 @@ declare namespace LocalJSX { interface IonSkeletonText { /** * If `true`, the skeleton text will animate. + * @default false */ "animated"?: boolean; /** @@ -7986,6 +8595,7 @@ declare namespace LocalJSX { "name"?: SpinnerTypes; /** * If `true`, the spinner's animation will be paused. + * @default false */ "paused"?: boolean; } @@ -7996,6 +8606,7 @@ declare namespace LocalJSX { "contentId"?: string; /** * If `true`, the split pane will be hidden. + * @default false */ "disabled"?: boolean; /** @@ -8004,10 +8615,14 @@ declare namespace LocalJSX { "onIonSplitPaneVisible"?: (event: IonSplitPaneCustomEvent<{ visible: boolean }>) => void; /** * When the split-pane should be shown. Can be a CSS media query expression, or a shortcut expression. Can also be a boolean expression. + * @default QUERY['lg'] */ "when"?: string | boolean; } interface IonTab { + /** + * @default false + */ "active"?: boolean; /** * The component to display inside of the tab. @@ -8036,12 +8651,14 @@ declare namespace LocalJSX { "selectedTab"?: string; /** * If `true`, the tab bar will be translucent. Only applies when the mode is `"ios"` and the device supports [`backdrop-filter`](https://developer.mozilla.org/en-US/docs/Web/CSS/backdrop-filter#Browser_compatibility). + * @default false */ "translucent"?: boolean; } interface IonTabButton { /** * If `true`, the user cannot interact with the tab button. + * @default false */ "disabled"?: boolean; /** @@ -8070,6 +8687,7 @@ declare namespace LocalJSX { "rel"?: string | undefined; /** * The selected tab component + * @default false */ "selected"?: boolean; /** @@ -8094,6 +8712,9 @@ declare namespace LocalJSX { * Emitted when the navigation is about to transition to a new component. */ "onIonTabsWillChange"?: (event: IonTabsCustomEvent<{ tab: string }>) => void; + /** + * @default false + */ "useRouter"?: boolean; } interface IonText { @@ -8109,18 +8730,22 @@ declare namespace LocalJSX { interface IonTextarea { /** * If `true`, the textarea container will grow and shrink based on the contents of the textarea. + * @default false */ "autoGrow"?: boolean; /** * Indicates whether and how the text value should be automatically capitalized as it is entered/edited by the user. Available options: `"off"`, `"none"`, `"on"`, `"sentences"`, `"words"`, `"characters"`. + * @default 'none' */ "autocapitalize"?: string; /** * Sets the [`autofocus` attribute](https://developer.mozilla.org/en-US/docs/Web/HTML/Global_attributes/autofocus) on the native input element. This may not be sufficient for the element to be focused on page load. See [managing focus](/docs/developing/managing-focus) for more information. + * @default false */ "autofocus"?: boolean; /** * If `true`, the value will be cleared after focus upon edit. + * @default false */ "clearOnEdit"?: boolean; /** @@ -8133,6 +8758,7 @@ declare namespace LocalJSX { "cols"?: number; /** * If `true`, a character counter will display the ratio of characters used and the total character limit. Developers must also set the `maxlength` property for the counter to be calculated correctly. + * @default false */ "counter"?: boolean; /** @@ -8145,6 +8771,7 @@ declare namespace LocalJSX { "debounce"?: number; /** * If `true`, the user cannot interact with the textarea. + * @default false */ "disabled"?: boolean; /** @@ -8173,6 +8800,7 @@ declare namespace LocalJSX { "label"?: string; /** * Where to place the label relative to the textarea. `"start"`: The label will appear to the left of the textarea in LTR and to the right in RTL. `"end"`: The label will appear to the right of the textarea in LTR and to the left in RTL. `"floating"`: The label will appear smaller and above the textarea when the textarea is focused or it has a value. Otherwise it will appear on top of the textarea. `"stacked"`: The label will appear smaller and above the textarea regardless even when the textarea is blurred or has no value. `"fixed"`: The label has the same behavior as `"start"` except it also has a fixed width. Long text will be truncated with ellipses ("..."). + * @default 'start' */ "labelPlacement"?: 'start' | 'end' | 'floating' | 'stacked' | 'fixed'; /** @@ -8189,6 +8817,7 @@ declare namespace LocalJSX { "mode"?: "ios" | "md"; /** * The name of the control, which is submitted with the form data. + * @default this.inputId */ "name"?: string; /** @@ -8213,10 +8842,12 @@ declare namespace LocalJSX { "placeholder"?: string; /** * If `true`, the user cannot modify the value. + * @default false */ "readonly"?: boolean; /** * If `true`, the user must fill in a value before submitting a form. + * @default false */ "required"?: boolean; /** @@ -8229,10 +8860,12 @@ declare namespace LocalJSX { "shape"?: 'round'; /** * If `true`, the element will have its spelling and grammar checked. + * @default false */ "spellcheck"?: boolean; /** * The value of the textarea. + * @default '' */ "value"?: string | null; /** @@ -8259,6 +8892,7 @@ declare namespace LocalJSX { interface IonToast { /** * If `true`, the toast will animate. + * @default true */ "animated"?: boolean; /** @@ -8276,12 +8910,16 @@ declare namespace LocalJSX { "delegate"?: FrameworkDelegate; /** * How many milliseconds to wait before hiding the toast. By default, it will show until `dismiss()` is called. + * @default config.getNumber('toastDuration', 0) */ "duration"?: number; /** * Animation to use when the toast is presented. */ "enterAnimation"?: AnimationBuilder; + /** + * @default false + */ "hasController"?: boolean; /** * Header to be shown in the toast. @@ -8297,14 +8935,17 @@ declare namespace LocalJSX { "icon"?: string; /** * If `true`, the toast will open. If `false`, the toast will close. Use this if you need finer grained control over presentation, otherwise just use the toastController or the `trigger` property. Note: `isOpen` will not automatically be set back to `false` when the toast dismisses. You will need to do that in your code. + * @default false */ "isOpen"?: boolean; /** * If `true`, the keyboard will be automatically dismissed when the overlay is presented. + * @default false */ "keyboardClose"?: boolean; /** * Defines how the message and buttons are laid out in the toast. 'baseline': The message and the buttons will appear on the same line. Message text may wrap within the message container. 'stacked': The buttons containers and message will stack on top of each other. Use this if you have long text in your buttons. + * @default 'baseline' */ "layout"?: ToastLayout; /** @@ -8354,6 +8995,7 @@ declare namespace LocalJSX { "overlayIndex": number; /** * The starting position of the toast on the screen. Can be tweaked further using the `positionAnchor` property. + * @default 'bottom' */ "position"?: ToastPosition; /** @@ -8366,6 +9008,7 @@ declare namespace LocalJSX { "swipeGesture"?: ToastSwipeGestureDirection; /** * If `true`, the toast will be translucent. Only applies when the mode is `"ios"` and the device supports [`backdrop-filter`](https://developer.mozilla.org/en-US/docs/Web/CSS/backdrop-filter#Browser_compatibility). + * @default false */ "translucent"?: boolean; /** @@ -8380,6 +9023,7 @@ declare namespace LocalJSX { "alignment"?: 'start' | 'center'; /** * If `true`, the toggle is selected. + * @default false */ "checked"?: boolean; /** @@ -8388,10 +9032,12 @@ declare namespace LocalJSX { "color"?: Color; /** * If `true`, the user cannot interact with the toggle. + * @default false */ "disabled"?: boolean; /** * Enables the on/off accessibility switch labels within the toggle. + * @default config.get('toggleOnOffLabels') */ "enableOnOffLabels"?: boolean | undefined; /** @@ -8408,6 +9054,7 @@ declare namespace LocalJSX { "justify"?: 'start' | 'end' | 'space-between'; /** * Where to place the label relative to the input. `"start"`: The label will appear to the left of the toggle in LTR and to the right in RTL. `"end"`: The label will appear to the right of the toggle 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 toggle regardless of the direction. The alignment of the label can be controlled with the `alignment` property. + * @default 'start' */ "labelPlacement"?: 'start' | 'end' | 'fixed' | 'stacked'; /** @@ -8416,6 +9063,7 @@ declare namespace LocalJSX { "mode"?: "ios" | "md"; /** * The name of the control, which is submitted with the form data. + * @default this.inputId */ "name"?: string; /** @@ -8432,10 +9080,12 @@ declare namespace LocalJSX { "onIonFocus"?: (event: IonToggleCustomEvent) => void; /** * If true, screen readers will announce it as a required field. This property works only for accessibility purposes, it will not prevent the form from submitting if the value is invalid. + * @default false */ "required"?: boolean; /** * The value of the toggle does not mean if it's checked or not, use the `checked` property for that. The value of a toggle is analogous to the value of a ``, it's only used when the toggle participates in a native ``. + * @default 'on' */ "value"?: string | null; } diff --git a/core/src/utils/focus-visible.ts b/core/src/utils/focus-visible.ts index 91284109c6e..2dd45846518 100644 --- a/core/src/utils/focus-visible.ts +++ b/core/src/utils/focus-visible.ts @@ -41,7 +41,9 @@ export const startFocusVisible = (rootEl?: HTMLElement): FocusVisibleUtility => if (ev instanceof PointerEvent && ev.pointerType !== '') { hadPointerEvent = true; // Reset after the event loop so only the immediate focusin is suppressed - setTimeout(() => { hadPointerEvent = false; }, 0); + setTimeout(() => { + hadPointerEvent = false; + }, 0); } }; @@ -61,9 +63,9 @@ export const startFocusVisible = (rootEl?: HTMLElement): FocusVisibleUtility => const onFocusin = (ev: Event) => { const target = ev.target as HTMLElement; if (target.classList.contains(ION_FOCUSABLE) && !hadPointerEvent) { - const toFocus = ev.composedPath().filter((el): el is HTMLElement => - el instanceof HTMLElement && el.classList.contains(ION_FOCUSABLE) - ); + const toFocus = ev + .composedPath() + .filter((el): el is HTMLElement => el instanceof HTMLElement && el.classList.contains(ION_FOCUSABLE)); setFocus(toFocus); } }; diff --git a/packages/angular/standalone/src/directives/proxies.ts b/packages/angular/standalone/src/directives/proxies.ts index f5aac37c0fc..c7d111f7bef 100644 --- a/packages/angular/standalone/src/directives/proxies.ts +++ b/packages/angular/standalone/src/directives/proxies.ts @@ -36,7 +36,6 @@ import { defineCustomElement as defineIonHeader } from '@ionic/core/components/i import { defineCustomElement as defineIonImg } from '@ionic/core/components/ion-img.js'; import { defineCustomElement as defineIonInfiniteScroll } from '@ionic/core/components/ion-infinite-scroll.js'; import { defineCustomElement as defineIonInfiniteScrollContent } from '@ionic/core/components/ion-infinite-scroll-content.js'; -import { defineCustomElement as defineIonInputOtp } from '@ionic/core/components/ion-input-otp.js'; import { defineCustomElement as defineIonInputPasswordToggle } from '@ionic/core/components/ion-input-password-toggle.js'; import { defineCustomElement as defineIonItem } from '@ionic/core/components/ion-item.js'; import { defineCustomElement as defineIonItemDivider } from '@ionic/core/components/ion-item-divider.js'; @@ -982,71 +981,6 @@ export class IonInfiniteScrollContent { export declare interface IonInfiniteScrollContent extends Components.IonInfiniteScrollContent {} -@ProxyCmp({ - defineCustomElementFn: defineIonInputOtp, - inputs: ['autocapitalize', 'color', 'disabled', 'fill', 'inputmode', 'length', 'pattern', 'readonly', 'separators', 'shape', 'size', 'type', 'value'], - methods: ['setFocus'] -}) -@Component({ - selector: 'ion-input-otp', - changeDetection: ChangeDetectionStrategy.OnPush, - template: '', - // eslint-disable-next-line @angular-eslint/no-inputs-metadata-property - inputs: ['autocapitalize', 'color', 'disabled', 'fill', 'inputmode', 'length', 'pattern', 'readonly', 'separators', 'shape', 'size', 'type', 'value'], - standalone: true -}) -export class IonInputOtp { - protected el: HTMLIonInputOtpElement; - constructor(c: ChangeDetectorRef, r: ElementRef, protected z: NgZone) { - c.detach(); - this.el = r.nativeElement; - proxyOutputs(this, this.el, ['ionInput', 'ionChange', 'ionComplete', 'ionBlur', 'ionFocus']); - } -} - - -import type { InputOtpInputEventDetail as IIonInputOtpInputOtpInputEventDetail } from '@ionic/core/components'; -import type { InputOtpChangeEventDetail as IIonInputOtpInputOtpChangeEventDetail } from '@ionic/core/components'; -import type { InputOtpCompleteEventDetail as IIonInputOtpInputOtpCompleteEventDetail } from '@ionic/core/components'; - -export declare interface IonInputOtp extends Components.IonInputOtp { - /** - * The `ionInput` event is fired each time the user modifies the input's value. -Unlike the `ionChange` event, the `ionInput` event is fired for each alteration -to the input's value. This typically happens for each keystroke as the user types. - -For elements that accept text input (`type=text`, `type=tel`, etc.), the interface -is [`InputEvent`](https://developer.mozilla.org/en-US/docs/Web/API/InputEvent); for others, -the interface is [`Event`](https://developer.mozilla.org/en-US/docs/Web/API/Event). If -the input is cleared on edit, the type is `null`. - */ - ionInput: EventEmitter>; - /** - * The `ionChange` event is fired when the user modifies the input's value. -Unlike the `ionInput` event, the `ionChange` event is only fired when changes -are committed, not as the user types. - -The `ionChange` event fires when the `` component loses -focus after its value has changed. - -This event will not emit when programmatically setting the `value` property. - */ - ionChange: EventEmitter>; - /** - * Emitted when all input boxes have been filled with valid values. - */ - ionComplete: EventEmitter>; - /** - * Emitted when the input group loses focus. - */ - ionBlur: EventEmitter>; - /** - * Emitted when the input group has focus. - */ - ionFocus: EventEmitter>; -} - - @ProxyCmp({ defineCustomElementFn: defineIonInputPasswordToggle, inputs: ['color', 'hideIcon', 'mode', 'showIcon'] diff --git a/packages/vue/src/proxies.ts b/packages/vue/src/proxies.ts index 1e316544a4c..0db034f746d 100644 --- a/packages/vue/src/proxies.ts +++ b/packages/vue/src/proxies.ts @@ -492,7 +492,7 @@ export const IonInput: StencilVueComponent 'value', 'ion-input'); -export const IonInputOtp: StencilVueComponent = /*@__PURE__*/ defineContainer('ion-input-otp', defineIonInputOtp, [ +export const IonInputOtp: StencilVueComponent = /*@__PURE__*/ defineContainer('ion-input-otp', defineIonInputOtp, [ 'autocapitalize', 'color', 'disabled', @@ -517,7 +517,8 @@ export const IonInputOtp: StencilVueComponent = /*@__PURE__*/ d 'ionComplete', 'ionBlur', 'ionFocus' -]); +], +'value', 'ion-input'); export const IonInputPasswordToggle: StencilVueComponent = /*@__PURE__*/ defineContainer('ion-input-password-toggle', defineIonInputPasswordToggle, [