UNPKG

935 kBJSONView Raw
1{
2 "timestamp": "2019-09-12T17:44:21",
3 "compiler": {
4 "name": "@stencil/core",
5 "version": "1.4.0",
6 "typescriptVersion": "3.6.2"
7 },
8 "components": [
9 {
10 "tag": "ion-action-sheet",
11 "filePath": "src/components/action-sheet/action-sheet.tsx",
12 "encapsulation": "scoped",
13 "readme": "# ion-action-sheet\n\nAn Action Sheet is a dialog that displays a set of options. It appears on top of the app's content, and must be manually dismissed by the user before they can resume interaction with the app. Destructive options are made obvious in `ios` mode. There are multiple ways to dismiss the action sheet, including tapping the backdrop or hitting the escape key on desktop.\n\n### Creating\n\nAn action sheet can be created by the [Action Sheet Controller](../action-sheet-controller) from an array of `buttons`, with each button including properties for its `text`, and optionally a `handler` and `role`. If a handler returns `false` then the action sheet will not be dismissed. An action sheet can also optionally have a `header` and a `subHeader`.\n\n### Buttons\n\nA button's `role` property can either be `destructive` or `cancel`. Buttons without a role property will have the default look for the platform. Buttons with the `cancel` role will always load as the bottom button, no matter where they are in the array. All other buttons will be displayed in the order they have been added to the `buttons` array. Note: We recommend that `destructive` buttons are always the first button in the array, making them the top button. Additionally, if the action sheet is dismissed by tapping the backdrop, then it will fire the handler from the button with the cancel role.\n\n",
14 "docs": "An Action Sheet is a dialog that displays a set of options. It appears on top of the app's content, and must be manually dismissed by the user before they can resume interaction with the app. Destructive options are made obvious in `ios` mode. There are multiple ways to dismiss the action sheet, including tapping the backdrop or hitting the escape key on desktop.",
15 "docsTags": [
16 {
17 "text": "{\"ios\" | \"md\"} mode - The mode determines which platform styles to use.",
18 "name": "virtualProp"
19 }
20 ],
21 "usage": {
22 "angular": "```typescript\nimport { Component } from '@angular/core';\nimport { ActionSheetController } from '@ionic/angular';\n\n@Component({\n selector: 'action-sheet-example',\n templateUrl: 'action-sheet-example.html',\n styleUrls: ['./action-sheet-example.css'],\n})\nexport class ActionSheetExample {\n\n constructor(public actionSheetController: ActionSheetController) {}\n\n async presentActionSheet() {\n const actionSheet = await this.actionSheetController.create({\n header: 'Albums',\n buttons: [{\n text: 'Delete',\n role: 'destructive',\n icon: 'trash',\n handler: () => {\n console.log('Delete clicked');\n }\n }, {\n text: 'Share',\n icon: 'share',\n handler: () => {\n console.log('Share clicked');\n }\n }, {\n text: 'Play (open modal)',\n icon: 'arrow-dropright-circle',\n handler: () => {\n console.log('Play clicked');\n }\n }, {\n text: 'Favorite',\n icon: 'heart',\n handler: () => {\n console.log('Favorite clicked');\n }\n }, {\n text: 'Cancel',\n icon: 'close',\n role: 'cancel',\n handler: () => {\n console.log('Cancel clicked');\n }\n }]\n });\n await actionSheet.present();\n }\n\n}\n```\n",
23 "javascript": "```javascript\nasync function presentActionSheet() {\n\n const actionSheet = document.createElement('ion-action-sheet');\n\n actionSheet.header = \"Albums\";\n actionSheet.buttons = [{\n text: 'Delete',\n role: 'destructive',\n icon: 'trash',\n handler: () => {\n console.log('Delete clicked');\n }\n }, {\n text: 'Share',\n icon: 'share',\n handler: () => {\n console.log('Share clicked');\n }\n }, {\n text: 'Play (open modal)',\n icon: 'arrow-dropright-circle',\n handler: () => {\n console.log('Play clicked');\n }\n }, {\n text: 'Favorite',\n icon: 'heart',\n handler: () => {\n console.log('Favorite clicked');\n }\n }, {\n text: 'Cancel',\n icon: 'close',\n role: 'cancel',\n handler: () => {\n console.log('Cancel clicked');\n }\n }];\n document.body.appendChild(actionSheet);\n return actionSheet.present();\n}\n```\n",
24 "react": "```typescript\nimport React, { useState } from 'react'\nimport { IonActionSheet, IonContent, IonButton } from '@ionic/react';\n\nexport const ActionSheetExample: React.FC = () => {\n\n const [showActionSheet, setShowActionSheet] = useState(false);\n\n return (\n <IonContent>\n <IonButton onClick={() => setShowActionSheet(true)} expand=\"block\">Show Action Sheet</IonButton>\n <IonActionSheet\n isOpen={showActionSheet}\n onDidDismiss={() => setShowActionSheet(false)}\n buttons={[{\n text: 'Delete',\n role: 'destructive',\n icon: 'trash',\n handler: () => {\n console.log('Delete clicked');\n }\n }, {\n text: 'Share',\n icon: 'share',\n handler: () => {\n console.log('Share clicked');\n }\n }, {\n text: 'Play (open modal)',\n icon: 'arrow-dropright-circle',\n handler: () => {\n console.log('Play clicked');\n }\n }, {\n text: 'Favorite',\n icon: 'heart',\n handler: () => {\n console.log('Favorite clicked');\n }\n }, {\n text: 'Cancel',\n icon: 'close',\n role: 'cancel',\n handler: () => {\n console.log('Cancel clicked');\n }\n }]}\n >\n </IonActionSheet>\n </IonContent>\n\n );\n\n}\n\n```\n",
25 "vue": "```html\n<template>\n <IonVuePage :title=\"'Action Sheet'\">\n <ion-button @click=\"presentActionSheet\">Show Action Sheet</ion-button>\n </IonVuePage>\n</template>\n\n<script>\nexport default {\n methods: {\n presentActionSheet() {\n return this.$ionic.actionSheetController\n .create({\n header: 'Albums',\n buttons: [\n {\n text: 'Delete',\n role: 'destructive',\n icon: 'trash',\n handler: () => {\n console.log('Delete clicked')\n },\n },\n {\n text: 'Share',\n icon: 'share',\n handler: () => {\n console.log('Share clicked')\n },\n },\n {\n text: 'Play (open modal)',\n icon: 'arrow-dropright-circle',\n handler: () => {\n console.log('Play clicked')\n },\n },\n {\n text: 'Favorite',\n icon: 'heart',\n handler: () => {\n console.log('Favorite clicked')\n },\n },\n {\n text: 'Cancel',\n icon: 'close',\n role: 'cancel',\n handler: () => {\n console.log('Cancel clicked')\n },\n },\n ],\n })\n .then(a => a.present())\n },\n },\n}\n</script>\n```\n"
26 },
27 "props": [
28 {
29 "name": "animated",
30 "type": "boolean",
31 "mutable": false,
32 "attr": "animated",
33 "reflectToAttr": false,
34 "docs": "If `true`, the action sheet will animate.",
35 "docsTags": [],
36 "default": "true",
37 "optional": false,
38 "required": false
39 },
40 {
41 "name": "backdropDismiss",
42 "type": "boolean",
43 "mutable": false,
44 "attr": "backdrop-dismiss",
45 "reflectToAttr": false,
46 "docs": "If `true`, the action sheet will be dismissed when the backdrop is clicked.",
47 "docsTags": [],
48 "default": "true",
49 "optional": false,
50 "required": false
51 },
52 {
53 "name": "buttons",
54 "type": "(string | ActionSheetButton)[]",
55 "mutable": false,
56 "reflectToAttr": false,
57 "docs": "An array of buttons for the action sheet.",
58 "docsTags": [],
59 "default": "[]",
60 "optional": false,
61 "required": false
62 },
63 {
64 "name": "cssClass",
65 "type": "string | string[] | undefined",
66 "mutable": false,
67 "attr": "css-class",
68 "reflectToAttr": false,
69 "docs": "Additional classes to apply for custom CSS. If multiple classes are\nprovided they should be separated by spaces.",
70 "docsTags": [],
71 "optional": true,
72 "required": false
73 },
74 {
75 "name": "enterAnimation",
76 "type": "((Animation: Animation, baseEl: any, opts?: any) => Promise<Animation>) | undefined",
77 "mutable": false,
78 "reflectToAttr": false,
79 "docs": "Animation to use when the action sheet is presented.",
80 "docsTags": [],
81 "optional": true,
82 "required": false
83 },
84 {
85 "name": "header",
86 "type": "string | undefined",
87 "mutable": false,
88 "attr": "header",
89 "reflectToAttr": false,
90 "docs": "Title for the action sheet.",
91 "docsTags": [],
92 "optional": true,
93 "required": false
94 },
95 {
96 "name": "keyboardClose",
97 "type": "boolean",
98 "mutable": false,
99 "attr": "keyboard-close",
100 "reflectToAttr": false,
101 "docs": "If `true`, the keyboard will be automatically dismissed when the overlay is presented.",
102 "docsTags": [],
103 "default": "true",
104 "optional": false,
105 "required": false
106 },
107 {
108 "name": "leaveAnimation",
109 "type": "((Animation: Animation, baseEl: any, opts?: any) => Promise<Animation>) | undefined",
110 "mutable": false,
111 "reflectToAttr": false,
112 "docs": "Animation to use when the action sheet is dismissed.",
113 "docsTags": [],
114 "optional": true,
115 "required": false
116 },
117 {
118 "name": "mode",
119 "type": "\"ios\" | \"md\"",
120 "mutable": false,
121 "attr": "mode",
122 "reflectToAttr": false,
123 "docs": "The mode determines which platform styles to use.",
124 "docsTags": [],
125 "optional": true,
126 "required": false
127 },
128 {
129 "name": "subHeader",
130 "type": "string | undefined",
131 "mutable": false,
132 "attr": "sub-header",
133 "reflectToAttr": false,
134 "docs": "Subtitle for the action sheet.",
135 "docsTags": [],
136 "optional": true,
137 "required": false
138 },
139 {
140 "name": "translucent",
141 "type": "boolean",
142 "mutable": false,
143 "attr": "translucent",
144 "reflectToAttr": false,
145 "docs": "If `true`, the action sheet will be translucent.\nOnly applies when the mode is `\"ios\"` and the device supports\n[`backdrop-filter`](https://developer.mozilla.org/en-US/docs/Web/CSS/backdrop-filter#Browser_compatibility).",
146 "docsTags": [],
147 "default": "false",
148 "optional": false,
149 "required": false
150 }
151 ],
152 "methods": [
153 {
154 "name": "dismiss",
155 "returns": {
156 "type": "Promise<boolean>",
157 "docs": ""
158 },
159 "signature": "dismiss(data?: any, role?: string | undefined) => Promise<boolean>",
160 "parameters": [],
161 "docs": "Dismiss the action sheet overlay after it has been presented.",
162 "docsTags": [
163 {
164 "name": "param",
165 "text": "data Any data to emit in the dismiss events."
166 },
167 {
168 "name": "param",
169 "text": "role The role of the element that is dismissing the action sheet.\nThis can be useful in a button handler for determining which button was\nclicked to dismiss the action sheet.\nSome examples include: ``\"cancel\"`, `\"destructive\"`, \"selected\"`, and `\"backdrop\"`."
170 }
171 ]
172 },
173 {
174 "name": "onDidDismiss",
175 "returns": {
176 "type": "Promise<OverlayEventDetail<any>>",
177 "docs": ""
178 },
179 "signature": "onDidDismiss() => Promise<OverlayEventDetail<any>>",
180 "parameters": [],
181 "docs": "Returns a promise that resolves when the action sheet did dismiss.",
182 "docsTags": []
183 },
184 {
185 "name": "onWillDismiss",
186 "returns": {
187 "type": "Promise<OverlayEventDetail<any>>",
188 "docs": ""
189 },
190 "signature": "onWillDismiss() => Promise<OverlayEventDetail<any>>",
191 "parameters": [],
192 "docs": "Returns a promise that resolves when the action sheet will dismiss.",
193 "docsTags": []
194 },
195 {
196 "name": "present",
197 "returns": {
198 "type": "Promise<void>",
199 "docs": ""
200 },
201 "signature": "present() => Promise<void>",
202 "parameters": [],
203 "docs": "Present the action sheet overlay after it has been created.",
204 "docsTags": []
205 }
206 ],
207 "events": [
208 {
209 "event": "ionActionSheetDidDismiss",
210 "detail": "OverlayEventDetail<any>",
211 "bubbles": true,
212 "cancelable": true,
213 "composed": true,
214 "docs": "Emitted after the alert has dismissed.",
215 "docsTags": []
216 },
217 {
218 "event": "ionActionSheetDidPresent",
219 "detail": "void",
220 "bubbles": true,
221 "cancelable": true,
222 "composed": true,
223 "docs": "Emitted after the alert has presented.",
224 "docsTags": []
225 },
226 {
227 "event": "ionActionSheetWillDismiss",
228 "detail": "OverlayEventDetail<any>",
229 "bubbles": true,
230 "cancelable": true,
231 "composed": true,
232 "docs": "Emitted before the alert has dismissed.",
233 "docsTags": []
234 },
235 {
236 "event": "ionActionSheetWillPresent",
237 "detail": "void",
238 "bubbles": true,
239 "cancelable": true,
240 "composed": true,
241 "docs": "Emitted before the alert has presented.",
242 "docsTags": []
243 }
244 ],
245 "styles": [
246 {
247 "name": "--background",
248 "annotation": "prop",
249 "docs": "Background of the action sheet group"
250 },
251 {
252 "name": "--background-activated",
253 "annotation": "prop",
254 "docs": "Background of the action sheet button when pressed"
255 },
256 {
257 "name": "--background-selected",
258 "annotation": "prop",
259 "docs": "Background of the selected action sheet button"
260 },
261 {
262 "name": "--color",
263 "annotation": "prop",
264 "docs": "Color of the action sheet text"
265 },
266 {
267 "name": "--height",
268 "annotation": "prop",
269 "docs": "height of the action sheet"
270 },
271 {
272 "name": "--max-height",
273 "annotation": "prop",
274 "docs": "Maximum height of the action sheet"
275 },
276 {
277 "name": "--max-width",
278 "annotation": "prop",
279 "docs": "Maximum width of the action sheet"
280 },
281 {
282 "name": "--min-height",
283 "annotation": "prop",
284 "docs": "Minimum height of the action sheet"
285 },
286 {
287 "name": "--min-width",
288 "annotation": "prop",
289 "docs": "Minimum width of the action sheet"
290 },
291 {
292 "name": "--width",
293 "annotation": "prop",
294 "docs": "Width of the action sheet"
295 }
296 ],
297 "slots": []
298 },
299 {
300 "tag": "ion-action-sheet-controller",
301 "filePath": "src/components/action-sheet-controller/action-sheet-controller.tsx",
302 "encapsulation": "none",
303 "readme": "# ion-action-sheet-controller\n\nAction Sheet controllers programmatically control the action sheet component. Action Sheets can be created and dismissed from the action sheet controller. View the [Action Sheet](../action-sheet) documentation for a full list of options to pass upon creation.\n",
304 "deprecation": "Use the `actionSheetController` exported from core.",
305 "docs": "Action Sheet controllers programmatically control the action sheet component. Action Sheets can be created and dismissed from the action sheet controller. View the [Action Sheet](../action-sheet) documentation for a full list of options to pass upon creation.",
306 "docsTags": [
307 {
308 "text": "Use the `actionSheetController` exported from core.",
309 "name": "deprecated"
310 }
311 ],
312 "usage": {},
313 "props": [],
314 "methods": [
315 {
316 "name": "create",
317 "returns": {
318 "type": "Promise<HTMLIonActionSheetElement>",
319 "docs": ""
320 },
321 "signature": "create(options: ActionSheetOptions) => Promise<HTMLIonActionSheetElement>",
322 "parameters": [],
323 "docs": "Create an action sheet overlay with action sheet options.",
324 "docsTags": [
325 {
326 "name": "param",
327 "text": "options The options to use to create the action sheet."
328 }
329 ]
330 },
331 {
332 "name": "dismiss",
333 "returns": {
334 "type": "Promise<boolean>",
335 "docs": ""
336 },
337 "signature": "dismiss(data?: any, role?: string | undefined, id?: string | undefined) => Promise<boolean>",
338 "parameters": [],
339 "docs": "Dismiss the open action sheet overlay.",
340 "docsTags": [
341 {
342 "name": "param",
343 "text": "data Any data to emit in the dismiss events."
344 },
345 {
346 "name": "param",
347 "text": "role The role of the element that is dismissing the action sheet.\nThis can be useful in a button handler for determining which button was\nclicked to dismiss the action sheet.\nSome examples include: ``\"cancel\"`, `\"destructive\"`, \"selected\"`, and `\"backdrop\"`."
348 },
349 {
350 "name": "param",
351 "text": "id The id of the action sheet to dismiss. If an id is not provided, it will dismiss the most recently opened action sheet."
352 }
353 ]
354 },
355 {
356 "name": "getTop",
357 "returns": {
358 "type": "Promise<HTMLIonActionSheetElement | undefined>",
359 "docs": ""
360 },
361 "signature": "getTop() => Promise<HTMLIonActionSheetElement | undefined>",
362 "parameters": [],
363 "docs": "Get the most recently opened action sheet overlay.",
364 "docsTags": []
365 }
366 ],
367 "events": [],
368 "styles": [],
369 "slots": []
370 },
371 {
372 "tag": "ion-alert",
373 "filePath": "src/components/alert/alert.tsx",
374 "encapsulation": "scoped",
375 "readme": "# ion-alert\n\nAn Alert is a dialog that presents users with information or collects information from the user using inputs. An alert appears on top of the app's content, and must be manually dismissed by the user before they can resume interaction with the app. It can also optionally have a `header`, `subHeader` and `message`.\n\n\n### Creating\n\nAlerts can be created using an [Alert Controller](../alert-controller). They can be customized by passing alert options in the alert controller's create method.\n\n\n### Buttons\n\nIn the array of `buttons`, each button includes properties for its `text`, and optionally a `handler`. If a handler returns `false` then the alert will not automatically be dismissed when the button is clicked. All buttons will show up in the order they have been added to the `buttons` array from left to right. Note: The right most button (the last one in the array) is the main button.\n\nOptionally, a `role` property can be added to a button, such as `cancel`. If a `cancel` role is on one of the buttons, then if the alert is dismissed by tapping the backdrop, then it will fire the handler from the button with a cancel role.\n\n\n### Inputs\n\nAlerts can also include several different inputs whose data can be passed back to the app. Inputs can be used as a simple way to prompt users for information. Radios, checkboxes and text inputs are all accepted, but they cannot be mixed. For example, an alert could have all radio button inputs, or all checkbox inputs, but the same alert cannot mix radio and checkbox inputs. Do note however, different types of \"text\" inputs can be mixed, such as `url`, `email`, `text`, etc. If you require a complex form UI which doesn't fit within the guidelines of an alert then we recommend building the form within a modal instead.\n\n",
376 "docs": "An Alert is a dialog that presents users with information or collects information from the user using inputs. An alert appears on top of the app's content, and must be manually dismissed by the user before they can resume interaction with the app. It can also optionally have a `header`, `subHeader` and `message`.",
377 "docsTags": [
378 {
379 "text": "{\"ios\" | \"md\"} mode - The mode determines which platform styles to use.",
380 "name": "virtualProp"
381 }
382 ],
383 "usage": {
384 "angular": "```typescript\nimport { Component } from '@angular/core';\nimport { AlertController } from '@ionic/angular';\n\n@Component({\n selector: 'alert-example',\n templateUrl: 'alert-example.html',\n styleUrls: ['./alert-example.css'],\n})\nexport class AlertExample {\n\n constructor(public alertController: AlertController) {}\n\n async presentAlert() {\n const alert = await this.alertController.create({\n header: 'Alert',\n subHeader: 'Subtitle',\n message: 'This is an alert message.',\n buttons: ['OK']\n });\n\n await alert.present();\n }\n\n async presentAlertMultipleButtons() {\n const alert = await this.alertController.create({\n header: 'Alert',\n subHeader: 'Subtitle',\n message: 'This is an alert message.',\n buttons: ['Cancel', 'Open Modal', 'Delete']\n });\n\n await alert.present();\n }\n\n async presentAlertConfirm() {\n const alert = await this.alertController.create({\n header: 'Confirm!',\n message: 'Message <strong>text</strong>!!!',\n buttons: [\n {\n text: 'Cancel',\n role: 'cancel',\n cssClass: 'secondary',\n handler: (blah) => {\n console.log('Confirm Cancel: blah');\n }\n }, {\n text: 'Okay',\n handler: () => {\n console.log('Confirm Okay');\n }\n }\n ]\n });\n\n await alert.present();\n }\n\n async presentAlertPrompt() {\n const alert = await this.alertController.create({\n header: 'Prompt!',\n inputs: [\n {\n name: 'name1',\n type: 'text',\n placeholder: 'Placeholder 1'\n },\n {\n name: 'name2',\n type: 'text',\n id: 'name2-id',\n value: 'hello',\n placeholder: 'Placeholder 2'\n },\n {\n name: 'name3',\n value: 'http://ionicframework.com',\n type: 'url',\n placeholder: 'Favorite site ever'\n },\n // input date with min & max\n {\n name: 'name4',\n type: 'date',\n min: '2017-03-01',\n max: '2018-01-12'\n },\n // input date without min nor max\n {\n name: 'name5',\n type: 'date'\n },\n {\n name: 'name6',\n type: 'number',\n min: -5,\n max: 10\n },\n {\n name: 'name7',\n type: 'number'\n }\n ],\n buttons: [\n {\n text: 'Cancel',\n role: 'cancel',\n cssClass: 'secondary',\n handler: () => {\n console.log('Confirm Cancel');\n }\n }, {\n text: 'Ok',\n handler: () => {\n console.log('Confirm Ok');\n }\n }\n ]\n });\n\n await alert.present();\n }\n\n async presentAlertRadio() {\n const alert = await this.alertController.create({\n header: 'Radio',\n inputs: [\n {\n name: 'radio1',\n type: 'radio',\n label: 'Radio 1',\n value: 'value1',\n checked: true\n },\n {\n name: 'radio2',\n type: 'radio',\n label: 'Radio 2',\n value: 'value2'\n },\n {\n name: 'radio3',\n type: 'radio',\n label: 'Radio 3',\n value: 'value3'\n },\n {\n name: 'radio4',\n type: 'radio',\n label: 'Radio 4',\n value: 'value4'\n },\n {\n name: 'radio5',\n type: 'radio',\n label: 'Radio 5',\n value: 'value5'\n },\n {\n name: 'radio6',\n type: 'radio',\n label: 'Radio 6 Radio 6 Radio 6 Radio 6 Radio 6 Radio 6 Radio 6 Radio 6 Radio 6 Radio 6 ',\n value: 'value6'\n }\n ],\n buttons: [\n {\n text: 'Cancel',\n role: 'cancel',\n cssClass: 'secondary',\n handler: () => {\n console.log('Confirm Cancel');\n }\n }, {\n text: 'Ok',\n handler: () => {\n console.log('Confirm Ok');\n }\n }\n ]\n });\n\n await alert.present();\n }\n\n async presentAlertCheckbox() {\n const alert = await this.alertController.create({\n header: 'Checkbox',\n inputs: [\n {\n name: 'checkbox1',\n type: 'checkbox',\n label: 'Checkbox 1',\n value: 'value1',\n checked: true\n },\n\n {\n name: 'checkbox2',\n type: 'checkbox',\n label: 'Checkbox 2',\n value: 'value2'\n },\n\n {\n name: 'checkbox3',\n type: 'checkbox',\n label: 'Checkbox 3',\n value: 'value3'\n },\n\n {\n name: 'checkbox4',\n type: 'checkbox',\n label: 'Checkbox 4',\n value: 'value4'\n },\n\n {\n name: 'checkbox5',\n type: 'checkbox',\n label: 'Checkbox 5',\n value: 'value5'\n },\n\n {\n name: 'checkbox6',\n type: 'checkbox',\n label: 'Checkbox 6 Checkbox 6 Checkbox 6 Checkbox 6 Checkbox 6 Checkbox 6 Checkbox 6 Checkbox 6 Checkbox 6 Checkbox 6',\n value: 'value6'\n }\n ],\n buttons: [\n {\n text: 'Cancel',\n role: 'cancel',\n cssClass: 'secondary',\n handler: () => {\n console.log('Confirm Cancel');\n }\n }, {\n text: 'Ok',\n handler: () => {\n console.log('Confirm Ok');\n }\n }\n ]\n });\n\n await alert.present();\n }\n\n}\n```\n",
385 "javascript": "```javascript\nfunction presentAlert() {\n const alert = document.createElement('ion-alert');\n alert.header = 'Alert';\n alert.subHeader = 'Subtitle';\n alert.message = 'This is an alert message.';\n alert.buttons = ['OK'];\n\n document.body.appendChild(alert);\n return alert.present();\n}\n\nfunction presentAlertMultipleButtons() {\n const alert = document.createElement('ion-alert');\n alert.header = 'Alert';\n alert.subHeader = 'Subtitle';\n alert.message = 'This is an alert message.';\n alert.buttons = ['Cancel', 'Open Modal', 'Delete'];\n\n document.body.appendChild(alert);\n return alert.present();\n}\n\nfunction presentAlertConfirm() {\n const alert = document.createElement('ion-alert');\n alert.header = 'Confirm!';\n alert.message = 'Message <strong>text</strong>!!!';\n alert.buttons = [\n {\n text: 'Cancel',\n role: 'cancel',\n cssClass: 'secondary',\n handler: (blah) => {\n console.log('Confirm Cancel: blah');\n }\n }, {\n text: 'Okay',\n handler: () => {\n console.log('Confirm Okay')\n }\n }\n ];\n\n document.body.appendChild(alert);\n return alert.present();\n}\n\nfunction presentAlertPrompt() {\n const alert = document.createElement('ion-alert');\n alert.header = 'Prompt!';\n alert.inputs = [\n {\n placeholder: 'Placeholder 1'\n },\n {\n name: 'name2',\n id: 'name2-id',\n value: 'hello',\n placeholder: 'Placeholder 2'\n },\n {\n name: 'name3',\n value: 'http://ionicframework.com',\n type: 'url',\n placeholder: 'Favorite site ever'\n },\n // input date with min & max\n {\n name: 'name4',\n type: 'date',\n min: '2017-03-01',\n max: '2018-01-12'\n },\n // input date without min nor max\n {\n name: 'name5',\n type: 'date'\n },\n {\n name: 'name6',\n type: 'number',\n min: -5,\n max: 10\n },\n {\n name: 'name7',\n type: 'number'\n }\n ];\n alert.buttons = [\n {\n text: 'Cancel',\n role: 'cancel',\n cssClass: 'secondary',\n handler: () => {\n console.log('Confirm Cancel')\n }\n }, {\n text: 'Ok',\n handler: () => {\n console.log('Confirm Ok')\n }\n }\n ];\n\n document.body.appendChild(alert);\n return alert.present();\n}\n\nfunction presentAlertRadio() {\n const alert = document.createElement('ion-alert');\n alert.header = 'Radio';\n alert.inputs = [\n {\n type: 'radio',\n label: 'Radio 1',\n value: 'value1',\n checked: true\n },\n {\n type: 'radio',\n label: 'Radio 2',\n value: 'value2'\n },\n {\n type: 'radio',\n label: 'Radio 3',\n value: 'value3'\n },\n {\n type: 'radio',\n label: 'Radio 4',\n value: 'value4'\n },\n {\n type: 'radio',\n label: 'Radio 5',\n value: 'value5'\n },\n {\n type: 'radio',\n label: 'Radio 6 Radio 6 Radio 6 Radio 6 Radio 6 Radio 6 Radio 6 Radio 6 Radio 6 Radio 6 ',\n value: 'value6'\n }\n ];\n alert.buttons = [\n {\n text: 'Cancel',\n role: 'cancel',\n cssClass: 'secondary',\n handler: () => {\n console.log('Confirm Cancel')\n }\n }, {\n text: 'Ok',\n handler: () => {\n console.log('Confirm Ok')\n }\n }\n ];\n document.body.appendChild(alert);\n return alert.present();\n}\n\nfunction presentAlertCheckbox() {\n const alert = document.createElement('ion-alert');\n alert.header = 'Checkbox';\n alert.inputs = [\n {\n type: 'checkbox',\n label: 'Checkbox 1',\n value: 'value1',\n checked: true\n },\n\n {\n type: 'checkbox',\n label: 'Checkbox 2',\n value: 'value2'\n },\n\n {\n type: 'checkbox',\n label: 'Checkbox 3',\n value: 'value3'\n },\n\n {\n type: 'checkbox',\n label: 'Checkbox 4',\n value: 'value4'\n },\n\n {\n type: 'checkbox',\n label: 'Checkbox 5',\n value: 'value5'\n },\n\n {\n type: 'checkbox',\n label: 'Checkbox 6 Checkbox 6 Checkbox 6 Checkbox 6 Checkbox 6 Checkbox 6 Checkbox 6 Checkbox 6 Checkbox 6 Checkbox 6',\n value: 'value6'\n }\n ];\n alert.buttons = [\n {\n text: 'Cancel',\n role: 'cancel',\n cssClass: 'secondary',\n handler: () => {\n console.log('Confirm Cancel')\n }\n }, {\n text: 'Ok',\n handler: () => {\n console.log('Confirm Ok')\n }\n }\n ];\n\n document.body.appendChild(alert);\n return alert.present();\n}\n```\n",
386 "react": "```tsx\nimport React, { useState } from 'react';\nimport { IonAlert, IonButton, IonContent } from '@ionic/react';\n\nexport const AlertExample: React.FC = () => {\n\n const [showAlert1, setShowAlert1] = useState(false);\n const [showAlert2, setShowAlert2] = useState(false);\n const [showAlert3, setShowAlert3] = useState(false);\n const [showAlert4, setShowAlert4] = useState(false);\n const [showAlert5, setShowAlert5] = useState(false);\n const [showAlert6, setShowAlert6] = useState(false);\n\n return (\n <IonContent>\n <IonButton onClick={() => setShowAlert1(true)} expand=\"block\">Show Alert 1</IonButton>\n <IonButton onClick={() => setShowAlert2(true)} expand=\"block\">Show Alert 2</IonButton>\n <IonButton onClick={() => setShowAlert3(true)} expand=\"block\">Show Alert 3</IonButton>\n <IonButton onClick={() => setShowAlert4(true)} expand=\"block\">Show Alert 4</IonButton>\n <IonButton onClick={() => setShowAlert5(true)} expand=\"block\">Show Alert 5</IonButton>\n <IonButton onClick={() => setShowAlert6(true)} expand=\"block\">Show Alert 6</IonButton>\n <IonAlert\n isOpen={showAlert1}\n onDidDismiss={() => setShowAlert1(false)}\n header={'Alert'}\n subHeader={'Subtitle'}\n message={'This is an alert message.'}\n buttons={['OK']}\n />\n\n <IonAlert\n isOpen={showAlert2}\n onDidDismiss={() => setShowAlert2(false)}\n header={'Alert'}\n subHeader={'Subtitle'}\n message={'This is an alert message.'}\n buttons={['Cancel', 'Open Modal', 'Delete']}\n />\n\n <IonAlert\n isOpen={showAlert3}\n onDidDismiss={() => setShowAlert3(false)}\n header={'Confirm!'}\n message={'Message <strong>text</strong>!!!'}\n buttons={[\n {\n text: 'Cancel',\n role: 'cancel',\n cssClass: 'secondary',\n handler: blah => {\n console.log('Confirm Cancel: blah');\n }\n },\n {\n text: 'Okay',\n handler: () => {\n console.log('Confirm Okay');\n }\n }\n ]}\n />\n\n <IonAlert\n isOpen={showAlert4}\n onDidDismiss={() => setShowAlert4(false)}\n header={'Prompt!'}\n inputs={[\n {\n name: 'name1',\n type: 'text',\n placeholder: 'Placeholder 1'\n },\n {\n name: 'name2',\n type: 'text',\n id: 'name2-id',\n value: 'hello',\n placeholder: 'Placeholder 2'\n },\n {\n name: 'name3',\n value: 'http://ionicframework.com',\n type: 'url',\n placeholder: 'Favorite site ever'\n },\n // input date with min & max\n {\n name: 'name4',\n type: 'date',\n min: '2017-03-01',\n max: '2018-01-12'\n },\n // input date without min nor max\n {\n name: 'name5',\n type: 'date'\n },\n {\n name: 'name6',\n type: 'number',\n min: -5,\n max: 10\n },\n {\n name: 'name7',\n type: 'number'\n }\n ]}\n buttons={[\n {\n text: 'Cancel',\n role: 'cancel',\n cssClass: 'secondary',\n handler: () => {\n console.log('Confirm Cancel');\n }\n },\n {\n text: 'Ok',\n handler: () => {\n console.log('Confirm Ok');\n }\n }\n ]}\n />\n\n <IonAlert\n isOpen={showAlert5}\n onDidDismiss={() => setShowAlert5(false)}\n header={'Radio'}\n inputs={[\n {\n name: 'radio1',\n type: 'radio',\n label: 'Radio 1',\n value: 'value1',\n checked: true\n },\n {\n name: 'radio2',\n type: 'radio',\n label: 'Radio 2',\n value: 'value2'\n },\n {\n name: 'radio3',\n type: 'radio',\n label: 'Radio 3',\n value: 'value3'\n },\n {\n name: 'radio4',\n type: 'radio',\n label: 'Radio 4',\n value: 'value4'\n },\n {\n name: 'radio5',\n type: 'radio',\n label: 'Radio 5',\n value: 'value5'\n },\n {\n name: 'radio6',\n type: 'radio',\n label: 'Radio 6',\n value: 'value6'\n }\n ]}\n buttons={[\n {\n text: 'Cancel',\n role: 'cancel',\n cssClass: 'secondary',\n handler: () => {\n console.log('Confirm Cancel');\n }\n },\n {\n text: 'Ok',\n handler: () => {\n console.log('Confirm Ok');\n }\n }\n ]}\n />\n\n <IonAlert\n isOpen={showAlert6}\n onDidDismiss={() => setShowAlert6(false)}\n header={'Checkbox'}\n inputs={[\n {\n name: 'checkbox1',\n type: 'checkbox',\n label: 'Checkbox 1',\n value: 'value1',\n checked: true\n },\n {\n name: 'checkbox2',\n type: 'checkbox',\n label: 'Checkbox 2',\n value: 'value2'\n },\n {\n name: 'checkbox3',\n type: 'checkbox',\n label: 'Checkbox 3',\n value: 'value3'\n },\n {\n name: 'checkbox4',\n type: 'checkbox',\n label: 'Checkbox 4',\n value: 'value4'\n },\n {\n name: 'checkbox5',\n type: 'checkbox',\n label: 'Checkbox 5',\n value: 'value5'\n },\n {\n name: 'checkbox6',\n type: 'checkbox',\n label: 'Checkbox 6',\n value: 'value6'\n }\n ]}\n buttons={[\n {\n text: 'Cancel',\n role: 'cancel',\n cssClass: 'secondary',\n handler: () => {\n console.log('Confirm Cancel');\n }\n },\n {\n text: 'Ok',\n handler: () => {\n console.log('Confirm Ok');\n }\n }\n ]}\n />\n </IonContent>\n );\n}\n\nexport default AlertExample;\n\n```\n",
387 "vue": "```html\n<template>\n <IonVuePage :title=\"'Alert'\">\n <ion-button @click=\"presentAlert\">Show Alert</ion-button>\n <ion-button @click=\"presentAlertMultipleButtons\">Show Alert (multiple buttons)</ion-button>\n <ion-button @click=\"presentAlertConfirm\">Show Alert (confirm)</ion-button>\n <ion-button @click=\"presentAlertPrompt\">Show Alert (prompt)</ion-button>\n <ion-button @click=\"presentAlertRadio\">Show Alert (radio)</ion-button>\n <ion-button @click=\"presentAlertCheckbox\">Show Alert (checkbox)</ion-button>\n </IonVuePage>\n</template>\n\n<script>\nexport default {\n methods: {\n presentAlert() {\n return this.$ionic.alertController\n .create({\n header: 'Alert',\n subHeader: 'Subtitle',\n message: 'This is an alert message.',\n buttons: ['OK'],\n })\n .then(a => a.present())\n },\n\n presentAlertMultipleButtons() {\n return this.$ionic.alertController\n .create({\n header: 'Alert',\n subHeader: 'Subtitle',\n message: 'This is an alert message.',\n buttons: ['Cancel', 'Open Modal', 'Delete'],\n })\n .then(a => a.present())\n },\n\n presentAlertConfirm() {\n return this.$ionic.alertController\n .create({\n header: 'Confirm!',\n message: 'Message <strong>text</strong>!!!',\n buttons: [\n {\n text: 'Cancel',\n role: 'cancel',\n cssClass: 'secondary',\n handler: blah => {\n console.log('Confirm Cancel:', blah)\n },\n },\n {\n text: 'Okay',\n handler: () => {\n console.log('Confirm Okay')\n },\n },\n ],\n })\n .then(a => a.present())\n },\n\n presentAlertPrompt() {\n return this.$ionic.alertController\n .create({\n header: 'Prompt!',\n inputs: [\n {\n placeholder: 'Placeholder 1',\n },\n {\n name: 'name2',\n id: 'name2-id',\n value: 'hello',\n placeholder: 'Placeholder 2',\n },\n {\n name: 'name3',\n value: 'http://ionicframework.com',\n type: 'url',\n placeholder: 'Favorite site ever',\n },\n // input date with min & max\n {\n name: 'name4',\n type: 'date',\n min: '2017-03-01',\n max: '2018-01-12',\n },\n // input date without min nor max\n {\n name: 'name5',\n type: 'date',\n },\n {\n name: 'name6',\n type: 'number',\n min: -5,\n max: 10,\n },\n {\n name: 'name7',\n type: 'number',\n },\n ],\n buttons: [\n {\n text: 'Cancel',\n role: 'cancel',\n cssClass: 'secondary',\n handler: () => {\n console.log('Confirm Cancel')\n },\n },\n {\n text: 'Ok',\n handler: () => {\n console.log('Confirm Ok')\n },\n },\n ],\n })\n .then(a => a.present())\n },\n\n presentAlertRadio() {\n return this.$ionic.alertController\n .create({\n header: 'Radio',\n inputs: [\n {\n type: 'radio',\n label: 'Radio 1',\n value: 'value1',\n checked: true,\n },\n {\n type: 'radio',\n label: 'Radio 2',\n value: 'value2',\n },\n {\n type: 'radio',\n label: 'Radio 3',\n value: 'value3',\n },\n {\n type: 'radio',\n label: 'Radio 4',\n value: 'value4',\n },\n {\n type: 'radio',\n label: 'Radio 5',\n value: 'value5',\n },\n {\n type: 'radio',\n label: 'Radio 6',\n value: 'value6',\n },\n ],\n buttons: [\n {\n text: 'Cancel',\n role: 'cancel',\n cssClass: 'secondary',\n handler: () => {\n console.log('Confirm Cancel')\n },\n },\n {\n text: 'Ok',\n handler: () => {\n console.log('Confirm Ok')\n },\n },\n ],\n })\n .then(a => a.present())\n },\n\n presentAlertCheckbox() {\n return this.$ionic.alertController\n .create({\n header: 'Checkbox',\n inputs: [\n {\n type: 'checkbox',\n label: 'Checkbox 1',\n value: 'value1',\n checked: true,\n },\n\n {\n type: 'checkbox',\n label: 'Checkbox 2',\n value: 'value2',\n },\n\n {\n type: 'checkbox',\n label: 'Checkbox 3',\n value: 'value3',\n },\n\n {\n type: 'checkbox',\n label: 'Checkbox 4',\n value: 'value4',\n },\n\n {\n type: 'checkbox',\n label: 'Checkbox 5',\n value: 'value5',\n },\n\n {\n type: 'checkbox',\n label: 'Checkbox 6',\n value: 'value6',\n },\n ],\n buttons: [\n {\n text: 'Cancel',\n role: 'cancel',\n cssClass: 'secondary',\n handler: () => {\n console.log('Confirm Cancel')\n },\n },\n {\n text: 'Ok',\n handler: () => {\n console.log('Confirm Ok')\n },\n },\n ],\n })\n .then(a => a.present())\n },\n },\n}\n</script>\n```\n"
388 },
389 "props": [
390 {
391 "name": "animated",
392 "type": "boolean",
393 "mutable": false,
394 "attr": "animated",
395 "reflectToAttr": false,
396 "docs": "If `true`, the alert will animate.",
397 "docsTags": [],
398 "default": "true",
399 "optional": false,
400 "required": false
401 },
402 {
403 "name": "backdropDismiss",
404 "type": "boolean",
405 "mutable": false,
406 "attr": "backdrop-dismiss",
407 "reflectToAttr": false,
408 "docs": "If `true`, the alert will be dismissed when the backdrop is clicked.",
409 "docsTags": [],
410 "default": "true",
411 "optional": false,
412 "required": false
413 },
414 {
415 "name": "buttons",
416 "type": "(string | AlertButton)[]",
417 "mutable": false,
418 "reflectToAttr": false,
419 "docs": "Array of buttons to be added to the alert.",
420 "docsTags": [],
421 "default": "[]",
422 "optional": false,
423 "required": false
424 },
425 {
426 "name": "cssClass",
427 "type": "string | string[] | undefined",
428 "mutable": false,
429 "attr": "css-class",
430 "reflectToAttr": false,
431 "docs": "Additional classes to apply for custom CSS. If multiple classes are\nprovided they should be separated by spaces.",
432 "docsTags": [],
433 "optional": true,
434 "required": false
435 },
436 {
437 "name": "enterAnimation",
438 "type": "((Animation: Animation, baseEl: any, opts?: any) => Promise<Animation>) | undefined",
439 "mutable": false,
440 "reflectToAttr": false,
441 "docs": "Animation to use when the alert is presented.",
442 "docsTags": [],
443 "optional": true,
444 "required": false
445 },
446 {
447 "name": "header",
448 "type": "string | undefined",
449 "mutable": false,
450 "attr": "header",
451 "reflectToAttr": false,
452 "docs": "The main title in the heading of the alert.",
453 "docsTags": [],
454 "optional": true,
455 "required": false
456 },
457 {
458 "name": "inputs",
459 "type": "AlertInput[]",
460 "mutable": true,
461 "reflectToAttr": false,
462 "docs": "Array of input to show in the alert.",
463 "docsTags": [],
464 "default": "[]",
465 "optional": false,
466 "required": false
467 },
468 {
469 "name": "keyboardClose",
470 "type": "boolean",
471 "mutable": false,
472 "attr": "keyboard-close",
473 "reflectToAttr": false,
474 "docs": "If `true`, the keyboard will be automatically dismissed when the overlay is presented.",
475 "docsTags": [],
476 "default": "true",
477 "optional": false,
478 "required": false
479 },
480 {
481 "name": "leaveAnimation",
482 "type": "((Animation: Animation, baseEl: any, opts?: any) => Promise<Animation>) | undefined",
483 "mutable": false,
484 "reflectToAttr": false,
485 "docs": "Animation to use when the alert is dismissed.",
486 "docsTags": [],
487 "optional": true,
488 "required": false
489 },
490 {
491 "name": "message",
492 "type": "string | undefined",
493 "mutable": false,
494 "attr": "message",
495 "reflectToAttr": false,
496 "docs": "The main message to be displayed in the alert.\n`message` can accept either plaintext or HTML as a string.\nTo display characters normally reserved for HTML, they\nmust be escaped. For example `<Ionic>` would become\n`&lt;Ionic&gt;`\n\nFor more information: [Security Documentation](https://ionicframework.com/docs/faq/security)",
497 "docsTags": [],
498 "optional": true,
499 "required": false
500 },
501 {
502 "name": "mode",
503 "type": "\"ios\" | \"md\"",
504 "mutable": false,
505 "attr": "mode",
506 "reflectToAttr": false,
507 "docs": "The mode determines which platform styles to use.",
508 "docsTags": [],
509 "optional": true,
510 "required": false
511 },
512 {
513 "name": "subHeader",
514 "type": "string | undefined",
515 "mutable": false,
516 "attr": "sub-header",
517 "reflectToAttr": false,
518 "docs": "The subtitle in the heading of the alert. Displayed under the title.",
519 "docsTags": [],
520 "optional": true,
521 "required": false
522 },
523 {
524 "name": "translucent",
525 "type": "boolean",
526 "mutable": false,
527 "attr": "translucent",
528 "reflectToAttr": false,
529 "docs": "If `true`, the alert will be translucent.\nOnly applies when the mode is `\"ios\"` and the device supports\n[`backdrop-filter`](https://developer.mozilla.org/en-US/docs/Web/CSS/backdrop-filter#Browser_compatibility).",
530 "docsTags": [],
531 "default": "false",
532 "optional": false,
533 "required": false
534 }
535 ],
536 "methods": [
537 {
538 "name": "dismiss",
539 "returns": {
540 "type": "Promise<boolean>",
541 "docs": ""
542 },
543 "signature": "dismiss(data?: any, role?: string | undefined) => Promise<boolean>",
544 "parameters": [],
545 "docs": "Dismiss the alert overlay after it has been presented.",
546 "docsTags": [
547 {
548 "name": "param",
549 "text": "data Any data to emit in the dismiss events."
550 },
551 {
552 "name": "param",
553 "text": "role The role of the element that is dismissing the alert.\nThis can be useful in a button handler for determining which button was\nclicked to dismiss the alert.\nSome examples include: ``\"cancel\"`, `\"destructive\"`, \"selected\"`, and `\"backdrop\"`."
554 }
555 ]
556 },
557 {
558 "name": "onDidDismiss",
559 "returns": {
560 "type": "Promise<OverlayEventDetail<any>>",
561 "docs": ""
562 },
563 "signature": "onDidDismiss() => Promise<OverlayEventDetail<any>>",
564 "parameters": [],
565 "docs": "Returns a promise that resolves when the alert did dismiss.",
566 "docsTags": []
567 },
568 {
569 "name": "onWillDismiss",
570 "returns": {
571 "type": "Promise<OverlayEventDetail<any>>",
572 "docs": ""
573 },
574 "signature": "onWillDismiss() => Promise<OverlayEventDetail<any>>",
575 "parameters": [],
576 "docs": "Returns a promise that resolves when the alert will dismiss.",
577 "docsTags": []
578 },
579 {
580 "name": "present",
581 "returns": {
582 "type": "Promise<void>",
583 "docs": ""
584 },
585 "signature": "present() => Promise<void>",
586 "parameters": [],
587 "docs": "Present the alert overlay after it has been created.",
588 "docsTags": []
589 }
590 ],
591 "events": [
592 {
593 "event": "ionAlertDidDismiss",
594 "detail": "OverlayEventDetail<any>",
595 "bubbles": true,
596 "cancelable": true,
597 "composed": true,
598 "docs": "Emitted after the alert has dismissed.",
599 "docsTags": []
600 },
601 {
602 "event": "ionAlertDidPresent",
603 "detail": "void",
604 "bubbles": true,
605 "cancelable": true,
606 "composed": true,
607 "docs": "Emitted after the alert has presented.",
608 "docsTags": []
609 },
610 {
611 "event": "ionAlertWillDismiss",
612 "detail": "OverlayEventDetail<any>",
613 "bubbles": true,
614 "cancelable": true,
615 "composed": true,
616 "docs": "Emitted before the alert has dismissed.",
617 "docsTags": []
618 },
619 {
620 "event": "ionAlertWillPresent",
621 "detail": "void",
622 "bubbles": true,
623 "cancelable": true,
624 "composed": true,
625 "docs": "Emitted before the alert has presented.",
626 "docsTags": []
627 }
628 ],
629 "styles": [
630 {
631 "name": "--background",
632 "annotation": "prop",
633 "docs": "Background of the alert"
634 },
635 {
636 "name": "--height",
637 "annotation": "prop",
638 "docs": "Height of the alert"
639 },
640 {
641 "name": "--max-height",
642 "annotation": "prop",
643 "docs": "Maximum height of the alert"
644 },
645 {
646 "name": "--max-width",
647 "annotation": "prop",
648 "docs": "Maximum width of the alert"
649 },
650 {
651 "name": "--min-height",
652 "annotation": "prop",
653 "docs": "Minimum height of the alert"
654 },
655 {
656 "name": "--min-width",
657 "annotation": "prop",
658 "docs": "Minimum width of the alert"
659 },
660 {
661 "name": "--width",
662 "annotation": "prop",
663 "docs": "Width of the alert"
664 }
665 ],
666 "slots": []
667 },
668 {
669 "tag": "ion-alert-controller",
670 "filePath": "src/components/alert-controller/alert-controller.tsx",
671 "encapsulation": "none",
672 "readme": "# ion-alert-controller\n\nAlert controllers programmatically control the alert component. Alerts can be created and dismissed by the alert controller. View the [Alert](../alert) documentation for the list of options to pass upon creation and usage information.\n\n",
673 "deprecation": "Use the `alertController` exported from core.",
674 "docs": "Alert controllers programmatically control the alert component. Alerts can be created and dismissed by the alert controller. View the [Alert](../alert) documentation for the list of options to pass upon creation and usage information.",
675 "docsTags": [
676 {
677 "text": "Use the `alertController` exported from core.",
678 "name": "deprecated"
679 }
680 ],
681 "usage": {},
682 "props": [],
683 "methods": [
684 {
685 "name": "create",
686 "returns": {
687 "type": "Promise<HTMLIonAlertElement>",
688 "docs": ""
689 },
690 "signature": "create(options: AlertOptions) => Promise<HTMLIonAlertElement>",
691 "parameters": [],
692 "docs": "Create an alert overlay with alert options.",
693 "docsTags": [
694 {
695 "name": "param",
696 "text": "options The options to use to create the alert."
697 }
698 ]
699 },
700 {
701 "name": "dismiss",
702 "returns": {
703 "type": "Promise<boolean>",
704 "docs": ""
705 },
706 "signature": "dismiss(data?: any, role?: string | undefined, id?: string | undefined) => Promise<boolean>",
707 "parameters": [],
708 "docs": "Dismiss the open alert overlay.",
709 "docsTags": [
710 {
711 "name": "param",
712 "text": "data Any data to emit in the dismiss events."
713 },
714 {
715 "name": "param",
716 "text": "role The role of the element that is dismissing the alert.\nThis can be useful in a button handler for determining which button was\nclicked to dismiss the alert.\nSome examples include: ``\"cancel\"`, `\"destructive\"`, \"selected\"`, and `\"backdrop\"`."
717 },
718 {
719 "name": "param",
720 "text": "id The id of the alert to dismiss. If an id is not provided, it will dismiss the most recently opened alert."
721 }
722 ]
723 },
724 {
725 "name": "getTop",
726 "returns": {
727 "type": "Promise<HTMLIonAlertElement | undefined>",
728 "docs": ""
729 },
730 "signature": "getTop() => Promise<HTMLIonAlertElement | undefined>",
731 "parameters": [],
732 "docs": "Get the most recently opened alert overlay.",
733 "docsTags": []
734 }
735 ],
736 "events": [],
737 "styles": [],
738 "slots": []
739 },
740 {
741 "tag": "ion-anchor",
742 "filePath": "src/components/anchor/anchor.tsx",
743 "encapsulation": "shadow",
744 "readme": "# ion-anchor\n",
745 "deprecation": "Use `ion-router-link` instead.",
746 "docs": "",
747 "docsTags": [
748 {
749 "text": "Use `ion-router-link` instead.",
750 "name": "deprecated"
751 }
752 ],
753 "usage": {},
754 "props": [
755 {
756 "name": "color",
757 "type": "string | undefined",
758 "mutable": false,
759 "attr": "color",
760 "reflectToAttr": false,
761 "docs": "The color to use from your application's color palette.\nDefault options are: `\"primary\"`, `\"secondary\"`, `\"tertiary\"`, `\"success\"`, `\"warning\"`, `\"danger\"`, `\"light\"`, `\"medium\"`, and `\"dark\"`.\nFor more information on colors, see [theming](/docs/theming/basics).",
762 "docsTags": [],
763 "optional": true,
764 "required": false
765 },
766 {
767 "name": "href",
768 "type": "string | undefined",
769 "mutable": false,
770 "attr": "href",
771 "reflectToAttr": false,
772 "docs": "Contains a URL or a URL fragment that the hyperlink points to.\nIf this property is set, an anchor tag will be rendered.",
773 "docsTags": [],
774 "optional": false,
775 "required": false
776 },
777 {
778 "name": "rel",
779 "type": "string | undefined",
780 "mutable": false,
781 "attr": "rel",
782 "reflectToAttr": false,
783 "docs": "Specifies the relationship of the target object to the link object.\nThe value is a space-separated list of [link types](https://developer.mozilla.org/en-US/docs/Web/HTML/Link_types).",
784 "docsTags": [],
785 "optional": false,
786 "required": false
787 },
788 {
789 "name": "routerDirection",
790 "type": "\"back\" | \"forward\" | \"root\"",
791 "mutable": false,
792 "attr": "router-direction",
793 "reflectToAttr": false,
794 "docs": "When using a router, it specifies the transition direction when navigating to\nanother page using `href`.",
795 "docsTags": [],
796 "default": "'forward'",
797 "optional": false,
798 "required": false
799 }
800 ],
801 "methods": [],
802 "events": [],
803 "styles": [
804 {
805 "name": "--background",
806 "annotation": "prop",
807 "docs": "Background of the anchor"
808 },
809 {
810 "name": "--color",
811 "annotation": "prop",
812 "docs": "Text color of the anchor"
813 }
814 ],
815 "slots": []
816 },
817 {
818 "tag": "ion-app",
819 "filePath": "src/components/app/app.tsx",
820 "encapsulation": "none",
821 "readme": "# ion-app\n\nApp is a container element for an Ionic application. There should only be one `<ion-app>` element per project. An app can have many Ionic components including menus, headers, content, and footers. The overlay components get appended to the `<ion-app>` when they are presented.\n",
822 "docs": "App is a container element for an Ionic application. There should only be one `<ion-app>` element per project. An app can have many Ionic components including menus, headers, content, and footers. The overlay components get appended to the `<ion-app>` when they are presented.",
823 "docsTags": [],
824 "usage": {},
825 "props": [],
826 "methods": [],
827 "events": [],
828 "styles": [],
829 "slots": []
830 },
831 {
832 "tag": "ion-avatar",
833 "filePath": "src/components/avatar/avatar.tsx",
834 "encapsulation": "shadow",
835 "readme": "# ion-avatar\n\nAvatars are circular components that usually wrap an image or icon. They can be used to represent a person or an object.\n\nAvatars can be used by themselves or inside of any element. If placed inside of an `ion-chip` or `ion-item`, the avatar will resize to fit the parent component. To position an avatar on the left or right side of an item, set the slot to `start` or `end`, respectively.\n\n",
836 "docs": "Avatars are circular components that usually wrap an image or icon. They can be used to represent a person or an object.\n\nAvatars can be used by themselves or inside of any element. If placed inside of an `ion-chip` or `ion-item`, the avatar will resize to fit the parent component. To position an avatar on the left or right side of an item, set the slot to `start` or `end`, respectively.",
837 "docsTags": [],
838 "usage": {
839 "angular": "```html\n<ion-avatar>\n <img src=\"https://gravatar.com/avatar/dba6bae8c566f9d4041fb9cd9ada7741?d=identicon&f=y\">\n</ion-avatar>\n\n<ion-chip>\n <ion-avatar>\n <img src=\"https://gravatar.com/avatar/dba6bae8c566f9d4041fb9cd9ada7741?d=identicon&f=y\">\n </ion-avatar>\n <ion-label>Chip Avatar</ion-label>\n</ion-chip>\n\n<ion-item>\n <ion-avatar slot=\"start\">\n <img src=\"https://gravatar.com/avatar/dba6bae8c566f9d4041fb9cd9ada7741?d=identicon&f=y\">\n </ion-avatar>\n <ion-label>Item Avatar</ion-label>\n</ion-item>\n```",
840 "javascript": "```html\n<ion-avatar>\n <img src=\"https://gravatar.com/avatar/dba6bae8c566f9d4041fb9cd9ada7741?d=identicon&f=y\">\n</ion-avatar>\n\n<ion-chip>\n <ion-avatar>\n <img src=\"https://gravatar.com/avatar/dba6bae8c566f9d4041fb9cd9ada7741?d=identicon&f=y\">\n </ion-avatar>\n <ion-label>Chip Avatar</ion-label>\n</ion-chip>\n\n<ion-item>\n <ion-avatar slot=\"start\">\n <img src=\"https://gravatar.com/avatar/dba6bae8c566f9d4041fb9cd9ada7741?d=identicon&f=y\">\n </ion-avatar>\n <ion-label>Item Avatar</ion-label>\n</ion-item>\n```",
841 "react": "```tsx\nimport React from 'react'\nimport { IonAvatar, IonChip, IonItem, IonLabel, IonContent } from '@ionic/react';\n\nexport const AvatarExample: React.FC = () => (\n <IonContent>\n <IonAvatar>\n <img src=\"https://gravatar.com/avatar/dba6bae8c566f9d4041fb9cd9ada7741?d=identicon&f=y\" />\n </IonAvatar>\n\n <IonChip>\n <IonAvatar>\n <img src=\"https://gravatar.com/avatar/dba6bae8c566f9d4041fb9cd9ada7741?d=identicon&f=y\" />\n </IonAvatar>\n <IonLabel>Chip Avatar</IonLabel>\n </IonChip>\n\n <IonItem>\n <IonAvatar slot=\"start\">\n <img src=\"https://gravatar.com/avatar/dba6bae8c566f9d4041fb9cd9ada7741?d=identicon&f=y\" />\n </IonAvatar>\n <IonLabel>Item Avatar</IonLabel>\n </IonItem>\n </IonContent>\n);\n```",
842 "vue": "```html\n<template>\n <ion-avatar>\n <img src=\"https://gravatar.com/avatar/dba6bae8c566f9d4041fb9cd9ada7741?d=identicon&f=y\">\n </ion-avatar>\n\n <ion-chip>\n <ion-avatar>\n <img src=\"https://gravatar.com/avatar/dba6bae8c566f9d4041fb9cd9ada7741?d=identicon&f=y\">\n </ion-avatar>\n <ion-label>Chip Avatar</ion-label>\n </ion-chip>\n\n <ion-item>\n <ion-avatar slot=\"start\">\n <img src=\"https://gravatar.com/avatar/dba6bae8c566f9d4041fb9cd9ada7741?d=identicon&f=y\">\n </ion-avatar>\n <ion-label>Item Avatar</ion-label>\n </ion-item>\n</template>\n```"
843 },
844 "props": [],
845 "methods": [],
846 "events": [],
847 "styles": [
848 {
849 "name": "--border-radius",
850 "annotation": "prop",
851 "docs": "Border radius of the avatar and inner image"
852 }
853 ],
854 "slots": []
855 },
856 {
857 "tag": "ion-back-button",
858 "filePath": "src/components/back-button/back-button.tsx",
859 "encapsulation": "scoped",
860 "readme": "# ion-back-button\n\nThe back button navigates back in the app's history upon click. It is smart enough to know what to render based on the mode and when to show based on the navigation stack.\n\nTo change what is displayed in the back button, use the `text` and `icon` properties.\n\n",
861 "docs": "The back button navigates back in the app's history upon click. It is smart enough to know what to render based on the mode and when to show based on the navigation stack.\n\nTo change what is displayed in the back button, use the `text` and `icon` properties.",
862 "docsTags": [
863 {
864 "text": "{\"ios\" | \"md\"} mode - The mode determines which platform styles to use.",
865 "name": "virtualProp"
866 }
867 ],
868 "usage": {
869 "angular": "```html\n<!-- Default back button -->\n<ion-header>\n <ion-toolbar>\n <ion-buttons slot=\"start\">\n <ion-back-button></ion-back-button>\n </ion-buttons>\n </ion-toolbar>\n</ion-header>\n\n<!-- Back button with a default href -->\n<ion-header>\n <ion-toolbar>\n <ion-buttons slot=\"start\">\n <ion-back-button defaultHref=\"home\"></ion-back-button>\n </ion-buttons>\n </ion-toolbar>\n</ion-header>\n\n<!-- Back button with custom text and icon -->\n<ion-header>\n <ion-toolbar>\n <ion-buttons slot=\"start\">\n <ion-back-button\n [text]=\"buttonText\"\n [icon]=\"buttonIcon\">\n </ion-back-button>\n </ion-buttons>\n </ion-toolbar>\n</ion-header>\n\n<!-- Back button with no text and custom icon -->\n<ion-header>\n <ion-toolbar>\n <ion-buttons slot=\"start\">\n <ion-back-button text=\"\" icon=\"add\"></ion-back-button>\n </ion-buttons>\n </ion-toolbar>\n</ion-header>\n\n<!-- Danger back button next to a menu button -->\n<ion-header>\n <ion-toolbar>\n <ion-buttons slot=\"start\">\n <ion-menu-button></ion-menu-button>\n <ion-back-button color=\"danger\"></ion-back-button>\n </ion-buttons>\n </ion-toolbar>\n</ion-header>\n```",
870 "javascript": "```html\n<!-- Default back button -->\n<ion-header>\n <ion-toolbar>\n <ion-buttons slot=\"start\">\n <ion-back-button></ion-back-button>\n </ion-buttons>\n </ion-toolbar>\n</ion-header>\n\n<!-- Back button with a default href -->\n<ion-header>\n <ion-toolbar>\n <ion-buttons slot=\"start\">\n <ion-back-button default-href=\"home\"></ion-back-button>\n </ion-buttons>\n </ion-toolbar>\n</ion-header>\n\n<!-- Back button with custom text and icon -->\n<ion-header>\n <ion-toolbar>\n <ion-buttons slot=\"start\">\n <ion-back-button text=\"Volver\" icon=\"close\"></ion-back-button>\n </ion-buttons>\n </ion-toolbar>\n</ion-header>\n\n<!-- Back button with no text and custom icon -->\n<ion-header>\n <ion-toolbar>\n <ion-buttons slot=\"start\">\n <ion-back-button text=\"\" icon=\"add\"></ion-back-button>\n </ion-buttons>\n </ion-toolbar>\n</ion-header>\n\n<!-- Danger back button next to a menu button -->\n<ion-header>\n <ion-toolbar>\n <ion-buttons slot=\"start\">\n <ion-menu-button></ion-menu-button>\n <ion-back-button color=\"danger\"></ion-back-button>\n </ion-buttons>\n </ion-toolbar>\n</ion-header>\n```",
871 "react": "```tsx\nimport React from 'react';\nimport { IonBackButton, IonHeader, IonToolbar, IonButtons, IonMenuButton, IonContent } from '@ionic/react';\n\nexport const BackButtonExample: React.FC = () => (\n <IonContent>\n {/*-- Default back button --*/}\n <IonHeader>\n <IonToolbar>\n <IonButtons slot=\"start\">\n <IonBackButton />\n </IonButtons>\n </IonToolbar>\n </IonHeader>\n\n {/*-- Back button with a default href --*/}\n <IonHeader>\n <IonToolbar>\n <IonButtons slot=\"start\">\n <IonBackButton defaultHref=\"home\" />\n </IonButtons>\n </IonToolbar>\n </IonHeader>\n\n {/*-- Back button with custom text and icon --*/}\n <IonHeader>\n <IonToolbar>\n <IonButtons slot=\"start\">\n <IonBackButton text=\"buttonText\" icon=\"buttonIcon\" />\n </IonButtons>\n </IonToolbar>\n </IonHeader>\n\n {/*-- Back button with no text and custom icon --*/}\n <IonHeader>\n <IonToolbar>\n <IonButtons slot=\"start\">\n <IonBackButton text=\"\" icon=\"add\" />\n </IonButtons>\n </IonToolbar>\n </IonHeader>\n\n {/*-- Danger back button next to a menu button --*/}\n <IonHeader>\n <IonToolbar>\n <IonButtons slot=\"start\">\n <IonMenuButton />\n <IonBackButton color=\"danger\" />\n </IonButtons>\n </IonToolbar>\n </IonHeader>\n </IonContent>\n);\n```",
872 "vue": "```html\n<template>\n <!-- Default back button -->\n <ion-header>\n <ion-toolbar>\n <ion-buttons slot=\"start\">\n <ion-back-button></ion-back-button>\n </ion-buttons>\n </ion-toolbar>\n </ion-header>\n\n <!-- Back button with a default href -->\n <ion-header>\n <ion-toolbar>\n <ion-buttons slot=\"start\">\n <ion-back-button default-href=\"home\"></ion-back-button>\n </ion-buttons>\n </ion-toolbar>\n </ion-header>\n\n <!-- Back button with custom text and icon -->\n <ion-header>\n <ion-toolbar>\n <ion-buttons slot=\"start\">\n <ion-back-button\n :text=\"buttonText\"\n :icon=\"buttonIcon\">\n </ion-back-button>\n </ion-buttons>\n </ion-toolbar>\n </ion-header>\n\n <!-- Back button with no text and custom icon -->\n <ion-header>\n <ion-toolbar>\n <ion-buttons slot=\"start\">\n <ion-back-button text=\"\" icon=\"add\"></ion-back-button>\n </ion-buttons>\n </ion-toolbar>\n </ion-header>\n\n <!-- Danger back button next to a menu button -->\n <ion-header>\n <ion-toolbar>\n <ion-buttons slot=\"start\">\n <ion-menu-button></ion-menu-button>\n <ion-back-button color=\"danger\"></ion-back-button>\n </ion-buttons>\n </ion-toolbar>\n </ion-header>\n</template>\n```"
873 },
874 "props": [
875 {
876 "name": "color",
877 "type": "string | undefined",
878 "mutable": false,
879 "attr": "color",
880 "reflectToAttr": false,
881 "docs": "The color to use from your application's color palette.\nDefault options are: `\"primary\"`, `\"secondary\"`, `\"tertiary\"`, `\"success\"`, `\"warning\"`, `\"danger\"`, `\"light\"`, `\"medium\"`, and `\"dark\"`.\nFor more information on colors, see [theming](/docs/theming/basics).",
882 "docsTags": [],
883 "optional": true,
884 "required": false
885 },
886 {
887 "name": "defaultHref",
888 "type": "string | undefined",
889 "mutable": false,
890 "attr": "default-href",
891 "reflectToAttr": false,
892 "docs": "The url to navigate back to by default when there is no history.",
893 "docsTags": [],
894 "optional": true,
895 "required": false
896 },
897 {
898 "name": "disabled",
899 "type": "boolean",
900 "mutable": false,
901 "attr": "disabled",
902 "reflectToAttr": true,
903 "docs": "If `true`, the user cannot interact with the button.",
904 "docsTags": [],
905 "default": "false",
906 "optional": false,
907 "required": false
908 },
909 {
910 "name": "icon",
911 "type": "null | string | undefined",
912 "mutable": false,
913 "attr": "icon",
914 "reflectToAttr": false,
915 "docs": "The icon name to use for the back button.",
916 "docsTags": [],
917 "optional": true,
918 "required": false
919 },
920 {
921 "name": "mode",
922 "type": "\"ios\" | \"md\"",
923 "mutable": false,
924 "attr": "mode",
925 "reflectToAttr": false,
926 "docs": "The mode determines which platform styles to use.",
927 "docsTags": [],
928 "optional": true,
929 "required": false
930 },
931 {
932 "name": "text",
933 "type": "null | string | undefined",
934 "mutable": false,
935 "attr": "text",
936 "reflectToAttr": false,
937 "docs": "The text to display in the back button.",
938 "docsTags": [],
939 "optional": true,
940 "required": false
941 },
942 {
943 "name": "type",
944 "type": "\"button\" | \"reset\" | \"submit\"",
945 "mutable": false,
946 "attr": "type",
947 "reflectToAttr": false,
948 "docs": "The type of the button.",
949 "docsTags": [],
950 "default": "'button'",
951 "optional": false,
952 "required": false
953 }
954 ],
955 "methods": [],
956 "events": [],
957 "styles": [
958 {
959 "name": "--background",
960 "annotation": "prop",
961 "docs": "Background of the button"
962 },
963 {
964 "name": "--background-focused",
965 "annotation": "prop",
966 "docs": "Background of the button when focused with the tab key"
967 },
968 {
969 "name": "--background-hover",
970 "annotation": "prop",
971 "docs": "Background of the button when hover"
972 },
973 {
974 "name": "--border-radius",
975 "annotation": "prop",
976 "docs": "Border radius of the button"
977 },
978 {
979 "name": "--color",
980 "annotation": "prop",
981 "docs": "Text color of the button"
982 },
983 {
984 "name": "--color-focused",
985 "annotation": "prop",
986 "docs": "Text color of the button when focused with the tab key"
987 },
988 {
989 "name": "--color-hover",
990 "annotation": "prop",
991 "docs": "Text color of the button when hover"
992 },
993 {
994 "name": "--icon-font-size",
995 "annotation": "prop",
996 "docs": "Font size of the button icon"
997 },
998 {
999 "name": "--icon-font-weight",
1000 "annotation": "prop",
1001 "docs": "Font weight of the button icon"
1002 },
1003 {
1004 "name": "--icon-margin-bottom",
1005 "annotation": "prop",
1006 "docs": "Bottom margin of the button icon"
1007 },
1008 {
1009 "name": "--icon-margin-end",
1010 "annotation": "prop",
1011 "docs": "Right margin if direction is left-to-right, and left margin if direction is right-to-left of the button icon"
1012 },
1013 {
1014 "name": "--icon-margin-start",
1015 "annotation": "prop",
1016 "docs": "Left margin if direction is left-to-right, and right margin if direction is right-to-left of the button icon"
1017 },
1018 {
1019 "name": "--icon-margin-top",
1020 "annotation": "prop",
1021 "docs": "Top margin of the button icon"
1022 },
1023 {
1024 "name": "--icon-padding-bottom",
1025 "annotation": "prop",
1026 "docs": "Bottom padding of the button icon"
1027 },
1028 {
1029 "name": "--icon-padding-end",
1030 "annotation": "prop",
1031 "docs": "Right padding if direction is left-to-right, and left padding if direction is right-to-left of the button icon"
1032 },
1033 {
1034 "name": "--icon-padding-start",
1035 "annotation": "prop",
1036 "docs": "Left padding if direction is left-to-right, and right padding if direction is right-to-left of the button icon"
1037 },
1038 {
1039 "name": "--icon-padding-top",
1040 "annotation": "prop",
1041 "docs": "Top padding of the button icon"
1042 },
1043 {
1044 "name": "--margin-bottom",
1045 "annotation": "prop",
1046 "docs": "Bottom margin of the button"
1047 },
1048 {
1049 "name": "--margin-end",
1050 "annotation": "prop",
1051 "docs": "Right margin if direction is left-to-right, and left margin if direction is right-to-left of the button"
1052 },
1053 {
1054 "name": "--margin-start",
1055 "annotation": "prop",
1056 "docs": "Left margin if direction is left-to-right, and right margin if direction is right-to-left of the button"
1057 },
1058 {
1059 "name": "--margin-top",
1060 "annotation": "prop",
1061 "docs": "Top margin of the button"
1062 },
1063 {
1064 "name": "--min-height",
1065 "annotation": "prop",
1066 "docs": "Minimum height of the button"
1067 },
1068 {
1069 "name": "--min-width",
1070 "annotation": "prop",
1071 "docs": "Minimum width of the button"
1072 },
1073 {
1074 "name": "--opacity",
1075 "annotation": "prop",
1076 "docs": "Opacity of the button"
1077 },
1078 {
1079 "name": "--padding-bottom",
1080 "annotation": "prop",
1081 "docs": "Bottom padding of the button"
1082 },
1083 {
1084 "name": "--padding-end",
1085 "annotation": "prop",
1086 "docs": "Right padding if direction is left-to-right, and left padding if direction is right-to-left of the button"
1087 },
1088 {
1089 "name": "--padding-start",
1090 "annotation": "prop",
1091 "docs": "Left padding if direction is left-to-right, and right padding if direction is right-to-left of the button"
1092 },
1093 {
1094 "name": "--padding-top",
1095 "annotation": "prop",
1096 "docs": "Top padding of the button"
1097 },
1098 {
1099 "name": "--ripple-color",
1100 "annotation": "prop",
1101 "docs": "Color of the button ripple effect"
1102 },
1103 {
1104 "name": "--transition",
1105 "annotation": "prop",
1106 "docs": "Transition of the button"
1107 }
1108 ],
1109 "slots": []
1110 },
1111 {
1112 "tag": "ion-backdrop",
1113 "filePath": "src/components/backdrop/backdrop.tsx",
1114 "encapsulation": "shadow",
1115 "readme": "# ion-backdrop\n\nBackdrops are full screen components that overlay other components. They are useful behind components that transition in on top of other content and can be used to dismiss that component.\n\n",
1116 "docs": "Backdrops are full screen components that overlay other components. They are useful behind components that transition in on top of other content and can be used to dismiss that component.",
1117 "docsTags": [],
1118 "usage": {
1119 "angular": "```html\n<!-- Default backdrop -->\n<ion-backdrop></ion-backdrop>\n\n<!-- Backdrop that is not tappable -->\n<ion-backdrop tappable=\"false\"></ion-backdrop>\n\n<!-- Backdrop that is not visible -->\n<ion-backdrop visible=\"false\"></ion-backdrop>\n\n<!-- Backdrop with propagation -->\n<ion-backdrop stopPropagation=\"false\"></ion-backdrop>\n\n<!-- Backdrop that sets dynamic properties -->\n<ion-backdrop\n [tappable]=\"enableBackdropDismiss\"\n [visible]=\"showBackdrop\"\n [stopPropagation]=\"shouldPropagate\">\n</ion-backdrop>\n```\n\n```typescript\nimport { Component } from '@angular/core';\n\n@Component({\n selector: 'backdrop-example',\n templateUrl: 'backdrop-example.html',\n styleUrls: ['./backdrop-example.css'],\n})\nexport class BackdropExample {\n backdropDismiss = false;\n showBackdrop = false;\n shouldPropagate = false;\n}\n```\n",
1120 "javascript": "```html\n<!-- Default backdrop -->\n<ion-backdrop></ion-backdrop>\n\n<!-- Backdrop that is not tappable -->\n<ion-backdrop tappable=\"false\"></ion-backdrop>\n\n<!-- Backdrop that is not visible -->\n<ion-backdrop visible=\"false\"></ion-backdrop>\n\n<!-- Backdrop with propagation -->\n<ion-backdrop stop-propagation=\"false\"></ion-backdrop>\n\n<!-- Backdrop that sets dynamic properties -->\n<ion-backdrop id=\"customBackdrop\"></ion-backdrop>\n```\n\n```javascript\nvar backdrop = document.getElementById('customBackdrop');\nbackdrop.visible = false;\nbackdrop.tappable = false;\nbackdrop.stopPropagation = false;\n```",
1121 "react": "```tsx\nimport React from 'react';\nimport { IonBackdrop, IonContent } from '@ionic/react';\n\nexport const BackdropExample: React.FC = () => (\n <IonContent>\n {/*-- Default backdrop --*/}\n <IonBackdrop />\n\n {/*-- Backdrop that is not tappable --*/}\n <IonBackdrop tappable={false} />\n\n {/*-- Backdrop that is not visible --*/}\n <IonBackdrop visible={false} />\n\n {/*-- Backdrop with propagation --*/}\n <IonBackdrop stopPropagation={false} />\n\n <IonBackdrop tappable={true} visible={true} stopPropagation={true} />\n </IonContent>\n);\n```\n",
1122 "vue": "```html\n<template>\n <!-- Default backdrop -->\n <ion-backdrop></ion-backdrop>\n\n <!-- Backdrop that is not tappable -->\n <ion-backdrop tappable=\"false\"></ion-backdrop>\n\n <!-- Backdrop that is not visible -->\n <ion-backdrop visible=\"false\"></ion-backdrop>\n\n <!-- Backdrop with propagation -->\n <ion-backdrop stopPropagation=\"false\"></ion-backdrop>\n\n <!-- Backdrop that sets dynamic properties -->\n <ion-backdrop\n :tappable=\"enableBackdropDismiss\"\n :visible=\"showBackdrop\"\n :stopPropagation=\"shouldPropagate\">\n </ion-backdrop>\n</template>\n\n<script lang=\"ts\">\n import { Component, Vue } from 'vue-property-decorator';\n\n @Component()\n export default class Example extends Vue {\n backdropDismiss = false;\n showBackdrop = false;\n shouldPropagate = false;\n }\n</script>\n```"
1123 },
1124 "props": [
1125 {
1126 "name": "stopPropagation",
1127 "type": "boolean",
1128 "mutable": false,
1129 "attr": "stop-propagation",
1130 "reflectToAttr": false,
1131 "docs": "If `true`, the backdrop will stop propagation on tap.",
1132 "docsTags": [],
1133 "default": "true",
1134 "optional": false,
1135 "required": false
1136 },
1137 {
1138 "name": "tappable",
1139 "type": "boolean",
1140 "mutable": false,
1141 "attr": "tappable",
1142 "reflectToAttr": false,
1143 "docs": "If `true`, the backdrop will can be clicked and will emit the `ionBackdropTap` event.",
1144 "docsTags": [],
1145 "default": "true",
1146 "optional": false,
1147 "required": false
1148 },
1149 {
1150 "name": "visible",
1151 "type": "boolean",
1152 "mutable": false,
1153 "attr": "visible",
1154 "reflectToAttr": false,
1155 "docs": "If `true`, the backdrop will be visible.",
1156 "docsTags": [],
1157 "default": "true",
1158 "optional": false,
1159 "required": false
1160 }
1161 ],
1162 "methods": [],
1163 "events": [
1164 {
1165 "event": "ionBackdropTap",
1166 "detail": "void",
1167 "bubbles": true,
1168 "cancelable": true,
1169 "composed": true,
1170 "docs": "Emitted when the backdrop is tapped.",
1171 "docsTags": []
1172 }
1173 ],
1174 "styles": [],
1175 "slots": []
1176 },
1177 {
1178 "tag": "ion-badge",
1179 "filePath": "src/components/badge/badge.tsx",
1180 "encapsulation": "shadow",
1181 "readme": "# ion-badge\n\nBadges are inline block elements that usually appear near another element. Typically they contain a number or other characters. They can be used as a notification that there are additional items associated with an element and indicate how many items there are.\n\n",
1182 "docs": "Badges are inline block elements that usually appear near another element. Typically they contain a number or other characters. They can be used as a notification that there are additional items associated with an element and indicate how many items there are.",
1183 "docsTags": [
1184 {
1185 "text": "{\"ios\" | \"md\"} mode - The mode determines which platform styles to use.",
1186 "name": "virtualProp"
1187 }
1188 ],
1189 "usage": {
1190 "angular": "```html\n<!-- Default -->\n<ion-badge>99</ion-badge>\n\n<!-- Colors -->\n<ion-badge color=\"primary\">11</ion-badge>\n<ion-badge color=\"secondary\">22</ion-badge>\n<ion-badge color=\"tertiary\">33</ion-badge>\n<ion-badge color=\"success\">44</ion-badge>\n<ion-badge color=\"warning\">55</ion-badge>\n<ion-badge color=\"danger\">66</ion-badge>\n<ion-badge color=\"light\">77</ion-badge>\n<ion-badge color=\"medium\">88</ion-badge>\n<ion-badge color=\"dark\">99</ion-badge>\n\n<!-- Item with badge on left and right -->\n<ion-item>\n <ion-badge slot=\"start\">11</ion-badge>\n <ion-label>My Item</ion-label>\n <ion-badge slot=\"end\">22</ion-badge>\n</ion-item>\n```",
1191 "javascript": "```html\n<!-- Default -->\n<ion-badge>99</ion-badge>\n\n<!-- Colors -->\n<ion-badge color=\"primary\">11</ion-badge>\n<ion-badge color=\"secondary\">22</ion-badge>\n<ion-badge color=\"tertiary\">33</ion-badge>\n<ion-badge color=\"success\">44</ion-badge>\n<ion-badge color=\"warning\">55</ion-badge>\n<ion-badge color=\"danger\">66</ion-badge>\n<ion-badge color=\"light\">77</ion-badge>\n<ion-badge color=\"medium\">88</ion-badge>\n<ion-badge color=\"dark\">99</ion-badge>\n\n<!-- Item with badge on left and right -->\n<ion-item>\n <ion-badge slot=\"start\">11</ion-badge>\n <ion-label>My Item</ion-label>\n <ion-badge slot=\"end\">22</ion-badge>\n</ion-item>\n```",
1192 "react": "```tsx\nimport React from 'react';\nimport { IonBadge, IonItem, IonLabel, IonContent } from '@ionic/react';\n\nexport const BadgeExample: React.FC = () => (\n <IonContent>\n {/*-- Default --*/}\n <IonBadge>99</IonBadge>\n\n {/*-- Colors --*/}\n <IonBadge color=\"primary\">11</IonBadge>\n <IonBadge color=\"secondary\">22</IonBadge>\n <IonBadge color=\"tertiary\">33</IonBadge>\n <IonBadge color=\"success\">44</IonBadge>\n <IonBadge color=\"warning\">55</IonBadge>\n <IonBadge color=\"danger\">66</IonBadge>\n <IonBadge color=\"light\">77</IonBadge>\n <IonBadge color=\"medium\">88</IonBadge>\n <IonBadge color=\"dark\">99</IonBadge>\n\n {/*-- Item with badge on left and right --*/}\n <IonItem>\n <IonBadge slot=\"start\">11</IonBadge>\n <IonLabel>My Item</IonLabel>\n <IonBadge slot=\"end\">22</IonBadge>\n </IonItem>\n </IonContent>\n);\n```\n",
1193 "vue": "```html\n<template>\n <!-- Default -->\n <ion-badge>99</ion-badge>\n\n <!-- Colors -->\n <ion-badge color=\"primary\">11</ion-badge>\n <ion-badge color=\"secondary\">22</ion-badge>\n <ion-badge color=\"tertiary\">33</ion-badge>\n <ion-badge color=\"success\">44</ion-badge>\n <ion-badge color=\"warning\">55</ion-badge>\n <ion-badge color=\"danger\">66</ion-badge>\n <ion-badge color=\"light\">77</ion-badge>\n <ion-badge color=\"medium\">88</ion-badge>\n <ion-badge color=\"dark\">99</ion-badge>\n\n <!-- Item with badge on left and right -->\n <ion-item>\n <ion-badge slot=\"start\">11</ion-badge>\n <ion-label>My Item</ion-label>\n <ion-badge slot=\"end\">22</ion-badge>\n </ion-item>\n</template>\n```"
1194 },
1195 "props": [
1196 {
1197 "name": "color",
1198 "type": "string | undefined",
1199 "mutable": false,
1200 "attr": "color",
1201 "reflectToAttr": false,
1202 "docs": "The color to use from your application's color palette.\nDefault options are: `\"primary\"`, `\"secondary\"`, `\"tertiary\"`, `\"success\"`, `\"warning\"`, `\"danger\"`, `\"light\"`, `\"medium\"`, and `\"dark\"`.\nFor more information on colors, see [theming](/docs/theming/basics).",
1203 "docsTags": [],
1204 "optional": true,
1205 "required": false
1206 },
1207 {
1208 "name": "mode",
1209 "type": "\"ios\" | \"md\"",
1210 "mutable": false,
1211 "attr": "mode",
1212 "reflectToAttr": false,
1213 "docs": "The mode determines which platform styles to use.",
1214 "docsTags": [],
1215 "optional": true,
1216 "required": false
1217 }
1218 ],
1219 "methods": [],
1220 "events": [],
1221 "styles": [
1222 {
1223 "name": "--background",
1224 "annotation": "prop",
1225 "docs": "Background of the badge"
1226 },
1227 {
1228 "name": "--color",
1229 "annotation": "prop",
1230 "docs": "Text color of the badge"
1231 },
1232 {
1233 "name": "--padding-bottom",
1234 "annotation": "prop",
1235 "docs": "Bottom padding of the badge"
1236 },
1237 {
1238 "name": "--padding-end",
1239 "annotation": "prop",
1240 "docs": "Right padding if direction is left-to-right, and left padding if direction is right-to-left of the badge"
1241 },
1242 {
1243 "name": "--padding-start",
1244 "annotation": "prop",
1245 "docs": "Left padding if direction is left-to-right, and right padding if direction is right-to-left of the badge"
1246 },
1247 {
1248 "name": "--padding-top",
1249 "annotation": "prop",
1250 "docs": "Top padding of the badge"
1251 }
1252 ],
1253 "slots": []
1254 },
1255 {
1256 "tag": "ion-button",
1257 "filePath": "src/components/button/button.tsx",
1258 "encapsulation": "shadow",
1259 "readme": "# ion-button\n\nButtons provide a clickable element, which can be used in forms, or anywhere that needs simple, standard button functionality. They may display text, icons, or both. Buttons can be styled with several attributes to look a specific way.\n\n## Expand\n\nThis attribute lets you specify how wide the button should be. By default, buttons are inline blocks, but setting this attribute will change the button to a full-width block element.\n\n| Value | Details |\n|----------------|------------------------------------------------------------------------------|\n| `block` | Full-width button with rounded corners. |\n| `full` | Full-width button with square corners and no border on the left or right. |\n\n## Fill\n\nThis attributes determines the background and border color of the button. By default, buttons have a solid background unless the button is inside of a toolbar, in which case it has a transparent background.\n\n| Value | Details |\n|----------------|------------------------------------------------------------------------------|\n| `clear` | Button with a transparent background that resembles a flat button. |\n| `outline` | Button with a transparent background and a visible border. |\n| `solid` | Button with a filled background. Useful for buttons in a toolbar. |\n\n## Size\n\nThis attribute specifies the size of the button. Setting this attribute will change the height and padding of a button.\n\n| Value | Details |\n|----------------|------------------------------------------------------------------------------|\n| `small` | Button with less height and padding. Default for buttons in an item. |\n| `default` | Button with the default height and padding. Useful for buttons in an item. |\n| `large` | Button with more height and padding. |\n\n",
1260 "docs": "Buttons provide a clickable element, which can be used in forms, or anywhere that needs simple, standard button functionality. They may display text, icons, or both. Buttons can be styled with several attributes to look a specific way.",
1261 "docsTags": [
1262 {
1263 "text": "{\"ios\" | \"md\"} mode - The mode determines which platform styles to use.",
1264 "name": "virtualProp"
1265 },
1266 {
1267 "text": "- Content is placed between the named slots if provided without a slot.",
1268 "name": "slot"
1269 },
1270 {
1271 "text": "icon-only - Should be used on an icon in a button that has no text.",
1272 "name": "slot"
1273 },
1274 {
1275 "text": "start - Content is placed to the left of the button text in LTR, and to the right in RTL.",
1276 "name": "slot"
1277 },
1278 {
1279 "text": "end - Content is placed to the right of the button text in LTR, and to the left in RTL.",
1280 "name": "slot"
1281 }
1282 ],
1283 "usage": {
1284 "angular": "\n```html\n<!-- Default -->\n<ion-button>Default</ion-button>\n\n<!-- Anchor -->\n<ion-button href=\"#\">Anchor</ion-button>\n\n<!-- Colors -->\n<ion-button color=\"primary\">Primary</ion-button>\n<ion-button color=\"secondary\">Secondary</ion-button>\n<ion-button color=\"tertiary\">Tertiary</ion-button>\n<ion-button color=\"success\">Success</ion-button>\n<ion-button color=\"warning\">Warning</ion-button>\n<ion-button color=\"danger\">Danger</ion-button>\n<ion-button color=\"light\">Light</ion-button>\n<ion-button color=\"medium\">Medium</ion-button>\n<ion-button color=\"dark\">Dark</ion-button>\n\n<!-- Expand -->\n<ion-button expand=\"full\">Full Button</ion-button>\n<ion-button expand=\"block\">Block Button</ion-button>\n\n<!-- Round -->\n<ion-button shape=\"round\">Round Button</ion-button>\n\n<!-- Fill -->\n<ion-button expand=\"full\" fill=\"outline\">Outline + Full</ion-button>\n<ion-button expand=\"block\" fill=\"outline\">Outline + Block</ion-button>\n<ion-button shape=\"round\" fill=\"outline\">Outline + Round</ion-button>\n\n<!-- Icons -->\n<ion-button>\n <ion-icon slot=\"start\" name=\"star\"></ion-icon>\n Left Icon\n</ion-button>\n\n<ion-button>\n Right Icon\n <ion-icon slot=\"end\" name=\"star\"></ion-icon>\n</ion-button>\n\n<ion-button>\n <ion-icon slot=\"icon-only\" name=\"star\"></ion-icon>\n</ion-button>\n\n<!-- Sizes -->\n<ion-button size=\"large\">Large</ion-button>\n<ion-button>Default</ion-button>\n<ion-button size=\"small\">Small</ion-button>\n```\n",
1285 "javascript": "\n```html\n<!-- Default -->\n<ion-button>Default</ion-button>\n\n<!-- Anchor -->\n<ion-button href=\"#\">Anchor</ion-button>\n\n<!-- Colors -->\n<ion-button color=\"primary\">Primary</ion-button>\n<ion-button color=\"secondary\">Secondary</ion-button>\n<ion-button color=\"tertiary\">Tertiary</ion-button>\n<ion-button color=\"success\">Success</ion-button>\n<ion-button color=\"warning\">Warning</ion-button>\n<ion-button color=\"danger\">Danger</ion-button>\n<ion-button color=\"light\">Light</ion-button>\n<ion-button color=\"medium\">Medium</ion-button>\n<ion-button color=\"dark\">Dark</ion-button>\n\n<!-- Expand -->\n<ion-button expand=\"full\">Full Button</ion-button>\n<ion-button expand=\"block\">Block Button</ion-button>\n\n<!-- Round -->\n<ion-button shape=\"round\">Round Button</ion-button>\n\n<!-- Fill -->\n<ion-button expand=\"full\" fill=\"outline\">Outline + Full</ion-button>\n<ion-button expand=\"block\" fill=\"outline\">Outline + Block</ion-button>\n<ion-button shape=\"round\" fill=\"outline\">Outline + Round</ion-button>\n\n<!-- Icons -->\n<ion-button>\n <ion-icon slot=\"start\" name=\"star\"></ion-icon>\n Left Icon\n</ion-button>\n\n<ion-button>\n Right Icon\n <ion-icon slot=\"end\" name=\"star\"></ion-icon>\n</ion-button>\n\n<ion-button>\n <ion-icon slot=\"icon-only\" name=\"star\"></ion-icon>\n</ion-button>\n\n<!-- Sizes -->\n<ion-button size=\"large\">Large</ion-button>\n<ion-button>Default</ion-button>\n<ion-button size=\"small\">Small</ion-button>\n```\n",
1286 "react": "```tsx\nimport React from 'react';\n\nimport { IonButton, IonIcon, IonContent } from '@ionic/react';\n\nexport const ButtonExample: React.FC = () => (\n <IonContent>\n {/*-- Default --*/}\n <IonButton>Default</IonButton>\n\n {/*-- Anchor --*/}\n <IonButton href=\"#\">Anchor</IonButton>\n\n {/*-- Colors --*/}\n <IonButton color=\"primary\">Primary</IonButton>\n <IonButton color=\"secondary\">Secondary</IonButton>\n <IonButton color=\"tertiary\">Tertiary</IonButton>\n <IonButton color=\"success\">Success</IonButton>\n <IonButton color=\"warning\">Warning</IonButton>\n <IonButton color=\"danger\">Danger</IonButton>\n <IonButton color=\"light\">Light</IonButton>\n <IonButton color=\"medium\">Medium</IonButton>\n <IonButton color=\"dark\">Dark</IonButton>\n\n {/*-- Expand --*/}\n <IonButton expand=\"full\">Full Button</IonButton>\n <IonButton expand=\"block\">Block Button</IonButton>\n\n {/*-- Round --*/}\n <IonButton shape=\"round\">Round Button</IonButton>\n\n {/*-- Fill --*/}\n <IonButton expand=\"full\" fill=\"outline\">Outline + Full</IonButton>\n <IonButton expand=\"block\" fill=\"outline\">Outline + Block</IonButton>\n <IonButton shape=\"round\" fill=\"outline\">Outline + Round</IonButton>\n\n {/*-- Icons --*/}\n <IonButton>\n <IonIcon slot=\"start\" name=\"star\" />\n Left Icon\n </IonButton>\n\n <IonButton>\n Right Icon\n <IonIcon slot=\"end\" name=\"star\" />\n </IonButton>\n\n <IonButton>\n <IonIcon slot=\"icon-only\" name=\"star\" />\n </IonButton>\n\n {/*-- Sizes --*/}\n <IonButton size=\"large\">Large</IonButton>\n <IonButton>Default</IonButton>\n <IonButton size=\"small\">Small</IonButton>\n </IonContent>\n);\n\n```\n",
1287 "vue": "```html\n<template>\n <!-- Default -->\n <ion-button>Default</ion-button>\n\n <!-- Anchor -->\n <ion-button href=\"#\">Anchor</ion-button>\n\n <!-- Colors -->\n <ion-button color=\"primary\">Primary</ion-button>\n <ion-button color=\"secondary\">Secondary</ion-button>\n <ion-button color=\"tertiary\">Tertiary</ion-button>\n <ion-button color=\"success\">Success</ion-button>\n <ion-button color=\"warning\">Warning</ion-button>\n <ion-button color=\"danger\">Danger</ion-button>\n <ion-button color=\"light\">Light</ion-button>\n <ion-button color=\"medium\">Medium</ion-button>\n <ion-button color=\"dark\">Dark</ion-button>\n\n <!-- Expand -->\n <ion-button expand=\"full\">Full Button</ion-button>\n <ion-button expand=\"block\">Block Button</ion-button>\n\n <!-- Round -->\n <ion-button shape=\"round\">Round Button</ion-button>\n\n <!-- Fill -->\n <ion-button expand=\"full\" fill=\"outline\">Outline + Full</ion-button>\n <ion-button expand=\"block\" fill=\"outline\">Outline + Block</ion-button>\n <ion-button shape=\"round\" fill=\"outline\">Outline + Round</ion-button>\n\n <!-- Icons -->\n <ion-button>\n <ion-icon slot=\"start\" name=\"star\"></ion-icon>\n Left Icon\n </ion-button>\n\n <ion-button>\n Right Icon\n <ion-icon slot=\"end\" name=\"star\"></ion-icon>\n </ion-button>\n\n <ion-button>\n <ion-icon slot=\"icon-only\" name=\"star\"></ion-icon>\n </ion-button>\n\n <!-- Sizes -->\n <ion-button size=\"large\">Large</ion-button>\n <ion-button>Default</ion-button>\n <ion-button size=\"small\">Small</ion-button>\n</template>\n```\n"
1288 },
1289 "props": [
1290 {
1291 "name": "buttonType",
1292 "type": "string",
1293 "mutable": true,
1294 "attr": "button-type",
1295 "reflectToAttr": false,
1296 "docs": "The type of button.",
1297 "docsTags": [],
1298 "default": "'button'",
1299 "optional": false,
1300 "required": false
1301 },
1302 {
1303 "name": "color",
1304 "type": "string | undefined",
1305 "mutable": false,
1306 "attr": "color",
1307 "reflectToAttr": false,
1308 "docs": "The color to use from your application's color palette.\nDefault options are: `\"primary\"`, `\"secondary\"`, `\"tertiary\"`, `\"success\"`, `\"warning\"`, `\"danger\"`, `\"light\"`, `\"medium\"`, and `\"dark\"`.\nFor more information on colors, see [theming](/docs/theming/basics).",
1309 "docsTags": [],
1310 "optional": true,
1311 "required": false
1312 },
1313 {
1314 "name": "disabled",
1315 "type": "boolean",
1316 "mutable": false,
1317 "attr": "disabled",
1318 "reflectToAttr": true,
1319 "docs": "If `true`, the user cannot interact with the button.",
1320 "docsTags": [],
1321 "default": "false",
1322 "optional": false,
1323 "required": false
1324 },
1325 {
1326 "name": "download",
1327 "type": "string | undefined",
1328 "mutable": false,
1329 "attr": "download",
1330 "reflectToAttr": false,
1331 "docs": "This attribute instructs browsers to download a URL instead of navigating to\nit, so the user will be prompted to save it as a local file. If the attribute\nhas a value, it is used as the pre-filled file name in the Save prompt\n(the user can still change the file name if they want).",
1332 "docsTags": [],
1333 "optional": false,
1334 "required": false
1335 },
1336 {
1337 "name": "expand",
1338 "type": "\"block\" | \"full\" | undefined",
1339 "mutable": false,
1340 "attr": "expand",
1341 "reflectToAttr": true,
1342 "docs": "Set to `\"block\"` for a full-width button or to `\"full\"` for a full-width button\nwithout left and right borders.",
1343 "docsTags": [],
1344 "optional": true,
1345 "required": false
1346 },
1347 {
1348 "name": "fill",
1349 "type": "\"clear\" | \"default\" | \"outline\" | \"solid\" | undefined",
1350 "mutable": true,
1351 "attr": "fill",
1352 "reflectToAttr": true,
1353 "docs": "Set to `\"clear\"` for a transparent button, to `\"outline\"` for a transparent\nbutton with a border, or to `\"solid\"`. The default style is `\"solid\"` except inside of\na toolbar, where the default is `\"clear\"`.",
1354 "docsTags": [],
1355 "optional": true,
1356 "required": false
1357 },
1358 {
1359 "name": "href",
1360 "type": "string | undefined",
1361 "mutable": false,
1362 "attr": "href",
1363 "reflectToAttr": false,
1364 "docs": "Contains a URL or a URL fragment that the hyperlink points to.\nIf this property is set, an anchor tag will be rendered.",
1365 "docsTags": [],
1366 "optional": false,
1367 "required": false
1368 },
1369 {
1370 "name": "mode",
1371 "type": "\"ios\" | \"md\"",
1372 "mutable": false,
1373 "attr": "mode",
1374 "reflectToAttr": false,
1375 "docs": "The mode determines which platform styles to use.",
1376 "docsTags": [],
1377 "optional": true,
1378 "required": false
1379 },
1380 {
1381 "name": "rel",
1382 "type": "string | undefined",
1383 "mutable": false,
1384 "attr": "rel",
1385 "reflectToAttr": false,
1386 "docs": "Specifies the relationship of the target object to the link object.\nThe value is a space-separated list of [link types](https://developer.mozilla.org/en-US/docs/Web/HTML/Link_types).",
1387 "docsTags": [],
1388 "optional": false,
1389 "required": false
1390 },
1391 {
1392 "name": "routerDirection",
1393 "type": "\"back\" | \"forward\" | \"root\"",
1394 "mutable": false,
1395 "attr": "router-direction",
1396 "reflectToAttr": false,
1397 "docs": "When using a router, it specifies the transition direction when navigating to\nanother page using `href`.",
1398 "docsTags": [],
1399 "default": "'forward'",
1400 "optional": false,
1401 "required": false
1402 },
1403 {
1404 "name": "shape",
1405 "type": "\"round\" | undefined",
1406 "mutable": false,
1407 "attr": "shape",
1408 "reflectToAttr": true,
1409 "docs": "The button shape.",
1410 "docsTags": [],
1411 "optional": true,
1412 "required": false
1413 },
1414 {
1415 "name": "size",
1416 "type": "\"default\" | \"large\" | \"small\" | undefined",
1417 "mutable": false,
1418 "attr": "size",
1419 "reflectToAttr": true,
1420 "docs": "The button size.",
1421 "docsTags": [],
1422 "optional": true,
1423 "required": false
1424 },
1425 {
1426 "name": "strong",
1427 "type": "boolean",
1428 "mutable": false,
1429 "attr": "strong",
1430 "reflectToAttr": false,
1431 "docs": "If `true`, activates a button with a heavier font weight.",
1432 "docsTags": [],
1433 "default": "false",
1434 "optional": false,
1435 "required": false
1436 },
1437 {
1438 "name": "target",
1439 "type": "string | undefined",
1440 "mutable": false,
1441 "attr": "target",
1442 "reflectToAttr": false,
1443 "docs": "Specifies where to display the linked URL.\nOnly applies when an `href` is provided.\nSpecial keywords: `\"_blank\"`, `\"_self\"`, `\"_parent\"`, `\"_top\"`.",
1444 "docsTags": [],
1445 "optional": false,
1446 "required": false
1447 },
1448 {
1449 "name": "type",
1450 "type": "\"button\" | \"reset\" | \"submit\"",
1451 "mutable": false,
1452 "attr": "type",
1453 "reflectToAttr": false,
1454 "docs": "The type of the button.",
1455 "docsTags": [],
1456 "default": "'button'",
1457 "optional": false,
1458 "required": false
1459 }
1460 ],
1461 "methods": [],
1462 "events": [
1463 {
1464 "event": "ionBlur",
1465 "detail": "void",
1466 "bubbles": true,
1467 "cancelable": true,
1468 "composed": true,
1469 "docs": "Emitted when the button loses focus.",
1470 "docsTags": []
1471 },
1472 {
1473 "event": "ionFocus",
1474 "detail": "void",
1475 "bubbles": true,
1476 "cancelable": true,
1477 "composed": true,
1478 "docs": "Emitted when the button has focus.",
1479 "docsTags": []
1480 }
1481 ],
1482 "styles": [
1483 {
1484 "name": "--background",
1485 "annotation": "prop",
1486 "docs": "Background of the button"
1487 },
1488 {
1489 "name": "--background-activated",
1490 "annotation": "prop",
1491 "docs": "Background of the button when pressed"
1492 },
1493 {
1494 "name": "--background-focused",
1495 "annotation": "prop",
1496 "docs": "Background of the button when focused with the tab key"
1497 },
1498 {
1499 "name": "--background-hover",
1500 "annotation": "prop",
1501 "docs": "Background of the button on hover"
1502 },
1503 {
1504 "name": "--border-color",
1505 "annotation": "prop",
1506 "docs": "Border color of the button"
1507 },
1508 {
1509 "name": "--border-radius",
1510 "annotation": "prop",
1511 "docs": "Border radius of the button"
1512 },
1513 {
1514 "name": "--border-style",
1515 "annotation": "prop",
1516 "docs": "Border style of the button"
1517 },
1518 {
1519 "name": "--border-width",
1520 "annotation": "prop",
1521 "docs": "Border width of the button"
1522 },
1523 {
1524 "name": "--box-shadow",
1525 "annotation": "prop",
1526 "docs": "Box shadow of the button"
1527 },
1528 {
1529 "name": "--color",
1530 "annotation": "prop",
1531 "docs": "Text color of the button"
1532 },
1533 {
1534 "name": "--color-activated",
1535 "annotation": "prop",
1536 "docs": "Text color of the button when pressed"
1537 },
1538 {
1539 "name": "--color-focused",
1540 "annotation": "prop",
1541 "docs": "Text color of the button when focused with the tab key"
1542 },
1543 {
1544 "name": "--color-hover",
1545 "annotation": "prop",
1546 "docs": "Text color of the button when hover"
1547 },
1548 {
1549 "name": "--opacity",
1550 "annotation": "prop",
1551 "docs": "Opacity of the button"
1552 },
1553 {
1554 "name": "--padding-bottom",
1555 "annotation": "prop",
1556 "docs": "Bottom padding of the button"
1557 },
1558 {
1559 "name": "--padding-end",
1560 "annotation": "prop",
1561 "docs": "Right padding if direction is left-to-right, and left padding if direction is right-to-left of the button"
1562 },
1563 {
1564 "name": "--padding-start",
1565 "annotation": "prop",
1566 "docs": "Left padding if direction is left-to-right, and right padding if direction is right-to-left of the button"
1567 },
1568 {
1569 "name": "--padding-top",
1570 "annotation": "prop",
1571 "docs": "Top padding of the button"
1572 },
1573 {
1574 "name": "--ripple-color",
1575 "annotation": "prop",
1576 "docs": "Color of the button ripple effect"
1577 },
1578 {
1579 "name": "--transition",
1580 "annotation": "prop",
1581 "docs": "Transition of the button"
1582 }
1583 ],
1584 "slots": [
1585 {
1586 "name": "",
1587 "docs": "Content is placed between the named slots if provided without a slot."
1588 },
1589 {
1590 "name": "end",
1591 "docs": "Content is placed to the right of the button text in LTR, and to the left in RTL."
1592 },
1593 {
1594 "name": "icon-only",
1595 "docs": "Should be used on an icon in a button that has no text."
1596 },
1597 {
1598 "name": "start",
1599 "docs": "Content is placed to the left of the button text in LTR, and to the right in RTL."
1600 }
1601 ]
1602 },
1603 {
1604 "tag": "ion-buttons",
1605 "filePath": "src/components/buttons/buttons.tsx",
1606 "encapsulation": "scoped",
1607 "readme": "# ion-buttons\n\nThe Buttons component is a container element. Buttons placed in a toolbar should be placed inside of the `<ion-buttons>` element.\n\nThe `<ion-buttons>` element can be positioned inside of the toolbar using a named slot. The below chart has a description of each slot.\n\n| Slot | Description |\n|--------------|----------------------------------------------------------------------------------------------------------|\n| `secondary` | Positions element to the `left` of the content in `ios` mode, and directly to the `right` in `md` mode. |\n| `primary` | Positions element to the `right` of the content in `ios` mode, and to the far `right` in `md` mode. |\n| `start` | Positions to the `left` of the content in LTR, and to the `right` in RTL. |\n| `end` | Positions to the `right` of the content in LTR, and to the `left` in RTL. |\n\n",
1608 "docs": "The Buttons component is a container element. Buttons placed in a toolbar should be placed inside of the `<ion-buttons>` element.\n\nThe `<ion-buttons>` element can be positioned inside of the toolbar using a named slot. The below chart has a description of each slot.\n\n| Slot | Description |\n|--------------|----------------------------------------------------------------------------------------------------------|\n| `secondary` | Positions element to the `left` of the content in `ios` mode, and directly to the `right` in `md` mode. |\n| `primary` | Positions element to the `right` of the content in `ios` mode, and to the far `right` in `md` mode. |\n| `start` | Positions to the `left` of the content in LTR, and to the `right` in RTL. |\n| `end` | Positions to the `right` of the content in LTR, and to the `left` in RTL. |",
1609 "docsTags": [],
1610 "usage": {
1611 "angular": "```html\n<ion-toolbar>\n <ion-buttons slot=\"start\">\n <ion-back-button></ion-back-button>\n </ion-buttons>\n <ion-title>Back Button</ion-title>\n</ion-toolbar>\n\n<ion-toolbar>\n <ion-buttons slot=\"secondary\">\n <ion-button>\n <ion-icon slot=\"icon-only\" name=\"contact\"></ion-icon>\n </ion-button>\n <ion-button>\n <ion-icon slot=\"icon-only\" name=\"search\"></ion-icon>\n </ion-button>\n </ion-buttons>\n <ion-title>Default Buttons</ion-title>\n <ion-buttons slot=\"primary\">\n <ion-button color=\"secondary\">\n <ion-icon slot=\"icon-only\" name=\"more\"></ion-icon>\n </ion-button>\n </ion-buttons>\n</ion-toolbar>\n\n<ion-toolbar>\n <ion-buttons slot=\"primary\">\n <ion-button (click)=\"clickedStar()\">\n <ion-icon slot=\"icon-only\" name=\"star\"></ion-icon>\n </ion-button>\n </ion-buttons>\n <ion-title>Right side menu toggle</ion-title>\n <ion-buttons slot=\"end\">\n <ion-menu-button autoHide=\"false\"></ion-menu-button>\n </ion-buttons>\n</ion-toolbar>\n```",
1612 "javascript": "```html\n<ion-toolbar>\n <ion-buttons slot=\"start\">\n <ion-back-button></ion-back-button>\n </ion-buttons>\n <ion-title>Back Button</ion-title>\n</ion-toolbar>\n\n<ion-toolbar>\n <ion-buttons slot=\"secondary\">\n <ion-button>\n <ion-icon slot=\"icon-only\" name=\"contact\"></ion-icon>\n </ion-button>\n <ion-button>\n <ion-icon slot=\"icon-only\" name=\"search\"></ion-icon>\n </ion-button>\n </ion-buttons>\n <ion-title>Default Buttons</ion-title>\n <ion-buttons slot=\"primary\">\n <ion-button color=\"secondary\">\n <ion-icon slot=\"icon-only\" name=\"more\"></ion-icon>\n </ion-button>\n </ion-buttons>\n</ion-toolbar>\n\n<ion-toolbar>\n <ion-buttons slot=\"primary\">\n <ion-button onclick=\"clickedStar()\">\n <ion-icon slot=\"icon-only\" name=\"star\"></ion-icon>\n </ion-button>\n </ion-buttons>\n <ion-title>Right side menu toggle</ion-title>\n <ion-buttons slot=\"end\">\n <ion-menu-toggle auto-hide=\"false\">\n <ion-button>\n <ion-icon slot=\"icon-only\" name=\"menu\"></ion-icon>\n </ion-button>\n </ion-menu-toggle>\n </ion-buttons>\n</ion-toolbar>\n```",
1613 "react": "```tsx\nimport React from 'react';\nimport {\n IonButtons,\n IonToolbar,\n IonBackButton,\n IonTitle,\n IonButton,\n IonIcon,\n IonMenuButton,\n IonContent\n} from '@ionic/react';\n\nexport const ButtonsExample: React.FC = () => (\n <IonContent>\n <IonToolbar>\n <IonButtons slot=\"start\">\n <IonBackButton defaultHref=\"/\" />\n </IonButtons>\n <IonTitle>Back Button</IonTitle>\n </IonToolbar>\n\n <IonToolbar>\n <IonButtons slot=\"secondary\">\n <IonButton>\n <IonIcon slot=\"icon-only\" name=\"contact\" />\n </IonButton>\n <IonButton>\n <IonIcon slot=\"icon-only\" name=\"search\" />\n </IonButton>\n </IonButtons>\n <IonTitle>Default Buttons</IonTitle>\n <IonButtons slot=\"primary\">\n <IonButton color=\"secondary\">\n <IonIcon slot=\"icon-only\" name=\"more\" />\n </IonButton>\n </IonButtons>\n </IonToolbar>\n\n <IonToolbar>\n <IonButtons slot=\"primary\">\n <IonButton onClick={() => {}}>\n <IonIcon slot=\"icon-only\" name=\"star\" />\n </IonButton>\n </IonButtons>\n <IonTitle>Right side menu toggle</IonTitle>\n <IonButtons slot=\"end\">\n <IonMenuButton autoHide={false} />\n </IonButtons>\n </IonToolbar>\n </IonContent>\n);\n```",
1614 "vue": "```html\n<template>\n <ion-toolbar>\n <ion-buttons slot=\"start\">\n <ion-back-button></ion-back-button>\n </ion-buttons>\n <ion-title>Back Button</ion-title>\n </ion-toolbar>\n\n <ion-toolbar>\n <ion-buttons slot=\"secondary\">\n <ion-button>\n <ion-icon slot=\"icon-only\" name=\"contact\"></ion-icon>\n </ion-button>\n <ion-button>\n <ion-icon slot=\"icon-only\" name=\"search\"></ion-icon>\n </ion-button>\n </ion-buttons>\n <ion-title>Default Buttons</ion-title>\n <ion-buttons slot=\"primary\">\n <ion-button color=\"secondary\">\n <ion-icon slot=\"icon-only\" name=\"more\"></ion-icon>\n </ion-button>\n </ion-buttons>\n </ion-toolbar>\n\n <ion-toolbar>\n <ion-buttons slot=\"primary\">\n <ion-button @click=\"clickedStar()\">\n <ion-icon slot=\"icon-only\" name=\"star\"></ion-icon>\n </ion-button>\n </ion-buttons>\n <ion-title>Right side menu toggle</ion-title>\n <ion-buttons slot=\"end\">\n <ion-menu-button autoHide=\"false\"></ion-menu-button>\n </ion-buttons>\n </ion-toolbar>\n</template>\n```"
1615 },
1616 "props": [
1617 {
1618 "name": "collapse",
1619 "type": "boolean",
1620 "mutable": false,
1621 "attr": "collapse",
1622 "reflectToAttr": false,
1623 "docs": "If true, buttons will disappear when its\nparent toolbar has fully collapsed if the toolbar\nis not the first toolbar. If the toolbar is the\nfirst toolbar, the buttons will be hidden and will\nonly be shown once all toolbars have fully collapsed.\n\nOnly applies in `ios` mode with `collapse` set to\n`true` on `ion-header`",
1624 "docsTags": [],
1625 "default": "false",
1626 "optional": false,
1627 "required": false
1628 }
1629 ],
1630 "methods": [],
1631 "events": [],
1632 "styles": [],
1633 "slots": []
1634 },
1635 {
1636 "tag": "ion-card",
1637 "filePath": "src/components/card/card.tsx",
1638 "encapsulation": "scoped",
1639 "readme": "# ion-card\n\nCards are a standard piece of UI that serves as an entry point to more detailed\ninformation. A card can be a single component, but is often made up of some\nheader, title, subtitle, and content. `ion-card` is broken up into several\nsub-components to reflect this. Please see `ion-card-content`,\n`ion-card-header`, `ion-card-title`, `ion-card-subtitle`.\n",
1640 "docs": "Cards are a standard piece of UI that serves as an entry point to more detailed\ninformation. A card can be a single component, but is often made up of some\nheader, title, subtitle, and content. `ion-card` is broken up into several\nsub-components to reflect this. Please see `ion-card-content`,\n`ion-card-header`, `ion-card-title`, `ion-card-subtitle`.",
1641 "docsTags": [
1642 {
1643 "text": "{\"ios\" | \"md\"} mode - The mode determines which platform styles to use.",
1644 "name": "virtualProp"
1645 }
1646 ],
1647 "usage": {
1648 "angular": "```html\n<ion-card>\n <ion-card-header>\n <ion-card-subtitle>Card Subtitle</ion-card-subtitle>\n <ion-card-title>Card Title</ion-card-title>\n </ion-card-header>\n\n <ion-card-content>\n Keep close to Nature's heart... and break clear away, once in awhile,\n and climb a mountain or spend a week in the woods. Wash your spirit clean.\n </ion-card-content>\n</ion-card>\n\n<ion-card>\n <ion-item>\n <ion-icon name=\"pin\" slot=\"start\"></ion-icon>\n <ion-label>ion-item in a card, icon left, button right</ion-label>\n <ion-button fill=\"outline\" slot=\"end\">View</ion-button>\n </ion-item>\n\n <ion-card-content>\n This is content, without any paragraph or header tags,\n within an ion-card-content element.\n </ion-card-content>\n</ion-card>\n\n<ion-card>\n <ion-item href=\"#\" class=\"activated\">\n <ion-icon name=\"wifi\" slot=\"start\"></ion-icon>\n <ion-label>Card Link Item 1 .activated</ion-label>\n </ion-item>\n\n <ion-item href=\"#\">\n <ion-icon name=\"wine\" slot=\"start\"></ion-icon>\n <ion-label>Card Link Item 2</ion-label>\n </ion-item>\n\n <ion-item class=\"activated\">\n <ion-icon name=\"warning\" slot=\"start\"></ion-icon>\n <ion-label>Card Button Item 1 .activated</ion-label>\n </ion-item>\n\n <ion-item>\n <ion-icon name=\"walk\" slot=\"start\"></ion-icon>\n <ion-label>Card Button Item 2</ion-label>\n </ion-item>\n</ion-card>\n```",
1649 "javascript": "```html\n<ion-card>\n <ion-card-header>\n <ion-card-subtitle>Card Subtitle</ion-card-subtitle>\n <ion-card-title>Card Title</ion-card-title>\n </ion-card-header>\n\n <ion-card-content>\n Keep close to Nature's heart... and break clear away, once in awhile,\n and climb a mountain or spend a week in the woods. Wash your spirit clean.\n </ion-card-content>\n</ion-card>\n\n<ion-card>\n <ion-item>\n <ion-icon name=\"pin\" slot=\"start\"></ion-icon>\n <ion-label>ion-item in a card, icon left, button right</ion-label>\n <ion-button fill=\"outline\" slot=\"end\">View</ion-button>\n </ion-item>\n\n <ion-card-content>\n This is content, without any paragraph or header tags,\n within an ion-card-content element.\n </ion-card-content>\n</ion-card>\n\n<ion-card>\n <ion-item href=\"#\" class=\"activated\">\n <ion-icon name=\"wifi\" slot=\"start\"></ion-icon>\n <ion-label>Card Link Item 1 .activated</ion-label>\n </ion-item>\n\n <ion-item href=\"#\">\n <ion-icon name=\"wine\" slot=\"start\"></ion-icon>\n <ion-label>Card Link Item 2</ion-label>\n </ion-item>\n\n <ion-item class=\"activated\">\n <ion-icon name=\"warning\" slot=\"start\"></ion-icon>\n <ion-label>Card Button Item 1 .activated</ion-label>\n </ion-item>\n\n <ion-item>\n <ion-icon name=\"walk\" slot=\"start\"></ion-icon>\n <ion-label>Card Button Item 2</ion-label>\n </ion-item>\n</ion-card>\n```",
1650 "react": "```tsx\nimport React from 'react';\nimport { IonButton, IonCard, IonCardContent, IonCardHeader, IonCardSubtitle, IonCardTitle, IonContent, IonIcon, IonItem, IonLabel } from '@ionic/react';\n\nexport const CardExample: React.FC = () => (\n <IonContent>\n <IonCard>\n <IonCardHeader>\n <IonCardSubtitle>Card Subtitle</IonCardSubtitle>\n <IonCardTitle>Card Title</IonCardTitle>\n </IonCardHeader>\n\n <IonCardContent>\n Keep close to Nature's heart... and break clear away, once in awhile,\n and climb a mountain or spend a week in the woods. Wash your spirit clean.\n </IonCardContent>\n </IonCard>\n\n <IonCard>\n <IonItem>\n <IonIcon name=\"pin\" slot=\"start\" />\n <IonLabel>ion-item in a card, icon left, button right</IonLabel>\n <IonButton fill=\"outline\" slot=\"end\">View</IonButton>\n </IonItem>\n\n <IonCardContent>\n This is content, without any paragraph or header tags,\n within an ion-cardContent element.\n </IonCardContent>\n </IonCard>\n\n <IonCard>\n <IonItem href=\"#\" class=\"activated\">\n <IonIcon name=\"wifi\" slot=\"start\" />\n <IonLabel>Card Link Item 1 .activated</IonLabel>\n </IonItem>\n\n <IonItem href=\"#\">\n <IonIcon name=\"wine\" slot=\"start\" />\n <IonLabel>Card Link Item 2</IonLabel>\n </IonItem>\n\n <IonItem class=\"activated\">\n <IonIcon name=\"warning\" slot=\"start\" />\n <IonLabel>Card Button Item 1 .activated</IonLabel>\n </IonItem>\n\n <IonItem>\n <IonIcon name=\"walk\" slot=\"start\" />\n <IonLabel>Card Button Item 2</IonLabel>\n </IonItem>\n </IonCard>\n </IonContent>\n);\n```",
1651 "vue": "```html\n<template>\n <ion-card>\n <ion-card-header>\n <ion-card-subtitle>Card Subtitle</ion-card-subtitle>\n <ion-card-title>Card Title</ion-card-title>\n </ion-card-header>\n\n <ion-card-content>\n Keep close to Nature's heart... and break clear away, once in awhile,\n and climb a mountain or spend a week in the woods. Wash your spirit clean.\n </ion-card-content>\n </ion-card>\n\n <ion-card>\n <ion-item>\n <ion-icon name=\"pin\" slot=\"start\"></ion-icon>\n <ion-label>ion-item in a card, icon left, button right</ion-label>\n <ion-button fill=\"outline\" slot=\"end\">View</ion-button>\n </ion-item>\n\n <ion-card-content>\n This is content, without any paragraph or header tags,\n within an ion-card-content element.\n </ion-card-content>\n </ion-card>\n\n <ion-card>\n <ion-item href=\"#\" class=\"activated\">\n <ion-icon name=\"wifi\" slot=\"start\"></ion-icon>\n <ion-label>Card Link Item 1 .activated</ion-label>\n </ion-item>\n\n <ion-item href=\"#\">\n <ion-icon name=\"wine\" slot=\"start\"></ion-icon>\n <ion-label>Card Link Item 2</ion-label>\n </ion-item>\n\n <ion-item class=\"activated\">\n <ion-icon name=\"warning\" slot=\"start\"></ion-icon>\n <ion-label>Card Button Item 1 .activated</ion-label>\n </ion-item>\n\n <ion-item>\n <ion-icon name=\"walk\" slot=\"start\"></ion-icon>\n <ion-label>Card Button Item 2</ion-label>\n </ion-item>\n </ion-card>\n</template>\n```"
1652 },
1653 "props": [
1654 {
1655 "name": "button",
1656 "type": "boolean",
1657 "mutable": false,
1658 "attr": "button",
1659 "reflectToAttr": false,
1660 "docs": "If `true`, a button tag will be rendered and the card will be tappable.",
1661 "docsTags": [],
1662 "default": "false",
1663 "optional": false,
1664 "required": false
1665 },
1666 {
1667 "name": "color",
1668 "type": "string | undefined",
1669 "mutable": false,
1670 "attr": "color",
1671 "reflectToAttr": false,
1672 "docs": "The color to use from your application's color palette.\nDefault options are: `\"primary\"`, `\"secondary\"`, `\"tertiary\"`, `\"success\"`, `\"warning\"`, `\"danger\"`, `\"light\"`, `\"medium\"`, and `\"dark\"`.\nFor more information on colors, see [theming](/docs/theming/basics).",
1673 "docsTags": [],
1674 "optional": true,
1675 "required": false
1676 },
1677 {
1678 "name": "disabled",
1679 "type": "boolean",
1680 "mutable": false,
1681 "attr": "disabled",
1682 "reflectToAttr": false,
1683 "docs": "If `true`, the user cannot interact with the card.",
1684 "docsTags": [],
1685 "default": "false",
1686 "optional": false,
1687 "required": false
1688 },
1689 {
1690 "name": "download",
1691 "type": "string | undefined",
1692 "mutable": false,
1693 "attr": "download",
1694 "reflectToAttr": false,
1695 "docs": "This attribute instructs browsers to download a URL instead of navigating to\nit, so the user will be prompted to save it as a local file. If the attribute\nhas a value, it is used as the pre-filled file name in the Save prompt\n(the user can still change the file name if they want).",
1696 "docsTags": [],
1697 "optional": false,
1698 "required": false
1699 },
1700 {
1701 "name": "href",
1702 "type": "string | undefined",
1703 "mutable": false,
1704 "attr": "href",
1705 "reflectToAttr": false,
1706 "docs": "Contains a URL or a URL fragment that the hyperlink points to.\nIf this property is set, an anchor tag will be rendered.",
1707 "docsTags": [],
1708 "optional": false,
1709 "required": false
1710 },
1711 {
1712 "name": "mode",
1713 "type": "\"ios\" | \"md\"",
1714 "mutable": false,
1715 "attr": "mode",
1716 "reflectToAttr": false,
1717 "docs": "The mode determines which platform styles to use.",
1718 "docsTags": [],
1719 "optional": true,
1720 "required": false
1721 },
1722 {
1723 "name": "rel",
1724 "type": "string | undefined",
1725 "mutable": false,
1726 "attr": "rel",
1727 "reflectToAttr": false,
1728 "docs": "Specifies the relationship of the target object to the link object.\nThe value is a space-separated list of [link types](https://developer.mozilla.org/en-US/docs/Web/HTML/Link_types).",
1729 "docsTags": [],
1730 "optional": false,
1731 "required": false
1732 },
1733 {
1734 "name": "routerDirection",
1735 "type": "\"back\" | \"forward\" | \"root\"",
1736 "mutable": false,
1737 "attr": "router-direction",
1738 "reflectToAttr": false,
1739 "docs": "When using a router, it specifies the transition direction when navigating to\nanother page using `href`.",
1740 "docsTags": [],
1741 "default": "'forward'",
1742 "optional": false,
1743 "required": false
1744 },
1745 {
1746 "name": "target",
1747 "type": "string | undefined",
1748 "mutable": false,
1749 "attr": "target",
1750 "reflectToAttr": false,
1751 "docs": "Specifies where to display the linked URL.\nOnly applies when an `href` is provided.\nSpecial keywords: `\"_blank\"`, `\"_self\"`, `\"_parent\"`, `\"_top\"`.",
1752 "docsTags": [],
1753 "optional": false,
1754 "required": false
1755 },
1756 {
1757 "name": "type",
1758 "type": "\"button\" | \"reset\" | \"submit\"",
1759 "mutable": false,
1760 "attr": "type",
1761 "reflectToAttr": false,
1762 "docs": "The type of the button. Only used when an `onclick` or `button` property is present.",
1763 "docsTags": [],
1764 "default": "'button'",
1765 "optional": false,
1766 "required": false
1767 }
1768 ],
1769 "methods": [],
1770 "events": [],
1771 "styles": [
1772 {
1773 "name": "--background",
1774 "annotation": "prop",
1775 "docs": "Background of the card"
1776 },
1777 {
1778 "name": "--color",
1779 "annotation": "prop",
1780 "docs": "Color of the card"
1781 }
1782 ],
1783 "slots": []
1784 },
1785 {
1786 "tag": "ion-card-content",
1787 "filePath": "src/components/card-content/card-content.tsx",
1788 "encapsulation": "none",
1789 "readme": "# ion-card-content\n\n`ion-card-content` is child component of `ion-card` that adds some content padding.\nIt is recommended that any text content for a card should be placed in an `ion-card-content`.\n\n",
1790 "docs": "`ion-card-content` is child component of `ion-card` that adds some content padding.\nIt is recommended that any text content for a card should be placed in an `ion-card-content`.",
1791 "docsTags": [
1792 {
1793 "text": "{\"ios\" | \"md\"} mode - The mode determines which platform styles to use.",
1794 "name": "virtualProp"
1795 }
1796 ],
1797 "usage": {},
1798 "props": [
1799 {
1800 "name": "mode",
1801 "type": "\"ios\" | \"md\"",
1802 "mutable": false,
1803 "attr": "mode",
1804 "reflectToAttr": false,
1805 "docs": "The mode determines which platform styles to use.",
1806 "docsTags": [],
1807 "optional": true,
1808 "required": false
1809 }
1810 ],
1811 "methods": [],
1812 "events": [],
1813 "styles": [],
1814 "slots": []
1815 },
1816 {
1817 "tag": "ion-card-header",
1818 "filePath": "src/components/card-header/card-header.tsx",
1819 "encapsulation": "shadow",
1820 "readme": "# ion-card-header\n\n`ion-card-header` is a header component for `ion-card`.\n\n",
1821 "docs": "`ion-card-header` is a header component for `ion-card`.",
1822 "docsTags": [
1823 {
1824 "text": "{\"ios\" | \"md\"} mode - The mode determines which platform styles to use.",
1825 "name": "virtualProp"
1826 }
1827 ],
1828 "usage": {},
1829 "props": [
1830 {
1831 "name": "color",
1832 "type": "string | undefined",
1833 "mutable": false,
1834 "attr": "color",
1835 "reflectToAttr": false,
1836 "docs": "The color to use from your application's color palette.\nDefault options are: `\"primary\"`, `\"secondary\"`, `\"tertiary\"`, `\"success\"`, `\"warning\"`, `\"danger\"`, `\"light\"`, `\"medium\"`, and `\"dark\"`.\nFor more information on colors, see [theming](/docs/theming/basics).",
1837 "docsTags": [],
1838 "optional": true,
1839 "required": false
1840 },
1841 {
1842 "name": "mode",
1843 "type": "\"ios\" | \"md\"",
1844 "mutable": false,
1845 "attr": "mode",
1846 "reflectToAttr": false,
1847 "docs": "The mode determines which platform styles to use.",
1848 "docsTags": [],
1849 "optional": true,
1850 "required": false
1851 },
1852 {
1853 "name": "translucent",
1854 "type": "boolean",
1855 "mutable": false,
1856 "attr": "translucent",
1857 "reflectToAttr": false,
1858 "docs": "If `true`, the card header will be translucent.\nOnly applies when the mode is `\"ios\"` and the device supports\n[`backdrop-filter`](https://developer.mozilla.org/en-US/docs/Web/CSS/backdrop-filter#Browser_compatibility).",
1859 "docsTags": [],
1860 "default": "false",
1861 "optional": false,
1862 "required": false
1863 }
1864 ],
1865 "methods": [],
1866 "events": [],
1867 "styles": [],
1868 "slots": []
1869 },
1870 {
1871 "tag": "ion-card-subtitle",
1872 "filePath": "src/components/card-subtitle/card-subtitle.tsx",
1873 "encapsulation": "shadow",
1874 "readme": "# ion-card-subtitle\n\n`ion-card-subtitle` is a child component of `ion-card`\n",
1875 "docs": "`ion-card-subtitle` is a child component of `ion-card`",
1876 "docsTags": [
1877 {
1878 "text": "{\"ios\" | \"md\"} mode - The mode determines which platform styles to use.",
1879 "name": "virtualProp"
1880 }
1881 ],
1882 "usage": {},
1883 "props": [
1884 {
1885 "name": "color",
1886 "type": "string | undefined",
1887 "mutable": false,
1888 "attr": "color",
1889 "reflectToAttr": false,
1890 "docs": "The color to use from your application's color palette.\nDefault options are: `\"primary\"`, `\"secondary\"`, `\"tertiary\"`, `\"success\"`, `\"warning\"`, `\"danger\"`, `\"light\"`, `\"medium\"`, and `\"dark\"`.\nFor more information on colors, see [theming](/docs/theming/basics).",
1891 "docsTags": [],
1892 "optional": true,
1893 "required": false
1894 },
1895 {
1896 "name": "mode",
1897 "type": "\"ios\" | \"md\"",
1898 "mutable": false,
1899 "attr": "mode",
1900 "reflectToAttr": false,
1901 "docs": "The mode determines which platform styles to use.",
1902 "docsTags": [],
1903 "optional": true,
1904 "required": false
1905 }
1906 ],
1907 "methods": [],
1908 "events": [],
1909 "styles": [
1910 {
1911 "name": "--color",
1912 "annotation": "prop",
1913 "docs": "Color of the card subtitle"
1914 }
1915 ],
1916 "slots": []
1917 },
1918 {
1919 "tag": "ion-card-title",
1920 "filePath": "src/components/card-title/card-title.tsx",
1921 "encapsulation": "shadow",
1922 "readme": "# ion-card-title\n\n`ion-card-title` is a child component of `ion-card`\n\n",
1923 "docs": "`ion-card-title` is a child component of `ion-card`",
1924 "docsTags": [
1925 {
1926 "text": "{\"ios\" | \"md\"} mode - The mode determines which platform styles to use.",
1927 "name": "virtualProp"
1928 }
1929 ],
1930 "usage": {},
1931 "props": [
1932 {
1933 "name": "color",
1934 "type": "string | undefined",
1935 "mutable": false,
1936 "attr": "color",
1937 "reflectToAttr": false,
1938 "docs": "The color to use from your application's color palette.\nDefault options are: `\"primary\"`, `\"secondary\"`, `\"tertiary\"`, `\"success\"`, `\"warning\"`, `\"danger\"`, `\"light\"`, `\"medium\"`, and `\"dark\"`.\nFor more information on colors, see [theming](/docs/theming/basics).",
1939 "docsTags": [],
1940 "optional": true,
1941 "required": false
1942 },
1943 {
1944 "name": "mode",
1945 "type": "\"ios\" | \"md\"",
1946 "mutable": false,
1947 "attr": "mode",
1948 "reflectToAttr": false,
1949 "docs": "The mode determines which platform styles to use.",
1950 "docsTags": [],
1951 "optional": true,
1952 "required": false
1953 }
1954 ],
1955 "methods": [],
1956 "events": [],
1957 "styles": [
1958 {
1959 "name": "--color",
1960 "annotation": "prop",
1961 "docs": "Color of the card title"
1962 }
1963 ],
1964 "slots": []
1965 },
1966 {
1967 "tag": "ion-checkbox",
1968 "filePath": "src/components/checkbox/checkbox.tsx",
1969 "encapsulation": "shadow",
1970 "readme": "# ion-checkbox\n\nCheckboxes allow the selection of multiple options from a set of options. They appear as checked (ticked) when activated. Clicking on a checkbox will toggle the `checked` property. They can also be checked programmatically by setting the `checked` property.\n\n\n\n",
1971 "docs": "Checkboxes allow the selection of multiple options from a set of options. They appear as checked (ticked) when activated. Clicking on a checkbox will toggle the `checked` property. They can also be checked programmatically by setting the `checked` property.",
1972 "docsTags": [
1973 {
1974 "text": "{\"ios\" | \"md\"} mode - The mode determines which platform styles to use.",
1975 "name": "virtualProp"
1976 }
1977 ],
1978 "usage": {
1979 "angular": "```html\n<!-- Default Checkbox -->\n<ion-checkbox></ion-checkbox>\n\n<!-- Disabled Checkbox -->\n<ion-checkbox disabled=\"true\"></ion-checkbox>\n\n<!-- Checked Checkbox -->\n<ion-checkbox checked=\"true\"></ion-checkbox>\n\n<!-- Checkbox Colors -->\n<ion-checkbox color=\"primary\"></ion-checkbox>\n<ion-checkbox color=\"secondary\"></ion-checkbox>\n<ion-checkbox color=\"danger\"></ion-checkbox>\n<ion-checkbox color=\"light\"></ion-checkbox>\n<ion-checkbox color=\"dark\"></ion-checkbox>\n\n<!-- Checkboxes in a List -->\n<ion-list>\n <ion-item *ngFor=\"let entry of form\">\n <ion-label>{{entry.val}}</ion-label>\n <ion-checkbox slot=\"end\" [(ngModel)]=\"entry.isChecked\"></ion-checkbox>\n </ion-item>\n</ion-list>\n```\n\n```typescript\nimport { Component } from '@angular/core';\n\n@Component({\n selector: 'app-page-home',\n templateUrl: 'home.page.html',\n styleUrls: ['home.page.scss']\n})\nexport class HomePage {\n public form = [\n { val: 'Pepperoni', isChecked: true },\n { val: 'Sausage', isChecked: false },\n { val: 'Mushroom', isChecked: false }\n ];\n}\n```\n",
1980 "javascript": "```html\n<!-- Default Checkbox -->\n<ion-checkbox></ion-checkbox>\n\n<!-- Disabled Checkbox -->\n<ion-checkbox disabled></ion-checkbox>\n\n<!-- Checked Checkbox -->\n<ion-checkbox checked></ion-checkbox>\n\n<!-- Checkbox Colors -->\n<ion-checkbox color=\"primary\"></ion-checkbox>\n<ion-checkbox color=\"secondary\"></ion-checkbox>\n<ion-checkbox color=\"danger\"></ion-checkbox>\n<ion-checkbox color=\"light\"></ion-checkbox>\n<ion-checkbox color=\"dark\"></ion-checkbox>\n\n<!-- Checkboxes in a List -->\n<ion-list>\n <ion-item>\n <ion-label>Pepperoni</ion-label>\n <ion-checkbox slot=\"end\" value=\"pepperoni\" checked></ion-checkbox>\n </ion-item>\n\n <ion-item>\n <ion-label>Sausage</ion-label>\n <ion-checkbox slot=\"end\" value=\"sausage\" disabled></ion-checkbox>\n </ion-item>\n\n <ion-item>\n <ion-label>Mushrooms</ion-label>\n <ion-checkbox slot=\"end\" value=\"mushrooms\"></ion-checkbox>\n </ion-item>\n</ion-list>\n```\n",
1981 "react": "```tsx\nimport React from 'react';\nimport { IonCheckbox, IonList, IonItem, IonLabel, IonContent } from '@ionic/react';\n\nconst form = [\n { val: 'Pepperoni', isChecked: true },\n { val: 'Sausage', isChecked: false },\n { val: 'Mushroom', isChecked: false }\n];\n\nexport const CheckboxExample: React.FC = () => (\n <IonContent>\n {/*-- Default Checkbox --*/}\n <IonCheckbox />\n\n {/*-- Disabled Checkbox --*/}\n <IonCheckbox disabled={true} />\n\n {/*-- Checked Checkbox --*/}\n <IonCheckbox checked={true} />\n\n {/*-- Checkbox Colors --*/}\n <IonCheckbox color=\"primary\" />\n <IonCheckbox color=\"secondary\" />\n <IonCheckbox color=\"danger\" />\n <IonCheckbox color=\"light\" />\n <IonCheckbox color=\"dark\" />\n\n {/*-- Checkboxes in a List --*/}\n <IonList>\n { form.map(({val, isChecked}) => (\n <IonItem key={val}>\n <IonLabel>{val}</IonLabel>\n <IonCheckbox slot=\"end\" value={val} checked={isChecked} />\n </IonItem>\n )) }\n </IonList>\n </IonContent>\n);\n```",
1982 "vue": "```html\n<template>\n <!-- Default Checkbox -->\n <ion-checkbox></ion-checkbox>\n\n <!-- Disabled Checkbox -->\n <ion-checkbox disabled=\"true\"></ion-checkbox>\n\n <!-- Checked Checkbox -->\n <ion-checkbox checked=\"true\"></ion-checkbox>\n\n <!-- Checkbox Colors -->\n <ion-checkbox color=\"primary\"></ion-checkbox>\n <ion-checkbox color=\"secondary\"></ion-checkbox>\n <ion-checkbox color=\"danger\"></ion-checkbox>\n <ion-checkbox color=\"light\"></ion-checkbox>\n <ion-checkbox color=\"dark\"></ion-checkbox>\n\n <!-- Checkboxes in a List -->\n <ion-list>\n <ion-item v-for=\"entry in form\">\n <ion-label>{{entry.val}}</ion-label>\n <ion-checkbox slot=\"end\" v-on:input=\"entry.checked = $event.target.value\" v-bind:value=\"entry.isChecked\"></ion-checkbox>\n </ion-item>\n </ion-list>\n</template>\n\n<script lang=\"ts\">\n import { Component, Vue } from 'vue-property-decorator';\n\n @Component()\n export default class Example extends Vue {\n form = [\n { val: 'Pepperoni', isChecked: true },\n { val: 'Sausage', isChecked: false },\n { val: 'Mushroom', isChecked: false }\n ];\n }\n</script>\n```"
1983 },
1984 "props": [
1985 {
1986 "name": "checked",
1987 "type": "boolean",
1988 "mutable": true,
1989 "attr": "checked",
1990 "reflectToAttr": false,
1991 "docs": "If `true`, the checkbox is selected.",
1992 "docsTags": [],
1993 "default": "false",
1994 "optional": false,
1995 "required": false
1996 },
1997 {
1998 "name": "color",
1999 "type": "string | undefined",
2000 "mutable": false,
2001 "attr": "color",
2002 "reflectToAttr": false,
2003 "docs": "The color to use from your application's color palette.\nDefault options are: `\"primary\"`, `\"secondary\"`, `\"tertiary\"`, `\"success\"`, `\"warning\"`, `\"danger\"`, `\"light\"`, `\"medium\"`, and `\"dark\"`.\nFor more information on colors, see [theming](/docs/theming/basics).",
2004 "docsTags": [],
2005 "optional": true,
2006 "required": false
2007 },
2008 {
2009 "name": "disabled",
2010 "type": "boolean",
2011 "mutable": false,
2012 "attr": "disabled",
2013 "reflectToAttr": false,
2014 "docs": "If `true`, the user cannot interact with the checkbox.",
2015 "docsTags": [],
2016 "default": "false",
2017 "optional": false,
2018 "required": false
2019 },
2020 {
2021 "name": "indeterminate",
2022 "type": "boolean",
2023 "mutable": true,
2024 "attr": "indeterminate",
2025 "reflectToAttr": false,
2026 "docs": "If `true`, the checkbox will visually appear as indeterminate.",
2027 "docsTags": [],
2028 "default": "false",
2029 "optional": false,
2030 "required": false
2031 },
2032 {
2033 "name": "mode",
2034 "type": "\"ios\" | \"md\"",
2035 "mutable": false,
2036 "attr": "mode",
2037 "reflectToAttr": false,
2038 "docs": "The mode determines which platform styles to use.",
2039 "docsTags": [],
2040 "optional": true,
2041 "required": false
2042 },
2043 {
2044 "name": "name",
2045 "type": "string",
2046 "mutable": false,
2047 "attr": "name",
2048 "reflectToAttr": false,
2049 "docs": "The name of the control, which is submitted with the form data.",
2050 "docsTags": [],
2051 "default": "this.inputId",
2052 "optional": false,
2053 "required": false
2054 },
2055 {
2056 "name": "value",
2057 "type": "string",
2058 "mutable": false,
2059 "attr": "value",
2060 "reflectToAttr": false,
2061 "docs": "The value of the toggle does not mean if it's checked or not, use the `checked`\nproperty for that.\n\nThe value of a toggle is analogous to the value of a `<input type=\"checkbox\">`,\nit's only used when the toggle participates in a native `<form>`.",
2062 "docsTags": [],
2063 "default": "'on'",
2064 "optional": false,
2065 "required": false
2066 }
2067 ],
2068 "methods": [],
2069 "events": [
2070 {
2071 "event": "ionBlur",
2072 "detail": "void",
2073 "bubbles": true,
2074 "cancelable": true,
2075 "composed": true,
2076 "docs": "Emitted when the toggle loses focus.",
2077 "docsTags": []
2078 },
2079 {
2080 "event": "ionChange",
2081 "detail": "CheckboxChangeEventDetail",
2082 "bubbles": true,
2083 "cancelable": true,
2084 "composed": true,
2085 "docs": "Emitted when the checked property has changed.",
2086 "docsTags": []
2087 },
2088 {
2089 "event": "ionFocus",
2090 "detail": "void",
2091 "bubbles": true,
2092 "cancelable": true,
2093 "composed": true,
2094 "docs": "Emitted when the toggle has focus.",
2095 "docsTags": []
2096 }
2097 ],
2098 "styles": [
2099 {
2100 "name": "--background",
2101 "annotation": "prop",
2102 "docs": "Background of the checkbox icon"
2103 },
2104 {
2105 "name": "--background-checked",
2106 "annotation": "prop",
2107 "docs": "Background of the checkbox icon when checked"
2108 },
2109 {
2110 "name": "--border-color",
2111 "annotation": "prop",
2112 "docs": "Border color of the checkbox icon"
2113 },
2114 {
2115 "name": "--border-color-checked",
2116 "annotation": "prop",
2117 "docs": "Border color of the checkbox icon when checked"
2118 },
2119 {
2120 "name": "--border-radius",
2121 "annotation": "prop",
2122 "docs": "Border radius of the checkbox icon"
2123 },
2124 {
2125 "name": "--border-style",
2126 "annotation": "prop",
2127 "docs": "Border style of the checkbox icon"
2128 },
2129 {
2130 "name": "--border-width",
2131 "annotation": "prop",
2132 "docs": "Border width of the checkbox icon"
2133 },
2134 {
2135 "name": "--checkmark-color",
2136 "annotation": "prop",
2137 "docs": "Color of the checkbox checkmark when checked"
2138 },
2139 {
2140 "name": "--size",
2141 "annotation": "prop",
2142 "docs": "Size of the checkbox icon"
2143 },
2144 {
2145 "name": "--transition",
2146 "annotation": "prop",
2147 "docs": "Transition of the checkbox icon"
2148 }
2149 ],
2150 "slots": []
2151 },
2152 {
2153 "tag": "ion-chip",
2154 "filePath": "src/components/chip/chip.tsx",
2155 "encapsulation": "shadow",
2156 "readme": "# ion-chip\n\nChips represent complex entities in small blocks, such as a contact. A chip can contain several different elements such as avatars, text, and icons.\n",
2157 "docs": "Chips represent complex entities in small blocks, such as a contact. A chip can contain several different elements such as avatars, text, and icons.",
2158 "docsTags": [
2159 {
2160 "text": "{\"ios\" | \"md\"} mode - The mode determines which platform styles to use.",
2161 "name": "virtualProp"
2162 }
2163 ],
2164 "usage": {
2165 "angular": "```html\n<ion-chip>\n <ion-label>Default</ion-label>\n</ion-chip>\n\n<ion-chip>\n <ion-label color=\"secondary\">Secondary Label</ion-label>\n</ion-chip>\n\n<ion-chip color=\"secondary\">\n <ion-label color=\"dark\">Secondary w/ Dark label</ion-label>\n</ion-chip>\n\n<ion-chip>\n <ion-icon name=\"pin\"></ion-icon>\n <ion-label>Default</ion-label>\n</ion-chip>\n\n<ion-chip>\n <ion-icon name=\"heart\" color=\"dark\"></ion-icon>\n <ion-label>Default</ion-label>\n</ion-chip>\n\n<ion-chip>\n <ion-label>Button Chip</ion-label>\n <ion-icon name=\"close-circle\"></ion-icon>\n</ion-chip>\n\n<ion-chip>\n <ion-icon name=\"pin\" color=\"primary\"></ion-icon>\n <ion-label>Icon Chip</ion-label>\n <ion-icon name=\"close\"></ion-icon>\n</ion-chip>\n\n<ion-chip>\n <ion-avatar>\n <img src=\"https://gravatar.com/avatar/dba6bae8c566f9d4041fb9cd9ada7741?d=identicon&f=y\">\n </ion-avatar>\n <ion-label>Avatar Chip</ion-label>\n <ion-icon name=\"close-circle\"></ion-icon>\n</ion-chip>\n```\n",
2166 "javascript": "```html\n<ion-chip>\n <ion-label>Default</ion-label>\n</ion-chip>\n\n<ion-chip>\n <ion-label color=\"secondary\">Secondary Label</ion-label>\n</ion-chip>\n\n<ion-chip color=\"secondary\">\n <ion-label color=\"dark\">Secondary w/ Dark label</ion-label>\n</ion-chip>\n\n<ion-chip>\n <ion-icon name=\"pin\"></ion-icon>\n <ion-label>Default</ion-label>\n</ion-chip>\n\n<ion-chip>\n <ion-icon name=\"heart\" color=\"dark\"></ion-icon>\n <ion-label>Default</ion-label>\n</ion-chip>\n\n<ion-chip>\n <ion-label>Button Chip</ion-label>\n <ion-icon name=\"close-circle\"></ion-icon>\n</ion-chip>\n\n<ion-chip>\n <ion-icon name=\"pin\" color=\"primary\"></ion-icon>\n <ion-label>Icon Chip</ion-label>\n <ion-icon name=\"close\"></ion-icon>\n</ion-chip>\n\n<ion-chip>\n <ion-avatar>\n <img src=\"https://gravatar.com/avatar/dba6bae8c566f9d4041fb9cd9ada7741?d=identicon&f=y\">\n </ion-avatar>\n <ion-label>Avatar Chip</ion-label>\n <ion-icon name=\"close-circle\"></ion-icon>\n</ion-chip>\n```\n",
2167 "react": "```tsx\nimport React from 'react';\nimport { IonChip, IonLabel, IonIcon, IonAvatar, IonContent } from '@ionic/react';\n\nexport const ChipExample: React.FC = () => (\n <IonContent>\n <IonChip>\n <IonLabel>Default</IonLabel>\n </IonChip>\n\n <IonChip>\n <IonLabel color=\"secondary\">Secondary Label</IonLabel>\n </IonChip>\n\n <IonChip color=\"secondary\">\n <IonLabel color=\"dark\">Secondary w/ Dark label</IonLabel>\n </IonChip>\n\n <IonChip>\n <IonIcon name=\"pin\" />\n <IonLabel>Default</IonLabel>\n </IonChip>\n\n <IonChip>\n <IonIcon name=\"heart\" color=\"dark\" />\n <IonLabel>Default</IonLabel>\n </IonChip>\n\n <IonChip>\n <IonLabel>Button Chip</IonLabel>\n <IonIcon name=\"close-circle\" />\n </IonChip>\n\n <IonChip>\n <IonIcon name=\"pin\" color=\"primary\" />\n <IonLabel>Icon Chip</IonLabel>\n <IonIcon name=\"close\" />\n </IonChip>\n\n <IonChip>\n <IonAvatar>\n <img src=\"https://gravatar.com/avatar/dba6bae8c566f9d4041fb9cd9ada7741?d=identicon&f=y\" />\n </IonAvatar>\n <IonLabel>Avatar Chip</IonLabel>\n <IonIcon name=\"close-circle\" />\n </IonChip>\n </IonContent>\n);\n```",
2168 "vue": "```html\n<template>\n <ion-chip>\n <ion-label>Default</ion-label>\n </ion-chip>\n\n <ion-chip>\n <ion-label color=\"secondary\">Secondary Label</ion-label>\n </ion-chip>\n\n <ion-chip color=\"secondary\">\n <ion-label color=\"dark\">Secondary w/ Dark label</ion-label>\n </ion-chip>\n\n <ion-chip>\n <ion-icon name=\"pin\"></ion-icon>\n <ion-label>Default</ion-label>\n </ion-chip>\n\n <ion-chip>\n <ion-icon name=\"heart\" color=\"dark\"></ion-icon>\n <ion-label>Default</ion-label>\n </ion-chip>\n\n <ion-chip>\n <ion-label>Button Chip</ion-label>\n <ion-icon name=\"close-circle\"></ion-icon>\n </ion-chip>\n\n <ion-chip>\n <ion-icon name=\"pin\" color=\"primary\"></ion-icon>\n <ion-label>Icon Chip</ion-label>\n <ion-icon name=\"close\"></ion-icon>\n </ion-chip>\n\n <ion-chip>\n <ion-avatar>\n <img src=\"https://gravatar.com/avatar/dba6bae8c566f9d4041fb9cd9ada7741?d=identicon&f=y\">\n </ion-avatar>\n <ion-label>Avatar Chip</ion-label>\n <ion-icon name=\"close-circle\"></ion-icon>\n </ion-chip>\n</template>\n```\n"
2169 },
2170 "props": [
2171 {
2172 "name": "color",
2173 "type": "string | undefined",
2174 "mutable": false,
2175 "attr": "color",
2176 "reflectToAttr": false,
2177 "docs": "The color to use from your application's color palette.\nDefault options are: `\"primary\"`, `\"secondary\"`, `\"tertiary\"`, `\"success\"`, `\"warning\"`, `\"danger\"`, `\"light\"`, `\"medium\"`, and `\"dark\"`.\nFor more information on colors, see [theming](/docs/theming/basics).",
2178 "docsTags": [],
2179 "optional": true,
2180 "required": false
2181 },
2182 {
2183 "name": "mode",
2184 "type": "\"ios\" | \"md\"",
2185 "mutable": false,
2186 "attr": "mode",
2187 "reflectToAttr": false,
2188 "docs": "The mode determines which platform styles to use.",
2189 "docsTags": [],
2190 "optional": true,
2191 "required": false
2192 },
2193 {
2194 "name": "outline",
2195 "type": "boolean",
2196 "mutable": false,
2197 "attr": "outline",
2198 "reflectToAttr": false,
2199 "docs": "Display an outline style button.",
2200 "docsTags": [],
2201 "default": "false",
2202 "optional": false,
2203 "required": false
2204 }
2205 ],
2206 "methods": [],
2207 "events": [],
2208 "styles": [
2209 {
2210 "name": "--background",
2211 "annotation": "prop",
2212 "docs": "Background of the chip"
2213 },
2214 {
2215 "name": "--color",
2216 "annotation": "prop",
2217 "docs": "Color of the chip"
2218 }
2219 ],
2220 "slots": []
2221 },
2222 {
2223 "tag": "ion-col",
2224 "filePath": "src/components/col/col.tsx",
2225 "encapsulation": "shadow",
2226 "readme": "# ion-col\n\nColumns are cellular components of the [grid](../grid) system and go inside of a [row](../row).\nThey will expand to fill their row. All content within a grid should go inside of a column.\n\nSee [Grid Layout](/docs/layout/grid) for more information.\n\n\n## Column attributes\n\nBy default, columns will stretch to fill the entire height of the row.\nThere are several attributes that can be added to a column to customize this behavior.\n\n| Property | Description |\n|-----------------------|-------------------------------------------------------------------------------------------------------------|\n| align-self-start | Adds `align-self: flex-start`. The column will be vertically aligned at the top. |\n| align-self-center | Adds `align-self: center`. The column will be vertically aligned in the center. |\n| align-self-end | Adds `align-self: flex-end`. The column will be vertically aligned at the bottom. |\n| align-self-stretch | Adds `align-self: stretch`. The column will be stretched to take up the entire height of the row. |\n| align-self-baseline | Adds `align-self: baseline`. The column will be vertically aligned at its baseline. |\n\n\n",
2227 "docs": "Columns are cellular components of the [grid](../grid) system and go inside of a [row](../row).\nThey will expand to fill their row. All content within a grid should go inside of a column.\n\nSee [Grid Layout](/docs/layout/grid) for more information.",
2228 "docsTags": [],
2229 "usage": {},
2230 "props": [
2231 {
2232 "name": "offset",
2233 "type": "string | undefined",
2234 "mutable": false,
2235 "attr": "offset",
2236 "reflectToAttr": false,
2237 "docs": "The amount to offset the column, in terms of how many columns it should shift to the end\nof the total available.",
2238 "docsTags": [],
2239 "optional": true,
2240 "required": false
2241 },
2242 {
2243 "name": "offsetLg",
2244 "type": "string | undefined",
2245 "mutable": false,
2246 "attr": "offset-lg",
2247 "reflectToAttr": false,
2248 "docs": "The amount to offset the column for lg screens, in terms of how many columns it should shift\nto the end of the total available.",
2249 "docsTags": [],
2250 "optional": true,
2251 "required": false
2252 },
2253 {
2254 "name": "offsetMd",
2255 "type": "string | undefined",
2256 "mutable": false,
2257 "attr": "offset-md",
2258 "reflectToAttr": false,
2259 "docs": "The amount to offset the column for md screens, in terms of how many columns it should shift\nto the end of the total available.",
2260 "docsTags": [],
2261 "optional": true,
2262 "required": false
2263 },
2264 {
2265 "name": "offsetSm",
2266 "type": "string | undefined",
2267 "mutable": false,
2268 "attr": "offset-sm",
2269 "reflectToAttr": false,
2270 "docs": "The amount to offset the column for sm screens, in terms of how many columns it should shift\nto the end of the total available.",
2271 "docsTags": [],
2272 "optional": true,
2273 "required": false
2274 },
2275 {
2276 "name": "offsetXl",
2277 "type": "string | undefined",
2278 "mutable": false,
2279 "attr": "offset-xl",
2280 "reflectToAttr": false,
2281 "docs": "The amount to offset the column for xl screens, in terms of how many columns it should shift\nto the end of the total available.",
2282 "docsTags": [],
2283 "optional": true,
2284 "required": false
2285 },
2286 {
2287 "name": "offsetXs",
2288 "type": "string | undefined",
2289 "mutable": false,
2290 "attr": "offset-xs",
2291 "reflectToAttr": false,
2292 "docs": "The amount to offset the column for xs screens, in terms of how many columns it should shift\nto the end of the total available.",
2293 "docsTags": [],
2294 "optional": true,
2295 "required": false
2296 },
2297 {
2298 "name": "pull",
2299 "type": "string | undefined",
2300 "mutable": false,
2301 "attr": "pull",
2302 "reflectToAttr": false,
2303 "docs": "The amount to pull the column, in terms of how many columns it should shift to the start of\nthe total available.",
2304 "docsTags": [],
2305 "optional": true,
2306 "required": false
2307 },
2308 {
2309 "name": "pullLg",
2310 "type": "string | undefined",
2311 "mutable": false,
2312 "attr": "pull-lg",
2313 "reflectToAttr": false,
2314 "docs": "The amount to pull the column for lg screens, in terms of how many columns it should shift\nto the start of the total available.",
2315 "docsTags": [],
2316 "optional": true,
2317 "required": false
2318 },
2319 {
2320 "name": "pullMd",
2321 "type": "string | undefined",
2322 "mutable": false,
2323 "attr": "pull-md",
2324 "reflectToAttr": false,
2325 "docs": "The amount to pull the column for md screens, in terms of how many columns it should shift\nto the start of the total available.",
2326 "docsTags": [],
2327 "optional": true,
2328 "required": false
2329 },
2330 {
2331 "name": "pullSm",
2332 "type": "string | undefined",
2333 "mutable": false,
2334 "attr": "pull-sm",
2335 "reflectToAttr": false,
2336 "docs": "The amount to pull the column for sm screens, in terms of how many columns it should shift\nto the start of the total available.",
2337 "docsTags": [],
2338 "optional": true,
2339 "required": false
2340 },
2341 {
2342 "name": "pullXl",
2343 "type": "string | undefined",
2344 "mutable": false,
2345 "attr": "pull-xl",
2346 "reflectToAttr": false,
2347 "docs": "The amount to pull the column for xl screens, in terms of how many columns it should shift\nto the start of the total available.",
2348 "docsTags": [],
2349 "optional": true,
2350 "required": false
2351 },
2352 {
2353 "name": "pullXs",
2354 "type": "string | undefined",
2355 "mutable": false,
2356 "attr": "pull-xs",
2357 "reflectToAttr": false,
2358 "docs": "The amount to pull the column for xs screens, in terms of how many columns it should shift\nto the start of the total available.",
2359 "docsTags": [],
2360 "optional": true,
2361 "required": false
2362 },
2363 {
2364 "name": "push",
2365 "type": "string | undefined",
2366 "mutable": false,
2367 "attr": "push",
2368 "reflectToAttr": false,
2369 "docs": "The amount to push the column, in terms of how many columns it should shift to the end\nof the total available.",
2370 "docsTags": [],
2371 "optional": true,
2372 "required": false
2373 },
2374 {
2375 "name": "pushLg",
2376 "type": "string | undefined",
2377 "mutable": false,
2378 "attr": "push-lg",
2379 "reflectToAttr": false,
2380 "docs": "The amount to push the column for lg screens, in terms of how many columns it should shift\nto the end of the total available.",
2381 "docsTags": [],
2382 "optional": true,
2383 "required": false
2384 },
2385 {
2386 "name": "pushMd",
2387 "type": "string | undefined",
2388 "mutable": false,
2389 "attr": "push-md",
2390 "reflectToAttr": false,
2391 "docs": "The amount to push the column for md screens, in terms of how many columns it should shift\nto the end of the total available.",
2392 "docsTags": [],
2393 "optional": true,
2394 "required": false
2395 },
2396 {
2397 "name": "pushSm",
2398 "type": "string | undefined",
2399 "mutable": false,
2400 "attr": "push-sm",
2401 "reflectToAttr": false,
2402 "docs": "The amount to push the column for sm screens, in terms of how many columns it should shift\nto the end of the total available.",
2403 "docsTags": [],
2404 "optional": true,
2405 "required": false
2406 },
2407 {
2408 "name": "pushXl",
2409 "type": "string | undefined",
2410 "mutable": false,
2411 "attr": "push-xl",
2412 "reflectToAttr": false,
2413 "docs": "The amount to push the column for xl screens, in terms of how many columns it should shift\nto the end of the total available.",
2414 "docsTags": [],
2415 "optional": true,
2416 "required": false
2417 },
2418 {
2419 "name": "pushXs",
2420 "type": "string | undefined",
2421 "mutable": false,
2422 "attr": "push-xs",
2423 "reflectToAttr": false,
2424 "docs": "The amount to push the column for xs screens, in terms of how many columns it should shift\nto the end of the total available.",
2425 "docsTags": [],
2426 "optional": true,
2427 "required": false
2428 },
2429 {
2430 "name": "size",
2431 "type": "string | undefined",
2432 "mutable": false,
2433 "attr": "size",
2434 "reflectToAttr": false,
2435 "docs": "The size of the column, in terms of how many columns it should take up out of the total\navailable. If `\"auto\"` is passed, the column will be the size of its content.",
2436 "docsTags": [],
2437 "optional": true,
2438 "required": false
2439 },
2440 {
2441 "name": "sizeLg",
2442 "type": "string | undefined",
2443 "mutable": false,
2444 "attr": "size-lg",
2445 "reflectToAttr": false,
2446 "docs": "The size of the column for lg screens, in terms of how many columns it should take up out\nof the total available. If `\"auto\"` is passed, the column will be the size of its content.",
2447 "docsTags": [],
2448 "optional": true,
2449 "required": false
2450 },
2451 {
2452 "name": "sizeMd",
2453 "type": "string | undefined",
2454 "mutable": false,
2455 "attr": "size-md",
2456 "reflectToAttr": false,
2457 "docs": "The size of the column for md screens, in terms of how many columns it should take up out\nof the total available. If `\"auto\"` is passed, the column will be the size of its content.",
2458 "docsTags": [],
2459 "optional": true,
2460 "required": false
2461 },
2462 {
2463 "name": "sizeSm",
2464 "type": "string | undefined",
2465 "mutable": false,
2466 "attr": "size-sm",
2467 "reflectToAttr": false,
2468 "docs": "The size of the column for sm screens, in terms of how many columns it should take up out\nof the total available. If `\"auto\"` is passed, the column will be the size of its content.",
2469 "docsTags": [],
2470 "optional": true,
2471 "required": false
2472 },
2473 {
2474 "name": "sizeXl",
2475 "type": "string | undefined",
2476 "mutable": false,
2477 "attr": "size-xl",
2478 "reflectToAttr": false,
2479 "docs": "The size of the column for xl screens, in terms of how many columns it should take up out\nof the total available. If `\"auto\"` is passed, the column will be the size of its content.",
2480 "docsTags": [],
2481 "optional": true,
2482 "required": false
2483 },
2484 {
2485 "name": "sizeXs",
2486 "type": "string | undefined",
2487 "mutable": false,
2488 "attr": "size-xs",
2489 "reflectToAttr": false,
2490 "docs": "The size of the column for xs screens, in terms of how many columns it should take up out\nof the total available. If `\"auto\"` is passed, the column will be the size of its content.",
2491 "docsTags": [],
2492 "optional": true,
2493 "required": false
2494 }
2495 ],
2496 "methods": [],
2497 "events": [],
2498 "styles": [
2499 {
2500 "name": "--ion-grid-column-padding",
2501 "annotation": "prop",
2502 "docs": "Padding for the Column"
2503 },
2504 {
2505 "name": "--ion-grid-column-padding-lg",
2506 "annotation": "prop",
2507 "docs": "Padding for the Column on lg screens and up"
2508 },
2509 {
2510 "name": "--ion-grid-column-padding-md",
2511 "annotation": "prop",
2512 "docs": "Padding for the Column on md screens and up"
2513 },
2514 {
2515 "name": "--ion-grid-column-padding-sm",
2516 "annotation": "prop",
2517 "docs": "Padding for the Column on sm screens and up"
2518 },
2519 {
2520 "name": "--ion-grid-column-padding-xl",
2521 "annotation": "prop",
2522 "docs": "Padding for the Column on xl screens and up"
2523 },
2524 {
2525 "name": "--ion-grid-column-padding-xs",
2526 "annotation": "prop",
2527 "docs": "Padding for the Column on xs screens and up"
2528 },
2529 {
2530 "name": "--ion-grid-columns",
2531 "annotation": "prop",
2532 "docs": "The number of total Columns in the Grid"
2533 }
2534 ],
2535 "slots": []
2536 },
2537 {
2538 "tag": "ion-content",
2539 "filePath": "src/components/content/content.tsx",
2540 "encapsulation": "shadow",
2541 "readme": "# ion-content\n\nThe content component provides an easy to use content area with some useful methods\nto control the scrollable area. There should only be one content in a single\nview.\n\nContent, along with many other Ionic components, can be customized to modify its padding, margin, and more using the global styles provided in the [CSS Utilities](/docs/layout/css-utilities) or by individually styling it using CSS and the available [CSS Custom Properties](#css-custom-properties).\n",
2542 "docs": "The content component provides an easy to use content area with some useful methods\nto control the scrollable area. There should only be one content in a single\nview.\n\nContent, along with many other Ionic components, can be customized to modify its padding, margin, and more using the global styles provided in the [CSS Utilities](/docs/layout/css-utilities) or by individually styling it using CSS and the available [CSS Custom Properties](#css-custom-properties).",
2543 "docsTags": [
2544 {
2545 "text": "- Content is placed in the scrollable area if provided without a slot.",
2546 "name": "slot"
2547 },
2548 {
2549 "text": "fixed - Should be used for fixed content that should not scroll.",
2550 "name": "slot"
2551 }
2552 ],
2553 "usage": {
2554 "angular": "```html\n<ion-content\n [scrollEvents]=\"true\"\n (ionScrollStart)=\"logScrollStart()\"\n (ionScroll)=\"logScrolling($event)\"\n (ionScrollEnd)=\"logScrollEnd()\">\n</ion-content>\n```\n\n",
2555 "javascript": "```html\n<ion-content></ion-content>\n```\n\n```javascript\nvar content = document.querySelector('ion-content');\ncontent.scrollEvents = true;\ncontent.addEventListener('ionScrollStart', () => console.log('scroll start'));\ncontent.addEventListener('ionScroll', (ev) => console.log('scroll', ev.detail));\ncontent.addEventListener('ionScrollEnd', () => console.log('scroll end'));\n```\n",
2556 "react": "```tsx\nimport React from 'react';\nimport { IonContent } from '@ionic/react';\n\nconst ContentExample: React.FC = () => (\n <IonContent\n scrollEvents={true}\n onIonScrollStart={() => {}}\n onIonScroll={() => {}}\n onIonScrollEnd={() => {}}>\n </IonContent>\n);\n```\n",
2557 "vue": "```html\n<template>\n <ion-content\n :scrollEvents=\"true\"\n @ionScrollStart=\"logScrollStart()\"\n @ionScroll=\"logScrolling($event)\"\n @ionScrollEnd=\"logScrollEnd()\">\n </ion-content>\n</template>\n```\n\n"
2558 },
2559 "props": [
2560 {
2561 "name": "color",
2562 "type": "string | undefined",
2563 "mutable": false,
2564 "attr": "color",
2565 "reflectToAttr": false,
2566 "docs": "The color to use from your application's color palette.\nDefault options are: `\"primary\"`, `\"secondary\"`, `\"tertiary\"`, `\"success\"`, `\"warning\"`, `\"danger\"`, `\"light\"`, `\"medium\"`, and `\"dark\"`.\nFor more information on colors, see [theming](/docs/theming/basics).",
2567 "docsTags": [],
2568 "optional": true,
2569 "required": false
2570 },
2571 {
2572 "name": "forceOverscroll",
2573 "type": "boolean | undefined",
2574 "mutable": true,
2575 "attr": "force-overscroll",
2576 "reflectToAttr": false,
2577 "docs": "If `true` and the content does not cause an overflow scroll, the scroll interaction will cause a bounce.\nIf the content exceeds the bounds of ionContent, nothing will change.\nNote, the does not disable the system bounce on iOS. That is an OS level setting.",
2578 "docsTags": [],
2579 "optional": true,
2580 "required": false
2581 },
2582 {
2583 "name": "fullscreen",
2584 "type": "boolean",
2585 "mutable": false,
2586 "attr": "fullscreen",
2587 "reflectToAttr": false,
2588 "docs": "If `true`, the content will scroll behind the headers\nand footers. This effect can easily be seen by setting the toolbar\nto transparent.",
2589 "docsTags": [],
2590 "default": "false",
2591 "optional": false,
2592 "required": false
2593 },
2594 {
2595 "name": "scrollEvents",
2596 "type": "boolean",
2597 "mutable": false,
2598 "attr": "scroll-events",
2599 "reflectToAttr": false,
2600 "docs": "Because of performance reasons, ionScroll events are disabled by default, in order to enable them\nand start listening from (ionScroll), set this property to `true`.",
2601 "docsTags": [],
2602 "default": "false",
2603 "optional": false,
2604 "required": false
2605 },
2606 {
2607 "name": "scrollX",
2608 "type": "boolean",
2609 "mutable": false,
2610 "attr": "scroll-x",
2611 "reflectToAttr": false,
2612 "docs": "If you want to enable the content scrolling in the X axis, set this property to `true`.",
2613 "docsTags": [],
2614 "default": "false",
2615 "optional": false,
2616 "required": false
2617 },
2618 {
2619 "name": "scrollY",
2620 "type": "boolean",
2621 "mutable": false,
2622 "attr": "scroll-y",
2623 "reflectToAttr": false,
2624 "docs": "If you want to disable the content scrolling in the Y axis, set this property to `false`.",
2625 "docsTags": [],
2626 "default": "true",
2627 "optional": false,
2628 "required": false
2629 }
2630 ],
2631 "methods": [
2632 {
2633 "name": "getScrollElement",
2634 "returns": {
2635 "type": "Promise<HTMLElement>",
2636 "docs": ""
2637 },
2638 "signature": "getScrollElement() => Promise<HTMLElement>",
2639 "parameters": [],
2640 "docs": "Get the element where the actual scrolling takes place.\nThis element can be used to subscribe to `scroll` events or manually modify\n`scrollTop`. However, it's recommended to use the API provided by `ion-content`:\n\ni.e. Using `ionScroll`, `ionScrollStart`, `ionScrollEnd` for scrolling events\nand `scrollToPoint()` to scroll the content into a certain point.",
2641 "docsTags": []
2642 },
2643 {
2644 "name": "scrollByPoint",
2645 "returns": {
2646 "type": "Promise<void>",
2647 "docs": ""
2648 },
2649 "signature": "scrollByPoint(x: number, y: number, duration: number) => Promise<void>",
2650 "parameters": [],
2651 "docs": "Scroll by a specified X/Y distance in the component.",
2652 "docsTags": [
2653 {
2654 "name": "param",
2655 "text": "x The amount to scroll by on the horizontal axis."
2656 },
2657 {
2658 "name": "param",
2659 "text": "y The amount to scroll by on the vertical axis."
2660 },
2661 {
2662 "name": "param",
2663 "text": "duration The amount of time to take scrolling by that amount."
2664 }
2665 ]
2666 },
2667 {
2668 "name": "scrollToBottom",
2669 "returns": {
2670 "type": "Promise<void>",
2671 "docs": ""
2672 },
2673 "signature": "scrollToBottom(duration?: number) => Promise<void>",
2674 "parameters": [],
2675 "docs": "Scroll to the bottom of the component.",
2676 "docsTags": [
2677 {
2678 "name": "param",
2679 "text": "duration The amount of time to take scrolling to the bottom. Defaults to `0`."
2680 }
2681 ]
2682 },
2683 {
2684 "name": "scrollToPoint",
2685 "returns": {
2686 "type": "Promise<void>",
2687 "docs": ""
2688 },
2689 "signature": "scrollToPoint(x: number | null | undefined, y: number | null | undefined, duration?: number) => Promise<void>",
2690 "parameters": [],
2691 "docs": "Scroll to a specified X/Y location in the component.",
2692 "docsTags": [
2693 {
2694 "name": "param",
2695 "text": "x The point to scroll to on the horizontal axis."
2696 },
2697 {
2698 "name": "param",
2699 "text": "y The point to scroll to on the vertical axis."
2700 },
2701 {
2702 "name": "param",
2703 "text": "duration The amount of time to take scrolling to that point. Defaults to `0`."
2704 }
2705 ]
2706 },
2707 {
2708 "name": "scrollToTop",
2709 "returns": {
2710 "type": "Promise<void>",
2711 "docs": ""
2712 },
2713 "signature": "scrollToTop(duration?: number) => Promise<void>",
2714 "parameters": [],
2715 "docs": "Scroll to the top of the component.",
2716 "docsTags": [
2717 {
2718 "name": "param",
2719 "text": "duration The amount of time to take scrolling to the top. Defaults to `0`."
2720 }
2721 ]
2722 }
2723 ],
2724 "events": [
2725 {
2726 "event": "ionScroll",
2727 "detail": "ScrollDetail",
2728 "bubbles": true,
2729 "cancelable": true,
2730 "composed": true,
2731 "docs": "Emitted while scrolling. This event is disabled by default.\nLook at the property: `scrollEvents`",
2732 "docsTags": []
2733 },
2734 {
2735 "event": "ionScrollEnd",
2736 "detail": "ScrollBaseDetail",
2737 "bubbles": true,
2738 "cancelable": true,
2739 "composed": true,
2740 "docs": "Emitted when the scroll has ended.",
2741 "docsTags": []
2742 },
2743 {
2744 "event": "ionScrollStart",
2745 "detail": "ScrollBaseDetail",
2746 "bubbles": true,
2747 "cancelable": true,
2748 "composed": true,
2749 "docs": "Emitted when the scroll has started.",
2750 "docsTags": []
2751 }
2752 ],
2753 "styles": [
2754 {
2755 "name": "--background",
2756 "annotation": "prop",
2757 "docs": "Background of the content"
2758 },
2759 {
2760 "name": "--color",
2761 "annotation": "prop",
2762 "docs": "Color of the content"
2763 },
2764 {
2765 "name": "--keyboard-offset",
2766 "annotation": "prop",
2767 "docs": "Keyboard offset of the content"
2768 },
2769 {
2770 "name": "--offset-bottom",
2771 "annotation": "prop",
2772 "docs": "Offset bottom of the content"
2773 },
2774 {
2775 "name": "--offset-top",
2776 "annotation": "prop",
2777 "docs": "Offset top of the content"
2778 },
2779 {
2780 "name": "--padding-bottom",
2781 "annotation": "prop",
2782 "docs": "Bottom padding of the content"
2783 },
2784 {
2785 "name": "--padding-end",
2786 "annotation": "prop",
2787 "docs": "Right padding if direction is left-to-right, and left padding if direction is right-to-left of the content"
2788 },
2789 {
2790 "name": "--padding-start",
2791 "annotation": "prop",
2792 "docs": "Left padding if direction is left-to-right, and right padding if direction is right-to-left of the content"
2793 },
2794 {
2795 "name": "--padding-top",
2796 "annotation": "prop",
2797 "docs": "Top padding of the content"
2798 }
2799 ],
2800 "slots": [
2801 {
2802 "name": "",
2803 "docs": "Content is placed in the scrollable area if provided without a slot."
2804 },
2805 {
2806 "name": "fixed",
2807 "docs": "Should be used for fixed content that should not scroll."
2808 }
2809 ]
2810 },
2811 {
2812 "tag": "ion-datetime",
2813 "filePath": "src/components/datetime/datetime.tsx",
2814 "encapsulation": "shadow",
2815 "readme": "# ion-datetime\n\nDatetimes present a picker interface from the bottom of a page, making it easy for\nusers to select dates and times. The picker displays scrollable columns that can be\nused to individually select years, months, days, hours and minute values. Datetimes\nare similar to the native `input` elements of type `datetime-local`, however, Ionic's\nDatetime component makes it easy to display the date and time in a preferred format,\nand manage the datetime values.\n\n\n## Display and Picker Formats\n\nThe datetime component displays the values in two places: in the `<ion-datetime>` component,\nand in the picker interface that is presented from the bottom of the screen. The following\nchart lists all of the formats that can be used.\n\n| Format | Description | Example |\n| ------ | ------------------------------ | ----------------------- |\n| `YYYY` | Year, 4 digits | `2018` |\n| `YY` | Year, 2 digits | `18` |\n| `M` | Month | `1` ... `12` |\n| `MM` | Month, leading zero | `01` ... `12` |\n| `MMM` | Month, short name | `Jan` |\n| `MMMM` | Month, full name | `January` |\n| `D` | Day | `1` ... `31` |\n| `DD` | Day, leading zero | `01` ... `31` |\n| `DDD` | Day, short name | `Fri` |\n| `DDDD` | Day, full name | `Friday` |\n| `H` | Hour, 24-hour | `0` ... `23` |\n| `HH` | Hour, 24-hour, leading zero | `00` ... `23` |\n| `h` | Hour, 12-hour | `1` ... `12` |\n| `hh` | Hour, 12-hour, leading zero | `01` ... `12` |\n| `a` | 12-hour time period, lowercase | `am` `pm` |\n| `A` | 12-hour time period, uppercase | `AM` `PM` |\n| `m` | Minute | `1` ... `59` |\n| `mm` | Minute, leading zero | `01` ... `59` |\n| `s` | Second | `1` ... `59` |\n| `ss` | Second, leading zero | `01` ... `59` |\n| `Z` | UTC Timezone Offset | `Z or +HH:mm or -HH:mm` |\n\n**Important**: See the [Month Names and Day of the Week\nNames](#month-names-and-day-of-the-week-names) section below on how to use\ndifferent names for the month and day.\n\n### Display Format\n\nThe `displayFormat` property specifies how a datetime's value should be\nprinted, as formatted text, within the datetime component.\n\nA few examples are provided in the chart below. The formats mentioned\nabove can be passed in to the display format in any combination.\n\n| Display Format | Example |\n| ----------------------| ----------------------- |\n| `M-YYYY` | `6-2005` |\n| `MM/YY` | `06/05` |\n| `MMM YYYY` | `Jun 2005` |\n| `YYYY, MMMM` | `2005, June` |\n| `MMM DD, YYYY HH:mm` | `Jun 17, 2005 11:06` |\n\n**Important**: `ion-datetime` will always display values relative to the user's timezone.\nGiven a value of `09:00:00+01:00`, the datetime component will\ndisplay it as `04:00:00-04:00` for users in a `-04:00` timezone offset.\n\n\n### Picker Format\n\nThe `pickerFormat` property determines which columns should be shown in the picker\ninterface, the order of the columns, and which format to use within each\ncolumn. If `pickerFormat` is not provided then it will use the value of\n`displayFormat`. Refer to the chart in the [Display Format](#display-format) section\nfor some formatting examples.\n\n\n### Datetime Data\n\nHistorically, handling datetime values within JavaScript, or even within HTML\ninputs, has always been a challenge. Specifically, JavaScript's `Date` object is\nnotoriously difficult to correctly parse apart datetime strings or to format\ndatetime values. Even worse is how different browsers and JavaScript versions\nparse various datetime strings differently, especially per locale.\n\nFortunately, Ionic's datetime input has been designed so developers can avoid\nthe common pitfalls, allowing developers to easily format datetime values within\nthe input, and give the user a simple datetime picker for a great user\nexperience.\n\n##### ISO 8601 Datetime Format: YYYY-MM-DDTHH:mmZ\n\nIonic uses the [ISO 8601 datetime format](https://www.w3.org/TR/NOTE-datetime)\nfor its value. The value is simply a string, rather than using JavaScript's\n`Date` object. Using the ISO datetime format makes it easy to serialize\nand parse within JSON objects and databases.\n\nAn ISO format can be used as a simple year, or just the hour and minute, or get\nmore detailed down to the millisecond and timezone. Any of the ISO formats below\ncan be used, and after a user selects a new value, Ionic will continue to use\nthe same ISO format which datetime value was originally given as.\n\n| Description | Format | Datetime Value Example |\n| -------------------- | ---------------------- | ---------------------------- |\n| Year | YYYY | 1994 |\n| Year and Month | YYYY-MM | 1994-12 |\n| Complete Date | YYYY-MM-DD | 1994-12-15 |\n| Date and Time | YYYY-MM-DDTHH:mm | 1994-12-15T13:47 |\n| UTC Timezone | YYYY-MM-DDTHH:mm:ssTZD | 1994-12-15T13:47:20.789Z |\n| Timezone Offset | YYYY-MM-DDTHH:mm:ssTZD | 1994-12-15T13:47:20.789+05:00 |\n| Hour and Minute | HH:mm | 13:47 |\n| Hour, Minute, Second | HH:mm:ss | 13:47:20 |\n\nNote that the year is always four-digits, milliseconds (if it's added) is always\nthree-digits, and all others are always two-digits. So the number representing\nJanuary always has a leading zero, such as `01`. Additionally, the hour is\nalways in the 24-hour format, so `00` is `12am` on a 12-hour clock, `13` means\n`1pm`, and `23` means `11pm`.\n\nAlso note that neither the `displayFormat` nor the `pickerFormat`\ncan set the datetime value's output, which is the value that is set by the\ncomponent's `ngModel`. The formats are merely for displaying the value as text\nand the picker's interface, but the datetime's value is always persisted as a\nvalid ISO 8601 datetime string.\n\n## Min and Max Datetimes\n\nDates are infinite in either direction, so for a user's selection there should\nbe at least some form of restricting the dates that can be selected. By default,\nthe maximum date is to the end of the current year, and the minimum date is from\nthe beginning of the year that was 100 years ago.\n\nTo customize the minimum and maximum datetime values, the `min` and `max`\ncomponent properties can be provided which may make more sense for the app's\nuse-case, rather than the default of the last 100 years. Following the same IS0\n8601 format listed in the table above, each component can restrict which dates\ncan be selected by the user. By passing `2016` to the `min` property and `2020-10-31`\nto the `max` property, the datetime will restrict the date selection between the\nbeginning of 2016, and October 31st of 2020.\n\n\n## Month Names and Day of the Week Names\n\nAt this time, there is no one-size-fits-all standard to automatically choose the\ncorrect language/spelling for a month name, or day of the week name, depending\non the language or locale.\n\nThe good news is that there is an [Intl.DatetimeFormat](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/DatetimeFormat)\nstandard which [most browsers](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/DatetimeFormat#Browser_compatibility) have adopted.\n\nHowever, at this time the standard has not been fully implemented by all popular browsers\nso Ionic is unavailable to take advantage of it yet.\n\nAdditionally, Angular also provides an internationalization service, but it is still\nunder heavy development so Ionic does not depend on it at this time.\n\nThe current best practice is to provide an array of names if the app needs to use names other\nthan the default English version of month and day names. The month names and day names can be\neither configured at the app level, or individual `ion-datetime` level.\n\n\n### Advanced Datetime Validation and Manipulation\n\nThe datetime picker provides the simplicity of selecting an exact format, and\npersists the datetime values as a string using the standardized [ISO 8601\ndatetime format](https://www.w3.org/TR/NOTE-datetime). However, it's important\nto note that `ion-datetime` does not attempt to solve all situations when\nvalidating and manipulating datetime values. If datetime values need to be\nparsed from a certain format, or manipulated (such as adding 5 days to a date,\nsubtracting 30 minutes, etc.), or even formatting data to a specific locale,\nthen we highly recommend using [date-fns](https://date-fns.org) to work with\ndates in JavaScript.\n\n",
2816 "docs": "Datetimes present a picker interface from the bottom of a page, making it easy for\nusers to select dates and times. The picker displays scrollable columns that can be\nused to individually select years, months, days, hours and minute values. Datetimes\nare similar to the native `input` elements of type `datetime-local`, however, Ionic's\nDatetime component makes it easy to display the date and time in a preferred format,\nand manage the datetime values.",
2817 "docsTags": [
2818 {
2819 "text": "{\"ios\" | \"md\"} mode - The mode determines which platform styles to use.",
2820 "name": "virtualProp"
2821 }
2822 ],
2823 "usage": {
2824 "angular": "```html\n<ion-item>\n <ion-label>MMMM</ion-label>\n <ion-datetime displayFormat=\"MMMM\" value=\"2012-12-15T13:47:20.789\"></ion-datetime>\n</ion-item>\n\n<ion-item>\n <ion-label>MM DD YY</ion-label>\n <ion-datetime displayFormat=\"MM DD YY\" placeholder=\"Select Date\"></ion-datetime>\n</ion-item>\n\n<ion-item>\n <ion-label>Disabled</ion-label>\n <ion-datetime id=\"dynamicDisabled\" displayFormat=\"MM DD YY\" disabled value=\"1994-12-15\"></ion-datetime>\n</ion-item>\n\n<ion-item>\n <ion-label>YYYY</ion-label>\n <ion-datetime [pickerOptions]=\"customPickerOptions\" placeholder=\"Custom Options\" displayFormat=\"YYYY\" min=\"1981\" max=\"2002\"></ion-datetime>\n</ion-item>\n\n<ion-item>\n <ion-label position=\"stacked\">MMMM YY</ion-label>\n <ion-datetime displayFormat=\"MMMM YY\" min=\"1989-06-04\" max=\"2004-08-23\" value=\"1994-12-15T13:47:20.789\"></ion-datetime>\n</ion-item>\n\n<ion-item>\n <ion-label position=\"floating\">MM/DD/YYYY</ion-label>\n <ion-datetime displayFormat=\"MM/DD/YYYY\" min=\"1994-03-14\" max=\"2012-12-09\" value=\"2002-09-23T15:03:46.789\"></ion-datetime>\n</ion-item>\n\n<ion-item>\n <ion-label position=\"floating\">MM/DD/YYYY</ion-label>\n <ion-datetime displayFormat=\"MM/DD/YYYY\" min=\"1994-03-14\" max=\"2012-12-09\"></ion-datetime>\n</ion-item>\n\n<ion-item>\n <ion-label>DDD. MMM DD, YY (custom locale)</ion-label>\n <ion-datetime value=\"1995-04-15\" min=\"1990-02\" max=\"2000\"\n [dayShortNames]=\"customDayShortNames\"\n displayFormat=\"DDD. MMM DD, YY\"\n monthShortNames=\"jan, feb, mar, apr, mai, jun, jul, aug, sep, okt, nov, des\"></ion-datetime>\n</ion-item>\n\n<ion-item>\n <ion-label>D MMM YYYY H:mm</ion-label>\n <ion-datetime displayFormat=\"D MMM YYYY H:mm\" min=\"1997\" max=\"2010\" value=\"2005-06-17T11:06Z\"></ion-datetime>\n</ion-item>\n\n<ion-item>\n <ion-label>DDDD MMM D, YYYY</ion-label>\n <ion-datetime displayFormat=\"DDDD MMM D, YYYY\" min=\"2005\" max=\"2016\" value=\"2008-09-02\"></ion-datetime>\n</ion-item>\n\n<ion-item>\n <ion-label>HH:mm</ion-label>\n <ion-datetime displayFormat=\"HH:mm\"></ion-datetime>\n</ion-item>\n\n<ion-item>\n <ion-label>h:mm a</ion-label>\n <ion-datetime displayFormat=\"h:mm a\"></ion-datetime>\n</ion-item>\n\n<ion-item>\n <ion-label>hh:mm A (15 min steps)</ion-label>\n <ion-datetime displayFormat=\"h:mm A\" minuteValues=\"0,15,30,45\"></ion-datetime>\n</ion-item>\n\n<ion-item>\n <ion-label>Leap years, summer months</ion-label>\n <ion-datetime displayFormat=\"MM/YYYY\" pickerFormat=\"MMMM YYYY\" monthValues=\"6,7,8\" [yearValues]=\"customYearValues\"></ion-datetime>\n</ion-item>\n\n<ion-item>\n <ion-label>Specific days/months/years</ion-label>\n <ion-datetime monthValues=\"6,7,8\" yearValues=\"2014,2015\" dayValues=\"01,02,03,04,05,06,08,09,10, 11, 12, 13, 14\" displayFormat=\"DD/MMM/YYYY\"></ion-datetime>\n</ion-item>\n```\n\n```typescript\n@Component({…})\nexport class MyComponent {\n customYearValues = [2020, 2016, 2008, 2004, 2000, 1996];\n customDayShortNames = ['s\\u00f8n', 'man', 'tir', 'ons', 'tor', 'fre', 'l\\u00f8r'];\n customPickerOptions: any;\n\n constructor() {\n this.customPickerOptions = {\n buttons: [{\n text: 'Save',\n handler: () => console.log('Clicked Save!')\n }, {\n text: 'Log',\n handler: () => {\n console.log('Clicked Log. Do not Dismiss.');\n return false;\n }\n }]\n }\n }\n\n}\n```\n",
2825 "javascript": "```html\n<ion-item>\n <ion-label>MMMM</ion-label>\n <ion-datetime display-format=\"MMMM\" value=\"2012-12-15T13:47:20.789\"></ion-datetime>\n</ion-item>\n\n<ion-item>\n <ion-label>MM DD YY</ion-label>\n <ion-datetime display-format=\"MM DD YY\" placeholder=\"Select Date\"></ion-datetime>\n</ion-item>\n\n<ion-item>\n <ion-label>Disabled</ion-label>\n <ion-datetime id=\"dynamicDisabled\" display-format=\"MM DD YY\" disabled value=\"1994-12-15\"></ion-datetime>\n</ion-item>\n\n<ion-item>\n <ion-label>YYYY</ion-label>\n <ion-datetime id=\"customPickerOptions\" placeholder=\"Custom Options\" display-format=\"YYYY\" min=\"1981\" max=\"2002\"></ion-datetime>\n</ion-item>\n\n<ion-item>\n <ion-label position=\"stacked\">MMMM YY</ion-label>\n <ion-datetime display-format=\"MMMM YY\" min=\"1989-06-04\" max=\"2004-08-23\" value=\"1994-12-15T13:47:20.789\"></ion-datetime>\n</ion-item>\n\n<ion-item>\n <ion-label position=\"floating\">MM/DD/YYYY</ion-label>\n <ion-datetime display-format=\"MM/DD/YYYY\" min=\"1994-03-14\" max=\"2012-12-09\" value=\"2002-09-23T15:03:46.789\"></ion-datetime>\n</ion-item>\n\n<ion-item>\n <ion-label position=\"floating\">MM/DD/YYYY</ion-label>\n <ion-datetime display-format=\"MM/DD/YYYY\" min=\"1994-03-14\" max=\"2012-12-09\"></ion-datetime>\n</ion-item>\n\n<ion-item>\n <ion-label>DDD. MMM DD, YY (custom locale)</ion-label>\n <ion-datetime id=\"customDayShortNames\" value=\"1995-04-15\" min=\"1990-02\" max=\"2000\"\n display-format=\"DDD. MMM DD, YY\"\n month-short-names=\"jan, feb, mar, apr, mai, jun, jul, aug, sep, okt, nov, des\"></ion-datetime>\n</ion-item>\n\n<ion-item>\n <ion-label>D MMM YYYY H:mm</ion-label>\n <ion-datetime display-format=\"D MMM YYYY H:mm\" min=\"1997\" max=\"2010\" value=\"2005-06-17T11:06Z\"></ion-datetime>\n</ion-item>\n\n<ion-item>\n <ion-label>DDDD MMM D, YYYY</ion-label>\n <ion-datetime display-format=\"DDDD MMM D, YYYY\" min=\"2005\" max=\"2016\" value=\"2008-09-02\"></ion-datetime>\n</ion-item>\n\n<ion-item>\n <ion-label>HH:mm</ion-label>\n <ion-datetime display-format=\"HH:mm\"></ion-datetime>\n</ion-item>\n\n<ion-item>\n <ion-label>h:mm a</ion-label>\n <ion-datetime display-format=\"h:mm a\"></ion-datetime>\n</ion-item>\n\n<ion-item>\n <ion-label>hh:mm A (15 min steps)</ion-label>\n <ion-datetime display-format=\"h:mm A\" minute-values=\"0,15,30,45\"></ion-datetime>\n</ion-item>\n\n<ion-item>\n <ion-label>Leap years, summer months</ion-label>\n <ion-datetime id=\"customYearValues\" display-format=\"MM/YYYY\" picker-format=\"MMMM YYYY\" month-values=\"6,7,8\"></ion-datetime>\n</ion-item>\n\n<ion-item>\n <ion-label>Specific days/months/years</ion-label>\n <ion-datetime month-values=\"6,7,8\" year-values=\"2014,2015\" day-values=\"01,02,03,04,05,06,08,09,10, 11, 12, 13, 14\" display-format=\"DD/MMM/YYYY\"></ion-datetime>\n</ion-item>\n```\n\n```javascript\nvar yearValuesArray = [2020, 2016, 2008, 2004, 2000, 1996];\nvar customYearValues = document.getElementById('customYearValues');\ncustomYearValues.yearValues = yearValuesArray;\n\nvar dayShortNamesArray = [\n 's\\u00f8n',\n 'man',\n 'tir',\n 'ons',\n 'tor',\n 'fre',\n 'l\\u00f8r'\n];\nvar customDayShortNames = document.getElementById('customDayShortNames');\ncustomDayShortNames.dayShortNames = dayShortNamesArray;\n\nvar customPickerButtons = {\n buttons: [{\n text: 'Save',\n handler: () => console.log('Clicked Save!')\n }, {\n text: 'Log',\n handler: () => {\n console.log('Clicked Log. Do not Dismiss.');\n return false;\n }\n }]\n}\nvar customPickerOptions = document.getElementById('customPickerOptions');\ncustomPickerOptions.pickerOptions = customPickerButtons;\n```",
2826 "react": "```tsx\nimport React from 'react';\nimport { IonItem, IonLabel, IonDatetime, IonContent } from '@ionic/react';\n\nconst customYearValues = [2020, 2016, 2008, 2004, 2000, 1996];\n\nconst customDayShortNames = [\n 's\\u00f8n',\n 'man',\n 'tir',\n 'ons',\n 'tor',\n 'fre',\n 'l\\u00f8r'\n];\n\nexport const DateTimeExample: React.FC = () => (\n <IonContent>\n <IonItem>\n <IonLabel>MMMM</IonLabel>\n <IonDatetime displayFormat=\"MMMM\" value=\"2012-12-15T13:47:20.789\"></IonDatetime>\n </IonItem>\n\n <IonItem>\n <IonLabel>MM DD YY</IonLabel>\n <IonDatetime displayFormat=\"MM DD YY\" placeholder=\"Select Date\"></IonDatetime>\n </IonItem>\n\n <IonItem>\n <IonLabel>Disabled</IonLabel>\n <IonDatetime id=\"dynamicDisabled\" displayFormat=\"MM DD YY\" disabled value=\"1994-12-15\"></IonDatetime>\n </IonItem>\n\n <IonItem>\n <IonLabel>YYYY</IonLabel>\n <IonDatetime pickerOptions={{\n buttons: [\n {\n text: 'Save',\n handler: () => console.log('Clicked Save!')\n }, {\n text: 'Log',\n handler: () => {\n console.log('Clicked Log. Do not Dismiss.');\n return false;\n }\n }\n ]\n }}\n placeholder=\"Custom Options\" displayFormat=\"YYYY\" min=\"1981\" max=\"2002\"></IonDatetime>\n </IonItem>\n\n <IonItem>\n <IonLabel position=\"stacked\">MMMM YY</IonLabel>\n <IonDatetime displayFormat=\"MMMM YY\" min=\"1989-06-04\" max=\"2004-08-23\" value=\"1994-12-15T13:47:20.789\"></IonDatetime>\n </IonItem>\n\n <IonItem>\n <IonLabel position=\"floating\">MM/DD/YYYY</IonLabel>\n <IonDatetime displayFormat=\"MM/DD/YYYY\" min=\"1994-03-14\" max=\"2012-12-09\" value=\"2002-09-23T15:03:46.789\"></IonDatetime>\n </IonItem>\n\n <IonItem>\n <IonLabel position=\"floating\">MM/DD/YYYY</IonLabel>\n <IonDatetime displayFormat=\"MM/DD/YYYY\" min=\"1994-03-14\" max=\"2012-12-09\"></IonDatetime>\n </IonItem>\n\n <IonItem>\n <IonLabel>DDD. MMM DD, YY (custom locale)</IonLabel>\n <IonDatetime\n value=\"1995-04-15\"\n min=\"1990-02\"\n max=\"2000\"\n dayShortNames={customDayShortNames}\n displayFormat=\"DDD. MMM DD, YY\"\n monthShortNames=\"jan, feb, mar, apr, mai, jun, jul, aug, sep, okt, nov, des\"\n ></IonDatetime>\n </IonItem>\n\n <IonItem>\n <IonLabel>D MMM YYYY H:mm</IonLabel>\n <IonDatetime displayFormat=\"D MMM YYYY H:mm\" min=\"1997\" max=\"2010\" value=\"2005-06-17T11:06Z\"></IonDatetime>\n </IonItem>\n\n <IonItem>\n <IonLabel>DDDD MMM D, YYYY</IonLabel>\n <IonDatetime displayFormat=\"DDDD MMM D, YYYY\" min=\"2005\" max=\"2016\" value=\"2008-09-02\"></IonDatetime>\n </IonItem>\n\n <IonItem>\n <IonLabel>HH:mm</IonLabel>\n <IonDatetime displayFormat=\"HH:mm\"></IonDatetime>\n </IonItem>\n\n <IonItem>\n <IonLabel>h:mm a</IonLabel>\n <IonDatetime displayFormat=\"h:mm a\"></IonDatetime>\n </IonItem>\n\n <IonItem>\n <IonLabel>hh:mm A (15 min steps)</IonLabel>\n <IonDatetime displayFormat=\"h:mm A\" minuteValues=\"0,15,30,45\"></IonDatetime>\n </IonItem>\n\n <IonItem>\n <IonLabel>Leap years, summer months</IonLabel>\n <IonDatetime displayFormat=\"MM/YYYY\" pickerFormat=\"MMMM YYYY\" monthValues=\"6,7,8\" yearValues={customYearValues}></IonDatetime>\n </IonItem>\n\n <IonItem>\n <IonLabel>Specific days/months/years</IonLabel>\n <IonDatetime\n monthValues='6,7,8'\n yearValues='2014,2015'\n dayValues=\"01,02,03,04,05,06,08,09,10, 11, 12, 13, 14\"\n displayFormat=\"DD/MMM/YYYY\"\n ></IonDatetime>\n </IonItem>\n </IonContent>\n);\n```",
2827 "vue": "```html\n<template>\n <ion-item>\n <ion-label>MMMM</ion-label>\n <ion-datetime displayFormat=\"MMMM\" value=\"2012-12-15T13:47:20.789\"></ion-datetime>\n </ion-item>\n\n <ion-item>\n <ion-label>MM DD YY</ion-label>\n <ion-datetime displayFormat=\"MM DD YY\" placeholder=\"Select Date\"></ion-datetime>\n </ion-item>\n\n <ion-item>\n <ion-label>Disabled</ion-label>\n <ion-datetime id=\"dynamicDisabled\" displayFormat=\"MM DD YY\" disabled value=\"1994-12-15\"></ion-datetime>\n </ion-item>\n\n <ion-item>\n <ion-label>YYYY</ion-label>\n <ion-datetime :pickerOptions=\"customPickerOptions\" placeholder=\"Custom Options\" displayFormat=\"YYYY\" min=\"1981\" max=\"2002\"></ion-datetime>\n </ion-item>\n\n <ion-item>\n <ion-label position=\"stacked\">MMMM YY</ion-label>\n <ion-datetime displayFormat=\"MMMM YY\" min=\"1989-06-04\" max=\"2004-08-23\" value=\"1994-12-15T13:47:20.789\"></ion-datetime>\n </ion-item>\n\n <ion-item>\n <ion-label position=\"floating\">MM/DD/YYYY</ion-label>\n <ion-datetime displayFormat=\"MM/DD/YYYY\" min=\"1994-03-14\" max=\"2012-12-09\" value=\"2002-09-23T15:03:46.789\"></ion-datetime>\n </ion-item>\n\n <ion-item>\n <ion-label position=\"floating\">MM/DD/YYYY</ion-label>\n <ion-datetime displayFormat=\"MM/DD/YYYY\" min=\"1994-03-14\" max=\"2012-12-09\"></ion-datetime>\n </ion-item>\n\n <ion-item>\n <ion-label>DDD. MMM DD, YY (custom locale)</ion-label>\n <ion-datetime value=\"1995-04-15\" min=\"1990-02\" max=\"2000\"\n :dayShortNames=\"customDayShortNames\"\n displayFormat=\"DDD. MMM DD, YY\"\n monthShortNames=\"jan, feb, mar, apr, mai, jun, jul, aug, sep, okt, nov, des\"></ion-datetime>\n </ion-item>\n\n <ion-item>\n <ion-label>D MMM YYYY H:mm</ion-label>\n <ion-datetime displayFormat=\"D MMM YYYY H:mm\" min=\"1997\" max=\"2010\" value=\"2005-06-17T11:06Z\"></ion-datetime>\n </ion-item>\n\n <ion-item>\n <ion-label>DDDD MMM D, YYYY</ion-label>\n <ion-datetime displayFormat=\"DDDD MMM D, YYYY\" min=\"2005\" max=\"2016\" value=\"2008-09-02\"></ion-datetime>\n </ion-item>\n\n <ion-item>\n <ion-label>HH:mm</ion-label>\n <ion-datetime displayFormat=\"HH:mm\"></ion-datetime>\n </ion-item>\n\n <ion-item>\n <ion-label>h:mm a</ion-label>\n <ion-datetime displayFormat=\"h:mm a\"></ion-datetime>\n </ion-item>\n\n <ion-item>\n <ion-label>hh:mm A (15 min steps)</ion-label>\n <ion-datetime displayFormat=\"h:mm A\" minuteValues=\"0,15,30,45\"></ion-datetime>\n </ion-item>\n\n <ion-item>\n <ion-label>Leap years, summer months</ion-label>\n <ion-datetime displayFormat=\"MM/YYYY\" pickerFormat=\"MMMM YYYY\" monthValues=\"6,7,8\" :yearValues=\"customYearValues\"></ion-datetime>\n </ion-item>\n\n <ion-item>\n <ion-label>Specific days/months/years</ion-label>\n <ion-datetime monthValues=\"6,7,8\" yearValues=\"2014,2015\" dayValues=\"01,02,03,04,05,06,08,09,10, 11, 12, 13, 14\" displayFormat=\"DD/MMM/YYYY\"></ion-datetime>\n </ion-item>\n</template>\n\n<script lang=\"ts\">\n import { Component, Vue } from 'vue-property-decorator';\n\n @Component()\n export default class Example extends Vue {\n customYearValues = [2020, 2016, 2008, 2004, 2000, 1996];\n\n customDayShortNames = [\n 's\\u00f8n',\n 'man',\n 'tir',\n 'ons',\n 'tor',\n 'fre',\n 'l\\u00f8r'\n ];\n\n customPickerOptions = {\n buttons: [{\n text: 'Save',\n handler: () => console.log('Clicked Save!')\n }, {\n text: 'Log',\n handler: () => {\n console.log('Clicked Log. Do not Dismiss.');\n return false;\n }\n }]\n }\n }\n</script>\n```"
2828 },
2829 "props": [
2830 {
2831 "name": "cancelText",
2832 "type": "string",
2833 "mutable": false,
2834 "attr": "cancel-text",
2835 "reflectToAttr": false,
2836 "docs": "The text to display on the picker's cancel button.",
2837 "docsTags": [],
2838 "default": "'Cancel'",
2839 "optional": false,
2840 "required": false
2841 },
2842 {
2843 "name": "dayNames",
2844 "type": "string | string[] | undefined",
2845 "mutable": false,
2846 "attr": "day-names",
2847 "reflectToAttr": false,
2848 "docs": "Full day of the week names. This can be used to provide\nlocale names for each day in the week. Defaults to English.",
2849 "docsTags": [],
2850 "optional": true,
2851 "required": false
2852 },
2853 {
2854 "name": "dayShortNames",
2855 "type": "string | string[] | undefined",
2856 "mutable": false,
2857 "attr": "day-short-names",
2858 "reflectToAttr": false,
2859 "docs": "Short abbreviated day of the week names. This can be used to provide\nlocale names for each day in the week. Defaults to English.",
2860 "docsTags": [],
2861 "optional": true,
2862 "required": false
2863 },
2864 {
2865 "name": "dayValues",
2866 "type": "number | number[] | string | undefined",
2867 "mutable": false,
2868 "attr": "day-values",
2869 "reflectToAttr": false,
2870 "docs": "Values used to create the list of selectable days. By default\nevery day is shown for the given month. However, to control exactly which days of\nthe month to display, the `dayValues` input can take a number, an array of numbers, or\na string of comma separated numbers. Note that even if the array days have an invalid\nnumber for the selected month, like `31` in February, it will correctly not show\ndays which are not valid for the selected month.",
2871 "docsTags": [],
2872 "optional": true,
2873 "required": false
2874 },
2875 {
2876 "name": "disabled",
2877 "type": "boolean",
2878 "mutable": false,
2879 "attr": "disabled",
2880 "reflectToAttr": false,
2881 "docs": "If `true`, the user cannot interact with the datetime.",
2882 "docsTags": [],
2883 "default": "false",
2884 "optional": false,
2885 "required": false
2886 },
2887 {
2888 "name": "displayFormat",
2889 "type": "string",
2890 "mutable": false,
2891 "attr": "display-format",
2892 "reflectToAttr": false,
2893 "docs": "The display format of the date and time as text that shows\nwithin the item. When the `pickerFormat` input is not used, then the\n`displayFormat` is used for both display the formatted text, and determining\nthe datetime picker's columns. See the `pickerFormat` input description for\nmore info. Defaults to `MMM D, YYYY`.",
2894 "docsTags": [],
2895 "default": "'MMM D, YYYY'",
2896 "optional": false,
2897 "required": false
2898 },
2899 {
2900 "name": "doneText",
2901 "type": "string",
2902 "mutable": false,
2903 "attr": "done-text",
2904 "reflectToAttr": false,
2905 "docs": "The text to display on the picker's \"Done\" button.",
2906 "docsTags": [],
2907 "default": "'Done'",
2908 "optional": false,
2909 "required": false
2910 },
2911 {
2912 "name": "hourValues",
2913 "type": "number | number[] | string | undefined",
2914 "mutable": false,
2915 "attr": "hour-values",
2916 "reflectToAttr": false,
2917 "docs": "Values used to create the list of selectable hours. By default\nthe hour values range from `0` to `23` for 24-hour, or `1` to `12` for 12-hour. However,\nto control exactly which hours to display, the `hourValues` input can take a number, an\narray of numbers, or a string of comma separated numbers.",
2918 "docsTags": [],
2919 "optional": true,
2920 "required": false
2921 },
2922 {
2923 "name": "max",
2924 "type": "string | undefined",
2925 "mutable": true,
2926 "attr": "max",
2927 "reflectToAttr": false,
2928 "docs": "The maximum datetime allowed. Value must be a date string\nfollowing the\n[ISO 8601 datetime format standard](https://www.w3.org/TR/NOTE-datetime),\n`1996-12-19`. The format does not have to be specific to an exact\ndatetime. For example, the maximum could just be the year, such as `1994`.\nDefaults to the end of this year.",
2929 "docsTags": [],
2930 "optional": true,
2931 "required": false
2932 },
2933 {
2934 "name": "min",
2935 "type": "string | undefined",
2936 "mutable": true,
2937 "attr": "min",
2938 "reflectToAttr": false,
2939 "docs": "The minimum datetime allowed. Value must be a date string\nfollowing the\n[ISO 8601 datetime format standard](https://www.w3.org/TR/NOTE-datetime),\nsuch as `1996-12-19`. The format does not have to be specific to an exact\ndatetime. For example, the minimum could just be the year, such as `1994`.\nDefaults to the beginning of the year, 100 years ago from today.",
2940 "docsTags": [],
2941 "optional": true,
2942 "required": false
2943 },
2944 {
2945 "name": "minuteValues",
2946 "type": "number | number[] | string | undefined",
2947 "mutable": false,
2948 "attr": "minute-values",
2949 "reflectToAttr": false,
2950 "docs": "Values used to create the list of selectable minutes. By default\nthe minutes range from `0` to `59`. However, to control exactly which minutes to display,\nthe `minuteValues` input can take a number, an array of numbers, or a string of comma\nseparated numbers. For example, if the minute selections should only be every 15 minutes,\nthen this input value would be `minuteValues=\"0,15,30,45\"`.",
2951 "docsTags": [],
2952 "optional": true,
2953 "required": false
2954 },
2955 {
2956 "name": "mode",
2957 "type": "\"ios\" | \"md\"",
2958 "mutable": false,
2959 "attr": "mode",
2960 "reflectToAttr": false,
2961 "docs": "The mode determines which platform styles to use.",
2962 "docsTags": [],
2963 "optional": true,
2964 "required": false
2965 },
2966 {
2967 "name": "monthNames",
2968 "type": "string | string[] | undefined",
2969 "mutable": false,
2970 "attr": "month-names",
2971 "reflectToAttr": false,
2972 "docs": "Full names for each month name. This can be used to provide\nlocale month names. Defaults to English.",
2973 "docsTags": [],
2974 "optional": true,
2975 "required": false
2976 },
2977 {
2978 "name": "monthShortNames",
2979 "type": "string | string[] | undefined",
2980 "mutable": false,
2981 "attr": "month-short-names",
2982 "reflectToAttr": false,
2983 "docs": "Short abbreviated names for each month name. This can be used to provide\nlocale month names. Defaults to English.",
2984 "docsTags": [],
2985 "optional": true,
2986 "required": false
2987 },
2988 {
2989 "name": "monthValues",
2990 "type": "number | number[] | string | undefined",
2991 "mutable": false,
2992 "attr": "month-values",
2993 "reflectToAttr": false,
2994 "docs": "Values used to create the list of selectable months. By default\nthe month values range from `1` to `12`. However, to control exactly which months to\ndisplay, the `monthValues` input can take a number, an array of numbers, or a string of\ncomma separated numbers. For example, if only summer months should be shown, then this\ninput value would be `monthValues=\"6,7,8\"`. Note that month numbers do *not* have a\nzero-based index, meaning January's value is `1`, and December's is `12`.",
2995 "docsTags": [],
2996 "optional": true,
2997 "required": false
2998 },
2999 {
3000 "name": "name",
3001 "type": "string",
3002 "mutable": false,
3003 "attr": "name",
3004 "reflectToAttr": false,
3005 "docs": "The name of the control, which is submitted with the form data.",
3006 "docsTags": [],
3007 "default": "this.inputId",
3008 "optional": false,
3009 "required": false
3010 },
3011 {
3012 "name": "pickerFormat",
3013 "type": "string | undefined",
3014 "mutable": false,
3015 "attr": "picker-format",
3016 "reflectToAttr": false,
3017 "docs": "The format of the date and time picker columns the user selects.\nA datetime input can have one or many datetime parts, each getting their\nown column which allow individual selection of that particular datetime part. For\nexample, year and month columns are two individually selectable columns which help\nchoose an exact date from the datetime picker. Each column follows the string\nparse format. Defaults to use `displayFormat`.",
3018 "docsTags": [],
3019 "optional": true,
3020 "required": false
3021 },
3022 {
3023 "name": "pickerOptions",
3024 "type": "undefined | { columns?: PickerColumn[] | undefined; buttons?: PickerButton[] | undefined; cssClass?: string | string[] | undefined; backdropDismiss?: boolean | undefined; animated?: boolean | undefined; mode?: \"ios\" | \"md\" | undefined; keyboardClose?: boolean | undefined; id?: string | undefined; enterAnimation?: AnimationBuilder | undefined; leaveAnimation?: AnimationBuilder | undefined; }",
3025 "mutable": false,
3026 "reflectToAttr": false,
3027 "docs": "Any additional options that the picker interface can accept.\nSee the [Picker API docs](../picker) for the picker options.",
3028 "docsTags": [],
3029 "optional": true,
3030 "required": false
3031 },
3032 {
3033 "name": "placeholder",
3034 "type": "null | string | undefined",
3035 "mutable": false,
3036 "attr": "placeholder",
3037 "reflectToAttr": false,
3038 "docs": "The text to display when there's no date selected yet.\nUsing lowercase to match the input attribute",
3039 "docsTags": [],
3040 "optional": true,
3041 "required": false
3042 },
3043 {
3044 "name": "readonly",
3045 "type": "boolean",
3046 "mutable": false,
3047 "attr": "readonly",
3048 "reflectToAttr": false,
3049 "docs": "If `true`, the datetime appears normal but is not interactive.",
3050 "docsTags": [],
3051 "default": "false",
3052 "optional": false,
3053 "required": false
3054 },
3055 {
3056 "name": "value",
3057 "type": "null | string | undefined",
3058 "mutable": true,
3059 "attr": "value",
3060 "reflectToAttr": false,
3061 "docs": "The value of the datetime as a valid ISO 8601 datetime string.",
3062 "docsTags": [],
3063 "optional": true,
3064 "required": false
3065 },
3066 {
3067 "name": "yearValues",
3068 "type": "number | number[] | string | undefined",
3069 "mutable": false,
3070 "attr": "year-values",
3071 "reflectToAttr": false,
3072 "docs": "Values used to create the list of selectable years. By default\nthe year values range between the `min` and `max` datetime inputs. However, to\ncontrol exactly which years to display, the `yearValues` input can take a number, an array\nof numbers, or string of comma separated numbers. For example, to show upcoming and\nrecent leap years, then this input's value would be `yearValues=\"2024,2020,2016,2012,2008\"`.",
3073 "docsTags": [],
3074 "optional": true,
3075 "required": false
3076 }
3077 ],
3078 "methods": [
3079 {
3080 "name": "open",
3081 "returns": {
3082 "type": "Promise<void>",
3083 "docs": ""
3084 },
3085 "signature": "open() => Promise<void>",
3086 "parameters": [],
3087 "docs": "Opens the datetime overlay.",
3088 "docsTags": []
3089 }
3090 ],
3091 "events": [
3092 {
3093 "event": "ionBlur",
3094 "detail": "void",
3095 "bubbles": true,
3096 "cancelable": true,
3097 "composed": true,
3098 "docs": "Emitted when the datetime loses focus.",
3099 "docsTags": []
3100 },
3101 {
3102 "event": "ionCancel",
3103 "detail": "void",
3104 "bubbles": true,
3105 "cancelable": true,
3106 "composed": true,
3107 "docs": "Emitted when the datetime selection was cancelled.",
3108 "docsTags": []
3109 },
3110 {
3111 "event": "ionChange",
3112 "detail": "DatetimeChangeEventDetail",
3113 "bubbles": true,
3114 "cancelable": true,
3115 "composed": true,
3116 "docs": "Emitted when the value (selected date) has changed.",
3117 "docsTags": []
3118 },
3119 {
3120 "event": "ionFocus",
3121 "detail": "void",
3122 "bubbles": true,
3123 "cancelable": true,
3124 "composed": true,
3125 "docs": "Emitted when the datetime has focus.",
3126 "docsTags": []
3127 }
3128 ],
3129 "styles": [
3130 {
3131 "name": "--padding-bottom",
3132 "annotation": "prop",
3133 "docs": "Bottom padding of the datetime"
3134 },
3135 {
3136 "name": "--padding-end",
3137 "annotation": "prop",
3138 "docs": "Right padding if direction is left-to-right, and left padding if direction is right-to-left of the datetime"
3139 },
3140 {
3141 "name": "--padding-start",
3142 "annotation": "prop",
3143 "docs": "Left padding if direction is left-to-right, and right padding if direction is right-to-left of the datetime"
3144 },
3145 {
3146 "name": "--padding-top",
3147 "annotation": "prop",
3148 "docs": "Top padding of the datetime"
3149 },
3150 {
3151 "name": "--placeholder-color",
3152 "annotation": "prop",
3153 "docs": "Color of the datetime placeholder"
3154 }
3155 ],
3156 "slots": []
3157 },
3158 {
3159 "tag": "ion-fab",
3160 "filePath": "src/components/fab/fab.tsx",
3161 "encapsulation": "shadow",
3162 "readme": "# ion-fab\n\nFabs are container elements that contain one or more fab buttons. They should be placed in a fixed position that does not scroll with the content. Fab should have one main fab-button. Fabs can also contain fab-lists which contain related buttons that show when the main fab button is clicked. The same fab container can contain several [fab-list](../fab-list) elements with different side values.\n",
3163 "docs": "Fabs are container elements that contain one or more fab buttons. They should be placed in a fixed position that does not scroll with the content. Fab should have one main fab-button. Fabs can also contain fab-lists which contain related buttons that show when the main fab button is clicked. The same fab container can contain several [fab-list](../fab-list) elements with different side values.",
3164 "docsTags": [],
3165 "usage": {
3166 "angular": "```html\n<ion-content>\n <!-- fab placed to the top end -->\n <ion-fab vertical=\"top\" horizontal=\"end\" slot=\"fixed\">\n <ion-fab-button>\n <ion-icon name=\"add\"></ion-icon>\n </ion-fab-button>\n </ion-fab>\n\n <!-- fab placed to the bottom end -->\n <ion-fab vertical=\"bottom\" horizontal=\"end\" slot=\"fixed\">\n <ion-fab-button>\n <ion-icon name=\"arrow-dropleft\"></ion-icon>\n </ion-fab-button>\n </ion-fab>\n\n <!-- fab placed to the top start -->\n <ion-fab vertical=\"top\" horizontal=\"start\" slot=\"fixed\">\n <ion-fab-button>\n <ion-icon name=\"arrow-dropright\"></ion-icon>\n </ion-fab-button>\n </ion-fab>\n\n <!-- fab placed to the bottom start -->\n <ion-fab vertical=\"bottom\" horizontal=\"start\" slot=\"fixed\">\n <ion-fab-button>\n <ion-icon name=\"arrow-dropup\"></ion-icon>\n </ion-fab-button>\n </ion-fab>\n\n <!-- fab placed to the (vertical) center and start -->\n <ion-fab vertical=\"center\" horizontal=\"start\" slot=\"fixed\">\n <ion-fab-button>\n <ion-icon name=\"share\"></ion-icon>\n </ion-fab-button>\n </ion-fab>\n\n <!-- fab placed to the (vertical) center and end -->\n <ion-fab vertical=\"center\" horizontal=\"end\" slot=\"fixed\">\n <ion-fab-button>\n <ion-icon name=\"add\"></ion-icon>\n </ion-fab-button>\n </ion-fab>\n\n <!-- fab placed to the top and end and on the top edge of the content overlapping header -->\n <ion-fab vertical=\"top\" horizontal=\"end\" edge slot=\"fixed\">\n <ion-fab-button>\n <ion-icon name=\"person\"></ion-icon>\n </ion-fab-button>\n </ion-fab>\n\n <!-- fab placed to the bottom and start and on the bottom edge of the content overlapping footer with a list to the right -->\n <ion-fab vertical=\"bottom\" horizontal=\"start\" edge slot=\"fixed\">\n <ion-fab-button>\n <ion-icon name=\"settings\"></ion-icon>\n </ion-fab-button>\n <ion-fab-list side=\"end\">\n <ion-fab-button><ion-icon name=\"logo-vimeo\"></ion-icon></ion-fab-button>\n </ion-fab-list>\n </ion-fab>\n\n <!-- fab placed in the center of the content with a list on each side -->\n <ion-fab vertical=\"center\" horizontal=\"center\" slot=\"fixed\">\n <ion-fab-button>\n <ion-icon name=\"share\"></ion-icon>\n </ion-fab-button>\n <ion-fab-list side=\"top\">\n <ion-fab-button><ion-icon name=\"logo-vimeo\"></ion-icon></ion-fab-button>\n </ion-fab-list>\n <ion-fab-list side=\"bottom\">\n <ion-fab-button><ion-icon name=\"logo-facebook\"></ion-icon></ion-fab-button>\n </ion-fab-list>\n <ion-fab-list side=\"start\">\n <ion-fab-button><ion-icon name=\"logo-instagram\"></ion-icon></ion-fab-button>\n </ion-fab-list>\n <ion-fab-list side=\"end\">\n <ion-fab-button><ion-icon name=\"logo-twitter\"></ion-icon></ion-fab-button>\n </ion-fab-list>\n </ion-fab>\n</ion-content>\n```\n",
3167 "javascript": "```html\n<ion-content>\n <!-- fab placed to the top end -->\n <ion-fab vertical=\"top\" horizontal=\"end\" slot=\"fixed\">\n <ion-fab-button>\n <ion-icon name=\"add\"></ion-icon>\n </ion-fab-button>\n </ion-fab>\n\n <!-- fab placed to the bottom end -->\n <ion-fab vertical=\"bottom\" horizontal=\"end\" slot=\"fixed\">\n <ion-fab-button>\n <ion-icon name=\"arrow-dropleft\"></ion-icon>\n </ion-fab-button>\n </ion-fab>\n\n <!-- fab placed to the top start -->\n <ion-fab vertical=\"top\" horizontal=\"start\" slot=\"fixed\">\n <ion-fab-button>\n <ion-icon name=\"arrow-dropright\"></ion-icon>\n </ion-fab-button>\n </ion-fab>\n\n <!-- fab placed to the bottom start -->\n <ion-fab vertical=\"bottom\" horizontal=\"start\" slot=\"fixed\">\n <ion-fab-button>\n <ion-icon name=\"arrow-dropup\"></ion-icon>\n </ion-fab-button>\n </ion-fab>\n\n <!-- fab placed to the (vertical) center and start -->\n <ion-fab vertical=\"center\" horizontal=\"start\" slot=\"fixed\">\n <ion-fab-button>\n <ion-icon name=\"share\"></ion-icon>\n </ion-fab-button>\n </ion-fab>\n\n <!-- fab placed to the (vertical) center and end -->\n <ion-fab vertical=\"center\" horizontal=\"end\" slot=\"fixed\">\n <ion-fab-button>\n <ion-icon name=\"add\"></ion-icon>\n </ion-fab-button>\n </ion-fab>\n\n <!-- fab placed to the top and end and on the top edge of the content overlapping header -->\n <ion-fab vertical=\"top\" horizontal=\"end\" edge slot=\"fixed\">\n <ion-fab-button>\n <ion-icon name=\"person\"></ion-icon>\n </ion-fab-button>\n </ion-fab>\n\n <!-- fab placed to the bottom and start and on the bottom edge of the content overlapping footer with a list to the right -->\n <ion-fab vertical=\"bottom\" horizontal=\"start\" edge slot=\"fixed\">\n <ion-fab-button>\n <ion-icon name=\"settings\"></ion-icon>\n </ion-fab-button>\n <ion-fab-list side=\"end\">\n <ion-fab-button><ion-icon name=\"logo-vimeo\"></ion-icon></ion-fab-button>\n </ion-fab-list>\n </ion-fab>\n\n <!-- fab placed in the center of the content with a list on each side -->\n <ion-fab vertical=\"center\" horizontal=\"center\" slot=\"fixed\">\n <ion-fab-button>\n <ion-icon name=\"share\"></ion-icon>\n </ion-fab-button>\n <ion-fab-list side=\"top\">\n <ion-fab-button><ion-icon name=\"logo-vimeo\"></ion-icon></ion-fab-button>\n </ion-fab-list>\n <ion-fab-list side=\"bottom\">\n <ion-fab-button><ion-icon name=\"logo-facebook\"></ion-icon></ion-fab-button>\n </ion-fab-list>\n <ion-fab-list side=\"start\">\n <ion-fab-button><ion-icon name=\"logo-instagram\"></ion-icon></ion-fab-button>\n </ion-fab-list>\n <ion-fab-list side=\"end\">\n <ion-fab-button><ion-icon name=\"logo-twitter\"></ion-icon></ion-fab-button>\n </ion-fab-list>\n </ion-fab>\n</ion-content>\n```\n",
3168 "react": "```tsx\nimport React from 'react';\nimport { IonContent, IonFab, IonFabButton, IonIcon, IonFabList } from '@ionic/react';\n\nexport const FabExample: React.FC = () => (\n <IonContent>\n {/*-- fab placed to the top end --*/}\n <IonFab vertical=\"top\" horizontal=\"end\" slot=\"fixed\">\n <IonFabButton>\n <IonIcon name=\"add\" />\n </IonFabButton>\n </IonFab>\n\n {/*-- fab placed to the bottom end --*/}\n <IonFab vertical=\"bottom\" horizontal=\"end\" slot=\"fixed\">\n <IonFabButton>\n <IonIcon name=\"arrow-dropleft\" />\n </IonFabButton>\n </IonFab>\n\n {/*-- fab placed to the top start --*/}\n <IonFab vertical=\"top\" horizontal=\"start\" slot=\"fixed\">\n <IonFabButton>\n <IonIcon name=\"arrow-dropright\" />\n </IonFabButton>\n </IonFab>\n\n {/*-- fab placed to the bottom start --*/}\n <IonFab vertical=\"bottom\" horizontal=\"start\" slot=\"fixed\">\n <IonFabButton>\n <IonIcon name=\"arrow-dropup\" />\n </IonFabButton>\n </IonFab>\n\n {/*-- fab placed to the (vertical) center and start --*/}\n <IonFab vertical=\"center\" horizontal=\"start\" slot=\"fixed\">\n <IonFabButton>\n <IonIcon name=\"share\" />\n </IonFabButton>\n </IonFab>\n\n {/*-- fab placed to the (vertical) center and end --*/}\n <IonFab vertical=\"center\" horizontal=\"end\" slot=\"fixed\">\n <IonFabButton>\n <IonIcon name=\"add\" />\n </IonFabButton>\n </IonFab>\n\n {/*-- fab placed to the top and end and on the top edge of the content overlapping header --*/}\n <IonFab vertical=\"top\" horizontal=\"end\" edge slot=\"fixed\">\n <IonFabButton>\n <IonIcon name=\"person\" />\n </IonFabButton>\n </IonFab>\n\n {/*-- fab placed to the bottom and start and on the bottom edge of the content overlapping footer with a list to the right --*/}\n <IonFab vertical=\"bottom\" horizontal=\"start\" edge slot=\"fixed\">\n <IonFabButton>\n <IonIcon name=\"settings\" />\n </IonFabButton>\n <IonFabList side=\"end\">\n <IonFabButton><IonIcon name=\"logo-vimeo\" /></IonFabButton>\n </IonFabList>\n </IonFab>\n\n {/*-- fab placed in the center of the content with a list on each side --*/}\n <IonFab vertical=\"center\" horizontal=\"center\" slot=\"fixed\">\n <IonFabButton>\n <IonIcon name=\"share\" />\n </IonFabButton>\n <IonFabList side=\"top\">\n <IonFabButton><IonIcon name=\"logo-vimeo\" /></IonFabButton>\n </IonFabList>\n <IonFabList side=\"bottom\">\n <IonFabButton><IonIcon name=\"logo-facebook\" /></IonFabButton>\n </IonFabList>\n <IonFabList side=\"start\">\n <IonFabButton><IonIcon name=\"logo-instagram\" /></IonFabButton>\n </IonFabList>\n <IonFabList side=\"end\">\n <IonFabButton><IonIcon name=\"logo-twitter\" /></IonFabButton>\n </IonFabList>\n </IonFab>\n </IonContent>\n);\n```\n",
3169 "vue": "```html\n<template>\n <ion-content>\n <!-- fab placed to the top end -->\n <ion-fab vertical=\"top\" horizontal=\"end\" slot=\"fixed\">\n <ion-fab-button>\n <ion-icon name=\"add\"></ion-icon>\n </ion-fab-button>\n </ion-fab>\n\n <!-- fab placed to the bottom end -->\n <ion-fab vertical=\"bottom\" horizontal=\"end\" slot=\"fixed\">\n <ion-fab-button>\n <ion-icon name=\"arrow-dropleft\"></ion-icon>\n </ion-fab-button>\n </ion-fab>\n\n <!-- fab placed to the top start -->\n <ion-fab vertical=\"top\" horizontal=\"start\" slot=\"fixed\">\n <ion-fab-button>\n <ion-icon name=\"arrow-dropright\"></ion-icon>\n </ion-fab-button>\n </ion-fab>\n\n <!-- fab placed to the bottom start -->\n <ion-fab vertical=\"bottom\" horizontal=\"start\" slot=\"fixed\">\n <ion-fab-button>\n <ion-icon name=\"arrow-dropup\"></ion-icon>\n </ion-fab-button>\n </ion-fab>\n\n <!-- fab placed to the (vertical) center and start -->\n <ion-fab vertical=\"center\" horizontal=\"start\" slot=\"fixed\">\n <ion-fab-button>\n <ion-icon name=\"share\"></ion-icon>\n </ion-fab-button>\n </ion-fab>\n\n <!-- fab placed to the (vertical) center and end -->\n <ion-fab vertical=\"center\" horizontal=\"end\" slot=\"fixed\">\n <ion-fab-button>\n <ion-icon name=\"add\"></ion-icon>\n </ion-fab-button>\n </ion-fab>\n\n <!-- fab placed to the top and end and on the top edge of the content overlapping header -->\n <ion-fab vertical=\"top\" horizontal=\"end\" edge slot=\"fixed\">\n <ion-fab-button>\n <ion-icon name=\"person\"></ion-icon>\n </ion-fab-button>\n </ion-fab>\n\n <!-- fab placed to the bottom and start and on the bottom edge of the content overlapping footer with a list to the right -->\n <ion-fab vertical=\"bottom\" horizontal=\"start\" edge slot=\"fixed\">\n <ion-fab-button>\n <ion-icon name=\"settings\"></ion-icon>\n </ion-fab-button>\n <ion-fab-list side=\"end\">\n <ion-fab-button><ion-icon name=\"logo-vimeo\"></ion-icon></ion-fab-button>\n </ion-fab-list>\n </ion-fab>\n\n <!-- fab placed in the center of the content with a list on each side -->\n <ion-fab vertical=\"center\" horizontal=\"center\" slot=\"fixed\">\n <ion-fab-button>\n <ion-icon name=\"share\"></ion-icon>\n </ion-fab-button>\n <ion-fab-list side=\"top\">\n <ion-fab-button><ion-icon name=\"logo-vimeo\"></ion-icon></ion-fab-button>\n </ion-fab-list>\n <ion-fab-list side=\"bottom\">\n <ion-fab-button><ion-icon name=\"logo-facebook\"></ion-icon></ion-fab-button>\n </ion-fab-list>\n <ion-fab-list side=\"start\">\n <ion-fab-button><ion-icon name=\"logo-instagram\"></ion-icon></ion-fab-button>\n </ion-fab-list>\n <ion-fab-list side=\"end\">\n <ion-fab-button><ion-icon name=\"logo-twitter\"></ion-icon></ion-fab-button>\n </ion-fab-list>\n </ion-fab>\n </ion-content>\n</template>\n```\n"
3170 },
3171 "props": [
3172 {
3173 "name": "activated",
3174 "type": "boolean",
3175 "mutable": true,
3176 "attr": "activated",
3177 "reflectToAttr": false,
3178 "docs": "If `true`, both the `ion-fab-button` and all `ion-fab-list` inside `ion-fab` will become active.\nThat means `ion-fab-button` will become a `close` icon and `ion-fab-list` will become visible.",
3179 "docsTags": [],
3180 "default": "false",
3181 "optional": false,
3182 "required": false
3183 },
3184 {
3185 "name": "edge",
3186 "type": "boolean",
3187 "mutable": false,
3188 "attr": "edge",
3189 "reflectToAttr": false,
3190 "docs": "If `true`, the fab will display on the edge of the header if\n`vertical` is `\"top\"`, and on the edge of the footer if\nit is `\"bottom\"`. Should be used with a `fixed` slot.",
3191 "docsTags": [],
3192 "default": "false",
3193 "optional": false,
3194 "required": false
3195 },
3196 {
3197 "name": "horizontal",
3198 "type": "\"center\" | \"end\" | \"start\" | undefined",
3199 "mutable": false,
3200 "attr": "horizontal",
3201 "reflectToAttr": false,
3202 "docs": "Where to align the fab horizontally in the viewport.",
3203 "docsTags": [],
3204 "optional": true,
3205 "required": false
3206 },
3207 {
3208 "name": "vertical",
3209 "type": "\"bottom\" | \"center\" | \"top\" | undefined",
3210 "mutable": false,
3211 "attr": "vertical",
3212 "reflectToAttr": false,
3213 "docs": "Where to align the fab vertically in the viewport.",
3214 "docsTags": [],
3215 "optional": true,
3216 "required": false
3217 }
3218 ],
3219 "methods": [
3220 {
3221 "name": "close",
3222 "returns": {
3223 "type": "Promise<void>",
3224 "docs": ""
3225 },
3226 "signature": "close() => Promise<void>",
3227 "parameters": [],
3228 "docs": "Close an active FAB list container.",
3229 "docsTags": []
3230 }
3231 ],
3232 "events": [],
3233 "styles": [],
3234 "slots": []
3235 },
3236 {
3237 "tag": "ion-fab-button",
3238 "filePath": "src/components/fab-button/fab-button.tsx",
3239 "encapsulation": "shadow",
3240 "readme": "# ion-fab-button\n\nFloating Action Buttons (FABs) represent the primary action in an application. By default, they have a circular shape. When pressed, the button may open more related actions. As the name suggests, FABs generally float over the content in a fixed position. This is not achieved exclusively by using an `<ion-fab-button>FAB</ion-fab-button>`. They need to be wrapped with an `<ion-fab>` component in order to be fixed over the content.\n\nIf the FAB button is not wrapped with `<ion-fab>`, it will scroll with the content. FAB buttons have a default size, a mini size and can accept different colors:\n",
3241 "docs": "Floating Action Buttons (FABs) represent the primary action in an application. By default, they have a circular shape. When pressed, the button may open more related actions. As the name suggests, FABs generally float over the content in a fixed position. This is not achieved exclusively by using an `<ion-fab-button>FAB</ion-fab-button>`. They need to be wrapped with an `<ion-fab>` component in order to be fixed over the content.\n\nIf the FAB button is not wrapped with `<ion-fab>`, it will scroll with the content. FAB buttons have a default size, a mini size and can accept different colors:",
3242 "docsTags": [
3243 {
3244 "text": "{\"ios\" | \"md\"} mode - The mode determines which platform styles to use.",
3245 "name": "virtualProp"
3246 }
3247 ],
3248 "usage": {
3249 "angular": "```html\n<ion-content>\n\n <!-- Fixed Floating Action Button that does not scroll with the content -->\n <ion-fab>\n <ion-fab-button>Button</ion-fab-button>\n </ion-fab>\n\n <!-- Default Floating Action Button that scrolls with the content.-->\n <ion-fab-button>Default</ion-fab-button>\n\n <!-- Mini -->\n <ion-fab-button size=\"small\">Mini</ion-fab-button>\n\n <!-- Colors -->\n <ion-fab-button color=\"primary\">Primary</ion-fab-button>\n <ion-fab-button color=\"secondary\">Secondary</ion-fab-button>\n <ion-fab-button color=\"danger\">Danger</ion-fab-button>\n <ion-fab-button color=\"light\">Light</ion-fab-button>\n <ion-fab-button color=\"dark\">Dark</ion-fab-button>\n\n</ion-content>\n```\n",
3250 "javascript": "```html\n<ion-content>\n\n <!-- Fixed Floating Action Button that does not scroll with the content -->\n <ion-fab>\n <ion-fab-button>Button</ion-fab-button>\n </ion-fab>\n\n <!-- Default Floating Action Button that scrolls with the content.-->\n <ion-fab-button>Default</ion-fab-button>\n\n <!-- Mini -->\n <ion-fab-button size=\"small\">Mini</ion-fab-button>\n\n <!-- Colors -->\n <ion-fab-button color=\"primary\">Primary</ion-fab-button>\n <ion-fab-button color=\"secondary\">Secondary</ion-fab-button>\n <ion-fab-button color=\"danger\">Danger</ion-fab-button>\n <ion-fab-button color=\"light\">Light</ion-fab-button>\n <ion-fab-button color=\"dark\">Dark</ion-fab-button>\n\n</ion-content>\n```\n",
3251 "react": "```tsx\nimport React from 'react';\nimport { IonContent, IonFab, IonFabButton } from '@ionic/react';\n\nexport const FabButtonExample: React.FC = () => (\n <IonContent>\n {/*-- Fixed Floating Action Button that does not scroll with the content --*/}\n <IonFab>\n <IonFabButton>Button</IonFabButton>\n </IonFab>\n\n {/*-- Default Floating Action Button that scrolls with the content.--*/}\n <IonFabButton>Default</IonFabButton>\n\n {/*-- Mini --*/}\n <IonFabButton size=\"small\">Mini</IonFabButton>\n\n {/*-- Colors --*/}\n <IonFabButton color=\"primary\">Primary</IonFabButton>\n <IonFabButton color=\"secondary\">Secondary</IonFabButton>\n <IonFabButton color=\"danger\">Danger</IonFabButton>\n <IonFabButton color=\"light\">Light</IonFabButton>\n <IonFabButton color=\"dark\">Dark</IonFabButton>\n </IonContent>\n);\n```",
3252 "vue": "```html\n<template>\n <ion-content>\n\n <!-- Fixed Floating Action Button that does not scroll with the content -->\n <ion-fab>\n <ion-fab-button>Button</ion-fab-button>\n </ion-fab>\n\n <!-- Default Floating Action Button that scrolls with the content.-->\n <ion-fab-button>Default</ion-fab-button>\n\n <!-- Mini -->\n <ion-fab-button size=\"small\">Mini</ion-fab-button>\n\n <!-- Colors -->\n <ion-fab-button color=\"primary\">Primary</ion-fab-button>\n <ion-fab-button color=\"secondary\">Secondary</ion-fab-button>\n <ion-fab-button color=\"danger\">Danger</ion-fab-button>\n <ion-fab-button color=\"light\">Light</ion-fab-button>\n <ion-fab-button color=\"dark\">Dark</ion-fab-button>\n\n </ion-content>\n</template>\n```\n"
3253 },
3254 "props": [
3255 {
3256 "name": "activated",
3257 "type": "boolean",
3258 "mutable": false,
3259 "attr": "activated",
3260 "reflectToAttr": false,
3261 "docs": "If `true`, the fab button will be show a close icon.",
3262 "docsTags": [],
3263 "default": "false",
3264 "optional": false,
3265 "required": false
3266 },
3267 {
3268 "name": "color",
3269 "type": "string | undefined",
3270 "mutable": false,
3271 "attr": "color",
3272 "reflectToAttr": false,
3273 "docs": "The color to use from your application's color palette.\nDefault options are: `\"primary\"`, `\"secondary\"`, `\"tertiary\"`, `\"success\"`, `\"warning\"`, `\"danger\"`, `\"light\"`, `\"medium\"`, and `\"dark\"`.\nFor more information on colors, see [theming](/docs/theming/basics).",
3274 "docsTags": [],
3275 "optional": true,
3276 "required": false
3277 },
3278 {
3279 "name": "disabled",
3280 "type": "boolean",
3281 "mutable": false,
3282 "attr": "disabled",
3283 "reflectToAttr": false,
3284 "docs": "If `true`, the user cannot interact with the fab button.",
3285 "docsTags": [],
3286 "default": "false",
3287 "optional": false,
3288 "required": false
3289 },
3290 {
3291 "name": "download",
3292 "type": "string | undefined",
3293 "mutable": false,
3294 "attr": "download",
3295 "reflectToAttr": false,
3296 "docs": "This attribute instructs browsers to download a URL instead of navigating to\nit, so the user will be prompted to save it as a local file. If the attribute\nhas a value, it is used as the pre-filled file name in the Save prompt\n(the user can still change the file name if they want).",
3297 "docsTags": [],
3298 "optional": false,
3299 "required": false
3300 },
3301 {
3302 "name": "href",
3303 "type": "string | undefined",
3304 "mutable": false,
3305 "attr": "href",
3306 "reflectToAttr": false,
3307 "docs": "Contains a URL or a URL fragment that the hyperlink points to.\nIf this property is set, an anchor tag will be rendered.",
3308 "docsTags": [],
3309 "optional": false,
3310 "required": false
3311 },
3312 {
3313 "name": "mode",
3314 "type": "\"ios\" | \"md\"",
3315 "mutable": false,
3316 "attr": "mode",
3317 "reflectToAttr": false,
3318 "docs": "The mode determines which platform styles to use.",
3319 "docsTags": [],
3320 "optional": true,
3321 "required": false
3322 },
3323 {
3324 "name": "rel",
3325 "type": "string | undefined",
3326 "mutable": false,
3327 "attr": "rel",
3328 "reflectToAttr": false,
3329 "docs": "Specifies the relationship of the target object to the link object.\nThe value is a space-separated list of [link types](https://developer.mozilla.org/en-US/docs/Web/HTML/Link_types).",
3330 "docsTags": [],
3331 "optional": false,
3332 "required": false
3333 },
3334 {
3335 "name": "routerDirection",
3336 "type": "\"back\" | \"forward\" | \"root\"",
3337 "mutable": false,
3338 "attr": "router-direction",
3339 "reflectToAttr": false,
3340 "docs": "When using a router, it specifies the transition direction when navigating to\nanother page using `href`.",
3341 "docsTags": [],
3342 "default": "'forward'",
3343 "optional": false,
3344 "required": false
3345 },
3346 {
3347 "name": "show",
3348 "type": "boolean",
3349 "mutable": false,
3350 "attr": "show",
3351 "reflectToAttr": false,
3352 "docs": "If `true`, the fab button will show when in a fab-list.",
3353 "docsTags": [],
3354 "default": "false",
3355 "optional": false,
3356 "required": false
3357 },
3358 {
3359 "name": "size",
3360 "type": "\"small\" | undefined",
3361 "mutable": false,
3362 "attr": "size",
3363 "reflectToAttr": false,
3364 "docs": "The size of the button. Set this to `small` in order to have a mini fab.",
3365 "docsTags": [],
3366 "optional": true,
3367 "required": false
3368 },
3369 {
3370 "name": "target",
3371 "type": "string | undefined",
3372 "mutable": false,
3373 "attr": "target",
3374 "reflectToAttr": false,
3375 "docs": "Specifies where to display the linked URL.\nOnly applies when an `href` is provided.\nSpecial keywords: `\"_blank\"`, `\"_self\"`, `\"_parent\"`, `\"_top\"`.",
3376 "docsTags": [],
3377 "optional": false,
3378 "required": false
3379 },
3380 {
3381 "name": "translucent",
3382 "type": "boolean",
3383 "mutable": false,
3384 "attr": "translucent",
3385 "reflectToAttr": false,
3386 "docs": "If `true`, the fab button will be translucent.\nOnly applies when the mode is `\"ios\"` and the device supports\n[`backdrop-filter`](https://developer.mozilla.org/en-US/docs/Web/CSS/backdrop-filter#Browser_compatibility).",
3387 "docsTags": [],
3388 "default": "false",
3389 "optional": false,
3390 "required": false
3391 },
3392 {
3393 "name": "type",
3394 "type": "\"button\" | \"reset\" | \"submit\"",
3395 "mutable": false,
3396 "attr": "type",
3397 "reflectToAttr": false,
3398 "docs": "The type of the button.",
3399 "docsTags": [],
3400 "default": "'button'",
3401 "optional": false,
3402 "required": false
3403 }
3404 ],
3405 "methods": [],
3406 "events": [
3407 {
3408 "event": "ionBlur",
3409 "detail": "void",
3410 "bubbles": true,
3411 "cancelable": true,
3412 "composed": true,
3413 "docs": "Emitted when the button loses focus.",
3414 "docsTags": []
3415 },
3416 {
3417 "event": "ionFocus",
3418 "detail": "void",
3419 "bubbles": true,
3420 "cancelable": true,
3421 "composed": true,
3422 "docs": "Emitted when the button has focus.",
3423 "docsTags": []
3424 }
3425 ],
3426 "styles": [
3427 {
3428 "name": "--background",
3429 "annotation": "prop",
3430 "docs": "Background of the button"
3431 },
3432 {
3433 "name": "--background-activated",
3434 "annotation": "prop",
3435 "docs": "Background of the button when pressed"
3436 },
3437 {
3438 "name": "--background-focused",
3439 "annotation": "prop",
3440 "docs": "Background of the button when focused with the tab key"
3441 },
3442 {
3443 "name": "--background-hover",
3444 "annotation": "prop",
3445 "docs": "Background of the button on hover"
3446 },
3447 {
3448 "name": "--border-color",
3449 "annotation": "prop",
3450 "docs": "Border color of the button"
3451 },
3452 {
3453 "name": "--border-radius",
3454 "annotation": "prop",
3455 "docs": "Border radius of the button"
3456 },
3457 {
3458 "name": "--border-style",
3459 "annotation": "prop",
3460 "docs": "Border style of the button"
3461 },
3462 {
3463 "name": "--border-width",
3464 "annotation": "prop",
3465 "docs": "Border width of the button"
3466 },
3467 {
3468 "name": "--box-shadow",
3469 "annotation": "prop",
3470 "docs": "Box shadow of the button"
3471 },
3472 {
3473 "name": "--color",
3474 "annotation": "prop",
3475 "docs": "Text color of the button"
3476 },
3477 {
3478 "name": "--color-activated",
3479 "annotation": "prop",
3480 "docs": "Text color of the button when pressed"
3481 },
3482 {
3483 "name": "--color-focused",
3484 "annotation": "prop",
3485 "docs": "Text color of the button when focused with the tab key"
3486 },
3487 {
3488 "name": "--color-hover",
3489 "annotation": "prop",
3490 "docs": "Text color of the button on hover"
3491 },
3492 {
3493 "name": "--padding-bottom",
3494 "annotation": "prop",
3495 "docs": "Bottom padding of the button"
3496 },
3497 {
3498 "name": "--padding-end",
3499 "annotation": "prop",
3500 "docs": "Right padding if direction is left-to-right, and left padding if direction is right-to-left of the button"
3501 },
3502 {
3503 "name": "--padding-start",
3504 "annotation": "prop",
3505 "docs": "Left padding if direction is left-to-right, and right padding if direction is right-to-left of the button"
3506 },
3507 {
3508 "name": "--padding-top",
3509 "annotation": "prop",
3510 "docs": "Top padding of the button"
3511 },
3512 {
3513 "name": "--ripple-color",
3514 "annotation": "prop",
3515 "docs": "Color of the button ripple effect"
3516 },
3517 {
3518 "name": "--transition",
3519 "annotation": "prop",
3520 "docs": "Transition of the button"
3521 }
3522 ],
3523 "slots": []
3524 },
3525 {
3526 "tag": "ion-fab-list",
3527 "filePath": "src/components/fab-list/fab-list.tsx",
3528 "encapsulation": "shadow",
3529 "readme": "# ion-fab-list\n\nThe `ion-fab-list` element is a container for multiple fab buttons. This collection of fab buttons contains actions related to the main fab button and is flung out on click. To specify what side the buttons should appear on, set the `side` property to 'start', 'end', 'top', 'bottom'\n",
3530 "docs": "The `ion-fab-list` element is a container for multiple fab buttons. This collection of fab buttons contains actions related to the main fab button and is flung out on click. To specify what side the buttons should appear on, set the `side` property to 'start', 'end', 'top', 'bottom'",
3531 "docsTags": [],
3532 "usage": {
3533 "angular": "```html\n<ion-fab vertical=\"bottom\" horizontal=\"end\">\n <ion-fab-button>Share</ion-fab-button>\n\n <ion-fab-list side=\"top\">\n <ion-fab-button>Facebook</ion-fab-button>\n <ion-fab-button>Twitter</ion-fab-button>\n <ion-fab-button>Youtube</ion-fab-button>\n </ion-fab-list>\n\n <ion-fab-list side=\"start\">\n <ion-fab-button>Vimeo</ion-fab-button>\n </ion-fab-list>\n\n</ion-fab>\n```\n",
3534 "javascript": "```html\n<ion-fab vertical=\"bottom\" horizontal=\"end\">\n <ion-fab-button>Share</ion-fab-button>\n\n <ion-fab-list side=\"top\">\n <ion-fab-button>Facebook</ion-fab-button>\n <ion-fab-button>Twitter</ion-fab-button>\n <ion-fab-button>Youtube</ion-fab-button>\n </ion-fab-list>\n\n <ion-fab-list side=\"start\">\n <ion-fab-button>Vimeo</ion-fab-button>\n </ion-fab-list>\n\n</ion-fab>\n```\n",
3535 "react": "```tsx\nimport React from 'react';\nimport { IonFab, IonFabButton, IonFabList, IonContent, IonIcon } from '@ionic/react';\n\nexport const FabListExample: React.FC = () => (\n <IonContent>\n <IonFab vertical=\"bottom\" horizontal=\"end\">\n <IonFabButton>\n <IonIcon icon=\"share\" />\n </IonFabButton>\n\n <IonFabList side=\"top\">\n <IonFabButton color=\"primary\">\n <IonIcon icon=\"logo-facebook\" />\n </IonFabButton>\n <IonFabButton color=\"primary\">\n <IonIcon icon=\"logo-twitter\" />\n </IonFabButton>\n <IonFabButton color=\"primary\">\n <IonIcon icon=\"logo-youtube\" />\n </IonFabButton>\n </IonFabList>\n\n <IonFabList side=\"start\">\n <IonFabButton color=\"primary\">\n <IonIcon icon=\"logo-vimeo\" />\n </IonFabButton>\n </IonFabList>\n </IonFab>\n </IonContent>\n);\n\n```",
3536 "vue": "```html\n<template>\n <ion-fab vertical=\"bottom\" horizontal=\"end\">\n <ion-fab-button>Share</ion-fab-button>\n\n <ion-fab-list side=\"top\">\n <ion-fab-button>Facebook</ion-fab-button>\n <ion-fab-button>Twitter</ion-fab-button>\n <ion-fab-button>Youtube</ion-fab-button>\n </ion-fab-list>\n\n <ion-fab-list side=\"start\">\n <ion-fab-button>Vimeo</ion-fab-button>\n </ion-fab-list>\n\n </ion-fab>\n</template>\n```\n"
3537 },
3538 "props": [
3539 {
3540 "name": "activated",
3541 "type": "boolean",
3542 "mutable": false,
3543 "attr": "activated",
3544 "reflectToAttr": false,
3545 "docs": "If `true`, the fab list will show all fab buttons in the list.",
3546 "docsTags": [],
3547 "default": "false",
3548 "optional": false,
3549 "required": false
3550 },
3551 {
3552 "name": "side",
3553 "type": "\"bottom\" | \"end\" | \"start\" | \"top\"",
3554 "mutable": false,
3555 "attr": "side",
3556 "reflectToAttr": false,
3557 "docs": "The side the fab list will show on relative to the main fab button.",
3558 "docsTags": [],
3559 "default": "'bottom'",
3560 "optional": false,
3561 "required": false
3562 }
3563 ],
3564 "methods": [],
3565 "events": [],
3566 "styles": [],
3567 "slots": []
3568 },
3569 {
3570 "tag": "ion-footer",
3571 "filePath": "src/components/footer/footer.tsx",
3572 "encapsulation": "none",
3573 "readme": "# ion-footer\n\nFooter is a root component of a page that sits at the bottom of the page.\nFooter can be a wrapper for ion-toolbar to make sure the content area is sized correctly.\n",
3574 "docs": "Footer is a root component of a page that sits at the bottom of the page.\nFooter can be a wrapper for ion-toolbar to make sure the content area is sized correctly.",
3575 "docsTags": [
3576 {
3577 "text": "{\"ios\" | \"md\"} mode - The mode determines which platform styles to use.",
3578 "name": "virtualProp"
3579 }
3580 ],
3581 "usage": {
3582 "javascript": "```html\n<ion-content></ion-content>\n\n<ion-footer>\n <ion-toolbar>\n <ion-title>Footer</ion-title>\n </ion-toolbar>\n</ion-footer>\n```\n",
3583 "react": "```tsx\nimport React from 'react';\nimport { IonContent, IonFooter, IonToolbar, IonTitle } from '@ionic/react';\n\nexport const FooterExample: React.FC = () => (\n <>\n <IonContent />\n\n <IonFooter>\n <IonToolbar>\n <IonTitle>Footer</IonTitle>\n </IonToolbar>\n </IonFooter>\n </>\n);\n```\n"
3584 },
3585 "props": [
3586 {
3587 "name": "mode",
3588 "type": "\"ios\" | \"md\"",
3589 "mutable": false,
3590 "attr": "mode",
3591 "reflectToAttr": false,
3592 "docs": "The mode determines which platform styles to use.",
3593 "docsTags": [],
3594 "optional": true,
3595 "required": false
3596 },
3597 {
3598 "name": "translucent",
3599 "type": "boolean",
3600 "mutable": false,
3601 "attr": "translucent",
3602 "reflectToAttr": false,
3603 "docs": "If `true`, the footer will be translucent.\nOnly applies when the mode is `\"ios\"` and the device supports\n[`backdrop-filter`](https://developer.mozilla.org/en-US/docs/Web/CSS/backdrop-filter#Browser_compatibility).\n\nNote: In order to scroll content behind the footer, the `fullscreen`\nattribute needs to be set on the content.",
3604 "docsTags": [],
3605 "default": "false",
3606 "optional": false,
3607 "required": false
3608 }
3609 ],
3610 "methods": [],
3611 "events": [],
3612 "styles": [],
3613 "slots": []
3614 },
3615 {
3616 "tag": "ion-grid",
3617 "filePath": "src/components/grid/grid.tsx",
3618 "encapsulation": "shadow",
3619 "readme": "# ion-grid\n\n\nThe grid is a powerful mobile-first flexbox system for building custom layouts.\n\nIt is composed of three units — a grid, [row(s)](../row) and [column(s)](../col). Columns will expand to fill the row, and will resize to fit additional columns. It is based on a 12 column layout with different breakpoints based on the screen size. The number of columns can be customized using CSS.\n\nSee [Grid Layout](/docs/layout/grid) for more information.\n",
3620 "docs": "The grid is a powerful mobile-first flexbox system for building custom layouts.\n\nIt is composed of three units — a grid, [row(s)](../row) and [column(s)](../col). Columns will expand to fill the row, and will resize to fit additional columns. It is based on a 12 column layout with different breakpoints based on the screen size. The number of columns can be customized using CSS.\n\nSee [Grid Layout](/docs/layout/grid) for more information.",
3621 "docsTags": [],
3622 "usage": {
3623 "angular": "```html\n<ion-grid>\n <ion-row>\n <ion-col>\n ion-col\n </ion-col>\n <ion-col>\n ion-col\n </ion-col>\n <ion-col>\n ion-col\n </ion-col>\n <ion-col>\n ion-col\n </ion-col>\n </ion-row>\n\n <ion-row>\n <ion-col size=\"6\">\n ion-col [size=\"6\"]\n </ion-col>\n <ion-col>\n ion-col\n </ion-col>\n <ion-col>\n ion-col\n </ion-col>\n </ion-row>\n\n <ion-row>\n <ion-col size=\"3\">\n ion-col [size=\"3\"]\n </ion-col>\n <ion-col>\n ion-col\n </ion-col>\n <ion-col size=\"3\">\n ion-col [size=\"3\"]\n </ion-col>\n </ion-row>\n\n <ion-row>\n <ion-col size=\"3\">\n ion-col [size=\"3\"]\n </ion-col>\n <ion-col size=\"3\" offset=\"3\">\n ion-col [size=\"3\"] [offset=\"3\"]\n </ion-col>\n </ion-row>\n\n <ion-row>\n <ion-col>\n ion-col\n </ion-col>\n <ion-col>\n ion-col\n <br>#\n </ion-col>\n <ion-col>\n ion-col\n <br>#\n <br>#\n </ion-col>\n <ion-col>\n ion-col\n <br>#\n <br>#\n <br>#\n </ion-col>\n </ion-row>\n\n <ion-row>\n <ion-col align-self-start>\n ion-col [start]\n </ion-col>\n <ion-col align-self-center>\n ion-col [center]\n </ion-col>\n <ion-col align-self-end>\n ion-col [end]\n </ion-col>\n <ion-col>\n ion-col\n <br>#\n <br>#\n </ion-col>\n </ion-row>\n\n <ion-row align-items-start>\n <ion-col>\n [start] ion-col\n </ion-col>\n <ion-col>\n [start] ion-col\n </ion-col>\n <ion-col align-self-end>\n [start] ion-col [end]\n </ion-col>\n <ion-col>\n ion-col\n <br>#\n <br>#\n </ion-col>\n </ion-row>\n\n <ion-row align-items-center>\n <ion-col>\n [center] ion-col\n </ion-col>\n <ion-col>\n [center] ion-col\n </ion-col>\n <ion-col>\n [center] ion-col\n </ion-col>\n <ion-col>\n ion-col\n <br>#\n <br>#\n </ion-col>\n </ion-row>\n\n <ion-row align-items-end>\n <ion-col>\n [end] ion-col\n </ion-col>\n <ion-col align-self-start>\n [end] ion-col [start]\n </ion-col>\n <ion-col>\n [end] ion-col\n </ion-col>\n <ion-col>\n ion-col\n <br>#\n <br>#\n </ion-col>\n </ion-row>\n\n <ion-row>\n <ion-col size=\"12\" size-sm>\n ion-col [size=\"12\"] [size-sm]\n </ion-col>\n <ion-col size=\"12\" size-sm>\n ion-col [size=\"12\"] [size-sm]\n </ion-col>\n <ion-col size=\"12\" size-sm>\n ion-col [size=\"12\"] [size-sm]\n </ion-col>\n <ion-col size=\"12\" size-sm>\n ion-col [size=\"12\"] [size-sm]\n </ion-col>\n </ion-row>\n\n <ion-row>\n <ion-col size=\"12\" size-md>\n ion-col [size=\"12\"] [size-md]\n </ion-col>\n <ion-col size=\"12\" size-md>\n ion-col [size=\"12\"] [size-md]\n </ion-col>\n <ion-col size=\"12\" size-md>\n ion-col [size=\"12\"] [size-md]\n </ion-col>\n <ion-col size=\"12\" size-md>\n ion-col [size=\"12\"] [size-md]\n </ion-col>\n </ion-row>\n\n <ion-row>\n <ion-col size=\"6\" size-lg offset=\"3\">\n ion-col [size=\"6\"] [size-lg] [offset=\"3\"]\n </ion-col>\n <ion-col size=\"3\" size-lg>\n ion-col [size=\"3\"] [size-lg]\n </ion-col>\n </ion-row>\n</ion-grid>\n```",
3624 "javascript": "```html\n<ion-grid>\n <ion-row>\n <ion-col>\n ion-col\n </ion-col>\n <ion-col>\n ion-col\n </ion-col>\n <ion-col>\n ion-col\n </ion-col>\n <ion-col>\n ion-col\n </ion-col>\n </ion-row>\n\n <ion-row>\n <ion-col size=\"6\">\n ion-col [size=\"6\"]\n </ion-col>\n <ion-col>\n ion-col\n </ion-col>\n <ion-col>\n ion-col\n </ion-col>\n </ion-row>\n\n <ion-row>\n <ion-col size=\"3\">\n ion-col [size=\"3\"]\n </ion-col>\n <ion-col>\n ion-col\n </ion-col>\n <ion-col size=\"3\">\n ion-col [size=\"3\"]\n </ion-col>\n </ion-row>\n\n <ion-row>\n <ion-col size=\"3\">\n ion-col [size=\"3\"]\n </ion-col>\n <ion-col size=\"3\" offset=\"3\">\n ion-col [size=\"3\"] [offset=\"3\"]\n </ion-col>\n </ion-row>\n\n <ion-row>\n <ion-col>\n ion-col\n </ion-col>\n <ion-col>\n ion-col\n <br>#\n </ion-col>\n <ion-col>\n ion-col\n <br>#\n <br>#\n </ion-col>\n <ion-col>\n ion-col\n <br>#\n <br>#\n <br>#\n </ion-col>\n </ion-row>\n\n <ion-row>\n <ion-col align-self-start>\n ion-col [start]\n </ion-col>\n <ion-col align-self-center>\n ion-col [center]\n </ion-col>\n <ion-col align-self-end>\n ion-col [end]\n </ion-col>\n <ion-col>\n ion-col\n <br>#\n <br>#\n </ion-col>\n </ion-row>\n\n <ion-row align-items-start>\n <ion-col>\n [start] ion-col\n </ion-col>\n <ion-col>\n [start] ion-col\n </ion-col>\n <ion-col align-self-end>\n [start] ion-col [end]\n </ion-col>\n <ion-col>\n ion-col\n <br>#\n <br>#\n </ion-col>\n </ion-row>\n\n <ion-row align-items-center>\n <ion-col>\n [center] ion-col\n </ion-col>\n <ion-col>\n [center] ion-col\n </ion-col>\n <ion-col>\n [center] ion-col\n </ion-col>\n <ion-col>\n ion-col\n <br>#\n <br>#\n </ion-col>\n </ion-row>\n\n <ion-row align-items-end>\n <ion-col>\n [end] ion-col\n </ion-col>\n <ion-col align-self-start>\n [end] ion-col [start]\n </ion-col>\n <ion-col>\n [end] ion-col\n </ion-col>\n <ion-col>\n ion-col\n <br>#\n <br>#\n </ion-col>\n </ion-row>\n\n <ion-row>\n <ion-col size=\"12\" size-sm>\n ion-col [size=\"12\"] [size-sm]\n </ion-col>\n <ion-col size=\"12\" size-sm>\n ion-col [size=\"12\"] [size-sm]\n </ion-col>\n <ion-col size=\"12\" size-sm>\n ion-col [size=\"12\"] [size-sm]\n </ion-col>\n <ion-col size=\"12\" size-sm>\n ion-col [size=\"12\"] [size-sm]\n </ion-col>\n </ion-row>\n\n <ion-row>\n <ion-col size=\"12\" size-md>\n ion-col [size=\"12\"] [size-md]\n </ion-col>\n <ion-col size=\"12\" size-md>\n ion-col [size=\"12\"] [size-md]\n </ion-col>\n <ion-col size=\"12\" size-md>\n ion-col [size=\"12\"] [size-md]\n </ion-col>\n <ion-col size=\"12\" size-md>\n ion-col [size=\"12\"] [size-md]\n </ion-col>\n </ion-row>\n\n <ion-row>\n <ion-col size=\"6\" size-lg offset=\"3\">\n ion-col [size=\"6\"] [size-lg] [offset=\"3\"]\n </ion-col>\n <ion-col size=\"3\" size-lg>\n ion-col [size=\"3\"] [size-lg]\n </ion-col>\n </ion-row>\n</ion-grid>\n```",
3625 "react": "```tsx\nimport React from 'react';\nimport { IonGrid, IonRow, IonCol, IonContent } from '@ionic/react';\n\nexport const GridExample: React.FC = () => (\n <IonContent>\n <IonGrid>\n <IonRow>\n <IonCol>ion-col</IonCol>\n <IonCol>ion-col</IonCol>\n <IonCol>ion-col</IonCol>\n <IonCol>ion-col</IonCol>\n </IonRow>\n\n <IonRow>\n <IonCol size=\"6\">ion-col size=\"6\"</IonCol>\n <IonCol>ion-col</IonCol>\n <IonCol>ion-col</IonCol>\n </IonRow>\n\n <IonRow>\n <IonCol size=\"3\">ion-col size=\"3\"</IonCol>\n <IonCol>ion-col</IonCol>\n <IonCol size=\"3\">ion-col size=\"3\"</IonCol>\n </IonRow>\n\n <IonRow>\n <IonCol size=\"3\">ion-col size=\"3\"</IonCol>\n <IonCol size=\"3\" offset=\"3\">\n ion-col size=\"3\" offset=\"3\"\n </IonCol>\n </IonRow>\n\n <IonRow>\n <IonCol>ion-col</IonCol>\n <IonCol>\n ion-col\n <br />#\n </IonCol>\n <IonCol>\n ion-col\n <br />#\n <br />#\n </IonCol>\n <IonCol>\n ion-col\n <br />#\n <br />#\n <br />#\n </IonCol>\n </IonRow>\n\n <IonRow>\n <IonCol align-self-start>ion-col start</IonCol>\n <IonCol align-self-center>ion-col center</IonCol>\n <IonCol align-self-end>ion-col end</IonCol>\n <IonCol>\n ion-col\n <br />#\n <br />#\n </IonCol>\n </IonRow>\n\n <IonRow align-items-start>\n <IonCol>start ion-col</IonCol>\n <IonCol>start ion-col</IonCol>\n <IonCol align-self-end>start ion-col end</IonCol>\n <IonCol>\n ion-col\n <br />#\n <br />#\n </IonCol>\n </IonRow>\n\n <IonRow align-items-center>\n <IonCol>center ion-col</IonCol>\n <IonCol>center ion-col</IonCol>\n <IonCol>center ion-col</IonCol>\n <IonCol>\n ion-col\n <br />#\n <br />#\n </IonCol>\n </IonRow>\n\n <IonRow align-items-end>\n <IonCol>end ion-col</IonCol>\n <IonCol align-self-start>end ion-col start</IonCol>\n <IonCol>end ion-col</IonCol>\n <IonCol>\n ion-col\n <br />#\n <br />#\n </IonCol>\n </IonRow>\n\n <IonRow>\n <IonCol size=\"12\" size-sm>\n ion-col size=\"12\" size-sm\n </IonCol>\n <IonCol size=\"12\" size-sm>\n ion-col size=\"12\" size-sm\n </IonCol>\n <IonCol size=\"12\" size-sm>\n ion-col size=\"12\" size-sm\n </IonCol>\n <IonCol size=\"12\" size-sm>\n ion-col size=\"12\" size-sm\n </IonCol>\n </IonRow>\n\n <IonRow>\n <IonCol size=\"12\" size-md>\n ion-col size=\"12\" size-md\n </IonCol>\n <IonCol size=\"12\" size-md>\n ion-col size=\"12\" size-md\n </IonCol>\n <IonCol size=\"12\" size-md>\n ion-col size=\"12\" size-md\n </IonCol>\n <IonCol size=\"12\" size-md>\n ion-col size=\"12\" size-md\n </IonCol>\n </IonRow>\n\n <IonRow>\n <IonCol size=\"6\" size-lg offset=\"3\">\n ion-col size=\"6\" size-lg offset=\"3\"\n </IonCol>\n <IonCol size=\"3\" size-lg>\n ion-col size=\"3\" size-lg\n </IonCol>\n </IonRow>\n </IonGrid>\n </IonContent>\n);\n```",
3626 "vue": "```html\n<template>\n <ion-grid>\n <ion-row>\n <ion-col>\n ion-col\n </ion-col>\n <ion-col>\n ion-col\n </ion-col>\n <ion-col>\n ion-col\n </ion-col>\n <ion-col>\n ion-col\n </ion-col>\n </ion-row>\n\n <ion-row>\n <ion-col size=\"6\">\n ion-col [size=\"6\"]\n </ion-col>\n <ion-col>\n ion-col\n </ion-col>\n <ion-col>\n ion-col\n </ion-col>\n </ion-row>\n\n <ion-row>\n <ion-col size=\"3\">\n ion-col [size=\"3\"]\n </ion-col>\n <ion-col>\n ion-col\n </ion-col>\n <ion-col size=\"3\">\n ion-col [size=\"3\"]\n </ion-col>\n </ion-row>\n\n <ion-row>\n <ion-col size=\"3\">\n ion-col [size=\"3\"]\n </ion-col>\n <ion-col size=\"3\" offset=\"3\">\n ion-col [size=\"3\"] [offset=\"3\"]\n </ion-col>\n </ion-row>\n\n <ion-row>\n <ion-col>\n ion-col\n </ion-col>\n <ion-col>\n ion-col\n <br>#\n </ion-col>\n <ion-col>\n ion-col\n <br>#\n <br>#\n </ion-col>\n <ion-col>\n ion-col\n <br>#\n <br>#\n <br>#\n </ion-col>\n </ion-row>\n\n <ion-row>\n <ion-col align-self-start>\n ion-col [start]\n </ion-col>\n <ion-col align-self-center>\n ion-col [center]\n </ion-col>\n <ion-col align-self-end>\n ion-col [end]\n </ion-col>\n <ion-col>\n ion-col\n <br>#\n <br>#\n </ion-col>\n </ion-row>\n\n <ion-row align-items-start>\n <ion-col>\n [start] ion-col\n </ion-col>\n <ion-col>\n [start] ion-col\n </ion-col>\n <ion-col align-self-end>\n [start] ion-col [end]\n </ion-col>\n <ion-col>\n ion-col\n <br>#\n <br>#\n </ion-col>\n </ion-row>\n\n <ion-row align-items-center>\n <ion-col>\n [center] ion-col\n </ion-col>\n <ion-col>\n [center] ion-col\n </ion-col>\n <ion-col>\n [center] ion-col\n </ion-col>\n <ion-col>\n ion-col\n <br>#\n <br>#\n </ion-col>\n </ion-row>\n\n <ion-row align-items-end>\n <ion-col>\n [end] ion-col\n </ion-col>\n <ion-col align-self-start>\n [end] ion-col [start]\n </ion-col>\n <ion-col>\n [end] ion-col\n </ion-col>\n <ion-col>\n ion-col\n <br>#\n <br>#\n </ion-col>\n </ion-row>\n\n <ion-row>\n <ion-col size=\"12\" size-sm>\n ion-col [size=\"12\"] [size-sm]\n </ion-col>\n <ion-col size=\"12\" size-sm>\n ion-col [size=\"12\"] [size-sm]\n </ion-col>\n <ion-col size=\"12\" size-sm>\n ion-col [size=\"12\"] [size-sm]\n </ion-col>\n <ion-col size=\"12\" size-sm>\n ion-col [size=\"12\"] [size-sm]\n </ion-col>\n </ion-row>\n\n <ion-row>\n <ion-col size=\"12\" size-md>\n ion-col [size=\"12\"] [size-md]\n </ion-col>\n <ion-col size=\"12\" size-md>\n ion-col [size=\"12\"] [size-md]\n </ion-col>\n <ion-col size=\"12\" size-md>\n ion-col [size=\"12\"] [size-md]\n </ion-col>\n <ion-col size=\"12\" size-md>\n ion-col [size=\"12\"] [size-md]\n </ion-col>\n </ion-row>\n\n <ion-row>\n <ion-col size=\"6\" size-lg offset=\"3\">\n ion-col [size=\"6\"] [size-lg] [offset=\"3\"]\n </ion-col>\n <ion-col size=\"3\" size-lg>\n ion-col [size=\"3\"] [size-lg]\n </ion-col>\n </ion-row>\n </ion-grid>\n</template>\n```"
3627 },
3628 "props": [
3629 {
3630 "name": "fixed",
3631 "type": "boolean",
3632 "mutable": false,
3633 "attr": "fixed",
3634 "reflectToAttr": false,
3635 "docs": "If `true`, the grid will have a fixed width based on the screen size.",
3636 "docsTags": [],
3637 "default": "false",
3638 "optional": false,
3639 "required": false
3640 }
3641 ],
3642 "methods": [],
3643 "events": [],
3644 "styles": [
3645 {
3646 "name": "--ion-grid-padding",
3647 "annotation": "prop",
3648 "docs": "Padding for the Grid"
3649 },
3650 {
3651 "name": "--ion-grid-padding-lg",
3652 "annotation": "prop",
3653 "docs": "Padding for the Grid on lg screens"
3654 },
3655 {
3656 "name": "--ion-grid-padding-md",
3657 "annotation": "prop",
3658 "docs": "Padding for the Grid on md screens"
3659 },
3660 {
3661 "name": "--ion-grid-padding-sm",
3662 "annotation": "prop",
3663 "docs": "Padding for the Grid on sm screens"
3664 },
3665 {
3666 "name": "--ion-grid-padding-xl",
3667 "annotation": "prop",
3668 "docs": "Padding for the Grid on xl screens"
3669 },
3670 {
3671 "name": "--ion-grid-padding-xs",
3672 "annotation": "prop",
3673 "docs": "Padding for the Grid on xs screens"
3674 },
3675 {
3676 "name": "--ion-grid-width",
3677 "annotation": "prop",
3678 "docs": "Width of the fixed Grid"
3679 },
3680 {
3681 "name": "--ion-grid-width-lg",
3682 "annotation": "prop",
3683 "docs": "Width of the fixed Grid on lg screens"
3684 },
3685 {
3686 "name": "--ion-grid-width-md",
3687 "annotation": "prop",
3688 "docs": "Width of the fixed Grid on md screens"
3689 },
3690 {
3691 "name": "--ion-grid-width-sm",
3692 "annotation": "prop",
3693 "docs": "Width of the fixed Grid on sm screens"
3694 },
3695 {
3696 "name": "--ion-grid-width-xl",
3697 "annotation": "prop",
3698 "docs": "Width of the fixed Grid on xl screens"
3699 },
3700 {
3701 "name": "--ion-grid-width-xs",
3702 "annotation": "prop",
3703 "docs": "Width of the fixed Grid on xs screens"
3704 }
3705 ],
3706 "slots": []
3707 },
3708 {
3709 "tag": "ion-header",
3710 "filePath": "src/components/header/header.tsx",
3711 "encapsulation": "none",
3712 "readme": "# ion-header\n\nHeader is a parent component that holds the toolbar component.\nIt's important to note that ion-header needs to be the one of the three root elements of a page\n\n\n",
3713 "docs": "Header is a parent component that holds the toolbar component.\nIt's important to note that ion-header needs to be the one of the three root elements of a page",
3714 "docsTags": [
3715 {
3716 "text": "{\"ios\" | \"md\"} mode - The mode determines which platform styles to use.",
3717 "name": "virtualProp"
3718 }
3719 ],
3720 "usage": {
3721 "javascript": "```html\n<ion-header>\n <ion-toolbar>\n <ion-buttons slot=\"start\">\n <ion-back-button></ion-back-button>\n </ion-buttons>\n <ion-title>My Navigation Bar</ion-title>\n </ion-toolbar>\n\n <ion-toolbar>\n <ion-title>Subheader</ion-title>\n </ion-toolbar>\n</ion-header>\n\n<ion-content></ion-content>\n```\n",
3722 "react": "```tsx\nimport React from 'react';\nimport { IonHeader, IonContent, IonToolbar, IonButtons, IonBackButton, IonTitle } from '@ionic/react';\n\nexport const HeaderExample: React.FC = () => (\n <>\n <IonHeader>\n <IonToolbar>\n <IonButtons slot=\"start\">\n <IonBackButton defaultHref=\"/\" />\n </IonButtons>\n <IonTitle>My Navigation Bar</IonTitle>\n </IonToolbar>\n\n <IonToolbar>\n <IonTitle>Subheader</IonTitle>\n </IonToolbar>\n </IonHeader>\n\n <IonContent />\n </>\n);\n```"
3723 },
3724 "props": [
3725 {
3726 "name": "collapse",
3727 "type": "boolean",
3728 "mutable": false,
3729 "attr": "collapse",
3730 "reflectToAttr": false,
3731 "docs": "If `true`, the header will collapse on scroll of the content.\nOnly applies in `ios` mode.",
3732 "docsTags": [],
3733 "default": "false",
3734 "optional": false,
3735 "required": false
3736 },
3737 {
3738 "name": "mode",
3739 "type": "\"ios\" | \"md\"",
3740 "mutable": false,
3741 "attr": "mode",
3742 "reflectToAttr": false,
3743 "docs": "The mode determines which platform styles to use.",
3744 "docsTags": [],
3745 "optional": true,
3746 "required": false
3747 },
3748 {
3749 "name": "translucent",
3750 "type": "boolean",
3751 "mutable": false,
3752 "attr": "translucent",
3753 "reflectToAttr": false,
3754 "docs": "If `true`, the header will be translucent.\nOnly applies when the mode is `\"ios\"` and the device supports\n[`backdrop-filter`](https://developer.mozilla.org/en-US/docs/Web/CSS/backdrop-filter#Browser_compatibility).\n\nNote: In order to scroll content behind the header, the `fullscreen`\nattribute needs to be set on the content.",
3755 "docsTags": [],
3756 "default": "false",
3757 "optional": false,
3758 "required": false
3759 }
3760 ],
3761 "methods": [],
3762 "events": [],
3763 "styles": [],
3764 "slots": []
3765 },
3766 {
3767 "tag": "ion-img",
3768 "filePath": "src/components/img/img.tsx",
3769 "encapsulation": "shadow",
3770 "readme": "# ion-img\n\nImg is a tag that will lazily load an image when ever the tag is in the viewport. This is extremely useful when generating a large list as images are only loaded when they're visible. The component uses [Intersection Observer](https://caniuse.com/#feat=intersectionobserver) internally, which is supported in most modern browser, but falls back to a `setTimeout` when it is not supported.\n\n",
3771 "docs": "Img is a tag that will lazily load an image when ever the tag is in the viewport. This is extremely useful when generating a large list as images are only loaded when they're visible. The component uses [Intersection Observer](https://caniuse.com/#feat=intersectionobserver) internally, which is supported in most modern browser, but falls back to a `setTimeout` when it is not supported.",
3772 "docsTags": [],
3773 "usage": {
3774 "angular": "```html\n<ion-list>\n <ion-item *ngFor=\"let item of items\">\n <ion-thumbnail slot=\"start\">\n <ion-img [src]=\"item.src\"></ion-img>\n </ion-thumbnail>\n <ion-label>{{item.text}}</ion-label>\n </ion-item>\n</ion-list>\n```\n",
3775 "react": "```tsx\nimport React from 'react';\nimport { IonList, IonItem, IonThumbnail, IonImg, IonLabel, IonContent } from '@ionic/react';\n\ntype Item = {\n src: string;\n text: string;\n};\nconst items: Item[] = [{ src: 'http://placekitten.com/g/200/300', text: 'a picture of a cat' }];\n\nexport const ImgExample: React.FC = () => (\n <IonContent>\n <IonList>\n {items.map((image, i) => (\n <IonItem key={i}>\n <IonThumbnail slot=\"start\">\n <IonImg src={image.src} />\n </IonThumbnail>\n <IonLabel>{image.text}</IonLabel>\n </IonItem>\n ))}\n </IonList>\n </IonContent>\n);\n```",
3776 "vue": "```html\n<template>\n <ion-list>\n <ion-item v-for=\"item in items\" :key=\"item.src\">\n <ion-thumbnail slot=\"start\">\n <ion-img :src=\"item.src\"></ion-img>\n </ion-thumbnail>\n <ion-label>{{item.text}}</ion-label>\n </ion-item>\n </ion-list>\n</template>\n```\n"
3777 },
3778 "props": [
3779 {
3780 "name": "alt",
3781 "type": "string | undefined",
3782 "mutable": false,
3783 "attr": "alt",
3784 "reflectToAttr": false,
3785 "docs": "This attribute defines the alternative text describing the image.\nUsers will see this text displayed if the image URL is wrong,\nthe image is not in one of the supported formats, or if the image is not yet downloaded.",
3786 "docsTags": [],
3787 "optional": true,
3788 "required": false
3789 },
3790 {
3791 "name": "src",
3792 "type": "string | undefined",
3793 "mutable": false,
3794 "attr": "src",
3795 "reflectToAttr": false,
3796 "docs": "The image URL. This attribute is mandatory for the `<img>` element.",
3797 "docsTags": [],
3798 "optional": true,
3799 "required": false
3800 }
3801 ],
3802 "methods": [],
3803 "events": [
3804 {
3805 "event": "ionError",
3806 "detail": "void",
3807 "bubbles": true,
3808 "cancelable": true,
3809 "composed": true,
3810 "docs": "Emitted when the img fails to load",
3811 "docsTags": []
3812 },
3813 {
3814 "event": "ionImgDidLoad",
3815 "detail": "void",
3816 "bubbles": true,
3817 "cancelable": true,
3818 "composed": true,
3819 "docs": "Emitted when the image has finished loading",
3820 "docsTags": []
3821 },
3822 {
3823 "event": "ionImgWillLoad",
3824 "detail": "void",
3825 "bubbles": true,
3826 "cancelable": true,
3827 "composed": true,
3828 "docs": "Emitted when the img src has been set",
3829 "docsTags": []
3830 }
3831 ],
3832 "styles": [],
3833 "slots": []
3834 },
3835 {
3836 "tag": "ion-infinite-scroll",
3837 "filePath": "src/components/infinite-scroll/infinite-scroll.tsx",
3838 "encapsulation": "none",
3839 "readme": "# ion-infinite-scroll\n\nThe Infinite Scroll component calls an action to be performed when the user scrolls a specified distance from the bottom or top of the page.\n\nThe expression assigned to the `ionInfinite` event is called when the user reaches that defined distance. When this expression has finished any and all tasks, it should call the `complete()` method on the infinite scroll instance.\n\n## Infinite Scroll Content\n\nThe `ion-infinite-scroll` component has the infinite scroll logic. It requires a child component in order to display content. Ionic uses its `ion-infinite-scroll-content` component by default. This component displays the infinite scroll and changes the look depending on the infinite scroll's state. It displays a spinner that looks best based on the platform the user is on. However, the default spinner can be changed and text can be added by setting properties on the `ion-infinite-scroll-content` component.\n\n## Custom Content\n\nSeparating the `ion-infinite-scroll` and `ion-infinite-scroll-content` components allows developers to create their own content components, if desired. This content can contain anything, from an SVG element to elements with unique CSS animations.\n\n## React\n\nThe Infinite Scroll component is not supported in React.\n",
3840 "docs": "The Infinite Scroll component calls an action to be performed when the user scrolls a specified distance from the bottom or top of the page.\n\nThe expression assigned to the `ionInfinite` event is called when the user reaches that defined distance. When this expression has finished any and all tasks, it should call the `complete()` method on the infinite scroll instance.",
3841 "docsTags": [],
3842 "usage": {
3843 "angular": "```html\n<ion-content>\n <ion-button (click)=\"toggleInfiniteScroll()\" expand=\"block\">\n Toggle Infinite Scroll\n </ion-button>\n\n <ion-list></ion-list>\n\n <ion-infinite-scroll threshold=\"100px\" (ionInfinite)=\"loadData($event)\">\n <ion-infinite-scroll-content\n loadingSpinner=\"bubbles\"\n loadingText=\"Loading more data...\">\n </ion-infinite-scroll-content>\n </ion-infinite-scroll>\n</ion-content>\n```\n\n```typescript\nimport { Component, ViewChild } from '@angular/core';\nimport { IonInfiniteScroll } from '@ionic/angular';\n\n@Component({\n selector: 'infinite-scroll-example',\n templateUrl: 'infinite-scroll-example.html',\n styleUrls: ['./infinite-scroll-example.css']\n})\nexport class InfiniteScrollExample {\n @ViewChild(IonInfiniteScroll) infiniteScroll: IonInfiniteScroll;\n\n constructor() {}\n\n loadData(event) {\n setTimeout(() => {\n console.log('Done');\n event.target.complete();\n\n // App logic to determine if all data is loaded\n // and disable the infinite scroll\n if (data.length == 1000) {\n event.target.disabled = true;\n }\n }, 500);\n }\n\n toggleInfiniteScroll() {\n this.infiniteScroll.disabled = !this.infiniteScroll.disabled;\n }\n}\n```\n",
3844 "javascript": "```html\n<ion-content>\n <ion-button onClick=\"toggleInfiniteScroll()\" expand=\"block\">\n Toggle Infinite Scroll\n </ion-button>\n\n <ion-list></ion-list>\n\n <ion-infinite-scroll threshold=\"100px\" id=\"infinite-scroll\">\n <ion-infinite-scroll-content\n loading-spinner=\"bubbles\"\n loading-text=\"Loading more data...\">\n </ion-infinite-scroll-content>\n </ion-infinite-scroll>\n</ion-content>\n```\n\n```javascript\nconst infiniteScroll = document.getElementById('infinite-scroll');\n\ninfiniteScroll.addEventListener('ionInfinite', function(event) {\n setTimeout(function() {\n console.log('Done');\n event.target.complete();\n\n // App logic to determine if all data is loaded\n // and disable the infinite scroll\n if (data.length == 1000) {\n event.target.disabled = true;\n }\n }, 500);\n});\n\nfunction toggleInfiniteScroll() {\n infiniteScroll.disabled = !infiniteScroll.disabled;\n}\n```\n"
3845 },
3846 "props": [
3847 {
3848 "name": "disabled",
3849 "type": "boolean",
3850 "mutable": false,
3851 "attr": "disabled",
3852 "reflectToAttr": false,
3853 "docs": "If `true`, the infinite scroll will be hidden and scroll event listeners\nwill be removed.\n\nSet this to true to disable the infinite scroll from actively\ntrying to receive new data while scrolling. This is useful\nwhen it is known that there is no more data that can be added, and\nthe infinite scroll is no longer needed.",
3854 "docsTags": [],
3855 "default": "false",
3856 "optional": false,
3857 "required": false
3858 },
3859 {
3860 "name": "position",
3861 "type": "\"bottom\" | \"top\"",
3862 "mutable": false,
3863 "attr": "position",
3864 "reflectToAttr": false,
3865 "docs": "The position of the infinite scroll element.\nThe value can be either `top` or `bottom`.",
3866 "docsTags": [],
3867 "default": "'bottom'",
3868 "optional": false,
3869 "required": false
3870 },
3871 {
3872 "name": "threshold",
3873 "type": "string",
3874 "mutable": false,
3875 "attr": "threshold",
3876 "reflectToAttr": false,
3877 "docs": "The threshold distance from the bottom\nof the content to call the `infinite` output event when scrolled.\nThe threshold value can be either a percent, or\nin pixels. For example, use the value of `10%` for the `infinite`\noutput event to get called when the user has scrolled 10%\nfrom the bottom of the page. Use the value `100px` when the\nscroll is within 100 pixels from the bottom of the page.",
3878 "docsTags": [],
3879 "default": "'15%'",
3880 "optional": false,
3881 "required": false
3882 }
3883 ],
3884 "methods": [
3885 {
3886 "name": "complete",
3887 "returns": {
3888 "type": "Promise<void>",
3889 "docs": ""
3890 },
3891 "signature": "complete() => Promise<void>",
3892 "parameters": [],
3893 "docs": "Call `complete()` within the `ionInfinite` output event handler when\nyour async operation has completed. For example, the `loading`\nstate is while the app is performing an asynchronous operation,\nsuch as receiving more data from an AJAX request to add more items\nto a data list. Once the data has been received and UI updated, you\nthen call this method to signify that the loading has completed.\nThis method will change the infinite scroll's state from `loading`\nto `enabled`.",
3894 "docsTags": []
3895 }
3896 ],
3897 "events": [
3898 {
3899 "event": "ionInfinite",
3900 "detail": "void",
3901 "bubbles": true,
3902 "cancelable": true,
3903 "composed": true,
3904 "docs": "Emitted when the scroll reaches\nthe threshold distance. From within your infinite handler,\nyou must call the infinite scroll's `complete()` method when\nyour async operation has completed.",
3905 "docsTags": []
3906 }
3907 ],
3908 "styles": [],
3909 "slots": []
3910 },
3911 {
3912 "tag": "ion-infinite-scroll-content",
3913 "filePath": "src/components/infinite-scroll-content/infinite-scroll-content.tsx",
3914 "encapsulation": "none",
3915 "readme": "# ion-infinite-scroll-content\n\nThe `ion-infinite-scroll-content` component is the default child used by the `ion-infinite-scroll`. It displays an infinite scroll spinner that looks best based on the platform and changes the look depending on the infinite scroll's state. The default spinner can be changed and text can be added by setting the `loadingSpinner` and `loadingText` properties.\n\n## React\n\nThe `ion-infinite-scroll-content` component is not supported in React.\n",
3916 "docs": "The `ion-infinite-scroll-content` component is the default child used by the `ion-infinite-scroll`. It displays an infinite scroll spinner that looks best based on the platform and changes the look depending on the infinite scroll's state. The default spinner can be changed and text can be added by setting the `loadingSpinner` and `loadingText` properties.",
3917 "docsTags": [],
3918 "usage": {
3919 "angular": "```html\n<ion-content>\n <ion-infinite-scroll>\n <ion-infinite-scroll-content\n loadingSpinner=\"bubbles\"\n loadingText=\"Loading more data…\">\n </ion-infinite-scroll-content>\n </ion-infinite-scroll>\n</ion-content>\n```\n",
3920 "javascript": "```html\n<ion-content>\n <ion-infinite-scroll>\n <ion-infinite-scroll-content\n loading-spinner=\"bubbles\"\n loading-text=\"Loading more data…\">\n </ion-infinite-scroll-content>\n </ion-infinite-scroll>\n</ion-content>\n```\n",
3921 "vue": "```html\n<template>\n <ion-content>\n <ion-infinite-scroll>\n <ion-infinite-scroll-content\n loadingSpinner=\"bubbles\"\n loadingText=\"Loading more data…\">\n </ion-infinite-scroll-content>\n </ion-infinite-scroll>\n </ion-content>\n</template>\n```\n"
3922 },
3923 "props": [
3924 {
3925 "name": "loadingSpinner",
3926 "type": "\"bubbles\" | \"circles\" | \"circular\" | \"crescent\" | \"dots\" | \"lines\" | \"lines-small\" | null | undefined",
3927 "mutable": true,
3928 "attr": "loading-spinner",
3929 "reflectToAttr": false,
3930 "docs": "An animated SVG spinner that shows while loading.",
3931 "docsTags": [],
3932 "optional": true,
3933 "required": false
3934 },
3935 {
3936 "name": "loadingText",
3937 "type": "string | undefined",
3938 "mutable": false,
3939 "attr": "loading-text",
3940 "reflectToAttr": false,
3941 "docs": "Optional text to display while loading.\n`loadingText` can accept either plaintext or HTML as a string.\nTo display characters normally reserved for HTML, they\nmust be escaped. For example `<Ionic>` would become\n`&lt;Ionic&gt;`\n\nFor more information: [Security Documentation](https://ionicframework.com/docs/faq/security)",
3942 "docsTags": [],
3943 "optional": true,
3944 "required": false
3945 }
3946 ],
3947 "methods": [],
3948 "events": [],
3949 "styles": [],
3950 "slots": []
3951 },
3952 {
3953 "tag": "ion-input",
3954 "filePath": "src/components/input/input.tsx",
3955 "encapsulation": "scoped",
3956 "readme": "# ion-input\n\nThe input component is a wrapper to the HTML input element with custom styling and additional functionality. It accepts most of the same properties as the HTML input, but works great on desktop devices and integrates with the keyboard on mobile devices.\n\nIt is meant for text `type` inputs only, such as `\"text\"`, `\"password\"`, `\"email\"`, `\"number\"`, `\"search\"`, `\"tel\"`, and `\"url\"`. It supports all standard text input events including keyup, keydown, keypress, and more.\n\n",
3957 "docs": "The input component is a wrapper to the HTML input element with custom styling and additional functionality. It accepts most of the same properties as the HTML input, but works great on desktop devices and integrates with the keyboard on mobile devices.\n\nIt is meant for text `type` inputs only, such as `\"text\"`, `\"password\"`, `\"email\"`, `\"number\"`, `\"search\"`, `\"tel\"`, and `\"url\"`. It supports all standard text input events including keyup, keydown, keypress, and more.",
3958 "docsTags": [
3959 {
3960 "text": "{\"ios\" | \"md\"} mode - The mode determines which platform styles to use.",
3961 "name": "virtualProp"
3962 }
3963 ],
3964 "usage": {
3965 "angular": "```html\n<!-- Default Input -->\n<ion-input></ion-input>\n\n<!-- Input with value -->\n<ion-input value=\"custom\"></ion-input>\n\n<!-- Input with placeholder -->\n<ion-input placeholder=\"Enter Input\"></ion-input>\n\n<!-- Input with clear button when there is a value -->\n<ion-input clearInput value=\"clear me\"></ion-input>\n\n<!-- Number type input -->\n<ion-input type=\"number\" value=\"333\"></ion-input>\n\n<!-- Disabled input -->\n<ion-input value=\"Disabled\" disabled></ion-input>\n\n<!-- Readonly input -->\n<ion-input value=\"Readonly\" readonly></ion-input>\n\n<!-- Inputs with labels -->\n<ion-item>\n <ion-label>Default Label</ion-label>\n <ion-input></ion-input>\n</ion-item>\n\n<ion-item>\n <ion-label position=\"floating\">Floating Label</ion-label>\n <ion-input></ion-input>\n</ion-item>\n\n<ion-item>\n <ion-label position=\"fixed\">Fixed Label</ion-label>\n <ion-input></ion-input>\n</ion-item>\n\n<ion-item>\n <ion-label position=\"stacked\">Stacked Label</ion-label>\n <ion-input></ion-input>\n</ion-item>\n```",
3966 "javascript": "```html\n<!-- Default Input -->\n<ion-input></ion-input>\n\n<!-- Input with value -->\n<ion-input value=\"custom\"></ion-input>\n\n<!-- Input with placeholder -->\n<ion-input placeholder=\"Enter Input\"></ion-input>\n\n<!-- Input with clear button when there is a value -->\n<ion-input clear-input value=\"clear me\"></ion-input>\n\n<!-- Number type input -->\n<ion-input type=\"number\" value=\"333\"></ion-input>\n\n<!-- Disabled input -->\n<ion-input value=\"Disabled\" disabled></ion-input>\n\n<!-- Readonly input -->\n<ion-input value=\"Readonly\" readonly></ion-input>\n\n<!-- Inputs with labels -->\n<ion-item>\n <ion-label>Default Label</ion-label>\n <ion-input></ion-input>\n</ion-item>\n\n<ion-item>\n <ion-label position=\"floating\">Floating Label</ion-label>\n <ion-input></ion-input>\n</ion-item>\n\n<ion-item>\n <ion-label position=\"fixed\">Fixed Label</ion-label>\n <ion-input></ion-input>\n</ion-item>\n\n<ion-item>\n <ion-label position=\"stacked\">Stacked Label</ion-label>\n <ion-input></ion-input>\n</ion-item>\n```",
3967 "react": "```tsx\nimport React from 'react';\nimport { IonInput, IonItem, IonLabel, IonContent } from '@ionic/react';\n\nexport const InputExample: React.FC = () => (\n <IonContent>\n {/*-- Default Input --*/}\n <IonInput></IonInput>\n\n {/*-- Input with value --*/}\n <IonInput value=\"custom\"></IonInput>\n\n {/*-- Input with placeholder --*/}\n <IonInput placeholder=\"Enter Input\"></IonInput>\n\n {/*-- Input with clear button when there is a value --*/}\n <IonInput clearInput value=\"clear me\"></IonInput>\n\n {/*-- Number type input --*/}\n <IonInput type=\"number\" value=\"333\"></IonInput>\n\n {/*-- Disabled input --*/}\n <IonInput value=\"Disabled\" disabled></IonInput>\n\n {/*-- Readonly input --*/}\n <IonInput value=\"Readonly\" readonly></IonInput>\n\n {/*-- Inputs with labels --*/}\n <IonItem>\n <IonLabel>Default Label</IonLabel>\n <IonInput></IonInput>\n </IonItem>\n\n <IonItem>\n <IonLabel position=\"floating\">Floating Label</IonLabel>\n <IonInput></IonInput>\n </IonItem>\n\n <IonItem>\n <IonLabel position=\"fixed\">Fixed Label</IonLabel>\n <IonInput></IonInput>\n </IonItem>\n\n <IonItem>\n <IonLabel position=\"stacked\">Stacked Label</IonLabel>\n <IonInput></IonInput>\n </IonItem>\n </IonContent>\n);\n```",
3968 "vue": "```html\n<template>\n <!-- Default Input -->\n <ion-input></ion-input>\n\n <!-- Input with value -->\n <ion-input value=\"custom\"></ion-input>\n\n <!-- Input with placeholder -->\n <ion-input placeholder=\"Enter Input\"></ion-input>\n\n <!-- Input with clear button when there is a value -->\n <ion-input clearInput value=\"clear me\"></ion-input>\n\n <!-- Number type input -->\n <ion-input type=\"number\" value=\"333\"></ion-input>\n\n <!-- Disabled input -->\n <ion-input value=\"Disabled\" disabled></ion-input>\n\n <!-- Readonly input -->\n <ion-input value=\"Readonly\" readonly></ion-input>\n\n <!-- Inputs with labels -->\n <ion-item>\n <ion-label>Default Label</ion-label>\n <ion-input></ion-input>\n </ion-item>\n\n <ion-item>\n <ion-label position=\"floating\">Floating Label</ion-label>\n <ion-input></ion-input>\n </ion-item>\n\n <ion-item>\n <ion-label position=\"fixed\">Fixed Label</ion-label>\n <ion-input></ion-input>\n </ion-item>\n\n <ion-item>\n <ion-label position=\"stacked\">Stacked Label</ion-label>\n <ion-input></ion-input>\n </ion-item>\n</template>\n```"
3969 },
3970 "props": [
3971 {
3972 "name": "accept",
3973 "type": "string | undefined",
3974 "mutable": false,
3975 "attr": "accept",
3976 "reflectToAttr": false,
3977 "docs": "If the value of the type attribute is `\"file\"`, then this attribute will indicate the types of files that the server accepts, otherwise it will be ignored. The value must be a comma-separated list of unique content type specifiers.",
3978 "docsTags": [],
3979 "optional": true,
3980 "required": false
3981 },
3982 {
3983 "name": "autocapitalize",
3984 "type": "string",
3985 "mutable": false,
3986 "attr": "autocapitalize",
3987 "reflectToAttr": false,
3988 "docs": "Indicates whether and how the text value should be automatically capitalized as it is entered/edited by the user.",
3989 "docsTags": [],
3990 "default": "'off'",
3991 "optional": false,
3992 "required": false
3993 },
3994 {
3995 "name": "autocomplete",
3996 "type": "\"off\" | \"on\"",
3997 "mutable": false,
3998 "attr": "autocomplete",
3999 "reflectToAttr": false,
4000 "docs": "Indicates whether the value of the control can be automatically completed by the browser.",
4001 "docsTags": [],
4002 "default": "'off'",
4003 "optional": false,
4004 "required": false
4005 },
4006 {
4007 "name": "autocorrect",
4008 "type": "\"off\" | \"on\"",
4009 "mutable": false,
4010 "attr": "autocorrect",
4011 "reflectToAttr": false,
4012 "docs": "Whether auto correction should be enabled when the user is entering/editing the text value.",
4013 "docsTags": [],
4014 "default": "'off'",
4015 "optional": false,
4016 "required": false
4017 },
4018 {
4019 "name": "autofocus",
4020 "type": "boolean",
4021 "mutable": false,
4022 "attr": "autofocus",
4023 "reflectToAttr": false,
4024 "docs": "This Boolean attribute lets you specify that a form control should have input focus when the page loads.",
4025 "docsTags": [],
4026 "default": "false",
4027 "optional": false,
4028 "required": false
4029 },
4030 {
4031 "name": "clearInput",
4032 "type": "boolean",
4033 "mutable": false,
4034 "attr": "clear-input",
4035 "reflectToAttr": false,
4036 "docs": "If `true`, a clear icon will appear in the input when there is a value. Clicking it clears the input.",
4037 "docsTags": [],
4038 "default": "false",
4039 "optional": false,
4040 "required": false
4041 },
4042 {
4043 "name": "clearOnEdit",
4044 "type": "boolean | undefined",
4045 "mutable": false,
4046 "attr": "clear-on-edit",
4047 "reflectToAttr": false,
4048 "docs": "If `true`, the value will be cleared after focus upon edit. Defaults to `true` when `type` is `\"password\"`, `false` for all other types.",
4049 "docsTags": [],
4050 "optional": true,
4051 "required": false
4052 },
4053 {
4054 "name": "color",
4055 "type": "string | undefined",
4056 "mutable": false,
4057 "attr": "color",
4058 "reflectToAttr": false,
4059 "docs": "The color to use from your application's color palette.\nDefault options are: `\"primary\"`, `\"secondary\"`, `\"tertiary\"`, `\"success\"`, `\"warning\"`, `\"danger\"`, `\"light\"`, `\"medium\"`, and `\"dark\"`.\nFor more information on colors, see [theming](/docs/theming/basics).",
4060 "docsTags": [],
4061 "optional": true,
4062 "required": false
4063 },
4064 {
4065 "name": "debounce",
4066 "type": "number",
4067 "mutable": false,
4068 "attr": "debounce",
4069 "reflectToAttr": false,
4070 "docs": "Set the amount of time, in milliseconds, to wait to trigger the `ionChange` event after each keystroke.",
4071 "docsTags": [],
4072 "default": "0",
4073 "optional": false,
4074 "required": false
4075 },
4076 {
4077 "name": "disabled",
4078 "type": "boolean",
4079 "mutable": false,
4080 "attr": "disabled",
4081 "reflectToAttr": false,
4082 "docs": "If `true`, the user cannot interact with the input.",
4083 "docsTags": [],
4084 "default": "false",
4085 "optional": false,
4086 "required": false
4087 },
4088 {
4089 "name": "inputmode",
4090 "type": "\"decimal\" | \"email\" | \"none\" | \"numeric\" | \"search\" | \"tel\" | \"text\" | \"url\" | undefined",
4091 "mutable": false,
4092 "attr": "inputmode",
4093 "reflectToAttr": false,
4094 "docs": "A hint to the browser for which keyboard to display.\nPossible values: `\"none\"`, `\"text\"`, `\"tel\"`, `\"url\"`,\n`\"email\"`, `\"numeric\"`, `\"decimal\"`, and `\"search\"`.",
4095 "docsTags": [],
4096 "optional": true,
4097 "required": false
4098 },
4099 {
4100 "name": "max",
4101 "type": "string | undefined",
4102 "mutable": false,
4103 "attr": "max",
4104 "reflectToAttr": false,
4105 "docs": "The maximum value, which must not be less than its minimum (min attribute) value.",
4106 "docsTags": [],
4107 "optional": true,
4108 "required": false
4109 },
4110 {
4111 "name": "maxlength",
4112 "type": "number | undefined",
4113 "mutable": false,
4114 "attr": "maxlength",
4115 "reflectToAttr": false,
4116 "docs": "If the value of the type attribute is `text`, `email`, `search`, `password`, `tel`, or `url`, this attribute specifies the maximum number of characters that the user can enter.",
4117 "docsTags": [],
4118 "optional": true,
4119 "required": false
4120 },
4121 {
4122 "name": "min",
4123 "type": "string | undefined",
4124 "mutable": false,
4125 "attr": "min",
4126 "reflectToAttr": false,
4127 "docs": "The minimum value, which must not be greater than its maximum (max attribute) value.",
4128 "docsTags": [],
4129 "optional": true,
4130 "required": false
4131 },
4132 {
4133 "name": "minlength",
4134 "type": "number | undefined",
4135 "mutable": false,
4136 "attr": "minlength",
4137 "reflectToAttr": false,
4138 "docs": "If the value of the type attribute is `text`, `email`, `search`, `password`, `tel`, or `url`, this attribute specifies the minimum number of characters that the user can enter.",
4139 "docsTags": [],
4140 "optional": true,
4141 "required": false
4142 },
4143 {
4144 "name": "mode",
4145 "type": "\"ios\" | \"md\"",
4146 "mutable": false,
4147 "attr": "mode",
4148 "reflectToAttr": false,
4149 "docs": "The mode determines which platform styles to use.",
4150 "docsTags": [],
4151 "optional": true,
4152 "required": false
4153 },
4154 {
4155 "name": "multiple",
4156 "type": "boolean | undefined",
4157 "mutable": false,
4158 "attr": "multiple",
4159 "reflectToAttr": false,
4160 "docs": "If `true`, the user can enter more than one value. This attribute applies when the type attribute is set to `\"email\"` or `\"file\"`, otherwise it is ignored.",
4161 "docsTags": [],
4162 "optional": true,
4163 "required": false
4164 },
4165 {
4166 "name": "name",
4167 "type": "string",
4168 "mutable": false,
4169 "attr": "name",
4170 "reflectToAttr": false,
4171 "docs": "The name of the control, which is submitted with the form data.",
4172 "docsTags": [],
4173 "default": "this.inputId",
4174 "optional": false,
4175 "required": false
4176 },
4177 {
4178 "name": "pattern",
4179 "type": "string | undefined",
4180 "mutable": false,
4181 "attr": "pattern",
4182 "reflectToAttr": false,
4183 "docs": "A regular expression that the value is checked against. The pattern must match the entire value, not just some subset. Use the title attribute to describe the pattern to help the user. This attribute applies when the value of the type attribute is `\"text\"`, `\"search\"`, `\"tel\"`, `\"url\"`, `\"email\"`, or `\"password\"`, otherwise it is ignored.",
4184 "docsTags": [],
4185 "optional": true,
4186 "required": false
4187 },
4188 {
4189 "name": "placeholder",
4190 "type": "null | string | undefined",
4191 "mutable": false,
4192 "attr": "placeholder",
4193 "reflectToAttr": false,
4194 "docs": "Instructional text that shows before the input has a value.",
4195 "docsTags": [],
4196 "optional": true,
4197 "required": false
4198 },
4199 {
4200 "name": "readonly",
4201 "type": "boolean",
4202 "mutable": false,
4203 "attr": "readonly",
4204 "reflectToAttr": false,
4205 "docs": "If `true`, the user cannot modify the value.",
4206 "docsTags": [],
4207 "default": "false",
4208 "optional": false,
4209 "required": false
4210 },
4211 {
4212 "name": "required",
4213 "type": "boolean",
4214 "mutable": false,
4215 "attr": "required",
4216 "reflectToAttr": false,
4217 "docs": "If `true`, the user must fill in a value before submitting a form.",
4218 "docsTags": [],
4219 "default": "false",
4220 "optional": false,
4221 "required": false
4222 },
4223 {
4224 "name": "size",
4225 "type": "number | undefined",
4226 "mutable": false,
4227 "attr": "size",
4228 "reflectToAttr": false,
4229 "docs": "The initial size of the control. This value is in pixels unless the value of the type attribute is `\"text\"` or `\"password\"`, in which case it is an integer number of characters. This attribute applies only when the `type` attribute is set to `\"text\"`, `\"search\"`, `\"tel\"`, `\"url\"`, `\"email\"`, or `\"password\"`, otherwise it is ignored.",
4230 "docsTags": [],
4231 "optional": true,
4232 "required": false
4233 },
4234 {
4235 "name": "spellcheck",
4236 "type": "boolean",
4237 "mutable": false,
4238 "attr": "spellcheck",
4239 "reflectToAttr": false,
4240 "docs": "If `true`, the element will have its spelling and grammar checked.",
4241 "docsTags": [],
4242 "default": "false",
4243 "optional": false,
4244 "required": false
4245 },
4246 {
4247 "name": "step",
4248 "type": "string | undefined",
4249 "mutable": false,
4250 "attr": "step",
4251 "reflectToAttr": false,
4252 "docs": "Works with the min and max attributes to limit the increments at which a value can be set.\nPossible values are: `\"any\"` or a positive floating point number.",
4253 "docsTags": [],
4254 "optional": true,
4255 "required": false
4256 },
4257 {
4258 "name": "type",
4259 "type": "\"date\" | \"email\" | \"number\" | \"password\" | \"search\" | \"tel\" | \"text\" | \"time\" | \"url\"",
4260 "mutable": false,
4261 "attr": "type",
4262 "reflectToAttr": false,
4263 "docs": "The type of control to display. The default type is text.",
4264 "docsTags": [],
4265 "default": "'text'",
4266 "optional": false,
4267 "required": false
4268 },
4269 {
4270 "name": "value",
4271 "type": "null | string | undefined",
4272 "mutable": true,
4273 "attr": "value",
4274 "reflectToAttr": false,
4275 "docs": "The value of the input.",
4276 "docsTags": [],
4277 "default": "''",
4278 "optional": true,
4279 "required": false
4280 }
4281 ],
4282 "methods": [
4283 {
4284 "name": "getInputElement",
4285 "returns": {
4286 "type": "Promise<HTMLInputElement>",
4287 "docs": ""
4288 },
4289 "signature": "getInputElement() => Promise<HTMLInputElement>",
4290 "parameters": [],
4291 "docs": "Returns the native `<input>` element used under the hood.",
4292 "docsTags": []
4293 },
4294 {
4295 "name": "setFocus",
4296 "returns": {
4297 "type": "Promise<void>",
4298 "docs": ""
4299 },
4300 "signature": "setFocus() => Promise<void>",
4301 "parameters": [],
4302 "docs": "Sets focus on the specified `ion-input`. Use this method instead of the global\n`input.focus()`.",
4303 "docsTags": []
4304 }
4305 ],
4306 "events": [
4307 {
4308 "event": "ionBlur",
4309 "detail": "void",
4310 "bubbles": true,
4311 "cancelable": true,
4312 "composed": true,
4313 "docs": "Emitted when the input loses focus.",
4314 "docsTags": []
4315 },
4316 {
4317 "event": "ionChange",
4318 "detail": "InputChangeEventDetail",
4319 "bubbles": true,
4320 "cancelable": true,
4321 "composed": true,
4322 "docs": "Emitted when the value has changed.",
4323 "docsTags": []
4324 },
4325 {
4326 "event": "ionFocus",
4327 "detail": "void",
4328 "bubbles": true,
4329 "cancelable": true,
4330 "composed": true,
4331 "docs": "Emitted when the input has focus.",
4332 "docsTags": []
4333 },
4334 {
4335 "event": "ionInput",
4336 "detail": "KeyboardEvent",
4337 "bubbles": true,
4338 "cancelable": true,
4339 "composed": true,
4340 "docs": "Emitted when a keyboard input ocurred.",
4341 "docsTags": []
4342 }
4343 ],
4344 "styles": [
4345 {
4346 "name": "--background",
4347 "annotation": "prop",
4348 "docs": "Background of the input"
4349 },
4350 {
4351 "name": "--color",
4352 "annotation": "prop",
4353 "docs": "Color of the input text"
4354 },
4355 {
4356 "name": "--padding-bottom",
4357 "annotation": "prop",
4358 "docs": "Bottom padding of the input"
4359 },
4360 {
4361 "name": "--padding-end",
4362 "annotation": "prop",
4363 "docs": "Right padding if direction is left-to-right, and left padding if direction is right-to-left of the input"
4364 },
4365 {
4366 "name": "--padding-start",
4367 "annotation": "prop",
4368 "docs": "Left padding if direction is left-to-right, and right padding if direction is right-to-left of the input"
4369 },
4370 {
4371 "name": "--padding-top",
4372 "annotation": "prop",
4373 "docs": "Top padding of the input"
4374 },
4375 {
4376 "name": "--placeholder-color",
4377 "annotation": "prop",
4378 "docs": "Color of the input placeholder text"
4379 },
4380 {
4381 "name": "--placeholder-font-style",
4382 "annotation": "prop",
4383 "docs": "Font style of the input placeholder text"
4384 },
4385 {
4386 "name": "--placeholder-font-weight",
4387 "annotation": "prop",
4388 "docs": "Font weight of the input placeholder text"
4389 },
4390 {
4391 "name": "--placeholder-opacity",
4392 "annotation": "prop",
4393 "docs": "Opacity of the input placeholder text"
4394 }
4395 ],
4396 "slots": []
4397 },
4398 {
4399 "tag": "ion-item",
4400 "filePath": "src/components/item/item.tsx",
4401 "encapsulation": "shadow",
4402 "readme": "# ion-item\n\nItems are elements that can contain text, icons, avatars, images, inputs, and any other native or custom elements. Generally they are placed in a list with other items. Items can be swiped, deleted, reordered, edited, and more.\n\n## Clickable Items\n\nAn item is considered \"clickable\" if it has an `href` or `button` property set. Clickable items have a few visual differences that indicate they can be interacted with. For example, a clickable item receives the ripple effect upon activation in `md` mode, has a highlight when activated in `ios` mode, and has a [detail arrow](/#detail-arrows) by default in `ios` mode.\n\n## Detail Arrows\n\nBy default [clickable items](/#clickable-items) will display a right arrow icon on `ios` mode. To hide the right arrow icon on clickable elements, set the `detail` property to `false`. To show the right arrow icon on an item that doesn't display it naturally, set the `detail` property to `true`.\n\n<!--\n\nTODO add this functionality back as a css variable\n\nThis feature is not enabled by default on clickable items for the `md` mode, but it can be enabled by setting the following CSS variable:\n\n```css\n--item-detail-push-show: true;\n```\n\nSee the [theming documentation](/docs/theming/css-variables) for more information.\n\n-->\n\n\n## Item Placement\n\nItem uses named [slots](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/slot) in order to position content. This logic makes it possible to write a complex item with simple, understandable markup without having to worry about styling and positioning the elements.\n\nThe below chart details the item slots and where it will place the element inside of the item:\n\n| Slot | Description |\n|---------|-----------------------------------------------------------------------------|\n| `start` | Placed to the left of all other content in LTR, and to the `right` in RTL. |\n| `end` | Placed to the right of all other content in LTR, and to the `left` in RTL. |\n| none | Placed inside of the input wrapper. |\n\n\n### Text Alignment\n\nItems left align text and add an ellipsis when the text is wider than the item. See the [Utility Attributes Documentation](/docs/layout/css-utilities) for attributes that can be added to `<ion-item>` to transform the text.\n\n\n## Input Highlight\n\n### Highlight Height\n\nItems containing an input will highlight the bottom border of the input with a different color when focused, valid, or invalid. By default, `md` items have a highlight with a height set to `2px` and `ios` has no highlight (technically the height is set to `0`). The height can be changed using the `--highlight-height` CSS property. To turn off the highlight, set this variable to `0`. For more information on setting CSS properties, see the [theming documentation](/docs/theming/css-variables).\n\n### Highlight Color\n\nThe highlight color changes based on the item state, but all of the states use Ionic colors by default. When focused, the input highlight will use the `primary` color. If the input is valid it will use the `success` color, and invalid inputs will use the `danger` color. See the [CSS Custom Properties](#css-custom-properties) section below for the highlight color variables.\n\n",
4403 "docs": "Items are elements that can contain text, icons, avatars, images, inputs, and any other native or custom elements. Generally they are placed in a list with other items. Items can be swiped, deleted, reordered, edited, and more.",
4404 "docsTags": [
4405 {
4406 "text": "{\"ios\" | \"md\"} mode - The mode determines which platform styles to use.",
4407 "name": "virtualProp"
4408 },
4409 {
4410 "text": "- Content is placed between the named slots if provided without a slot.",
4411 "name": "slot"
4412 },
4413 {
4414 "text": "start - Content is placed to the left of the item text in LTR, and to the right in RTL.",
4415 "name": "slot"
4416 },
4417 {
4418 "text": "end - Content is placed to the right of the item text in LTR, and to the left in RTL.",
4419 "name": "slot"
4420 }
4421 ],
4422 "usage": {
4423 "angular": "Basic Usage\n\n```html\n<!-- Default Item -->\n<ion-item>\n <ion-label>\n Item\n </ion-label>\n</ion-item>\n\n<!-- Item as a Button -->\n<ion-item (click)=\"buttonClick()\">\n <ion-label>\n Button Item\n </ion-label>\n</ion-item>\n\n<!-- Item as an Anchor -->\n<ion-item href=\"https://www.ionicframework.com\">\n <ion-label>\n Anchor Item\n </ion-label>\n</ion-item>\n\n<ion-item color=\"secondary\">\n <ion-label>\n Secondary Color Item\n </ion-label>\n</ion-item>\n```\n\nDetail Arrows\n\n```html\n<ion-item detail>\n <ion-label>\n Standard Item with Detail Arrow\n </ion-label>\n</ion-item>\n\n<ion-item (click)=\"buttonClick()\" detail>\n <ion-label>\n Button Item with Detail Arrow\n </ion-label>\n</ion-item>\n\n<ion-item detail=\"false\" href=\"https://www.ionicframework.com\">\n <ion-label>\n Anchor Item with no Detail Arrow\n </ion-label>\n</ion-item>\n```\n\nList Items\n\n```html\n<ion-list>\n <ion-item>\n <ion-label>\n Item\n </ion-label>\n </ion-item>\n\n <ion-item lines=\"none\">\n <ion-label>\n No Lines Item\n </ion-label>\n </ion-item>\n\n <ion-item>\n <ion-label class=\"ion-text-wrap\">\n Multiline text that should wrap when it is too long\n to fit on one line in the item.\n </ion-label>\n </ion-item>\n\n <ion-item>\n <ion-label class=\"ion-text-wrap\">\n <ion-text color=\"primary\">\n <h3>H3 Primary Title</h3>\n </ion-text>\n <p>Paragraph line 1</p>\n <ion-text color=\"secondary\">\n <p>Paragraph line 2 secondary</p>\n </ion-text>\n </ion-label>\n </ion-item>\n\n <ion-item lines=\"full\">\n <ion-label>\n Item with Full Lines\n </ion-label>\n </ion-item>\n\n</ion-list>\n```\n\nItem Lines\n\n```html\n<!-- Item Inset Lines -->\n<ion-item lines=\"inset\">\n <ion-label>Item Lines Inset</ion-label>\n</ion-item>\n\n<!-- Item Full Lines -->\n<ion-item lines=\"full\">\n <ion-label>Item Lines Full</ion-label>\n</ion-item>\n\n<!-- Item None Lines -->\n<ion-item lines=\"none\">\n <ion-label>Item Lines None</ion-label>\n</ion-item>\n\n<!-- List Full Lines -->\n<ion-list lines=\"full\">\n <ion-item>\n <ion-label>Full Lines Item 1</ion-label>\n </ion-item>\n\n <ion-item>\n <ion-label>Full Lines Item 2</ion-label>\n </ion-item>\n</ion-list>\n\n<!-- List Inset Lines -->\n<ion-list lines=\"inset\">\n <ion-item>\n <ion-label>Inset Lines Item 1</ion-label>\n </ion-item>\n\n <ion-item>\n <ion-label>Inset Lines Item 2</ion-label>\n </ion-item>\n</ion-list>\n\n<!-- List No Lines -->\n<ion-list lines=\"none\">\n <ion-item>\n <ion-label>No lines Item 1</ion-label>\n </ion-item>\n\n <ion-item>\n <ion-label>No lines Item 2</ion-label>\n </ion-item>\n\n <ion-item>\n <ion-label>No lines Item 3</ion-label>\n </ion-item>\n</ion-list>\n```\n\n\nMedia Items\n\n```html\n<ion-item (click)=\"testClick()\">\n <ion-avatar slot=\"start\">\n <img src=\"data:image/gif;base64,R0lGODlhAQABAIAAAAAAAAAAACH5BAAAAAAALAAAAAABAAEAAAICTAEAOw==\">\n </ion-avatar>\n <ion-label>\n Avatar Start, Button Item\n </ion-label>\n</ion-item>\n\n<ion-item href=\"#\">\n <ion-label>\n Thumbnail End, Anchor Item\n </ion-label>\n <ion-thumbnail slot=\"end\">\n <img src=\"data:image/gif;base64,R0lGODlhAQABAIAAAAAAAAAAACH5BAAAAAAALAAAAAABAAEAAAICTAEAOw==\">\n </ion-thumbnail>\n</ion-item>\n\n<ion-item>\n <ion-thumbnail slot=\"start\">\n <img src=\"data:image/gif;base64,R0lGODlhAQABAIAAAAAAAAAAACH5BAAAAAAALAAAAAABAAEAAAICTAEAOw==\">\n </ion-thumbnail>\n <ion-label>\n <h2>H2 Title Text</h2>\n <p>Button on right</p>\n </ion-label>\n <ion-button fill=\"outline\" slot=\"end\">View</ion-button>\n</ion-item>\n\n<ion-item (click)=\"testClick()\">\n <ion-thumbnail slot=\"start\">\n <img src=\"data:image/gif;base64,R0lGODlhAQABAIAAAAAAAAAAACH5BAAAAAAALAAAAAABAAEAAAICTAEAOw==\">\n </ion-thumbnail>\n <ion-label>\n <h3>H3 Title Text</h3>\n <p>Icon on right</p>\n </ion-label>\n <ion-icon name=\"close-circle\" slot=\"end\"></ion-icon>\n</ion-item>\n```\n\nButtons in Items\n\n```html\n<ion-item>\n <ion-button slot=\"start\">\n Start\n </ion-button>\n <ion-label>Button Start/End</ion-label>\n <ion-button slot=\"end\">\n End\n </ion-button>\n</ion-item>\n\n<ion-item>\n <ion-button slot=\"start\">\n Start Icon\n <ion-icon name=\"home\" slot=\"end\"></ion-icon>\n </ion-button>\n <ion-label>Buttons with Icons</ion-label>\n <ion-button slot=\"end\">\n <ion-icon name=\"star\" slot=\"end\"></ion-icon>\n End Icon\n </ion-button>\n</ion-item>\n\n<ion-item>\n <ion-button slot=\"start\">\n <ion-icon slot=\"icon-only\" name=\"navigate\"></ion-icon>\n </ion-button>\n <ion-label>Icon only Buttons</ion-label>\n <ion-button slot=\"end\">\n <ion-icon slot=\"icon-only\" name=\"star\"></ion-icon>\n </ion-button>\n</ion-item>\n```\n\nIcons in Items\n\n```html\n<ion-item>\n <ion-label>\n Icon End\n </ion-label>\n <ion-icon name=\"information-circle\" slot=\"end\"></ion-icon>\n</ion-item>\n\n<ion-item>\n <ion-label>\n Large Icon End\n </ion-label>\n <ion-icon name=\"information-circle\" size=\"large\" slot=\"end\"></ion-icon>\n</ion-item>\n\n<ion-item>\n <ion-label>\n Small Icon End\n </ion-label>\n <ion-icon name=\"information-circle\" size=\"small\" slot=\"end\"></ion-icon>\n</ion-item>\n\n<ion-item>\n <ion-icon name=\"star\" slot=\"start\"></ion-icon>\n <ion-label>\n Icon Start\n </ion-label>\n</ion-item>\n\n<ion-item>\n <ion-label>\n Two Icons End\n </ion-label>\n <ion-icon name=\"checkmark-circle\" slot=\"end\"></ion-icon>\n <ion-icon name=\"shuffle\" slot=\"end\"></ion-icon>\n</ion-item>\n```\n\nItem Inputs\n\n```html\n<ion-item>\n <ion-label position=\"floating\">Datetime</ion-label>\n <ion-datetime></ion-datetime>\n</ion-item>\n\n<ion-item>\n <ion-label position=\"floating\">Select</ion-label>\n <ion-select>\n <ion-select-option value=\"\">No Game Console</ion-select-option>\n <ion-select-option value=\"nes\">NES</ion-select-option>\n <ion-select-option value=\"n64\" selected>Nintendo64</ion-select-option>\n <ion-select-option value=\"ps\">PlayStation</ion-select-option>\n <ion-select-option value=\"genesis\">Sega Genesis</ion-select-option>\n <ion-select-option value=\"saturn\">Sega Saturn</ion-select-option>\n <ion-select-option value=\"snes\">SNES</ion-select-option>\n </ion-select>\n</ion-item>\n\n<ion-item>\n <ion-label>Toggle</ion-label>\n <ion-toggle slot=\"end\"></ion-toggle>\n</ion-item>\n\n<ion-item>\n <ion-label position=\"floating\">Floating Input</ion-label>\n <ion-input></ion-input>\n</ion-item>\n\n<ion-item>\n <ion-label>Input (placeholder)</ion-label>\n <ion-input placeholder=\"Placeholder\"></ion-input>\n</ion-item>\n\n<ion-item>\n <ion-label>Checkbox</ion-label>\n <ion-checkbox slot=\"start\"></ion-checkbox>\n</ion-item>\n\n<ion-item>\n <ion-label>Range</ion-label>\n <ion-range></ion-range>\n</ion-item>\n```\n",
4424 "javascript": "Basic Usage\n\n```html\n<!-- Default Item -->\n<ion-item>\n <ion-label>\n Item\n </ion-label>\n</ion-item>\n\n<!-- Item as a Button -->\n<ion-item onclick=\"buttonClick()\">\n <ion-label>\n Button Item\n </ion-label>\n</ion-item>\n\n<!-- Item as an Anchor -->\n<ion-item href=\"https://www.ionicframework.com\">\n <ion-label>\n Anchor Item\n </ion-label>\n</ion-item>\n\n<ion-item color=\"secondary\">\n <ion-label>\n Secondary Color Item\n </ion-label>\n</ion-item>\n```\n\nDetail Arrows\n\n```html\n<ion-item detail>\n <ion-label>\n Standard Item with Detail Arrow\n </ion-label>\n</ion-item>\n\n<ion-item onclick=\"buttonClick()\" detail>\n <ion-label>\n Button Item with Detail Arrow\n </ion-label>\n</ion-item>\n\n<ion-item detail=\"false\" href=\"https://www.ionicframework.com\">\n <ion-label>\n Anchor Item with no Detail Arrow\n </ion-label>\n</ion-item>\n```\n\nList Items\n\n```html\n<ion-list>\n <ion-item>\n <ion-label>\n Item\n </ion-label>\n </ion-item>\n\n <ion-item lines=\"none\">\n <ion-label>\n No Lines Item\n </ion-label>\n </ion-item>\n\n <ion-item>\n <ion-label class=\"ion-text-wrap\">\n Multiline text that should wrap when it is too long\n to fit on one line in the item.\n </ion-label>\n </ion-item>\n\n <ion-item>\n <ion-label class=\"ion-text-wrap\">\n <ion-text color=\"primary\">\n <h3>H3 Primary Title</h3>\n </ion-text>\n <p>Paragraph line 1</p>\n <ion-text color=\"secondary\">\n <p>Paragraph line 2 secondary</p>\n </ion-text>\n </ion-label>\n </ion-item>\n\n <ion-item lines=\"full\">\n <ion-label>\n Item with Full Lines\n </ion-label>\n </ion-item>\n\n</ion-list>\n```\n\nItem Lines\n\n```html\n<!-- Item Inset Lines -->\n<ion-item lines=\"inset\">\n <ion-label>Item Lines Inset</ion-label>\n</ion-item>\n\n<!-- Item Full Lines -->\n<ion-item lines=\"full\">\n <ion-label>Item Lines Full</ion-label>\n</ion-item>\n\n<!-- Item None Lines -->\n<ion-item lines=\"none\">\n <ion-label>Item Lines None</ion-label>\n</ion-item>\n\n<!-- List Full Lines -->\n<ion-list lines=\"full\">\n <ion-item>\n <ion-label>Full Lines Item 1</ion-label>\n </ion-item>\n\n <ion-item>\n <ion-label>Full Lines Item 2</ion-label>\n </ion-item>\n</ion-list>\n\n<!-- List Inset Lines -->\n<ion-list lines=\"inset\">\n <ion-item>\n <ion-label>Inset Lines Item 1</ion-label>\n </ion-item>\n\n <ion-item>\n <ion-label>Inset Lines Item 2</ion-label>\n </ion-item>\n</ion-list>\n\n<!-- List No Lines -->\n<ion-list lines=\"none\">\n <ion-item>\n <ion-label>No lines Item 1</ion-label>\n </ion-item>\n\n <ion-item>\n <ion-label>No lines Item 2</ion-label>\n </ion-item>\n\n <ion-item>\n <ion-label>No lines Item 3</ion-label>\n </ion-item>\n</ion-list>\n```\n\n\nMedia Items\n\n```html\n<ion-item onclick=\"testClick()\">\n <ion-avatar slot=\"start\">\n <img src=\"data:image/gif;base64,R0lGODlhAQABAIAAAAAAAAAAACH5BAAAAAAALAAAAAABAAEAAAICTAEAOw==\">\n </ion-avatar>\n <ion-label>\n Avatar Start, Button Item\n </ion-label>\n</ion-item>\n\n<ion-item href=\"#\">\n <ion-label>\n Thumbnail End, Anchor Item\n </ion-label>\n <ion-thumbnail slot=\"end\">\n <img src=\"data:image/gif;base64,R0lGODlhAQABAIAAAAAAAAAAACH5BAAAAAAALAAAAAABAAEAAAICTAEAOw==\">\n </ion-thumbnail>\n</ion-item>\n\n<ion-item>\n <ion-thumbnail slot=\"start\">\n <img src=\"data:image/gif;base64,R0lGODlhAQABAIAAAAAAAAAAACH5BAAAAAAALAAAAAABAAEAAAICTAEAOw==\">\n </ion-thumbnail>\n <ion-label>\n <h2>H2 Title Text</h2>\n <p>Button on right</p>\n </ion-label>\n <ion-button fill=\"outline\" slot=\"end\">View</ion-button>\n</ion-item>\n\n<ion-item onclick=\"testClick()\">\n <ion-thumbnail slot=\"start\">\n <img src=\"data:image/gif;base64,R0lGODlhAQABAIAAAAAAAAAAACH5BAAAAAAALAAAAAABAAEAAAICTAEAOw==\">\n </ion-thumbnail>\n <ion-label>\n <h3>H3 Title Text</h3>\n <p>Icon on right</p>\n </ion-label>\n <ion-icon name=\"close-circle\" slot=\"end\"></ion-icon>\n</ion-item>\n```\n\nButtons in Items\n\n```html\n<ion-item>\n <ion-button slot=\"start\">\n Start\n </ion-button>\n <ion-label>Button Start/End</ion-label>\n <ion-button slot=\"end\">\n End\n </ion-button>\n</ion-item>\n\n<ion-item>\n <ion-button slot=\"start\">\n Start Icon\n <ion-icon name=\"home\" slot=\"end\"></ion-icon>\n </ion-button>\n <ion-label>Buttons with Icons</ion-label>\n <ion-button slot=\"end\">\n <ion-icon name=\"star\" slot=\"end\"></ion-icon>\n End Icon\n </ion-button>\n</ion-item>\n\n<ion-item>\n <ion-button slot=\"start\">\n <ion-icon slot=\"icon-only\" name=\"navigate\"></ion-icon>\n </ion-button>\n <ion-label>Icon only Buttons</ion-label>\n <ion-button slot=\"end\">\n <ion-icon slot=\"icon-only\" name=\"star\"></ion-icon>\n </ion-button>\n</ion-item>\n```\n\nIcons in Items\n\n```html\n<ion-item>\n <ion-label>\n Icon End\n </ion-label>\n <ion-icon name=\"information-circle\" slot=\"end\"></ion-icon>\n</ion-item>\n\n<ion-item>\n <ion-label>\n Large Icon End\n </ion-label>\n <ion-icon name=\"information-circle\" size=\"large\" slot=\"end\"></ion-icon>\n</ion-item>\n\n<ion-item>\n <ion-label>\n Small Icon End\n </ion-label>\n <ion-icon name=\"information-circle\" size=\"small\" slot=\"end\"></ion-icon>\n</ion-item>\n\n<ion-item>\n <ion-icon name=\"star\" slot=\"start\"></ion-icon>\n <ion-label>\n Icon Start\n </ion-label>\n</ion-item>\n\n<ion-item>\n <ion-label>\n Two Icons End\n </ion-label>\n <ion-icon name=\"checkmark-circle\" slot=\"end\"></ion-icon>\n <ion-icon name=\"shuffle\" slot=\"end\"></ion-icon>\n</ion-item>\n```\n\nItem Inputs\n\n```html\n<ion-item>\n <ion-label position=\"floating\">Datetime</ion-label>\n <ion-datetime></ion-datetime>\n</ion-item>\n\n<ion-item>\n <ion-label position=\"floating\">Select</ion-label>\n <ion-select>\n <ion-select-option value=\"\">No Game Console</ion-select-option>\n <ion-select-option value=\"nes\">NES</ion-select-option>\n <ion-select-option value=\"n64\" selected>Nintendo64</ion-select-option>\n <ion-select-option value=\"ps\">PlayStation</ion-select-option>\n <ion-select-option value=\"genesis\">Sega Genesis</ion-select-option>\n <ion-select-option value=\"saturn\">Sega Saturn</ion-select-option>\n <ion-select-option value=\"snes\">SNES</ion-select-option>\n </ion-select>\n</ion-item>\n\n<ion-item>\n <ion-label>Toggle</ion-label>\n <ion-toggle slot=\"end\"></ion-toggle>\n</ion-item>\n\n<ion-item>\n <ion-label position=\"floating\">Floating Input</ion-label>\n <ion-input></ion-input>\n</ion-item>\n\n<ion-item>\n <ion-label>Input (placeholder)</ion-label>\n <ion-input placeholder=\"Placeholder\"></ion-input>\n</ion-item>\n\n<ion-item>\n <ion-label>Checkbox</ion-label>\n <ion-checkbox slot=\"start\"></ion-checkbox>\n</ion-item>\n\n<ion-item>\n <ion-label>Range</ion-label>\n <ion-range></ion-range>\n</ion-item>\n```\n",
4425 "react": "```tsx\nimport React from 'react';\n\nimport { IonItem, IonLabel, IonList, IonText, IonAvatar, IonThumbnail, IonButton, IonIcon, IonSelect, IonSelectOption, IonDatetime, IonToggle, IonInput, IonCheckbox, IonRange } from '@ionic/react';\n\nconst Example: React.FC<{}> = () => (\n <>\n {/*-- Default Item --*/}\n <IonItem>\n <IonLabel>\n Item\n </IonLabel>\n </IonItem>\n\n {/*-- Item as a Button --*/}\n <IonItem onClick={() => {}}>\n <IonLabel>\n Button Item\n </IonLabel>\n </IonItem>\n\n {/*-- Item as an Anchor --*/}\n <IonItem href=\"https://www.ionicframework.com\">\n <IonLabel>\n Anchor Item\n </IonLabel>\n </IonItem>\n\n <IonItem color=\"secondary\">\n <IonLabel>\n Secondary Color Item\n </IonLabel>\n </IonItem>\n\n {/*-- Detail Arrows --*/}\n\n <IonItem detail>\n <IonLabel>\n Standard Item with Detail Arrow\n </IonLabel>\n </IonItem>\n\n <IonItem onClick={() => {}} detail>\n <IonLabel>\n Button Item with Detail Arrow\n </IonLabel>\n </IonItem>\n\n <IonItem detail={false} href=\"https://www.ionicframework.com\">\n <IonLabel>\n Anchor Item with no Detail Arrow\n </IonLabel>\n </IonItem>\n\n\n <IonList>\n <IonItem>\n <IonLabel>\n Item\n </IonLabel>\n </IonItem>\n\n <IonItem lines=\"none\">\n <IonLabel>\n No Lines Item\n </IonLabel>\n </IonItem>\n\n <IonItem>\n <IonLabel class=\"ion-text-wrap\">\n Multiline text that should wrap when it is too long\n to fit on one line in the item.\n </IonLabel>\n </IonItem>\n\n <IonItem>\n <IonLabel class=\"ion-text-wrap\">\n <IonText color=\"primary\">\n <h3>H3 Primary Title</h3>\n </IonText>\n <p>Paragraph line 1</p>\n <IonText color=\"secondary\">\n <p>Paragraph line 2 secondary</p>\n </IonText>\n </IonLabel>\n </IonItem>\n\n <IonItem lines=\"full\">\n <IonLabel>\n Item with Full Lines\n </IonLabel>\n </IonItem>\n\n </IonList>\n\n\n {/*-- Item Inset Lines --*/}\n <IonItem lines=\"inset\">\n <IonLabel>Item Lines Inset</IonLabel>\n </IonItem>\n\n {/*-- Item Full Lines --*/}\n <IonItem lines=\"full\">\n <IonLabel>Item Lines Full</IonLabel>\n </IonItem>\n\n {/*-- Item None Lines --*/}\n <IonItem lines=\"none\">\n <IonLabel>Item Lines None</IonLabel>\n </IonItem>\n\n {/*-- List Full Lines --*/}\n <IonList lines=\"full\">\n <IonItem>\n <IonLabel>Full Lines Item 1</IonLabel>\n </IonItem>\n\n <IonItem>\n <IonLabel>Full Lines Item 2</IonLabel>\n </IonItem>\n </IonList>\n\n {/*-- List Inset Lines --*/}\n <IonList lines=\"inset\">\n <IonItem>\n <IonLabel>Inset Lines Item 1</IonLabel>\n </IonItem>\n\n <IonItem>\n <IonLabel>Inset Lines Item 2</IonLabel>\n </IonItem>\n </IonList>\n\n {/*-- List No Lines --*/}\n <IonList lines=\"none\">\n <IonItem>\n <IonLabel>No lines Item 1</IonLabel>\n </IonItem>\n\n <IonItem>\n <IonLabel>No lines Item 2</IonLabel>\n </IonItem>\n\n <IonItem>\n <IonLabel>No lines Item 3</IonLabel>\n </IonItem>\n </IonList>\n\n\n\n <IonItem onClick={() => {}}>\n <IonAvatar slot=\"start\">\n <img src=\"data:image/gif;base64,R0lGODlhAQABAIAAAAAAAAAAACH5BAAAAAAALAAAAAABAAEAAAICTAEAOw==\" />\n </IonAvatar>\n <IonLabel>\n Avatar Start, Button Item\n </IonLabel>\n </IonItem>\n\n <IonItem href=\"#\">\n <IonLabel>\n Thumbnail End, Anchor Item\n </IonLabel>\n <IonThumbnail slot=\"end\">\n <img src=\"data:image/gif;base64,R0lGODlhAQABAIAAAAAAAAAAACH5BAAAAAAALAAAAAABAAEAAAICTAEAOw==\" />\n </IonThumbnail>\n </IonItem>\n\n <IonItem>\n <IonThumbnail slot=\"start\">\n <img src=\"data:image/gif;base64,R0lGODlhAQABAIAAAAAAAAAAACH5BAAAAAAALAAAAAABAAEAAAICTAEAOw==\" />\n </IonThumbnail>\n <IonLabel>\n <h2>H2 Title Text</h2>\n <p>Button on right</p>\n </IonLabel>\n <IonButton fill=\"outline\" slot=\"end\">View</IonButton>\n </IonItem>\n\n <IonItem onClick={() => {}}>\n <IonThumbnail slot=\"start\">\n <img src=\"data:image/gif;base64,R0lGODlhAQABAIAAAAAAAAAAACH5BAAAAAAALAAAAAABAAEAAAICTAEAOw==\" />\n </IonThumbnail>\n <IonLabel>\n <h3>H3 Title Text</h3>\n <p>Icon on right</p>\n </IonLabel>\n <IonIcon name=\"close-circle\" slot=\"end\" />\n </IonItem>\n\n\n Buttons in Items\n\n\n <IonItem>\n <IonButton slot=\"start\">\n Start\n </IonButton>\n <IonLabel>Button Start/End</IonLabel>\n <IonButton slot=\"end\">\n End\n </IonButton>\n </IonItem>\n\n <IonItem>\n <IonButton slot=\"start\">\n Start Icon\n <IonIcon name=\"home\" slot=\"end\" />\n </IonButton>\n <IonLabel>Buttons with Icons</IonLabel>\n <IonButton slot=\"end\">\n <IonIcon name=\"star\" slot=\"end\" />\n End Icon\n </IonButton>\n </IonItem>\n\n <IonItem>\n <IonButton slot=\"start\">\n <IonIcon slot=\"icon-only\" name=\"navigate\" />\n </IonButton>\n <IonLabel>Icon only Buttons</IonLabel>\n <IonButton slot=\"end\">\n <IonIcon slot=\"icon-only\" name=\"star\" />\n </IonButton>\n </IonItem>\n\n\n <IonItem>\n <IonLabel>\n Icon End\n </IonLabel>\n <IonIcon name=\"information-circle\" slot=\"end\" />\n </IonItem>\n\n <IonItem>\n <IonLabel>\n Large Icon End\n </IonLabel>\n <IonIcon name=\"information-circle\" size=\"large\" slot=\"end\" />\n </IonItem>\n\n <IonItem>\n <IonLabel>\n Small Icon End\n </IonLabel>\n <IonIcon name=\"information-circle\" size=\"small\" slot=\"end\" />\n </IonItem>\n\n <IonItem>\n <IonIcon name=\"star\" slot=\"start\" />\n <IonLabel>\n Icon Start\n </IonLabel>\n </IonItem>\n\n <IonItem>\n <IonLabel>\n Two Icons End\n </IonLabel>\n <IonIcon name=\"checkmark-circle\" slot=\"end\" />\n <IonIcon name=\"shuffle\" slot=\"end\" />\n </IonItem>\n\n <IonItem>\n <IonLabel position=\"floating\">Datetime</IonLabel>\n <IonDatetime></IonDatetime>\n </IonItem>\n\n <IonItem>\n <IonLabel position=\"floating\">Select</IonLabel>\n <IonSelect>\n <IonSelectOption value=\"\">No Game Console</IonSelectOption>\n <IonSelectOption value=\"nes\">NES</IonSelectOption>\n <IonSelectOption value=\"n64\" selected>Nintendo64</IonSelectOption>\n <IonSelectOption value=\"ps\">PlayStation</IonSelectOption>\n <IonSelectOption value=\"genesis\">Sega Genesis</IonSelectOption>\n <IonSelectOption value=\"saturn\">Sega Saturn</IonSelectOption>\n <IonSelectOption value=\"snes\">SNES</IonSelectOption>\n </IonSelect>\n </IonItem>\n\n <IonItem>\n <IonLabel>Toggle</IonLabel>\n <IonToggle slot=\"end\"></IonToggle>\n </IonItem>\n\n <IonItem>\n <IonLabel position=\"floating\">Floating Input</IonLabel>\n <IonInput></IonInput>\n </IonItem>\n\n <IonItem>\n <IonLabel>Input (placeholder)</IonLabel>\n <IonInput placeholder=\"Placeholder\"></IonInput>\n </IonItem>\n\n <IonItem>\n <IonLabel>Checkbox</IonLabel>\n <IonCheckbox slot=\"start\" />\n </IonItem>\n\n <IonItem>\n <IonLabel>Range</IonLabel>\n <IonRange></IonRange>\n </IonItem>\n </>\n);\n\nexport default Example;\n```\n",
4426 "vue": "Basic Usage\n\n```html\n<template>\n <!-- Default Item -->\n <ion-item>\n <ion-label>\n Item\n </ion-label>\n </ion-item>\n\n <!-- Item as a Button -->\n <ion-item @click=\"buttonClick()\">\n <ion-label>\n Button Item\n </ion-label>\n </ion-item>\n\n <!-- Item as an Anchor -->\n <ion-item href=\"https://www.ionicframework.com\">\n <ion-label>\n Anchor Item\n </ion-label>\n </ion-item>\n\n <ion-item color=\"secondary\">\n <ion-label>\n Secondary Color Item\n </ion-label>\n </ion-item>\n</template>\n```\n\nDetail Arrows\n\n```html\n<template>\n <ion-item detail>\n <ion-label>\n Standard Item with Detail Arrow\n </ion-label>\n </ion-item>\n\n <ion-item @click=\"buttonClick()\" detail>\n <ion-label>\n Button Item with Detail Arrow\n </ion-label>\n </ion-item>\n\n <ion-item detail=\"false\" href=\"https://www.ionicframework.com\">\n <ion-label>\n Anchor Item with no Detail Arrow\n </ion-label>\n </ion-item>\n</template>\n```\n\nList Items\n\n```html\n<template>\n <ion-list>\n <ion-item>\n <ion-label>\n Item\n </ion-label>\n </ion-item>\n\n <ion-item lines=\"none\">\n <ion-label>\n No Lines Item\n </ion-label>\n </ion-item>\n\n <ion-item>\n <ion-label class=\"ion-text-wrap\">\n Multiline text that should wrap when it is too long\n to fit on one line in the item.\n </ion-label>\n </ion-item>\n\n <ion-item>\n <ion-label class=\"ion-text-wrap\">\n <ion-text color=\"primary\">\n <h3>H3 Primary Title</h3>\n </ion-text>\n <p>Paragraph line 1</p>\n <ion-text color=\"secondary\">\n <p>Paragraph line 2 secondary</p>\n </ion-text>\n </ion-label>\n </ion-item>\n\n <ion-item lines=\"full\">\n <ion-label>\n Item with Full Lines\n </ion-label>\n </ion-item>\n\n </ion-list>\n</template>\n```\n\nItem Lines\n\n```html\n<template>\n <!-- Item Inset Lines -->\n <ion-item lines=\"inset\">\n <ion-label>Item Lines Inset</ion-label>\n </ion-item>\n\n <!-- Item Full Lines -->\n <ion-item lines=\"full\">\n <ion-label>Item Lines Full</ion-label>\n </ion-item>\n\n <!-- Item None Lines -->\n <ion-item lines=\"none\">\n <ion-label>Item Lines None</ion-label>\n </ion-item>\n\n <!-- List Full Lines -->\n <ion-list lines=\"full\">\n <ion-item>\n <ion-label>Full Lines Item 1</ion-label>\n </ion-item>\n\n <ion-item>\n <ion-label>Full Lines Item 2</ion-label>\n </ion-item>\n </ion-list>\n\n <!-- List Inset Lines -->\n <ion-list lines=\"inset\">\n <ion-item>\n <ion-label>Inset Lines Item 1</ion-label>\n </ion-item>\n\n <ion-item>\n <ion-label>Inset Lines Item 2</ion-label>\n </ion-item>\n </ion-list>\n\n <!-- List No Lines -->\n <ion-list lines=\"none\">\n <ion-item>\n <ion-label>No lines Item 1</ion-label>\n </ion-item>\n\n <ion-item>\n <ion-label>No lines Item 2</ion-label>\n </ion-item>\n\n <ion-item>\n <ion-label>No lines Item 3</ion-label>\n </ion-item>\n </ion-list>\n</template>\n```\n\n\nMedia Items\n\n```html\n<template>\n <ion-item @click=\"testClick()\">\n <ion-avatar slot=\"start\">\n <img src=\"data:image/gif;base64,R0lGODlhAQABAIAAAAAAAAAAACH5BAAAAAAALAAAAAABAAEAAAICTAEAOw==\">\n </ion-avatar>\n <ion-label>\n Avatar Start, Button Item\n </ion-label>\n </ion-item>\n\n <ion-item href=\"#\">\n <ion-label>\n Thumbnail End, Anchor Item\n </ion-label>\n <ion-thumbnail slot=\"end\">\n <img src=\"data:image/gif;base64,R0lGODlhAQABAIAAAAAAAAAAACH5BAAAAAAALAAAAAABAAEAAAICTAEAOw==\">\n </ion-thumbnail>\n </ion-item>\n\n <ion-item>\n <ion-thumbnail slot=\"start\">\n <img src=\"data:image/gif;base64,R0lGODlhAQABAIAAAAAAAAAAACH5BAAAAAAALAAAAAABAAEAAAICTAEAOw==\">\n </ion-thumbnail>\n <ion-label>\n <h2>H2 Title Text</h2>\n <p>Button on right</p>\n </ion-label>\n <ion-button fill=\"outline\" slot=\"end\">View</ion-button>\n </ion-item>\n\n <ion-item @click=\"testClick()\">\n <ion-thumbnail slot=\"start\">\n <img src=\"data:image/gif;base64,R0lGODlhAQABAIAAAAAAAAAAACH5BAAAAAAALAAAAAABAAEAAAICTAEAOw==\">\n </ion-thumbnail>\n <ion-label>\n <h3>H3 Title Text</h3>\n <p>Icon on right</p>\n </ion-label>\n <ion-icon name=\"close-circle\" slot=\"end\"></ion-icon>\n </ion-item>\n</template>\n```\n\nButtons in Items\n\n```html\n<template>\n <ion-item>\n <ion-button slot=\"start\">\n Start\n </ion-button>\n <ion-label>Button Start/End</ion-label>\n <ion-button slot=\"end\">\n End\n </ion-button>\n </ion-item>\n\n <ion-item>\n <ion-button slot=\"start\">\n Start Icon\n <ion-icon name=\"home\" slot=\"end\"></ion-icon>\n </ion-button>\n <ion-label>Buttons with Icons</ion-label>\n <ion-button slot=\"end\">\n <ion-icon name=\"star\" slot=\"end\"></ion-icon>\n End Icon\n </ion-button>\n </ion-item>\n\n <ion-item>\n <ion-button slot=\"start\">\n <ion-icon slot=\"icon-only\" name=\"navigate\"></ion-icon>\n </ion-button>\n <ion-label>Icon only Buttons</ion-label>\n <ion-button slot=\"end\">\n <ion-icon slot=\"icon-only\" name=\"star\"></ion-icon>\n </ion-button>\n </ion-item>\n</template>\n```\n\nIcons in Items\n\n```html\n<template>\n <ion-item>\n <ion-label>\n Icon End\n </ion-label>\n <ion-icon name=\"information-circle\" slot=\"end\"></ion-icon>\n </ion-item>\n\n <ion-item>\n <ion-label>\n Large Icon End\n </ion-label>\n <ion-icon name=\"information-circle\" size=\"large\" slot=\"end\"></ion-icon>\n </ion-item>\n\n <ion-item>\n <ion-label>\n Small Icon End\n </ion-label>\n <ion-icon name=\"information-circle\" size=\"small\" slot=\"end\"></ion-icon>\n </ion-item>\n\n <ion-item>\n <ion-icon name=\"star\" slot=\"start\"></ion-icon>\n <ion-label>\n Icon Start\n </ion-label>\n </ion-item>\n\n <ion-item>\n <ion-label>\n Two Icons End\n </ion-label>\n <ion-icon name=\"checkmark-circle\" slot=\"end\"></ion-icon>\n <ion-icon name=\"shuffle\" slot=\"end\"></ion-icon>\n </ion-item>\n</template>\n```\n\nItem Inputs\n\n```html\n<template>\n <ion-item>\n <ion-label position=\"floating\">Datetime</ion-label>\n <ion-datetime></ion-datetime>\n </ion-item>\n\n <ion-item>\n <ion-label position=\"floating\">Select</ion-label>\n <ion-select>\n <ion-select-option value=\"\">No Game Console</ion-select-option>\n <ion-select-option value=\"nes\">NES</ion-select-option>\n <ion-select-option value=\"n64\" selected>Nintendo64</ion-select-option>\n <ion-select-option value=\"ps\">PlayStation</ion-select-option>\n <ion-select-option value=\"genesis\">Sega Genesis</ion-select-option>\n <ion-select-option value=\"saturn\">Sega Saturn</ion-select-option>\n <ion-select-option value=\"snes\">SNES</ion-select-option>\n </ion-select>\n </ion-item>\n\n <ion-item>\n <ion-label>Toggle</ion-label>\n <ion-toggle slot=\"end\"></ion-toggle>\n </ion-item>\n\n <ion-item>\n <ion-label position=\"floating\">Floating Input</ion-label>\n <ion-input></ion-input>\n </ion-item>\n\n <ion-item>\n <ion-label>Input (placeholder)</ion-label>\n <ion-input placeholder=\"Placeholder\"></ion-input>\n </ion-item>\n\n <ion-item>\n <ion-label>Checkbox</ion-label>\n <ion-checkbox slot=\"start\"></ion-checkbox>\n </ion-item>\n\n <ion-item>\n <ion-label>Range</ion-label>\n <ion-range></ion-range>\n </ion-item>\n</template>\n```\n"
4427 },
4428 "props": [
4429 {
4430 "name": "button",
4431 "type": "boolean",
4432 "mutable": false,
4433 "attr": "button",
4434 "reflectToAttr": false,
4435 "docs": "If `true`, a button tag will be rendered and the item will be tappable.",
4436 "docsTags": [],
4437 "default": "false",
4438 "optional": false,
4439 "required": false
4440 },
4441 {
4442 "name": "color",
4443 "type": "string | undefined",
4444 "mutable": false,
4445 "attr": "color",
4446 "reflectToAttr": false,
4447 "docs": "The color to use from your application's color palette.\nDefault options are: `\"primary\"`, `\"secondary\"`, `\"tertiary\"`, `\"success\"`, `\"warning\"`, `\"danger\"`, `\"light\"`, `\"medium\"`, and `\"dark\"`.\nFor more information on colors, see [theming](/docs/theming/basics).",
4448 "docsTags": [],
4449 "optional": true,
4450 "required": false
4451 },
4452 {
4453 "name": "detail",
4454 "type": "boolean | undefined",
4455 "mutable": false,
4456 "attr": "detail",
4457 "reflectToAttr": false,
4458 "docs": "If `true`, a detail arrow will appear on the item. Defaults to `false` unless the `mode`\nis `ios` and an `href` or `button` property is present.",
4459 "docsTags": [],
4460 "optional": true,
4461 "required": false
4462 },
4463 {
4464 "name": "detailIcon",
4465 "type": "string",
4466 "mutable": false,
4467 "attr": "detail-icon",
4468 "reflectToAttr": false,
4469 "docs": "The icon to use when `detail` is set to `true`.",
4470 "docsTags": [],
4471 "default": "'ios-arrow-forward'",
4472 "optional": false,
4473 "required": false
4474 },
4475 {
4476 "name": "disabled",
4477 "type": "boolean",
4478 "mutable": false,
4479 "attr": "disabled",
4480 "reflectToAttr": false,
4481 "docs": "If `true`, the user cannot interact with the item.",
4482 "docsTags": [],
4483 "default": "false",
4484 "optional": false,
4485 "required": false
4486 },
4487 {
4488 "name": "download",
4489 "type": "string | undefined",
4490 "mutable": false,
4491 "attr": "download",
4492 "reflectToAttr": false,
4493 "docs": "This attribute instructs browsers to download a URL instead of navigating to\nit, so the user will be prompted to save it as a local file. If the attribute\nhas a value, it is used as the pre-filled file name in the Save prompt\n(the user can still change the file name if they want).",
4494 "docsTags": [],
4495 "optional": false,
4496 "required": false
4497 },
4498 {
4499 "name": "href",
4500 "type": "string | undefined",
4501 "mutable": false,
4502 "attr": "href",
4503 "reflectToAttr": false,
4504 "docs": "Contains a URL or a URL fragment that the hyperlink points to.\nIf this property is set, an anchor tag will be rendered.",
4505 "docsTags": [],
4506 "optional": false,
4507 "required": false
4508 },
4509 {
4510 "name": "lines",
4511 "type": "\"full\" | \"inset\" | \"none\" | undefined",
4512 "mutable": false,
4513 "attr": "lines",
4514 "reflectToAttr": false,
4515 "docs": "How the bottom border should be displayed on the item.",
4516 "docsTags": [],
4517 "optional": true,
4518 "required": false
4519 },
4520 {
4521 "name": "mode",
4522 "type": "\"ios\" | \"md\"",
4523 "mutable": false,
4524 "attr": "mode",
4525 "reflectToAttr": false,
4526 "docs": "The mode determines which platform styles to use.",
4527 "docsTags": [],
4528 "optional": true,
4529 "required": false
4530 },
4531 {
4532 "name": "rel",
4533 "type": "string | undefined",
4534 "mutable": false,
4535 "attr": "rel",
4536 "reflectToAttr": false,
4537 "docs": "Specifies the relationship of the target object to the link object.\nThe value is a space-separated list of [link types](https://developer.mozilla.org/en-US/docs/Web/HTML/Link_types).",
4538 "docsTags": [],
4539 "optional": false,
4540 "required": false
4541 },
4542 {
4543 "name": "routerDirection",
4544 "type": "\"back\" | \"forward\" | \"root\"",
4545 "mutable": false,
4546 "attr": "router-direction",
4547 "reflectToAttr": false,
4548 "docs": "When using a router, it specifies the transition direction when navigating to\nanother page using `href`.",
4549 "docsTags": [],
4550 "default": "'forward'",
4551 "optional": false,
4552 "required": false
4553 },
4554 {
4555 "name": "target",
4556 "type": "string | undefined",
4557 "mutable": false,
4558 "attr": "target",
4559 "reflectToAttr": false,
4560 "docs": "Specifies where to display the linked URL.\nOnly applies when an `href` is provided.\nSpecial keywords: `\"_blank\"`, `\"_self\"`, `\"_parent\"`, `\"_top\"`.",
4561 "docsTags": [],
4562 "optional": false,
4563 "required": false
4564 },
4565 {
4566 "name": "type",
4567 "type": "\"button\" | \"reset\" | \"submit\"",
4568 "mutable": false,
4569 "attr": "type",
4570 "reflectToAttr": false,
4571 "docs": "The type of the button. Only used when an `onclick` or `button` property is present.",
4572 "docsTags": [],
4573 "default": "'button'",
4574 "optional": false,
4575 "required": false
4576 }
4577 ],
4578 "methods": [],
4579 "events": [],
4580 "styles": [
4581 {
4582 "name": "--background",
4583 "annotation": "prop",
4584 "docs": "Background of the item"
4585 },
4586 {
4587 "name": "--background-activated",
4588 "annotation": "prop",
4589 "docs": "Background of the item when pressed"
4590 },
4591 {
4592 "name": "--background-focused",
4593 "annotation": "prop",
4594 "docs": "Background of the item when focused with the tab key"
4595 },
4596 {
4597 "name": "--background-hover",
4598 "annotation": "prop",
4599 "docs": "Background of the item on hover"
4600 },
4601 {
4602 "name": "--border-color",
4603 "annotation": "prop",
4604 "docs": "Color of the item border"
4605 },
4606 {
4607 "name": "--border-radius",
4608 "annotation": "prop",
4609 "docs": "Radius of the item border"
4610 },
4611 {
4612 "name": "--border-style",
4613 "annotation": "prop",
4614 "docs": "Style of the item border"
4615 },
4616 {
4617 "name": "--border-width",
4618 "annotation": "prop",
4619 "docs": "Width of the item border"
4620 },
4621 {
4622 "name": "--box-shadow",
4623 "annotation": "prop",
4624 "docs": "Box shadow of the item"
4625 },
4626 {
4627 "name": "--color",
4628 "annotation": "prop",
4629 "docs": "Color of the item"
4630 },
4631 {
4632 "name": "--color-activated",
4633 "annotation": "prop",
4634 "docs": "Color of the item when pressed"
4635 },
4636 {
4637 "name": "--color-focused",
4638 "annotation": "prop",
4639 "docs": "Color of the item when focused with the tab key"
4640 },
4641 {
4642 "name": "--color-hover",
4643 "annotation": "prop",
4644 "docs": "Color of the item on hover"
4645 },
4646 {
4647 "name": "--detail-icon-color",
4648 "annotation": "prop",
4649 "docs": "Color of the item detail icon"
4650 },
4651 {
4652 "name": "--detail-icon-font-size",
4653 "annotation": "prop",
4654 "docs": "Font size of the item detail icon"
4655 },
4656 {
4657 "name": "--detail-icon-opacity",
4658 "annotation": "prop",
4659 "docs": "Opacity of the item detail icon"
4660 },
4661 {
4662 "name": "--highlight-color-focused",
4663 "annotation": "prop",
4664 "docs": "The color of the highlight on the item when focused"
4665 },
4666 {
4667 "name": "--highlight-color-invalid",
4668 "annotation": "prop",
4669 "docs": "The color of the highlight on the item when invalid"
4670 },
4671 {
4672 "name": "--highlight-color-valid",
4673 "annotation": "prop",
4674 "docs": "The color of the highlight on the item when valid"
4675 },
4676 {
4677 "name": "--highlight-height",
4678 "annotation": "prop",
4679 "docs": "The height of the highlight on the item"
4680 },
4681 {
4682 "name": "--inner-border-width",
4683 "annotation": "prop",
4684 "docs": "Width of the item inner border"
4685 },
4686 {
4687 "name": "--inner-box-shadow",
4688 "annotation": "prop",
4689 "docs": "Box shadow of the item inner"
4690 },
4691 {
4692 "name": "--inner-padding-bottom",
4693 "annotation": "prop",
4694 "docs": "Bottom padding of the item inner"
4695 },
4696 {
4697 "name": "--inner-padding-end",
4698 "annotation": "prop",
4699 "docs": "Right padding if direction is left-to-right, and left padding if direction is right-to-left of the item inner"
4700 },
4701 {
4702 "name": "--inner-padding-start",
4703 "annotation": "prop",
4704 "docs": "Left padding if direction is left-to-right, and right padding if direction is right-to-left of the item inner"
4705 },
4706 {
4707 "name": "--inner-padding-top",
4708 "annotation": "prop",
4709 "docs": "Top padding of the item inner"
4710 },
4711 {
4712 "name": "--min-height",
4713 "annotation": "prop",
4714 "docs": "Minimum height of the item"
4715 },
4716 {
4717 "name": "--padding-bottom",
4718 "annotation": "prop",
4719 "docs": "Bottom padding of the item"
4720 },
4721 {
4722 "name": "--padding-end",
4723 "annotation": "prop",
4724 "docs": "Right padding if direction is left-to-right, and left padding if direction is right-to-left of the item"
4725 },
4726 {
4727 "name": "--padding-start",
4728 "annotation": "prop",
4729 "docs": "Left padding if direction is left-to-right, and right padding if direction is right-to-left of the item"
4730 },
4731 {
4732 "name": "--padding-top",
4733 "annotation": "prop",
4734 "docs": "Top padding of the item"
4735 },
4736 {
4737 "name": "--ripple-color",
4738 "annotation": "prop",
4739 "docs": "Color of the item ripple effect"
4740 },
4741 {
4742 "name": "--transition",
4743 "annotation": "prop",
4744 "docs": "Transition of the item"
4745 }
4746 ],
4747 "slots": [
4748 {
4749 "name": "",
4750 "docs": "Content is placed between the named slots if provided without a slot."
4751 },
4752 {
4753 "name": "end",
4754 "docs": "Content is placed to the right of the item text in LTR, and to the left in RTL."
4755 },
4756 {
4757 "name": "start",
4758 "docs": "Content is placed to the left of the item text in LTR, and to the right in RTL."
4759 }
4760 ]
4761 },
4762 {
4763 "tag": "ion-item-divider",
4764 "filePath": "src/components/item-divider/item-divider.tsx",
4765 "encapsulation": "shadow",
4766 "readme": "# ion-item-divider\n\nItem Dividers are block elements that can be used to separate items in a list. They are similar to list headers, but instead of being placed at the top of a list, they should go in between groups of like items.\n",
4767 "docs": "Item Dividers are block elements that can be used to separate items in a list. They are similar to list headers, but instead of being placed at the top of a list, they should go in between groups of like items.",
4768 "docsTags": [
4769 {
4770 "text": "{\"ios\" | \"md\"} mode - The mode determines which platform styles to use.",
4771 "name": "virtualProp"
4772 },
4773 {
4774 "text": "- Content is placed between the named slots if provided without a slot.",
4775 "name": "slot"
4776 },
4777 {
4778 "text": "start - Content is placed to the left of the divider text in LTR, and to the right in RTL.",
4779 "name": "slot"
4780 },
4781 {
4782 "text": "end - Content is placed to the right of the divider text in LTR, and to the left in RTL.",
4783 "name": "slot"
4784 }
4785 ],
4786 "usage": {
4787 "angular": "```html\n<ion-item-divider>\n <ion-label>\n Basic Item Divider\n </ion-label>\n</ion-item-divider>\n\n<ion-item-divider color=\"secondary\">\n <ion-label>\n Secondary Item Divider\n </ion-label>\n</ion-item-divider>\n\n<!-- Item Dividers in a List -->\n<ion-list>\n <ion-item-divider>\n <ion-label>\n Section A\n </ion-label>\n </ion-item-divider>\n\n <ion-item><ion-label>A1</ion-label></ion-item>\n <ion-item><ion-label>A2</ion-label></ion-item>\n <ion-item><ion-label>A3</ion-label></ion-item>\n <ion-item><ion-label>A4</ion-label></ion-item>\n <ion-item><ion-label>A5</ion-label></ion-item>\n\n <ion-item-divider>\n <ion-label>\n Section B\n </ion-label>\n </ion-item-divider>\n\n <ion-item><ion-label>B1</ion-label></ion-item>\n <ion-item><ion-label>B2</ion-label></ion-item>\n <ion-item><ion-label>B3</ion-label></ion-item>\n <ion-item><ion-label>B4</ion-label></ion-item>\n <ion-item><ion-label>B5</ion-label></ion-item>\n</ion-list>\n```\n",
4788 "javascript": "```html\n<ion-item-divider>\n <ion-label>\n Basic Item Divider\n </ion-label>\n</ion-item-divider>\n\n<ion-item-divider color=\"secondary\">\n <ion-label>\n Secondary Item Divider\n </ion-label>\n</ion-item-divider>\n\n<!-- Item Dividers in a List -->\n<ion-list>\n <ion-item-divider>\n <ion-label>\n Section A\n </ion-label>\n </ion-item-divider>\n\n <ion-item><ion-label>A1</ion-label></ion-item>\n <ion-item><ion-label>A2</ion-label></ion-item>\n <ion-item><ion-label>A3</ion-label></ion-item>\n <ion-item><ion-label>A4</ion-label></ion-item>\n <ion-item><ion-label>A5</ion-label></ion-item>\n\n <ion-item-divider>\n <ion-label>\n Section B\n </ion-label>\n </ion-item-divider>\n\n <ion-item><ion-label>B1</ion-label></ion-item>\n <ion-item><ion-label>B2</ion-label></ion-item>\n <ion-item><ion-label>B3</ion-label></ion-item>\n <ion-item><ion-label>B4</ion-label></ion-item>\n <ion-item><ion-label>B5</ion-label></ion-item>\n</ion-list>\n```\n",
4789 "react": "```tsx\nimport React from 'react';\nimport { IonItemDivider, IonLabel, IonList, IonItem, IonContent } from '@ionic/react';\n\nexport const ItemDividerExample: React.FC = () => (\n <IonContent>\n <IonItemDivider>\n <IonLabel>\n Basic Item Divider\n </IonLabel>\n </IonItemDivider>\n\n <IonItemDivider color=\"secondary\">\n <IonLabel>\n Secondary Item Divider\n </IonLabel>\n </IonItemDivider>\n\n {/*-- Item Dividers in a List --*/}\n <IonList>\n <IonItemDivider>\n <IonLabel>\n Section A\n </IonLabel>\n </IonItemDivider>\n\n <IonItem><IonLabel>A1</IonLabel></IonItem>\n <IonItem><IonLabel>A2</IonLabel></IonItem>\n <IonItem><IonLabel>A3</IonLabel></IonItem>\n <IonItem><IonLabel>A4</IonLabel></IonItem>\n <IonItem><IonLabel>A5</IonLabel></IonItem>\n\n <IonItemDivider>\n <IonLabel>\n Section B\n </IonLabel>\n </IonItemDivider>\n\n <IonItem><IonLabel>B1</IonLabel></IonItem>\n <IonItem><IonLabel>B2</IonLabel></IonItem>\n <IonItem><IonLabel>B3</IonLabel></IonItem>\n <IonItem><IonLabel>B4</IonLabel></IonItem>\n <IonItem><IonLabel>B5</IonLabel></IonItem>\n </IonList>\n </IonContent>\n);\n```",
4790 "vue": "```html\n<template>\n <ion-item-divider>\n <ion-label>\n Basic Item Divider\n </ion-label>\n </ion-item-divider>\n\n <ion-item-divider color=\"secondary\">\n <ion-label>\n Secondary Item Divider\n </ion-label>\n </ion-item-divider>\n\n <!-- Item Dividers in a List -->\n <ion-list>\n <ion-item-divider>\n <ion-label>\n Section A\n </ion-label>\n </ion-item-divider>\n\n <ion-item><ion-label>A1</ion-label></ion-item>\n <ion-item><ion-label>A2</ion-label></ion-item>\n <ion-item><ion-label>A3</ion-label></ion-item>\n <ion-item><ion-label>A4</ion-label></ion-item>\n <ion-item><ion-label>A5</ion-label></ion-item>\n\n <ion-item-divider>\n <ion-label>\n Section B\n </ion-label>\n </ion-item-divider>\n\n <ion-item><ion-label>B1</ion-label></ion-item>\n <ion-item><ion-label>B2</ion-label></ion-item>\n <ion-item><ion-label>B3</ion-label></ion-item>\n <ion-item><ion-label>B4</ion-label></ion-item>\n <ion-item><ion-label>B5</ion-label></ion-item>\n </ion-list>\n</template>\n```\n"
4791 },
4792 "props": [
4793 {
4794 "name": "color",
4795 "type": "string | undefined",
4796 "mutable": false,
4797 "attr": "color",
4798 "reflectToAttr": false,
4799 "docs": "The color to use from your application's color palette.\nDefault options are: `\"primary\"`, `\"secondary\"`, `\"tertiary\"`, `\"success\"`, `\"warning\"`, `\"danger\"`, `\"light\"`, `\"medium\"`, and `\"dark\"`.\nFor more information on colors, see [theming](/docs/theming/basics).",
4800 "docsTags": [],
4801 "optional": true,
4802 "required": false
4803 },
4804 {
4805 "name": "mode",
4806 "type": "\"ios\" | \"md\"",
4807 "mutable": false,
4808 "attr": "mode",
4809 "reflectToAttr": false,
4810 "docs": "The mode determines which platform styles to use.",
4811 "docsTags": [],
4812 "optional": true,
4813 "required": false
4814 },
4815 {
4816 "name": "sticky",
4817 "type": "boolean",
4818 "mutable": false,
4819 "attr": "sticky",
4820 "reflectToAttr": false,
4821 "docs": "When it's set to `true`, the item-divider will stay visible when it reaches the top\nof the viewport until the next `ion-item-divider` replaces it.\n\nThis feature relies in `position:sticky`:\nhttps://caniuse.com/#feat=css-sticky",
4822 "docsTags": [],
4823 "default": "false",
4824 "optional": false,
4825 "required": false
4826 }
4827 ],
4828 "methods": [],
4829 "events": [],
4830 "styles": [
4831 {
4832 "name": "--background",
4833 "annotation": "prop",
4834 "docs": "Background of the item divider"
4835 },
4836 {
4837 "name": "--color",
4838 "annotation": "prop",
4839 "docs": "Color of the item divider"
4840 },
4841 {
4842 "name": "--inner-padding-bottom",
4843 "annotation": "prop",
4844 "docs": "Bottom inner padding of the item divider"
4845 },
4846 {
4847 "name": "--inner-padding-end",
4848 "annotation": "prop",
4849 "docs": "End inner padding of the item divider"
4850 },
4851 {
4852 "name": "--inner-padding-start",
4853 "annotation": "prop",
4854 "docs": "Start inner padding of the item divider"
4855 },
4856 {
4857 "name": "--inner-padding-top",
4858 "annotation": "prop",
4859 "docs": "Top inner padding of the item divider"
4860 },
4861 {
4862 "name": "--padding-bottom",
4863 "annotation": "prop",
4864 "docs": "Bottom padding of the item divider"
4865 },
4866 {
4867 "name": "--padding-end",
4868 "annotation": "prop",
4869 "docs": "Right padding if direction is left-to-right, and left padding if direction is right-to-left of the item divider"
4870 },
4871 {
4872 "name": "--padding-start",
4873 "annotation": "prop",
4874 "docs": "Left padding if direction is left-to-right, and right padding if direction is right-to-left of the item divider"
4875 },
4876 {
4877 "name": "--padding-top",
4878 "annotation": "prop",
4879 "docs": "Top padding of the item divider"
4880 }
4881 ],
4882 "slots": [
4883 {
4884 "name": "",
4885 "docs": "Content is placed between the named slots if provided without a slot."
4886 },
4887 {
4888 "name": "end",
4889 "docs": "Content is placed to the right of the divider text in LTR, and to the left in RTL."
4890 },
4891 {
4892 "name": "start",
4893 "docs": "Content is placed to the left of the divider text in LTR, and to the right in RTL."
4894 }
4895 ]
4896 },
4897 {
4898 "tag": "ion-item-group",
4899 "filePath": "src/components/item-group/item-group.tsx",
4900 "encapsulation": "none",
4901 "readme": "# ion-item-group\n\nItem groups are containers that organize similar items together. They can contain item dividers to divide the items into multiple sections.\n\n\n\n",
4902 "docs": "Item groups are containers that organize similar items together. They can contain item dividers to divide the items into multiple sections.",
4903 "docsTags": [],
4904 "usage": {
4905 "angular": "```html\n<ion-item-group>\n <ion-item-divider>\n <ion-label>A</ion-label>\n </ion-item-divider>\n\n <ion-item>\n <ion-label>Angola</ion-label>\n </ion-item>\n <ion-item>\n <ion-label>Argentina</ion-label>\n </ion-item>\n <ion-item>\n <ion-label>Armenia</ion-label>\n </ion-item>\n</ion-item-group>\n\n<ion-item-group>\n <ion-item-divider>\n <ion-label>B</ion-label>\n </ion-item-divider>\n\n <ion-item>\n <ion-label>Bangladesh</ion-label>\n </ion-item>\n <ion-item>\n <ion-label>Belarus</ion-label>\n </ion-item>\n <ion-item>\n <ion-label>Belgium</ion-label>\n </ion-item>\n</ion-item-group>\n\n\n<!-- They can also be used to group sliding items -->\n<ion-item-group>\n <ion-item-divider>\n <ion-label>\n Fruits\n </ion-label>\n </ion-item-divider>\n\n <ion-item-sliding>\n <ion-item>\n <ion-label>\n <h3>Grapes</h3>\n </ion-label>\n </ion-item>\n <ion-item-options>\n <ion-item-option>\n Favorite\n </ion-item-option>\n </ion-item-options>\n </ion-item-sliding>\n\n <ion-item-sliding>\n <ion-item>\n <ion-label>\n <h3>Apples</h3>\n </ion-label>\n </ion-item>\n <ion-item-options>\n <ion-item-option>\n Favorite\n </ion-item-option>\n </ion-item-options>\n </ion-item-sliding>\n</ion-item-group>\n\n<ion-item-group>\n <ion-item-divider>\n <ion-label>\n Vegetables\n </ion-label>\n </ion-item-divider>\n\n <ion-item-sliding>\n <ion-item>\n <ion-label>\n <h3>Carrots</h3>\n </ion-label>\n </ion-item>\n <ion-item-options>\n <ion-item-option>\n Favorite\n </ion-item-option>\n </ion-item-options>\n </ion-item-sliding>\n\n <ion-item-sliding>\n <ion-item>\n <ion-label>\n <h3>Celery</h3>\n </ion-label>\n </ion-item>\n <ion-item-options>\n <ion-item-option>\n Favorite\n </ion-item-option>\n </ion-item-options>\n </ion-item-sliding>\n</ion-item-group>\n```\n",
4906 "javascript": "```html\n<ion-item-group>\n <ion-item-divider>\n <ion-label>A</ion-label>\n </ion-item-divider>\n\n <ion-item>\n <ion-label>Angola</ion-label>\n </ion-item>\n <ion-item>\n <ion-label>Argentina</ion-label>\n </ion-item>\n <ion-item>\n <ion-label>Armenia</ion-label>\n </ion-item>\n</ion-item-group>\n\n<ion-item-group>\n <ion-item-divider>\n <ion-label>B</ion-label>\n </ion-item-divider>\n\n <ion-item>\n <ion-label>Bangladesh</ion-label>\n </ion-item>\n <ion-item>\n <ion-label>Belarus</ion-label>\n </ion-item>\n <ion-item>\n <ion-label>Belgium</ion-label>\n </ion-item>\n</ion-item-group>\n\n\n<!-- They can also be used to group sliding items -->\n<ion-item-group>\n <ion-item-divider>\n <ion-label>\n Fruits\n </ion-label>\n </ion-item-divider>\n\n <ion-item-sliding>\n <ion-item>\n <ion-label>\n <h3>Grapes</h3>\n </ion-label>\n </ion-item>\n <ion-item-options>\n <ion-item-option>\n Favorite\n </ion-item-option>\n </ion-item-options>\n </ion-item-sliding>\n\n <ion-item-sliding>\n <ion-item>\n <ion-label>\n <h3>Apples</h3>\n </ion-label>\n </ion-item>\n <ion-item-options>\n <ion-item-option>\n Favorite\n </ion-item-option>\n </ion-item-options>\n </ion-item-sliding>\n</ion-item-group>\n\n<ion-item-group>\n <ion-item-divider>\n <ion-label>\n Vegetables\n </ion-label>\n </ion-item-divider>\n\n <ion-item-sliding>\n <ion-item>\n <ion-label>\n <h3>Carrots</h3>\n </ion-label>\n </ion-item>\n <ion-item-options>\n <ion-item-option>\n Favorite\n </ion-item-option>\n </ion-item-options>\n </ion-item-sliding>\n\n <ion-item-sliding>\n <ion-item>\n <ion-label>\n <h3>Celery</h3>\n </ion-label>\n </ion-item>\n <ion-item-options>\n <ion-item-option>\n Favorite\n </ion-item-option>\n </ion-item-options>\n </ion-item-sliding>\n</ion-item-group>\n```\n",
4907 "react": "```tsx\nimport React from 'react';\n\nimport { IonItemGroup, IonItemDivider, IonLabel, IonItem, IonItemSliding, IonItemOptions, IonItemOption } from '@ionic/react';\n\nconst Example: React.FC<{}> = () => (\n <>\n <IonItemGroup>\n <IonItemDivider>\n <IonLabel>A</IonLabel>\n </IonItemDivider>\n\n <IonItem>\n <IonLabel>Angola</IonLabel>\n </IonItem>\n <IonItem>\n <IonLabel>Argentina</IonLabel>\n </IonItem>\n <IonItem>\n <IonLabel>Armenia</IonLabel>\n </IonItem>\n </IonItemGroup>\n\n <IonItemGroup>\n <IonItemDivider>\n <IonLabel>B</IonLabel>\n </IonItemDivider>\n\n <IonItem>\n <IonLabel>Bangladesh</IonLabel>\n </IonItem>\n <IonItem>\n <IonLabel>Belarus</IonLabel>\n </IonItem>\n <IonItem>\n <IonLabel>Belgium</IonLabel>\n </IonItem>\n </IonItemGroup>\n\n\n {/*-- They can also be used to group sliding items --*/}\n <IonItemGroup>\n <IonItemDivider>\n <IonLabel>\n Fruits\n </IonLabel>\n </IonItemDivider>\n\n <IonItemSliding>\n <IonItem>\n <IonLabel>\n <h3>Grapes</h3>\n </IonLabel>\n </IonItem>\n <IonItemOptions>\n <IonItemOption>\n Favorite\n </IonItemOption>\n </IonItemOptions>\n </IonItemSliding>\n\n <IonItemSliding>\n <IonItem>\n <IonLabel>\n <h3>Apples</h3>\n </IonLabel>\n </IonItem>\n <IonItemOptions>\n <IonItemOption>\n Favorite\n </IonItemOption>\n </IonItemOptions>\n </IonItemSliding>\n </IonItemGroup>\n\n <IonItemGroup>\n <IonItemDivider>\n <IonLabel>\n Vegetables\n </IonLabel>\n </IonItemDivider>\n\n <IonItemSliding>\n <IonItem>\n <IonLabel>\n <h3>Carrots</h3>\n </IonLabel>\n </IonItem>\n <IonItemOptions>\n <IonItemOption>\n Favorite\n </IonItemOption>\n </IonItemOptions>\n </IonItemSliding>\n\n <IonItemSliding>\n <IonItem>\n <IonLabel>\n <h3>Celery</h3>\n </IonLabel>\n </IonItem>\n <IonItemOptions>\n <IonItemOption>\n Favorite\n </IonItemOption>\n </IonItemOptions>\n </IonItemSliding>\n </IonItemGroup>\n </>\n);\n\nexport default Example;\n```\n",
4908 "vue": "```html\n<template>\n <ion-item-group>\n <ion-item-divider>\n <ion-label>A</ion-label>\n </ion-item-divider>\n\n <ion-item>\n <ion-label>Angola</ion-label>\n </ion-item>\n <ion-item>\n <ion-label>Argentina</ion-label>\n </ion-item>\n <ion-item>\n <ion-label>Armenia</ion-label>\n </ion-item>\n </ion-item-group>\n\n <ion-item-group>\n <ion-item-divider>\n <ion-label>B</ion-label>\n </ion-item-divider>\n\n <ion-item>\n <ion-label>Bangladesh</ion-label>\n </ion-item>\n <ion-item>\n <ion-label>Belarus</ion-label>\n </ion-item>\n <ion-item>\n <ion-label>Belgium</ion-label>\n </ion-item>\n </ion-item-group>\n\n\n <!-- They can also be used to group sliding items -->\n <ion-item-group>\n <ion-item-divider>\n <ion-label>\n Fruits\n </ion-label>\n </ion-item-divider>\n\n <ion-item-sliding>\n <ion-item>\n <ion-label>\n <h3>Grapes</h3>\n </ion-label>\n </ion-item>\n <ion-item-options>\n <ion-item-option>\n Favorite\n </ion-item-option>\n </ion-item-options>\n </ion-item-sliding>\n\n <ion-item-sliding>\n <ion-item>\n <ion-label>\n <h3>Apples</h3>\n </ion-label>\n </ion-item>\n <ion-item-options>\n <ion-item-option>\n Favorite\n </ion-item-option>\n </ion-item-options>\n </ion-item-sliding>\n </ion-item-group>\n\n <ion-item-group>\n <ion-item-divider>\n <ion-label>\n Vegetables\n </ion-label>\n </ion-item-divider>\n\n <ion-item-sliding>\n <ion-item>\n <ion-label>\n <h3>Carrots</h3>\n </ion-label>\n </ion-item>\n <ion-item-options>\n <ion-item-option>\n Favorite\n </ion-item-option>\n </ion-item-options>\n </ion-item-sliding>\n\n <ion-item-sliding>\n <ion-item>\n <ion-label>\n <h3>Celery</h3>\n </ion-label>\n </ion-item>\n <ion-item-options>\n <ion-item-option>\n Favorite\n </ion-item-option>\n </ion-item-options>\n </ion-item-sliding>\n </ion-item-group>\n</template>\n```\n"
4909 },
4910 "props": [],
4911 "methods": [],
4912 "events": [],
4913 "styles": [],
4914 "slots": []
4915 },
4916 {
4917 "tag": "ion-item-option",
4918 "filePath": "src/components/item-option/item-option.tsx",
4919 "encapsulation": "shadow",
4920 "readme": "# ion-item-option\n\nThe option button for an `ion-item-sliding`. Must be placed inside of an `<ion-item-options>`.\nYou can combine the `ionSwipe` event and the `expandable` directive to create a full swipe\naction for the item.\n",
4921 "docs": "The option button for an `ion-item-sliding`. Must be placed inside of an `<ion-item-options>`.\nYou can combine the `ionSwipe` event and the `expandable` directive to create a full swipe\naction for the item.",
4922 "docsTags": [
4923 {
4924 "text": "{\"ios\" | \"md\"} mode - The mode determines which platform styles to use.",
4925 "name": "virtualProp"
4926 },
4927 {
4928 "text": "- Content is placed between the named slots if provided without a slot.",
4929 "name": "slot"
4930 },
4931 {
4932 "text": "start - Content is placed to the left of the option text in LTR, and to the right in RTL.",
4933 "name": "slot"
4934 },
4935 {
4936 "text": "top - Content is placed above the option text.",
4937 "name": "slot"
4938 },
4939 {
4940 "text": "icon-only - Should be used on an icon in an option that has no text.",
4941 "name": "slot"
4942 },
4943 {
4944 "text": "bottom - Content is placed below the option text.",
4945 "name": "slot"
4946 },
4947 {
4948 "text": "end - Content is placed to the right of the option text in LTR, and to the left in RTL.",
4949 "name": "slot"
4950 }
4951 ],
4952 "usage": {},
4953 "props": [
4954 {
4955 "name": "color",
4956 "type": "string | undefined",
4957 "mutable": false,
4958 "attr": "color",
4959 "reflectToAttr": false,
4960 "docs": "The color to use from your application's color palette.\nDefault options are: `\"primary\"`, `\"secondary\"`, `\"tertiary\"`, `\"success\"`, `\"warning\"`, `\"danger\"`, `\"light\"`, `\"medium\"`, and `\"dark\"`.\nFor more information on colors, see [theming](/docs/theming/basics).",
4961 "docsTags": [],
4962 "optional": true,
4963 "required": false
4964 },
4965 {
4966 "name": "disabled",
4967 "type": "boolean",
4968 "mutable": false,
4969 "attr": "disabled",
4970 "reflectToAttr": false,
4971 "docs": "If `true`, the user cannot interact with the item option.",
4972 "docsTags": [],
4973 "default": "false",
4974 "optional": false,
4975 "required": false
4976 },
4977 {
4978 "name": "download",
4979 "type": "string | undefined",
4980 "mutable": false,
4981 "attr": "download",
4982 "reflectToAttr": false,
4983 "docs": "This attribute instructs browsers to download a URL instead of navigating to\nit, so the user will be prompted to save it as a local file. If the attribute\nhas a value, it is used as the pre-filled file name in the Save prompt\n(the user can still change the file name if they want).",
4984 "docsTags": [],
4985 "optional": false,
4986 "required": false
4987 },
4988 {
4989 "name": "expandable",
4990 "type": "boolean",
4991 "mutable": false,
4992 "attr": "expandable",
4993 "reflectToAttr": false,
4994 "docs": "If `true`, the option will expand to take up the available width and cover any other options.",
4995 "docsTags": [],
4996 "default": "false",
4997 "optional": false,
4998 "required": false
4999 },
5000 {
5001 "name": "href",
5002 "type": "string | undefined",
5003 "mutable": false,
5004 "attr": "href",
5005 "reflectToAttr": false,
5006 "docs": "Contains a URL or a URL fragment that the hyperlink points to.\nIf this property is set, an anchor tag will be rendered.",
5007 "docsTags": [],
5008 "optional": false,
5009 "required": false
5010 },
5011 {
5012 "name": "mode",
5013 "type": "\"ios\" | \"md\"",
5014 "mutable": false,
5015 "attr": "mode",
5016 "reflectToAttr": false,
5017 "docs": "The mode determines which platform styles to use.",
5018 "docsTags": [],
5019 "optional": true,
5020 "required": false
5021 },
5022 {
5023 "name": "rel",
5024 "type": "string | undefined",
5025 "mutable": false,
5026 "attr": "rel",
5027 "reflectToAttr": false,
5028 "docs": "Specifies the relationship of the target object to the link object.\nThe value is a space-separated list of [link types](https://developer.mozilla.org/en-US/docs/Web/HTML/Link_types).",
5029 "docsTags": [],
5030 "optional": false,
5031 "required": false
5032 },
5033 {
5034 "name": "target",
5035 "type": "string | undefined",
5036 "mutable": false,
5037 "attr": "target",
5038 "reflectToAttr": false,
5039 "docs": "Specifies where to display the linked URL.\nOnly applies when an `href` is provided.\nSpecial keywords: `\"_blank\"`, `\"_self\"`, `\"_parent\"`, `\"_top\"`.",
5040 "docsTags": [],
5041 "optional": false,
5042 "required": false
5043 },
5044 {
5045 "name": "type",
5046 "type": "\"button\" | \"reset\" | \"submit\"",
5047 "mutable": false,
5048 "attr": "type",
5049 "reflectToAttr": false,
5050 "docs": "The type of the button.",
5051 "docsTags": [],
5052 "default": "'button'",
5053 "optional": false,
5054 "required": false
5055 }
5056 ],
5057 "methods": [],
5058 "events": [],
5059 "styles": [
5060 {
5061 "name": "--background",
5062 "annotation": "prop",
5063 "docs": "Background of the item option"
5064 },
5065 {
5066 "name": "--color",
5067 "annotation": "prop",
5068 "docs": "Color of the item option"
5069 }
5070 ],
5071 "slots": [
5072 {
5073 "name": "",
5074 "docs": "Content is placed between the named slots if provided without a slot."
5075 },
5076 {
5077 "name": "bottom",
5078 "docs": "Content is placed below the option text."
5079 },
5080 {
5081 "name": "end",
5082 "docs": "Content is placed to the right of the option text in LTR, and to the left in RTL."
5083 },
5084 {
5085 "name": "icon-only",
5086 "docs": "Should be used on an icon in an option that has no text."
5087 },
5088 {
5089 "name": "start",
5090 "docs": "Content is placed to the left of the option text in LTR, and to the right in RTL."
5091 },
5092 {
5093 "name": "top",
5094 "docs": "Content is placed above the option text."
5095 }
5096 ]
5097 },
5098 {
5099 "tag": "ion-item-options",
5100 "filePath": "src/components/item-options/item-options.tsx",
5101 "encapsulation": "none",
5102 "readme": "# ion-item-options\n\nThe option buttons for an `ion-item-sliding`. These buttons can be placed either on the [start or end side](#side-description).\nYou can combine the `ionSwipe` event plus the `expandable` directive to create a full swipe action for the item.\n\n\n### Side description\n\n| Side | Position | Swipe direction |\n|---------|-----------------------------------------------------------------|-------------------------------------------------------------------|\n| `start` | To the `left` of the content in LTR, and to the `right` in RTL. | From `left` to `right` in LTR, and from `right` to `left` in RTL. |\n| `end` | To the `right` of the content in LTR, and to the `left` in RTL. | From `right` to `left` in LTR, and from `left` to `right` in RTL. |\n\n",
5103 "docs": "The option buttons for an `ion-item-sliding`. These buttons can be placed either on the [start or end side](#side-description).\nYou can combine the `ionSwipe` event plus the `expandable` directive to create a full swipe action for the item.",
5104 "docsTags": [],
5105 "usage": {},
5106 "props": [
5107 {
5108 "name": "side",
5109 "type": "\"end\" | \"start\"",
5110 "mutable": false,
5111 "attr": "side",
5112 "reflectToAttr": false,
5113 "docs": "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.",
5114 "docsTags": [],
5115 "default": "'end'",
5116 "optional": false,
5117 "required": false
5118 }
5119 ],
5120 "methods": [],
5121 "events": [
5122 {
5123 "event": "ionSwipe",
5124 "detail": "any",
5125 "bubbles": true,
5126 "cancelable": true,
5127 "composed": true,
5128 "docs": "Emitted when the item has been fully swiped.",
5129 "docsTags": []
5130 }
5131 ],
5132 "styles": [],
5133 "slots": []
5134 },
5135 {
5136 "tag": "ion-item-sliding",
5137 "filePath": "src/components/item-sliding/item-sliding.tsx",
5138 "encapsulation": "none",
5139 "readme": "# ion-item-sliding\n\nA sliding item contains an item that can be dragged to reveal buttons. It requires an [item](../item) component as a child. All options to reveal should be placed in the [item options](../item-options) element.\n\n\n### Swipe Direction\n\nBy default, the buttons are placed on the `\"end\"` side. This means that options are revealed when the sliding item is swiped from end to start, i.e. from right to left in LTR, but from left to right in RTL. To place them on the opposite side, so that they are revealed when swiping in the opposite direction, set the `side` attribute to `\"start\"` on the [`ion-item-options`](../item-options) element. Up to two `ion-item-options` can be used at the same time in order to reveal two different sets of options depending on the swiping direction.\n\n\n### Options Layout\n\nBy default if an icon is placed with text in the [item option](../item-option), it will display the icon on top of the text, but the icon slot can be changed to any of the following to position it in the option.\n\n| Slot | description |\n| ----------- | ------------------------------------------------------------------------ |\n| `start` | In LTR, start is the left side of the button, and in RTL it is the right |\n| `top` | The icon is above the text |\n| `icon-only` | The icon is the only content of the button |\n| `bottom` | The icon is below the text |\n| `end` | In LTR, end is the right side of the button, and in RTL it is the left |\n\n\n### Expandable Options\n\nOptions can be expanded to take up the full width of the item if you swipe past a certain point. This can be combined with the `ionSwipe` event to call methods on the class.\n\n",
5140 "docs": "A sliding item contains an item that can be dragged to reveal buttons. It requires an [item](../item) component as a child. All options to reveal should be placed in the [item options](../item-options) element.",
5141 "docsTags": [],
5142 "usage": {
5143 "angular": "```html\n<ion-list>\n <!-- Sliding item with text options on both sides -->\n <ion-item-sliding>\n <ion-item-options side=\"start\">\n <ion-item-option (click)=\"favorite(item)\">Favorite</ion-item-option>\n <ion-item-option color=\"danger\" (click)=\"share(item)\">Share</ion-item-option>\n </ion-item-options>\n\n <ion-item>\n <ion-label>Item Options</ion-label>\n </ion-item>\n\n <ion-item-options side=\"end\">\n <ion-item-option (click)=\"unread(item)\">Unread</ion-item-option>\n </ion-item-options>\n </ion-item-sliding>\n\n <!-- Sliding item with expandable options on both sides -->\n <ion-item-sliding>\n <ion-item-options side=\"start\">\n <ion-item-option color=\"danger\" expandable>\n Delete\n </ion-item-option>\n </ion-item-options>\n\n <ion-item>\n <ion-label>Expandable Options</ion-label>\n </ion-item>\n\n <ion-item-options side=\"end\">\n <ion-item-option color=\"tertiary\" expandable>\n Archive\n </ion-item-option>\n </ion-item-options>\n </ion-item-sliding>\n\n <!-- Multi-line sliding item with icon options on both sides -->\n <ion-item-sliding id=\"item100\">\n <ion-item href=\"#\">\n <ion-label>\n <h2>HubStruck Notifications</h2>\n <p>A new message in your network</p>\n <p>Oceanic Next has joined your network</p>\n </ion-label>\n <ion-note slot=\"end\">\n 10:45 AM\n </ion-note>\n </ion-item>\n\n <ion-item-options side=\"start\">\n <ion-item-option>\n <ion-icon slot=\"icon-only\" name=\"heart\"></ion-icon>\n </ion-item-option>\n </ion-item-options>\n\n <ion-item-options side=\"end\">\n <ion-item-option color=\"danger\">\n <ion-icon slot=\"icon-only\" name=\"trash\"></ion-icon>\n </ion-item-option>\n <ion-item-option>\n <ion-icon slot=\"icon-only\" name=\"star\"></ion-icon>\n </ion-item-option>\n </ion-item-options>\n </ion-item-sliding>\n\n <!-- Sliding item with icon start options on end side -->\n <ion-item-sliding>\n <ion-item>\n <ion-label>\n Sliding Item, Icons Start\n </ion-label>\n </ion-item>\n <ion-item-options>\n <ion-item-option color=\"primary\">\n <ion-icon slot=\"start\" name=\"more\"></ion-icon>\n More\n </ion-item-option>\n <ion-item-option color=\"secondary\">\n <ion-icon slot=\"start\" name=\"archive\"></ion-icon>\n Archive\n </ion-item-option>\n </ion-item-options>\n </ion-item-sliding>\n\n <!-- Sliding item with icon end options on end side -->\n <ion-item-sliding>\n <ion-item>\n <ion-label>\n Sliding Item, Icons End\n </ion-label>\n </ion-item>\n <ion-item-options>\n <ion-item-option color=\"primary\">\n <ion-icon slot=\"end\" name=\"more\"></ion-icon>\n More\n </ion-item-option>\n <ion-item-option color=\"secondary\">\n <ion-icon slot=\"end\" name=\"archive\"></ion-icon>\n Archive\n </ion-item-option>\n </ion-item-options>\n </ion-item-sliding>\n\n <!-- Sliding item with icon top options on end side -->\n <ion-item-sliding>\n <ion-item>\n <ion-label>\n Sliding Item, Icons Top\n </ion-label>\n </ion-item>\n <ion-item-options>\n <ion-item-option color=\"primary\">\n <ion-icon slot=\"top\" name=\"more\"></ion-icon>\n More\n </ion-item-option>\n <ion-item-option color=\"secondary\">\n <ion-icon slot=\"top\" name=\"archive\"></ion-icon>\n Archive\n </ion-item-option>\n </ion-item-options>\n </ion-item-sliding>\n\n <!-- Sliding item with icon bottom options on end side -->\n <ion-item-sliding>\n <ion-item>\n <ion-label>\n Sliding Item, Icons Bottom\n </ion-label>\n </ion-item>\n <ion-item-options>\n <ion-item-option color=\"primary\">\n <ion-icon slot=\"bottom\" name=\"more\"></ion-icon>\n More\n </ion-item-option>\n <ion-item-option color=\"secondary\">\n <ion-icon slot=\"bottom\" name=\"archive\"></ion-icon>\n Archive\n </ion-item-option>\n </ion-item-options>\n </ion-item-sliding>\n</ion-list>\n```\n",
5144 "javascript": "```html\n<ion-list>\n <!-- Sliding item with text options on both sides -->\n <ion-item-sliding>\n <ion-item-options side=\"start\">\n <ion-item-option onClick=\"favorite(item)\">Favorite</ion-item-option>\n <ion-item-option color=\"danger\" onClick=\"share(item)\">Share</ion-item-option>\n </ion-item-options>\n\n <ion-item>\n <ion-label>Item Options</ion-label>\n </ion-item>\n\n <ion-item-options side=\"end\">\n <ion-item-option onClick=\"unread(item)\">Unread</ion-item-option>\n </ion-item-options>\n </ion-item-sliding>\n\n <!-- Sliding item with expandable options on both sides -->\n <ion-item-sliding>\n <ion-item-options side=\"start\">\n <ion-item-option color=\"danger\" expandable>\n Delete\n </ion-item-option>\n </ion-item-options>\n\n <ion-item>\n <ion-label>Expandable Options</ion-label>\n </ion-item>\n\n <ion-item-options side=\"end\">\n <ion-item-option color=\"tertiary\" expandable>\n Archive\n </ion-item-option>\n </ion-item-options>\n </ion-item-sliding>\n\n <!-- Multi-line sliding item with icon options on both sides -->\n <ion-item-sliding id=\"item100\">\n <ion-item href=\"#\">\n <ion-label>\n <h2>HubStruck Notifications</h2>\n <p>A new message in your network</p>\n <p>Oceanic Next has joined your network</p>\n </ion-label>\n <ion-note slot=\"end\">\n 10:45 AM\n </ion-note>\n </ion-item>\n\n <ion-item-options side=\"start\">\n <ion-item-option>\n <ion-icon slot=\"icon-only\" name=\"heart\"></ion-icon>\n </ion-item-option>\n </ion-item-options>\n\n <ion-item-options side=\"end\">\n <ion-item-option color=\"danger\">\n <ion-icon slot=\"icon-only\" name=\"trash\"></ion-icon>\n </ion-item-option>\n <ion-item-option>\n <ion-icon slot=\"icon-only\" name=\"star\"></ion-icon>\n </ion-item-option>\n </ion-item-options>\n </ion-item-sliding>\n\n <!-- Sliding item with icon start options on end side -->\n <ion-item-sliding>\n <ion-item>\n <ion-label>\n Sliding Item, Icons Start\n </ion-label>\n </ion-item>\n <ion-item-options>\n <ion-item-option color=\"primary\">\n <ion-icon slot=\"start\" name=\"more\"></ion-icon>\n More\n </ion-item-option>\n <ion-item-option color=\"secondary\">\n <ion-icon slot=\"start\" name=\"archive\"></ion-icon>\n Archive\n </ion-item-option>\n </ion-item-options>\n </ion-item-sliding>\n\n <!-- Sliding item with icon end options on end side -->\n <ion-item-sliding>\n <ion-item>\n <ion-label>\n Sliding Item, Icons End\n </ion-label>\n </ion-item>\n <ion-item-options>\n <ion-item-option color=\"primary\">\n <ion-icon slot=\"end\" name=\"more\"></ion-icon>\n More\n </ion-item-option>\n <ion-item-option color=\"secondary\">\n <ion-icon slot=\"end\" name=\"archive\"></ion-icon>\n Archive\n </ion-item-option>\n </ion-item-options>\n </ion-item-sliding>\n\n <!-- Sliding item with icon top options on end side -->\n <ion-item-sliding>\n <ion-item>\n <ion-label>\n Sliding Item, Icons Top\n </ion-label>\n </ion-item>\n <ion-item-options>\n <ion-item-option color=\"primary\">\n <ion-icon slot=\"top\" name=\"more\"></ion-icon>\n More\n </ion-item-option>\n <ion-item-option color=\"secondary\">\n <ion-icon slot=\"top\" name=\"archive\"></ion-icon>\n Archive\n </ion-item-option>\n </ion-item-options>\n </ion-item-sliding>\n\n <!-- Sliding item with icon bottom options on end side -->\n <ion-item-sliding>\n <ion-item>\n <ion-label>\n Sliding Item, Icons Bottom\n </ion-label>\n </ion-item>\n <ion-item-options>\n <ion-item-option color=\"primary\">\n <ion-icon slot=\"bottom\" name=\"more\"></ion-icon>\n More\n </ion-item-option>\n <ion-item-option color=\"secondary\">\n <ion-icon slot=\"bottom\" name=\"archive\"></ion-icon>\n Archive\n </ion-item-option>\n </ion-item-options>\n </ion-item-sliding>\n</ion-list>\n```\n",
5145 "react": "```tsx\nimport React from 'react';\nimport { IonList, IonItemSliding, IonItem, IonLabel, IonItemOptions, IonItemOption, IonIcon, IonNote } from '@ionic/react';\n\nexport const ItemSlidingExample: React.FC = () => (\n<IonList>\n {/* Sliding item with text options on both sides */}\n <IonItemSliding>\n <IonItemOptions side=\"start\">\n <IonItemOption onClick={() => console.log('favorite clicked')}>Favorite</IonItemOption>\n <IonItemOption color=\"danger\" onClick={() => console.log('share clicked')}>Share</IonItemOption>\n </IonItemOptions>\n\n <IonItem>\n <IonLabel>Item Options</IonLabel>\n </IonItem>\n\n <IonItemOptions side=\"end\">\n <IonItemOption onClick={() => console.log('unread clicked')}>Unread</IonItemOption>\n </IonItemOptions>\n </IonItemSliding>\n\n {/* Sliding item with expandable options on both sides */}\n <IonItemSliding>\n <IonItemOptions side=\"start\">\n <IonItemOption color=\"danger\" expandable>\n Delete\n </IonItemOption>\n </IonItemOptions>\n\n <IonItem>\n <IonLabel>Expandable Options</IonLabel>\n </IonItem>\n\n <IonItemOptions side=\"end\">\n <IonItemOption color=\"tertiary\" expandable>\n Archive\n </IonItemOption>\n </IonItemOptions>\n </IonItemSliding>\n\n {/* Multi-line sliding item with icon options on both sides */}\n <IonItemSliding id=\"item100\">\n <IonItem href=\"#\">\n <IonLabel>\n <h2>HubStruck Notifications</h2>\n <p>A new message in your network</p>\n <p>Oceanic Next has joined your network</p>\n </IonLabel>\n <IonNote slot=\"end\">\n 10:45 AM\n </IonNote>\n </IonItem>\n\n <IonItemOptions side=\"start\">\n <IonItemOption>\n <IonIcon slot=\"icon-only\" name=\"heart\"></IonIcon>\n </IonItemOption>\n </IonItemOptions>\n\n <IonItemOptions side=\"end\">\n <IonItemOption color=\"danger\">\n <IonIcon slot=\"icon-only\" name=\"trash\"></IonIcon>\n </IonItemOption>\n <IonItemOption>\n <IonIcon slot=\"icon-only\" name=\"star\"></IonIcon>\n </IonItemOption>\n </IonItemOptions>\n </IonItemSliding>\n\n {/* Sliding item with icon start options on end side */}\n <IonItemSliding>\n <IonItem>\n <IonLabel>\n Sliding Item, Icons Start\n </IonLabel>\n </IonItem>\n <IonItemOptions>\n <IonItemOption color=\"primary\">\n <IonIcon slot=\"start\" name=\"more\"></IonIcon>\n More\n </IonItemOption>\n <IonItemOption color=\"secondary\">\n <IonIcon slot=\"start\" name=\"archive\"></IonIcon>\n Archive\n </IonItemOption>\n </IonItemOptions>\n </IonItemSliding>\n\n {/* Sliding item with icon end options on end side */}\n <IonItemSliding>\n <IonItem>\n <IonLabel>\n Sliding Item, Icons End\n </IonLabel>\n </IonItem>\n <IonItemOptions>\n <IonItemOption color=\"primary\">\n <IonIcon slot=\"end\" name=\"more\"></IonIcon>\n More\n </IonItemOption>\n <IonItemOption color=\"secondary\">\n <IonIcon slot=\"end\" name=\"archive\"></IonIcon>\n Archive\n </IonItemOption>\n </IonItemOptions>\n </IonItemSliding>\n\n {/* Sliding item with icon top options on end side */}\n <IonItemSliding>\n <IonItem>\n <IonLabel>\n Sliding Item, Icons Top\n </IonLabel>\n </IonItem>\n <IonItemOptions>\n <IonItemOption color=\"primary\">\n <IonIcon slot=\"top\" name=\"more\"></IonIcon>\n More\n </IonItemOption>\n <IonItemOption color=\"secondary\">\n <IonIcon slot=\"top\" name=\"archive\"></IonIcon>\n Archive\n </IonItemOption>\n </IonItemOptions>\n </IonItemSliding>\n\n {/* Sliding item with icon bottom options on end side */}\n <IonItemSliding>\n <IonItem>\n <IonLabel>\n Sliding Item, Icons Bottom\n </IonLabel>\n </IonItem>\n <IonItemOptions>\n <IonItemOption color=\"primary\">\n <IonIcon slot=\"bottom\" name=\"more\"></IonIcon>\n More\n </IonItemOption>\n <IonItemOption color=\"secondary\">\n <IonIcon slot=\"bottom\" name=\"archive\"></IonIcon>\n Archive\n </IonItemOption>\n </IonItemOptions>\n </IonItemSliding>\n</IonList>\n);\n```\n",
5146 "vue": "```html\n<template>\n <ion-list>\n <!-- Sliding item with text options on both sides -->\n <ion-item-sliding>\n <ion-item-options side=\"start\">\n <ion-item-option @click=\"favorite(item)\">Favorite</ion-item-option>\n <ion-item-option color=\"danger\" @click=\"share(item)\">Share</ion-item-option>\n </ion-item-options>\n\n <ion-item>\n <ion-label>Item Options</ion-label>\n </ion-item>\n\n <ion-item-options side=\"end\">\n <ion-item-option @click=\"unread(item)\">Unread</ion-item-option>\n </ion-item-options>\n </ion-item-sliding>\n\n <!-- Sliding item with expandable options on both sides -->\n <ion-item-sliding>\n <ion-item-options side=\"start\">\n <ion-item-option color=\"danger\" expandable>\n Delete\n </ion-item-option>\n </ion-item-options>\n\n <ion-item>\n <ion-label>Expandable Options</ion-label>\n </ion-item>\n\n <ion-item-options side=\"end\">\n <ion-item-option color=\"tertiary\" expandable>\n Archive\n </ion-item-option>\n </ion-item-options>\n </ion-item-sliding>\n\n <!-- Multi-line sliding item with icon options on both sides -->\n <ion-item-sliding id=\"item100\">\n <ion-item href=\"#\">\n <ion-label>\n <h2>HubStruck Notifications</h2>\n <p>A new message in your network</p>\n <p>Oceanic Next has joined your network</p>\n </ion-label>\n <ion-note slot=\"end\">\n 10:45 AM\n </ion-note>\n </ion-item>\n\n <ion-item-options side=\"start\">\n <ion-item-option>\n <ion-icon slot=\"icon-only\" name=\"heart\"></ion-icon>\n </ion-item-option>\n </ion-item-options>\n\n <ion-item-options side=\"end\">\n <ion-item-option color=\"danger\">\n <ion-icon slot=\"icon-only\" name=\"trash\"></ion-icon>\n </ion-item-option>\n <ion-item-option>\n <ion-icon slot=\"icon-only\" name=\"star\"></ion-icon>\n </ion-item-option>\n </ion-item-options>\n </ion-item-sliding>\n\n <!-- Sliding item with icon start options on end side -->\n <ion-item-sliding>\n <ion-item>\n <ion-label>\n Sliding Item, Icons Start\n </ion-label>\n </ion-item>\n <ion-item-options>\n <ion-item-option color=\"primary\">\n <ion-icon slot=\"start\" name=\"more\"></ion-icon>\n More\n </ion-item-option>\n <ion-item-option color=\"secondary\">\n <ion-icon slot=\"start\" name=\"archive\"></ion-icon>\n Archive\n </ion-item-option>\n </ion-item-options>\n </ion-item-sliding>\n\n <!-- Sliding item with icon end options on end side -->\n <ion-item-sliding>\n <ion-item>\n <ion-label>\n Sliding Item, Icons End\n </ion-label>\n </ion-item>\n <ion-item-options>\n <ion-item-option color=\"primary\">\n <ion-icon slot=\"end\" name=\"more\"></ion-icon>\n More\n </ion-item-option>\n <ion-item-option color=\"secondary\">\n <ion-icon slot=\"end\" name=\"archive\"></ion-icon>\n Archive\n </ion-item-option>\n </ion-item-options>\n </ion-item-sliding>\n\n <!-- Sliding item with icon top options on end side -->\n <ion-item-sliding>\n <ion-item>\n <ion-label>\n Sliding Item, Icons Top\n </ion-label>\n </ion-item>\n <ion-item-options>\n <ion-item-option color=\"primary\">\n <ion-icon slot=\"top\" name=\"more\"></ion-icon>\n More\n </ion-item-option>\n <ion-item-option color=\"secondary\">\n <ion-icon slot=\"top\" name=\"archive\"></ion-icon>\n Archive\n </ion-item-option>\n </ion-item-options>\n </ion-item-sliding>\n\n <!-- Sliding item with icon bottom options on end side -->\n <ion-item-sliding>\n <ion-item>\n <ion-label>\n Sliding Item, Icons Bottom\n </ion-label>\n </ion-item>\n <ion-item-options>\n <ion-item-option color=\"primary\">\n <ion-icon slot=\"bottom\" name=\"more\"></ion-icon>\n More\n </ion-item-option>\n <ion-item-option color=\"secondary\">\n <ion-icon slot=\"bottom\" name=\"archive\"></ion-icon>\n Archive\n </ion-item-option>\n </ion-item-options>\n </ion-item-sliding>\n </ion-list>\n</template>\n```\n"
5147 },
5148 "props": [
5149 {
5150 "name": "disabled",
5151 "type": "boolean",
5152 "mutable": false,
5153 "attr": "disabled",
5154 "reflectToAttr": false,
5155 "docs": "If `true`, the user cannot interact with the sliding item.",
5156 "docsTags": [],
5157 "default": "false",
5158 "optional": false,
5159 "required": false
5160 }
5161 ],
5162 "methods": [
5163 {
5164 "name": "close",
5165 "returns": {
5166 "type": "Promise<void>",
5167 "docs": ""
5168 },
5169 "signature": "close() => Promise<void>",
5170 "parameters": [],
5171 "docs": "Close the sliding item. Items can also be closed from the [List](../../list/List).",
5172 "docsTags": []
5173 },
5174 {
5175 "name": "closeOpened",
5176 "returns": {
5177 "type": "Promise<boolean>",
5178 "docs": ""
5179 },
5180 "signature": "closeOpened() => Promise<boolean>",
5181 "parameters": [],
5182 "docs": "Close all of the sliding items in the list. Items can also be closed from the [List](../../list/List).",
5183 "docsTags": []
5184 },
5185 {
5186 "name": "getOpenAmount",
5187 "returns": {
5188 "type": "Promise<number>",
5189 "docs": ""
5190 },
5191 "signature": "getOpenAmount() => Promise<number>",
5192 "parameters": [],
5193 "docs": "Get the amount the item is open in pixels.",
5194 "docsTags": []
5195 },
5196 {
5197 "name": "getSlidingRatio",
5198 "returns": {
5199 "type": "Promise<number>",
5200 "docs": ""
5201 },
5202 "signature": "getSlidingRatio() => Promise<number>",
5203 "parameters": [],
5204 "docs": "Get the ratio of the open amount of the item compared to the width of the options.\nIf the number returned is positive, then the options on the right side are open.\nIf the number returned is negative, then the options on the left side are open.\nIf the absolute value of the number is greater than 1, the item is open more than\nthe width of the options.",
5205 "docsTags": []
5206 },
5207 {
5208 "name": "open",
5209 "returns": {
5210 "type": "Promise<void>",
5211 "docs": ""
5212 },
5213 "signature": "open(side: \"start\" | \"end\" | undefined) => Promise<void>",
5214 "parameters": [],
5215 "docs": "Open the sliding item.",
5216 "docsTags": [
5217 {
5218 "name": "param",
5219 "text": "side The side of the options to open. If a side is not provided, it will open the first set of options it finds within the item."
5220 }
5221 ]
5222 }
5223 ],
5224 "events": [
5225 {
5226 "event": "ionDrag",
5227 "detail": "any",
5228 "bubbles": true,
5229 "cancelable": true,
5230 "composed": true,
5231 "docs": "Emitted when the sliding position changes.",
5232 "docsTags": []
5233 }
5234 ],
5235 "styles": [],
5236 "slots": []
5237 },
5238 {
5239 "tag": "ion-label",
5240 "filePath": "src/components/label/label.tsx",
5241 "encapsulation": "scoped",
5242 "readme": "# ion-label\n\nLabel is a wrapper element that can be used in combination with `ion-item`, `ion-input`, `ion-toggle`, and more. The position of the label inside of an item can be inline, fixed, stacked, or floating.\n\n",
5243 "docs": "Label is a wrapper element that can be used in combination with `ion-item`, `ion-input`, `ion-toggle`, and more. The position of the label inside of an item can be inline, fixed, stacked, or floating.",
5244 "docsTags": [
5245 {
5246 "text": "{\"ios\" | \"md\"} mode - The mode determines which platform styles to use.",
5247 "name": "virtualProp"
5248 }
5249 ],
5250 "usage": {
5251 "angular": "```html\n<!-- Default Label -->\n<ion-label>Label</ion-label>\n\n<!-- Label Colors -->\n<ion-label color=\"primary\">Primary Label</ion-label>\n<ion-label color=\"secondary\">Secondary Label</ion-label>\n<ion-label color=\"danger\">Danger Label</ion-label>\n<ion-label color=\"light\">Light Label</ion-label>\n<ion-label color=\"dark\">Dark Label</ion-label>\n\n<!-- Item Labels -->\n<ion-item>\n <ion-label>Default Item</ion-label>\n</ion-item>\n\n<ion-item>\n <ion-label class=\"ion-text-wrap\">\n Multi-line text that should wrap when it is too long\n to fit on one line in the item.\n </ion-label>\n</ion-item>\n\n<!-- Input Labels -->\n<ion-item>\n <ion-label>Default Input</ion-label>\n <ion-input></ion-input>\n</ion-item>\n\n<ion-item>\n <ion-label position=\"fixed\">Fixed</ion-label>\n <ion-input></ion-input>\n</ion-item>\n\n<ion-item>\n <ion-label position=\"floating\">Floating</ion-label>\n <ion-input></ion-input>\n</ion-item>\n\n<ion-item>\n <ion-label position=\"stacked\">Stacked</ion-label>\n <ion-input></ion-input>\n</ion-item>\n\n<ion-item>\n <ion-label>Toggle</ion-label>\n <ion-toggle slot=\"end\" checked></ion-toggle>\n</ion-item>\n\n<ion-item>\n <ion-checkbox slot=\"start\" checked></ion-checkbox>\n <ion-label>Checkbox</ion-label>\n</ion-item>\n```\n",
5252 "javascript": "```html\n<!-- Default Label -->\n<ion-label>Label</ion-label>\n\n<!-- Label Colors -->\n<ion-label color=\"primary\">Primary Label</ion-label>\n<ion-label color=\"secondary\">Secondary Label</ion-label>\n<ion-label color=\"danger\">Danger Label</ion-label>\n<ion-label color=\"light\">Light Label</ion-label>\n<ion-label color=\"dark\">Dark Label</ion-label>\n\n<!-- Item Labels -->\n<ion-item>\n <ion-label>Default Item</ion-label>\n</ion-item>\n\n<ion-item>\n <ion-label class=\"ion-text-wrap\">\n Multi-line text that should wrap when it is too long\n to fit on one line in the item.\n </ion-label>\n</ion-item>\n\n<!-- Input Labels -->\n<ion-item>\n <ion-label>Default Input</ion-label>\n <ion-input></ion-input>\n</ion-item>\n\n<ion-item>\n <ion-label position=\"fixed\">Fixed</ion-label>\n <ion-input></ion-input>\n</ion-item>\n\n<ion-item>\n <ion-label position=\"floating\">Floating</ion-label>\n <ion-input></ion-input>\n</ion-item>\n\n<ion-item>\n <ion-label position=\"stacked\">Stacked</ion-label>\n <ion-input></ion-input>\n</ion-item>\n\n<ion-item>\n <ion-label>Toggle</ion-label>\n <ion-toggle slot=\"end\" checked></ion-toggle>\n</ion-item>\n\n<ion-item>\n <ion-checkbox slot=\"start\" checked></ion-checkbox>\n <ion-label>Checkbox</ion-label>\n</ion-item>\n```\n",
5253 "react": "```tsx\nimport React from 'react';\nimport { IonLabel, IonItem, IonInput, IonToggle, IonCheckbox, IonContent } from '@ionic/react';\n\nexport const LabelExample: React.FC = () => (\n <IonContent>\n {/*-- Default Label --*/}\n <IonLabel>Label</IonLabel><br />\n\n {/*-- Label Colors --*/}\n <IonLabel color=\"primary\">Primary Label</IonLabel><br />\n <IonLabel color=\"secondary\">Secondary Label</IonLabel><br />\n <IonLabel color=\"danger\">Danger Label</IonLabel><br />\n <IonLabel color=\"light\">Light Label</IonLabel><br />\n <IonLabel color=\"dark\">Dark Label</IonLabel><br />\n\n {/*-- Item Labels --*/}\n <IonItem>\n <IonLabel>Default Item</IonLabel>\n </IonItem>\n\n <IonItem>\n <IonLabel class=\"ion-text-wrap\">\n Multi-line text that should wrap when it is too long\n to fit on one line in the item.\n </IonLabel>\n </IonItem>\n\n {/*-- Input Labels --*/}\n <IonItem>\n <IonLabel>Default Input</IonLabel>\n <IonInput></IonInput>\n </IonItem>\n\n <IonItem>\n <IonLabel position=\"fixed\">Fixed</IonLabel>\n <IonInput></IonInput>\n </IonItem>\n\n <IonItem>\n <IonLabel position=\"floating\">Floating</IonLabel>\n <IonInput></IonInput>\n </IonItem>\n\n <IonItem>\n <IonLabel position=\"stacked\">Stacked</IonLabel>\n <IonInput></IonInput>\n </IonItem>\n\n <IonItem>\n <IonLabel>Toggle</IonLabel>\n <IonToggle slot=\"end\" checked></IonToggle>\n </IonItem>\n\n <IonItem>\n <IonCheckbox slot=\"start\" checked />\n <IonLabel>Checkbox</IonLabel>\n </IonItem>\n </IonContent>\n);\n```\n",
5254 "vue": "```html\n<template>\n <!-- Default Label -->\n <ion-label>Label</ion-label>\n\n <!-- Label Colors -->\n <ion-label color=\"primary\">Primary Label</ion-label>\n <ion-label color=\"secondary\">Secondary Label</ion-label>\n <ion-label color=\"danger\">Danger Label</ion-label>\n <ion-label color=\"light\">Light Label</ion-label>\n <ion-label color=\"dark\">Dark Label</ion-label>\n\n <!-- Item Labels -->\n <ion-item>\n <ion-label>Default Item</ion-label>\n </ion-item>\n\n <ion-item>\n <ion-label class=\"ion-text-wrap\">\n Multi-line text that should wrap when it is too long\n to fit on one line in the item.\n </ion-label>\n </ion-item>\n\n <!-- Input Labels -->\n <ion-item>\n <ion-label>Default Input</ion-label>\n <ion-input></ion-input>\n </ion-item>\n\n <ion-item>\n <ion-label position=\"fixed\">Fixed</ion-label>\n <ion-input></ion-input>\n </ion-item>\n\n <ion-item>\n <ion-label position=\"floating\">Floating</ion-label>\n <ion-input></ion-input>\n </ion-item>\n\n <ion-item>\n <ion-label position=\"stacked\">Stacked</ion-label>\n <ion-input></ion-input>\n </ion-item>\n\n <ion-item>\n <ion-label>Toggle</ion-label>\n <ion-toggle slot=\"end\" checked></ion-toggle>\n </ion-item>\n\n <ion-item>\n <ion-checkbox slot=\"start\" checked></ion-checkbox>\n <ion-label>Checkbox</ion-label>\n </ion-item>\n</template>\n```\n"
5255 },
5256 "props": [
5257 {
5258 "name": "color",
5259 "type": "string | undefined",
5260 "mutable": false,
5261 "attr": "color",
5262 "reflectToAttr": false,
5263 "docs": "The color to use from your application's color palette.\nDefault options are: `\"primary\"`, `\"secondary\"`, `\"tertiary\"`, `\"success\"`, `\"warning\"`, `\"danger\"`, `\"light\"`, `\"medium\"`, and `\"dark\"`.\nFor more information on colors, see [theming](/docs/theming/basics).",
5264 "docsTags": [],
5265 "optional": true,
5266 "required": false
5267 },
5268 {
5269 "name": "mode",
5270 "type": "\"ios\" | \"md\"",
5271 "mutable": false,
5272 "attr": "mode",
5273 "reflectToAttr": false,
5274 "docs": "The mode determines which platform styles to use.",
5275 "docsTags": [],
5276 "optional": true,
5277 "required": false
5278 },
5279 {
5280 "name": "position",
5281 "type": "\"fixed\" | \"floating\" | \"stacked\" | undefined",
5282 "mutable": false,
5283 "attr": "position",
5284 "reflectToAttr": false,
5285 "docs": "The position determines where and how the label behaves inside an item.",
5286 "docsTags": [],
5287 "optional": true,
5288 "required": false
5289 }
5290 ],
5291 "methods": [],
5292 "events": [],
5293 "styles": [
5294 {
5295 "name": "--color",
5296 "annotation": "prop",
5297 "docs": "Color of the label"
5298 }
5299 ],
5300 "slots": []
5301 },
5302 {
5303 "tag": "ion-list",
5304 "filePath": "src/components/list/list.tsx",
5305 "encapsulation": "none",
5306 "readme": "# ion-list\n\nLists are made up of multiple rows of items which can contain text, buttons, toggles,\nicons, thumbnails, and much more. Lists generally contain items with similar data content, such as images and text.\n\nLists support several interactions including swiping items to reveal options, dragging to reorder items within the list, and deleting items.\n\n",
5307 "docs": "Lists are made up of multiple rows of items which can contain text, buttons, toggles,\nicons, thumbnails, and much more. Lists generally contain items with similar data content, such as images and text.\n\nLists support several interactions including swiping items to reveal options, dragging to reorder items within the list, and deleting items.",
5308 "docsTags": [
5309 {
5310 "text": "{\"ios\" | \"md\"} mode - The mode determines which platform styles to use.",
5311 "name": "virtualProp"
5312 }
5313 ],
5314 "usage": {
5315 "angular": "```html\n<!-- List of Text Items -->\n<ion-list>\n <ion-item>\n <ion-label>Pokémon Yellow</ion-label>\n </ion-item>\n <ion-item>\n <ion-label>Mega Man X</ion-label>\n </ion-item>\n <ion-item>\n <ion-label>The Legend of Zelda</ion-label>\n </ion-item>\n <ion-item>\n <ion-label>Pac-Man</ion-label>\n </ion-item>\n <ion-item>\n <ion-label>Super Mario World</ion-label>\n </ion-item>\n</ion-list>\n\n<!-- List of Input Items -->\n<ion-list>\n <ion-item>\n <ion-label>Input</ion-label>\n <ion-input></ion-input>\n </ion-item>\n <ion-item>\n <ion-label>Toggle</ion-label>\n <ion-toggle slot=\"end\"></ion-toggle>\n </ion-item>\n <ion-item>\n <ion-label>Radio</ion-label>\n <ion-radio slot=\"end\"></ion-radio>\n </ion-item>\n <ion-item>\n <ion-label>Checkbox</ion-label>\n <ion-checkbox slot=\"start\"></ion-checkbox>\n </ion-item>\n</ion-list>\n\n<!-- List of Sliding Items -->\n<ion-list>\n <ion-item-sliding>\n <ion-item>\n <ion-label>Item</ion-label>\n </ion-item>\n <ion-item-options side=\"end\">\n <ion-item-option (click)=\"unread(item)\">Unread</ion-item-option>\n </ion-item-options>\n </ion-item-sliding>\n\n <ion-item-sliding>\n <ion-item>\n <ion-label>Item</ion-label>\n </ion-item>\n <ion-item-options side=\"end\">\n <ion-item-option (click)=\"unread(item)\">Unread</ion-item-option>\n </ion-item-options>\n </ion-item-sliding>\n</ion-list>\n```",
5316 "javascript": "```html\n<!-- List of Text Items -->\n<ion-list>\n <ion-item>\n <ion-label>Pokémon Yellow</ion-label>\n </ion-item>\n <ion-item>\n <ion-label>Mega Man X</ion-label>\n </ion-item>\n <ion-item>\n <ion-label>The Legend of Zelda</ion-label>\n </ion-item>\n <ion-item>\n <ion-label>Pac-Man</ion-label>\n </ion-item>\n <ion-item>\n <ion-label>Super Mario World</ion-label>\n </ion-item>\n</ion-list>\n\n<!-- List of Input Items -->\n<ion-list>\n <ion-item>\n <ion-label>Input</ion-label>\n <ion-input></ion-input>\n </ion-item>\n <ion-item>\n <ion-label>Toggle</ion-label>\n <ion-toggle slot=\"end\"></ion-toggle>\n </ion-item>\n <ion-item>\n <ion-label>Radio</ion-label>\n <ion-radio slot=\"end\"></ion-radio>\n </ion-item>\n <ion-item>\n <ion-label>Checkbox</ion-label>\n <ion-checkbox slot=\"start\"></ion-checkbox>\n </ion-item>\n</ion-list>\n\n<!-- List of Sliding Items -->\n<ion-list>\n <ion-item-sliding>\n <ion-item>\n <ion-label>Item</ion-label>\n </ion-item>\n <ion-item-options side=\"end\">\n <ion-item-option onClick=\"unread(item)\">Unread</ion-item-option>\n </ion-item-options>\n </ion-item-sliding>\n\n <ion-item-sliding>\n <ion-item>\n <ion-label>Item</ion-label>\n </ion-item>\n <ion-item-options side=\"end\">\n <ion-item-option onClick=\"unread(item)\">Unread</ion-item-option>\n </ion-item-options>\n </ion-item-sliding>\n</ion-list>\n```",
5317 "react": "```tsx\nimport React from 'react';\nimport { IonList, IonItem, IonLabel, IonInput, IonToggle, IonRadio, IonCheckbox, IonItemSliding, IonItemOption, IonItemOptions, IonContent } from '@ionic/react';\n\nexport const ListExample: React.FC = () => (\n <IonContent>\n {/*-- List of Text Items --*/}\n <IonList>\n <IonItem>\n <IonLabel>Pokémon Yellow</IonLabel>\n </IonItem>\n <IonItem>\n <IonLabel>Mega Man X</IonLabel>\n </IonItem>\n <IonItem>\n <IonLabel>The Legend of Zelda</IonLabel>\n </IonItem>\n <IonItem>\n <IonLabel>Pac-Man</IonLabel>\n </IonItem>\n <IonItem>\n <IonLabel>Super Mario World</IonLabel>\n </IonItem>\n </IonList>\n\n {/*-- List of Input Items --*/}\n <IonList>\n <IonItem>\n <IonLabel>Input</IonLabel>\n <IonInput></IonInput>\n </IonItem>\n <IonItem>\n <IonLabel>Toggle</IonLabel>\n <IonToggle slot=\"end\"></IonToggle>\n </IonItem>\n <IonItem>\n <IonLabel>Radio</IonLabel>\n <IonRadio slot=\"end\"></IonRadio>\n </IonItem>\n <IonItem>\n <IonLabel>Checkbox</IonLabel>\n <IonCheckbox slot=\"start\" />\n </IonItem>\n </IonList>\n\n {/*-- List of Sliding Items --*/}\n <IonList>\n <IonItemSliding>\n <IonItem>\n <IonLabel>Item</IonLabel>\n </IonItem>\n <IonItemOptions side=\"end\">\n <IonItemOption onClick={() => {}}>Unread</IonItemOption>\n </IonItemOptions>\n </IonItemSliding>\n\n <IonItemSliding>\n <IonItem>\n <IonLabel>Item</IonLabel>\n </IonItem>\n <IonItemOptions side=\"end\">\n <IonItemOption onClick={() => {}}>Unread</IonItemOption>\n </IonItemOptions>\n </IonItemSliding>\n </IonList>\n </IonContent>\n);\n```\n",
5318 "vue": "```html\n<template>\n <!-- List of Text Items -->\n <ion-list>\n <ion-item>\n <ion-label>Pokémon Yellow</ion-label>\n </ion-item>\n <ion-item>\n <ion-label>Mega Man X</ion-label>\n </ion-item>\n <ion-item>\n <ion-label>The Legend of Zelda</ion-label>\n </ion-item>\n <ion-item>\n <ion-label>Pac-Man</ion-label>\n </ion-item>\n <ion-item>\n <ion-label>Super Mario World</ion-label>\n </ion-item>\n </ion-list>\n\n <!-- List of Input Items -->\n <ion-list>\n <ion-item>\n <ion-label>Input</ion-label>\n <ion-input></ion-input>\n </ion-item>\n <ion-item>\n <ion-label>Toggle</ion-label>\n <ion-toggle slot=\"end\"></ion-toggle>\n </ion-item>\n <ion-item>\n <ion-label>Radio</ion-label>\n <ion-radio slot=\"end\"></ion-radio>\n </ion-item>\n <ion-item>\n <ion-label>Checkbox</ion-label>\n <ion-checkbox slot=\"start\"></ion-checkbox>\n </ion-item>\n </ion-list>\n\n <!-- List of Sliding Items -->\n <ion-list>\n <ion-item-sliding>\n <ion-item>\n <ion-label>Item</ion-label>\n </ion-item>\n <ion-item-options side=\"end\">\n <ion-item-option @click=\"unread(item)\">Unread</ion-item-option>\n </ion-item-options>\n </ion-item-sliding>\n\n <ion-item-sliding>\n <ion-item>\n <ion-label>Item</ion-label>\n </ion-item>\n <ion-item-options side=\"end\">\n <ion-item-option @click=\"unread(item)\">Unread</ion-item-option>\n </ion-item-options>\n </ion-item-sliding>\n </ion-list>\n</template>\n```"
5319 },
5320 "props": [
5321 {
5322 "name": "inset",
5323 "type": "boolean",
5324 "mutable": false,
5325 "attr": "inset",
5326 "reflectToAttr": false,
5327 "docs": "If `true`, the list will have margin around it and rounded corners.",
5328 "docsTags": [],
5329 "default": "false",
5330 "optional": false,
5331 "required": false
5332 },
5333 {
5334 "name": "lines",
5335 "type": "\"full\" | \"inset\" | \"none\" | undefined",
5336 "mutable": false,
5337 "attr": "lines",
5338 "reflectToAttr": false,
5339 "docs": "How the bottom border should be displayed on all items.",
5340 "docsTags": [],
5341 "optional": true,
5342 "required": false
5343 },
5344 {
5345 "name": "mode",
5346 "type": "\"ios\" | \"md\"",
5347 "mutable": false,
5348 "attr": "mode",
5349 "reflectToAttr": false,
5350 "docs": "The mode determines which platform styles to use.",
5351 "docsTags": [],
5352 "optional": true,
5353 "required": false
5354 }
5355 ],
5356 "methods": [
5357 {
5358 "name": "closeSlidingItems",
5359 "returns": {
5360 "type": "Promise<boolean>",
5361 "docs": ""
5362 },
5363 "signature": "closeSlidingItems() => Promise<boolean>",
5364 "parameters": [],
5365 "docs": "If `ion-item-sliding` are used inside the list, this method closes\nany open sliding item.\n\nReturns `true` if an actual `ion-item-sliding` is closed.",
5366 "docsTags": []
5367 }
5368 ],
5369 "events": [],
5370 "styles": [],
5371 "slots": []
5372 },
5373 {
5374 "tag": "ion-list-header",
5375 "filePath": "src/components/list-header/list-header.tsx",
5376 "encapsulation": "shadow",
5377 "readme": "# ion-list-header\n\nListHeader a header component for a list.\nUnlike ItemDivider, ListHeaders are styled to be stand-out from the rest of the list items.\n\n",
5378 "docs": "ListHeader a header component for a list.\nUnlike ItemDivider, ListHeaders are styled to be stand-out from the rest of the list items.",
5379 "docsTags": [
5380 {
5381 "text": "{\"ios\" | \"md\"} mode - The mode determines which platform styles to use.",
5382 "name": "virtualProp"
5383 }
5384 ],
5385 "usage": {
5386 "javascript": "```html\n<ion-list>\n <ion-list-header>\n <ion-label>Items</ion-label>\n </ion-list-header>\n <ion-item>Item 1</ion-item>\n <ion-item>Item 2</ion-item>\n <ion-item>Item 3</ion-item>\n <ion-item>Item 4</ion-item>\n <ion-item>Item 5</ion-item>\n</ion-list>\n```\n",
5387 "react": "```tsx\nimport React from 'react';\nimport { IonList, IonItem, IonLabel, IonContent, IonListHeader } from '@ionic/react';\n\nexport const ListHeaderExample: React.FC = () => (\n <IonContent>\n <IonList>\n <IonListHeader>\n <IonLabel>Items</IonLabel>\n </IonListHeader>\n <IonItem>Item 1</IonItem>\n <IonItem>Item 2</IonItem>\n <IonItem>Item 3</IonItem>\n <IonItem>Item 4</IonItem>\n <IonItem>Item 5</IonItem>\n </IonList>\n </IonContent>\n);\n```"
5388 },
5389 "props": [
5390 {
5391 "name": "color",
5392 "type": "string | undefined",
5393 "mutable": false,
5394 "attr": "color",
5395 "reflectToAttr": false,
5396 "docs": "The color to use from your application's color palette.\nDefault options are: `\"primary\"`, `\"secondary\"`, `\"tertiary\"`, `\"success\"`, `\"warning\"`, `\"danger\"`, `\"light\"`, `\"medium\"`, and `\"dark\"`.\nFor more information on colors, see [theming](/docs/theming/basics).",
5397 "docsTags": [],
5398 "optional": true,
5399 "required": false
5400 },
5401 {
5402 "name": "mode",
5403 "type": "\"ios\" | \"md\"",
5404 "mutable": false,
5405 "attr": "mode",
5406 "reflectToAttr": false,
5407 "docs": "The mode determines which platform styles to use.",
5408 "docsTags": [],
5409 "optional": true,
5410 "required": false
5411 }
5412 ],
5413 "methods": [],
5414 "events": [],
5415 "styles": [
5416 {
5417 "name": "--background",
5418 "annotation": "prop",
5419 "docs": "Background of the list header"
5420 },
5421 {
5422 "name": "--color",
5423 "annotation": "prop",
5424 "docs": "Color of the list header text"
5425 }
5426 ],
5427 "slots": []
5428 },
5429 {
5430 "tag": "ion-loading",
5431 "filePath": "src/components/loading/loading.tsx",
5432 "encapsulation": "scoped",
5433 "readme": "# ion-loading\n\nAn overlay that can be used to indicate activity while blocking user interaction. The loading indicator appears on top of the app's content, and can be dismissed by the app to resume user interaction with the app. It includes an optional backdrop, which can be disabled by setting `showBackdrop: false` upon creation.\n\n\n### Creating\n\nLoading indicators can be created using a [Loading Controller](../loading-controller). They can be customized by passing loading options in the loading controller's `create()` method. The spinner name should be passed in the `spinner` property. If a value is not passed to `spinner` the loading indicator will use the spinner specified by the platform.\n\n\n### Dismissing\n\nThe loading indicator can be dismissed automatically after a specific amount of time by passing the number of milliseconds to display it in the `duration` of the loading options. To dismiss the loading indicator after creation, call the `dismiss()` method on the loading instance. The `onDidDismiss` function can be called to perform an action after the loading indicator is dismissed.\n\n",
5434 "docs": "An overlay that can be used to indicate activity while blocking user interaction. The loading indicator appears on top of the app's content, and can be dismissed by the app to resume user interaction with the app. It includes an optional backdrop, which can be disabled by setting `showBackdrop: false` upon creation.",
5435 "docsTags": [
5436 {
5437 "text": "{\"ios\" | \"md\"} mode - The mode determines which platform styles to use.",
5438 "name": "virtualProp"
5439 }
5440 ],
5441 "usage": {
5442 "angular": "```typescript\nimport { Component } from '@angular/core';\nimport { LoadingController } from '@ionic/angular';\n\n@Component({\n selector: 'loading-example',\n templateUrl: 'loading-example.html',\n styleUrls: ['./loading-example.css']\n})\nexport class LoadingExample {\n constructor(public loadingController: LoadingController) {}\n\n async presentLoading() {\n const loading = await this.loadingController.create({\n message: 'Hellooo',\n duration: 2000\n });\n await loading.present();\n \n const { role, data } = await loading.onDidDismiss();\n \n console.log('Loading dismissed!');\n }\n\n async presentLoadingWithOptions() {\n const loading = await this.loadingController.create({\n spinner: null,\n duration: 5000,\n message: 'Please wait...',\n translucent: true,\n cssClass: 'custom-class custom-loading'\n });\n return await loading.present();\n }\n}\n```\n",
5443 "javascript": "```javascript\nasync function presentLoading() {\n const loading = document.createElement('ion-loading');\n loading.message: 'Hellooo',\n loading.duration: 2000;\n\n document.body.appendChild(loading);\n await loading.present();\n\n const { role, data } = await loading.onDidDismiss();\n\n console.log('Loading dismissed!');\n}\n\nfunction presentLoadingWithOptions() {\n const loading = document.createElement('ion-loading');\n loading.spinner = null;\n loading.duration = 5000;\n loading.message = 'Please wait...';\n loading.translucent = true;\n loading.cssClass = 'custom-class custom-loading';\n\n document.body.appendChild(loading);\n return loading.present();\n}\n```\n",
5444 "react": "```tsx\nimport React, { useState } from 'react';\nimport { IonLoading, IonButton, IonContent } from '@ionic/react';\n\nexport const LoadingExample: React.FC = () => {\n const [showLoading, setShowLoading] = useState(true);\n\n setTimeout(() => {\n setShowLoading(false);\n }, 2000);\n\n return (\n <IonContent>\n <IonButton onClick={() => setShowLoading(true)}>Show Loading</IonButton>\n <IonLoading\n isOpen={showLoading}\n onDidDismiss={() => setShowLoading(false)}\n message={'Loading...'}\n duration={5000}\n />\n </IonContent>\n );\n};\n```\n",
5445 "vue": "```html\n<template>\n <IonVuePage :title=\"'Loading'\">\n <ion-button @click=\"presentLoading\">Show Loading</ion-button>\n <br />\n <ion-button @click=\"presentLoadingWithOptions\">Show Loading</ion-button>\n </IonVuePage>\n</template>\n\n<script>\nexport default {\n props: {\n timeout: { type: Number, default: 1000 },\n },\n methods: {\n presentLoading() {\n return this.$ionic.loadingController\n .create({\n message: 'Loading',\n duration: this.timeout,\n })\n .then(l => {\n setTimeout(function() {\n l.dismiss()\n }, this.timeout)\n return l.present()\n })\n },\n presentLoadingWithOptions() {\n return this.$ionic.loadingController\n .create({\n spinner: null,\n duration: this.timeout,\n message: 'Please wait...',\n translucent: true,\n cssClass: 'custom-class custom-loading',\n })\n .then(l => {\n setTimeout(function() {\n l.dismiss()\n }, this.timeout)\n return l.present()\n })\n },\n },\n}\n</script>\n```\n"
5446 },
5447 "props": [
5448 {
5449 "name": "animated",
5450 "type": "boolean",
5451 "mutable": false,
5452 "attr": "animated",
5453 "reflectToAttr": false,
5454 "docs": "If `true`, the loading indicator will animate.",
5455 "docsTags": [],
5456 "default": "true",
5457 "optional": false,
5458 "required": false
5459 },
5460 {
5461 "name": "backdropDismiss",
5462 "type": "boolean",
5463 "mutable": false,
5464 "attr": "backdrop-dismiss",
5465 "reflectToAttr": false,
5466 "docs": "If `true`, the loading indicator will be dismissed when the backdrop is clicked.",
5467 "docsTags": [],
5468 "default": "false",
5469 "optional": false,
5470 "required": false
5471 },
5472 {
5473 "name": "cssClass",
5474 "type": "string | string[] | undefined",
5475 "mutable": false,
5476 "attr": "css-class",
5477 "reflectToAttr": false,
5478 "docs": "Additional classes to apply for custom CSS. If multiple classes are\nprovided they should be separated by spaces.",
5479 "docsTags": [],
5480 "optional": true,
5481 "required": false
5482 },
5483 {
5484 "name": "duration",
5485 "type": "number",
5486 "mutable": false,
5487 "attr": "duration",
5488 "reflectToAttr": false,
5489 "docs": "Number of milliseconds to wait before dismissing the loading indicator.",
5490 "docsTags": [],
5491 "default": "0",
5492 "optional": false,
5493 "required": false
5494 },
5495 {
5496 "name": "enterAnimation",
5497 "type": "((Animation: Animation, baseEl: any, opts?: any) => Promise<Animation>) | undefined",
5498 "mutable": false,
5499 "reflectToAttr": false,
5500 "docs": "Animation to use when the loading indicator is presented.",
5501 "docsTags": [],
5502 "optional": true,
5503 "required": false
5504 },
5505 {
5506 "name": "keyboardClose",
5507 "type": "boolean",
5508 "mutable": false,
5509 "attr": "keyboard-close",
5510 "reflectToAttr": false,
5511 "docs": "If `true`, the keyboard will be automatically dismissed when the overlay is presented.",
5512 "docsTags": [],
5513 "default": "true",
5514 "optional": false,
5515 "required": false
5516 },
5517 {
5518 "name": "leaveAnimation",
5519 "type": "((Animation: Animation, baseEl: any, opts?: any) => Promise<Animation>) | undefined",
5520 "mutable": false,
5521 "reflectToAttr": false,
5522 "docs": "Animation to use when the loading indicator is dismissed.",
5523 "docsTags": [],
5524 "optional": true,
5525 "required": false
5526 },
5527 {
5528 "name": "message",
5529 "type": "string | undefined",
5530 "mutable": false,
5531 "attr": "message",
5532 "reflectToAttr": false,
5533 "docs": "Optional text content to display in the loading indicator.",
5534 "docsTags": [],
5535 "optional": true,
5536 "required": false
5537 },
5538 {
5539 "name": "mode",
5540 "type": "\"ios\" | \"md\"",
5541 "mutable": false,
5542 "attr": "mode",
5543 "reflectToAttr": false,
5544 "docs": "The mode determines which platform styles to use.",
5545 "docsTags": [],
5546 "optional": true,
5547 "required": false
5548 },
5549 {
5550 "name": "showBackdrop",
5551 "type": "boolean",
5552 "mutable": false,
5553 "attr": "show-backdrop",
5554 "reflectToAttr": false,
5555 "docs": "If `true`, a backdrop will be displayed behind the loading indicator.",
5556 "docsTags": [],
5557 "default": "true",
5558 "optional": false,
5559 "required": false
5560 },
5561 {
5562 "name": "spinner",
5563 "type": "\"bubbles\" | \"circles\" | \"circular\" | \"crescent\" | \"dots\" | \"lines\" | \"lines-small\" | null | undefined",
5564 "mutable": true,
5565 "attr": "spinner",
5566 "reflectToAttr": false,
5567 "docs": "The name of the spinner to display.",
5568 "docsTags": [],
5569 "optional": true,
5570 "required": false
5571 },
5572 {
5573 "name": "translucent",
5574 "type": "boolean",
5575 "mutable": false,
5576 "attr": "translucent",
5577 "reflectToAttr": false,
5578 "docs": "If `true`, the loading indicator will be translucent.\nOnly applies when the mode is `\"ios\"` and the device supports\n[`backdrop-filter`](https://developer.mozilla.org/en-US/docs/Web/CSS/backdrop-filter#Browser_compatibility).",
5579 "docsTags": [],
5580 "default": "false",
5581 "optional": false,
5582 "required": false
5583 }
5584 ],
5585 "methods": [
5586 {
5587 "name": "dismiss",
5588 "returns": {
5589 "type": "Promise<boolean>",
5590 "docs": ""
5591 },
5592 "signature": "dismiss(data?: any, role?: string | undefined) => Promise<boolean>",
5593 "parameters": [],
5594 "docs": "Dismiss the loading overlay after it has been presented.",
5595 "docsTags": [
5596 {
5597 "name": "param",
5598 "text": "data Any data to emit in the dismiss events."
5599 },
5600 {
5601 "name": "param",
5602 "text": "role The role of the element that is dismissing the loading.\nThis can be useful in a button handler for determining which button was\nclicked to dismiss the loading.\nSome examples include: ``\"cancel\"`, `\"destructive\"`, \"selected\"`, and `\"backdrop\"`."
5603 }
5604 ]
5605 },
5606 {
5607 "name": "onDidDismiss",
5608 "returns": {
5609 "type": "Promise<OverlayEventDetail<any>>",
5610 "docs": ""
5611 },
5612 "signature": "onDidDismiss() => Promise<OverlayEventDetail<any>>",
5613 "parameters": [],
5614 "docs": "Returns a promise that resolves when the loading did dismiss.",
5615 "docsTags": []
5616 },
5617 {
5618 "name": "onWillDismiss",
5619 "returns": {
5620 "type": "Promise<OverlayEventDetail<any>>",
5621 "docs": ""
5622 },
5623 "signature": "onWillDismiss() => Promise<OverlayEventDetail<any>>",
5624 "parameters": [],
5625 "docs": "Returns a promise that resolves when the loading will dismiss.",
5626 "docsTags": []
5627 },
5628 {
5629 "name": "present",
5630 "returns": {
5631 "type": "Promise<void>",
5632 "docs": ""
5633 },
5634 "signature": "present() => Promise<void>",
5635 "parameters": [],
5636 "docs": "Present the loading overlay after it has been created.",
5637 "docsTags": []
5638 }
5639 ],
5640 "events": [
5641 {
5642 "event": "ionLoadingDidDismiss",
5643 "detail": "OverlayEventDetail<any>",
5644 "bubbles": true,
5645 "cancelable": true,
5646 "composed": true,
5647 "docs": "Emitted after the loading has dismissed.",
5648 "docsTags": []
5649 },
5650 {
5651 "event": "ionLoadingDidPresent",
5652 "detail": "void",
5653 "bubbles": true,
5654 "cancelable": true,
5655 "composed": true,
5656 "docs": "Emitted after the loading has presented.",
5657 "docsTags": []
5658 },
5659 {
5660 "event": "ionLoadingWillDismiss",
5661 "detail": "OverlayEventDetail<any>",
5662 "bubbles": true,
5663 "cancelable": true,
5664 "composed": true,
5665 "docs": "Emitted before the loading has dismissed.",
5666 "docsTags": []
5667 },
5668 {
5669 "event": "ionLoadingWillPresent",
5670 "detail": "void",
5671 "bubbles": true,
5672 "cancelable": true,
5673 "composed": true,
5674 "docs": "Emitted before the loading has presented.",
5675 "docsTags": []
5676 }
5677 ],
5678 "styles": [
5679 {
5680 "name": "--background",
5681 "annotation": "prop",
5682 "docs": "Background of the loading dialog"
5683 },
5684 {
5685 "name": "--height",
5686 "annotation": "prop",
5687 "docs": "Height of the loading dialog"
5688 },
5689 {
5690 "name": "--max-height",
5691 "annotation": "prop",
5692 "docs": "Maximum height of the loading dialog"
5693 },
5694 {
5695 "name": "--max-width",
5696 "annotation": "prop",
5697 "docs": "Maximum width of the loading dialog"
5698 },
5699 {
5700 "name": "--min-height",
5701 "annotation": "prop",
5702 "docs": "Minimum height of the loading dialog"
5703 },
5704 {
5705 "name": "--min-width",
5706 "annotation": "prop",
5707 "docs": "Minimum width of the loading dialog"
5708 },
5709 {
5710 "name": "--spinner-color",
5711 "annotation": "prop",
5712 "docs": "Color of the loading spinner"
5713 },
5714 {
5715 "name": "--width",
5716 "annotation": "prop",
5717 "docs": "Width of the loading dialog"
5718 }
5719 ],
5720 "slots": []
5721 },
5722 {
5723 "tag": "ion-loading-controller",
5724 "filePath": "src/components/loading-controller/loading-controller.tsx",
5725 "encapsulation": "none",
5726 "readme": "# ion-loading-controller\n\nLoading controllers programmatically control the loading component. Loadings can be created and dismissed from the loading controller. View the [Loading](../loading) documentation for a full list of options to pass upon creation.\n\n\n\n",
5727 "deprecation": "Use the `loadingController` exported from core.",
5728 "docs": "Loading controllers programmatically control the loading component. Loadings can be created and dismissed from the loading controller. View the [Loading](../loading) documentation for a full list of options to pass upon creation.",
5729 "docsTags": [
5730 {
5731 "text": "Use the `loadingController` exported from core.",
5732 "name": "deprecated"
5733 }
5734 ],
5735 "usage": {},
5736 "props": [],
5737 "methods": [
5738 {
5739 "name": "create",
5740 "returns": {
5741 "type": "Promise<HTMLIonLoadingElement>",
5742 "docs": ""
5743 },
5744 "signature": "create(options?: LoadingOptions | undefined) => Promise<HTMLIonLoadingElement>",
5745 "parameters": [],
5746 "docs": "Create a loading overlay with loading options.",
5747 "docsTags": [
5748 {
5749 "name": "param",
5750 "text": "options The options to use to create the loading."
5751 }
5752 ]
5753 },
5754 {
5755 "name": "dismiss",
5756 "returns": {
5757 "type": "Promise<boolean>",
5758 "docs": ""
5759 },
5760 "signature": "dismiss(data?: any, role?: string | undefined, id?: string | undefined) => Promise<boolean>",
5761 "parameters": [],
5762 "docs": "Dismiss the open loading overlay.",
5763 "docsTags": [
5764 {
5765 "name": "param",
5766 "text": "data Any data to emit in the dismiss events."
5767 },
5768 {
5769 "name": "param",
5770 "text": "role The role of the element that is dismissing the loading.\nThis can be useful in a button handler for determining which button was\nclicked to dismiss the loading.\nSome examples include: ``\"cancel\"`, `\"destructive\"`, \"selected\"`, and `\"backdrop\"`."
5771 },
5772 {
5773 "name": "param",
5774 "text": "id The id of the loading to dismiss. If an id is not provided, it will dismiss the most recently opened loading."
5775 }
5776 ]
5777 },
5778 {
5779 "name": "getTop",
5780 "returns": {
5781 "type": "Promise<HTMLIonLoadingElement | undefined>",
5782 "docs": ""
5783 },
5784 "signature": "getTop() => Promise<HTMLIonLoadingElement | undefined>",
5785 "parameters": [],
5786 "docs": "Get the most recently opened loading overlay.",
5787 "docsTags": []
5788 }
5789 ],
5790 "events": [],
5791 "styles": [],
5792 "slots": []
5793 },
5794 {
5795 "tag": "ion-menu",
5796 "filePath": "src/components/menu/menu.tsx",
5797 "encapsulation": "shadow",
5798 "readme": "# ion-menu\n\nThe Menu component is a navigation drawer that slides in from the side of the current view.\nBy default, it slides in from the left, but the side can be overridden.\nThe menu will be displayed differently based on the mode, however the display type can be changed to any of the available menu types.\nThe menu element should be a sibling to the root content element.\nThere can be any number of menus attached to the content.\nThese can be controlled from the templates, or programmatically using the MenuController.\n\n",
5799 "docs": "The Menu component is a navigation drawer that slides in from the side of the current view.\nBy default, it slides in from the left, but the side can be overridden.\nThe menu will be displayed differently based on the mode, however the display type can be changed to any of the available menu types.\nThe menu element should be a sibling to the root content element.\nThere can be any number of menus attached to the content.\nThese can be controlled from the templates, or programmatically using the MenuController.",
5800 "docsTags": [],
5801 "usage": {
5802 "angular": "```html\n<ion-menu side=\"start\" menuId=\"first\">\n <ion-header>\n <ion-toolbar color=\"primary\">\n <ion-title>Start Menu</ion-title>\n </ion-toolbar>\n </ion-header>\n <ion-content>\n <ion-list>\n <ion-item>Menu Item</ion-item>\n <ion-item>Menu Item</ion-item>\n <ion-item>Menu Item</ion-item>\n <ion-item>Menu Item</ion-item>\n <ion-item>Menu Item</ion-item>\n </ion-list>\n </ion-content>\n</ion-menu>\n\n<ion-menu side=\"start\" menuId=\"custom\" class=\"my-custom-menu\">\n <ion-header>\n <ion-toolbar color=\"tertiary\">\n <ion-title>Custom Menu</ion-title>\n </ion-toolbar>\n </ion-header>\n <ion-content>\n <ion-list>\n <ion-item>Menu Item</ion-item>\n <ion-item>Menu Item</ion-item>\n <ion-item>Menu Item</ion-item>\n <ion-item>Menu Item</ion-item>\n <ion-item>Menu Item</ion-item>\n </ion-list>\n </ion-content>\n</ion-menu>\n\n<ion-menu side=\"end\" type=\"push\">\n <ion-header>\n <ion-toolbar color=\"danger\">\n <ion-title>End Menu</ion-title>\n </ion-toolbar>\n </ion-header>\n <ion-content>\n <ion-list>\n <ion-item>Menu Item</ion-item>\n <ion-item>Menu Item</ion-item>\n <ion-item>Menu Item</ion-item>\n <ion-item>Menu Item</ion-item>\n <ion-item>Menu Item</ion-item>\n </ion-list>\n </ion-content>\n</ion-menu>\n\n<ion-router-outlet main></ion-router-outlet>\n```\n\n```typescript\nimport { Component } from '@angular/core';\nimport { MenuController } from '@ionic/angular';\n\n@Component({\n selector: 'menu-example',\n templateUrl: 'menu-example.html',\n styleUrls: ['./menu-example.css'],\n})\nexport class MenuExample {\n\nconstructor(private menu: MenuController) { }\n\n openFirst() {\n this.menu.enable(true, 'first');\n this.menu.open('first');\n }\n\n openEnd() {\n this.menu.open('end');\n }\n\n openCustom() {\n this.menu.enable(true, 'custom');\n this.menu.open('custom');\n }\n}\n```\n\n```css\n.my-custom-menu {\n --width: 500px;\n}\n```",
5803 "javascript": "```html\n<ion-app>\n <ion-menu side=\"start\" menu-id=\"first\">\n <ion-header>\n <ion-toolbar color=\"primary\">\n <ion-title>Start Menu</ion-title>\n </ion-toolbar>\n </ion-header>\n <ion-content>\n <ion-list>\n <ion-item>Menu Item</ion-item>\n <ion-item>Menu Item</ion-item>\n <ion-item>Menu Item</ion-item>\n <ion-item>Menu Item</ion-item>\n <ion-item>Menu Item</ion-item>\n </ion-list>\n </ion-content>\n </ion-menu>\n\n <ion-menu side=\"start\" menu-id=\"custom\" class=\"my-custom-menu\">\n <ion-header>\n <ion-toolbar color=\"tertiary\">\n <ion-title>Custom Menu</ion-title>\n </ion-toolbar>\n </ion-header>\n <ion-content>\n <ion-list>\n <ion-item>Menu Item</ion-item>\n <ion-item>Menu Item</ion-item>\n <ion-item>Menu Item</ion-item>\n <ion-item>Menu Item</ion-item>\n <ion-item>Menu Item</ion-item>\n </ion-list>\n </ion-content>\n </ion-menu>\n\n <ion-menu side=\"end\" type=\"push\">\n <ion-header>\n <ion-toolbar color=\"danger\">\n <ion-title>End Menu</ion-title>\n </ion-toolbar>\n </ion-header>\n <ion-content>\n <ion-list>\n <ion-item>Menu Item</ion-item>\n <ion-item>Menu Item</ion-item>\n <ion-item>Menu Item</ion-item>\n <ion-item>Menu Item</ion-item>\n <ion-item>Menu Item</ion-item>\n </ion-list>\n </ion-content>\n </ion-menu>\n\n <div class=\"ion-page\" main>\n <ion-header>\n <ion-toolbar>\n <ion-title>Menu - Basic</ion-title>\n </ion-toolbar>\n </ion-header>\n <ion-content class=\"ion-padding\">\n <ion-button expand=\"block\" onclick=\"openFirst()\">Open Start Menu</ion-button>\n <ion-button expand=\"block\" onclick=\"openEnd()\">Open End Menu</ion-button>\n <ion-button expand=\"block\" onclick=\"openCustom()\">Open Custom Menu</ion-button>\n </ion-content>\n </div>\n\n</ion-app>\n<ion-menu-controller></ion-menu-controller>\n```\n\n```javascript\nconst menuCtrl = document.querySelector('ion-menu-controller');\n\nfunction openFirst() {\n menuCtrl.enable(true, 'first');\n menuCtrl.open('first');\n}\n\nfunction openEnd() {\n menuCtrl.open('end');\n}\n\nfunction openCustom() {\n menuCtrl.enable(true, 'custom');\n menuCtrl.open('custom');\n}\n```\n\n```css\n.my-custom-menu {\n --width: 500px;\n}\n```",
5804 "react": "```tsx\nimport React from 'react';\nimport { IonMenu, IonHeader, IonToolbar, IonTitle, IonContent, IonList, IonItem, IonRouterOutlet } from '@ionic/react';\n\nexport const MenuExample: React.FC = () => (\n <>\n <IonMenu side=\"start\" menuId=\"first\">\n <IonHeader>\n <IonToolbar color=\"primary\">\n <IonTitle>Start Menu</IonTitle>\n </IonToolbar>\n </IonHeader>\n <IonContent>\n <IonList>\n <IonItem>Menu Item</IonItem>\n <IonItem>Menu Item</IonItem>\n <IonItem>Menu Item</IonItem>\n <IonItem>Menu Item</IonItem>\n <IonItem>Menu Item</IonItem>\n </IonList>\n </IonContent>\n </IonMenu>\n\n <IonMenu side=\"start\" menuId=\"custom\" class=\"my-custom-menu\">\n <IonHeader>\n <IonToolbar color=\"tertiary\">\n <IonTitle>Custom Menu</IonTitle>\n </IonToolbar>\n </IonHeader>\n <IonContent>\n <IonList>\n <IonItem>Menu Item</IonItem>\n <IonItem>Menu Item</IonItem>\n <IonItem>Menu Item</IonItem>\n <IonItem>Menu Item</IonItem>\n <IonItem>Menu Item</IonItem>\n </IonList>\n </IonContent>\n </IonMenu>\n\n <IonMenu side=\"end\" type=\"push\">\n <IonHeader>\n <IonToolbar color=\"danger\">\n <IonTitle>End Menu</IonTitle>\n </IonToolbar>\n </IonHeader>\n <IonContent>\n <IonList>\n <IonItem>Menu Item</IonItem>\n <IonItem>Menu Item</IonItem>\n <IonItem>Menu Item</IonItem>\n <IonItem>Menu Item</IonItem>\n <IonItem>Menu Item</IonItem>\n </IonList>\n </IonContent>\n </IonMenu>\n <IonRouterOutlet></IonRouterOutlet>\n </>\n);\n```\n",
5805 "vue": "```html\n<template>\n <ion-menu side=\"start\" menuId=\"first\">\n <ion-header>\n <ion-toolbar color=\"primary\">\n <ion-title>Start Menu</ion-title>\n </ion-toolbar>\n </ion-header>\n <ion-content>\n <ion-list>\n <ion-item>Menu Item</ion-item>\n <ion-item>Menu Item</ion-item>\n <ion-item>Menu Item</ion-item>\n <ion-item>Menu Item</ion-item>\n <ion-item>Menu Item</ion-item>\n </ion-list>\n </ion-content>\n </ion-menu>\n\n <ion-menu side=\"start\" menuId=\"custom\" class=\"my-custom-menu\">\n <ion-header>\n <ion-toolbar color=\"tertiary\">\n <ion-title>Custom Menu</ion-title>\n </ion-toolbar>\n </ion-header>\n <ion-content>\n <ion-list>\n <ion-item>Menu Item</ion-item>\n <ion-item>Menu Item</ion-item>\n <ion-item>Menu Item</ion-item>\n <ion-item>Menu Item</ion-item>\n <ion-item>Menu Item</ion-item>\n </ion-list>\n </ion-content>\n </ion-menu>\n\n <ion-menu side=\"end\" type=\"push\">\n <ion-header>\n <ion-toolbar color=\"danger\">\n <ion-title>End Menu</ion-title>\n </ion-toolbar>\n </ion-header>\n <ion-content>\n <ion-list>\n <ion-item>Menu Item</ion-item>\n <ion-item>Menu Item</ion-item>\n <ion-item>Menu Item</ion-item>\n <ion-item>Menu Item</ion-item>\n <ion-item>Menu Item</ion-item>\n </ion-list>\n </ion-content>\n </ion-menu>\n\n <ion-router-outlet main></ion-router-outlet>\n</template>\n<style>\n.my-custom-menu {\n --width: 500px;\n}\n</style>\n\n<script lang=\"ts\">\n import { Component, Vue } from 'vue-property-decorator';\n\n @Component()\n export default class Example extends Vue {\n\n openFirst() {\n this.menu.enable(true, 'first');\n this.menu.open('first');\n }\n\n openEnd() {\n this.menu.open('end');\n }\n\n openCustom() {\n this.menu.enable(true, 'custom');\n this.menu.open('custom');\n }\n }\n</script>\n```"
5806 },
5807 "props": [
5808 {
5809 "name": "contentId",
5810 "type": "string | undefined",
5811 "mutable": false,
5812 "attr": "content-id",
5813 "reflectToAttr": false,
5814 "docs": "The content's id the menu should use.",
5815 "docsTags": [],
5816 "optional": true,
5817 "required": false
5818 },
5819 {
5820 "name": "disabled",
5821 "type": "boolean",
5822 "mutable": true,
5823 "attr": "disabled",
5824 "reflectToAttr": false,
5825 "docs": "If `true`, the menu is disabled.",
5826 "docsTags": [],
5827 "default": "false",
5828 "optional": false,
5829 "required": false
5830 },
5831 {
5832 "name": "maxEdgeStart",
5833 "type": "number",
5834 "mutable": false,
5835 "attr": "max-edge-start",
5836 "reflectToAttr": false,
5837 "docs": "The edge threshold for dragging the menu open.\nIf a drag/swipe happens over this value, the menu is not triggered.",
5838 "docsTags": [],
5839 "default": "50",
5840 "optional": false,
5841 "required": false
5842 },
5843 {
5844 "name": "menuId",
5845 "type": "string | undefined",
5846 "mutable": false,
5847 "attr": "menu-id",
5848 "reflectToAttr": false,
5849 "docs": "An id for the menu.",
5850 "docsTags": [],
5851 "optional": true,
5852 "required": false
5853 },
5854 {
5855 "name": "side",
5856 "type": "\"end\" | \"start\"",
5857 "mutable": false,
5858 "attr": "side",
5859 "reflectToAttr": true,
5860 "docs": "Which side of the view the menu should be placed.",
5861 "docsTags": [],
5862 "default": "'start'",
5863 "optional": false,
5864 "required": false
5865 },
5866 {
5867 "name": "swipeGesture",
5868 "type": "boolean",
5869 "mutable": false,
5870 "attr": "swipe-gesture",
5871 "reflectToAttr": false,
5872 "docs": "If `true`, swiping the menu is enabled.",
5873 "docsTags": [],
5874 "default": "true",
5875 "optional": false,
5876 "required": false
5877 },
5878 {
5879 "name": "type",
5880 "type": "string | undefined",
5881 "mutable": true,
5882 "attr": "type",
5883 "reflectToAttr": false,
5884 "docs": "The display type of the menu.\nAvailable options: `\"overlay\"`, `\"reveal\"`, `\"push\"`.",
5885 "docsTags": [],
5886 "optional": true,
5887 "required": false
5888 }
5889 ],
5890 "methods": [
5891 {
5892 "name": "close",
5893 "returns": {
5894 "type": "Promise<boolean>",
5895 "docs": ""
5896 },
5897 "signature": "close(animated?: boolean) => Promise<boolean>",
5898 "parameters": [],
5899 "docs": "Closes the menu. If the menu is already closed or it can't be closed,\nit returns `false`.",
5900 "docsTags": []
5901 },
5902 {
5903 "name": "isActive",
5904 "returns": {
5905 "type": "Promise<boolean>",
5906 "docs": ""
5907 },
5908 "signature": "isActive() => Promise<boolean>",
5909 "parameters": [],
5910 "docs": "Returns `true` is the menu is active.\n\nA menu is active when it can be opened or closed, meaning it's enabled\nand it's not part of a `ion-split-pane`.",
5911 "docsTags": []
5912 },
5913 {
5914 "name": "isOpen",
5915 "returns": {
5916 "type": "Promise<boolean>",
5917 "docs": ""
5918 },
5919 "signature": "isOpen() => Promise<boolean>",
5920 "parameters": [],
5921 "docs": "Returns `true` is the menu is open.",
5922 "docsTags": []
5923 },
5924 {
5925 "name": "open",
5926 "returns": {
5927 "type": "Promise<boolean>",
5928 "docs": ""
5929 },
5930 "signature": "open(animated?: boolean) => Promise<boolean>",
5931 "parameters": [],
5932 "docs": "Opens the menu. If the menu is already open or it can't be opened,\nit returns `false`.",
5933 "docsTags": []
5934 },
5935 {
5936 "name": "setOpen",
5937 "returns": {
5938 "type": "Promise<boolean>",
5939 "docs": ""
5940 },
5941 "signature": "setOpen(shouldOpen: boolean, animated?: boolean) => Promise<boolean>",
5942 "parameters": [],
5943 "docs": "Opens or closes the button.\nIf the operation can't be completed successfully, it returns `false`.",
5944 "docsTags": []
5945 },
5946 {
5947 "name": "toggle",
5948 "returns": {
5949 "type": "Promise<boolean>",
5950 "docs": ""
5951 },
5952 "signature": "toggle(animated?: boolean) => Promise<boolean>",
5953 "parameters": [],
5954 "docs": "Toggles the menu. If the menu is already open, it will try to close, otherwise it will try to open it.\nIf the operation can't be completed successfully, it returns `false`.",
5955 "docsTags": []
5956 }
5957 ],
5958 "events": [
5959 {
5960 "event": "ionDidClose",
5961 "detail": "void",
5962 "bubbles": true,
5963 "cancelable": true,
5964 "composed": true,
5965 "docs": "Emitted when the menu is closed.",
5966 "docsTags": []
5967 },
5968 {
5969 "event": "ionDidOpen",
5970 "detail": "void",
5971 "bubbles": true,
5972 "cancelable": true,
5973 "composed": true,
5974 "docs": "Emitted when the menu is open.",
5975 "docsTags": []
5976 },
5977 {
5978 "event": "ionWillClose",
5979 "detail": "void",
5980 "bubbles": true,
5981 "cancelable": true,
5982 "composed": true,
5983 "docs": "Emitted when the menu is about to be closed.",
5984 "docsTags": []
5985 },
5986 {
5987 "event": "ionWillOpen",
5988 "detail": "void",
5989 "bubbles": true,
5990 "cancelable": true,
5991 "composed": true,
5992 "docs": "Emitted when the menu is about to be opened.",
5993 "docsTags": []
5994 }
5995 ],
5996 "styles": [
5997 {
5998 "name": "--background",
5999 "annotation": "prop",
6000 "docs": "Background of the menu"
6001 },
6002 {
6003 "name": "--height",
6004 "annotation": "prop",
6005 "docs": "Height of the menu"
6006 },
6007 {
6008 "name": "--max-height",
6009 "annotation": "prop",
6010 "docs": "Maximum height of the menu"
6011 },
6012 {
6013 "name": "--max-width",
6014 "annotation": "prop",
6015 "docs": "Maximum width of the menu"
6016 },
6017 {
6018 "name": "--min-height",
6019 "annotation": "prop",
6020 "docs": "Minimum height of the menu"
6021 },
6022 {
6023 "name": "--min-width",
6024 "annotation": "prop",
6025 "docs": "Minimum width of the menu"
6026 },
6027 {
6028 "name": "--width",
6029 "annotation": "prop",
6030 "docs": "Width of the menu"
6031 }
6032 ],
6033 "slots": []
6034 },
6035 {
6036 "tag": "ion-menu-button",
6037 "filePath": "src/components/menu-button/menu-button.tsx",
6038 "encapsulation": "shadow",
6039 "readme": "# ion-menu-button\n\nMenu Button is component that automatically creates the icon and functionality to open a menu on a page.\n\n",
6040 "docs": "Menu Button is component that automatically creates the icon and functionality to open a menu on a page.",
6041 "docsTags": [],
6042 "usage": {},
6043 "props": [
6044 {
6045 "name": "autoHide",
6046 "type": "boolean",
6047 "mutable": false,
6048 "attr": "auto-hide",
6049 "reflectToAttr": false,
6050 "docs": "Automatically hides the menu button when the corresponding menu is not active",
6051 "docsTags": [],
6052 "default": "true",
6053 "optional": false,
6054 "required": false
6055 },
6056 {
6057 "name": "color",
6058 "type": "string | undefined",
6059 "mutable": false,
6060 "attr": "color",
6061 "reflectToAttr": false,
6062 "docs": "The color to use from your application's color palette.\nDefault options are: `\"primary\"`, `\"secondary\"`, `\"tertiary\"`, `\"success\"`, `\"warning\"`, `\"danger\"`, `\"light\"`, `\"medium\"`, and `\"dark\"`.\nFor more information on colors, see [theming](/docs/theming/basics).",
6063 "docsTags": [],
6064 "optional": true,
6065 "required": false
6066 },
6067 {
6068 "name": "disabled",
6069 "type": "boolean",
6070 "mutable": false,
6071 "attr": "disabled",
6072 "reflectToAttr": false,
6073 "docs": "If `true`, the user cannot interact with the menu button.",
6074 "docsTags": [],
6075 "default": "false",
6076 "optional": false,
6077 "required": false
6078 },
6079 {
6080 "name": "menu",
6081 "type": "string | undefined",
6082 "mutable": false,
6083 "attr": "menu",
6084 "reflectToAttr": false,
6085 "docs": "Optional property that maps to a Menu's `menuId` prop. Can also be `start` or `end` for the menu side. This is used to find the correct menu to toggle",
6086 "docsTags": [],
6087 "optional": true,
6088 "required": false
6089 },
6090 {
6091 "name": "type",
6092 "type": "\"button\" | \"reset\" | \"submit\"",
6093 "mutable": false,
6094 "attr": "type",
6095 "reflectToAttr": false,
6096 "docs": "The type of the button.",
6097 "docsTags": [],
6098 "default": "'button'",
6099 "optional": false,
6100 "required": false
6101 }
6102 ],
6103 "methods": [],
6104 "events": [],
6105 "styles": [
6106 {
6107 "name": "--background",
6108 "annotation": "prop",
6109 "docs": "Background of the menu button"
6110 },
6111 {
6112 "name": "--background-focused",
6113 "annotation": "prop",
6114 "docs": "Background of the menu button when focused with the tab key"
6115 },
6116 {
6117 "name": "--background-hover",
6118 "annotation": "prop",
6119 "docs": "Background of the menu button on hover"
6120 },
6121 {
6122 "name": "--border-radius",
6123 "annotation": "prop",
6124 "docs": "Border radius of the menu button"
6125 },
6126 {
6127 "name": "--color",
6128 "annotation": "prop",
6129 "docs": "Color of the menu button"
6130 },
6131 {
6132 "name": "--color-focused",
6133 "annotation": "prop",
6134 "docs": "Color of the menu button when focused with the tab key"
6135 },
6136 {
6137 "name": "--color-hover",
6138 "annotation": "prop",
6139 "docs": "Color of the menu button on hover"
6140 },
6141 {
6142 "name": "--padding-bottom",
6143 "annotation": "prop",
6144 "docs": "Bottom padding of the button"
6145 },
6146 {
6147 "name": "--padding-end",
6148 "annotation": "prop",
6149 "docs": "Right padding if direction is left-to-right, and left padding if direction is right-to-left of the button"
6150 },
6151 {
6152 "name": "--padding-start",
6153 "annotation": "prop",
6154 "docs": "Left padding if direction is left-to-right, and right padding if direction is right-to-left of the button"
6155 },
6156 {
6157 "name": "--padding-top",
6158 "annotation": "prop",
6159 "docs": "Top padding of the button"
6160 }
6161 ],
6162 "slots": []
6163 },
6164 {
6165 "tag": "ion-menu-controller",
6166 "filePath": "src/components/menu-controller/menu-controller.ts",
6167 "encapsulation": "none",
6168 "readme": "# ion-menu-controller\n\nThe Menu Controller makes it easy to control a Menu. The methods provided can be used to display the menu, enable the menu, toggle the menu, and more. The controller will grab a reference to the menu by the side, or id. if neither of these are passed to it, it will grab the first menu it finds.\n\n",
6169 "docs": "The Menu Controller makes it easy to control a Menu. The methods provided can be used to display the menu, enable the menu, toggle the menu, and more. The controller will grab a reference to the menu by the side, or id. if neither of these are passed to it, it will grab the first menu it finds.",
6170 "docsTags": [],
6171 "usage": {},
6172 "props": [],
6173 "methods": [
6174 {
6175 "name": "close",
6176 "returns": {
6177 "type": "Promise<boolean>",
6178 "docs": ""
6179 },
6180 "signature": "close(menu?: string | null | undefined) => Promise<boolean>",
6181 "parameters": [],
6182 "docs": "Close the menu. If a menu is specified, it will close that menu.\nIf no menu is specified, then it will close any menu that is open.\nIf it does not find any open menus, it will return `false`.",
6183 "docsTags": [
6184 {
6185 "name": "param",
6186 "text": "menu The menuId or side of the menu to close."
6187 }
6188 ]
6189 },
6190 {
6191 "name": "enable",
6192 "returns": {
6193 "type": "Promise<HTMLIonMenuElement | undefined>",
6194 "docs": ""
6195 },
6196 "signature": "enable(enable: boolean, menu?: string | null | undefined) => Promise<HTMLIonMenuElement | undefined>",
6197 "parameters": [],
6198 "docs": "Enable or disable a menu. Disabling a menu will not allow gestures\nfor that menu or any calls to open it. This is useful when there are\nmultiple menus on the same side and only one of them should be allowed\nto open. Enabling a menu will automatically disable all other menus\non that side.",
6199 "docsTags": [
6200 {
6201 "name": "param",
6202 "text": "enable If `true`, the menu should be enabled."
6203 },
6204 {
6205 "name": "param",
6206 "text": "menu The menuId or side of the menu to enable or disable."
6207 }
6208 ]
6209 },
6210 {
6211 "name": "get",
6212 "returns": {
6213 "type": "Promise<HTMLIonMenuElement | undefined>",
6214 "docs": ""
6215 },
6216 "signature": "get(menu?: string | null | undefined) => Promise<HTMLIonMenuElement | undefined>",
6217 "parameters": [],
6218 "docs": "Get a menu instance. If a menu is not provided then it will return the first\nmenu found. If the specified menu is `start` or `end`, then it will return the\nenabled menu on that side. Otherwise, it will try to find the menu using the menu's\n`id` property. If a menu is not found then it will return `null`.",
6219 "docsTags": [
6220 {
6221 "name": "param",
6222 "text": "menu The menuId or side of the menu."
6223 }
6224 ]
6225 },
6226 {
6227 "name": "getMenus",
6228 "returns": {
6229 "type": "Promise<HTMLIonMenuElement[]>",
6230 "docs": ""
6231 },
6232 "signature": "getMenus() => Promise<HTMLIonMenuElement[]>",
6233 "parameters": [],
6234 "docs": "Get all menu instances.",
6235 "docsTags": []
6236 },
6237 {
6238 "name": "getOpen",
6239 "returns": {
6240 "type": "Promise<HTMLIonMenuElement | undefined>",
6241 "docs": ""
6242 },
6243 "signature": "getOpen() => Promise<HTMLIonMenuElement | undefined>",
6244 "parameters": [],
6245 "docs": "Get the instance of the opened menu. Returns `null` if a menu is not found.",
6246 "docsTags": []
6247 },
6248 {
6249 "name": "isAnimating",
6250 "returns": {
6251 "type": "Promise<boolean>",
6252 "docs": ""
6253 },
6254 "signature": "isAnimating() => Promise<boolean>",
6255 "parameters": [],
6256 "docs": "Get whether or not a menu is animating. Returns `true` if any\nmenu is currently animating.",
6257 "docsTags": []
6258 },
6259 {
6260 "name": "isEnabled",
6261 "returns": {
6262 "type": "Promise<boolean>",
6263 "docs": ""
6264 },
6265 "signature": "isEnabled(menu?: string | null | undefined) => Promise<boolean>",
6266 "parameters": [],
6267 "docs": "Get whether or not the menu is enabled. Returns `true` if the\nspecified menu is enabled. Returns `false` if a menu is disabled\nor not found.",
6268 "docsTags": [
6269 {
6270 "name": "param",
6271 "text": "menu The menuId or side of the menu that is being checked."
6272 }
6273 ]
6274 },
6275 {
6276 "name": "isOpen",
6277 "returns": {
6278 "type": "Promise<boolean>",
6279 "docs": ""
6280 },
6281 "signature": "isOpen(menu?: string | null | undefined) => Promise<boolean>",
6282 "parameters": [],
6283 "docs": "Get whether or not the menu is open. Returns `true` if the specified\nmenu is open. If a menu is not specified, it will return `true` if\nany menu is currently open.",
6284 "docsTags": [
6285 {
6286 "name": "param",
6287 "text": "menu The menuId or side of the menu that is being checked."
6288 }
6289 ]
6290 },
6291 {
6292 "name": "open",
6293 "returns": {
6294 "type": "Promise<boolean>",
6295 "docs": ""
6296 },
6297 "signature": "open(menu?: string | null | undefined) => Promise<boolean>",
6298 "parameters": [],
6299 "docs": "Open the menu. If a menu is not provided then it will open the first\nmenu found. If the specified menu is `start` or `end`, then it will open\nthe enabled menu on that side. Otherwise, it will try to find the menu\nusing the menu's `id` property. If a menu is not found then it will\nreturn `false`.",
6300 "docsTags": [
6301 {
6302 "name": "param",
6303 "text": "menu The menuId or side of the menu to open."
6304 }
6305 ]
6306 },
6307 {
6308 "name": "registerAnimation",
6309 "returns": {
6310 "type": "Promise<void>",
6311 "docs": ""
6312 },
6313 "signature": "registerAnimation(name: string, animation: AnimationBuilder | ((menu: MenuI) => IonicAnimation)) => Promise<void>",
6314 "parameters": [],
6315 "docs": "Registers a new animation that can be used with any `ion-menu` by\npassing the name of the animation in its `type` property.",
6316 "docsTags": [
6317 {
6318 "name": "param",
6319 "text": "name The name of the animation to register."
6320 },
6321 {
6322 "name": "param",
6323 "text": "animation The animation function to register."
6324 }
6325 ]
6326 },
6327 {
6328 "name": "swipeGesture",
6329 "returns": {
6330 "type": "Promise<HTMLIonMenuElement | undefined>",
6331 "docs": ""
6332 },
6333 "signature": "swipeGesture(enable: boolean, menu?: string | null | undefined) => Promise<HTMLIonMenuElement | undefined>",
6334 "parameters": [],
6335 "docs": "Enable or disable the ability to swipe open the menu.",
6336 "docsTags": [
6337 {
6338 "name": "param",
6339 "text": "enable If `true`, the menu swipe gesture should be enabled."
6340 },
6341 {
6342 "name": "param",
6343 "text": "menu The menuId or side of the menu to enable or disable the swipe gesture on."
6344 }
6345 ]
6346 },
6347 {
6348 "name": "toggle",
6349 "returns": {
6350 "type": "Promise<boolean>",
6351 "docs": ""
6352 },
6353 "signature": "toggle(menu?: string | null | undefined) => Promise<boolean>",
6354 "parameters": [],
6355 "docs": "Toggle the menu open or closed. If the menu is already open, it will try to\nclose the menu, otherwise it will try to open it. Returns `false` if\na menu is not found.",
6356 "docsTags": [
6357 {
6358 "name": "param",
6359 "text": "menu The menuId or side of the menu to toggle."
6360 }
6361 ]
6362 }
6363 ],
6364 "events": [],
6365 "styles": [],
6366 "slots": []
6367 },
6368 {
6369 "tag": "ion-menu-toggle",
6370 "filePath": "src/components/menu-toggle/menu-toggle.tsx",
6371 "encapsulation": "shadow",
6372 "readme": "# ion-menu-toggle\n\nThe MenuToggle component can be used to toggle a menu open or closed.\n\nBy default, it's only visible when the selected menu is active. A menu is active when it can be opened/closed. If the menu is disabled or it's being presented as a split-pane, the menu is marked as non-active and ion-menu-toggle hides itself.\n\nIn case it's desired to keep `ion-menu-toggle` always visible, the `autoHide` property can be set to `false`.\n",
6373 "docs": "The MenuToggle component can be used to toggle a menu open or closed.\n\nBy default, it's only visible when the selected menu is active. A menu is active when it can be opened/closed. If the menu is disabled or it's being presented as a split-pane, the menu is marked as non-active and ion-menu-toggle hides itself.\n\nIn case it's desired to keep `ion-menu-toggle` always visible, the `autoHide` property can be set to `false`.",
6374 "docsTags": [],
6375 "usage": {},
6376 "props": [
6377 {
6378 "name": "autoHide",
6379 "type": "boolean",
6380 "mutable": false,
6381 "attr": "auto-hide",
6382 "reflectToAttr": false,
6383 "docs": "Automatically hides the content when the corresponding menu is not active.\n\nBy default, it's `true`. Change it to `false` in order to\nkeep `ion-menu-toggle` always visible regardless the state of the menu.",
6384 "docsTags": [],
6385 "default": "true",
6386 "optional": false,
6387 "required": false
6388 },
6389 {
6390 "name": "menu",
6391 "type": "string | undefined",
6392 "mutable": false,
6393 "attr": "menu",
6394 "reflectToAttr": false,
6395 "docs": "Optional property that maps to a Menu's `menuId` prop.\nCan also be `start` or `end` for the menu side.\nThis is used to find the correct menu to toggle.\n\nIf this property is not used, `ion-menu-toggle` will toggle the\nfirst menu that is active.",
6396 "docsTags": [],
6397 "optional": true,
6398 "required": false
6399 }
6400 ],
6401 "methods": [],
6402 "events": [],
6403 "styles": [],
6404 "slots": []
6405 },
6406 {
6407 "tag": "ion-modal",
6408 "filePath": "src/components/modal/modal.tsx",
6409 "encapsulation": "scoped",
6410 "readme": "# ion-modal\n\nA Modal is a dialog that appears on top of the app's content, and must be dismissed by the app before interaction can resume. It is useful as a select component when there are a lot of options to choose from, or when filtering items in a list, as well as many other use cases.\n\n\n### Creating\n\nModals can be created using a [Modal Controller](../modal-controller). They can be customized by passing modal options in the modal controller's `create()` method.\n\n\n### Dismissing\n\nThe modal can be dismissed after creation by calling the `dismiss()` method on the modal controller. The `onDidDismiss` function can be called to perform an action after the modal is dismissed.\n\n",
6411 "docs": "A Modal is a dialog that appears on top of the app's content, and must be dismissed by the app before interaction can resume. It is useful as a select component when there are a lot of options to choose from, or when filtering items in a list, as well as many other use cases.",
6412 "docsTags": [
6413 {
6414 "text": "{\"ios\" | \"md\"} mode - The mode determines which platform styles to use.",
6415 "name": "virtualProp"
6416 }
6417 ],
6418 "usage": {
6419 "angular": "```typescript\nimport { Component } from '@angular/core';\nimport { ModalController } from '@ionic/angular';\nimport { ModalPage } from '../modal/modal.page';\n\n@Component({\n selector: 'modal-example',\n templateUrl: 'modal-example.html',\n styleUrls: ['./modal-example.css']\n})\nexport class ModalExample {\n constructor(public modalController: ModalController) {\n\n }\n\n async presentModal() {\n const modal = await this.modalController.create({\n component: ModalPage\n });\n return await modal.present();\n }\n}\n```\n\n```typescript\nimport { Component, Input } from '@angular/core';\nimport { NavParams } from '@ionic/angular';\n\n@Component({\n selector: 'modal-page',\n})\nexport class ModalPage {\n\n constructor() {\n\n }\n\n}\n```\n\n### Passing Data\n\nDuring creation of a modal, data can be passed in through the `componentProps`. The previous example can be written to include data:\n\n```typescript\nasync presentModal() {\n const modal = await this.modalController.create({\n component: ModalPage,\n componentProps: {\n 'firstName': 'Douglas',\n 'lastName': 'Adams',\n 'middleInitial': 'N'\n }\n });\n return await modal.present();\n}\n```\n\nTo get the data passed into the `componentProps`, either set it as an `@Input` or access it via `NavParams` on the `ModalPage`:\n\n```typescript\nexport class ModalPage {\n\n // Data passed in by componentProps\n @Input() firstName: string;\n @Input() lastName: string;\n @Input() middleInitial: string;\n\n constructor(navParams: NavParams) {\n // componentProps can also be accessed at construction time using NavParams\n console.log(navParams.get('firstName'));\n }\n\n}\n```\n\n### Dismissing a Modal\n\nA modal can be dismissed by calling the dismiss method on the modal controller and optionally passing any data from the modal.\n\n```javascript\nexport class ModalPage {\n ...\n\n dismiss() {\n // using the injected ModalController this page\n // can \"dismiss\" itself and optionally pass back data\n this.modalCtrl.dismiss({\n 'dismissed': true\n });\n }\n}\n```\n\nAfter being dismissed, the data can be read in through the `onWillDismiss` or `onDidDismiss` attached to the modal after creation:\n\n```javascript\nconst { data } = await modal.onWillDismiss();\nconsole.log(data);\n```\n\n\n#### Lazy Loading\n\nWhen lazy loading a modal, it's important to note that the modal will not be loaded when it is opened, but rather when the module that imports the modal's module is loaded.\n\nFor example, say there exists a `CalendarComponent` and an `EventModal`. The modal is presented by clicking a button in the `CalendarComponent`. In Angular, the `EventModalModule` would need to be included in the `CalendarComponentModule` since the modal is created in the `CalendarComponent`:\n\n```typescript\nimport { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { IonicModule } from '@ionic/angular';\n\nimport { CalendarComponent } from './calendar.component';\nimport { EventModalModule } from '../modals/event/event.module';\n\n@NgModule({\n declarations: [\n CalendarComponent\n ],\n imports: [\n IonicModule,\n CommonModule,\n EventModalModule\n ],\n exports: [\n CalendarComponent\n ]\n})\n\nexport class CalendarComponentModule {}\n```",
6420 "javascript": "\n```javascript\ncustomElements.define('modal-page', class extends HTMLElement {\n connectedCallback() {\n this.innerHTML = `\n<ion-header>\n <ion-toolbar>\n <ion-title>Modal Header</ion-title>\n <ion-buttons slot=\"primary\">\n <ion-button onClick=\"dismissModal()\">\n <ion-icon slot=\"icon-only\" name=\"close\"></ion-icon>\n </ion-button>\n </ion-buttons>\n </ion-toolbar>\n</ion-header>\n<ion-content class=\"ion-padding\">\n Modal Content\n</ion-content>`;\n }\n});\n\nfunction presentModal() {\n // create the modal with the `modal-page` component\n const modalElement = document.createElement('ion-modal');\n modalElement.component = 'modal-page';\n\n // present the modal\n document.body.appendChild(modalElement);\n return modalElement.present();\n}\n```\n\n### Passing Data\n\nDuring creation of a modal, data can be passed in through the `componentProps`. The previous example can be written to include data:\n\n```javascript\nconst modalElement = document.createElement('ion-modal');\nmodalElement.component = 'modal-page';\nmodalElement.componentProps = {\n 'firstName': 'Douglas',\n 'lastName': 'Adams',\n 'middleInitial': 'N'\n};\n```\n\nTo get the data passed into the `componentProps`, query for the modal in the `modal-page`:\n\n```js\ncustomElements.define('modal-page', class extends HTMLElement {\n connectedCallback() {\n const modalElement = document.querySelector('ion-modal');\n console.log(modalElement.componentProps.firstName);\n\n ...\n }\n}\n```\n\n\n### Dismissing a Modal\n\nA modal can be dismissed by calling the dismiss method on the modal controller and optionally passing any data from the modal.\n\n```javascript\nasync function dismissModal() {\n await modal.dismiss({\n 'dismissed': true\n });\n}\n```\n\nAfter being dismissed, the data can be read in through the `onWillDismiss` or `onDidDismiss` attached to the modal after creation:\n\n```javascript\nconst { data } = await modalElement.onWillDismiss();\nconsole.log(data);\n```",
6421 "react": "```tsx\nimport React, { useState } from 'react';\nimport { IonModal, IonButton, IonContent } from '@ionic/react';\n\nexport const ModalExample: React.FC = () => {\n const [showModal, setShowModal] = useState(false);\n\n return (\n <IonContent>\n <IonModal isOpen={showModal}>\n <p>This is modal content</p>\n <IonButton onClick={() => setShowModal(false)}>Close Modal</IonButton>\n </IonModal>\n <IonButton onClick={() => setShowModal(true)}>Show Modal</IonButton>\n </IonContent>\n );\n};\n```\n",
6422 "vue": "```html\n<template>\n <div>\n <ion-header>\n <ion-toolbar>\n <ion-title>{{ title }}</ion-title>\n </ion-toolbar>\n </ion-header>\n <ion-content class=\"ion-padding\">\n {{ content }}\n </ion-content>\n </div>\n</template>\n\n<script>\nexport default {\n name: 'Modal',\n props: {\n title: { type: String, default: 'Super Modal' },\n },\n data() {\n return {\n content: 'Content',\n }\n },\n}\n</script>\n```\n\n```html\n<template>\n <ion-page class=\"ion-page\" main>\n <ion-content class=\"ion-content\" padding>\n <ion-button @click=\"openModal\">Open Modal</ion-button>\n </ion-content>\n </ion-page>\n</template>\n\n<script>\nimport Modal from './modal.vue'\n\nexport default {\n methods: {\n openModal() {\n return this.$ionic.modalController\n .create({\n component: Modal,\n componentProps: {\n data: {\n content: 'New Content',\n },\n propsData: {\n title: 'New title',\n },\n },\n })\n .then(m => m.present())\n },\n },\n}\n</script>\n```\n"
6423 },
6424 "props": [
6425 {
6426 "name": "animated",
6427 "type": "boolean",
6428 "mutable": false,
6429 "attr": "animated",
6430 "reflectToAttr": false,
6431 "docs": "If `true`, the modal will animate.",
6432 "docsTags": [],
6433 "default": "true",
6434 "optional": false,
6435 "required": false
6436 },
6437 {
6438 "name": "backdropDismiss",
6439 "type": "boolean",
6440 "mutable": false,
6441 "attr": "backdrop-dismiss",
6442 "reflectToAttr": false,
6443 "docs": "If `true`, the modal will be dismissed when the backdrop is clicked.",
6444 "docsTags": [],
6445 "default": "true",
6446 "optional": false,
6447 "required": false
6448 },
6449 {
6450 "name": "component",
6451 "type": "Function | HTMLElement | null | string",
6452 "mutable": false,
6453 "attr": "component",
6454 "reflectToAttr": false,
6455 "docs": "The component to display inside of the modal.",
6456 "docsTags": [],
6457 "optional": false,
6458 "required": true
6459 },
6460 {
6461 "name": "componentProps",
6462 "type": "undefined | { [key: string]: any; }",
6463 "mutable": false,
6464 "reflectToAttr": false,
6465 "docs": "The data to pass to the modal component.",
6466 "docsTags": [],
6467 "optional": true,
6468 "required": false
6469 },
6470 {
6471 "name": "cssClass",
6472 "type": "string | string[] | undefined",
6473 "mutable": false,
6474 "attr": "css-class",
6475 "reflectToAttr": false,
6476 "docs": "Additional classes to apply for custom CSS. If multiple classes are\nprovided they should be separated by spaces.",
6477 "docsTags": [],
6478 "optional": true,
6479 "required": false
6480 },
6481 {
6482 "name": "enterAnimation",
6483 "type": "((Animation: Animation, baseEl: any, opts?: any) => Promise<Animation>) | undefined",
6484 "mutable": false,
6485 "reflectToAttr": false,
6486 "docs": "Animation to use when the modal is presented.",
6487 "docsTags": [],
6488 "optional": true,
6489 "required": false
6490 },
6491 {
6492 "name": "keyboardClose",
6493 "type": "boolean",
6494 "mutable": false,
6495 "attr": "keyboard-close",
6496 "reflectToAttr": false,
6497 "docs": "If `true`, the keyboard will be automatically dismissed when the overlay is presented.",
6498 "docsTags": [],
6499 "default": "true",
6500 "optional": false,
6501 "required": false
6502 },
6503 {
6504 "name": "leaveAnimation",
6505 "type": "((Animation: Animation, baseEl: any, opts?: any) => Promise<Animation>) | undefined",
6506 "mutable": false,
6507 "reflectToAttr": false,
6508 "docs": "Animation to use when the modal is dismissed.",
6509 "docsTags": [],
6510 "optional": true,
6511 "required": false
6512 },
6513 {
6514 "name": "mode",
6515 "type": "\"ios\" | \"md\"",
6516 "mutable": false,
6517 "attr": "mode",
6518 "reflectToAttr": false,
6519 "docs": "The mode determines which platform styles to use.",
6520 "docsTags": [],
6521 "optional": true,
6522 "required": false
6523 },
6524 {
6525 "name": "showBackdrop",
6526 "type": "boolean",
6527 "mutable": false,
6528 "attr": "show-backdrop",
6529 "reflectToAttr": false,
6530 "docs": "If `true`, a backdrop will be displayed behind the modal.",
6531 "docsTags": [],
6532 "default": "true",
6533 "optional": false,
6534 "required": false
6535 }
6536 ],
6537 "methods": [
6538 {
6539 "name": "dismiss",
6540 "returns": {
6541 "type": "Promise<boolean>",
6542 "docs": ""
6543 },
6544 "signature": "dismiss(data?: any, role?: string | undefined) => Promise<boolean>",
6545 "parameters": [],
6546 "docs": "Dismiss the modal overlay after it has been presented.",
6547 "docsTags": [
6548 {
6549 "name": "param",
6550 "text": "data Any data to emit in the dismiss events."
6551 },
6552 {
6553 "name": "param",
6554 "text": "role The role of the element that is dismissing the modal. For example, 'cancel' or 'backdrop'."
6555 }
6556 ]
6557 },
6558 {
6559 "name": "onDidDismiss",
6560 "returns": {
6561 "type": "Promise<OverlayEventDetail<any>>",
6562 "docs": ""
6563 },
6564 "signature": "onDidDismiss() => Promise<OverlayEventDetail<any>>",
6565 "parameters": [],
6566 "docs": "Returns a promise that resolves when the modal did dismiss.",
6567 "docsTags": []
6568 },
6569 {
6570 "name": "onWillDismiss",
6571 "returns": {
6572 "type": "Promise<OverlayEventDetail<any>>",
6573 "docs": ""
6574 },
6575 "signature": "onWillDismiss() => Promise<OverlayEventDetail<any>>",
6576 "parameters": [],
6577 "docs": "Returns a promise that resolves when the modal will dismiss.",
6578 "docsTags": []
6579 },
6580 {
6581 "name": "present",
6582 "returns": {
6583 "type": "Promise<void>",
6584 "docs": ""
6585 },
6586 "signature": "present() => Promise<void>",
6587 "parameters": [],
6588 "docs": "Present the modal overlay after it has been created.",
6589 "docsTags": []
6590 }
6591 ],
6592 "events": [
6593 {
6594 "event": "ionModalDidDismiss",
6595 "detail": "OverlayEventDetail<any>",
6596 "bubbles": true,
6597 "cancelable": true,
6598 "composed": true,
6599 "docs": "Emitted after the modal has dismissed.",
6600 "docsTags": []
6601 },
6602 {
6603 "event": "ionModalDidPresent",
6604 "detail": "void",
6605 "bubbles": true,
6606 "cancelable": true,
6607 "composed": true,
6608 "docs": "Emitted after the modal has presented.",
6609 "docsTags": []
6610 },
6611 {
6612 "event": "ionModalWillDismiss",
6613 "detail": "OverlayEventDetail<any>",
6614 "bubbles": true,
6615 "cancelable": true,
6616 "composed": true,
6617 "docs": "Emitted before the modal has dismissed.",
6618 "docsTags": []
6619 },
6620 {
6621 "event": "ionModalWillPresent",
6622 "detail": "void",
6623 "bubbles": true,
6624 "cancelable": true,
6625 "composed": true,
6626 "docs": "Emitted before the modal has presented.",
6627 "docsTags": []
6628 }
6629 ],
6630 "styles": [
6631 {
6632 "name": "--background",
6633 "annotation": "prop",
6634 "docs": "Background of the modal content"
6635 },
6636 {
6637 "name": "--border-color",
6638 "annotation": "prop",
6639 "docs": "Border color of the modal content"
6640 },
6641 {
6642 "name": "--border-radius",
6643 "annotation": "prop",
6644 "docs": "Border radius of the modal content"
6645 },
6646 {
6647 "name": "--border-style",
6648 "annotation": "prop",
6649 "docs": "Border style of the modal content"
6650 },
6651 {
6652 "name": "--border-width",
6653 "annotation": "prop",
6654 "docs": "Border width of the modal content"
6655 },
6656 {
6657 "name": "--height",
6658 "annotation": "prop",
6659 "docs": "Height of the modal"
6660 },
6661 {
6662 "name": "--max-height",
6663 "annotation": "prop",
6664 "docs": "Maximum height of the modal"
6665 },
6666 {
6667 "name": "--max-width",
6668 "annotation": "prop",
6669 "docs": "Maximum width of the modal"
6670 },
6671 {
6672 "name": "--min-height",
6673 "annotation": "prop",
6674 "docs": "Minimum height of the modal"
6675 },
6676 {
6677 "name": "--min-width",
6678 "annotation": "prop",
6679 "docs": "Minimum width of the modal"
6680 },
6681 {
6682 "name": "--width",
6683 "annotation": "prop",
6684 "docs": "Width of the modal"
6685 }
6686 ],
6687 "slots": []
6688 },
6689 {
6690 "tag": "ion-modal-controller",
6691 "filePath": "src/components/modal-controller/modal-controller.tsx",
6692 "encapsulation": "none",
6693 "readme": "# ion-modal-controller\n\nModal controllers programmatically control the modal component. Modals can be created and dismissed from the modal controller. View the [Modal](../modal) documentation for a full list of options to pass upon creation.\n\n",
6694 "deprecation": "Use the `modalController` exported from core.",
6695 "docs": "Modal controllers programmatically control the modal component. Modals can be created and dismissed from the modal controller. View the [Modal](../modal) documentation for a full list of options to pass upon creation.",
6696 "docsTags": [
6697 {
6698 "text": "Use the `modalController` exported from core.",
6699 "name": "deprecated"
6700 }
6701 ],
6702 "usage": {},
6703 "props": [],
6704 "methods": [
6705 {
6706 "name": "create",
6707 "returns": {
6708 "type": "Promise<HTMLIonModalElement>",
6709 "docs": ""
6710 },
6711 "signature": "create<T extends ComponentRef>(options: ModalOptions<T>) => Promise<HTMLIonModalElement>",
6712 "parameters": [],
6713 "docs": "Create a modal overlay with modal options.",
6714 "docsTags": [
6715 {
6716 "name": "param",
6717 "text": "options The options to use to create the modal."
6718 }
6719 ]
6720 },
6721 {
6722 "name": "dismiss",
6723 "returns": {
6724 "type": "Promise<boolean>",
6725 "docs": ""
6726 },
6727 "signature": "dismiss(data?: any, role?: string | undefined, id?: string | undefined) => Promise<boolean>",
6728 "parameters": [],
6729 "docs": "Dismiss the open modal overlay.",
6730 "docsTags": [
6731 {
6732 "name": "param",
6733 "text": "data Any data to emit in the dismiss events."
6734 },
6735 {
6736 "name": "param",
6737 "text": "role The role of the element that is dismissing the modal.\nThis can be useful in a button handler for determining which button was\nclicked to dismiss the modal.\nSome examples include: ``\"cancel\"`, `\"destructive\"`, \"selected\"`, and `\"backdrop\"`."
6738 },
6739 {
6740 "name": "param",
6741 "text": "id The id of the modal to dismiss. If an id is not provided, it will dismiss the most recently opened modal."
6742 }
6743 ]
6744 },
6745 {
6746 "name": "getTop",
6747 "returns": {
6748 "type": "Promise<HTMLIonModalElement | undefined>",
6749 "docs": ""
6750 },
6751 "signature": "getTop() => Promise<HTMLIonModalElement | undefined>",
6752 "parameters": [],
6753 "docs": "Get the most recently opened modal overlay.",
6754 "docsTags": []
6755 }
6756 ],
6757 "events": [],
6758 "styles": [],
6759 "slots": []
6760 },
6761 {
6762 "tag": "ion-nav",
6763 "filePath": "src/components/nav/nav.tsx",
6764 "encapsulation": "shadow",
6765 "readme": "# ion-nav\n\nNav is a standalone component for loading arbitrary components and pushing new components on to the stack.\n\nUnlike Router Outlet, Nav is not tied to a particular router. This means that if we load a Nav component, and push other components to the stack, they will not affect the app's overall router. This fits use cases where you could have a modal, which needs its own sub-navigation, without making it tied to the apps URL.\n\n",
6766 "docs": "Nav is a standalone component for loading arbitrary components and pushing new components on to the stack.\n\nUnlike Router Outlet, Nav is not tied to a particular router. This means that if we load a Nav component, and push other components to the stack, they will not affect the app's overall router. This fits use cases where you could have a modal, which needs its own sub-navigation, without making it tied to the apps URL.",
6767 "docsTags": [],
6768 "usage": {},
6769 "props": [
6770 {
6771 "name": "animated",
6772 "type": "boolean",
6773 "mutable": false,
6774 "attr": "animated",
6775 "reflectToAttr": false,
6776 "docs": "If `true`, the nav should animate the transition of components.",
6777 "docsTags": [],
6778 "default": "true",
6779 "optional": false,
6780 "required": false
6781 },
6782 {
6783 "name": "animation",
6784 "type": "((Animation: Animation, baseEl: any, opts?: any) => Promise<Animation>) | undefined",
6785 "mutable": false,
6786 "reflectToAttr": false,
6787 "docs": "By default `ion-nav` animates transition between pages based in the mode (ios or material design).\nHowever, this property allows to create custom transition using `AnimateBuilder` functions.",
6788 "docsTags": [],
6789 "optional": true,
6790 "required": false
6791 },
6792 {
6793 "name": "root",
6794 "type": "Function | HTMLElement | ViewController | null | string | undefined",
6795 "mutable": false,
6796 "attr": "root",
6797 "reflectToAttr": false,
6798 "docs": "Root NavComponent to load",
6799 "docsTags": [],
6800 "optional": true,
6801 "required": false
6802 },
6803 {
6804 "name": "rootParams",
6805 "type": "undefined | { [key: string]: any; }",
6806 "mutable": false,
6807 "reflectToAttr": false,
6808 "docs": "Any parameters for the root component",
6809 "docsTags": [],
6810 "optional": true,
6811 "required": false
6812 },
6813 {
6814 "name": "swipeGesture",
6815 "type": "boolean | undefined",
6816 "mutable": true,
6817 "attr": "swipe-gesture",
6818 "reflectToAttr": false,
6819 "docs": "If the nav component should allow for swipe-to-go-back.",
6820 "docsTags": [],
6821 "optional": true,
6822 "required": false
6823 }
6824 ],
6825 "methods": [
6826 {
6827 "name": "canGoBack",
6828 "returns": {
6829 "type": "Promise<boolean>",
6830 "docs": ""
6831 },
6832 "signature": "canGoBack(view?: ViewController | undefined) => Promise<boolean>",
6833 "parameters": [],
6834 "docs": "Returns `true` if the current view can go back.",
6835 "docsTags": [
6836 {
6837 "name": "param",
6838 "text": "view The view to check."
6839 }
6840 ]
6841 },
6842 {
6843 "name": "getActive",
6844 "returns": {
6845 "type": "Promise<ViewController | undefined>",
6846 "docs": ""
6847 },
6848 "signature": "getActive() => Promise<ViewController | undefined>",
6849 "parameters": [],
6850 "docs": "Get the active view.",
6851 "docsTags": []
6852 },
6853 {
6854 "name": "getByIndex",
6855 "returns": {
6856 "type": "Promise<ViewController | undefined>",
6857 "docs": ""
6858 },
6859 "signature": "getByIndex(index: number) => Promise<ViewController | undefined>",
6860 "parameters": [],
6861 "docs": "Get the view at the specified index.",
6862 "docsTags": [
6863 {
6864 "name": "param",
6865 "text": "index The index of the view."
6866 }
6867 ]
6868 },
6869 {
6870 "name": "getPrevious",
6871 "returns": {
6872 "type": "Promise<ViewController | undefined>",
6873 "docs": ""
6874 },
6875 "signature": "getPrevious(view?: ViewController | undefined) => Promise<ViewController | undefined>",
6876 "parameters": [],
6877 "docs": "Get the previous view.",
6878 "docsTags": [
6879 {
6880 "name": "param",
6881 "text": "view The view to get."
6882 }
6883 ]
6884 },
6885 {
6886 "name": "insert",
6887 "returns": {
6888 "type": "Promise<boolean>",
6889 "docs": ""
6890 },
6891 "signature": "insert<T extends NavComponent>(insertIndex: number, component: T, componentProps?: ComponentProps<T> | null | undefined, opts?: NavOptions | null | undefined, done?: TransitionDoneFn | undefined) => Promise<boolean>",
6892 "parameters": [],
6893 "docs": "Inserts a component into the navigation stack at the specified index.\nThis is useful to add a component at any point in the navigation stack.",
6894 "docsTags": [
6895 {
6896 "name": "param",
6897 "text": "insertIndex The index to insert the component at in the stack."
6898 },
6899 {
6900 "name": "param",
6901 "text": "component The component to insert into the navigation stack."
6902 },
6903 {
6904 "name": "param",
6905 "text": "componentProps Any properties of the component."
6906 },
6907 {
6908 "name": "param",
6909 "text": "opts The navigation options."
6910 },
6911 {
6912 "name": "param",
6913 "text": "done The transition complete function."
6914 }
6915 ]
6916 },
6917 {
6918 "name": "insertPages",
6919 "returns": {
6920 "type": "Promise<boolean>",
6921 "docs": ""
6922 },
6923 "signature": "insertPages(insertIndex: number, insertComponents: NavComponent[], opts?: NavOptions | null | undefined, done?: TransitionDoneFn | undefined) => Promise<boolean>",
6924 "parameters": [],
6925 "docs": "Inserts an array of components into the navigation stack at the specified index.\nThe last component in the array will become instantiated as a view, and animate\nin to become the active view.",
6926 "docsTags": [
6927 {
6928 "name": "param",
6929 "text": "insertIndex The index to insert the components at in the stack."
6930 },
6931 {
6932 "name": "param",
6933 "text": "insertComponents The components to insert into the navigation stack."
6934 },
6935 {
6936 "name": "param",
6937 "text": "opts The navigation options."
6938 },
6939 {
6940 "name": "param",
6941 "text": "done The transition complete function."
6942 }
6943 ]
6944 },
6945 {
6946 "name": "pop",
6947 "returns": {
6948 "type": "Promise<boolean>",
6949 "docs": ""
6950 },
6951 "signature": "pop(opts?: NavOptions | null | undefined, done?: TransitionDoneFn | undefined) => Promise<boolean>",
6952 "parameters": [],
6953 "docs": "Pop a component off of the navigation stack. Navigates back from the current\ncomponent.",
6954 "docsTags": [
6955 {
6956 "name": "param",
6957 "text": "opts The navigation options."
6958 },
6959 {
6960 "name": "param",
6961 "text": "done The transition complete function."
6962 }
6963 ]
6964 },
6965 {
6966 "name": "popTo",
6967 "returns": {
6968 "type": "Promise<boolean>",
6969 "docs": ""
6970 },
6971 "signature": "popTo(indexOrViewCtrl: number | ViewController, opts?: NavOptions | null | undefined, done?: TransitionDoneFn | undefined) => Promise<boolean>",
6972 "parameters": [],
6973 "docs": "Pop to a specific index in the navigation stack.",
6974 "docsTags": [
6975 {
6976 "name": "param",
6977 "text": "indexOrViewCtrl The index or view controller to pop to."
6978 },
6979 {
6980 "name": "param",
6981 "text": "opts The navigation options."
6982 },
6983 {
6984 "name": "param",
6985 "text": "done The transition complete function."
6986 }
6987 ]
6988 },
6989 {
6990 "name": "popToRoot",
6991 "returns": {
6992 "type": "Promise<boolean>",
6993 "docs": ""
6994 },
6995 "signature": "popToRoot(opts?: NavOptions | null | undefined, done?: TransitionDoneFn | undefined) => Promise<boolean>",
6996 "parameters": [],
6997 "docs": "Navigate back to the root of the stack, no matter how far back that is.",
6998 "docsTags": [
6999 {
7000 "name": "param",
7001 "text": "opts The navigation options."
7002 },
7003 {
7004 "name": "param",
7005 "text": "done The transition complete function."
7006 }
7007 ]
7008 },
7009 {
7010 "name": "push",
7011 "returns": {
7012 "type": "Promise<boolean>",
7013 "docs": ""
7014 },
7015 "signature": "push<T extends NavComponent>(component: T, componentProps?: ComponentProps<T> | null | undefined, opts?: NavOptions | null | undefined, done?: TransitionDoneFn | undefined) => Promise<boolean>",
7016 "parameters": [],
7017 "docs": "Push a new component onto the current navigation stack. Pass any additional\ninformation along as an object. This additional information is accessible\nthrough NavParams.",
7018 "docsTags": [
7019 {
7020 "name": "param",
7021 "text": "component The component to push onto the navigation stack."
7022 },
7023 {
7024 "name": "param",
7025 "text": "componentProps Any properties of the component."
7026 },
7027 {
7028 "name": "param",
7029 "text": "opts The navigation options."
7030 },
7031 {
7032 "name": "param",
7033 "text": "done The transition complete function."
7034 }
7035 ]
7036 },
7037 {
7038 "name": "removeIndex",
7039 "returns": {
7040 "type": "Promise<boolean>",
7041 "docs": ""
7042 },
7043 "signature": "removeIndex(startIndex: number, removeCount?: number, opts?: NavOptions | null | undefined, done?: TransitionDoneFn | undefined) => Promise<boolean>",
7044 "parameters": [],
7045 "docs": "Removes a component from the navigation stack at the specified index.",
7046 "docsTags": [
7047 {
7048 "name": "param",
7049 "text": "startIndex The number to begin removal at."
7050 },
7051 {
7052 "name": "param",
7053 "text": "removeCount The number of components to remove."
7054 },
7055 {
7056 "name": "param",
7057 "text": "opts The navigation options."
7058 },
7059 {
7060 "name": "param",
7061 "text": "done The transition complete function."
7062 }
7063 ]
7064 },
7065 {
7066 "name": "setPages",
7067 "returns": {
7068 "type": "Promise<boolean>",
7069 "docs": ""
7070 },
7071 "signature": "setPages(views: any[], opts?: NavOptions | null | undefined, done?: TransitionDoneFn | undefined) => Promise<boolean>",
7072 "parameters": [],
7073 "docs": "Set the views of the current navigation stack and navigate to the last view.\nBy default animations are disabled, but they can be enabled by passing options\nto the navigation controller. Navigation parameters can also be passed to the\nindividual pages in the array.",
7074 "docsTags": [
7075 {
7076 "name": "param",
7077 "text": "views The list of views to set as the navigation stack."
7078 },
7079 {
7080 "name": "param",
7081 "text": "opts The navigation options."
7082 },
7083 {
7084 "name": "param",
7085 "text": "done The transition complete function."
7086 }
7087 ]
7088 },
7089 {
7090 "name": "setRoot",
7091 "returns": {
7092 "type": "Promise<boolean>",
7093 "docs": ""
7094 },
7095 "signature": "setRoot<T extends NavComponent>(component: T, componentProps?: ComponentProps<T> | null | undefined, opts?: NavOptions | null | undefined, done?: TransitionDoneFn | undefined) => Promise<boolean>",
7096 "parameters": [],
7097 "docs": "Set the root for the current navigation stack to a component.",
7098 "docsTags": [
7099 {
7100 "name": "param",
7101 "text": "component The component to set as the root of the navigation stack."
7102 },
7103 {
7104 "name": "param",
7105 "text": "componentProps Any properties of the component."
7106 },
7107 {
7108 "name": "param",
7109 "text": "opts The navigation options."
7110 },
7111 {
7112 "name": "param",
7113 "text": "done The transition complete function."
7114 }
7115 ]
7116 }
7117 ],
7118 "events": [
7119 {
7120 "event": "ionNavDidChange",
7121 "detail": "void",
7122 "bubbles": false,
7123 "cancelable": true,
7124 "composed": true,
7125 "docs": "Event fired when the nav has changed components",
7126 "docsTags": []
7127 },
7128 {
7129 "event": "ionNavWillChange",
7130 "detail": "void",
7131 "bubbles": false,
7132 "cancelable": true,
7133 "composed": true,
7134 "docs": "Event fired when the nav will change components",
7135 "docsTags": []
7136 }
7137 ],
7138 "styles": [],
7139 "slots": []
7140 },
7141 {
7142 "tag": "ion-nav-link",
7143 "filePath": "src/components/nav-link/nav-link.tsx",
7144 "encapsulation": "none",
7145 "readme": "# ion-nav-link\n\nA navigation link is used to navigate to a specified component. The component can be navigated to by going `forward`, `back` or as a `root` component.\n\nIt is the element form of calling the `push()`, `pop()`, and `setRoot()` methods on the navigation controller.\n\n",
7146 "docs": "A navigation link is used to navigate to a specified component. The component can be navigated to by going `forward`, `back` or as a `root` component.\n\nIt is the element form of calling the `push()`, `pop()`, and `setRoot()` methods on the navigation controller.",
7147 "docsTags": [],
7148 "usage": {},
7149 "props": [
7150 {
7151 "name": "component",
7152 "type": "Function | HTMLElement | ViewController | null | string | undefined",
7153 "mutable": false,
7154 "attr": "component",
7155 "reflectToAttr": false,
7156 "docs": "Component to navigate to. Only used if the `routerDirection` is `\"forward\"` or `\"root\"`.",
7157 "docsTags": [],
7158 "optional": true,
7159 "required": false
7160 },
7161 {
7162 "name": "componentProps",
7163 "type": "undefined | { [key: string]: any; }",
7164 "mutable": false,
7165 "reflectToAttr": false,
7166 "docs": "Data you want to pass to the component as props. Only used if the `\"routerDirection\"` is `\"forward\"` or `\"root\"`.",
7167 "docsTags": [],
7168 "optional": true,
7169 "required": false
7170 },
7171 {
7172 "name": "routerDirection",
7173 "type": "\"back\" | \"forward\" | \"root\"",
7174 "mutable": false,
7175 "attr": "router-direction",
7176 "reflectToAttr": false,
7177 "docs": "The transition direction when navigating to another page.",
7178 "docsTags": [],
7179 "default": "'forward'",
7180 "optional": false,
7181 "required": false
7182 }
7183 ],
7184 "methods": [],
7185 "events": [],
7186 "styles": [],
7187 "slots": []
7188 },
7189 {
7190 "tag": "ion-nav-pop",
7191 "filePath": "src/components/nav-pop/nav-pop.tsx",
7192 "encapsulation": "none",
7193 "readme": "# ion-nav-pop\n\n`NavPop` is a component used to automatically go back in navigation. It is the component form of `NavController.pop()`\n\n",
7194 "deprecation": "Use `<ion-nav-link routerDirection=\"back\">` instead.",
7195 "docs": "`NavPop` is a component used to automatically go back in navigation. It is the component form of `NavController.pop()`",
7196 "docsTags": [
7197 {
7198 "text": "Use `<ion-nav-link routerDirection=\"back\">` instead.",
7199 "name": "deprecated"
7200 }
7201 ],
7202 "usage": {},
7203 "props": [],
7204 "methods": [],
7205 "events": [],
7206 "styles": [],
7207 "slots": []
7208 },
7209 {
7210 "tag": "ion-nav-push",
7211 "filePath": "src/components/nav-push/nav-push.tsx",
7212 "encapsulation": "none",
7213 "readme": "# ion-nav-push\n\nNav Push is a component used to navigate to the specified component.\n\nIt is the component form of `NavController.push()`\n\n",
7214 "deprecation": "Use `<ion-nav-link component=\"MyComponent\">` instead.",
7215 "docs": "Nav Push is a component used to navigate to the specified component.\n\nIt is the component form of `NavController.push()`",
7216 "docsTags": [
7217 {
7218 "text": "Use `<ion-nav-link component=\"MyComponent\">` instead.",
7219 "name": "deprecated"
7220 }
7221 ],
7222 "usage": {},
7223 "props": [
7224 {
7225 "name": "component",
7226 "type": "Function | HTMLElement | ViewController | null | string | undefined",
7227 "mutable": false,
7228 "attr": "component",
7229 "reflectToAttr": false,
7230 "docs": "Component to navigate to",
7231 "docsTags": [],
7232 "optional": true,
7233 "required": false
7234 },
7235 {
7236 "name": "componentProps",
7237 "type": "undefined | { [key: string]: any; }",
7238 "mutable": false,
7239 "reflectToAttr": false,
7240 "docs": "Data you want to pass to the component as props",
7241 "docsTags": [],
7242 "optional": true,
7243 "required": false
7244 }
7245 ],
7246 "methods": [],
7247 "events": [],
7248 "styles": [],
7249 "slots": []
7250 },
7251 {
7252 "tag": "ion-nav-set-root",
7253 "filePath": "src/components/nav-set-root/nav-set-root.tsx",
7254 "encapsulation": "none",
7255 "readme": "# ion-nav-set-root\n\n`NavSetRoot` is a component that allows you to set the root of the current navigation stack.\nIt is the component form of calling `NavController.setRoot()`\n\n",
7256 "deprecation": "Use `<ion-nav-link component=\"MyComponent\" routerDirection=\"root\">` instead.",
7257 "docs": "`NavSetRoot` is a component that allows you to set the root of the current navigation stack.\nIt is the component form of calling `NavController.setRoot()`",
7258 "docsTags": [
7259 {
7260 "text": "Use `<ion-nav-link component=\"MyComponent\" routerDirection=\"root\">` instead.",
7261 "name": "deprecated"
7262 }
7263 ],
7264 "usage": {},
7265 "props": [
7266 {
7267 "name": "component",
7268 "type": "Function | HTMLElement | ViewController | null | string | undefined",
7269 "mutable": false,
7270 "attr": "component",
7271 "reflectToAttr": false,
7272 "docs": "Component you want to make root for the navigation stack",
7273 "docsTags": [],
7274 "optional": true,
7275 "required": false
7276 },
7277 {
7278 "name": "componentProps",
7279 "type": "undefined | { [key: string]: any; }",
7280 "mutable": false,
7281 "reflectToAttr": false,
7282 "docs": "Data you want to pass to the component as props",
7283 "docsTags": [],
7284 "optional": true,
7285 "required": false
7286 }
7287 ],
7288 "methods": [],
7289 "events": [],
7290 "styles": [],
7291 "slots": []
7292 },
7293 {
7294 "tag": "ion-note",
7295 "filePath": "src/components/note/note.tsx",
7296 "encapsulation": "shadow",
7297 "readme": "# ion-note\n\nNotes are text elements generally used as subtitles that provide more information. Notes are styled to appear grey by default. Notes can be used in an item as metadata text.\n\n",
7298 "docs": "Notes are text elements generally used as subtitles that provide more information. Notes are styled to appear grey by default. Notes can be used in an item as metadata text.",
7299 "docsTags": [
7300 {
7301 "text": "{\"ios\" | \"md\"} mode - The mode determines which platform styles to use.",
7302 "name": "virtualProp"
7303 }
7304 ],
7305 "usage": {
7306 "angular": "```html\n<!-- Default Note -->\n<ion-note>Default Note</ion-note>\n\n<!-- Note Colors -->\n<ion-note color=\"primary\">Primary Note</ion-note>\n<ion-note color=\"secondary\">Secondary Note</ion-note>\n<ion-note color=\"danger\">Danger Note</ion-note>\n<ion-note color=\"light\">Light Note</ion-note>\n<ion-note color=\"dark\">Dark Note</ion-note>\n\n<!-- Notes in a List -->\n<ion-list>\n <ion-item>\n <ion-label>Note (End)</ion-label>\n <ion-note slot=\"end\">On</ion-note>\n </ion-item>\n\n <ion-item>\n <ion-note slot=\"start\">Off</ion-note>\n <ion-label>Note (Start)</ion-label>\n </ion-item>\n</ion-list>\n```\n",
7307 "javascript": "```html\n<!-- Default Note -->\n<ion-note>Default Note</ion-note>\n\n<!-- Note Colors -->\n<ion-note color=\"primary\">Primary Note</ion-note>\n<ion-note color=\"secondary\">Secondary Note</ion-note>\n<ion-note color=\"danger\">Danger Note</ion-note>\n<ion-note color=\"light\">Light Note</ion-note>\n<ion-note color=\"dark\">Dark Note</ion-note>\n\n<!-- Notes in a List -->\n<ion-list>\n <ion-item>\n <ion-label>Note (End)</ion-label>\n <ion-note slot=\"end\">On</ion-note>\n </ion-item>\n\n <ion-item>\n <ion-note slot=\"start\">Off</ion-note>\n <ion-label>Note (Start)</ion-label>\n </ion-item>\n</ion-list>\n```\n",
7308 "react": "```tsx\nimport React from 'react';\nimport { IonNote, IonList, IonItem, IonLabel, IonContent } from '@ionic/react';\n\nexport const NoteExample: React.FC = () => (\n <IonContent>\n {/*-- Default Note --*/}\n <IonNote>Default Note</IonNote><br />\n\n {/*-- Note Colors --*/}\n <IonNote color=\"primary\">Primary Note</IonNote><br />\n <IonNote color=\"secondary\">Secondary Note</IonNote><br />\n <IonNote color=\"danger\">Danger Note</IonNote><br />\n <IonNote color=\"light\">Light Note</IonNote><br />\n <IonNote color=\"dark\">Dark Note</IonNote><br />\n\n {/*-- Notes in a List --*/}\n <IonList>\n <IonItem>\n <IonLabel>Note (End)</IonLabel>\n <IonNote slot=\"end\">On</IonNote>\n </IonItem>\n\n <IonItem>\n <IonNote slot=\"start\">Off</IonNote>\n <IonLabel>Note (Start)</IonLabel>\n </IonItem>\n </IonList>\n </IonContent>\n);\n```",
7309 "vue": "```html\n<template>\n <!-- Default Note -->\n <ion-note>Default Note</ion-note>\n\n <!-- Note Colors -->\n <ion-note color=\"primary\">Primary Note</ion-note>\n <ion-note color=\"secondary\">Secondary Note</ion-note>\n <ion-note color=\"danger\">Danger Note</ion-note>\n <ion-note color=\"light\">Light Note</ion-note>\n <ion-note color=\"dark\">Dark Note</ion-note>\n\n <!-- Notes in a List -->\n <ion-list>\n <ion-item>\n <ion-label>Note (End)</ion-label>\n <ion-note slot=\"end\">On</ion-note>\n </ion-item>\n\n <ion-item>\n <ion-note slot=\"start\">Off</ion-note>\n <ion-label>Note (Start)</ion-label>\n </ion-item>\n </ion-list>\n</template>\n```\n"
7310 },
7311 "props": [
7312 {
7313 "name": "color",
7314 "type": "string | undefined",
7315 "mutable": false,
7316 "attr": "color",
7317 "reflectToAttr": false,
7318 "docs": "The color to use from your application's color palette.\nDefault options are: `\"primary\"`, `\"secondary\"`, `\"tertiary\"`, `\"success\"`, `\"warning\"`, `\"danger\"`, `\"light\"`, `\"medium\"`, and `\"dark\"`.\nFor more information on colors, see [theming](/docs/theming/basics).",
7319 "docsTags": [],
7320 "optional": true,
7321 "required": false
7322 },
7323 {
7324 "name": "mode",
7325 "type": "\"ios\" | \"md\"",
7326 "mutable": false,
7327 "attr": "mode",
7328 "reflectToAttr": false,
7329 "docs": "The mode determines which platform styles to use.",
7330 "docsTags": [],
7331 "optional": true,
7332 "required": false
7333 }
7334 ],
7335 "methods": [],
7336 "events": [],
7337 "styles": [
7338 {
7339 "name": "--color",
7340 "annotation": "prop",
7341 "docs": "Color of the note"
7342 }
7343 ],
7344 "slots": []
7345 },
7346 {
7347 "tag": "ion-picker",
7348 "filePath": "src/components/picker/picker.tsx",
7349 "encapsulation": "scoped",
7350 "readme": "# ion-picker\n\nA Picker is a dialog that displays a row of buttons and columns underneath. It appears on top of the app's content, and at the bottom of the viewport.\n\n\n",
7351 "docs": "A Picker is a dialog that displays a row of buttons and columns underneath. It appears on top of the app's content, and at the bottom of the viewport.",
7352 "docsTags": [
7353 {
7354 "text": "{\"ios\" | \"md\"} mode - The mode determines which platform styles to use.",
7355 "name": "virtualProp"
7356 }
7357 ],
7358 "usage": {},
7359 "props": [
7360 {
7361 "name": "animated",
7362 "type": "boolean",
7363 "mutable": false,
7364 "attr": "animated",
7365 "reflectToAttr": false,
7366 "docs": "If `true`, the picker will animate.",
7367 "docsTags": [],
7368 "default": "true",
7369 "optional": false,
7370 "required": false
7371 },
7372 {
7373 "name": "backdropDismiss",
7374 "type": "boolean",
7375 "mutable": false,
7376 "attr": "backdrop-dismiss",
7377 "reflectToAttr": false,
7378 "docs": "If `true`, the picker will be dismissed when the backdrop is clicked.",
7379 "docsTags": [],
7380 "default": "true",
7381 "optional": false,
7382 "required": false
7383 },
7384 {
7385 "name": "buttons",
7386 "type": "PickerButton[]",
7387 "mutable": false,
7388 "reflectToAttr": false,
7389 "docs": "Array of buttons to be displayed at the top of the picker.",
7390 "docsTags": [],
7391 "default": "[]",
7392 "optional": false,
7393 "required": false
7394 },
7395 {
7396 "name": "columns",
7397 "type": "PickerColumn[]",
7398 "mutable": false,
7399 "reflectToAttr": false,
7400 "docs": "Array of columns to be displayed in the picker.",
7401 "docsTags": [],
7402 "default": "[]",
7403 "optional": false,
7404 "required": false
7405 },
7406 {
7407 "name": "cssClass",
7408 "type": "string | string[] | undefined",
7409 "mutable": false,
7410 "attr": "css-class",
7411 "reflectToAttr": false,
7412 "docs": "Additional classes to apply for custom CSS. If multiple classes are\nprovided they should be separated by spaces.",
7413 "docsTags": [],
7414 "optional": true,
7415 "required": false
7416 },
7417 {
7418 "name": "duration",
7419 "type": "number",
7420 "mutable": false,
7421 "attr": "duration",
7422 "reflectToAttr": false,
7423 "docs": "Number of milliseconds to wait before dismissing the picker.",
7424 "docsTags": [],
7425 "default": "0",
7426 "optional": false,
7427 "required": false
7428 },
7429 {
7430 "name": "enterAnimation",
7431 "type": "((Animation: Animation, baseEl: any, opts?: any) => Promise<Animation>) | undefined",
7432 "mutable": false,
7433 "reflectToAttr": false,
7434 "docs": "Animation to use when the picker is presented.",
7435 "docsTags": [],
7436 "optional": true,
7437 "required": false
7438 },
7439 {
7440 "name": "keyboardClose",
7441 "type": "boolean",
7442 "mutable": false,
7443 "attr": "keyboard-close",
7444 "reflectToAttr": false,
7445 "docs": "If `true`, the keyboard will be automatically dismissed when the overlay is presented.",
7446 "docsTags": [],
7447 "default": "true",
7448 "optional": false,
7449 "required": false
7450 },
7451 {
7452 "name": "leaveAnimation",
7453 "type": "((Animation: Animation, baseEl: any, opts?: any) => Promise<Animation>) | undefined",
7454 "mutable": false,
7455 "reflectToAttr": false,
7456 "docs": "Animation to use when the picker is dismissed.",
7457 "docsTags": [],
7458 "optional": true,
7459 "required": false
7460 },
7461 {
7462 "name": "mode",
7463 "type": "\"ios\" | \"md\"",
7464 "mutable": false,
7465 "attr": "mode",
7466 "reflectToAttr": false,
7467 "docs": "The mode determines which platform styles to use.",
7468 "docsTags": [],
7469 "optional": true,
7470 "required": false
7471 },
7472 {
7473 "name": "showBackdrop",
7474 "type": "boolean",
7475 "mutable": false,
7476 "attr": "show-backdrop",
7477 "reflectToAttr": false,
7478 "docs": "If `true`, a backdrop will be displayed behind the picker.",
7479 "docsTags": [],
7480 "default": "true",
7481 "optional": false,
7482 "required": false
7483 }
7484 ],
7485 "methods": [
7486 {
7487 "name": "dismiss",
7488 "returns": {
7489 "type": "Promise<boolean>",
7490 "docs": ""
7491 },
7492 "signature": "dismiss(data?: any, role?: string | undefined) => Promise<boolean>",
7493 "parameters": [],
7494 "docs": "Dismiss the picker overlay after it has been presented.",
7495 "docsTags": [
7496 {
7497 "name": "param",
7498 "text": "data Any data to emit in the dismiss events."
7499 },
7500 {
7501 "name": "param",
7502 "text": "role The role of the element that is dismissing the picker.\nThis can be useful in a button handler for determining which button was\nclicked to dismiss the picker.\nSome examples include: ``\"cancel\"`, `\"destructive\"`, \"selected\"`, and `\"backdrop\"`."
7503 }
7504 ]
7505 },
7506 {
7507 "name": "getColumn",
7508 "returns": {
7509 "type": "Promise<PickerColumn | undefined>",
7510 "docs": ""
7511 },
7512 "signature": "getColumn(name: string) => Promise<PickerColumn | undefined>",
7513 "parameters": [],
7514 "docs": "Get the column that matches the specified name.",
7515 "docsTags": [
7516 {
7517 "name": "param",
7518 "text": "name The name of the column."
7519 }
7520 ]
7521 },
7522 {
7523 "name": "onDidDismiss",
7524 "returns": {
7525 "type": "Promise<OverlayEventDetail<any>>",
7526 "docs": ""
7527 },
7528 "signature": "onDidDismiss() => Promise<OverlayEventDetail<any>>",
7529 "parameters": [],
7530 "docs": "Returns a promise that resolves when the picker did dismiss.",
7531 "docsTags": []
7532 },
7533 {
7534 "name": "onWillDismiss",
7535 "returns": {
7536 "type": "Promise<OverlayEventDetail<any>>",
7537 "docs": ""
7538 },
7539 "signature": "onWillDismiss() => Promise<OverlayEventDetail<any>>",
7540 "parameters": [],
7541 "docs": "Returns a promise that resolves when the picker will dismiss.",
7542 "docsTags": []
7543 },
7544 {
7545 "name": "present",
7546 "returns": {
7547 "type": "Promise<void>",
7548 "docs": ""
7549 },
7550 "signature": "present() => Promise<void>",
7551 "parameters": [],
7552 "docs": "Present the picker overlay after it has been created.",
7553 "docsTags": []
7554 }
7555 ],
7556 "events": [
7557 {
7558 "event": "ionPickerDidDismiss",
7559 "detail": "OverlayEventDetail<any>",
7560 "bubbles": true,
7561 "cancelable": true,
7562 "composed": true,
7563 "docs": "Emitted after the picker has dismissed.",
7564 "docsTags": []
7565 },
7566 {
7567 "event": "ionPickerDidPresent",
7568 "detail": "void",
7569 "bubbles": true,
7570 "cancelable": true,
7571 "composed": true,
7572 "docs": "Emitted after the picker has presented.",
7573 "docsTags": []
7574 },
7575 {
7576 "event": "ionPickerWillDismiss",
7577 "detail": "OverlayEventDetail<any>",
7578 "bubbles": true,
7579 "cancelable": true,
7580 "composed": true,
7581 "docs": "Emitted before the picker has dismissed.",
7582 "docsTags": []
7583 },
7584 {
7585 "event": "ionPickerWillPresent",
7586 "detail": "void",
7587 "bubbles": true,
7588 "cancelable": true,
7589 "composed": true,
7590 "docs": "Emitted before the picker has presented.",
7591 "docsTags": []
7592 }
7593 ],
7594 "styles": [
7595 {
7596 "name": "--background",
7597 "annotation": "prop",
7598 "docs": "Background of the picker"
7599 },
7600 {
7601 "name": "--background-rgb",
7602 "annotation": "prop",
7603 "docs": "Background of the picker in rgb format"
7604 },
7605 {
7606 "name": "--border-color",
7607 "annotation": "prop",
7608 "docs": "Border color of the picker"
7609 },
7610 {
7611 "name": "--border-radius",
7612 "annotation": "prop",
7613 "docs": "Border radius of the picker"
7614 },
7615 {
7616 "name": "--border-style",
7617 "annotation": "prop",
7618 "docs": "Border style of the picker"
7619 },
7620 {
7621 "name": "--border-width",
7622 "annotation": "prop",
7623 "docs": "Border width of the picker"
7624 },
7625 {
7626 "name": "--height",
7627 "annotation": "prop",
7628 "docs": "Height of the picker"
7629 },
7630 {
7631 "name": "--max-height",
7632 "annotation": "prop",
7633 "docs": "Maximum height of the picker"
7634 },
7635 {
7636 "name": "--max-width",
7637 "annotation": "prop",
7638 "docs": "Maximum width of the picker"
7639 },
7640 {
7641 "name": "--min-height",
7642 "annotation": "prop",
7643 "docs": "Minimum height of the picker"
7644 },
7645 {
7646 "name": "--min-width",
7647 "annotation": "prop",
7648 "docs": "Minimum width of the picker"
7649 },
7650 {
7651 "name": "--width",
7652 "annotation": "prop",
7653 "docs": "Width of the picker"
7654 }
7655 ],
7656 "slots": []
7657 },
7658 {
7659 "tag": "ion-picker-controller",
7660 "filePath": "src/components/picker-controller/picker-controller.tsx",
7661 "encapsulation": "none",
7662 "readme": "# ion-picker-controller\n\n\n",
7663 "deprecation": "Use the `pickerController` exported from core.",
7664 "docs": "",
7665 "docsTags": [
7666 {
7667 "text": "Use the `pickerController` exported from core.",
7668 "name": "deprecated"
7669 }
7670 ],
7671 "usage": {},
7672 "props": [],
7673 "methods": [
7674 {
7675 "name": "create",
7676 "returns": {
7677 "type": "Promise<HTMLIonPickerElement>",
7678 "docs": ""
7679 },
7680 "signature": "create(options: PickerOptions) => Promise<HTMLIonPickerElement>",
7681 "parameters": [],
7682 "docs": "Create a picker overlay with picker options.",
7683 "docsTags": [
7684 {
7685 "name": "param",
7686 "text": "options The options to use to create the picker."
7687 }
7688 ]
7689 },
7690 {
7691 "name": "dismiss",
7692 "returns": {
7693 "type": "Promise<boolean>",
7694 "docs": ""
7695 },
7696 "signature": "dismiss(data?: any, role?: string | undefined, id?: string | undefined) => Promise<boolean>",
7697 "parameters": [],
7698 "docs": "Dismiss the open picker overlay.",
7699 "docsTags": [
7700 {
7701 "name": "param",
7702 "text": "data Any data to emit in the dismiss events."
7703 },
7704 {
7705 "name": "param",
7706 "text": "role The role of the element that is dismissing the picker.\nThis can be useful in a button handler for determining which button was\nclicked to dismiss the picker.\nSome examples include: ``\"cancel\"`, `\"destructive\"`, \"selected\"`, and `\"backdrop\"`."
7707 },
7708 {
7709 "name": "param",
7710 "text": "id The id of the picker to dismiss. If an id is not provided, it will dismiss the most recently opened picker."
7711 }
7712 ]
7713 },
7714 {
7715 "name": "getTop",
7716 "returns": {
7717 "type": "Promise<HTMLIonPickerElement | undefined>",
7718 "docs": ""
7719 },
7720 "signature": "getTop() => Promise<HTMLIonPickerElement | undefined>",
7721 "parameters": [],
7722 "docs": "Get the most recently opened picker overlay.",
7723 "docsTags": []
7724 }
7725 ],
7726 "events": [],
7727 "styles": [],
7728 "slots": []
7729 },
7730 {
7731 "tag": "ion-popover",
7732 "filePath": "src/components/popover/popover.tsx",
7733 "encapsulation": "scoped",
7734 "readme": "# ion-popover\n\nA Popover is a dialog that appears on top of the current page. It can be used for anything, but generally it is used for overflow actions that don't fit in the navigation bar.\n\n### Creating\n\nPopovers can be created using a [Popover Controller](../popover-controller). They can be customized by passing popover options in the popover controller's create method.\n\n### Presenting\n\nTo present a popover, call the `present` method on a popover instance. In order to position the popover relative to the element clicked, a click event needs to be passed into the options of the the `present` method. If the event is not passed, the popover will be positioned in the center of the viewport.\n\n",
7735 "docs": "A Popover is a dialog that appears on top of the current page. It can be used for anything, but generally it is used for overflow actions that don't fit in the navigation bar.",
7736 "docsTags": [
7737 {
7738 "text": "{\"ios\" | \"md\"} mode - The mode determines which platform styles to use.",
7739 "name": "virtualProp"
7740 }
7741 ],
7742 "usage": {
7743 "angular": "```typescript\nimport { Component } from '@angular/core';\nimport { PopoverController } from '@ionic/angular';\nimport { PopoverComponent } from '../../component/popover/popover.component';\n\n@Component({\n selector: 'popover-example',\n templateUrl: 'popover-example.html',\n styleUrls: ['./popover-example.css']\n})\nexport class PopoverExample {\n constructor(public popoverController: PopoverController) {}\n\n async presentPopover(ev: any) {\n const popover = await this.popoverController.create({\n component: PopoverComponent,\n event: ev,\n translucent: true\n });\n return await popover.present();\n }\n}\n```\n",
7744 "javascript": "```javascript\nfunction presentPopover(ev) {\n const popover = Object.assing(document.createElement('ion-popover'), {\n component: 'popover-example-page',\n event: ev,\n translucent: true\n });\n document.body.appendChild(popover);\n return popover.present();\n}\n```\n",
7745 "react": "```tsx\nimport React, { useState } from 'react';\nimport { IonPopover, IonButton } from '@ionic/react';\n\nexport const PopoverExample: React.FC = () => {\n const [showPopover, setShowPopover] = useState(false);\n\n return (\n <>\n <IonPopover\n isOpen={showPopover}\n onDidDismiss={e => setShowPopover(false)}\n >\n <p>This is popover content</p>\n </IonPopover>\n <IonButton onClick={() => setShowPopover(true)}>Show Popover</IonButton>\n </>\n );\n};\n```"
7746 },
7747 "props": [
7748 {
7749 "name": "animated",
7750 "type": "boolean",
7751 "mutable": false,
7752 "attr": "animated",
7753 "reflectToAttr": false,
7754 "docs": "If `true`, the popover will animate.",
7755 "docsTags": [],
7756 "default": "true",
7757 "optional": false,
7758 "required": false
7759 },
7760 {
7761 "name": "backdropDismiss",
7762 "type": "boolean",
7763 "mutable": false,
7764 "attr": "backdrop-dismiss",
7765 "reflectToAttr": false,
7766 "docs": "If `true`, the popover will be dismissed when the backdrop is clicked.",
7767 "docsTags": [],
7768 "default": "true",
7769 "optional": false,
7770 "required": false
7771 },
7772 {
7773 "name": "component",
7774 "type": "Function | HTMLElement | null | string",
7775 "mutable": false,
7776 "attr": "component",
7777 "reflectToAttr": false,
7778 "docs": "The component to display inside of the popover.",
7779 "docsTags": [],
7780 "optional": false,
7781 "required": true
7782 },
7783 {
7784 "name": "componentProps",
7785 "type": "undefined | { [key: string]: any; }",
7786 "mutable": false,
7787 "reflectToAttr": false,
7788 "docs": "The data to pass to the popover component.",
7789 "docsTags": [],
7790 "optional": true,
7791 "required": false
7792 },
7793 {
7794 "name": "cssClass",
7795 "type": "string | string[] | undefined",
7796 "mutable": false,
7797 "attr": "css-class",
7798 "reflectToAttr": false,
7799 "docs": "Additional classes to apply for custom CSS. If multiple classes are\nprovided they should be separated by spaces.",
7800 "docsTags": [],
7801 "optional": true,
7802 "required": false
7803 },
7804 {
7805 "name": "enterAnimation",
7806 "type": "((Animation: Animation, baseEl: any, opts?: any) => Promise<Animation>) | undefined",
7807 "mutable": false,
7808 "reflectToAttr": false,
7809 "docs": "Animation to use when the popover is presented.",
7810 "docsTags": [],
7811 "optional": true,
7812 "required": false
7813 },
7814 {
7815 "name": "event",
7816 "type": "any",
7817 "mutable": false,
7818 "attr": "event",
7819 "reflectToAttr": false,
7820 "docs": "The event to pass to the popover animation.",
7821 "docsTags": [],
7822 "optional": false,
7823 "required": false
7824 },
7825 {
7826 "name": "keyboardClose",
7827 "type": "boolean",
7828 "mutable": false,
7829 "attr": "keyboard-close",
7830 "reflectToAttr": false,
7831 "docs": "If `true`, the keyboard will be automatically dismissed when the overlay is presented.",
7832 "docsTags": [],
7833 "default": "true",
7834 "optional": false,
7835 "required": false
7836 },
7837 {
7838 "name": "leaveAnimation",
7839 "type": "((Animation: Animation, baseEl: any, opts?: any) => Promise<Animation>) | undefined",
7840 "mutable": false,
7841 "reflectToAttr": false,
7842 "docs": "Animation to use when the popover is dismissed.",
7843 "docsTags": [],
7844 "optional": true,
7845 "required": false
7846 },
7847 {
7848 "name": "mode",
7849 "type": "\"ios\" | \"md\"",
7850 "mutable": false,
7851 "attr": "mode",
7852 "reflectToAttr": false,
7853 "docs": "The mode determines which platform styles to use.",
7854 "docsTags": [],
7855 "optional": true,
7856 "required": false
7857 },
7858 {
7859 "name": "showBackdrop",
7860 "type": "boolean",
7861 "mutable": false,
7862 "attr": "show-backdrop",
7863 "reflectToAttr": false,
7864 "docs": "If `true`, a backdrop will be displayed behind the popover.",
7865 "docsTags": [],
7866 "default": "true",
7867 "optional": false,
7868 "required": false
7869 },
7870 {
7871 "name": "translucent",
7872 "type": "boolean",
7873 "mutable": false,
7874 "attr": "translucent",
7875 "reflectToAttr": false,
7876 "docs": "If `true`, the popover will be translucent.\nOnly applies when the mode is `\"ios\"` and the device supports\n[`backdrop-filter`](https://developer.mozilla.org/en-US/docs/Web/CSS/backdrop-filter#Browser_compatibility).",
7877 "docsTags": [],
7878 "default": "false",
7879 "optional": false,
7880 "required": false
7881 }
7882 ],
7883 "methods": [
7884 {
7885 "name": "dismiss",
7886 "returns": {
7887 "type": "Promise<boolean>",
7888 "docs": ""
7889 },
7890 "signature": "dismiss(data?: any, role?: string | undefined) => Promise<boolean>",
7891 "parameters": [],
7892 "docs": "Dismiss the popover overlay after it has been presented.",
7893 "docsTags": [
7894 {
7895 "name": "param",
7896 "text": "data Any data to emit in the dismiss events."
7897 },
7898 {
7899 "name": "param",
7900 "text": "role The role of the element that is dismissing the popover. For example, 'cancel' or 'backdrop'."
7901 }
7902 ]
7903 },
7904 {
7905 "name": "onDidDismiss",
7906 "returns": {
7907 "type": "Promise<OverlayEventDetail<any>>",
7908 "docs": ""
7909 },
7910 "signature": "onDidDismiss() => Promise<OverlayEventDetail<any>>",
7911 "parameters": [],
7912 "docs": "Returns a promise that resolves when the popover did dismiss.",
7913 "docsTags": []
7914 },
7915 {
7916 "name": "onWillDismiss",
7917 "returns": {
7918 "type": "Promise<OverlayEventDetail<any>>",
7919 "docs": ""
7920 },
7921 "signature": "onWillDismiss() => Promise<OverlayEventDetail<any>>",
7922 "parameters": [],
7923 "docs": "Returns a promise that resolves when the popover will dismiss.",
7924 "docsTags": []
7925 },
7926 {
7927 "name": "present",
7928 "returns": {
7929 "type": "Promise<void>",
7930 "docs": ""
7931 },
7932 "signature": "present() => Promise<void>",
7933 "parameters": [],
7934 "docs": "Present the popover overlay after it has been created.",
7935 "docsTags": []
7936 }
7937 ],
7938 "events": [
7939 {
7940 "event": "ionPopoverDidDismiss",
7941 "detail": "OverlayEventDetail<any>",
7942 "bubbles": true,
7943 "cancelable": true,
7944 "composed": true,
7945 "docs": "Emitted after the popover has dismissed.",
7946 "docsTags": []
7947 },
7948 {
7949 "event": "ionPopoverDidPresent",
7950 "detail": "void",
7951 "bubbles": true,
7952 "cancelable": true,
7953 "composed": true,
7954 "docs": "Emitted after the popover has presented.",
7955 "docsTags": []
7956 },
7957 {
7958 "event": "ionPopoverWillDismiss",
7959 "detail": "OverlayEventDetail<any>",
7960 "bubbles": true,
7961 "cancelable": true,
7962 "composed": true,
7963 "docs": "Emitted before the popover has dismissed.",
7964 "docsTags": []
7965 },
7966 {
7967 "event": "ionPopoverWillPresent",
7968 "detail": "void",
7969 "bubbles": true,
7970 "cancelable": true,
7971 "composed": true,
7972 "docs": "Emitted before the popover has presented.",
7973 "docsTags": []
7974 }
7975 ],
7976 "styles": [
7977 {
7978 "name": "--background",
7979 "annotation": "prop",
7980 "docs": "Background of the popover"
7981 },
7982 {
7983 "name": "--box-shadow",
7984 "annotation": "prop",
7985 "docs": "Box shadow of the popover"
7986 },
7987 {
7988 "name": "--height",
7989 "annotation": "prop",
7990 "docs": "Height of the popover"
7991 },
7992 {
7993 "name": "--max-height",
7994 "annotation": "prop",
7995 "docs": "Maximum height of the popover"
7996 },
7997 {
7998 "name": "--max-width",
7999 "annotation": "prop",
8000 "docs": "Maximum width of the popover"
8001 },
8002 {
8003 "name": "--min-height",
8004 "annotation": "prop",
8005 "docs": "Minimum height of the popover"
8006 },
8007 {
8008 "name": "--min-width",
8009 "annotation": "prop",
8010 "docs": "Minimum width of the popover"
8011 },
8012 {
8013 "name": "--width",
8014 "annotation": "prop",
8015 "docs": "Width of the popover"
8016 }
8017 ],
8018 "slots": []
8019 },
8020 {
8021 "tag": "ion-popover-controller",
8022 "filePath": "src/components/popover-controller/popover-controller.tsx",
8023 "encapsulation": "none",
8024 "readme": "# ion-popover-controller\n\nPopover controllers programmatically control the popover component. Popovers can be created and dismissed from the popover controller. View the [Popover](../popover) documentation for a full list of options to pass upon creation.\n\n",
8025 "deprecation": "Use the `popoverController` exported from core.",
8026 "docs": "Popover controllers programmatically control the popover component. Popovers can be created and dismissed from the popover controller. View the [Popover](../popover) documentation for a full list of options to pass upon creation.",
8027 "docsTags": [
8028 {
8029 "text": "Use the `popoverController` exported from core.",
8030 "name": "deprecated"
8031 }
8032 ],
8033 "usage": {
8034 "javascript": "```javascript\nasync function presentPopover() {\n const popoverElement = Object.assing(document.createElement('ion-popover'), {\n component: 'profile-page',\n event: event\n });\n document.body.appendChild(popoverElement);\n return await popoverElement.present();\n}\n```\n"
8035 },
8036 "props": [],
8037 "methods": [
8038 {
8039 "name": "create",
8040 "returns": {
8041 "type": "Promise<HTMLIonPopoverElement>",
8042 "docs": ""
8043 },
8044 "signature": "create<T extends ComponentRef>(options: PopoverOptions<T>) => Promise<HTMLIonPopoverElement>",
8045 "parameters": [],
8046 "docs": "Create a popover overlay with popover options.",
8047 "docsTags": [
8048 {
8049 "name": "param",
8050 "text": "options The options to use to create the popover."
8051 }
8052 ]
8053 },
8054 {
8055 "name": "dismiss",
8056 "returns": {
8057 "type": "Promise<boolean>",
8058 "docs": ""
8059 },
8060 "signature": "dismiss(data?: any, role?: string | undefined, id?: string | undefined) => Promise<boolean>",
8061 "parameters": [],
8062 "docs": "Dismiss the open popover overlay.",
8063 "docsTags": [
8064 {
8065 "name": "param",
8066 "text": "data Any data to emit in the dismiss events."
8067 },
8068 {
8069 "name": "param",
8070 "text": "role The role of the element that is dismissing the popover.\nThis can be useful in a button handler for determining which button was\nclicked to dismiss the popover.\nSome examples include: ``\"cancel\"`, `\"destructive\"`, \"selected\"`, and `\"backdrop\"`."
8071 },
8072 {
8073 "name": "param",
8074 "text": "id The id of the popover to dismiss. If an id is not provided, it will dismiss the most recently opened popover."
8075 }
8076 ]
8077 },
8078 {
8079 "name": "getTop",
8080 "returns": {
8081 "type": "Promise<HTMLIonPopoverElement | undefined>",
8082 "docs": ""
8083 },
8084 "signature": "getTop() => Promise<HTMLIonPopoverElement | undefined>",
8085 "parameters": [],
8086 "docs": "Get the most recently opened popover overlay.",
8087 "docsTags": []
8088 }
8089 ],
8090 "events": [],
8091 "styles": [],
8092 "slots": []
8093 },
8094 {
8095 "tag": "ion-progress-bar",
8096 "filePath": "src/components/progress-bar/progress-bar.tsx",
8097 "encapsulation": "shadow",
8098 "readme": "# ion-progress-bar\n\nion-progress-bar is a horizontal progress bar to visualize the progression of an operation and activity. You can choose between two types: `determinate` and `indeterminate`.\n\n## Progress Type\n\n### Determinate\n\nIf the percentage of an operation is known, you should use the determinate type. This is the default type and the progress is represented by the `value` property.\n\nA buffer shows circles as animation to indicate some activity. If the `buffer` property is smaller than 1 you can show the addditional buffering progress.\n\n### Indeterminate\n\nIf an operation is in progress and it's not necessary to indicate how long it will take.\n\nIf you add `reversed=\"true\"`, you receive a query which is used to indicate pre-loading.\n",
8099 "docs": "ion-progress-bar is a horizontal progress bar to visualize the progression of an operation and activity. You can choose between two types: `determinate` and `indeterminate`.",
8100 "docsTags": [
8101 {
8102 "text": "{\"ios\" | \"md\"} mode - The mode determines which platform styles to use.",
8103 "name": "virtualProp"
8104 }
8105 ],
8106 "usage": {
8107 "javascript": "```html\n<!-- Default Progressbar -->\n<ion-progress-bar></ion-progress-bar>\n\n<!-- Default Progressbar with 50 percent -->\n<ion-progress-bar value=\"0.5\"></ion-progress-bar>\n\n<!-- Colorize Progressbar -->\n<ion-progress-bar color=\"primary\" value=\"0.5\"></ion-progress-bar>\n<ion-progress-bar color=\"secondary\" value=\"0.5\"></ion-progress-bar>\n\n<!-- Other types -->\n<ion-progress-bar value=\"0.25\" buffer=\"0.5\"></ion-progress-bar>\n<ion-progress-bar type=\"indeterminate\"></ion-progress-bar>\n<ion-progress-bar type=\"indeterminate\" reversed=\"true\"></ion-progress-bar>\n```\n",
8108 "react": "```tsx\nimport React from 'react';\nimport { IonProgressBar, IonContent } from '@ionic/react';\n\nexport const ProgressbarExample: React.FC = () => (\n <IonContent>\n {/*-- Default Progressbar --*/}\n <IonProgressBar></IonProgressBar><br />\n\n {/*-- Default Progressbar with 50 percent --*/}\n <IonProgressBar value={0.5}></IonProgressBar><br />\n\n {/*-- Colorize Progressbar --*/}\n <IonProgressBar color=\"primary\" value={0.5}></IonProgressBar><br />\n <IonProgressBar color=\"secondary\" value={0.5}></IonProgressBar><br />\n\n {/*-- Other types --*/}\n <IonProgressBar value={0.25} buffer={0.5}></IonProgressBar><br />\n <IonProgressBar type=\"indeterminate\"></IonProgressBar><br />\n <IonProgressBar type=\"indeterminate\" reversed={true}></IonProgressBar><br />\n </IonContent>\n);\n```\n"
8109 },
8110 "props": [
8111 {
8112 "name": "buffer",
8113 "type": "number",
8114 "mutable": false,
8115 "attr": "buffer",
8116 "reflectToAttr": false,
8117 "docs": "If the buffer and value are smaller than 1, the buffer circles will show.\nThe buffer should be between [0, 1].",
8118 "docsTags": [],
8119 "default": "1",
8120 "optional": false,
8121 "required": false
8122 },
8123 {
8124 "name": "color",
8125 "type": "string | undefined",
8126 "mutable": false,
8127 "attr": "color",
8128 "reflectToAttr": false,
8129 "docs": "The color to use from your application's color palette.\nDefault options are: `\"primary\"`, `\"secondary\"`, `\"tertiary\"`, `\"success\"`, `\"warning\"`, `\"danger\"`, `\"light\"`, `\"medium\"`, and `\"dark\"`.\nFor more information on colors, see [theming](/docs/theming/basics).",
8130 "docsTags": [],
8131 "optional": true,
8132 "required": false
8133 },
8134 {
8135 "name": "mode",
8136 "type": "\"ios\" | \"md\"",
8137 "mutable": false,
8138 "attr": "mode",
8139 "reflectToAttr": false,
8140 "docs": "The mode determines which platform styles to use.",
8141 "docsTags": [],
8142 "optional": true,
8143 "required": false
8144 },
8145 {
8146 "name": "reversed",
8147 "type": "boolean",
8148 "mutable": false,
8149 "attr": "reversed",
8150 "reflectToAttr": false,
8151 "docs": "If true, reverse the progress bar direction.",
8152 "docsTags": [],
8153 "default": "false",
8154 "optional": false,
8155 "required": false
8156 },
8157 {
8158 "name": "type",
8159 "type": "\"determinate\" | \"indeterminate\"",
8160 "mutable": false,
8161 "attr": "type",
8162 "reflectToAttr": false,
8163 "docs": "The state of the progress bar, based on if the time the process takes is known or not.\nDefault options are: `\"determinate\"` (no animation), `\"indeterminate\"` (animate from left to right).",
8164 "docsTags": [],
8165 "default": "'determinate'",
8166 "optional": false,
8167 "required": false
8168 },
8169 {
8170 "name": "value",
8171 "type": "number",
8172 "mutable": false,
8173 "attr": "value",
8174 "reflectToAttr": false,
8175 "docs": "The value determines how much of the active bar should display when the\n`type` is `\"determinate\"`.\nThe value should be between [0, 1].",
8176 "docsTags": [],
8177 "default": "0",
8178 "optional": false,
8179 "required": false
8180 }
8181 ],
8182 "methods": [],
8183 "events": [],
8184 "styles": [
8185 {
8186 "name": "--background",
8187 "annotation": "prop",
8188 "docs": "Same as --buffer-background when using a determinate progress bar, otherwise it styles the background of the ion-progress-bar itself."
8189 },
8190 {
8191 "name": "--buffer-background",
8192 "annotation": "prop",
8193 "docs": "Color of the buffer bar"
8194 },
8195 {
8196 "name": "--progress-background",
8197 "annotation": "prop",
8198 "docs": "Color of the progress bar"
8199 }
8200 ],
8201 "slots": []
8202 },
8203 {
8204 "tag": "ion-radio",
8205 "filePath": "src/components/radio/radio.tsx",
8206 "encapsulation": "shadow",
8207 "readme": "# ion-radio\n\nRadios are generally used as a set of related options inside of a group, but they can also be used alone. Pressing on a radio will check it. They can also be checked programmatically by setting the `checked` property.\n\nAn `ion-radio-group` can be used to group a set of radios. When radios are inside of a [radio group](../radio-group), only one radio in the group will be checked at any time. Pressing a radio will check it and uncheck the previously selected radio, if there is one. If a radio is not in a group with another radio, then both radios will have the ability to be checked at the same time.\n\n\n\n",
8208 "docs": "Radios are generally used as a set of related options inside of a group, but they can also be used alone. Pressing on a radio will check it. They can also be checked programmatically by setting the `checked` property.\n\nAn `ion-radio-group` can be used to group a set of radios. When radios are inside of a [radio group](../radio-group), only one radio in the group will be checked at any time. Pressing a radio will check it and uncheck the previously selected radio, if there is one. If a radio is not in a group with another radio, then both radios will have the ability to be checked at the same time.",
8209 "docsTags": [
8210 {
8211 "text": "{\"ios\" | \"md\"} mode - The mode determines which platform styles to use.",
8212 "name": "virtualProp"
8213 }
8214 ],
8215 "usage": {
8216 "angular": "```html\n<ion-list>\n <ion-radio-group>\n <ion-list-header>\n <ion-label>Name</ion-label>\n </ion-list-header>\n\n <ion-item>\n <ion-label>Biff</ion-label>\n <ion-radio slot=\"start\" value=\"biff\" checked></ion-radio>\n </ion-item>\n\n <ion-item>\n <ion-label>Griff</ion-label>\n <ion-radio slot=\"start\" value=\"griff\"></ion-radio>\n </ion-item>\n\n <ion-item>\n <ion-label>Buford</ion-label>\n <ion-radio slot=\"start\" value=\"buford\"></ion-radio>\n </ion-item>\n </ion-radio-group>\n</ion-list>\n```\n",
8217 "javascript": "```html\n<ion-list>\n <ion-radio-group>\n <ion-list-header>\n <ion-label>Name</ion-label>\n </ion-list-header>\n\n <ion-item>\n <ion-label>Biff</ion-label>\n <ion-radio slot=\"start\" value=\"biff\" checked></ion-radio>\n </ion-item>\n\n <ion-item>\n <ion-label>Griff</ion-label>\n <ion-radio slot=\"start\" value=\"griff\"></ion-radio>\n </ion-item>\n\n <ion-item>\n <ion-label>Buford</ion-label>\n <ion-radio slot=\"start\" value=\"buford\"></ion-radio>\n </ion-item>\n </ion-radio-group>\n</ion-list>\n```\n",
8218 "react": "```tsx\nimport React from 'react';\nimport { IonList, IonRadioGroup, IonListHeader, IonLabel, IonItem, IonRadio, IonContent } from '@ionic/react';\n\nexport const RadioExample: React.FC = () => (\n <IonContent>\n <IonList>\n <IonRadioGroup>\n <IonListHeader>\n <IonLabel>Name</IonLabel>\n </IonListHeader>\n\n <IonItem>\n <IonLabel>Biff</IonLabel>\n <IonRadio slot=\"start\" value=\"biff\" checked />\n </IonItem>\n\n <IonItem>\n <IonLabel>Griff</IonLabel>\n <IonRadio slot=\"start\" value=\"griff\" />\n </IonItem>\n\n <IonItem>\n <IonLabel>Buford</IonLabel>\n <IonRadio slot=\"start\" value=\"buford\" />\n </IonItem>\n </IonRadioGroup>\n </IonList>\n </IonContent>\n);\n```",
8219 "vue": "```html\n<template>\n <ion-list>\n <ion-radio-group>\n <ion-list-header>\n <ion-label>Name</ion-label>\n </ion-list-header>\n\n <ion-item>\n <ion-label>Biff</ion-label>\n <ion-radio slot=\"start\" value=\"biff\" checked></ion-radio>\n </ion-item>\n\n <ion-item>\n <ion-label>Griff</ion-label>\n <ion-radio slot=\"start\" value=\"griff\"></ion-radio>\n </ion-item>\n\n <ion-item>\n <ion-label>Buford</ion-label>\n <ion-radio slot=\"start\" value=\"buford\"></ion-radio>\n </ion-item>\n </ion-radio-group>\n </ion-list>\n</template>\n```\n"
8220 },
8221 "props": [
8222 {
8223 "name": "checked",
8224 "type": "boolean",
8225 "mutable": true,
8226 "attr": "checked",
8227 "reflectToAttr": false,
8228 "docs": "If `true`, the radio is selected.",
8229 "docsTags": [],
8230 "default": "false",
8231 "optional": false,
8232 "required": false
8233 },
8234 {
8235 "name": "color",
8236 "type": "string | undefined",
8237 "mutable": false,
8238 "attr": "color",
8239 "reflectToAttr": false,
8240 "docs": "The color to use from your application's color palette.\nDefault options are: `\"primary\"`, `\"secondary\"`, `\"tertiary\"`, `\"success\"`, `\"warning\"`, `\"danger\"`, `\"light\"`, `\"medium\"`, and `\"dark\"`.\nFor more information on colors, see [theming](/docs/theming/basics).",
8241 "docsTags": [],
8242 "optional": true,
8243 "required": false
8244 },
8245 {
8246 "name": "disabled",
8247 "type": "boolean",
8248 "mutable": false,
8249 "attr": "disabled",
8250 "reflectToAttr": false,
8251 "docs": "If `true`, the user cannot interact with the radio.",
8252 "docsTags": [],
8253 "default": "false",
8254 "optional": false,
8255 "required": false
8256 },
8257 {
8258 "name": "mode",
8259 "type": "\"ios\" | \"md\"",
8260 "mutable": false,
8261 "attr": "mode",
8262 "reflectToAttr": false,
8263 "docs": "The mode determines which platform styles to use.",
8264 "docsTags": [],
8265 "optional": true,
8266 "required": false
8267 },
8268 {
8269 "name": "name",
8270 "type": "string",
8271 "mutable": false,
8272 "attr": "name",
8273 "reflectToAttr": false,
8274 "docs": "The name of the control, which is submitted with the form data.",
8275 "docsTags": [],
8276 "default": "this.inputId",
8277 "optional": false,
8278 "required": false
8279 },
8280 {
8281 "name": "value",
8282 "type": "any",
8283 "mutable": true,
8284 "attr": "value",
8285 "reflectToAttr": false,
8286 "docs": "the value of the radio.",
8287 "docsTags": [],
8288 "optional": true,
8289 "required": false
8290 }
8291 ],
8292 "methods": [],
8293 "events": [
8294 {
8295 "event": "ionBlur",
8296 "detail": "void",
8297 "bubbles": true,
8298 "cancelable": true,
8299 "composed": true,
8300 "docs": "Emitted when the radio button loses focus.",
8301 "docsTags": []
8302 },
8303 {
8304 "event": "ionFocus",
8305 "detail": "void",
8306 "bubbles": true,
8307 "cancelable": true,
8308 "composed": true,
8309 "docs": "Emitted when the radio button has focus.",
8310 "docsTags": []
8311 },
8312 {
8313 "event": "ionSelect",
8314 "detail": "RadioChangeEventDetail",
8315 "bubbles": true,
8316 "cancelable": true,
8317 "composed": true,
8318 "docs": "Emitted when the radio button is selected.",
8319 "docsTags": []
8320 }
8321 ],
8322 "styles": [
8323 {
8324 "name": "--color",
8325 "annotation": "prop",
8326 "docs": "Color of the radio"
8327 },
8328 {
8329 "name": "--color-checked",
8330 "annotation": "prop",
8331 "docs": "Color of the checked radio"
8332 }
8333 ],
8334 "slots": []
8335 },
8336 {
8337 "tag": "ion-radio-group",
8338 "filePath": "src/components/radio-group/radio-group.tsx",
8339 "encapsulation": "none",
8340 "readme": "# ion-radio-group\n\nA radio group is a group of [radio buttons](../radio). It allows\na user to select at most one radio button from a set. Checking one radio\nbutton that belongs to a radio group unchecks any previous checked\nradio button within the same group.\n\n\n\n",
8341 "docs": "A radio group is a group of [radio buttons](../radio). It allows\na user to select at most one radio button from a set. Checking one radio\nbutton that belongs to a radio group unchecks any previous checked\nradio button within the same group.",
8342 "docsTags": [],
8343 "usage": {
8344 "angular": "```html\n<ion-list>\n <ion-radio-group>\n <ion-list-header>\n Auto Manufacturers\n </ion-list-header>\n\n <ion-item>\n <ion-label>Cord</ion-label>\n <ion-radio value=\"cord\"></ion-radio>\n </ion-item>\n\n <ion-item>\n <ion-label>Duesenberg</ion-label>\n <ion-radio value=\"duesenberg\"></ion-radio>\n </ion-item>\n\n <ion-item>\n <ion-label>Hudson</ion-label>\n <ion-radio value=\"hudson\"></ion-radio>\n </ion-item>\n\n <ion-item>\n <ion-label>Packard</ion-label>\n <ion-radio value=\"packard\"></ion-radio>\n </ion-item>\n\n <ion-item>\n <ion-label>Studebaker</ion-label>\n <ion-radio value=\"studebaker\"></ion-radio>\n </ion-item>\n </ion-radio-group>\n</ion-list>\n```\n",
8345 "javascript": "```html\n<ion-list>\n <ion-radio-group>\n <ion-list-header>\n Auto Manufacturers\n </ion-list-header>\n\n <ion-item>\n <ion-label>Cord</ion-label>\n <ion-radio value=\"cord\"></ion-radio>\n </ion-item>\n\n <ion-item>\n <ion-label>Duesenberg</ion-label>\n <ion-radio value=\"duesenberg\"></ion-radio>\n </ion-item>\n\n <ion-item>\n <ion-label>Hudson</ion-label>\n <ion-radio value=\"hudson\"></ion-radio>\n </ion-item>\n\n <ion-item>\n <ion-label>Packard</ion-label>\n <ion-radio value=\"packard\"></ion-radio>\n </ion-item>\n\n <ion-item>\n <ion-label>Studebaker</ion-label>\n <ion-radio value=\"studebaker\"></ion-radio>\n </ion-item>\n </ion-radio-group>\n</ion-list>\n```\n",
8346 "react": "```tsx\nimport React from 'react';\nimport { IonList, IonRadioGroup, IonListHeader, IonLabel, IonRadio, IonItem, IonContent } from '@ionic/react';\n\nexport const RadioGroupExample: React.FC = () => (\n <IonContent>\n <IonList>\n <IonRadioGroup>\n <IonListHeader>Auto Manufacturers</IonListHeader>\n\n <IonItem>\n <IonLabel>Cord</IonLabel>\n <IonRadio value=\"cord\" />\n </IonItem>\n\n <IonItem>\n <IonLabel>Duesenberg</IonLabel>\n <IonRadio value=\"duesenberg\" />\n </IonItem>\n\n <IonItem>\n <IonLabel>Hudson</IonLabel>\n <IonRadio value=\"hudson\" />\n </IonItem>\n\n <IonItem>\n <IonLabel>Packard</IonLabel>\n <IonRadio value=\"packard\" />\n </IonItem>\n\n <IonItem>\n <IonLabel>Studebaker</IonLabel>\n <IonRadio value=\"studebaker\" />\n </IonItem>\n </IonRadioGroup>\n </IonList>\n </IonContent>\n);\n```",
8347 "vue": "```html\n<template>\n <ion-list>\n <ion-radio-group>\n <ion-list-header>\n Auto Manufacturers\n </ion-list-header>\n\n <ion-item>\n <ion-label>Cord</ion-label>\n <ion-radio value=\"cord\"></ion-radio>\n </ion-item>\n\n <ion-item>\n <ion-label>Duesenberg</ion-label>\n <ion-radio value=\"duesenberg\"></ion-radio>\n </ion-item>\n\n <ion-item>\n <ion-label>Hudson</ion-label>\n <ion-radio value=\"hudson\"></ion-radio>\n </ion-item>\n\n <ion-item>\n <ion-label>Packard</ion-label>\n <ion-radio value=\"packard\"></ion-radio>\n </ion-item>\n\n <ion-item>\n <ion-label>Studebaker</ion-label>\n <ion-radio value=\"studebaker\"></ion-radio>\n </ion-item>\n </ion-radio-group>\n </ion-list>\n</template>\n```\n"
8348 },
8349 "props": [
8350 {
8351 "name": "allowEmptySelection",
8352 "type": "boolean",
8353 "mutable": false,
8354 "attr": "allow-empty-selection",
8355 "reflectToAttr": false,
8356 "docs": "If `true`, the radios can be deselected.",
8357 "docsTags": [],
8358 "default": "false",
8359 "optional": false,
8360 "required": false
8361 },
8362 {
8363 "name": "name",
8364 "type": "string",
8365 "mutable": false,
8366 "attr": "name",
8367 "reflectToAttr": false,
8368 "docs": "The name of the control, which is submitted with the form data.",
8369 "docsTags": [],
8370 "default": "this.inputId",
8371 "optional": false,
8372 "required": false
8373 },
8374 {
8375 "name": "value",
8376 "type": "any",
8377 "mutable": true,
8378 "attr": "value",
8379 "reflectToAttr": false,
8380 "docs": "the value of the radio group.",
8381 "docsTags": [],
8382 "optional": true,
8383 "required": false
8384 }
8385 ],
8386 "methods": [],
8387 "events": [
8388 {
8389 "event": "ionChange",
8390 "detail": "RadioGroupChangeEventDetail",
8391 "bubbles": true,
8392 "cancelable": true,
8393 "composed": true,
8394 "docs": "Emitted when the value has changed.",
8395 "docsTags": []
8396 }
8397 ],
8398 "styles": [],
8399 "slots": []
8400 },
8401 {
8402 "tag": "ion-range",
8403 "filePath": "src/components/range/range.tsx",
8404 "encapsulation": "shadow",
8405 "readme": "# ion-range\n\nThe Range slider lets users select from a range of values by moving\nthe slider knob. It can accept dual knobs, but by default one knob\ncontrols the value of the range.\n\n### Range Labels\n\nLabels can be placed on either side of the range by adding the\n`slot=\"start\"` or `slot=\"end\"` to the element. The element doesn't have to\nbe an `ion-label`, it can be added to any element to place it to the\nleft or right of the range.\n\n",
8406 "docs": "The Range slider lets users select from a range of values by moving\nthe slider knob. It can accept dual knobs, but by default one knob\ncontrols the value of the range.",
8407 "docsTags": [
8408 {
8409 "text": "{\"ios\" | \"md\"} mode - The mode determines which platform styles to use.",
8410 "name": "virtualProp"
8411 },
8412 {
8413 "text": "start - Content is placed to the left of the range slider in LTR, and to the right in RTL.",
8414 "name": "slot"
8415 },
8416 {
8417 "text": "end - Content is placed to the right of the range slider in LTR, and to the left in RTL.",
8418 "name": "slot"
8419 }
8420 ],
8421 "usage": {
8422 "angular": "```html\n<ion-list>\n <ion-item>\n <ion-range color=\"danger\" pin=\"true\"></ion-range>\n </ion-item>\n\n <ion-item>\n <ion-range min=\"-200\" max=\"200\" color=\"secondary\">\n <ion-label slot=\"start\">-200</ion-label>\n <ion-label slot=\"end\">200</ion-label>\n </ion-range>\n </ion-item>\n\n <ion-item>\n <ion-range min=\"20\" max=\"80\" step=\"2\">\n <ion-icon size=\"small\" slot=\"start\" name=\"sunny\"></ion-icon>\n <ion-icon slot=\"end\" name=\"sunny\"></ion-icon>\n </ion-range>\n </ion-item>\n\n <ion-item>\n <ion-range min=\"1000\" max=\"2000\" step=\"100\" snaps=\"true\" color=\"secondary\"></ion-range>\n </ion-item>\n\n <ion-item>\n <ion-range min=\"1000\" max=\"2000\" step=\"100\" snaps=\"true\" ticks=\"false\" color=\"secondary\"></ion-range>\n </ion-item>\n\n <ion-item>\n <ion-range dualKnobs=\"true\" min=\"21\" max=\"72\" step=\"3\" snaps=\"true\"></ion-range>\n </ion-item>\n</ion-list>\n```\n",
8423 "javascript": "```html\n<ion-list>\n <ion-item>\n <ion-range color=\"danger\" pin=\"true\"></ion-range>\n </ion-item>\n\n <ion-item>\n <ion-range min=\"-200\" max=\"200\" color=\"secondary\">\n <ion-label slot=\"start\">-200</ion-label>\n <ion-label slot=\"end\">200</ion-label>\n </ion-range>\n </ion-item>\n\n <ion-item>\n <ion-range min=\"20\" max=\"80\" step=\"2\">\n <ion-icon size=\"small\" slot=\"start\" name=\"sunny\"></ion-icon>\n <ion-icon slot=\"end\" name=\"sunny\"></ion-icon>\n </ion-range>\n </ion-item>\n\n <ion-item>\n <ion-range min=\"1000\" max=\"2000\" step=\"100\" snaps=\"true\" color=\"secondary\"></ion-range>\n </ion-item>\n\n <ion-item>\n <ion-range min=\"1000\" max=\"2000\" step=\"100\" snaps=\"true\" ticks=\"false\" color=\"secondary\"></ion-range>\n </ion-item>\n\n <ion-item>\n <ion-range dual-knobs=\"true\" min=\"21\" max=\"72\" step=\"3\" snaps=\"true\"></ion-range>\n </ion-item>\n</ion-list>\n```\n",
8424 "react": "```tsx\nimport React from 'react';\nimport { IonList, IonItem, IonRange, IonLabel, IonIcon, IonContent } from '@ionic/react';\n\nexport const RangeExample: React.FC = () => (\n <IonContent>\n <IonList>\n <IonItem>\n <IonRange color=\"danger\" pin={true} />\n </IonItem>\n\n <IonItem>\n <IonRange min={-200} max={200} color=\"secondary\">\n <IonLabel slot=\"start\">-200</IonLabel>\n <IonLabel slot=\"end\">200</IonLabel>\n </IonRange>\n </IonItem>\n\n <IonItem>\n <IonRange min={20} max={80} step={2}>\n <IonIcon size=\"small\" slot=\"start\" name=\"sunny\" />\n <IonIcon slot=\"end\" name=\"sunny\" />\n </IonRange>\n </IonItem>\n\n <IonItem>\n <IonRange min={1000} max={2000} step={100} snaps={true} color=\"secondary\" />\n </IonItem>\n\n <IonItem>\n <IonRange min={1000} max={2000} step={100} snaps={true} ticks={false} color=\"secondary\" />\n </IonItem>\n\n <IonItem>\n <IonRange dualKnobs={true} min={21} max={72} step={3} snaps={true} />\n </IonItem>\n </IonList>\n </IonContent>\n);\n```\n",
8425 "vue": "```html\n<template>\n <ion-list>\n <ion-item>\n <ion-range color=\"danger\" pin=\"true\"></ion-range>\n </ion-item>\n\n <ion-item>\n <ion-range min=\"-200\" max=\"200\" color=\"secondary\">\n <ion-label slot=\"start\">-200</ion-label>\n <ion-label slot=\"end\">200</ion-label>\n </ion-range>\n </ion-item>\n\n <ion-item>\n <ion-range min=\"20\" max=\"80\" step=\"2\">\n <ion-icon size=\"small\" slot=\"start\" name=\"sunny\"></ion-icon>\n <ion-icon slot=\"end\" name=\"sunny\"></ion-icon>\n </ion-range>\n </ion-item>\n\n <ion-item>\n <ion-range min=\"1000\" max=\"2000\" step=\"100\" snaps=\"true\" color=\"secondary\"></ion-range>\n </ion-item>\n\n <ion-item>\n <ion-range min=\"1000\" max=\"2000\" step=\"100\" snaps=\"true\" ticks=\"false\" color=\"secondary\"></ion-range>\n </ion-item>\n\n <ion-item>\n <ion-range ref=\"rangeDualKnobs\" dual-knobs=\"true\" min=\"21\" max=\"72\" step=\"3\" snaps=\"true\"></ion-range>\n </ion-item>\n </ion-list>\n</template>\n\n<script>\nexport default {\n mounted() {\n // Sets initial value for dual-knob ion-range\n this.$refs.rangeDualKnobs.value = { lower: 24, upper: 42 };\n }\n}\n</script>\n```\n"
8426 },
8427 "props": [
8428 {
8429 "name": "color",
8430 "type": "string | undefined",
8431 "mutable": false,
8432 "attr": "color",
8433 "reflectToAttr": false,
8434 "docs": "The color to use from your application's color palette.\nDefault options are: `\"primary\"`, `\"secondary\"`, `\"tertiary\"`, `\"success\"`, `\"warning\"`, `\"danger\"`, `\"light\"`, `\"medium\"`, and `\"dark\"`.\nFor more information on colors, see [theming](/docs/theming/basics).",
8435 "docsTags": [],
8436 "optional": true,
8437 "required": false
8438 },
8439 {
8440 "name": "debounce",
8441 "type": "number",
8442 "mutable": false,
8443 "attr": "debounce",
8444 "reflectToAttr": false,
8445 "docs": "How long, in milliseconds, to wait to trigger the\n`ionChange` event after each change in the range value.",
8446 "docsTags": [],
8447 "default": "0",
8448 "optional": false,
8449 "required": false
8450 },
8451 {
8452 "name": "disabled",
8453 "type": "boolean",
8454 "mutable": false,
8455 "attr": "disabled",
8456 "reflectToAttr": false,
8457 "docs": "If `true`, the user cannot interact with the range.",
8458 "docsTags": [],
8459 "default": "false",
8460 "optional": false,
8461 "required": false
8462 },
8463 {
8464 "name": "dualKnobs",
8465 "type": "boolean",
8466 "mutable": false,
8467 "attr": "dual-knobs",
8468 "reflectToAttr": false,
8469 "docs": "Show two knobs.",
8470 "docsTags": [],
8471 "default": "false",
8472 "optional": false,
8473 "required": false
8474 },
8475 {
8476 "name": "max",
8477 "type": "number",
8478 "mutable": false,
8479 "attr": "max",
8480 "reflectToAttr": false,
8481 "docs": "Maximum integer value of the range.",
8482 "docsTags": [],
8483 "default": "100",
8484 "optional": false,
8485 "required": false
8486 },
8487 {
8488 "name": "min",
8489 "type": "number",
8490 "mutable": false,
8491 "attr": "min",
8492 "reflectToAttr": false,
8493 "docs": "Minimum integer value of the range.",
8494 "docsTags": [],
8495 "default": "0",
8496 "optional": false,
8497 "required": false
8498 },
8499 {
8500 "name": "mode",
8501 "type": "\"ios\" | \"md\"",
8502 "mutable": false,
8503 "attr": "mode",
8504 "reflectToAttr": false,
8505 "docs": "The mode determines which platform styles to use.",
8506 "docsTags": [],
8507 "optional": true,
8508 "required": false
8509 },
8510 {
8511 "name": "name",
8512 "type": "string",
8513 "mutable": false,
8514 "attr": "name",
8515 "reflectToAttr": false,
8516 "docs": "The name of the control, which is submitted with the form data.",
8517 "docsTags": [],
8518 "default": "''",
8519 "optional": false,
8520 "required": false
8521 },
8522 {
8523 "name": "pin",
8524 "type": "boolean",
8525 "mutable": false,
8526 "attr": "pin",
8527 "reflectToAttr": false,
8528 "docs": "If `true`, a pin with integer value is shown when the knob\nis pressed.",
8529 "docsTags": [],
8530 "default": "false",
8531 "optional": false,
8532 "required": false
8533 },
8534 {
8535 "name": "snaps",
8536 "type": "boolean",
8537 "mutable": false,
8538 "attr": "snaps",
8539 "reflectToAttr": false,
8540 "docs": "If `true`, the knob snaps to tick marks evenly spaced based\non the step property value.",
8541 "docsTags": [],
8542 "default": "false",
8543 "optional": false,
8544 "required": false
8545 },
8546 {
8547 "name": "step",
8548 "type": "number",
8549 "mutable": false,
8550 "attr": "step",
8551 "reflectToAttr": false,
8552 "docs": "Specifies the value granularity.",
8553 "docsTags": [],
8554 "default": "1",
8555 "optional": false,
8556 "required": false
8557 },
8558 {
8559 "name": "ticks",
8560 "type": "boolean",
8561 "mutable": false,
8562 "attr": "ticks",
8563 "reflectToAttr": false,
8564 "docs": "If `true`, tick marks are displayed based on the step value.\nOnly applies when `snaps` is `true`.",
8565 "docsTags": [],
8566 "default": "true",
8567 "optional": false,
8568 "required": false
8569 },
8570 {
8571 "name": "value",
8572 "type": "number | { lower: number; upper: number; }",
8573 "mutable": true,
8574 "attr": "value",
8575 "reflectToAttr": false,
8576 "docs": "the value of the range.",
8577 "docsTags": [],
8578 "default": "0",
8579 "optional": false,
8580 "required": false
8581 }
8582 ],
8583 "methods": [],
8584 "events": [
8585 {
8586 "event": "ionBlur",
8587 "detail": "void",
8588 "bubbles": true,
8589 "cancelable": true,
8590 "composed": true,
8591 "docs": "Emitted when the range loses focus.",
8592 "docsTags": []
8593 },
8594 {
8595 "event": "ionChange",
8596 "detail": "RangeChangeEventDetail",
8597 "bubbles": true,
8598 "cancelable": true,
8599 "composed": true,
8600 "docs": "Emitted when the value property has changed.",
8601 "docsTags": []
8602 },
8603 {
8604 "event": "ionFocus",
8605 "detail": "void",
8606 "bubbles": true,
8607 "cancelable": true,
8608 "composed": true,
8609 "docs": "Emitted when the range has focus.",
8610 "docsTags": []
8611 }
8612 ],
8613 "styles": [
8614 {
8615 "name": "--bar-background",
8616 "annotation": "prop",
8617 "docs": "Background of the range bar"
8618 },
8619 {
8620 "name": "--bar-background-active",
8621 "annotation": "prop",
8622 "docs": "Background of the active range bar"
8623 },
8624 {
8625 "name": "--bar-border-radius",
8626 "annotation": "prop",
8627 "docs": "Border radius of the range bar"
8628 },
8629 {
8630 "name": "--bar-height",
8631 "annotation": "prop",
8632 "docs": "Height of the range bar"
8633 },
8634 {
8635 "name": "--height",
8636 "annotation": "prop",
8637 "docs": "Height of the range"
8638 },
8639 {
8640 "name": "--knob-background",
8641 "annotation": "prop",
8642 "docs": "Background of the range knob"
8643 },
8644 {
8645 "name": "--knob-border-radius",
8646 "annotation": "prop",
8647 "docs": "Border radius of the range knob"
8648 },
8649 {
8650 "name": "--knob-box-shadow",
8651 "annotation": "prop",
8652 "docs": "Box shadow of the range knob"
8653 },
8654 {
8655 "name": "--knob-size",
8656 "annotation": "prop",
8657 "docs": "Size of the range knob"
8658 }
8659 ],
8660 "slots": [
8661 {
8662 "name": "end",
8663 "docs": "Content is placed to the right of the range slider in LTR, and to the left in RTL."
8664 },
8665 {
8666 "name": "start",
8667 "docs": "Content is placed to the left of the range slider in LTR, and to the right in RTL."
8668 }
8669 ]
8670 },
8671 {
8672 "tag": "ion-refresher",
8673 "filePath": "src/components/refresher/refresher.tsx",
8674 "encapsulation": "none",
8675 "readme": "# ion-refresher\n\nThe refresher provides pull-to-refresh functionality on a content component.\nThe pull-to-refresh pattern lets a user pull down on a list of data using touch\nin order to retrieve more data.\n\nData should be modified during the refresher's output events. Once the async\noperation has completed and the refreshing should end, call `complete()` on the\nrefresher.\n\n\n",
8676 "docs": "The refresher provides pull-to-refresh functionality on a content component.\nThe pull-to-refresh pattern lets a user pull down on a list of data using touch\nin order to retrieve more data.\n\nData should be modified during the refresher's output events. Once the async\noperation has completed and the refreshing should end, call `complete()` on the\nrefresher.",
8677 "docsTags": [],
8678 "usage": {
8679 "angular": "```html\n<!-- Default Refresher -->\n<ion-content>\n <ion-refresher slot=\"fixed\" (ionRefresh)=\"doRefresh($event)\">\n <ion-refresher-content></ion-refresher-content>\n </ion-refresher>\n</ion-content>\n\n<!-- Custom Refresher Properties -->\n<ion-content>\n <ion-refresher slot=\"fixed\" pullFactor=\"0.5\" pullMin=\"100\" pullMax=\"200\">\n <ion-refresher-content></ion-refresher-content>\n </ion-refresher>\n</ion-content>\n\n<!-- Custom Refresher Content -->\n<ion-content>\n <ion-refresher slot=\"fixed\" (ionRefresh)=\"doRefresh($event)\">\n <ion-refresher-content\n pullingIcon=\"arrow-dropdown\"\n pullingText=\"Pull to refresh\"\n refreshingSpinner=\"circles\"\n refreshingText=\"Refreshing...\">\n </ion-refresher-content>\n </ion-refresher>\n</ion-content>\n```\n\n```typescript\nimport { Component } from '@angular/core';\n\n@Component({\n selector: 'refresher-example',\n templateUrl: 'refresher-example.html',\n styleUrls: ['./refresher-example.css'],\n})\nexport class RefresherExample {\n constructor() {}\n\n doRefresh(event) {\n console.log('Begin async operation');\n\n setTimeout(() => {\n console.log('Async operation has ended');\n event.target.complete();\n }, 2000);\n }\n}\n```\n",
8680 "javascript": "```html\n<!-- Default Refresher -->\n<ion-content>\n <ion-refresher slot=\"fixed\">\n <ion-refresher-content></ion-refresher-content>\n </ion-refresher>\n</ion-content>\n\n<!-- Custom Refresher Properties -->\n<ion-content>\n <ion-refresher slot=\"fixed\" pull-factor=\"0.5\" pull-min=\"100\" pull-max=\"200\">\n <ion-refresher-content></ion-refresher-content>\n </ion-refresher>\n</ion-content>\n\n<!-- Custom Refresher Content -->\n<ion-content>\n <ion-refresher slot=\"fixed\">\n <ion-refresher-content\n pulling-icon=\"arrow-dropdown\"\n pulling-text=\"Pull to refresh\"\n refreshing-spinner=\"circles\"\n refreshing-text=\"Refreshing...\">\n </ion-refresher-content>\n </ion-refresher>\n</ion-content>\n```\n",
8681 "react": "```tsx\nimport React from 'react';\nimport { IonContent, IonRefresher, IonRefresherContent } from '@ionic/react';\nimport { RefresherEventDetail } from '@ionic/core';\n\nfunction doRefresh(event: CustomEvent<RefresherEventDetail>) {\n console.log('Begin async operation');\n\n setTimeout(() => {\n console.log('Async operation has ended');\n event.detail.complete();\n }, 2000);\n}\n\nexport const RefresherExample: React.FC = () => (\n <IonContent>\n {/*-- Default Refresher --*/}\n <IonContent>\n <IonRefresher slot=\"fixed\" onIonRefresh={doRefresh}>\n <IonRefresherContent></IonRefresherContent>\n </IonRefresher>\n </IonContent>\n\n {/*-- Custom Refresher Properties --*/}\n <IonContent>\n <IonRefresher slot=\"fixed\" onIonRefresh={doRefresh} pullFactor={0.5} pullMin={100} pullMax={200}>\n <IonRefresherContent></IonRefresherContent>\n </IonRefresher>\n </IonContent>\n\n {/*-- Custom Refresher Content --*/}\n <IonContent>\n <IonRefresher slot=\"fixed\" onIonRefresh={doRefresh}>\n <IonRefresherContent\n pullingIcon=\"arrow-dropdown\"\n pullingText=\"Pull to refresh\"\n refreshingSpinner=\"circles\"\n refreshingText=\"Refreshing...\">\n </IonRefresherContent>\n </IonRefresher>\n </IonContent>\n </IonContent>\n);\n\n```",
8682 "vue": "```html\n<template>\n <!-- Default Refresher -->\n <ion-content>\n <ion-refresher slot=\"fixed\" @ionRefresh=\"doRefresh($event)\">\n <ion-refresher-content></ion-refresher-content>\n </ion-refresher>\n </ion-content>\n\n <!-- Custom Refresher Properties -->\n <ion-content>\n <ion-refresher slot=\"fixed\" pull-factor=\"0.5\" pull-min=\"100\" pull-max=\"200\">\n <ion-refresher-content></ion-refresher-content>\n </ion-refresher>\n </ion-content>\n\n <!-- Custom Refresher Content -->\n <ion-content>\n <ion-refresher slot=\"fixed\" @ionRefresh=\"doRefresh($event)\">\n <ion-refresher-content\n pulling-icon=\"arrow-dropdown\"\n pulling-text=\"Pull to refresh\"\n refreshing-spinner=\"circles\"\n refreshing-text=\"Refreshing...\">\n </ion-refresher-content>\n </ion-refresher>\n </ion-content>\n</template>\n\n<script lang=\"ts\">\n import { Component, Vue } from 'vue-property-decorator';\n\n @Component()\n export default class Example extends Vue {\n\n doRefresh(event) {\n console.log('Begin async operation');\n\n setTimeout(() => {\n console.log('Async operation has ended');\n event.target.complete();\n }, 2000);\n }\n }\n</script>\n```\n"
8683 },
8684 "props": [
8685 {
8686 "name": "closeDuration",
8687 "type": "string",
8688 "mutable": false,
8689 "attr": "close-duration",
8690 "reflectToAttr": false,
8691 "docs": "Time it takes to close the refresher.",
8692 "docsTags": [],
8693 "default": "'280ms'",
8694 "optional": false,
8695 "required": false
8696 },
8697 {
8698 "name": "disabled",
8699 "type": "boolean",
8700 "mutable": false,
8701 "attr": "disabled",
8702 "reflectToAttr": false,
8703 "docs": "If `true`, the refresher will be hidden.",
8704 "docsTags": [],
8705 "default": "false",
8706 "optional": false,
8707 "required": false
8708 },
8709 {
8710 "name": "pullFactor",
8711 "type": "number",
8712 "mutable": false,
8713 "attr": "pull-factor",
8714 "reflectToAttr": false,
8715 "docs": "How much to multiply the pull speed by. To slow the pull animation down,\npass a number less than `1`. To speed up the pull, pass a number greater\nthan `1`. The default value is `1` which is equal to the speed of the cursor.\nIf a negative value is passed in, the factor will be `1` instead.\n\nFor example: If the value passed is `1.2` and the content is dragged by\n`10` pixels, instead of `10` pixels the content will be pulled by `12` pixels\n(an increase of 20 percent). If the value passed is `0.8`, the dragged amount\nwill be `8` pixels, less than the amount the cursor has moved.",
8716 "docsTags": [],
8717 "default": "1",
8718 "optional": false,
8719 "required": false
8720 },
8721 {
8722 "name": "pullMax",
8723 "type": "number",
8724 "mutable": false,
8725 "attr": "pull-max",
8726 "reflectToAttr": false,
8727 "docs": "The maximum distance of the pull until the refresher\nwill automatically go into the `refreshing` state.\nDefaults to the result of `pullMin + 60`.",
8728 "docsTags": [],
8729 "default": "this.pullMin + 60",
8730 "optional": false,
8731 "required": false
8732 },
8733 {
8734 "name": "pullMin",
8735 "type": "number",
8736 "mutable": false,
8737 "attr": "pull-min",
8738 "reflectToAttr": false,
8739 "docs": "The minimum distance the user must pull down until the\nrefresher will go into the `refreshing` state.",
8740 "docsTags": [],
8741 "default": "60",
8742 "optional": false,
8743 "required": false
8744 },
8745 {
8746 "name": "snapbackDuration",
8747 "type": "string",
8748 "mutable": false,
8749 "attr": "snapback-duration",
8750 "reflectToAttr": false,
8751 "docs": "Time it takes the refresher to to snap back to the `refreshing` state.",
8752 "docsTags": [],
8753 "default": "'280ms'",
8754 "optional": false,
8755 "required": false
8756 }
8757 ],
8758 "methods": [
8759 {
8760 "name": "cancel",
8761 "returns": {
8762 "type": "Promise<void>",
8763 "docs": ""
8764 },
8765 "signature": "cancel() => Promise<void>",
8766 "parameters": [],
8767 "docs": "Changes the refresher's state from `refreshing` to `cancelling`.",
8768 "docsTags": []
8769 },
8770 {
8771 "name": "complete",
8772 "returns": {
8773 "type": "Promise<void>",
8774 "docs": ""
8775 },
8776 "signature": "complete() => Promise<void>",
8777 "parameters": [],
8778 "docs": "Call `complete()` when your async operation has completed.\nFor example, the `refreshing` state is while the app is performing\nan asynchronous operation, such as receiving more data from an\nAJAX request. Once the data has been received, you then call this\nmethod to signify that the refreshing has completed and to close\nthe refresher. This method also changes the refresher's state from\n`refreshing` to `completing`.",
8779 "docsTags": []
8780 },
8781 {
8782 "name": "getProgress",
8783 "returns": {
8784 "type": "Promise<number>",
8785 "docs": ""
8786 },
8787 "signature": "getProgress() => Promise<number>",
8788 "parameters": [],
8789 "docs": "A number representing how far down the user has pulled.\nThe number `0` represents the user hasn't pulled down at all. The\nnumber `1`, and anything greater than `1`, represents that the user\nhas pulled far enough down that when they let go then the refresh will\nhappen. If they let go and the number is less than `1`, then the\nrefresh will not happen, and the content will return to it's original\nposition.",
8790 "docsTags": []
8791 }
8792 ],
8793 "events": [
8794 {
8795 "event": "ionPull",
8796 "detail": "void",
8797 "bubbles": true,
8798 "cancelable": true,
8799 "composed": true,
8800 "docs": "Emitted while the user is pulling down the content and exposing the refresher.",
8801 "docsTags": []
8802 },
8803 {
8804 "event": "ionRefresh",
8805 "detail": "RefresherEventDetail",
8806 "bubbles": true,
8807 "cancelable": true,
8808 "composed": true,
8809 "docs": "Emitted when the user lets go of the content and has pulled down\nfurther than the `pullMin` or pulls the content down and exceeds the pullMax.\nUpdates the refresher state to `refreshing`. The `complete()` method should be\ncalled when the async operation has completed.",
8810 "docsTags": []
8811 },
8812 {
8813 "event": "ionStart",
8814 "detail": "void",
8815 "bubbles": true,
8816 "cancelable": true,
8817 "composed": true,
8818 "docs": "Emitted when the user begins to start pulling down.",
8819 "docsTags": []
8820 }
8821 ],
8822 "styles": [],
8823 "slots": []
8824 },
8825 {
8826 "tag": "ion-refresher-content",
8827 "filePath": "src/components/refresher-content/refresher-content.tsx",
8828 "encapsulation": "none",
8829 "readme": "# ion-refresher-content\n\nThe refresher content contains the text, icon and spinner to display during a pull-to-refresh. Ionic provides the pulling icon and refreshing spinner based on the platform. However, the default icon, spinner, and text can be customized based on the state of the refresher.\n\n\n",
8830 "docs": "The refresher content contains the text, icon and spinner to display during a pull-to-refresh. Ionic provides the pulling icon and refreshing spinner based on the platform. However, the default icon, spinner, and text can be customized based on the state of the refresher.",
8831 "docsTags": [],
8832 "usage": {},
8833 "props": [
8834 {
8835 "name": "pullingIcon",
8836 "type": "null | string | undefined",
8837 "mutable": true,
8838 "attr": "pulling-icon",
8839 "reflectToAttr": false,
8840 "docs": "A static icon to display when you begin to pull down",
8841 "docsTags": [],
8842 "optional": true,
8843 "required": false
8844 },
8845 {
8846 "name": "pullingText",
8847 "type": "string | undefined",
8848 "mutable": false,
8849 "attr": "pulling-text",
8850 "reflectToAttr": false,
8851 "docs": "The text you want to display when you begin to pull down.\n`pullingText` can accept either plaintext or HTML as a string.\nTo display characters normally reserved for HTML, they\nmust be escaped. For example `<Ionic>` would become\n`&lt;Ionic&gt;`\n\nFor more information: [Security Documentation](https://ionicframework.com/docs/faq/security)",
8852 "docsTags": [],
8853 "optional": true,
8854 "required": false
8855 },
8856 {
8857 "name": "refreshingSpinner",
8858 "type": "\"bubbles\" | \"circles\" | \"circular\" | \"crescent\" | \"dots\" | \"lines\" | \"lines-small\" | null | undefined",
8859 "mutable": true,
8860 "attr": "refreshing-spinner",
8861 "reflectToAttr": false,
8862 "docs": "An animated SVG spinner that shows when refreshing begins",
8863 "docsTags": [],
8864 "optional": true,
8865 "required": false
8866 },
8867 {
8868 "name": "refreshingText",
8869 "type": "string | undefined",
8870 "mutable": false,
8871 "attr": "refreshing-text",
8872 "reflectToAttr": false,
8873 "docs": "The text you want to display when performing a refresh.\n`refreshingText` can accept either plaintext or HTML as a string.\nTo display characters normally reserved for HTML, they\nmust be escaped. For example `<Ionic>` would become\n`&lt;Ionic&gt;`\n\nFor more information: [Security Documentation](https://ionicframework.com/docs/faq/security)",
8874 "docsTags": [],
8875 "optional": true,
8876 "required": false
8877 }
8878 ],
8879 "methods": [],
8880 "events": [],
8881 "styles": [],
8882 "slots": []
8883 },
8884 {
8885 "tag": "ion-reorder",
8886 "filePath": "src/components/reorder/reorder.tsx",
8887 "encapsulation": "shadow",
8888 "readme": "# ion-reorder\n\nReorder is a component that allows an item in a group of items to be dragged to change its order within that group. It must be used within an `ion-reorder-group` to provide a visual drag and drop interface.\n\n`ion-reorder` is the anchor used to drag and drop the items inside of the `ion-reorder-group`. See the [Reorder Group](../reorder-group) for more information on how to complete the reorder operation.\n\n",
8889 "docs": "Reorder is a component that allows an item in a group of items to be dragged to change its order within that group. It must be used within an `ion-reorder-group` to provide a visual drag and drop interface.\n\n`ion-reorder` is the anchor used to drag and drop the items inside of the `ion-reorder-group`. See the [Reorder Group](../reorder-group) for more information on how to complete the reorder operation.",
8890 "docsTags": [],
8891 "usage": {
8892 "angular": "\n```html\n<!-- Default reorder icon, end aligned items -->\n<ion-item>\n <ion-label>\n Item 1\n </ion-label>\n <ion-reorder slot=\"end\"></ion-reorder>\n</ion-item>\n\n<ion-item>\n <ion-label>\n Item 2\n </ion-label>\n <ion-reorder slot=\"end\"></ion-reorder>\n</ion-item>\n\n<!-- Default reorder icon, start aligned items -->\n<ion-item>\n <ion-reorder slot=\"start\"></ion-reorder>\n <ion-label>\n Item 3\n </ion-label>\n</ion-item>\n\n<ion-item>\n <ion-reorder slot=\"start\"></ion-reorder>\n <ion-label>\n Item 4\n </ion-label>\n</ion-item>\n\n<!-- Custom reorder icon end items -->\n<ion-item>\n <ion-label>\n Item 5\n </ion-label>\n <ion-reorder slot=\"end\">\n <ion-icon name=\"pizza\"></ion-icon>\n </ion-reorder>\n</ion-item>\n\n<ion-item>\n <ion-label>\n Item 6\n </ion-label>\n <ion-reorder slot=\"end\">\n <ion-icon name=\"pizza\"></ion-icon>\n </ion-reorder>\n</ion-item>\n\n<!-- Items wrapped in a reorder, entire item can be dragged -->\n<ion-reorder>\n <ion-item>\n <ion-label>\n Item 7\n </ion-label>\n </ion-item>\n</ion-reorder>\n\n<ion-reorder>\n <ion-item>\n <ion-label>\n Item 8\n </ion-label>\n </ion-item>\n</ion-reorder>\n```",
8893 "javascript": "\n```html\n<!-- Default reorder icon, end aligned items -->\n<ion-item>\n <ion-label>\n Item 1\n </ion-label>\n <ion-reorder slot=\"end\"></ion-reorder>\n</ion-item>\n\n<ion-item>\n <ion-label>\n Item 2\n </ion-label>\n <ion-reorder slot=\"end\"></ion-reorder>\n</ion-item>\n\n<!-- Default reorder icon, start aligned items -->\n<ion-item>\n <ion-reorder slot=\"start\"></ion-reorder>\n <ion-label>\n Item 3\n </ion-label>\n</ion-item>\n\n<ion-item>\n <ion-reorder slot=\"start\"></ion-reorder>\n <ion-label>\n Item 4\n </ion-label>\n</ion-item>\n\n<!-- Custom reorder icon end items -->\n<ion-item>\n <ion-label>\n Item 5\n </ion-label>\n <ion-reorder slot=\"end\">\n <ion-icon name=\"pizza\"></ion-icon>\n </ion-reorder>\n</ion-item>\n\n<ion-item>\n <ion-label>\n Item 6\n </ion-label>\n <ion-reorder slot=\"end\">\n <ion-icon name=\"pizza\"></ion-icon>\n </ion-reorder>\n</ion-item>\n\n<!-- Items wrapped in a reorder, entire item can be dragged -->\n<ion-reorder>\n <ion-item>\n <ion-label>\n Item 7\n </ion-label>\n </ion-item>\n</ion-reorder>\n\n<ion-reorder>\n <ion-item>\n <ion-label>\n Item 8\n </ion-label>\n </ion-item>\n</ion-reorder>\n```",
8894 "react": "```tsx\nimport React from 'react';\nimport { IonIcon, IonItem, IonLabel, IonReorder, IonContent } from '@ionic/react';\n\nexport const ReorderExample: React.FC = () => (\n <IonContent>\n {/*-- Default reorder icon, end aligned items --*/}\n <IonItem>\n <IonLabel>Item 1</IonLabel>\n <IonReorder slot=\"end\" />\n </IonItem>\n\n <IonItem>\n <IonLabel>Item 2</IonLabel>\n <IonReorder slot=\"end\" />\n </IonItem>\n\n {/*-- Default reorder icon, start aligned items --*/}\n <IonItem>\n <IonReorder slot=\"start\" />\n <IonLabel>Item 3</IonLabel>\n </IonItem>\n\n <IonItem>\n <IonReorder slot=\"start\" />\n <IonLabel>Item 4</IonLabel>\n </IonItem>\n\n {/*-- Custom reorder icon end items --*/}\n <IonItem>\n <IonLabel>Item 5</IonLabel>\n <IonReorder slot=\"end\">\n <IonIcon name=\"pizza\" />\n </IonReorder>\n </IonItem>\n\n <IonItem>\n <IonLabel>Item 6</IonLabel>\n <IonReorder slot=\"end\">\n <IonIcon name=\"pizza\" />\n </IonReorder>\n </IonItem>\n\n {/*-- Items wrapped in a reorder, entire item can be dragged --*/}\n <IonReorder>\n <IonItem>\n <IonLabel>Item 7</IonLabel>\n </IonItem>\n </IonReorder>\n\n <IonReorder>\n <IonItem>\n <IonLabel>Item 8</IonLabel>\n </IonItem>\n </IonReorder>\n </IonContent>\n);\n```\n",
8895 "vue": "```html\n<template>\n <!-- Default reorder icon, end aligned items -->\n <ion-item>\n <ion-label>\n Item 1\n </ion-label>\n <ion-reorder slot=\"end\"></ion-reorder>\n </ion-item>\n\n <ion-item>\n <ion-label>\n Item 2\n </ion-label>\n <ion-reorder slot=\"end\"></ion-reorder>\n </ion-item>\n\n <!-- Default reorder icon, start aligned items -->\n <ion-item>\n <ion-reorder slot=\"start\"></ion-reorder>\n <ion-label>\n Item 3\n </ion-label>\n </ion-item>\n\n <ion-item>\n <ion-reorder slot=\"start\"></ion-reorder>\n <ion-label>\n Item 4\n </ion-label>\n </ion-item>\n\n <!-- Custom reorder icon end items -->\n <ion-item>\n <ion-label>\n Item 5\n </ion-label>\n <ion-reorder slot=\"end\">\n <ion-icon name=\"pizza\"></ion-icon>\n </ion-reorder>\n </ion-item>\n\n <ion-item>\n <ion-label>\n Item 6\n </ion-label>\n <ion-reorder slot=\"end\">\n <ion-icon name=\"pizza\"></ion-icon>\n </ion-reorder>\n </ion-item>\n\n <!-- Items wrapped in a reorder, entire item can be dragged -->\n <ion-reorder>\n <ion-item>\n <ion-label>\n Item 7\n </ion-label>\n </ion-item>\n </ion-reorder>\n\n <ion-reorder>\n <ion-item>\n <ion-label>\n Item 8\n </ion-label>\n </ion-item>\n </ion-reorder>\n</template>\n```"
8896 },
8897 "props": [],
8898 "methods": [],
8899 "events": [],
8900 "styles": [],
8901 "slots": []
8902 },
8903 {
8904 "tag": "ion-reorder-group",
8905 "filePath": "src/components/reorder-group/reorder-group.tsx",
8906 "encapsulation": "none",
8907 "readme": "# ion-reorder-group\n\nThe reorder group is a wrapper component for items using the `ion-reorder` component. See the [Reorder documentation](../reorder/) for further information about the anchor component that is used to drag items within the `ion-reorder-group`.\n\nOnce the user drags an item and drops it in a new position, the `ionItemReorder` event is dispatched. A handler for it should be implemented that calls the `complete()` method.\n\nThe `detail` property of the `ionItemReorder` event includes all of the relevant information about the reorder operation, including the `from` and `to` indexes. In the context of reordering, an item moves `from` an index `to` a new index.\n\n",
8908 "docs": "The reorder group is a wrapper component for items using the `ion-reorder` component. See the [Reorder documentation](../reorder/) for further information about the anchor component that is used to drag items within the `ion-reorder-group`.\n\nOnce the user drags an item and drops it in a new position, the `ionItemReorder` event is dispatched. A handler for it should be implemented that calls the `complete()` method.\n\nThe `detail` property of the `ionItemReorder` event includes all of the relevant information about the reorder operation, including the `from` and `to` indexes. In the context of reordering, an item moves `from` an index `to` a new index.",
8909 "docsTags": [],
8910 "usage": {
8911 "angular": "```html\n<!-- The reorder gesture is disabled by default, enable it to drag and drop items -->\n<ion-reorder-group (ionItemReorder)=\"doReorder($event)\" disabled=\"false\">\n <!-- Default reorder icon, end aligned items -->\n <ion-item>\n <ion-label>\n Item 1\n </ion-label>\n <ion-reorder slot=\"end\"></ion-reorder>\n </ion-item>\n\n <ion-item>\n <ion-label>\n Item 2\n </ion-label>\n <ion-reorder slot=\"end\"></ion-reorder>\n </ion-item>\n\n <!-- Default reorder icon, start aligned items -->\n <ion-item>\n <ion-reorder slot=\"start\"></ion-reorder>\n <ion-label>\n Item 3\n </ion-label>\n </ion-item>\n\n <ion-item>\n <ion-reorder slot=\"start\"></ion-reorder>\n <ion-label>\n Item 4\n </ion-label>\n </ion-item>\n\n <!-- Custom reorder icon end items -->\n <ion-item>\n <ion-label>\n Item 5\n </ion-label>\n <ion-reorder slot=\"end\">\n <ion-icon name=\"pizza\"></ion-icon>\n </ion-reorder>\n </ion-item>\n\n <ion-item>\n <ion-label>\n Item 6\n </ion-label>\n <ion-reorder slot=\"end\">\n <ion-icon name=\"pizza\"></ion-icon>\n </ion-reorder>\n </ion-item>\n\n <!-- Items wrapped in a reorder, entire item can be dragged -->\n <ion-reorder>\n <ion-item>\n <ion-label>\n Item 7\n </ion-label>\n </ion-item>\n </ion-reorder>\n\n <ion-reorder>\n <ion-item>\n <ion-label>\n Item 8\n </ion-label>\n </ion-item>\n </ion-reorder>\n</ion-reorder-group>\n```\n\n```javascript\nimport { Component, ViewChild } from '@angular/core';\nimport { IonReorderGroup } from '@ionic/angular';\n\n@Component({\n selector: 'reorder-group-example',\n templateUrl: 'reorder-group-example.html',\n styleUrls: ['./reorder-group-example.css']\n})\nexport class ReorderGroupExample {\n @ViewChild(IonReorderGroup) reorderGroup: IonReorderGroup;\n\n constructor() {}\n\n doReorder(ev: any) {\n // The `from` and `to` properties contain the index of the item\n // when the drag started and ended, respectively\n console.log('Dragged from index', ev.detail.from, 'to', ev.detail.to);\n\n // Finish the reorder and position the item in the DOM based on\n // where the gesture ended. This method can also be called directly\n // by the reorder group\n ev.detail.complete();\n }\n\n toggleReorderGroup() {\n this.reorderGroup.disabled = !this.reorderGroup.disabled;\n }\n}\n```\n\n#### Updating Data\n\n```javascript\nimport { Component, ViewChild } from '@angular/core';\nimport { IonReorderGroup } from '@ionic/angular';\n\n@Component({\n selector: 'reorder-group-example',\n templateUrl: 'reorder-group-example.html',\n styleUrls: ['./reorder-group-example.css']\n})\nexport class ReorderGroupExample {\n items = [1, 2, 3, 4, 5];\n\n @ViewChild(IonReorderGroup) reorderGroup: IonReorderGroup;\n\n constructor() {}\n\n doReorder(ev: any) {\n // Before complete is called with the items they will remain in the\n // order before the drag\n console.log('Before complete', this.items);\n\n // Finish the reorder and position the item in the DOM based on\n // where the gesture ended. Update the items variable to the\n // new order of items\n this.items = ev.detail.complete(this.items);\n\n // After complete is called the items will be in the new order\n console.log('After complete', this.items);\n }\n}\n```\n",
8912 "javascript": "```html\n<!-- The reorder gesture is disabled by default, enable it to drag and drop items -->\n<ion-reorder-group disabled=\"false\">\n <!-- Default reorder icon, end aligned items -->\n <ion-item>\n <ion-label>\n Item 1\n </ion-label>\n <ion-reorder slot=\"end\"></ion-reorder>\n </ion-item>\n\n <ion-item>\n <ion-label>\n Item 2\n </ion-label>\n <ion-reorder slot=\"end\"></ion-reorder>\n </ion-item>\n\n <!-- Default reorder icon, start aligned items -->\n <ion-item>\n <ion-reorder slot=\"start\"></ion-reorder>\n <ion-label>\n Item 3\n </ion-label>\n </ion-item>\n\n <ion-item>\n <ion-reorder slot=\"start\"></ion-reorder>\n <ion-label>\n Item 4\n </ion-label>\n </ion-item>\n\n <!-- Custom reorder icon end items -->\n <ion-item>\n <ion-label>\n Item 5\n </ion-label>\n <ion-reorder slot=\"end\">\n <ion-icon name=\"pizza\"></ion-icon>\n </ion-reorder>\n </ion-item>\n\n <ion-item>\n <ion-label>\n Item 6\n </ion-label>\n <ion-reorder slot=\"end\">\n <ion-icon name=\"pizza\"></ion-icon>\n </ion-reorder>\n </ion-item>\n\n <!-- Items wrapped in a reorder, entire item can be dragged -->\n <ion-reorder>\n <ion-item>\n <ion-label>\n Item 7\n </ion-label>\n </ion-item>\n </ion-reorder>\n\n <ion-reorder>\n <ion-item>\n <ion-label>\n Item 8\n </ion-label>\n </ion-item>\n </ion-reorder>\n</ion-reorder-group>\n```\n\n```javascript\nconst reorderGroup = document.querySelector('ion-reorder-group');\n\nreorderGroup.addEventListener('ionItemReorder', ({detail}) => {\n // The `from` and `to` properties contain the index of the item\n // when the drag started and ended, respectively\n console.log('Dragged from index', detail.from, 'to', detail.to);\n\n // Finish the reorder and position the item in the DOM based on\n // where the gesture ended. This method can also be called directly\n // by the reorder group\n detail.complete();\n});\n```\n\n#### Updating Data\n\n```javascript\nconst items = [1, 2, 3, 4, 5];\nconst reorderGroup = document.querySelector('ion-reorder-group');\n\nreorderGroup.addEventListener('ionItemReorder', ({detail}) => {\n // Before complete is called with the items they will remain in the\n // order before the drag\n console.log('Before complete', items);\n\n // Finish the reorder and position the item in the DOM based on\n // where the gesture ended. Update the items variable to the\n // new order of items\n items = detail.complete(items);\n\n // After complete is called the items will be in the new order\n console.log('After complete', items);\n});\n```\n",
8913 "react": "```tsx\nimport React from 'react';\nimport { IonItem, IonLabel, IonReorder, IonReorderGroup, IonIcon, IonContent } from '@ionic/react';\nimport { ItemReorderEventDetail } from '@ionic/core';\n\nfunction doReorder(event: CustomEvent<ItemReorderEventDetail>) {\n // The `from` and `to` properties contain the index of the item\n // when the drag started and ended, respectively\n console.log('Dragged from index', event.detail.from, 'to', event.detail.to);\n\n // Finish the reorder and position the item in the DOM based on\n // where the gesture ended. This method can also be called directly\n // by the reorder group\n event.detail.complete();\n}\n\nexport const ReorderGroupExample: React.FC = () => (\n <IonContent>\n {/*-- The reorder gesture is disabled by default, enable it to drag and drop items --*/}\n <IonReorderGroup disabled={false} onIonItemReorder={doReorder}>\n {/*-- Default reorder icon, end aligned items --*/}\n <IonItem>\n <IonLabel>Item 1</IonLabel>\n <IonReorder slot=\"end\" />\n </IonItem>\n\n <IonItem>\n <IonLabel>Item 2</IonLabel>\n <IonReorder slot=\"end\" />\n </IonItem>\n\n {/*-- Default reorder icon, start aligned items --*/}\n <IonItem>\n <IonReorder slot=\"start\" />\n <IonLabel>Item 3</IonLabel>\n </IonItem>\n\n <IonItem>\n <IonReorder slot=\"start\" />\n <IonLabel>Item 4</IonLabel>\n </IonItem>\n\n {/*-- Custom reorder icon end items --*/}\n <IonItem>\n <IonLabel>Item 5</IonLabel>\n <IonReorder slot=\"end\">\n <IonIcon name=\"pizza\" />\n </IonReorder>\n </IonItem>\n\n <IonItem>\n <IonLabel>Item 6</IonLabel>\n <IonReorder slot=\"end\">\n <IonIcon name=\"pizza\" />\n </IonReorder>\n </IonItem>\n\n {/*-- Items wrapped in a reorder, entire item can be dragged --*/}\n <IonReorder>\n <IonItem>\n <IonLabel>Item 7</IonLabel>\n </IonItem>\n </IonReorder>\n\n <IonReorder>\n <IonItem>\n <IonLabel>Item 8</IonLabel>\n </IonItem>\n </IonReorder>\n </IonReorderGroup>\n </IonContent>\n);\n```\n\n#### Updating Data\n\n```tsx\nconst items = [1, 2, 3, 4, 5];\n\nfunction doReorder(event: CustomEvent) {\n // Before complete is called with the items they will remain in the\n // order before the drag\n console.log('Before complete', this.items);\n\n // Finish the reorder and position the item in the DOM based on\n // where the gesture ended. Update the items variable to the\n // new order of items\n this.items = event.detail.complete(this.items);\n\n // After complete is called the items will be in the new order\n console.log('After complete', this.items);\n}\n```\n",
8914 "vue": "```html\n<template>\n <!-- The reorder gesture is disabled by default, enable it to drag and drop items -->\n <ion-reorder-group @ionItemReorder=\"doReorder($event)\" disabled=\"false\">\n <!-- Default reorder icon, end aligned items -->\n <ion-item>\n <ion-label>\n Item 1\n </ion-label>\n <ion-reorder slot=\"end\"></ion-reorder>\n </ion-item>\n\n <ion-item>\n <ion-label>\n Item 2\n </ion-label>\n <ion-reorder slot=\"end\"></ion-reorder>\n </ion-item>\n\n <!-- Default reorder icon, start aligned items -->\n <ion-item>\n <ion-reorder slot=\"start\"></ion-reorder>\n <ion-label>\n Item 3\n </ion-label>\n </ion-item>\n\n <ion-item>\n <ion-reorder slot=\"start\"></ion-reorder>\n <ion-label>\n Item 4\n </ion-label>\n </ion-item>\n\n <!-- Custom reorder icon end items -->\n <ion-item>\n <ion-label>\n Item 5\n </ion-label>\n <ion-reorder slot=\"end\">\n <ion-icon name=\"pizza\"></ion-icon>\n </ion-reorder>\n </ion-item>\n\n <ion-item>\n <ion-label>\n Item 6\n </ion-label>\n <ion-reorder slot=\"end\">\n <ion-icon name=\"pizza\"></ion-icon>\n </ion-reorder>\n </ion-item>\n\n <!-- Items wrapped in a reorder, entire item can be dragged -->\n <ion-reorder>\n <ion-item>\n <ion-label>\n Item 7\n </ion-label>\n </ion-item>\n </ion-reorder>\n\n <ion-reorder>\n <ion-item>\n <ion-label>\n Item 8\n </ion-label>\n </ion-item>\n </ion-reorder>\n </ion-reorder-group>\n</template>\n\n<script lang=\"ts\">\n import { Component, Vue } from 'vue-property-decorator';\n\n @Component()\n export default class Example extends Vue {\n\n doReorder(event) {\n // The `from` and `to` properties contain the index of the item\n // when the drag started and ended, respectively\n console.log('Dragged from index', event.detail.from, 'to', event.detail.to);\n\n // Finish the reorder and position the item in the DOM based on\n // where the gesture ended. This method can also be called directly\n // by the reorder group\n event.detail.complete();\n }\n }\n</script>\n```\n\n#### Updating Data\n\n```html\n<script lang=\"ts\">\n import { Component, Vue } from 'vue-property-decorator';\n\n @Component()\n export default class Example extends Vue {\n items = [1, 2, 3, 4, 5];\n\n doReorder(event) {\n // Before complete is called with the items they will remain in the\n // order before the drag\n console.log('Before complete', this.items);\n\n // Finish the reorder and position the item in the DOM based on\n // where the gesture ended. Update the items variable to the\n // new order of items\n this.items = event.detail.complete(this.items);\n\n // After complete is called the items will be in the new order\n console.log('After complete', this.items);\n }\n }\n</script>\n```\n"
8915 },
8916 "props": [
8917 {
8918 "name": "disabled",
8919 "type": "boolean",
8920 "mutable": false,
8921 "attr": "disabled",
8922 "reflectToAttr": false,
8923 "docs": "If `true`, the reorder will be hidden.",
8924 "docsTags": [],
8925 "default": "true",
8926 "optional": false,
8927 "required": false
8928 }
8929 ],
8930 "methods": [
8931 {
8932 "name": "complete",
8933 "returns": {
8934 "type": "Promise<any>",
8935 "docs": ""
8936 },
8937 "signature": "complete(listOrReorder?: boolean | any[] | undefined) => Promise<any>",
8938 "parameters": [],
8939 "docs": "Completes the reorder operation. Must be called by the `ionItemReorder` event.\n\nIf a list of items is passed, the list will be reordered and returned in the\nproper order.\n\nIf no parameters are passed or if `true` is passed in, the reorder will complete\nand the item will remain in the position it was dragged to. If `false` is passed,\nthe reorder will complete and the item will bounce back to its original position.",
8940 "docsTags": [
8941 {
8942 "name": "param",
8943 "text": "listOrReorder A list of items to be sorted and returned in the new order or a\nboolean of whether or not the reorder should reposition the item."
8944 }
8945 ]
8946 }
8947 ],
8948 "events": [
8949 {
8950 "event": "ionItemReorder",
8951 "detail": "ItemReorderEventDetail",
8952 "bubbles": true,
8953 "cancelable": true,
8954 "composed": true,
8955 "docs": "Event that needs to be listened to in order to complete the reorder action.\nOnce the event has been emitted, the `complete()` method then needs\nto be called in order to finalize the reorder action.",
8956 "docsTags": []
8957 }
8958 ],
8959 "styles": [],
8960 "slots": []
8961 },
8962 {
8963 "tag": "ion-ripple-effect",
8964 "filePath": "src/components/ripple-effect/ripple-effect.tsx",
8965 "encapsulation": "shadow",
8966 "readme": "# ion-ripple-effect\n\nThe ripple effect component adds the [Material Design ink ripple interaction effect](https://material.io/develop/web/components/ripples/). This component can only be used inside of an `<ion-app>` and can be added to any component.\n\nIt's important to note that the parent should have [relative positioning](https://developer.mozilla.org/en-US/docs/Web/CSS/position) because the ripple effect is absolutely positioned and will cover the closest parent with relative positioning. The parent element should also be given the `ion-activatable` class, which tells the ripple effect that the element is clickable. It's recommended to add `overflow: hidden` to the parent element, as well, to avoid the ripple overflowing its container.\n\nThe default type, `\"bounded\"`, will expand the ripple effect from the click position outwards. To add a ripple effect that always starts in the center of the element and expands in a circle, add an `\"unbounded\"` type.\n",
8967 "docs": "The ripple effect component adds the [Material Design ink ripple interaction effect](https://material.io/develop/web/components/ripples/). This component can only be used inside of an `<ion-app>` and can be added to any component.\n\nIt's important to note that the parent should have [relative positioning](https://developer.mozilla.org/en-US/docs/Web/CSS/position) because the ripple effect is absolutely positioned and will cover the closest parent with relative positioning. The parent element should also be given the `ion-activatable` class, which tells the ripple effect that the element is clickable. It's recommended to add `overflow: hidden` to the parent element, as well, to avoid the ripple overflowing its container.\n\nThe default type, `\"bounded\"`, will expand the ripple effect from the click position outwards. To add a ripple effect that always starts in the center of the element and expands in a circle, add an `\"unbounded\"` type.",
8968 "docsTags": [],
8969 "usage": {
8970 "angular": "```html\n<ion-app>\n <ion-content>\n <div class=\"ion-activatable\">\n A plain div with a bounded ripple effect\n <ion-ripple-effect></ion-ripple-effect>\n </div>\n\n <button class=\"ion-activatable\">\n A button with a bounded ripple effect\n <ion-ripple-effect></ion-ripple-effect>\n </button>\n\n <div class=\"ion-activatable\">\n A plain div with an unbounded ripple effect\n <ion-ripple-effect type=\"unbounded\"></ion-ripple-effect>\n </div>\n\n <button class=\"ion-activatable\">\n A button with an unbounded ripple effect\n <ion-ripple-effect type=\"unbounded\"></ion-ripple-effect>\n </button>\n </ion-content>\n</ion-app>\n```\n\n```css\n.ion-activatable {\n position: relative;\n overflow: hidden;\n}\n```",
8971 "javascript": "```html\n<ion-app>\n <ion-content>\n <div class=\"ion-activatable\">\n A plain div with a bounded ripple effect\n <ion-ripple-effect></ion-ripple-effect>\n </div>\n\n <button class=\"ion-activatable\">\n A button with a bounded ripple effect\n <ion-ripple-effect></ion-ripple-effect>\n </button>\n\n <div class=\"ion-activatable\">\n A plain div with an unbounded ripple effect\n <ion-ripple-effect type=\"unbounded\"></ion-ripple-effect>\n </div>\n\n <button class=\"ion-activatable\">\n A button with an unbounded ripple effect\n <ion-ripple-effect type=\"unbounded\"></ion-ripple-effect>\n </button>\n </ion-content>\n</ion-app>\n```\n\n```css\n.ion-activatable {\n position: relative;\n overflow: hidden;\n}\n```",
8972 "react": "```tsx\nimport React from 'react';\nimport { IonApp, IonContent, IonRippleEffect } from '@ionic/react';\nimport './RippleEffectExample.css';\n\nexport const RippleExample: React.FC = () => (\n <IonApp>\n <IonContent>\n <div className=\"ion-activatable\">\n A plain div with a bounded ripple effect\n <IonRippleEffect></IonRippleEffect>\n </div>\n\n <button className=\"ion-activatable\">\n A button with a bounded ripple effect\n <IonRippleEffect></IonRippleEffect>\n </button>\n\n <div className=\"ion-activatable\">\n A plain div with an unbounded ripple effect\n <IonRippleEffect type=\"unbounded\"></IonRippleEffect>\n </div>\n\n <button className=\"ion-activatable\">\n A button with an unbounded ripple effect\n <IonRippleEffect type=\"unbounded\"></IonRippleEffect>\n </button>\n </IonContent>\n </IonApp>\n);\n```\n\n```css\n.ion-activatable {\n position: relative;\n overflow: hidden;\n}\n```",
8973 "vue": "```html\n<template>\n <ion-app>\n <ion-content>\n <div class=\"ion-activatable\">\n A plain div with a bounded ripple effect\n <ion-ripple-effect></ion-ripple-effect>\n </div>\n\n <button class=\"ion-activatable\">\n A button with a bounded ripple effect\n <ion-ripple-effect></ion-ripple-effect>\n </button>\n\n <div class=\"ion-activatable\">\n A plain div with an unbounded ripple effect\n <ion-ripple-effect type=\"unbounded\"></ion-ripple-effect>\n </div>\n\n <button class=\"ion-activatable\">\n A button with an unbounded ripple effect\n <ion-ripple-effect type=\"unbounded\"></ion-ripple-effect>\n </button>\n </ion-content>\n </ion-app>\n</template>\n\n<style>\n .ion-activatable {\n position: relative;\n overflow: hidden;\n }\n</style>\n```"
8974 },
8975 "props": [
8976 {
8977 "name": "type",
8978 "type": "\"bounded\" | \"unbounded\"",
8979 "mutable": false,
8980 "attr": "type",
8981 "reflectToAttr": false,
8982 "docs": "Sets the type of ripple-effect:\n\n- `bounded`: the ripple effect expands from the user's click position\n- `unbounded`: the ripple effect expands from the center of the button and overflows the container.\n\nNOTE: Surfaces for bounded ripples should have the overflow property set to hidden,\nwhile surfaces for unbounded ripples should have it set to visible.",
8983 "docsTags": [],
8984 "default": "'bounded'",
8985 "optional": false,
8986 "required": false
8987 }
8988 ],
8989 "methods": [
8990 {
8991 "name": "addRipple",
8992 "returns": {
8993 "type": "Promise<() => void>",
8994 "docs": ""
8995 },
8996 "signature": "addRipple(x: number, y: number) => Promise<() => void>",
8997 "parameters": [],
8998 "docs": "Adds the ripple effect to the parent element.",
8999 "docsTags": [
9000 {
9001 "name": "param",
9002 "text": "x The horizontal coordinate of where the ripple should start."
9003 },
9004 {
9005 "name": "param",
9006 "text": "y The vertical coordinate of where the ripple should start."
9007 }
9008 ]
9009 }
9010 ],
9011 "events": [],
9012 "styles": [],
9013 "slots": []
9014 },
9015 {
9016 "tag": "ion-route",
9017 "filePath": "src/components/route/route.tsx",
9018 "encapsulation": "none",
9019 "readme": "# ion-route\n\nThe route component takes a component and renders it when the Browser URl matches the url property.\n\n> Note: this component should only be used with vanilla and Stencil JavaScript projects. For Angular projects, use [`ion-router-outlet`](../router-outlet) and the Angular router.\n",
9020 "docs": "The route component takes a component and renders it when the Browser URl matches the url property.\n\n> Note: this component should only be used with vanilla and Stencil JavaScript projects. For Angular projects, use [`ion-router-outlet`](../router-outlet) and the Angular router.",
9021 "docsTags": [],
9022 "usage": {},
9023 "props": [
9024 {
9025 "name": "component",
9026 "type": "string",
9027 "mutable": false,
9028 "attr": "component",
9029 "reflectToAttr": false,
9030 "docs": "Name of the component to load/select in the navigation outlet (`ion-tabs`, `ion-nav`)\nwhen the route matches.\n\nThe value of this property is not always the tagname of the component to load,\nin `ion-tabs` it actually refers to the name of the `ion-tab` to select.",
9031 "docsTags": [],
9032 "optional": false,
9033 "required": true
9034 },
9035 {
9036 "name": "componentProps",
9037 "type": "undefined | { [key: string]: any; }",
9038 "mutable": false,
9039 "reflectToAttr": false,
9040 "docs": "A key value `{ 'red': true, 'blue': 'white'}` containing props that should be passed\nto the defined component when rendered.",
9041 "docsTags": [],
9042 "optional": true,
9043 "required": false
9044 },
9045 {
9046 "name": "url",
9047 "type": "string",
9048 "mutable": false,
9049 "attr": "url",
9050 "reflectToAttr": false,
9051 "docs": "Relative path that needs to match in order for this route to apply.\n\nAccepts paths similar to expressjs so that you can define parameters\nin the url /foo/:bar where bar would be available in incoming props.",
9052 "docsTags": [],
9053 "default": "''",
9054 "optional": false,
9055 "required": false
9056 }
9057 ],
9058 "methods": [],
9059 "events": [
9060 {
9061 "event": "ionRouteDataChanged",
9062 "detail": "any",
9063 "bubbles": true,
9064 "cancelable": true,
9065 "composed": true,
9066 "docs": "Used internally by `ion-router` to know when this route did change.",
9067 "docsTags": []
9068 }
9069 ],
9070 "styles": [],
9071 "slots": []
9072 },
9073 {
9074 "tag": "ion-route-redirect",
9075 "filePath": "src/components/route-redirect/route-redirect.tsx",
9076 "encapsulation": "none",
9077 "readme": "# ion-route-redirect\n\nA route redirect can only be used with an `ion-router` as a direct child of it.\n\n> Note: this component should only be used with vanilla and Stencil JavaScript projects. For Angular projects, use [`ion-router-outlet`](../router-outlet) and the Angular router.\n\nThe route redirect has two configurable properties:\n - `from`\n - `to`\n\nIt redirects \"from\" a URL \"to\" another URL. When the defined `ion-route-redirect` rule matches, the router will redirect from the path specified in the `from` property to the path in the `to` property. In order for a redirect to occur the `from` path needs to be an exact match to the navigated URL.\n\n\n## Multiple Route Redirects\n\nAn arbitrary number of redirect routes can be defined inside an `ion-router`, but only one can match.\n\nA route redirect will never call another redirect after its own redirect, since this could lead to infinite loops.\n\nTake the following two redirects:\n\n```html\n<ion-router>\n <ion-route-redirect from=\"/admin\" to=\"/login\"></ion-route-redirect>\n <ion-route-redirect from=\"/login\" to=\"/admin\"></ion-route-redirect>\n</ion-router>\n```\n\nIf the user navigates to `/admin` the router will redirect to `/login` and stop there. It will never evaluate more than one redirect.\n\n",
9078 "docs": "A route redirect can only be used with an `ion-router` as a direct child of it.\n\n> Note: this component should only be used with vanilla and Stencil JavaScript projects. For Angular projects, use [`ion-router-outlet`](../router-outlet) and the Angular router.\n\nThe route redirect has two configurable properties:\n - `from`\n - `to`\n\nIt redirects \"from\" a URL \"to\" another URL. When the defined `ion-route-redirect` rule matches, the router will redirect from the path specified in the `from` property to the path in the `to` property. In order for a redirect to occur the `from` path needs to be an exact match to the navigated URL.",
9079 "docsTags": [],
9080 "usage": {
9081 "javascript": "```html\n<!-- Redirects when the user navigates to `/admin` but\nwill NOT redirect if the user navigates to `/admin/posts` -->\n<ion-route-redirect from=\"/admin\" to=\"/login\"></ion-route-redirect>\n\n<!-- By adding the wilcard character (*), the redirect will match\nany subpath of admin -->\n<ion-route-redirect from=\"/admin/*\" to=\"/login\"></ion-route-redirect>\n```\n\n### Route Redirects as Guards\n\nRedirection routes can work as guards to prevent users from navigating to certain areas of an application based on a given condition, such as if the user is authenticated or not.\n\nA route redirect can be added and removed dynamically to redirect (or guard) some routes from being accessed. In the following example, all urls `*` will be redirected to the `/login` url if `isLoggedIn` is `false`.\n\n```tsx\nconst isLoggedIn = false;\n\nconst router = document.querySelector('ion-router');\nconst routeRedirect = document.createElement('ion-route-redirect');\nrouteRedirect.setAttribute('from', '*');\nrouteRedirect.setAttribute('to', '/login');\n\nif (!isLoggedIn) {\n router.appendChild(routeRedirect);\n}\n```\n\nAlternatively, the value of `to` can be modified based on a condition. In the following example, the route redirect will check if the user is logged in and redirect to the `/login` url if not.\n\n```html\n<ion-route-redirect id=\"tutorialRedirect\" from=\"*\"></ion-route-redirect>\n```\n\n```javascript\nconst isLoggedIn = false;\nconst routeRedirect = document.querySelector('#tutorialRedirect');\n\nrouteRedirect.setAttribute('to', isLoggedIn ? undefined : '/login');\n```"
9082 },
9083 "props": [
9084 {
9085 "name": "from",
9086 "type": "string",
9087 "mutable": false,
9088 "attr": "from",
9089 "reflectToAttr": false,
9090 "docs": "A redirect route, redirects \"from\" a URL \"to\" another URL. This property is that \"from\" URL.\nIt needs to be an exact match of the navigated URL in order to apply.\n\nThe path specified in this value is always an absolute path, even if the initial `/` slash\nis not specified.",
9091 "docsTags": [],
9092 "optional": false,
9093 "required": true
9094 },
9095 {
9096 "name": "to",
9097 "type": "null | string | undefined",
9098 "mutable": false,
9099 "attr": "to",
9100 "reflectToAttr": false,
9101 "docs": "A redirect route, redirects \"from\" a URL \"to\" another URL. This property is that \"to\" URL.\nWhen the defined `ion-route-redirect` rule matches, the router will redirect to the path\nspecified in this property.\n\nThe value of this property is always an absolute path inside the scope of routes defined in\n`ion-router` it can't be used with another router or to perform a redirection to a different domain.\n\nNote that this is a virtual redirect, it will not cause a real browser refresh, again, it's\na redirect inside the context of ion-router.\n\nWhen this property is not specified or his value is `undefined` the whole redirect route is noop,\neven if the \"from\" value matches.",
9102 "docsTags": [],
9103 "optional": false,
9104 "required": true
9105 }
9106 ],
9107 "methods": [],
9108 "events": [
9109 {
9110 "event": "ionRouteRedirectChanged",
9111 "detail": "any",
9112 "bubbles": true,
9113 "cancelable": true,
9114 "composed": true,
9115 "docs": "Internal event that fires when any value of this rule is added/removed from the DOM,\nor any of his public properties changes.\n\n`ion-router` captures this event in order to update his internal registry of router rules.",
9116 "docsTags": []
9117 }
9118 ],
9119 "styles": [],
9120 "slots": []
9121 },
9122 {
9123 "tag": "ion-router",
9124 "filePath": "src/components/router/router.tsx",
9125 "encapsulation": "none",
9126 "readme": "# ion-router\n\nThe router is a component for handling routing inside vanilla and Stencil JavaScript projects.\n\n> Note: this component should only be used with vanilla and Stencil JavaScript projects. For Angular projects, use [`ion-router-outlet`](../router-outlet) and the Angular router.\n\nApps should have a single `ion-router` component in the codebase.\nThis component controls all interactions with the browser history and it aggregates updates through an event system.\n\n`ion-router` is just a URL coordinator for the navigation outlets of ionic: `ion-nav` and `ion-tabs`.\n\nThat means the `ion-router` never touches the DOM, it does NOT show the components or emit any kind of lifecycle events, it just tells `ion-nav` and `ion-tabs` what and when to \"show\" based on the browser's URL.\n\nIn order to configure this relationship between components (to load/select) and URLs, `ion-router` uses a declarative syntax using JSX/HTML to define a tree of routes.\n\n",
9127 "docs": "The router is a component for handling routing inside vanilla and Stencil JavaScript projects.\n\n> Note: this component should only be used with vanilla and Stencil JavaScript projects. For Angular projects, use [`ion-router-outlet`](../router-outlet) and the Angular router.\n\nApps should have a single `ion-router` component in the codebase.\nThis component controls all interactions with the browser history and it aggregates updates through an event system.\n\n`ion-router` is just a URL coordinator for the navigation outlets of ionic: `ion-nav` and `ion-tabs`.\n\nThat means the `ion-router` never touches the DOM, it does NOT show the components or emit any kind of lifecycle events, it just tells `ion-nav` and `ion-tabs` what and when to \"show\" based on the browser's URL.\n\nIn order to configure this relationship between components (to load/select) and URLs, `ion-router` uses a declarative syntax using JSX/HTML to define a tree of routes.",
9128 "docsTags": [],
9129 "usage": {
9130 "javascript": "```html\n<ion-router>\n <ion-route component=\"page-tabs\">\n <ion-route url=\"/schedule\" component=\"tab-schedule\">\n <ion-route component=\"page-schedule\"></ion-route>\n <ion-route url=\"/session/:sessionId\" component=\"page-session\"></ion-route>\n </ion-route>\n\n <ion-route url=\"/speakers\" component=\"tab-speaker\">\n <ion-route component=\"page-speaker-list\"></ion-route>\n <ion-route url=\"/session/:sessionId\" component=\"page-session\"></ion-route>\n <ion-route url=\"/:speakerId\" component=\"page-speaker-detail\"></ion-route>\n </ion-route>\n\n <ion-route url=\"/map\" component=\"page-map\"></ion-route>\n <ion-route url=\"/about\" component=\"page-about\"></ion-route>\n </ion-route>\n\n <ion-route url=\"/tutorial\" component=\"page-tutorial\"></ion-route>\n <ion-route url=\"/login\" component=\"page-login\"></ion-route>\n <ion-route url=\"/account\" component=\"page-account\"></ion-route>\n <ion-route url=\"/signup\" component=\"page-signup\"></ion-route>\n <ion-route url=\"/support\" component=\"page-support\"></ion-route>\n</ion-router>\n\n```\n"
9131 },
9132 "props": [
9133 {
9134 "name": "root",
9135 "type": "string",
9136 "mutable": false,
9137 "attr": "root",
9138 "reflectToAttr": false,
9139 "docs": "By default `ion-router` will match the routes at the root path (\"/\").\nThat can be changed when",
9140 "docsTags": [],
9141 "default": "'/'",
9142 "optional": false,
9143 "required": false
9144 },
9145 {
9146 "name": "useHash",
9147 "type": "boolean",
9148 "mutable": false,
9149 "attr": "use-hash",
9150 "reflectToAttr": false,
9151 "docs": "The router can work in two \"modes\":\n- With hash: `/index.html#/path/to/page`\n- Without hash: `/path/to/page`\n\nUsing one or another might depend in the requirements of your app and/or where it's deployed.\n\nUsually \"hash-less\" navigation works better for SEO and it's more user friendly too, but it might\nrequires additional server-side configuration in order to properly work.\n\nOn the otherside hash-navigation is much easier to deploy, it even works over the file protocol.\n\nBy default, this property is `true`, change to `false` to allow hash-less URLs.",
9152 "docsTags": [],
9153 "default": "true",
9154 "optional": false,
9155 "required": false
9156 }
9157 ],
9158 "methods": [
9159 {
9160 "name": "back",
9161 "returns": {
9162 "type": "Promise<void>",
9163 "docs": ""
9164 },
9165 "signature": "back() => Promise<void>",
9166 "parameters": [],
9167 "docs": "Go back to previous page in the window.history.",
9168 "docsTags": []
9169 },
9170 {
9171 "name": "push",
9172 "returns": {
9173 "type": "Promise<boolean>",
9174 "docs": ""
9175 },
9176 "signature": "push(url: string, direction?: RouterDirection) => Promise<boolean>",
9177 "parameters": [],
9178 "docs": "Navigate to the specified URL.",
9179 "docsTags": [
9180 {
9181 "name": "param",
9182 "text": "url The url to navigate to."
9183 },
9184 {
9185 "name": "param",
9186 "text": "direction The direction of the animation. Defaults to `\"forward\"`."
9187 }
9188 ]
9189 }
9190 ],
9191 "events": [
9192 {
9193 "event": "ionRouteDidChange",
9194 "detail": "RouterEventDetail",
9195 "bubbles": true,
9196 "cancelable": true,
9197 "composed": true,
9198 "docs": "Emitted when the route had changed",
9199 "docsTags": []
9200 },
9201 {
9202 "event": "ionRouteWillChange",
9203 "detail": "RouterEventDetail",
9204 "bubbles": true,
9205 "cancelable": true,
9206 "composed": true,
9207 "docs": "Event emitted when the route is about to change",
9208 "docsTags": []
9209 }
9210 ],
9211 "styles": [],
9212 "slots": []
9213 },
9214 {
9215 "tag": "ion-router-link",
9216 "filePath": "src/components/router-link/router-link.tsx",
9217 "encapsulation": "shadow",
9218 "readme": "# ion-router-link\n\nThe router link component is used for navigating to a specified link. Similar to the browser's anchor tag, it can accept a href for the location, and a direction for the transition animation.\n\n> Note: this component should only be used with vanilla and Stencil JavaScript projects. For Angular projects, use an `<a>` and `routerLink` with the Angular router.\n",
9219 "docs": "The router link component is used for navigating to a specified link. Similar to the browser's anchor tag, it can accept a href for the location, and a direction for the transition animation.\n\n> Note: this component should only be used with vanilla and Stencil JavaScript projects. For Angular projects, use an `<a>` and `routerLink` with the Angular router.",
9220 "docsTags": [],
9221 "usage": {},
9222 "props": [
9223 {
9224 "name": "color",
9225 "type": "string | undefined",
9226 "mutable": false,
9227 "attr": "color",
9228 "reflectToAttr": false,
9229 "docs": "The color to use from your application's color palette.\nDefault options are: `\"primary\"`, `\"secondary\"`, `\"tertiary\"`, `\"success\"`, `\"warning\"`, `\"danger\"`, `\"light\"`, `\"medium\"`, and `\"dark\"`.\nFor more information on colors, see [theming](/docs/theming/basics).",
9230 "docsTags": [],
9231 "optional": true,
9232 "required": false
9233 },
9234 {
9235 "name": "href",
9236 "type": "string | undefined",
9237 "mutable": false,
9238 "attr": "href",
9239 "reflectToAttr": false,
9240 "docs": "Contains a URL or a URL fragment that the hyperlink points to.\nIf this property is set, an anchor tag will be rendered.",
9241 "docsTags": [],
9242 "optional": false,
9243 "required": false
9244 },
9245 {
9246 "name": "rel",
9247 "type": "string | undefined",
9248 "mutable": false,
9249 "attr": "rel",
9250 "reflectToAttr": false,
9251 "docs": "Specifies the relationship of the target object to the link object.\nThe value is a space-separated list of [link types](https://developer.mozilla.org/en-US/docs/Web/HTML/Link_types).",
9252 "docsTags": [],
9253 "optional": false,
9254 "required": false
9255 },
9256 {
9257 "name": "routerDirection",
9258 "type": "\"back\" | \"forward\" | \"root\"",
9259 "mutable": false,
9260 "attr": "router-direction",
9261 "reflectToAttr": false,
9262 "docs": "When using a router, it specifies the transition direction when navigating to\nanother page using `href`.",
9263 "docsTags": [],
9264 "default": "'forward'",
9265 "optional": false,
9266 "required": false
9267 },
9268 {
9269 "name": "target",
9270 "type": "string | undefined",
9271 "mutable": false,
9272 "attr": "target",
9273 "reflectToAttr": false,
9274 "docs": "Specifies where to display the linked URL.\nOnly applies when an `href` is provided.\nSpecial keywords: `\"_blank\"`, `\"_self\"`, `\"_parent\"`, `\"_top\"`.",
9275 "docsTags": [],
9276 "optional": false,
9277 "required": false
9278 }
9279 ],
9280 "methods": [],
9281 "events": [],
9282 "styles": [
9283 {
9284 "name": "--background",
9285 "annotation": "prop",
9286 "docs": "Background of the router link"
9287 },
9288 {
9289 "name": "--color",
9290 "annotation": "prop",
9291 "docs": "Text color of the router link"
9292 }
9293 ],
9294 "slots": []
9295 },
9296 {
9297 "tag": "ion-router-outlet",
9298 "filePath": "src/components/router-outlet/route-outlet.tsx",
9299 "encapsulation": "shadow",
9300 "readme": "# ion-router-outlet\n\nRouter outlet is a component used in routing within an Angular app. It behaves in a similar way to Angular's built-in router outlet component, but contains the logic for providing a stacked navigation, and animating views in and out.\n\n> Note: this component should only be used with Angular projects. For vanilla or Stencil JavaScript projects, use [`ion-router`](../router) and [`ion-route`](../route).\n\nAlthough router outlet has methods for navigating around, it's recommended to use the navigation methods in Angular's router.\n\n\n### Life Cycle Hooks\n\nRoutes rendered in a Router Outlet have access to specific Ionic events that are wired up to animations\n\n\n| Event Name | Trigger |\n|--------------------|------------------------------------------------------------------|\n| `ionViewWillEnter` | Fired when the component being routed to is about to animate in. |\n| `ionViewDidEnter` | Fired when the component being routed to has animated in. |\n| `ionViewWillLeave` | Fired when the component being routed from is about to animate. |\n| `ionViewDidLeave` | Fired when the component being routed from has animated. |\n\n\nThese event tie into Ionic's animation system and can be used to coordinate parts of your app when a Components is done with it's animation. These events are not a replacement for Angular's own event system, but an addition.\n\nFor handling Router Guards, the older `ionViewCanEnter` and `ionViewCanLeave` have been replaced with their framework specific equivalent. For Angular, there are [Router Guards](https://angular.io/guide/router#milestone-5-route-guards).\n\n",
9301 "docs": "Router outlet is a component used in routing within an Angular app. It behaves in a similar way to Angular's built-in router outlet component, but contains the logic for providing a stacked navigation, and animating views in and out.\n\n> Note: this component should only be used with Angular projects. For vanilla or Stencil JavaScript projects, use [`ion-router`](../router) and [`ion-route`](../route).\n\nAlthough router outlet has methods for navigating around, it's recommended to use the navigation methods in Angular's router.",
9302 "docsTags": [],
9303 "usage": {},
9304 "props": [
9305 {
9306 "name": "animated",
9307 "type": "boolean",
9308 "mutable": false,
9309 "attr": "animated",
9310 "reflectToAttr": false,
9311 "docs": "If `true`, the router-outlet should animate the transition of components.",
9312 "docsTags": [],
9313 "default": "true",
9314 "optional": false,
9315 "required": false
9316 },
9317 {
9318 "name": "animation",
9319 "type": "((Animation: Animation, baseEl: any, opts?: any) => Promise<Animation>) | undefined",
9320 "mutable": false,
9321 "reflectToAttr": false,
9322 "docs": "By default `ion-nav` animates transition between pages based in the mode (ios or material design).\nHowever, this property allows to create custom transition using `AnimateBuilder` functions.",
9323 "docsTags": [],
9324 "optional": true,
9325 "required": false
9326 },
9327 {
9328 "name": "mode",
9329 "type": "\"ios\" | \"md\"",
9330 "mutable": true,
9331 "attr": "mode",
9332 "reflectToAttr": false,
9333 "docs": "The mode determines which platform styles to use.",
9334 "docsTags": [],
9335 "default": "getIonMode(this)",
9336 "optional": false,
9337 "required": false
9338 }
9339 ],
9340 "methods": [],
9341 "events": [],
9342 "styles": [],
9343 "slots": []
9344 },
9345 {
9346 "tag": "ion-row",
9347 "filePath": "src/components/row/row.tsx",
9348 "encapsulation": "shadow",
9349 "readme": "# ion-row\n\nRows are horizontal components of the [grid](../grid) system and contain varying numbers of\n[columns](../col). They ensure the columns are positioned properly.\n\nSee [Grid Layout](/docs/layout/grid) for more information.\n\n\n## Row attributes\n\nBy default, columns will stretch to fill the entire height of the row and wrap when necessary.\nThere are several attributes that can be added to a row to customize this behavior.\n\n| Property | Description |\n|-----------------------------|--------------------------------------------------------------------------------------------------------------------------------------------------|\n| nowrap | Adds `flex-wrap: nowrap`. Forces the columns to a single row. |\n| wrap-reverse | Adds `flex-wrap: wrap-reverse`. The columns will wrap in reverse. |\n| align-items-start | Adds `align-items: flex-start`. All columns will be vertically aligned at the top, unless they specify their own alignment. |\n| align-items-center | Adds `align-items: center`. All columns will be vertically aligned in the center, unless they specify their own alignment. |\n| align-items-end | Adds `align-items: flex-end`. All columns will be vertically aligned at the bottom, unless they specify their own alignment. |\n| align-items-stretch | Adds `align-items: stretch`. All columns will be stretched to take up the entire height of the row, unless they specify their own alignment. |\n| align-items-baseline | Adds `align-items: baseline`. All columns will be vertically aligned at their baselines, unless they specify their own alignment. |\n| justify-content-start | Adds `justify-content: start`. All columns will be horizontally aligned at the start. |\n| justify-content-center | Adds `justify-content: center`. All columns will be horizontally aligned at the center. |\n| justify-content-end | Adds `justify-content: end`. All columns will be horizontally aligned at the end. |\n| justify-content-around | Adds `justify-content: space-around`. All columns will be horizontally aligned with equal space around them. |\n| justify-content-between | Adds `justify-content: space-between`. All columns will be horizontally aligned with a half-size space on either end. |\n\n",
9350 "docs": "Rows are horizontal components of the [grid](../grid) system and contain varying numbers of\n[columns](../col). They ensure the columns are positioned properly.\n\nSee [Grid Layout](/docs/layout/grid) for more information.",
9351 "docsTags": [],
9352 "usage": {},
9353 "props": [],
9354 "methods": [],
9355 "events": [],
9356 "styles": [],
9357 "slots": []
9358 },
9359 {
9360 "tag": "ion-searchbar",
9361 "filePath": "src/components/searchbar/searchbar.tsx",
9362 "encapsulation": "scoped",
9363 "readme": "# ion-searchbar\n\nSearchbars represent a text field that can be used to search through a collection. They can be displayed inside of a toolbar or the main content.\n\nA Searchbar should be used instead of an input to search lists. A clear button is displayed upon entering input in the searchbar's text field. Clicking on the clear button will erase the text field and the input will remain focused. A cancel button can be enabled which will clear the input and lose the focus upon click.\n\n\n",
9364 "docs": "Searchbars represent a text field that can be used to search through a collection. They can be displayed inside of a toolbar or the main content.\n\nA Searchbar should be used instead of an input to search lists. A clear button is displayed upon entering input in the searchbar's text field. Clicking on the clear button will erase the text field and the input will remain focused. A cancel button can be enabled which will clear the input and lose the focus upon click.",
9365 "docsTags": [
9366 {
9367 "text": "{\"ios\" | \"md\"} mode - The mode determines which platform styles to use.",
9368 "name": "virtualProp"
9369 }
9370 ],
9371 "usage": {
9372 "angular": "```html\n<!-- Default Searchbar -->\n<ion-searchbar></ion-searchbar>\n\n<!-- Searchbar with cancel button always shown -->\n<ion-searchbar showCancelButton=\"always\"></ion-searchbar>\n\n<!-- Searchbar with cancel button never shown -->\n<ion-searchbar showCancelButton=\"never\"></ion-searchbar>\n\n<!-- Searchbar with cancel button shown on focus -->\n<ion-searchbar showCancelButton=\"focus\"></ion-searchbar>\n\n<!-- Searchbar with danger color -->\n<ion-searchbar color=\"danger\"></ion-searchbar>\n\n<!-- Searchbar with value -->\n<ion-searchbar value=\"Ionic\"></ion-searchbar>\n\n<!-- Searchbar with telephone type -->\n<ion-searchbar type=\"tel\"></ion-searchbar>\n\n<!-- Searchbar with numeric inputmode -->\n<ion-searchbar inputmode=\"numeric\"></ion-searchbar>\n\n<!-- Searchbar disabled -->\n<ion-searchbar disabled=\"true\"></ion-searchbar>\n\n<!-- Searchbar with a cancel button and custom cancel button text -->\n<ion-searchbar showCancelButton=\"focus\" cancelButtonText=\"Custom Cancel\"></ion-searchbar>\n\n<!-- Searchbar with a custom debounce -->\n<ion-searchbar debounce=\"500\"></ion-searchbar>\n\n<!-- Animated Searchbar -->\n<ion-searchbar animated></ion-searchbar>\n\n<!-- Searchbar with a placeholder -->\n<ion-searchbar placeholder=\"Filter Schedules\"></ion-searchbar>\n\n<!-- Searchbar in a Toolbar -->\n<ion-toolbar>\n <ion-searchbar></ion-searchbar>\n</ion-toolbar>\n```\n",
9373 "javascript": "```html\n<!-- Default Searchbar -->\n<ion-searchbar></ion-searchbar>\n\n<!-- Searchbar with cancel button always shown -->\n<ion-searchbar show-cancel-button=\"always\"></ion-searchbar>\n\n<!-- Searchbar with cancel button never shown -->\n<ion-searchbar show-cancel-button=\"never\"></ion-searchbar>\n\n<!-- Searchbar with cancel button shown on focus -->\n<ion-searchbar show-cancel-button=\"focus\"></ion-searchbar>\n\n<!-- Searchbar with danger color -->\n<ion-searchbar color=\"danger\"></ion-searchbar>\n\n<!-- Searchbar with value -->\n<ion-searchbar value=\"Ionic\"></ion-searchbar>\n\n<!-- Searchbar with telephone type -->\n<ion-searchbar type=\"tel\"></ion-searchbar>\n\n<!-- Searchbar with numeric inputmode -->\n<ion-searchbar inputmode=\"numeric\"></ion-searchbar>\n\n<!-- Searchbar disabled -->\n<ion-searchbar disabled=\"true\"></ion-searchbar>\n\n<!-- Searchbar with a cancel button and custom cancel button text -->\n<ion-searchbar show-cancel-button=\"focus\" cancel-button-text=\"Custom Cancel\"></ion-searchbar>\n\n<!-- Searchbar with a custom debounce -->\n<ion-searchbar debounce=\"500\"></ion-searchbar>\n\n<!-- Animated Searchbar -->\n<ion-searchbar animated></ion-searchbar>\n\n<!-- Searchbar with a placeholder -->\n<ion-searchbar placeholder=\"Filter Schedules\"></ion-searchbar>\n\n<!-- Searchbar in a Toolbar -->\n<ion-toolbar>\n <ion-searchbar></ion-searchbar>\n</ion-toolbar>\n```\n",
9374 "react": "```tsx\nimport React from 'react';\nimport { IonSearchbar, IonToolbar, IonContent } from '@ionic/react';\n\nexport const SearchbarExample: React.FC = () => (\n <IonContent>\n {/*-- Default Searchbar --*/}\n <IonSearchbar></IonSearchbar>\n\n {/*-- Searchbar with cancel button always shown --*/}\n <IonSearchbar showCancelButton=\"always\"></IonSearchbar>\n\n {/*-- Searchbar with cancel button never shown --*/}\n <IonSearchbar showCancelButton=\"never\"></IonSearchbar>\n\n {/*-- Searchbar with cancel button shown on focus --*/}\n <IonSearchbar showCancelButton=\"focus\"></IonSearchbar>\n\n {/*-- Searchbar with danger color --*/}\n <IonSearchbar color=\"danger\"></IonSearchbar>\n\n {/*-- Searchbar with value --*/}\n <IonSearchbar value=\"Ionic\"></IonSearchbar>\n\n {/*-- Searchbar with telephone type --*/}\n <IonSearchbar type=\"tel\"></IonSearchbar>\n\n {/*-- Searchbar with numeric inputmode --*/}\n <IonSearchbar inputmode=\"numeric\"></IonSearchbar>\n\n {/*-- Searchbar disabled --*/}\n <IonSearchbar disabled={true}></IonSearchbar>\n\n {/*-- Searchbar with a cancel button and custom cancel button text --*/}\n <IonSearchbar showCancelButton=\"focus\" cancelButtonText=\"Custom Cancel\"></IonSearchbar>\n\n {/*-- Searchbar with a custom debounce --*/}\n <IonSearchbar debounce={500}></IonSearchbar>\n\n {/*-- Animated Searchbar --*/}\n <IonSearchbar animated></IonSearchbar>\n\n {/*-- Searchbar with a placeholder --*/}\n <IonSearchbar placeholder=\"Filter Schedules\"></IonSearchbar>\n\n {/*-- Searchbar in a Toolbar --*/}\n <IonToolbar>\n <IonSearchbar></IonSearchbar>\n </IonToolbar>\n </IonContent>\n);\n```\n",
9375 "vue": "```html\n<template>\n <!-- Default Searchbar -->\n <ion-searchbar></ion-searchbar>\n \n <!-- Searchbar with cancel button always shown -->\n <ion-searchbar showCancelButton=\"always\"></ion-searchbar>\n \n <!-- Searchbar with cancel button never shown -->\n <ion-searchbar showCancelButton=\"never\"></ion-searchbar>\n \n <!-- Searchbar with cancel button shown on focus -->\n <ion-searchbar showCancelButton=\"focus\"></ion-searchbar>\n\n <!-- Searchbar with danger color -->\n <ion-searchbar color=\"danger\"></ion-searchbar>\n\n <!-- Searchbar with value -->\n <ion-searchbar value=\"Ionic\"></ion-searchbar>\n\n <!-- Searchbar with telephone type -->\n <ion-searchbar type=\"tel\"></ion-searchbar>\n\n <!-- Searchbar with numeric inputmode -->\n <ion-searchbar inputmode=\"numeric\"></ion-searchbar>\n\n <!-- Searchbar disabled -->\n <ion-searchbar disabled=\"true\"></ion-searchbar>\n\n <!-- Searchbar with a cancel button and custom cancel button text -->\n <ion-searchbar showCancelButton=\"focus\" cancelButtonText=\"Custom Cancel\"></ion-searchbar>\n\n <!-- Searchbar with a custom debounce -->\n <ion-searchbar debounce=\"500\"></ion-searchbar>\n\n <!-- Animated Searchbar -->\n <ion-searchbar animated></ion-searchbar>\n\n <!-- Searchbar with a placeholder -->\n <ion-searchbar placeholder=\"Filter Schedules\"></ion-searchbar>\n\n <!-- Searchbar in a Toolbar -->\n <ion-toolbar>\n <ion-searchbar></ion-searchbar>\n </ion-toolbar>\n</template>\n```\n"
9376 },
9377 "props": [
9378 {
9379 "name": "animated",
9380 "type": "boolean",
9381 "mutable": false,
9382 "attr": "animated",
9383 "reflectToAttr": false,
9384 "docs": "If `true`, enable searchbar animation.",
9385 "docsTags": [],
9386 "default": "false",
9387 "optional": false,
9388 "required": false
9389 },
9390 {
9391 "name": "autocomplete",
9392 "type": "\"off\" | \"on\"",
9393 "mutable": false,
9394 "attr": "autocomplete",
9395 "reflectToAttr": false,
9396 "docs": "Set the input's autocomplete property.",
9397 "docsTags": [],
9398 "default": "'off'",
9399 "optional": false,
9400 "required": false
9401 },
9402 {
9403 "name": "autocorrect",
9404 "type": "\"off\" | \"on\"",
9405 "mutable": false,
9406 "attr": "autocorrect",
9407 "reflectToAttr": false,
9408 "docs": "Set the input's autocorrect property.",
9409 "docsTags": [],
9410 "default": "'off'",
9411 "optional": false,
9412 "required": false
9413 },
9414 {
9415 "name": "cancelButtonIcon",
9416 "type": "string",
9417 "mutable": false,
9418 "attr": "cancel-button-icon",
9419 "reflectToAttr": false,
9420 "docs": "Set the cancel button icon. Only applies to `md` mode.",
9421 "docsTags": [],
9422 "default": "'md-arrow-back'",
9423 "optional": false,
9424 "required": false
9425 },
9426 {
9427 "name": "cancelButtonText",
9428 "type": "string",
9429 "mutable": false,
9430 "attr": "cancel-button-text",
9431 "reflectToAttr": false,
9432 "docs": "Set the the cancel button text. Only applies to `ios` mode.",
9433 "docsTags": [],
9434 "default": "'Cancel'",
9435 "optional": false,
9436 "required": false
9437 },
9438 {
9439 "name": "clearIcon",
9440 "type": "string | undefined",
9441 "mutable": false,
9442 "attr": "clear-icon",
9443 "reflectToAttr": false,
9444 "docs": "Set the clear icon. Defaults to `\"close-circle\"` for `ios` and `\"close\"` for `md`.",
9445 "docsTags": [],
9446 "optional": true,
9447 "required": false
9448 },
9449 {
9450 "name": "color",
9451 "type": "string | undefined",
9452 "mutable": false,
9453 "attr": "color",
9454 "reflectToAttr": false,
9455 "docs": "The color to use from your application's color palette.\nDefault options are: `\"primary\"`, `\"secondary\"`, `\"tertiary\"`, `\"success\"`, `\"warning\"`, `\"danger\"`, `\"light\"`, `\"medium\"`, and `\"dark\"`.\nFor more information on colors, see [theming](/docs/theming/basics).",
9456 "docsTags": [],
9457 "optional": true,
9458 "required": false
9459 },
9460 {
9461 "name": "debounce",
9462 "type": "number",
9463 "mutable": false,
9464 "attr": "debounce",
9465 "reflectToAttr": false,
9466 "docs": "Set the amount of time, in milliseconds, to wait to trigger the `ionChange` event after each keystroke.",
9467 "docsTags": [],
9468 "default": "250",
9469 "optional": false,
9470 "required": false
9471 },
9472 {
9473 "name": "disabled",
9474 "type": "boolean",
9475 "mutable": false,
9476 "attr": "disabled",
9477 "reflectToAttr": false,
9478 "docs": "If `true`, the user cannot interact with the input.",
9479 "docsTags": [],
9480 "default": "false",
9481 "optional": false,
9482 "required": false
9483 },
9484 {
9485 "name": "inputmode",
9486 "type": "\"decimal\" | \"email\" | \"none\" | \"numeric\" | \"search\" | \"tel\" | \"text\" | \"url\"",
9487 "mutable": false,
9488 "attr": "inputmode",
9489 "reflectToAttr": false,
9490 "docs": "A hint to the browser for which keyboard to display.\nPossible values: `\"none\"`, `\"text\"`, `\"tel\"`, `\"url\"`,\n`\"email\"`, `\"numeric\"`, `\"decimal\"`, and `\"search\"`.",
9491 "docsTags": [],
9492 "default": "'search'",
9493 "optional": false,
9494 "required": false
9495 },
9496 {
9497 "name": "mode",
9498 "type": "\"ios\" | \"md\"",
9499 "mutable": false,
9500 "attr": "mode",
9501 "reflectToAttr": false,
9502 "docs": "The mode determines which platform styles to use.",
9503 "docsTags": [],
9504 "optional": true,
9505 "required": false
9506 },
9507 {
9508 "name": "placeholder",
9509 "type": "string",
9510 "mutable": false,
9511 "attr": "placeholder",
9512 "reflectToAttr": false,
9513 "docs": "Set the input's placeholder.\n`placeholder` can accept either plaintext or HTML as a string.\nTo display characters normally reserved for HTML, they\nmust be escaped. For example `<Ionic>` would become\n`&lt;Ionic&gt;`\n\nFor more information: [Security Documentation](https://ionicframework.com/docs/faq/security)",
9514 "docsTags": [],
9515 "default": "'Search'",
9516 "optional": false,
9517 "required": false
9518 },
9519 {
9520 "name": "searchIcon",
9521 "type": "string",
9522 "mutable": false,
9523 "attr": "search-icon",
9524 "reflectToAttr": false,
9525 "docs": "The icon to use as the search icon.",
9526 "docsTags": [],
9527 "default": "'search'",
9528 "optional": false,
9529 "required": false
9530 },
9531 {
9532 "name": "showCancelButton",
9533 "type": "boolean | string",
9534 "mutable": false,
9535 "attr": "show-cancel-button",
9536 "reflectToAttr": false,
9537 "docs": "Sets the behavior for the cancel button. Defaults to `\"never\"`.\nSetting to `\"focus\"` shows the cancel button on focus.\nSetting to `\"never\"` hides the cancel button.\nSetting to `\"always\"` shows the cancel button regardless\nof focus state.",
9538 "docsTags": [],
9539 "default": "'never'",
9540 "optional": false,
9541 "required": false
9542 },
9543 {
9544 "name": "spellcheck",
9545 "type": "boolean",
9546 "mutable": false,
9547 "attr": "spellcheck",
9548 "reflectToAttr": false,
9549 "docs": "If `true`, enable spellcheck on the input.",
9550 "docsTags": [],
9551 "default": "false",
9552 "optional": false,
9553 "required": false
9554 },
9555 {
9556 "name": "type",
9557 "type": "\"email\" | \"number\" | \"password\" | \"search\" | \"tel\" | \"text\" | \"url\"",
9558 "mutable": false,
9559 "attr": "type",
9560 "reflectToAttr": false,
9561 "docs": "Set the type of the input.",
9562 "docsTags": [],
9563 "default": "'search'",
9564 "optional": false,
9565 "required": false
9566 },
9567 {
9568 "name": "value",
9569 "type": "null | string | undefined",
9570 "mutable": true,
9571 "attr": "value",
9572 "reflectToAttr": false,
9573 "docs": "the value of the searchbar.",
9574 "docsTags": [],
9575 "default": "''",
9576 "optional": true,
9577 "required": false
9578 }
9579 ],
9580 "methods": [
9581 {
9582 "name": "getInputElement",
9583 "returns": {
9584 "type": "Promise<HTMLInputElement>",
9585 "docs": ""
9586 },
9587 "signature": "getInputElement() => Promise<HTMLInputElement>",
9588 "parameters": [],
9589 "docs": "Returns the native `<input>` element used under the hood.",
9590 "docsTags": []
9591 },
9592 {
9593 "name": "setFocus",
9594 "returns": {
9595 "type": "Promise<void>",
9596 "docs": ""
9597 },
9598 "signature": "setFocus() => Promise<void>",
9599 "parameters": [],
9600 "docs": "Sets focus on the specified `ion-searchbar`. Use this method instead of the global\n`input.focus()`.",
9601 "docsTags": []
9602 }
9603 ],
9604 "events": [
9605 {
9606 "event": "ionBlur",
9607 "detail": "void",
9608 "bubbles": true,
9609 "cancelable": true,
9610 "composed": true,
9611 "docs": "Emitted when the input loses focus.",
9612 "docsTags": []
9613 },
9614 {
9615 "event": "ionCancel",
9616 "detail": "void",
9617 "bubbles": true,
9618 "cancelable": true,
9619 "composed": true,
9620 "docs": "Emitted when the cancel button is clicked.",
9621 "docsTags": []
9622 },
9623 {
9624 "event": "ionChange",
9625 "detail": "SearchbarChangeEventDetail",
9626 "bubbles": true,
9627 "cancelable": true,
9628 "composed": true,
9629 "docs": "Emitted when the value has changed.",
9630 "docsTags": []
9631 },
9632 {
9633 "event": "ionClear",
9634 "detail": "void",
9635 "bubbles": true,
9636 "cancelable": true,
9637 "composed": true,
9638 "docs": "Emitted when the clear input button is clicked.",
9639 "docsTags": []
9640 },
9641 {
9642 "event": "ionFocus",
9643 "detail": "void",
9644 "bubbles": true,
9645 "cancelable": true,
9646 "composed": true,
9647 "docs": "Emitted when the input has focus.",
9648 "docsTags": []
9649 },
9650 {
9651 "event": "ionInput",
9652 "detail": "KeyboardEvent",
9653 "bubbles": true,
9654 "cancelable": true,
9655 "composed": true,
9656 "docs": "Emitted when a keyboard input ocurred.",
9657 "docsTags": []
9658 }
9659 ],
9660 "styles": [
9661 {
9662 "name": "--background",
9663 "annotation": "prop",
9664 "docs": "Background of the searchbar"
9665 },
9666 {
9667 "name": "--cancel-button-color",
9668 "annotation": "prop",
9669 "docs": "Color of the searchbar cancel button"
9670 },
9671 {
9672 "name": "--clear-button-color",
9673 "annotation": "prop",
9674 "docs": "Color of the searchbar clear button"
9675 },
9676 {
9677 "name": "--color",
9678 "annotation": "prop",
9679 "docs": "Color of the searchbar text"
9680 },
9681 {
9682 "name": "--icon-color",
9683 "annotation": "prop",
9684 "docs": "Color of the searchbar icon"
9685 },
9686 {
9687 "name": "--placeholder-color",
9688 "annotation": "prop",
9689 "docs": "Color of the searchbar placeholder"
9690 },
9691 {
9692 "name": "--placeholder-font-style",
9693 "annotation": "prop",
9694 "docs": "Font style of the searchbar placeholder"
9695 },
9696 {
9697 "name": "--placeholder-font-weight",
9698 "annotation": "prop",
9699 "docs": "Font weight of the searchbar placeholder"
9700 },
9701 {
9702 "name": "--placeholder-opacity",
9703 "annotation": "prop",
9704 "docs": "Opacity of the searchbar placeholder"
9705 }
9706 ],
9707 "slots": []
9708 },
9709 {
9710 "tag": "ion-segment",
9711 "filePath": "src/components/segment/segment.tsx",
9712 "encapsulation": "scoped",
9713 "readme": "# ion-segment\n\nSegments display a group of related buttons, sometimes known as segmented controls, in a horizontal row. They can be displayed inside of a toolbar or the main content.\n\nTheir functionality is similar to tabs, where selecting one will deselect all others. Segments are useful for toggling between different views inside of the content. Tabs should be used instead of a segment when clicking on a control should navigate between pages.\n\n",
9714 "docs": "Segments display a group of related buttons, sometimes known as segmented controls, in a horizontal row. They can be displayed inside of a toolbar or the main content.\n\nTheir functionality is similar to tabs, where selecting one will deselect all others. Segments are useful for toggling between different views inside of the content. Tabs should be used instead of a segment when clicking on a control should navigate between pages.",
9715 "docsTags": [
9716 {
9717 "text": "{\"ios\" | \"md\"} mode - The mode determines which platform styles to use.",
9718 "name": "virtualProp"
9719 }
9720 ],
9721 "usage": {
9722 "angular": "```html\n<!-- Default Segment -->\n<ion-segment (ionChange)=\"segmentChanged($event)\">\n <ion-segment-button value=\"friends\">\n <ion-label>Friends</ion-label>\n </ion-segment-button>\n <ion-segment-button value=\"enemies\">\n <ion-label>Enemies</ion-label>\n </ion-segment-button>\n</ion-segment>\n\n<!-- Disabled Segment -->\n<ion-segment (ionChange)=\"segmentChanged($event)\" disabled>\n <ion-segment-button value=\"sunny\" checked>\n <ion-label>Sunny</ion-label>\n </ion-segment-button>\n <ion-segment-button value=\"rainy\">\n <ion-label>Rainy</ion-label>\n </ion-segment-button>\n</ion-segment>\n\n<!-- Segment with anchors -->\n<ion-segment (ionChange)=\"segmentChanged($event)\">\n <ion-segment-button href=\"#dogs\" value=\"dogs\">\n <ion-label>Dogs</ion-label>\n </ion-segment-button>\n <ion-segment-button href=\"#cats\" value=\"cats\">\n <ion-label>Cats</ion-label>\n </ion-segment-button>\n</ion-segment>\n\n<!-- Scrollable Segment -->\n<ion-segment scrollable>\n <ion-segment-button>\n <ion-icon name=\"home\"></ion-icon>\n </ion-segment-button>\n <ion-segment-button checked>\n <ion-icon name=\"heart\"></ion-icon>\n </ion-segment-button>\n <ion-segment-button>\n <ion-icon name=\"pin\"></ion-icon>\n </ion-segment-button>\n <ion-segment-button>\n <ion-icon name=\"star\"></ion-icon>\n </ion-segment-button>\n <ion-segment-button>\n <ion-icon name=\"call\"></ion-icon>\n </ion-segment-button>\n <ion-segment-button>\n <ion-icon name=\"globe\"></ion-icon>\n </ion-segment-button>\n <ion-segment-button>\n <ion-icon name=\"basket\"></ion-icon>\n </ion-segment-button>\n</ion-segment>\n\n<!-- Segment with secondary color -->\n<ion-segment (ionChange)=\"segmentChanged($event)\" color=\"secondary\">\n <ion-segment-button value=\"standard\">\n <ion-label>Standard</ion-label>\n </ion-segment-button>\n <ion-segment-button value=\"hybrid\">\n <ion-label>Hybrid</ion-label>\n </ion-segment-button>\n <ion-segment-button value=\"sat\">\n <ion-label>Satellite</ion-label>\n </ion-segment-button>\n</ion-segment>\n\n<!-- Segment in a toolbar -->\n<ion-toolbar>\n <ion-segment (ionChange)=\"segmentChanged($event)\">\n <ion-segment-button value=\"camera\">\n <ion-icon name=\"camera\"></ion-icon>\n </ion-segment-button>\n <ion-segment-button value=\"bookmark\">\n <ion-icon name=\"bookmark\"></ion-icon>\n </ion-segment-button>\n </ion-segment>\n</ion-toolbar>\n\n<!-- Segment with default selection -->\n<ion-segment (ionChange)=\"segmentChanged($event)\" value=\"javascript\">\n <ion-segment-button value=\"python\">\n <ion-label>Python</ion-label>\n </ion-segment-button>\n <ion-segment-button value=\"javascript\">\n <ion-label>Javascript</ion-label>\n </ion-segment-button>\n</ion-segment>\n```\n\n```typescript\nimport { Component } from '@angular/core';\n\n@Component({\n selector: 'segment-example',\n templateUrl: 'segment-example.html',\n styleUrls: ['./segment-example.css'],\n})\nexport class SegmentExample {\n segmentChanged(ev: any) {\n console.log('Segment changed', ev);\n }\n}\n```\n",
9723 "javascript": "```html\n<!-- Default Segment -->\n<ion-segment>\n <ion-segment-button value=\"friends\">\n <ion-label>Friends</ion-label>\n </ion-segment-button>\n <ion-segment-button value=\"enemies\">\n <ion-label>Enemies</ion-label>\n </ion-segment-button>\n</ion-segment>\n\n<!-- Disabled Segment -->\n<ion-segment disabled>\n <ion-segment-button value=\"sunny\" checked>\n <ion-label>Sunny</ion-label>\n </ion-segment-button>\n <ion-segment-button value=\"rainy\">\n <ion-label>Rainy</ion-label>\n </ion-segment-button>\n</ion-segment>\n\n<!-- Segment with anchors -->\n<ion-segment>\n <ion-segment-button href=\"#dogs\" value=\"dogs\">\n <ion-label>Dogs</ion-label>\n </ion-segment-button>\n <ion-segment-button href=\"#cats\" value=\"cats\">\n <ion-label>Cats</ion-label>\n </ion-segment-button>\n</ion-segment>\n\n<!-- Scrollable Segment -->\n<ion-segment scrollable>\n <ion-segment-button>\n <ion-icon name=\"home\"></ion-icon>\n </ion-segment-button>\n <ion-segment-button checked>\n <ion-icon name=\"heart\"></ion-icon>\n </ion-segment-button>\n <ion-segment-button>\n <ion-icon name=\"pin\"></ion-icon>\n </ion-segment-button>\n <ion-segment-button>\n <ion-icon name=\"star\"></ion-icon>\n </ion-segment-button>\n <ion-segment-button>\n <ion-icon name=\"call\"></ion-icon>\n </ion-segment-button>\n <ion-segment-button>\n <ion-icon name=\"globe\"></ion-icon>\n </ion-segment-button>\n <ion-segment-button>\n <ion-icon name=\"basket\"></ion-icon>\n </ion-segment-button>\n</ion-segment>\n\n<!-- Segment with secondary color -->\n<ion-segment color=\"secondary\">\n <ion-segment-button value=\"standard\">\n <ion-label>Standard</ion-label>\n </ion-segment-button>\n <ion-segment-button value=\"hybrid\">\n <ion-label>Hybrid</ion-label>\n </ion-segment-button>\n <ion-segment-button value=\"sat\">\n <ion-label>Satellite</ion-label>\n </ion-segment-button>\n</ion-segment>\n\n<!-- Segment in a toolbar -->\n<ion-toolbar>\n <ion-segment>\n <ion-segment-button value=\"camera\">\n <ion-icon name=\"camera\"></ion-icon>\n </ion-segment-button>\n <ion-segment-button value=\"bookmark\">\n <ion-icon name=\"bookmark\"></ion-icon>\n </ion-segment-button>\n </ion-segment>\n</ion-toolbar>\n\n<!-- Segment with default selection -->\n<ion-segment value=\"javascript\">\n <ion-segment-button value=\"python\">\n <ion-label>Python</ion-label>\n </ion-segment-button>\n <ion-segment-button value=\"javascript\">\n <ion-label>Javascript</ion-label>\n </ion-segment-button>\n</ion-segment>\n```\n\n```javascript\n// Listen for ionChange on all segments\nconst segments = document.querySelectorAll('ion-segment')\nfor (let i = 0; i < segments.length; i++) {\n segments[i].addEventListener('ionChange', (ev) => {\n console.log('Segment changed', ev);\n })\n}\n```",
9724 "react": "```tsx\nimport React from 'react';\nimport { IonSegment, IonSegmentButton, IonLabel, IonIcon, IonToolbar, IonContent } from '@ionic/react';\n\nexport const SegmentExample: React.FC = () => (\n <IonContent>\n {/*-- Default Segment --*/}\n <IonSegment onIonChange={e => console.log('Segment selected', e.detail.value)}>\n <IonSegmentButton value=\"friends\">\n <IonLabel>Friends</IonLabel>\n </IonSegmentButton>\n <IonSegmentButton value=\"enemies\">\n <IonLabel>Enemies</IonLabel>\n </IonSegmentButton>\n </IonSegment>\n\n {/*-- Disabled Segment --*/}\n <IonSegment onIonChange={e => console.log('Segment selected', e.detail.value)} disabled>\n <IonSegmentButton value=\"sunny\" checked>\n <IonLabel>Sunny</IonLabel>\n </IonSegmentButton>\n <IonSegmentButton value=\"rainy\">\n <IonLabel>Rainy</IonLabel>\n </IonSegmentButton>\n </IonSegment>\n\n {/*-- Segment with anchors --*/}\n <IonSegment onIonChange={e => console.log('Segment selected', e.detail.value)}>\n <IonSegmentButton value=\"dogs\">\n <IonLabel>Dogs</IonLabel>\n </IonSegmentButton>\n <IonSegmentButton value=\"cats\">\n <IonLabel>Cats</IonLabel>\n </IonSegmentButton>\n </IonSegment>\n\n {/*-- Scrollable Segment --*/}\n <IonSegment scrollable>\n <IonSegmentButton>\n <IonIcon name=\"home\" />\n </IonSegmentButton>\n <IonSegmentButton checked>\n <IonIcon name=\"heart\" />\n </IonSegmentButton>\n <IonSegmentButton>\n <IonIcon name=\"pin\" />\n </IonSegmentButton>\n <IonSegmentButton>\n <IonIcon name=\"star\" />\n </IonSegmentButton>\n <IonSegmentButton>\n <IonIcon name=\"call\" />\n </IonSegmentButton>\n <IonSegmentButton>\n <IonIcon name=\"globe\" />\n </IonSegmentButton>\n <IonSegmentButton>\n <IonIcon name=\"basket\" />\n </IonSegmentButton>\n </IonSegment>\n\n {/*-- Segment with secondary color --*/}\n <IonSegment onIonChange={e => console.log('Segment selected', e.detail.value)} color=\"secondary\">\n <IonSegmentButton value=\"standard\">\n <IonLabel>Standard</IonLabel>\n </IonSegmentButton>\n <IonSegmentButton value=\"hybrid\">\n <IonLabel>Hybrid</IonLabel>\n </IonSegmentButton>\n <IonSegmentButton value=\"sat\">\n <IonLabel>Satellite</IonLabel>\n </IonSegmentButton>\n </IonSegment>\n\n {/*-- Segment in a toolbar --*/}\n <IonToolbar>\n <IonSegment onIonChange={e => console.log('Segment selected', e.detail.value)}>\n <IonSegmentButton value=\"camera\">\n <IonIcon name=\"camera\" />\n </IonSegmentButton>\n <IonSegmentButton value=\"bookmark\">\n <IonIcon name=\"bookmark\" />\n </IonSegmentButton>\n </IonSegment>\n </IonToolbar>\n\n {/*-- Segment with default selection --*/}\n <IonSegment onIonChange={e => console.log('Segment selected', e.detail.value)} value=\"javascript\">\n <IonSegmentButton value=\"python\">\n <IonLabel>Python</IonLabel>\n </IonSegmentButton>\n <IonSegmentButton value=\"javascript\">\n <IonLabel>Javascript</IonLabel>\n </IonSegmentButton>\n </IonSegment>\n </IonContent>\n);\n```",
9725 "vue": "```html\n<template>\n <!-- Default Segment -->\n <ion-segment @ionChange=\"segmentChanged($event)\">\n <ion-segment-button value=\"friends\">\n <ion-label>Friends</ion-label>\n </ion-segment-button>\n <ion-segment-button value=\"enemies\">\n <ion-label>Enemies</ion-label>\n </ion-segment-button>\n </ion-segment>\n\n <!-- Disabled Segment -->\n <ion-segment @ionChange=\"segmentChanged($event)\" disabled>\n <ion-segment-button value=\"sunny\" checked>\n <ion-label>Sunny</ion-label>\n </ion-segment-button>\n <ion-segment-button value=\"rainy\">\n <ion-label>Rainy</ion-label>\n </ion-segment-button>\n </ion-segment>\n\n <!-- Segment with anchors -->\n <ion-segment @ionChange=\"segmentChanged($event)\">\n <ion-segment-button href=\"#dogs\" value=\"dogs\">\n <ion-label>Dogs</ion-label>\n </ion-segment-button>\n <ion-segment-button href=\"#cats\" value=\"cats\">\n <ion-label>Cats</ion-label>\n </ion-segment-button>\n </ion-segment>\n\n <!-- Scrollable Segment -->\n <ion-segment scrollable>\n <ion-segment-button>\n <ion-icon name=\"home\"></ion-icon>\n </ion-segment-button>\n <ion-segment-button checked>\n <ion-icon name=\"heart\"></ion-icon>\n </ion-segment-button>\n <ion-segment-button>\n <ion-icon name=\"pin\"></ion-icon>\n </ion-segment-button>\n <ion-segment-button>\n <ion-icon name=\"star\"></ion-icon>\n </ion-segment-button>\n <ion-segment-button>\n <ion-icon name=\"call\"></ion-icon>\n </ion-segment-button>\n <ion-segment-button>\n <ion-icon name=\"globe\"></ion-icon>\n </ion-segment-button>\n <ion-segment-button>\n <ion-icon name=\"basket\"></ion-icon>\n </ion-segment-button>\n </ion-segment>\n\n <!-- Segment with secondary color -->\n <ion-segment @ionChange=\"segmentChanged($event)\" color=\"secondary\">\n <ion-segment-button value=\"standard\">\n <ion-label>Standard</ion-label>\n </ion-segment-button>\n <ion-segment-button value=\"hybrid\">\n <ion-label>Hybrid</ion-label>\n </ion-segment-button>\n <ion-segment-button value=\"sat\">\n <ion-label>Satellite</ion-label>\n </ion-segment-button>\n </ion-segment>\n\n <!-- Segment in a toolbar -->\n <ion-toolbar>\n <ion-segment @ionChange=\"segmentChanged($event)\">\n <ion-segment-button value=\"camera\">\n <ion-icon name=\"camera\"></ion-icon>\n </ion-segment-button>\n <ion-segment-button value=\"bookmark\">\n <ion-icon name=\"bookmark\"></ion-icon>\n </ion-segment-button>\n </ion-segment>\n </ion-toolbar>\n\n <!-- Segment with default selection -->\n <ion-segment @ionChange=\"segmentChanged($event)\" value=\"javascript\">\n <ion-segment-button value=\"python\">\n <ion-label>Python</ion-label>\n </ion-segment-button>\n <ion-segment-button value=\"javascript\">\n <ion-label>Javascript</ion-label>\n </ion-segment-button>\n </ion-segment>\n</template>\n\n<script lang=\"ts\">\n import { Component, Vue } from 'vue-property-decorator';\n\n @Component()\n export default class Example extends Vue {\n segmentChanged(ev: any) {\n console.log('Segment changed', ev);\n }\n }\n</script>\n```\n"
9726 },
9727 "props": [
9728 {
9729 "name": "color",
9730 "type": "string | undefined",
9731 "mutable": false,
9732 "attr": "color",
9733 "reflectToAttr": false,
9734 "docs": "The color to use from your application's color palette.\nDefault options are: `\"primary\"`, `\"secondary\"`, `\"tertiary\"`, `\"success\"`, `\"warning\"`, `\"danger\"`, `\"light\"`, `\"medium\"`, and `\"dark\"`.\nFor more information on colors, see [theming](/docs/theming/basics).",
9735 "docsTags": [],
9736 "optional": true,
9737 "required": false
9738 },
9739 {
9740 "name": "disabled",
9741 "type": "boolean",
9742 "mutable": false,
9743 "attr": "disabled",
9744 "reflectToAttr": false,
9745 "docs": "If `true`, the user cannot interact with the segment.",
9746 "docsTags": [],
9747 "default": "false",
9748 "optional": false,
9749 "required": false
9750 },
9751 {
9752 "name": "mode",
9753 "type": "\"ios\" | \"md\"",
9754 "mutable": false,
9755 "attr": "mode",
9756 "reflectToAttr": false,
9757 "docs": "The mode determines which platform styles to use.",
9758 "docsTags": [],
9759 "optional": true,
9760 "required": false
9761 },
9762 {
9763 "name": "scrollable",
9764 "type": "boolean",
9765 "mutable": false,
9766 "attr": "scrollable",
9767 "reflectToAttr": false,
9768 "docs": "If `true`, the segment buttons will overflow and the user can swipe to see them.",
9769 "docsTags": [],
9770 "default": "false",
9771 "optional": false,
9772 "required": false
9773 },
9774 {
9775 "name": "value",
9776 "type": "null | string | undefined",
9777 "mutable": true,
9778 "attr": "value",
9779 "reflectToAttr": false,
9780 "docs": "the value of the segment.",
9781 "docsTags": [],
9782 "optional": true,
9783 "required": false
9784 }
9785 ],
9786 "methods": [],
9787 "events": [
9788 {
9789 "event": "ionChange",
9790 "detail": "SegmentChangeEventDetail",
9791 "bubbles": true,
9792 "cancelable": true,
9793 "composed": true,
9794 "docs": "Emitted when the value property has changed.",
9795 "docsTags": []
9796 }
9797 ],
9798 "styles": [],
9799 "slots": []
9800 },
9801 {
9802 "tag": "ion-segment-button",
9803 "filePath": "src/components/segment-button/segment-button.tsx",
9804 "encapsulation": "shadow",
9805 "readme": "# ion-segment-button\n\nSegment buttons are groups of related buttons inside of a [Segment](../segment). They are displayed in a horizontal row. A segment button can be checked by default by adding the `checked` attribute or by setting the `value` of the segment to the `value` of the segment button. Only one segment button should be selected at a time.\n\n",
9806 "docs": "Segment buttons are groups of related buttons inside of a [Segment](../segment). They are displayed in a horizontal row. A segment button can be checked by default by adding the `checked` attribute or by setting the `value` of the segment to the `value` of the segment button. Only one segment button should be selected at a time.",
9807 "docsTags": [
9808 {
9809 "text": "{\"ios\" | \"md\"} mode - The mode determines which platform styles to use.",
9810 "name": "virtualProp"
9811 }
9812 ],
9813 "usage": {
9814 "angular": "```html\n<!-- Segment buttons with text and click listeners -->\n<ion-segment>\n <ion-segment-button (ionSelect)=\"segmentButtonClicked($event)\">\n <ion-label>Friends</ion-label>\n </ion-segment-button>\n <ion-segment-button (ionSelect)=\"segmentButtonClicked($event)\">\n <ion-label>Enemies</ion-label>\n </ion-segment-button>\n</ion-segment>\n\n<!-- Segment buttons with the first checked and the last disabled -->\n<ion-segment>\n <ion-segment-button checked>\n <ion-label>Paid</ion-label>\n </ion-segment-button>\n <ion-segment-button>\n <ion-label>Free</ion-label>\n </ion-segment-button>\n <ion-segment-button disabled>\n <ion-label>Top</ion-label>\n </ion-segment-button>\n</ion-segment>\n\n<!-- Segment buttons with values and icons -->\n<ion-segment>\n <ion-segment-button value=\"camera\">\n <ion-icon name=\"camera\"></ion-icon>\n </ion-segment-button>\n <ion-segment-button value=\"bookmark\">\n <ion-icon name=\"bookmark\"></ion-icon>\n </ion-segment-button>\n</ion-segment>\n\n<!-- Segment with a value that checks the last button -->\n<ion-segment value=\"shared\">\n <ion-segment-button value=\"bookmarks\">\n <ion-label>Bookmarks</ion-label>\n </ion-segment-button>\n <ion-segment-button value=\"reading\">\n <ion-label>Reading List</ion-label>\n </ion-segment-button>\n <ion-segment-button value=\"shared\">\n <ion-label>Shared Links</ion-label>\n </ion-segment-button>\n</ion-segment>\n\n<!-- Label only -->\n<ion-segment>\n <ion-segment-button checked>\n <ion-label>Item One</ion-label>\n </ion-segment-button>\n <ion-segment-button>\n <ion-label>Item Two</ion-label>\n </ion-segment-button>\n <ion-segment-button>\n <ion-label>Item Three</ion-label>\n </ion-segment-button>\n</ion-segment>\n\n<!-- Icon only -->\n<ion-segment>\n <ion-segment-button>\n <ion-icon name=\"call\"></ion-icon>\n </ion-segment-button>\n <ion-segment-button checked>\n <ion-icon name=\"heart\"></ion-icon>\n </ion-segment-button>\n <ion-segment-button>\n <ion-icon name=\"pin\"></ion-icon>\n </ion-segment-button>\n</ion-segment>\n\n<!-- Icon top -->\n<ion-segment>\n <ion-segment-button>\n <ion-label>Item One</ion-label>\n <ion-icon name=\"call\"></ion-icon>\n </ion-segment-button>\n <ion-segment-button checked>\n <ion-label>Item Two</ion-label>\n <ion-icon name=\"heart\"></ion-icon>\n </ion-segment-button>\n <ion-segment-button>\n <ion-label>Item Three</ion-label>\n <ion-icon name=\"pin\"></ion-icon>\n </ion-segment-button>\n</ion-segment>\n\n<!-- Icon bottom -->\n<ion-segment>\n <ion-segment-button checked layout=\"icon-bottom\">\n <ion-icon name=\"call\"></ion-icon>\n <ion-label>Item One</ion-label>\n </ion-segment-button>\n <ion-segment-button layout=\"icon-bottom\">\n <ion-icon name=\"heart\"></ion-icon>\n <ion-label>Item Two</ion-label>\n </ion-segment-button>\n <ion-segment-button layout=\"icon-bottom\">\n <ion-icon name=\"pin\"></ion-icon>\n <ion-label>Item Three</ion-label>\n </ion-segment-button>\n</ion-segment>\n\n<!-- Icon start -->\n<ion-segment>\n <ion-segment-button checked layout=\"icon-start\">\n <ion-label>Item One</ion-label>\n <ion-icon name=\"call\"></ion-icon>\n </ion-segment-button>\n <ion-segment-button layout=\"icon-start\">\n <ion-label>Item Two</ion-label>\n <ion-icon name=\"heart\"></ion-icon>\n </ion-segment-button>\n <ion-segment-button layout=\"icon-start\">\n <ion-label>Item Three</ion-label>\n <ion-icon name=\"pin\"></ion-icon>\n </ion-segment-button>\n</ion-segment>\n\n<!-- Icon end -->\n<ion-segment>\n <ion-segment-button checked layout=\"icon-end\">\n <ion-icon name=\"call\"></ion-icon>\n <ion-label>Item One</ion-label>\n </ion-segment-button>\n <ion-segment-button disabled layout=\"icon-end\">\n <ion-icon name=\"heart\"></ion-icon>\n <ion-label>Item Two</ion-label>\n </ion-segment-button>\n <ion-segment-button layout=\"icon-end\">\n <ion-icon name=\"pin\"></ion-icon>\n <ion-label>Item Three</ion-label>\n </ion-segment-button>\n</ion-segment>\n```\n\n```typescript\nimport { Component } from '@angular/core';\n\n@Component({\n selector: 'segment-button-example',\n templateUrl: 'segment-button-example.html',\n styleUrls: ['./segment-button-example.css'],\n})\nexport class SegmentButtonExample {\n segmentButtonClicked(ev: any) {\n console.log('Segment button clicked', ev);\n }\n}\n```",
9815 "javascript": "```html\n<!-- Segment buttons with text -->\n<ion-segment>\n <ion-segment-button>\n <ion-label>Friends</ion-label>\n </ion-segment-button>\n <ion-segment-button>\n <ion-label>Enemies</ion-label>\n </ion-segment-button>\n</ion-segment>\n\n<!-- Segment buttons with the first checked and the last disabled -->\n<ion-segment>\n <ion-segment-button checked>\n <ion-label>Paid</ion-label>\n </ion-segment-button>\n <ion-segment-button>\n <ion-label>Free</ion-label>\n </ion-segment-button>\n <ion-segment-button disabled>\n <ion-label>Top</ion-label>\n </ion-segment-button>\n</ion-segment>\n\n<!-- Segment buttons with values and icons -->\n<ion-segment>\n <ion-segment-button value=\"camera\">\n <ion-icon name=\"camera\"></ion-icon>\n </ion-segment-button>\n <ion-segment-button value=\"bookmark\">\n <ion-icon name=\"bookmark\"></ion-icon>\n </ion-segment-button>\n</ion-segment>\n\n<!-- Segment with a value that checks the last button -->\n<ion-segment value=\"shared\">\n <ion-segment-button value=\"bookmarks\">\n <ion-label>Bookmarks</ion-label>\n </ion-segment-button>\n <ion-segment-button value=\"reading\">\n <ion-label>Reading List</ion-label>\n </ion-segment-button>\n <ion-segment-button value=\"shared\">\n <ion-label>Shared Links</ion-label>\n </ion-segment-button>\n</ion-segment>\n\n<!-- Label only -->\n<ion-segment>\n <ion-segment-button checked>\n <ion-label>Item One</ion-label>\n </ion-segment-button>\n <ion-segment-button>\n <ion-label>Item Two</ion-label>\n </ion-segment-button>\n <ion-segment-button>\n <ion-label>Item Three</ion-label>\n </ion-segment-button>\n</ion-segment>\n\n<!-- Icon only -->\n<ion-segment>\n <ion-segment-button>\n <ion-icon name=\"call\"></ion-icon>\n </ion-segment-button>\n <ion-segment-button checked>\n <ion-icon name=\"heart\"></ion-icon>\n </ion-segment-button>\n <ion-segment-button>\n <ion-icon name=\"pin\"></ion-icon>\n </ion-segment-button>\n</ion-segment>\n\n<!-- Icon top -->\n<ion-segment>\n <ion-segment-button>\n <ion-label>Item One</ion-label>\n <ion-icon name=\"call\"></ion-icon>\n </ion-segment-button>\n <ion-segment-button checked>\n <ion-label>Item Two</ion-label>\n <ion-icon name=\"heart\"></ion-icon>\n </ion-segment-button>\n <ion-segment-button>\n <ion-label>Item Three</ion-label>\n <ion-icon name=\"pin\"></ion-icon>\n </ion-segment-button>\n</ion-segment>\n\n<!-- Icon bottom -->\n<ion-segment>\n <ion-segment-button checked layout=\"icon-bottom\">\n <ion-icon name=\"call\"></ion-icon>\n <ion-label>Item One</ion-label>\n </ion-segment-button>\n <ion-segment-button layout=\"icon-bottom\">\n <ion-icon name=\"heart\"></ion-icon>\n <ion-label>Item Two</ion-label>\n </ion-segment-button>\n <ion-segment-button layout=\"icon-bottom\">\n <ion-icon name=\"pin\"></ion-icon>\n <ion-label>Item Three</ion-label>\n </ion-segment-button>\n</ion-segment>\n\n<!-- Icon start -->\n<ion-segment>\n <ion-segment-button checked layout=\"icon-start\">\n <ion-label>Item One</ion-label>\n <ion-icon name=\"call\"></ion-icon>\n </ion-segment-button>\n <ion-segment-button layout=\"icon-start\">\n <ion-label>Item Two</ion-label>\n <ion-icon name=\"heart\"></ion-icon>\n </ion-segment-button>\n <ion-segment-button layout=\"icon-start\">\n <ion-label>Item Three</ion-label>\n <ion-icon name=\"pin\"></ion-icon>\n </ion-segment-button>\n</ion-segment>\n\n<!-- Icon end -->\n<ion-segment>\n <ion-segment-button checked layout=\"icon-end\">\n <ion-icon name=\"call\"></ion-icon>\n <ion-label>Item One</ion-label>\n </ion-segment-button>\n <ion-segment-button disabled layout=\"icon-end\">\n <ion-icon name=\"heart\"></ion-icon>\n <ion-label>Item Two</ion-label>\n </ion-segment-button>\n <ion-segment-button layout=\"icon-end\">\n <ion-icon name=\"pin\"></ion-icon>\n <ion-label>Item Three</ion-label>\n </ion-segment-button>\n</ion-segment>\n```\n\n```javascript\n// Listen for ionClick on all segment buttons\nconst segmentButtons = document.querySelectorAll('ion-segment-button')\nfor (let i = 0; i < segmentButtons.length; i++) {\n segmentButtons[i].addEventListener('ionSelect', (ev) => {\n console.log('Segment button clicked', ev);\n })\n}\n```",
9816 "react": "```tsx\nimport React from 'react';\nimport { IonSegment, IonSegmentButton, IonLabel, IonIcon, IonContent } from '@ionic/react';\n\nexport const SegmentButtonExample: React.FC = () => (\n <IonContent>\n {/*-- Segment buttons with text and click listeners --*/}\n <IonSegment>\n <IonSegmentButton onIonSelect={() => console.log('Friends segment selected')}>\n <IonLabel>Friends</IonLabel>\n </IonSegmentButton>\n <IonSegmentButton onIonSelect={() => console.log('Enemies segment selected')}>\n <IonLabel>Enemies</IonLabel>\n </IonSegmentButton>\n </IonSegment>\n\n {/*-- Segment buttons with the first checked and the last disabled --*/}\n <IonSegment>\n <IonSegmentButton checked>\n <IonLabel>Paid</IonLabel>\n </IonSegmentButton>\n <IonSegmentButton>\n <IonLabel>Free</IonLabel>\n </IonSegmentButton>\n <IonSegmentButton disabled>\n <IonLabel>Top</IonLabel>\n </IonSegmentButton>\n </IonSegment>\n\n {/*-- Segment buttons with values and icons --*/}\n <IonSegment>\n <IonSegmentButton value=\"camera\">\n <IonIcon name=\"camera\" />\n </IonSegmentButton>\n <IonSegmentButton value=\"bookmark\">\n <IonIcon name=\"bookmark\" />\n </IonSegmentButton>\n </IonSegment>\n\n {/*-- Segment with a value that checks the last button --*/}\n <IonSegment value=\"shared\">\n <IonSegmentButton value=\"bookmarks\">\n <IonLabel>Bookmarks</IonLabel>\n </IonSegmentButton>\n <IonSegmentButton value=\"reading\">\n <IonLabel>Reading List</IonLabel>\n </IonSegmentButton>\n <IonSegmentButton value=\"shared\">\n <IonLabel>Shared Links</IonLabel>\n </IonSegmentButton>\n </IonSegment>\n\n {/*-- Label only --*/}\n <IonSegment>\n <IonSegmentButton checked>\n <IonLabel>Item One</IonLabel>\n </IonSegmentButton>\n <IonSegmentButton>\n <IonLabel>Item Two</IonLabel>\n </IonSegmentButton>\n <IonSegmentButton>\n <IonLabel>Item Three</IonLabel>\n </IonSegmentButton>\n </IonSegment>\n\n {/*-- Icon only --*/}\n <IonSegment>\n <IonSegmentButton>\n <IonIcon name=\"call\" />\n </IonSegmentButton>\n <IonSegmentButton checked>\n <IonIcon name=\"heart\" />\n </IonSegmentButton>\n <IonSegmentButton>\n <IonIcon name=\"pin\" />\n </IonSegmentButton>\n </IonSegment>\n\n {/*-- Icon top --*/}\n <IonSegment>\n <IonSegmentButton>\n <IonLabel>Item One</IonLabel>\n <IonIcon name=\"call\" />\n </IonSegmentButton>\n <IonSegmentButton checked>\n <IonLabel>Item Two</IonLabel>\n <IonIcon name=\"heart\" />\n </IonSegmentButton>\n <IonSegmentButton>\n <IonLabel>Item Three</IonLabel>\n <IonIcon name=\"pin\" />\n </IonSegmentButton>\n </IonSegment>\n\n {/*-- Icon bottom --*/}\n <IonSegment>\n <IonSegmentButton checked layout=\"icon-bottom\">\n <IonIcon name=\"call\" />\n <IonLabel>Item One</IonLabel>\n </IonSegmentButton>\n <IonSegmentButton layout=\"icon-bottom\">\n <IonIcon name=\"heart\" />\n <IonLabel>Item Two</IonLabel>\n </IonSegmentButton>\n <IonSegmentButton layout=\"icon-bottom\">\n <IonIcon name=\"pin\" />\n <IonLabel>Item Three</IonLabel>\n </IonSegmentButton>\n </IonSegment>\n\n {/*-- Icon start --*/}\n <IonSegment>\n <IonSegmentButton checked layout=\"icon-start\">\n <IonLabel>Item One</IonLabel>\n <IonIcon name=\"call\" />\n </IonSegmentButton>\n <IonSegmentButton layout=\"icon-start\">\n <IonLabel>Item Two</IonLabel>\n <IonIcon name=\"heart\" />\n </IonSegmentButton>\n <IonSegmentButton layout=\"icon-start\">\n <IonLabel>Item Three</IonLabel>\n <IonIcon name=\"pin\" />\n </IonSegmentButton>\n </IonSegment>\n\n {/*-- Icon end --*/}\n <IonSegment>\n <IonSegmentButton checked layout=\"icon-end\">\n <IonIcon name=\"call\" />\n <IonLabel>Item One</IonLabel>\n </IonSegmentButton>\n <IonSegmentButton disabled layout=\"icon-end\">\n <IonIcon name=\"heart\" />\n <IonLabel>Item Two</IonLabel>\n </IonSegmentButton>\n <IonSegmentButton layout=\"icon-end\">\n <IonIcon name=\"pin\" />\n <IonLabel>Item Three</IonLabel>\n </IonSegmentButton>\n </IonSegment>\n </IonContent>\n);\n```\n",
9817 "vue": "```html\n<template>\n <!-- Segment buttons with text and click listeners -->\n <ion-segment>\n <ion-segment-button @ionSelect=\"segmentButtonClicked($event)\">\n <ion-label>Friends</ion-label>\n </ion-segment-button>\n <ion-segment-button @ionSelect=\"segmentButtonClicked($event)\">\n <ion-label>Enemies</ion-label>\n </ion-segment-button>\n </ion-segment>\n\n <!-- Segment buttons with the first checked and the last disabled -->\n <ion-segment>\n <ion-segment-button checked>\n <ion-label>Paid</ion-label>\n </ion-segment-button>\n <ion-segment-button>\n <ion-label>Free</ion-label>\n </ion-segment-button>\n <ion-segment-button disabled>\n <ion-label>Top</ion-label>\n </ion-segment-button>\n </ion-segment>\n\n <!-- Segment buttons with values and icons -->\n <ion-segment>\n <ion-segment-button value=\"camera\">\n <ion-icon name=\"camera\"></ion-icon>\n </ion-segment-button>\n <ion-segment-button value=\"bookmark\">\n <ion-icon name=\"bookmark\"></ion-icon>\n </ion-segment-button>\n </ion-segment>\n\n <!-- Segment with a value that checks the last button -->\n <ion-segment value=\"shared\">\n <ion-segment-button value=\"bookmarks\">\n <ion-label>Bookmarks</ion-label>\n </ion-segment-button>\n <ion-segment-button value=\"reading\">\n <ion-label>Reading List</ion-label>\n </ion-segment-button>\n <ion-segment-button value=\"shared\">\n <ion-label>Shared Links</ion-label>\n </ion-segment-button>\n </ion-segment>\n\n <!-- Label only -->\n <ion-segment>\n <ion-segment-button checked>\n <ion-label>Item One</ion-label>\n </ion-segment-button>\n <ion-segment-button>\n <ion-label>Item Two</ion-label>\n </ion-segment-button>\n <ion-segment-button>\n <ion-label>Item Three</ion-label>\n </ion-segment-button>\n </ion-segment>\n\n <!-- Icon only -->\n <ion-segment>\n <ion-segment-button>\n <ion-icon name=\"call\"></ion-icon>\n </ion-segment-button>\n <ion-segment-button checked>\n <ion-icon name=\"heart\"></ion-icon>\n </ion-segment-button>\n <ion-segment-button>\n <ion-icon name=\"pin\"></ion-icon>\n </ion-segment-button>\n </ion-segment>\n\n <!-- Icon top -->\n <ion-segment>\n <ion-segment-button>\n <ion-label>Item One</ion-label>\n <ion-icon name=\"call\"></ion-icon>\n </ion-segment-button>\n <ion-segment-button checked>\n <ion-label>Item Two</ion-label>\n <ion-icon name=\"heart\"></ion-icon>\n </ion-segment-button>\n <ion-segment-button>\n <ion-label>Item Three</ion-label>\n <ion-icon name=\"pin\"></ion-icon>\n </ion-segment-button>\n </ion-segment>\n\n <!-- Icon bottom -->\n <ion-segment>\n <ion-segment-button checked layout=\"icon-bottom\">\n <ion-icon name=\"call\"></ion-icon>\n <ion-label>Item One</ion-label>\n </ion-segment-button>\n <ion-segment-button layout=\"icon-bottom\">\n <ion-icon name=\"heart\"></ion-icon>\n <ion-label>Item Two</ion-label>\n </ion-segment-button>\n <ion-segment-button layout=\"icon-bottom\">\n <ion-icon name=\"pin\"></ion-icon>\n <ion-label>Item Three</ion-label>\n </ion-segment-button>\n </ion-segment>\n\n <!-- Icon start -->\n <ion-segment>\n <ion-segment-button checked layout=\"icon-start\">\n <ion-label>Item One</ion-label>\n <ion-icon name=\"call\"></ion-icon>\n </ion-segment-button>\n <ion-segment-button layout=\"icon-start\">\n <ion-label>Item Two</ion-label>\n <ion-icon name=\"heart\"></ion-icon>\n </ion-segment-button>\n <ion-segment-button layout=\"icon-start\">\n <ion-label>Item Three</ion-label>\n <ion-icon name=\"pin\"></ion-icon>\n </ion-segment-button>\n </ion-segment>\n\n <!-- Icon end -->\n <ion-segment>\n <ion-segment-button checked layout=\"icon-end\">\n <ion-icon name=\"call\"></ion-icon>\n <ion-label>Item One</ion-label>\n </ion-segment-button>\n <ion-segment-button disabled layout=\"icon-end\">\n <ion-icon name=\"heart\"></ion-icon>\n <ion-label>Item Two</ion-label>\n </ion-segment-button>\n <ion-segment-button layout=\"icon-end\">\n <ion-icon name=\"pin\"></ion-icon>\n <ion-label>Item Three</ion-label>\n </ion-segment-button>\n </ion-segment>\n</template>\n\n<script lang=\"ts\">\n import { Component, Vue } from 'vue-property-decorator';\n\n @Component()\n export default class Example extends Vue {\n segmentButtonClicked(ev: any) {\n console.log('Segment button clicked', ev);\n }\n }\n</script>\n```\n"
9818 },
9819 "props": [
9820 {
9821 "name": "checked",
9822 "type": "boolean",
9823 "mutable": true,
9824 "attr": "checked",
9825 "reflectToAttr": false,
9826 "docs": "If `true`, the segment button is selected.",
9827 "docsTags": [],
9828 "default": "false",
9829 "optional": false,
9830 "required": false
9831 },
9832 {
9833 "name": "disabled",
9834 "type": "boolean",
9835 "mutable": false,
9836 "attr": "disabled",
9837 "reflectToAttr": false,
9838 "docs": "If `true`, the user cannot interact with the segment button.",
9839 "docsTags": [],
9840 "default": "false",
9841 "optional": false,
9842 "required": false
9843 },
9844 {
9845 "name": "layout",
9846 "type": "\"icon-bottom\" | \"icon-end\" | \"icon-hide\" | \"icon-start\" | \"icon-top\" | \"label-hide\" | undefined",
9847 "mutable": false,
9848 "attr": "layout",
9849 "reflectToAttr": false,
9850 "docs": "Set the layout of the text and icon in the segment.",
9851 "docsTags": [],
9852 "default": "'icon-top'",
9853 "optional": true,
9854 "required": false
9855 },
9856 {
9857 "name": "mode",
9858 "type": "\"ios\" | \"md\"",
9859 "mutable": false,
9860 "attr": "mode",
9861 "reflectToAttr": false,
9862 "docs": "The mode determines which platform styles to use.",
9863 "docsTags": [],
9864 "optional": true,
9865 "required": false
9866 },
9867 {
9868 "name": "type",
9869 "type": "\"button\" | \"reset\" | \"submit\"",
9870 "mutable": false,
9871 "attr": "type",
9872 "reflectToAttr": false,
9873 "docs": "The type of the button.",
9874 "docsTags": [],
9875 "default": "'button'",
9876 "optional": false,
9877 "required": false
9878 },
9879 {
9880 "name": "value",
9881 "type": "string",
9882 "mutable": false,
9883 "attr": "value",
9884 "reflectToAttr": false,
9885 "docs": "The value of the segment button.",
9886 "docsTags": [],
9887 "default": "'ion-sb-' + (ids++)",
9888 "optional": false,
9889 "required": false
9890 }
9891 ],
9892 "methods": [],
9893 "events": [
9894 {
9895 "event": "ionSelect",
9896 "detail": "void",
9897 "bubbles": true,
9898 "cancelable": true,
9899 "composed": true,
9900 "docs": "Emitted when the segment button is clicked.",
9901 "docsTags": []
9902 }
9903 ],
9904 "styles": [
9905 {
9906 "name": "--background",
9907 "annotation": "prop",
9908 "docs": "Background of the segment button"
9909 },
9910 {
9911 "name": "--background-activated",
9912 "annotation": "prop",
9913 "docs": "Background of the segment button when pressed"
9914 },
9915 {
9916 "name": "--background-checked",
9917 "annotation": "prop",
9918 "docs": "Background of the checked segment button"
9919 },
9920 {
9921 "name": "--background-hover",
9922 "annotation": "prop",
9923 "docs": "Background of the segment button on hover"
9924 },
9925 {
9926 "name": "--border-color",
9927 "annotation": "prop",
9928 "docs": "Color of the segment button border"
9929 },
9930 {
9931 "name": "--border-radius",
9932 "annotation": "prop",
9933 "docs": "Radius of the segment button border"
9934 },
9935 {
9936 "name": "--border-style",
9937 "annotation": "prop",
9938 "docs": "Style of the segment button border"
9939 },
9940 {
9941 "name": "--border-width",
9942 "annotation": "prop",
9943 "docs": "Width of the segment button border"
9944 },
9945 {
9946 "name": "--color",
9947 "annotation": "prop",
9948 "docs": "Color of the segment button"
9949 },
9950 {
9951 "name": "--color-activated",
9952 "annotation": "prop",
9953 "docs": "Color of the segment button when pressed"
9954 },
9955 {
9956 "name": "--color-checked",
9957 "annotation": "prop",
9958 "docs": "Color of the checked segment button"
9959 },
9960 {
9961 "name": "--color-checked-disabled",
9962 "annotation": "prop",
9963 "docs": "Color of the checked & disabled segment button"
9964 },
9965 {
9966 "name": "--color-disabled",
9967 "annotation": "prop",
9968 "docs": "Color of the disabled segment button"
9969 },
9970 {
9971 "name": "--indicator-color",
9972 "annotation": "prop",
9973 "docs": "Color of the indicator (highlight) under the segment button"
9974 },
9975 {
9976 "name": "--indicator-color-checked",
9977 "annotation": "prop",
9978 "docs": "Color of the indicator (highlight) under the checked segment button"
9979 },
9980 {
9981 "name": "--margin-bottom",
9982 "annotation": "prop",
9983 "docs": "Bottom margin of the segment button"
9984 },
9985 {
9986 "name": "--margin-end",
9987 "annotation": "prop",
9988 "docs": "Right margin if direction is left-to-right, and left margin if direction is right-to-left of the segment button"
9989 },
9990 {
9991 "name": "--margin-start",
9992 "annotation": "prop",
9993 "docs": "Left margin if direction is left-to-right, and right margin if direction is right-to-left of the segment button"
9994 },
9995 {
9996 "name": "--margin-top",
9997 "annotation": "prop",
9998 "docs": "Top margin of the segment button"
9999 },
10000 {
10001 "name": "--padding-bottom",
10002 "annotation": "prop",
10003 "docs": "Bottom padding of the segment button"
10004 },
10005 {
10006 "name": "--padding-end",
10007 "annotation": "prop",
10008 "docs": "Right padding if direction is left-to-right, and left padding if direction is right-to-left of the segment button"
10009 },
10010 {
10011 "name": "--padding-start",
10012 "annotation": "prop",
10013 "docs": "Left padding if direction is left-to-right, and right padding if direction is right-to-left of the segment button"
10014 },
10015 {
10016 "name": "--padding-top",
10017 "annotation": "prop",
10018 "docs": "Top padding of the segment button"
10019 },
10020 {
10021 "name": "--transition",
10022 "annotation": "prop",
10023 "docs": "Transition of the segment button"
10024 }
10025 ],
10026 "slots": []
10027 },
10028 {
10029 "tag": "ion-select",
10030 "filePath": "src/components/select/select.tsx",
10031 "encapsulation": "shadow",
10032 "readme": "# ion-select\n\nSelects are form controls to select an option, or options, from a set of options, similar to a native `<select>` element. When a user taps the select, a dialog appears with all of the options in a large, easy to select list.\n\nA select should be used with child `<ion-select-option>` elements. If the child option is not given a `value` attribute then its text will be used as the value.\n\nIf `value` is set on the `<ion-select>`, the selected option will be chosen based on that value. Otherwise, the `selected` attribute can be used on the `<ion-select-option>`.\n\n\n## Interfaces\n\nBy default, select uses the [AlertController API](../alert-controller) to open up the overlay of options in an alert. The interface can be changed to use the [ActionSheetController API](../action-sheet-controller) or [PopoverController API](../popover-controller) by passing `action-sheet` or `popover`, respectively, to the `interface` property. Read on to the other sections for the limitations of the different interfaces.\n\n\n## Single Selection\n\nBy default, the select allows the user to select only one option. The alert interface presents users with a radio button styled list of options. The action sheet interface can only be used with a single value select. The select component's value receives the value of the selected option's value.\n\n\n### Multiple Selection\n\nBy adding the `multiple` attribute to select, users are able to select multiple options. When multiple options can be selected, the alert overlay presents users with a checkbox styled list of options. The select component's value receives an array of all of the selected option values.\n\nNote: the `action-sheet` and `popover` interfaces will not work with multiple selection.\n\n## Object Value References\n\nWhen using objects for select values, it is possible for the identities of these objects to change if they are coming from a server or database, while the selected value's identity remains the same. For example, this can occur when an existing record with the desired object value is loaded into the select, but the newly retrieved select options now have different identities. This will result in the select appearing to have no value at all, even though the original selection in still intact.\n\nBy default, the select uses object equality (`===`) to determine if an option is selected. This can be overridden by providing a property name or a function to the `compareWith` property.\n\n## Select Buttons\n\nThe alert supports two buttons: `Cancel` and `OK`. Each button's text can be customized using the `cancelText` and `okText` properties.\n\nThe `action-sheet` and `popover` interfaces do not have an `OK` button, clicking on any of the options will automatically close the overlay and select that value. The `popover` interface does not have a `Cancel` button, clicking on the backdrop will close the overlay.\n\n\n## Interface Options\n\nSince select uses the alert, action sheet and popover interfaces, options can be passed to these components through the `interfaceOptions` property. This can be used to pass a custom header, subheader, css class, and more. \n\nSee the [AlertController API docs](../alert-controller), [ActionSheetController API docs](../action-sheet-controller), and [PopoverController API docs](../popover-controller) for the properties that each interface accepts.\n\nNote: `interfaceOptions` will not override `inputs` or `buttons` with the `alert` interface.\n",
10033 "docs": "Selects are form controls to select an option, or options, from a set of options, similar to a native `<select>` element. When a user taps the select, a dialog appears with all of the options in a large, easy to select list.\n\nA select should be used with child `<ion-select-option>` elements. If the child option is not given a `value` attribute then its text will be used as the value.\n\nIf `value` is set on the `<ion-select>`, the selected option will be chosen based on that value. Otherwise, the `selected` attribute can be used on the `<ion-select-option>`.",
10034 "docsTags": [
10035 {
10036 "text": "{\"ios\" | \"md\"} mode - The mode determines which platform styles to use.",
10037 "name": "virtualProp"
10038 }
10039 ],
10040 "usage": {
10041 "angular": "## Single Selection\n\n```html\n<ion-list>\n <ion-list-header>Single Selection</ion-list-header>\n\n <ion-item>\n <ion-label>Gender</ion-label>\n <ion-select placeholder=\"Select One\">\n <ion-select-option value=\"f\">Female</ion-select-option>\n <ion-select-option value=\"m\">Male</ion-select-option>\n </ion-select>\n </ion-item>\n\n <ion-item>\n <ion-label>Hair Color</ion-label>\n <ion-select value=\"brown\" okText=\"Okay\" cancelText=\"Dismiss\">\n <ion-select-option value=\"brown\">Brown</ion-select-option>\n <ion-select-option value=\"blonde\">Blonde</ion-select-option>\n <ion-select-option value=\"black\">Black</ion-select-option>\n <ion-select-option value=\"red\">Red</ion-select-option>\n </ion-select>\n </ion-item>\n\n</ion-list>\n```\n\n## Multiple Selection\n\n```html\n<ion-list>\n <ion-list-header>Multiple Selection</ion-list-header>\n\n <ion-item>\n <ion-label>Toppings</ion-label>\n <ion-select multiple=\"true\" cancelText=\"Nah\" okText=\"Okay!\">\n <ion-select-option value=\"bacon\">Bacon</ion-select-option>\n <ion-select-option value=\"olives\">Black Olives</ion-select-option>\n <ion-select-option value=\"xcheese\">Extra Cheese</ion-select-option>\n <ion-select-option value=\"peppers\">Green Peppers</ion-select-option>\n <ion-select-option value=\"mushrooms\">Mushrooms</ion-select-option>\n <ion-select-option value=\"onions\">Onions</ion-select-option>\n <ion-select-option value=\"pepperoni\">Pepperoni</ion-select-option>\n <ion-select-option value=\"pineapple\">Pineapple</ion-select-option>\n <ion-select-option value=\"sausage\">Sausage</ion-select-option>\n <ion-select-option value=\"Spinach\">Spinach</ion-select-option>\n </ion-select>\n </ion-item>\n\n <ion-item>\n <ion-label>Pets</ion-label>\n <ion-select multiple=\"true\">\n <ion-select-option value=\"bird\" selected>Bird</ion-select-option>\n <ion-select-option value=\"cat\">Cat</ion-select-option>\n <ion-select-option value=\"dog\" selected>Dog</ion-select-option>\n <ion-select-option value=\"honeybadger\">Honey Badger</ion-select-option>\n </ion-select>\n </ion-item>\n</ion-list>\n```\n\n## Objects as Values\n\n```html\n<ion-list>\n <ion-list-header>Objects as Values (compareWith)</ion-list-header>\n \n <ion-item>\n <ion-label>Users</ion-label>\n <ion-select [compareWith]=\"compareWith\">\n <ion-select-option *ngFor=\"let user of users\">{{user.first + ' ' + user.last}}</ion-select-option>\n </ion-select>\n </ion-item>\n</ion-list>\n```\n\n```typescript\nimport { Component } from '@angular/core';\n\n@Component({\n selector: 'select-example',\n templateUrl: 'select-example.html',\n styleUrls: ['./select-example.css'],\n})\nexport class SelectExample {\n users: any[] = [\n {\n id: 1,\n first: 'Alice',\n last: 'Smith',\n },\n {\n id: 2,\n first: 'Bob',\n last: 'Davis',\n },\n {\n id: 3,\n first: 'Charlie',\n last: 'Rosenburg',\n }\n ];\n\n compareWithFn = (o1, o2) => {\n return o1 && o2 ? o1.id === o2.id : o1 === o2;\n };\n\n compareWith = compareWithFn;\n}\n```\n\n## Interface Options\n\n```html\n<ion-list>\n <ion-list-header>Interface Options</ion-list-header>\n\n <ion-item>\n <ion-label>Alert</ion-label>\n <ion-select [interfaceOptions]=\"customAlertOptions\" interface=\"alert\" multiple=\"true\" placeholder=\"Select One\">\n <ion-select-option value=\"bacon\">Bacon</ion-select-option>\n <ion-select-option value=\"olives\">Black Olives</ion-select-option>\n <ion-select-option value=\"xcheese\">Extra Cheese</ion-select-option>\n <ion-select-option value=\"peppers\">Green Peppers</ion-select-option>\n <ion-select-option value=\"mushrooms\">Mushrooms</ion-select-option>\n <ion-select-option value=\"onions\">Onions</ion-select-option>\n <ion-select-option value=\"pepperoni\">Pepperoni</ion-select-option>\n <ion-select-option value=\"pineapple\">Pineapple</ion-select-option>\n <ion-select-option value=\"sausage\">Sausage</ion-select-option>\n <ion-select-option value=\"Spinach\">Spinach</ion-select-option>\n </ion-select>\n </ion-item>\n\n <ion-item>\n <ion-label>Popover</ion-label>\n <ion-select [interfaceOptions]=\"customPopoverOptions\" interface=\"popover\" placeholder=\"Select One\">\n <ion-select-option value=\"brown\">Brown</ion-select-option>\n <ion-select-option value=\"blonde\">Blonde</ion-select-option>\n <ion-select-option value=\"black\">Black</ion-select-option>\n <ion-select-option value=\"red\">Red</ion-select-option>\n </ion-select>\n </ion-item>\n\n <ion-item>\n <ion-label>Action Sheet</ion-label>\n <ion-select [interfaceOptions]=\"customActionSheetOptions\" interface=\"action-sheet\" placeholder=\"Select One\">\n <ion-select-option value=\"red\">Red</ion-select-option>\n <ion-select-option value=\"purple\">Purple</ion-select-option>\n <ion-select-option value=\"yellow\">Yellow</ion-select-option>\n <ion-select-option value=\"orange\">Orange</ion-select-option>\n <ion-select-option value=\"green\">Green</ion-select-option>\n </ion-select>\n </ion-item>\n\n</ion-list>\n```\n\n```typescript\nimport { Component } from '@angular/core';\n\n@Component({\n selector: 'select-example',\n templateUrl: 'select-example.html',\n styleUrls: ['./select-example.css'],\n})\nexport class SelectExample {\n customAlertOptions: any = {\n header: 'Pizza Toppings',\n subHeader: 'Select your toppings',\n message: '$1.00 per topping',\n translucent: true\n };\n\n customPopoverOptions: any = {\n header: 'Hair Color',\n subHeader: 'Select your hair color',\n message: 'Only select your dominant hair color'\n };\n\n customActionSheetOptions: any = {\n header: 'Colors',\n subHeader: 'Select your favorite color'\n };\n}\n```",
10042 "javascript": "## Single Selection\n\n```html\n<ion-list>\n <ion-list-header>Single Selection</ion-list-header>\n\n <ion-item>\n <ion-label>Gender</ion-label>\n <ion-select placeholder=\"Select One\">\n <ion-select-option value=\"f\">Female</ion-select-option>\n <ion-select-option value=\"m\">Male</ion-select-option>\n </ion-select>\n </ion-item>\n\n <ion-item>\n <ion-label>Hair Color</ion-label>\n <ion-select value=\"brown\" ok-text=\"Okay\" cancel-text=\"Dismiss\">\n <ion-select-option value=\"brown\">Brown</ion-select-option>\n <ion-select-option value=\"blonde\">Blonde</ion-select-option>\n <ion-select-option value=\"black\">Black</ion-select-option>\n <ion-select-option value=\"red\">Red</ion-select-option>\n </ion-select>\n </ion-item>\n\n</ion-list>\n```\n\n## Multiple Selection\n\n```html\n<ion-list>\n <ion-list-header>Multiple Selection</ion-list-header>\n\n <ion-item>\n <ion-label>Toppings</ion-label>\n <ion-select multiple=\"true\" cancel-text=\"Nah\" ok-text=\"Okay!\">\n <ion-select-option value=\"bacon\">Bacon</ion-select-option>\n <ion-select-option value=\"olives\">Black Olives</ion-select-option>\n <ion-select-option value=\"xcheese\">Extra Cheese</ion-select-option>\n <ion-select-option value=\"peppers\">Green Peppers</ion-select-option>\n <ion-select-option value=\"mushrooms\">Mushrooms</ion-select-option>\n <ion-select-option value=\"onions\">Onions</ion-select-option>\n <ion-select-option value=\"pepperoni\">Pepperoni</ion-select-option>\n <ion-select-option value=\"pineapple\">Pineapple</ion-select-option>\n <ion-select-option value=\"sausage\">Sausage</ion-select-option>\n <ion-select-option value=\"Spinach\">Spinach</ion-select-option>\n </ion-select>\n </ion-item>\n\n <ion-item>\n <ion-label>Pets</ion-label>\n <ion-select multiple=\"true\">\n <ion-select-option value=\"bird\" selected>Bird</ion-select-option>\n <ion-select-option value=\"cat\">Cat</ion-select-option>\n <ion-select-option value=\"dog\" selected>Dog</ion-select-option>\n <ion-select-option value=\"honeybadger\">Honey Badger</ion-select-option>\n </ion-select>\n </ion-item>\n</ion-list>\n```\n\n## Objects as Values\n\n```html\n<ion-list>\n <ion-list-header>Objects as Values (compareWith)</ion-list-header>\n\n <ion-item>\n <ion-label>Users</ion-label>\n <ion-select id=\"objectSelectCompareWith\"></ion-select>\n </ion-item>\n</ion-list>\n```\n\n```javascript\n let objectOptions = [\n {\n id: 1,\n first: 'Alice',\n last: 'Smith',\n },\n {\n id: 2,\n first: 'Bob',\n last: 'Davis',\n },\n {\n id: 3,\n first: 'Charlie',\n last: 'Rosenburg',\n }\n ];\n\n let compareWithFn = (o1, o2) => {\n return o1 && o2 ? o1.id === o2.id : o1 === o2;\n };\n\n let objectSelectElement = document.getElementById('objectSelectCompareWith');\n objectSelectElement.compareWith = compareWithFn;\n \n objectOptions.forEach((option, i) => {\n let selectOption = document.createElement('ion-select-option');\n selectOption.value = option;\n selectOption.textContent = option.first + ' ' + option.last;\n selectOption.selected = (i === 0);\n \n objectSelectElement.appendChild(selectOption)\n });\n}\n```\n\n## Interface Options\n\n```html\n<ion-list>\n <ion-list-header>Interface Options</ion-list-header>\n\n <ion-item>\n <ion-label>Alert</ion-label>\n <ion-select id=\"customAlertSelect\" interface=\"alert\" multiple=\"true\" placeholder=\"Select One\">\n <ion-select-option value=\"bacon\">Bacon</ion-select-option>\n <ion-select-option value=\"olives\">Black Olives</ion-select-option>\n <ion-select-option value=\"xcheese\">Extra Cheese</ion-select-option>\n <ion-select-option value=\"peppers\">Green Peppers</ion-select-option>\n <ion-select-option value=\"mushrooms\">Mushrooms</ion-select-option>\n <ion-select-option value=\"onions\">Onions</ion-select-option>\n <ion-select-option value=\"pepperoni\">Pepperoni</ion-select-option>\n <ion-select-option value=\"pineapple\">Pineapple</ion-select-option>\n <ion-select-option value=\"sausage\">Sausage</ion-select-option>\n <ion-select-option value=\"Spinach\">Spinach</ion-select-option>\n </ion-select>\n </ion-item>\n\n <ion-item>\n <ion-label>Popover</ion-label>\n <ion-select id=\"customPopoverSelect\" interface=\"popover\" placeholder=\"Select One\">\n <ion-select-option value=\"brown\">Brown</ion-select-option>\n <ion-select-option value=\"blonde\">Blonde</ion-select-option>\n <ion-select-option value=\"black\">Black</ion-select-option>\n <ion-select-option value=\"red\">Red</ion-select-option>\n </ion-select>\n </ion-item>\n\n <ion-item>\n <ion-label>Action Sheet</ion-label>\n <ion-select id=\"customActionSheetSelect\" interface=\"action-sheet\" placeholder=\"Select One\">\n <ion-select-option value=\"red\">Red</ion-select-option>\n <ion-select-option value=\"purple\">Purple</ion-select-option>\n <ion-select-option value=\"yellow\">Yellow</ion-select-option>\n <ion-select-option value=\"orange\">Orange</ion-select-option>\n <ion-select-option value=\"green\">Green</ion-select-option>\n </ion-select>\n </ion-item>\n\n</ion-list>\n```\n\n```javascript\nvar customAlertSelect = document.getElementById('customAlertSelect');\nvar customAlertOptions = {\n header: 'Pizza Toppings',\n subHeader: 'Select your toppings',\n message: '$1.00 per topping',\n translucent: true\n};\ncustomAlertSelect.interfaceOptions = customAlertOptions;\n\nvar customPopoverSelect = document.getElementById('customPopoverSelect');\nvar customPopoverOptions = {\n header: 'Hair Color',\n subHeader: 'Select your hair color',\n message: 'Only select your dominant hair color'\n};\ncustomPopoverSelect.interfaceOptions = customPopoverOptions;\n\nvar customActionSheetSelect = document.getElementById('customActionSheetSelect');\nvar customActionSheetOptions = {\n header: 'Colors',\n subHeader: 'Select your favorite color'\n};\ncustomActionSheetSelect.interfaceOptions = customActionSheetOptions;\n```",
10043 "react": "```tsx\nimport React from 'react';\nimport {\n IonList,\n IonListHeader,\n IonItem,\n IonLabel,\n IonSelect,\n IonSelectOption,\n IonContent\n} from '@ionic/react';\n\nconst customAlertOptions = {\n header: 'Pizza Toppings',\n subHeader: 'Select your toppings',\n message: '$1.00 per topping',\n translucent: true\n};\n\nconst customPopoverOptions = {\n header: 'Hair Color',\n subHeader: 'Select your hair color',\n message: 'Only select your dominant hair color'\n};\n\nconst customActionSheetOptions = {\n header: 'Colors',\n subHeader: 'Select your favorite color'\n};\n\nconst objectOptions = [\n {\n id: 1,\n first: 'Alice',\n last: 'Smith'\n },\n {\n id: 2,\n first: 'Bob',\n last: 'Davis'\n },\n {\n id: 3,\n first: 'Charlie',\n last: 'Rosenburg'\n }\n];\n\nconst compareWith = (o1: any, o2: any) => {\n return o1 && o2 ? o1.id === o2.id : o1 === o2;\n};\n\nexport const SelectExample: React.FC = () => (\n <IonContent>\n ## Single Selection\n <IonList>\n <IonListHeader>Single Selection</IonListHeader>\n\n <IonItem>\n <IonLabel>Gender</IonLabel>\n <IonSelect placeholder=\"Select One\">\n <IonSelectOption value=\"f\">Female</IonSelectOption>\n <IonSelectOption value=\"m\">Male</IonSelectOption>\n </IonSelect>\n </IonItem>\n\n <IonItem>\n <IonLabel>Hair Color</IonLabel>\n <IonSelect value=\"brown\" okText=\"Okay\" cancelText=\"Dismiss\">\n <IonSelectOption value=\"brown\">Brown</IonSelectOption>\n <IonSelectOption value=\"blonde\">Blonde</IonSelectOption>\n <IonSelectOption value=\"black\">Black</IonSelectOption>\n <IonSelectOption value=\"red\">Red</IonSelectOption>\n </IonSelect>\n </IonItem>\n </IonList>\n ## Multiple Selection\n <IonList>\n <IonListHeader>Multiple Selection</IonListHeader>\n\n <IonItem>\n <IonLabel>Toppings</IonLabel>\n <IonSelect multiple={true} cancelText=\"Nah\" okText=\"Okay!\">\n <IonSelectOption value=\"bacon\">Bacon</IonSelectOption>\n <IonSelectOption value=\"olives\">Black Olives</IonSelectOption>\n <IonSelectOption value=\"xcheese\">Extra Cheese</IonSelectOption>\n <IonSelectOption value=\"peppers\">Green Peppers</IonSelectOption>\n <IonSelectOption value=\"mushrooms\">Mushrooms</IonSelectOption>\n <IonSelectOption value=\"onions\">Onions</IonSelectOption>\n <IonSelectOption value=\"pepperoni\">Pepperoni</IonSelectOption>\n <IonSelectOption value=\"pineapple\">Pineapple</IonSelectOption>\n <IonSelectOption value=\"sausage\">Sausage</IonSelectOption>\n <IonSelectOption value=\"Spinach\">Spinach</IonSelectOption>\n </IonSelect>\n </IonItem>\n\n <IonItem>\n <IonLabel>Pets</IonLabel>\n <IonSelect multiple={true}>\n <IonSelectOption value=\"bird\" selected>\n Bird\n </IonSelectOption>\n <IonSelectOption value=\"cat\">Cat</IonSelectOption>\n <IonSelectOption value=\"dog\" selected>\n Dog\n </IonSelectOption>\n <IonSelectOption value=\"honeybadger\">Honey Badger</IonSelectOption>\n </IonSelect>\n </IonItem>\n </IonList>\n ## Objects as Values\n <IonList>\n <IonListHeader>Objects as Values (compareWith)</IonListHeader>\n <IonItem>\n <IonLabel>Users</IonLabel>\n <IonSelect compareWith={compareWith}>\n {objectOptions.map((object, i) => {\n return (\n <IonSelectOption key={object.id} value={object.id}>\n {object.first} {object.last}\n </IonSelectOption>\n );\n })}\n </IonSelect>\n </IonItem>\n </IonList>\n ## Interface Options\n <IonList>\n <IonListHeader>Interface Options</IonListHeader>\n\n <IonItem>\n <IonLabel>Alert</IonLabel>\n <IonSelect\n interfaceOptions={customAlertOptions}\n interface=\"alert\"\n multiple={true}\n placeholder=\"Select One\"\n >\n <IonSelectOption value=\"bacon\">Bacon</IonSelectOption>\n <IonSelectOption value=\"olives\">Black Olives</IonSelectOption>\n <IonSelectOption value=\"xcheese\">Extra Cheese</IonSelectOption>\n <IonSelectOption value=\"peppers\">Green Peppers</IonSelectOption>\n <IonSelectOption value=\"mushrooms\">Mushrooms</IonSelectOption>\n <IonSelectOption value=\"onions\">Onions</IonSelectOption>\n <IonSelectOption value=\"pepperoni\">Pepperoni</IonSelectOption>\n <IonSelectOption value=\"pineapple\">Pineapple</IonSelectOption>\n <IonSelectOption value=\"sausage\">Sausage</IonSelectOption>\n <IonSelectOption value=\"Spinach\">Spinach</IonSelectOption>\n </IonSelect>\n </IonItem>\n\n <IonItem>\n <IonLabel>Popover</IonLabel>\n <IonSelect interfaceOptions={customPopoverOptions} interface=\"popover\" placeholder=\"Select One\">\n <IonSelectOption value=\"brown\">Brown</IonSelectOption>\n <IonSelectOption value=\"blonde\">Blonde</IonSelectOption>\n <IonSelectOption value=\"black\">Black</IonSelectOption>\n <IonSelectOption value=\"red\">Red</IonSelectOption>\n </IonSelect>\n </IonItem>\n\n <IonItem>\n <IonLabel>Action Sheet</IonLabel>\n <IonSelect\n interfaceOptions={customActionSheetOptions}\n interface=\"action-sheet\"\n placeholder=\"Select One\"\n >\n <IonSelectOption value=\"red\">Red</IonSelectOption>\n <IonSelectOption value=\"purple\">Purple</IonSelectOption>\n <IonSelectOption value=\"yellow\">Yellow</IonSelectOption>\n <IonSelectOption value=\"orange\">Orange</IonSelectOption>\n <IonSelectOption value=\"green\">Green</IonSelectOption>\n </IonSelect>\n </IonItem>\n </IonList>\n </IonContent>\n);\n```\n",
10044 "vue": "## Single Selection\n\n```html\n<template>\n <ion-list>\n <ion-list-header>Single Selection</ion-list-header>\n\n <ion-item>\n <ion-label>Gender</ion-label>\n <ion-select placeholder=\"Select One\">\n <ion-select-option value=\"f\">Female</ion-select-option>\n <ion-select-option value=\"m\">Male</ion-select-option>\n </ion-select>\n </ion-item>\n\n <ion-item>\n <ion-label>Hair Color</ion-label>\n <ion-select value=\"brown\" okText=\"Okay\" cancelText=\"Dismiss\">\n <ion-select-option value=\"brown\">Brown</ion-select-option>\n <ion-select-option value=\"blonde\">Blonde</ion-select-option>\n <ion-select-option value=\"black\">Black</ion-select-option>\n <ion-select-option value=\"red\">Red</ion-select-option>\n </ion-select>\n </ion-item>\n\n </ion-list>\n</template>\n```\n\n## Multiple Selection\n\n```html\n<template>\n <ion-list>\n <ion-list-header>Multiple Selection</ion-list-header>\n\n <ion-item>\n <ion-label>Toppings</ion-label>\n <ion-select multiple=\"true\" cancelText=\"Nah\" okText=\"Okay!\">\n <ion-select-option value=\"bacon\">Bacon</ion-select-option>\n <ion-select-option value=\"olives\">Black Olives</ion-select-option>\n <ion-select-option value=\"xcheese\">Extra Cheese</ion-select-option>\n <ion-select-option value=\"peppers\">Green Peppers</ion-select-option>\n <ion-select-option value=\"mushrooms\">Mushrooms</ion-select-option>\n <ion-select-option value=\"onions\">Onions</ion-select-option>\n <ion-select-option value=\"pepperoni\">Pepperoni</ion-select-option>\n <ion-select-option value=\"pineapple\">Pineapple</ion-select-option>\n <ion-select-option value=\"sausage\">Sausage</ion-select-option>\n <ion-select-option value=\"Spinach\">Spinach</ion-select-option>\n </ion-select>\n </ion-item>\n\n <ion-item>\n <ion-label>Pets</ion-label>\n <ion-select multiple=\"true\">\n <ion-select-option value=\"bird\" selected>Bird</ion-select-option>\n <ion-select-option value=\"cat\">Cat</ion-select-option>\n <ion-select-option value=\"dog\" selected>Dog</ion-select-option>\n <ion-select-option value=\"honeybadger\">Honey Badger</ion-select-option>\n </ion-select>\n </ion-item>\n </ion-list>\n</template>\n```\n\n## Interface Options\n\n```html\n<template>\n <ion-list>\n <ion-list-header>Interface Options</ion-list-header>\n\n <ion-item>\n <ion-label>Alert</ion-label>\n <ion-select :interfaceOptions=\"customAlertOptions\" interface=\"alert\" multiple=\"true\" placeholder=\"Select One\">\n <ion-select-option value=\"bacon\">Bacon</ion-select-option>\n <ion-select-option value=\"olives\">Black Olives</ion-select-option>\n <ion-select-option value=\"xcheese\">Extra Cheese</ion-select-option>\n <ion-select-option value=\"peppers\">Green Peppers</ion-select-option>\n <ion-select-option value=\"mushrooms\">Mushrooms</ion-select-option>\n <ion-select-option value=\"onions\">Onions</ion-select-option>\n <ion-select-option value=\"pepperoni\">Pepperoni</ion-select-option>\n <ion-select-option value=\"pineapple\">Pineapple</ion-select-option>\n <ion-select-option value=\"sausage\">Sausage</ion-select-option>\n <ion-select-option value=\"Spinach\">Spinach</ion-select-option>\n </ion-select>\n </ion-item>\n\n <ion-item>\n <ion-label>Popover</ion-label>\n <ion-select :interfaceOptions=\"customPopoverOptions\" interface=\"popover\" placeholder=\"Select One\">\n <ion-select-option value=\"brown\">Brown</ion-select-option>\n <ion-select-option value=\"blonde\">Blonde</ion-select-option>\n <ion-select-option value=\"black\">Black</ion-select-option>\n <ion-select-option value=\"red\">Red</ion-select-option>\n </ion-select>\n </ion-item>\n\n <ion-item>\n <ion-label>Action Sheet</ion-label>\n <ion-select :interfaceOptions]=\"customActionSheetOptions\" interface=\"action-sheet\" placeholder=\"Select One\">\n <ion-select-option value=\"red\">Red</ion-select-option>\n <ion-select-option value=\"purple\">Purple</ion-select-option>\n <ion-select-option value=\"yellow\">Yellow</ion-select-option>\n <ion-select-option value=\"orange\">Orange</ion-select-option>\n <ion-select-option value=\"green\">Green</ion-select-option>\n </ion-select>\n </ion-item>\n\n </ion-list>\n</template>\n\n<script lang=\"ts\">\n import { Component, Vue } from 'vue-property-decorator';\n\n @Component()\n export default class Example extends Vue {\n customAlertOptions: any = {\n header: 'Pizza Toppings',\n subHeader: 'Select your toppings',\n message: '$1.00 per topping',\n translucent: true\n };\n\n customPopoverOptions: any = {\n header: 'Hair Color',\n subHeader: 'Select your hair color',\n message: 'Only select your dominant hair color'\n };\n\n customActionSheetOptions: any = {\n header: 'Colors',\n subHeader: 'Select your favorite color'\n };\n }\n</script>\n```\n"
10045 },
10046 "props": [
10047 {
10048 "name": "cancelText",
10049 "type": "string",
10050 "mutable": false,
10051 "attr": "cancel-text",
10052 "reflectToAttr": false,
10053 "docs": "The text to display on the cancel button.",
10054 "docsTags": [],
10055 "default": "'Cancel'",
10056 "optional": false,
10057 "required": false
10058 },
10059 {
10060 "name": "compareWith",
10061 "type": "((currentValue: any, compareValue: any) => boolean) | null | string | undefined",
10062 "mutable": false,
10063 "attr": "compare-with",
10064 "reflectToAttr": false,
10065 "docs": "A property name or function used to compare object values",
10066 "docsTags": [],
10067 "optional": true,
10068 "required": false
10069 },
10070 {
10071 "name": "disabled",
10072 "type": "boolean",
10073 "mutable": false,
10074 "attr": "disabled",
10075 "reflectToAttr": false,
10076 "docs": "If `true`, the user cannot interact with the select.",
10077 "docsTags": [],
10078 "default": "false",
10079 "optional": false,
10080 "required": false
10081 },
10082 {
10083 "name": "interface",
10084 "type": "\"action-sheet\" | \"alert\" | \"popover\"",
10085 "mutable": false,
10086 "attr": "interface",
10087 "reflectToAttr": false,
10088 "docs": "The interface the select should use: `action-sheet`, `popover` or `alert`.",
10089 "docsTags": [],
10090 "default": "'alert'",
10091 "optional": false,
10092 "required": false
10093 },
10094 {
10095 "name": "interfaceOptions",
10096 "type": "any",
10097 "mutable": false,
10098 "attr": "interface-options",
10099 "reflectToAttr": false,
10100 "docs": "Any additional options that the `alert`, `action-sheet` or `popover` interface\ncan take. See the [AlertController API docs](../../alert/AlertController/#create), the\n[ActionSheetController API docs](../../action-sheet/ActionSheetController/#create) and the\n[PopoverController API docs](../../popover/PopoverController/#create) for the\ncreate options for each interface.",
10101 "docsTags": [],
10102 "default": "{}",
10103 "optional": false,
10104 "required": false
10105 },
10106 {
10107 "name": "mode",
10108 "type": "\"ios\" | \"md\"",
10109 "mutable": false,
10110 "attr": "mode",
10111 "reflectToAttr": false,
10112 "docs": "The mode determines which platform styles to use.",
10113 "docsTags": [],
10114 "optional": true,
10115 "required": false
10116 },
10117 {
10118 "name": "multiple",
10119 "type": "boolean",
10120 "mutable": false,
10121 "attr": "multiple",
10122 "reflectToAttr": false,
10123 "docs": "If `true`, the select can accept multiple values.",
10124 "docsTags": [],
10125 "default": "false",
10126 "optional": false,
10127 "required": false
10128 },
10129 {
10130 "name": "name",
10131 "type": "string",
10132 "mutable": false,
10133 "attr": "name",
10134 "reflectToAttr": false,
10135 "docs": "The name of the control, which is submitted with the form data.",
10136 "docsTags": [],
10137 "default": "this.inputId",
10138 "optional": false,
10139 "required": false
10140 },
10141 {
10142 "name": "okText",
10143 "type": "string",
10144 "mutable": false,
10145 "attr": "ok-text",
10146 "reflectToAttr": false,
10147 "docs": "The text to display on the ok button.",
10148 "docsTags": [],
10149 "default": "'OK'",
10150 "optional": false,
10151 "required": false
10152 },
10153 {
10154 "name": "placeholder",
10155 "type": "null | string | undefined",
10156 "mutable": false,
10157 "attr": "placeholder",
10158 "reflectToAttr": false,
10159 "docs": "The text to display when the select is empty.",
10160 "docsTags": [],
10161 "optional": true,
10162 "required": false
10163 },
10164 {
10165 "name": "selectedText",
10166 "type": "null | string | undefined",
10167 "mutable": false,
10168 "attr": "selected-text",
10169 "reflectToAttr": false,
10170 "docs": "The text to display instead of the selected option's value.",
10171 "docsTags": [],
10172 "optional": true,
10173 "required": false
10174 },
10175 {
10176 "name": "value",
10177 "type": "any",
10178 "mutable": true,
10179 "attr": "value",
10180 "reflectToAttr": false,
10181 "docs": "the value of the select.",
10182 "docsTags": [],
10183 "optional": true,
10184 "required": false
10185 }
10186 ],
10187 "methods": [
10188 {
10189 "name": "open",
10190 "returns": {
10191 "type": "Promise<any>",
10192 "docs": ""
10193 },
10194 "signature": "open(event?: UIEvent | undefined) => Promise<any>",
10195 "parameters": [],
10196 "docs": "Open the select overlay. The overlay is either an alert, action sheet, or popover,\ndepending on the `interface` property on the `ion-select`.",
10197 "docsTags": [
10198 {
10199 "name": "param",
10200 "text": "event The user interface event that called the open."
10201 }
10202 ]
10203 }
10204 ],
10205 "events": [
10206 {
10207 "event": "ionBlur",
10208 "detail": "void",
10209 "bubbles": true,
10210 "cancelable": true,
10211 "composed": true,
10212 "docs": "Emitted when the select loses focus.",
10213 "docsTags": []
10214 },
10215 {
10216 "event": "ionCancel",
10217 "detail": "void",
10218 "bubbles": true,
10219 "cancelable": true,
10220 "composed": true,
10221 "docs": "Emitted when the selection is cancelled.",
10222 "docsTags": []
10223 },
10224 {
10225 "event": "ionChange",
10226 "detail": "SelectChangeEventDetail",
10227 "bubbles": true,
10228 "cancelable": true,
10229 "composed": true,
10230 "docs": "Emitted when the value has changed.",
10231 "docsTags": []
10232 },
10233 {
10234 "event": "ionFocus",
10235 "detail": "void",
10236 "bubbles": true,
10237 "cancelable": true,
10238 "composed": true,
10239 "docs": "Emitted when the select has focus.",
10240 "docsTags": []
10241 }
10242 ],
10243 "styles": [
10244 {
10245 "name": "--padding-bottom",
10246 "annotation": "prop",
10247 "docs": "Bottom padding of the select"
10248 },
10249 {
10250 "name": "--padding-end",
10251 "annotation": "prop",
10252 "docs": "Right padding if direction is left-to-right, and left padding if direction is right-to-left of the select"
10253 },
10254 {
10255 "name": "--padding-start",
10256 "annotation": "prop",
10257 "docs": "Left padding if direction is left-to-right, and right padding if direction is right-to-left of the select"
10258 },
10259 {
10260 "name": "--padding-top",
10261 "annotation": "prop",
10262 "docs": "Top padding of the select"
10263 }
10264 ],
10265 "slots": []
10266 },
10267 {
10268 "tag": "ion-select-option",
10269 "filePath": "src/components/select-option/select-option.tsx",
10270 "encapsulation": "shadow",
10271 "readme": "# ion-select-option\n\nSelectOption is a component that is a child element of Select. For more information, see the [Select docs](../select).\n\n",
10272 "docs": "SelectOption is a component that is a child element of Select. For more information, see the [Select docs](../select).",
10273 "docsTags": [],
10274 "usage": {},
10275 "props": [
10276 {
10277 "name": "disabled",
10278 "type": "boolean",
10279 "mutable": false,
10280 "attr": "disabled",
10281 "reflectToAttr": false,
10282 "docs": "If `true`, the user cannot interact with the select option.",
10283 "docsTags": [],
10284 "default": "false",
10285 "optional": false,
10286 "required": false
10287 },
10288 {
10289 "name": "selected",
10290 "type": "boolean",
10291 "mutable": false,
10292 "attr": "selected",
10293 "reflectToAttr": false,
10294 "docs": "If `true`, the element is selected.",
10295 "docsTags": [],
10296 "default": "false",
10297 "optional": false,
10298 "required": false
10299 },
10300 {
10301 "name": "value",
10302 "type": "any",
10303 "mutable": false,
10304 "attr": "value",
10305 "reflectToAttr": false,
10306 "docs": "The text value of the option.",
10307 "docsTags": [],
10308 "optional": true,
10309 "required": false
10310 }
10311 ],
10312 "methods": [],
10313 "events": [],
10314 "styles": [],
10315 "slots": []
10316 },
10317 {
10318 "tag": "ion-skeleton-text",
10319 "filePath": "src/components/skeleton-text/skeleton-text.tsx",
10320 "encapsulation": "shadow",
10321 "readme": "# ion-skeleton-text\n\nSkeleton Text is a component for rendering placeholder content. The element will render a gray block at the specified width.\n\n",
10322 "docs": "Skeleton Text is a component for rendering placeholder content. The element will render a gray block at the specified width.",
10323 "docsTags": [],
10324 "usage": {
10325 "angular": "```html\n<!-- Data to display after skeleton screen -->\n<div *ngIf=\"data\">\n <div class=\"ion-padding\">\n Lorem ipsum dolor sit amet, consectetur adipiscing elit. Nulla ac eros est. Cras iaculis pulvinar arcu non vehicula. Fusce at quam a eros malesuada condimentum. Aliquam tincidunt tincidunt vehicula.\n </div>\n\n <ion-list>\n <ion-list-header>Data</ion-list-header>\n <ion-item>\n <ion-avatar slot=\"start\">\n <img src=\"./avatar.svg\">\n </ion-avatar>\n <ion-label>\n <h3>\n {{ data.heading }}\n </h3>\n <p>\n {{ data.para1 }}\n </p>\n <p>\n {{ data.para2 }}\n </p>\n </ion-label>\n </ion-item>\n <ion-item>\n <ion-thumbnail slot=\"start\">\n <img src=\"./thumbnail.svg\">\n </ion-thumbnail>\n <ion-label>\n <h3>\n {{ data.heading }}\n </h3>\n <p>\n {{ data.para1 }}\n </p>\n <p>\n {{ data.para2 }}\n </p>\n </ion-label>\n </ion-item>\n <ion-item>\n <ion-icon name=\"call\" slot=\"start\"></ion-icon>\n <ion-label>\n <h3>\n {{ data.heading }}\n </h3>\n <p>\n {{ data.para1 }}\n </p>\n <p>\n {{ data.para2 }}\n </p>\n </ion-label>\n </ion-item>\n </ion-list>\n</div>\n\n<!-- Skeleton screen -->\n<div *ngIf=\"!data\">\n <div class=\"ion-padding custom-skeleton\">\n <ion-skeleton-text animated style=\"width: 60%\"></ion-skeleton-text>\n <ion-skeleton-text animated></ion-skeleton-text>\n <ion-skeleton-text animated style=\"width: 88%\"></ion-skeleton-text>\n <ion-skeleton-text animated style=\"width: 70%\"></ion-skeleton-text>\n <ion-skeleton-text animated style=\"width: 60%\"></ion-skeleton-text>\n </div>\n\n <ion-list>\n <ion-list-header>\n <ion-skeleton-text animated style=\"width: 20%\"></ion-skeleton-text>\n </ion-list-header>\n <ion-item>\n <ion-avatar slot=\"start\">\n <ion-skeleton-text animated></ion-skeleton-text>\n </ion-avatar>\n <ion-label>\n <h3>\n <ion-skeleton-text animated style=\"width: 50%\"></ion-skeleton-text>\n </h3>\n <p>\n <ion-skeleton-text animated style=\"width: 80%\"></ion-skeleton-text>\n </p>\n <p>\n <ion-skeleton-text animated style=\"width: 60%\"></ion-skeleton-text>\n </p>\n </ion-label>\n </ion-item>\n <ion-item>\n <ion-thumbnail slot=\"start\">\n <ion-skeleton-text animated></ion-skeleton-text>\n </ion-thumbnail>\n <ion-label>\n <h3>\n <ion-skeleton-text animated style=\"width: 50%\"></ion-skeleton-text>\n </h3>\n <p>\n <ion-skeleton-text animated style=\"width: 80%\"></ion-skeleton-text>\n </p>\n <p>\n <ion-skeleton-text animated style=\"width: 60%\"></ion-skeleton-text>\n </p>\n </ion-label>\n </ion-item>\n <ion-item>\n <ion-skeleton-text animated style=\"width: 27px; height: 27px\" slot=\"start\"></ion-skeleton-text>\n <ion-label>\n <h3>\n <ion-skeleton-text animated style=\"width: 50%\"></ion-skeleton-text>\n </h3>\n <p>\n <ion-skeleton-text animated style=\"width: 80%\"></ion-skeleton-text>\n </p>\n <p>\n <ion-skeleton-text animated style=\"width: 60%\"></ion-skeleton-text>\n </p>\n </ion-label>\n </ion-item>\n </ion-list>\n</div>\n```\n\n```css\n/* Custom Skeleton Line Height and Margin */\n.custom-skeleton ion-skeleton-text {\n line-height: 13px;\n}\n\n.custom-skeleton ion-skeleton-text:last-child {\n margin-bottom: 5px;\n}\n```\n\n```typescript\nimport { Component } from '@angular/core';\n\n@Component({\n selector: 'skeleton-text-example',\n templateUrl: 'skeleton-text-example.html',\n styleUrls: ['./skeleton-text-example.css']\n})\nexport class SkeletonTextExample {\n data: any;\n\n constructor() {}\n\n ionViewWillEnter() {\n setTimeout(() => {\n this.data = {\n 'heading': 'Normal text',\n 'para1': 'Lorem ipsum dolor sit amet, consectetur',\n 'para2': 'adipiscing elit.'\n };\n }, 5000);\n }\n}\n```",
10326 "javascript": "```html\n<!-- Data to display after skeleton screen -->\n<div id=\"data\">\n <div class=\"ion-padding\">\n Lorem ipsum dolor sit amet, consectetur adipiscing elit. Nulla ac eros est. Cras iaculis pulvinar arcu non vehicula. Fusce at quam a eros malesuada condimentum. Aliquam tincidunt tincidunt vehicula.\n </div>\n\n <ion-list>\n <ion-list-header>Data</ion-list-header>\n <ion-item>\n <ion-avatar slot=\"start\">\n <img src=\"./avatar.svg\">\n </ion-avatar>\n <ion-label>\n <h3>\n Normal text\n </h3>\n <p>\n Lorem ipsum dolor sit amet, consectetur\n </p>\n <p>\n adipiscing elit.\n </p>\n </ion-label>\n </ion-item>\n <ion-item>\n <ion-thumbnail slot=\"start\">\n <img src=\"./thumbnail.svg\">\n </ion-thumbnail>\n <ion-label>\n <h3>\n Normal text\n </h3>\n <p>\n Lorem ipsum dolor sit amet, consectetur\n </p>\n <p>\n adipiscing elit.\n </p>\n </ion-label>\n </ion-item>\n <ion-item>\n <ion-icon name=\"call\" slot=\"start\"></ion-icon>\n <ion-label>\n <h3>\n Normal text\n </h3>\n <p>\n Lorem ipsum dolor sit amet, consectetur\n </p>\n <p>\n adipiscing elit.\n </p>\n </ion-label>\n </ion-item>\n </ion-list>\n</div>\n\n<!-- Skeleton screen -->\n<div id=\"skeleton\">\n <div class=\"ion-padding custom-skeleton\">\n <ion-skeleton-text animated style=\"width: 60%\"></ion-skeleton-text>\n <ion-skeleton-text animated></ion-skeleton-text>\n <ion-skeleton-text animated style=\"width: 88%\"></ion-skeleton-text>\n <ion-skeleton-text animated style=\"width: 70%\"></ion-skeleton-text>\n <ion-skeleton-text animated style=\"width: 60%\"></ion-skeleton-text>\n </div>\n\n <ion-list>\n <ion-list-header>\n <ion-skeleton-text animated style=\"width: 20%\"></ion-skeleton-text>\n </ion-list-header>\n <ion-item>\n <ion-avatar slot=\"start\">\n <ion-skeleton-text animated></ion-skeleton-text>\n </ion-avatar>\n <ion-label>\n <h3>\n <ion-skeleton-text animated style=\"width: 50%\"></ion-skeleton-text>\n </h3>\n <p>\n <ion-skeleton-text animated style=\"width: 80%\"></ion-skeleton-text>\n </p>\n <p>\n <ion-skeleton-text animated style=\"width: 60%\"></ion-skeleton-text>\n </p>\n </ion-label>\n </ion-item>\n <ion-item>\n <ion-thumbnail slot=\"start\">\n <ion-skeleton-text animated></ion-skeleton-text>\n </ion-thumbnail>\n <ion-label>\n <h3>\n <ion-skeleton-text animated style=\"width: 50%\"></ion-skeleton-text>\n </h3>\n <p>\n <ion-skeleton-text animated style=\"width: 80%\"></ion-skeleton-text>\n </p>\n <p>\n <ion-skeleton-text animated style=\"width: 60%\"></ion-skeleton-text>\n </p>\n </ion-label>\n </ion-item>\n <ion-item>\n <ion-skeleton-text animated style=\"width: 27px; height: 27px\" slot=\"start\"></ion-skeleton-text>\n <ion-label>\n <h3>\n <ion-skeleton-text animated style=\"width: 50%\"></ion-skeleton-text>\n </h3>\n <p>\n <ion-skeleton-text animated style=\"width: 80%\"></ion-skeleton-text>\n </p>\n <p>\n <ion-skeleton-text animated style=\"width: 60%\"></ion-skeleton-text>\n </p>\n </ion-label>\n </ion-item>\n </ion-list>\n</div>\n```\n\n```css\n#data {\n display: none;\n}\n\n/* Custom Skeleton Line Height and Margin */\n.custom-skeleton ion-skeleton-text {\n line-height: 13px;\n}\n\n.custom-skeleton ion-skeleton-text:last-child {\n margin-bottom: 5px;\n}\n```\n\n```javascript\nfunction onLoad() {\n const skeletonEl = document.getElementById('skeleton');\n const dataEl = document.getElementById('data');\n\n setTimeout(() => {\n skeletonEl.style.display = 'none';\n dataEl.style.display = 'block';\n }, 5000);\n}\n```",
10327 "react": "```tsx\nimport React, { useState } from 'react';\nimport {\n IonContent,\n IonItem,\n IonAvatar,\n IonLabel,\n IonSkeletonText,\n IonListHeader,\n IonIcon,\n IonThumbnail,\n IonList\n} from '@ionic/react';\nimport './SkeletonTextExample.css';\n\nexport const SkeletonTextExample: React.FC = () => {\n const [data, setData] = useState();\n\n setTimeout(() => {\n setData({\n heading: 'Normal text',\n para1: 'Lorem ipsum dolor sit amet, consectetur',\n para2: 'adipiscing elit.'\n });\n }, 5000);\n\n return (\n <IonContent>\n {data ? (\n <>\n <div className=\"ion-padding\">\n Lorem ipsum dolor sit amet, consectetur adipiscing elit. Nulla ac eros est. Cras iaculis pulvinar\n arcu non vehicula. Fusce at quam a eros malesuada condimentum. Aliquam tincidunt tincidunt\n vehicula.\n </div>\n\n <IonList>\n <IonListHeader>Data</IonListHeader>\n <IonItem>\n <IonAvatar slot=\"start\">\n <img src=\"./avatar.svg\" />\n </IonAvatar>\n <IonLabel>\n <h3>{data.heading}</h3>\n <p>{data.para1}</p>\n <p>{data.para2}</p>\n </IonLabel>\n </IonItem>\n <IonItem>\n <IonThumbnail slot=\"start\">\n <img src=\"./thumbnail.svg\" />\n </IonThumbnail>\n <IonLabel>\n <h3>{data.heading}</h3>\n <p>{data.para1}</p>\n <p>{data.para2}</p>\n </IonLabel>\n </IonItem>\n <IonItem>\n <IonIcon name=\"call\" slot=\"start\" />\n <IonLabel>\n <h3>{data.heading}</h3>\n <p>{data.para1}</p>\n <p>{data.para2}</p>\n </IonLabel>\n </IonItem>\n </IonList>\n </>\n ) : (\n <>\n <div className=\"ion-padding custom-skeleton\">\n <IonSkeletonText animated style={{ width: '60%' }} />\n <IonSkeletonText animated />\n <IonSkeletonText animated style={{ width: '88%' }} />\n <IonSkeletonText animated style={{ width: '70%' }} />\n <IonSkeletonText animated style={{ width: '60%' }} />\n </div>\n\n <IonList>\n <IonListHeader>\n <IonSkeletonText animated style={{ width: '20%' }} />\n </IonListHeader>\n <IonItem>\n <IonAvatar slot=\"start\">\n <IonSkeletonText animated />\n </IonAvatar>\n <IonLabel>\n <h3>\n <IonSkeletonText animated style={{ width: '50%' }} />\n </h3>\n <p>\n <IonSkeletonText animated style={{ width: '80%' }} />\n </p>\n <p>\n <IonSkeletonText animated style={{ width: '60%' }} />\n </p>\n </IonLabel>\n </IonItem>\n <IonItem>\n <IonThumbnail slot=\"start\">\n <IonSkeletonText animated />\n </IonThumbnail>\n <IonLabel>\n <h3>\n <IonSkeletonText animated style={{ width: '50%' }} />\n </h3>\n <p>\n <IonSkeletonText animated style={{ width: '80%' }} />\n </p>\n <p>\n <IonSkeletonText animated style={{ width: '60%' }} />\n </p>\n </IonLabel>\n </IonItem>\n <IonItem>\n <IonSkeletonText animated style={{ width: '27px', height: '27px' }} slot=\"start\" />\n <IonLabel>\n <h3>\n <IonSkeletonText animated style={{ width: '50%' }} />\n </h3>\n <p>\n <IonSkeletonText animated style={{ width: '80%' }} />\n </p>\n <p>\n <IonSkeletonText animated style={{ width: '60%' }} />\n </p>\n </IonLabel>\n </IonItem>\n </IonList>\n </>\n )}\n </IonContent>\n );\n};\n```\n\n```css\n/* Custom Skeleton Line Height and Margin */\n.custom-skeleton ion-skeleton-text {\n line-height: 13px;\n}\n\n.custom-skeleton ion-skeleton-text:last-child {\n margin-bottom: 5px;\n}\n```",
10328 "vue": "```html\n<template>\n <!-- Data to display after skeleton screen -->\n <div v-if=\"data\">\n <div class=\"ion-padding\">\n Lorem ipsum dolor sit amet, consectetur adipiscing elit. Nulla ac eros est. Cras iaculis pulvinar arcu non vehicula. Fusce at quam a eros malesuada condimentum. Aliquam tincidunt tincidunt vehicula.\n </div>\n\n <ion-list>\n <ion-list-header>Data</ion-list-header>\n <ion-item>\n <ion-avatar slot=\"start\">\n <img src=\"./avatar.svg\">\n </ion-avatar>\n <ion-label>\n <h3>\n {{ data.heading }}\n </h3>\n <p>\n {{ data.para1 }}\n </p>\n <p>\n {{ data.para2 }}\n </p>\n </ion-label>\n </ion-item>\n <ion-item>\n <ion-thumbnail slot=\"start\">\n <img src=\"./thumbnail.svg\">\n </ion-thumbnail>\n <ion-label>\n <h3>\n {{ data.heading }}\n </h3>\n <p>\n {{ data.para1 }}\n </p>\n <p>\n {{ data.para2 }}\n </p>\n </ion-label>\n </ion-item>\n <ion-item>\n <ion-icon name=\"call\" slot=\"start\"></ion-icon>\n <ion-label>\n <h3>\n {{ data.heading }}\n </h3>\n <p>\n {{ data.para1 }}\n </p>\n <p>\n {{ data.para2 }}\n </p>\n </ion-label>\n </ion-item>\n </ion-list>\n </div>\n\n <!-- Skeleton screen -->\n <div *ngIf=\"!data\">\n <div class=\"ion-padding custom-skeleton\">\n <ion-skeleton-text animated style=\"width: 60%\"></ion-skeleton-text>\n <ion-skeleton-text animated></ion-skeleton-text>\n <ion-skeleton-text animated style=\"width: 88%\"></ion-skeleton-text>\n <ion-skeleton-text animated style=\"width: 70%\"></ion-skeleton-text>\n <ion-skeleton-text animated style=\"width: 60%\"></ion-skeleton-text>\n </div>\n\n <ion-list>\n <ion-list-header>\n <ion-skeleton-text animated style=\"width: 20%\"></ion-skeleton-text>\n </ion-list-header>\n <ion-item>\n <ion-avatar slot=\"start\">\n <ion-skeleton-text animated></ion-skeleton-text>\n </ion-avatar>\n <ion-label>\n <h3>\n <ion-skeleton-text animated style=\"width: 50%\"></ion-skeleton-text>\n </h3>\n <p>\n <ion-skeleton-text animated style=\"width: 80%\"></ion-skeleton-text>\n </p>\n <p>\n <ion-skeleton-text animated style=\"width: 60%\"></ion-skeleton-text>\n </p>\n </ion-label>\n </ion-item>\n <ion-item>\n <ion-thumbnail slot=\"start\">\n <ion-skeleton-text animated></ion-skeleton-text>\n </ion-thumbnail>\n <ion-label>\n <h3>\n <ion-skeleton-text animated style=\"width: 50%\"></ion-skeleton-text>\n </h3>\n <p>\n <ion-skeleton-text animated style=\"width: 80%\"></ion-skeleton-text>\n </p>\n <p>\n <ion-skeleton-text animated style=\"width: 60%\"></ion-skeleton-text>\n </p>\n </ion-label>\n </ion-item>\n <ion-item>\n <ion-skeleton-text animated style=\"width: 27px; height: 27px\" slot=\"start\"></ion-skeleton-text>\n <ion-label>\n <h3>\n <ion-skeleton-text animated style=\"width: 50%\"></ion-skeleton-text>\n </h3>\n <p>\n <ion-skeleton-text animated style=\"width: 80%\"></ion-skeleton-text>\n </p>\n <p>\n <ion-skeleton-text animated style=\"width: 60%\"></ion-skeleton-text>\n </p>\n </ion-label>\n </ion-item>\n </ion-list>\n </div>\n</template>\n\n<style>\n /* Custom Skeleton Line Height and Margin */\n .custom-skeleton ion-skeleton-text {\n line-height: 13px;\n }\n\n .custom-skeleton ion-skeleton-text:last-child {\n margin-bottom: 5px;\n }\n</style>\n\n<script lang=\"ts\">\n import { Component, Vue } from 'vue-property-decorator';\n\n @Component()\n export default class Example extends Vue {\n data: any;\n\n mounted() {\n setTimeout(() => {\n this.data = {\n 'heading': 'Normal text',\n 'para1': 'Lorem ipsum dolor sit amet, consectetur',\n 'para2': 'adipiscing elit.'\n };\n }, 5000);\n }\n }\n</script>\n```"
10329 },
10330 "props": [
10331 {
10332 "name": "animated",
10333 "type": "boolean",
10334 "mutable": false,
10335 "attr": "animated",
10336 "reflectToAttr": false,
10337 "docs": "If `true`, the skeleton text will animate.",
10338 "docsTags": [],
10339 "default": "false",
10340 "optional": false,
10341 "required": false
10342 },
10343 {
10344 "name": "width",
10345 "type": "string | undefined",
10346 "mutable": false,
10347 "attr": "width",
10348 "reflectToAttr": false,
10349 "docs": "",
10350 "docsTags": [
10351 {
10352 "text": "Use CSS instead. The width of the skeleton text. If supplied, it will override the CSS style.",
10353 "name": "deprecated"
10354 }
10355 ],
10356 "deprecation": "Use CSS instead. The width of the skeleton text. If supplied, it will override the CSS style.",
10357 "optional": true,
10358 "required": false
10359 }
10360 ],
10361 "methods": [],
10362 "events": [],
10363 "styles": [
10364 {
10365 "name": "--background",
10366 "annotation": "prop",
10367 "docs": "Background of the skeleton text"
10368 },
10369 {
10370 "name": "--background-rgb",
10371 "annotation": "prop",
10372 "docs": "Background of the skeleton text in rgb format"
10373 },
10374 {
10375 "name": "--border-radius",
10376 "annotation": "prop",
10377 "docs": "Border radius of the skeleton text"
10378 }
10379 ],
10380 "slots": []
10381 },
10382 {
10383 "tag": "ion-slide",
10384 "filePath": "src/components/slide/slide.tsx",
10385 "encapsulation": "none",
10386 "readme": "# ion-slide\n\nThe Slide component is a child component of [Slides](../slides). The template\nshould be written as `ion-slide`. Any slide content should be written\nin this component and it should be used in conjunction with [Slides](../slides).\n\nSee the [Slides API Docs](../slides) for more usage information.\n\n",
10387 "docs": "The Slide component is a child component of [Slides](../slides). The template\nshould be written as `ion-slide`. Any slide content should be written\nin this component and it should be used in conjunction with [Slides](../slides).\n\nSee the [Slides API Docs](../slides) for more usage information.",
10388 "docsTags": [],
10389 "usage": {},
10390 "props": [],
10391 "methods": [],
10392 "events": [],
10393 "styles": [],
10394 "slots": []
10395 },
10396 {
10397 "tag": "ion-slides",
10398 "filePath": "src/components/slides/slides.tsx",
10399 "encapsulation": "none",
10400 "readme": "# ion-slides\n\nThe Slides component is a multi-section container. Each section can be swiped\nor dragged between. It contains any number of [Slide](../slide) components.\n\n\nAdopted from Swiper.js:\nThe most modern mobile touch slider and framework with hardware accelerated transitions.\n\nhttp://www.idangero.us/swiper/\n\nCopyright 2016, Vladimir Kharlampidi\nThe iDangero.us\nhttp://www.idangero.us/\n\nLicensed under MIT\n\n### Custom Animations\n\nBy default, Ionic slides use the built-in `slide` animation effect. Custom animations can be provided via the `options` property. Examples of other animations can be found below.\n\n\n#### Coverflow\n\n```typescript\nconst slidesOpts = {\n slidesPerView: 3,\n coverflowEffect: {\n rotate: 50,\n stretch: 0,\n depth: 100,\n modifier: 1,\n slideShadows: true,\n },\n on: {\n beforeInit() {\n const swiper = this;\n\n swiper.classNames.push(`${swiper.params.containerModifierClass}coverflow`);\n swiper.classNames.push(`${swiper.params.containerModifierClass}3d`);\n\n swiper.params.watchSlidesProgress = true;\n swiper.originalParams.watchSlidesProgress = true;\n },\n setTranslate() {\n const swiper = this;\n const {\n width: swiperWidth, height: swiperHeight, slides, $wrapperEl, slidesSizesGrid, $\n } = swiper;\n const params = swiper.params.coverflowEffect;\n const isHorizontal = swiper.isHorizontal();\n const transform$$1 = swiper.translate;\n const center = isHorizontal ? -transform$$1 + (swiperWidth / 2) : -transform$$1 + (swiperHeight / 2);\n const rotate = isHorizontal ? params.rotate : -params.rotate;\n const translate = params.depth;\n // Each slide offset from center\n for (let i = 0, length = slides.length; i < length; i += 1) {\n const $slideEl = slides.eq(i);\n const slideSize = slidesSizesGrid[i];\n const slideOffset = $slideEl[0].swiperSlideOffset;\n const offsetMultiplier = ((center - slideOffset - (slideSize / 2)) / slideSize) * params.modifier;\n\n let rotateY = isHorizontal ? rotate * offsetMultiplier : 0;\n let rotateX = isHorizontal ? 0 : rotate * offsetMultiplier;\n // var rotateZ = 0\n let translateZ = -translate * Math.abs(offsetMultiplier);\n\n let translateY = isHorizontal ? 0 : params.stretch * (offsetMultiplier);\n let translateX = isHorizontal ? params.stretch * (offsetMultiplier) : 0;\n\n // Fix for ultra small values\n if (Math.abs(translateX) < 0.001) translateX = 0;\n if (Math.abs(translateY) < 0.001) translateY = 0;\n if (Math.abs(translateZ) < 0.001) translateZ = 0;\n if (Math.abs(rotateY) < 0.001) rotateY = 0;\n if (Math.abs(rotateX) < 0.001) rotateX = 0;\n\n const slideTransform = `translate3d(${translateX}px,${translateY}px,${translateZ}px) rotateX(${rotateX}deg) rotateY(${rotateY}deg)`;\n\n $slideEl.transform(slideTransform);\n $slideEl[0].style.zIndex = -Math.abs(Math.round(offsetMultiplier)) + 1;\n if (params.slideShadows) {\n // Set shadows\n let $shadowBeforeEl = isHorizontal ? $slideEl.find('.swiper-slide-shadow-left') : $slideEl.find('.swiper-slide-shadow-top');\n let $shadowAfterEl = isHorizontal ? $slideEl.find('.swiper-slide-shadow-right') : $slideEl.find('.swiper-slide-shadow-bottom');\n if ($shadowBeforeEl.length === 0) {\n $shadowBeforeEl = swiper.$(`<div class=\"swiper-slide-shadow-${isHorizontal ? 'left' : 'top'}\"></div>`);\n $slideEl.append($shadowBeforeEl);\n }\n if ($shadowAfterEl.length === 0) {\n $shadowAfterEl = swiper.$(`<div class=\"swiper-slide-shadow-${isHorizontal ? 'right' : 'bottom'}\"></div>`);\n $slideEl.append($shadowAfterEl);\n }\n if ($shadowBeforeEl.length) $shadowBeforeEl[0].style.opacity = offsetMultiplier > 0 ? offsetMultiplier : 0;\n if ($shadowAfterEl.length) $shadowAfterEl[0].style.opacity = (-offsetMultiplier) > 0 ? -offsetMultiplier : 0;\n }\n }\n\n // Set correct perspective for IE10\n if (swiper.support.pointerEvents || swiper.support.prefixedPointerEvents) {\n const ws = $wrapperEl[0].style;\n ws.perspectiveOrigin = `${center}px 50%`;\n }\n },\n setTransition(duration) {\n const swiper = this;\n swiper.slides\n .transition(duration)\n .find('.swiper-slide-shadow-top, .swiper-slide-shadow-right, .swiper-slide-shadow-bottom, .swiper-slide-shadow-left')\n .transition(duration);\n }\n }\n}\n```\n\n#### Cube\n\n```typescript\nconst slidesOpts = {\n grabCursor: true,\n cubeEffect: {\n shadow: true,\n slideShadows: true,\n shadowOffset: 20,\n shadowScale: 0.94,\n },\n on: {\n beforeInit: function() {\n const swiper = this;\n swiper.classNames.push(`${swiper.params.containerModifierClass}cube`);\n swiper.classNames.push(`${swiper.params.containerModifierClass}3d`);\n\n const overwriteParams = {\n slidesPerView: 1,\n slidesPerColumn: 1,\n slidesPerGroup: 1,\n watchSlidesProgress: true,\n resistanceRatio: 0,\n spaceBetween: 0,\n centeredSlides: false,\n virtualTranslate: true,\n };\n\n this.params = Object.assign(this.params, overwriteParams);\n this.originalParams = Object.assign(this.originalParams, overwriteParams);\n },\n setTranslate: function() {\n const swiper = this;\n const {\n $el, $wrapperEl, slides, width: swiperWidth, height: swiperHeight, rtlTranslate: rtl, size: swiperSize,\n } = swiper;\n const params = swiper.params.cubeEffect;\n const isHorizontal = swiper.isHorizontal();\n const isVirtual = swiper.virtual && swiper.params.virtual.enabled;\n let wrapperRotate = 0;\n let $cubeShadowEl;\n if (params.shadow) {\n if (isHorizontal) {\n $cubeShadowEl = $wrapperEl.find('.swiper-cube-shadow');\n if ($cubeShadowEl.length === 0) {\n $cubeShadowEl = swiper.$('<div class=\"swiper-cube-shadow\"></div>');\n $wrapperEl.append($cubeShadowEl);\n }\n $cubeShadowEl.css({ height: `${swiperWidth}px` });\n } else {\n $cubeShadowEl = $el.find('.swiper-cube-shadow');\n if ($cubeShadowEl.length === 0) {\n $cubeShadowEl = swiper.$('<div class=\"swiper-cube-shadow\"></div>');\n $el.append($cubeShadowEl);\n }\n }\n }\n\n for (let i = 0; i < slides.length; i += 1) {\n const $slideEl = slides.eq(i);\n let slideIndex = i;\n if (isVirtual) {\n slideIndex = parseInt($slideEl.attr('data-swiper-slide-index'), 10);\n }\n let slideAngle = slideIndex * 90;\n let round = Math.floor(slideAngle / 360);\n if (rtl) {\n slideAngle = -slideAngle;\n round = Math.floor(-slideAngle / 360);\n }\n const progress = Math.max(Math.min($slideEl[0].progress, 1), -1);\n let tx = 0;\n let ty = 0;\n let tz = 0;\n if (slideIndex % 4 === 0) {\n tx = -round * 4 * swiperSize;\n tz = 0;\n } else if ((slideIndex - 1) % 4 === 0) {\n tx = 0;\n tz = -round * 4 * swiperSize;\n } else if ((slideIndex - 2) % 4 === 0) {\n tx = swiperSize + (round * 4 * swiperSize);\n tz = swiperSize;\n } else if ((slideIndex - 3) % 4 === 0) {\n tx = -swiperSize;\n tz = (3 * swiperSize) + (swiperSize * 4 * round);\n }\n if (rtl) {\n tx = -tx;\n }\n\n if (!isHorizontal) {\n ty = tx;\n tx = 0;\n }\n\n const transform$$1 = `rotateX(${isHorizontal ? 0 : -slideAngle}deg) rotateY(${isHorizontal ? slideAngle : 0}deg) translate3d(${tx}px, ${ty}px, ${tz}px)`;\n if (progress <= 1 && progress > -1) {\n wrapperRotate = (slideIndex * 90) + (progress * 90);\n if (rtl) wrapperRotate = (-slideIndex * 90) - (progress * 90);\n }\n $slideEl.transform(transform$$1);\n if (params.slideShadows) {\n // Set shadows\n let shadowBefore = isHorizontal ? $slideEl.find('.swiper-slide-shadow-left') : $slideEl.find('.swiper-slide-shadow-top');\n let shadowAfter = isHorizontal ? $slideEl.find('.swiper-slide-shadow-right') : $slideEl.find('.swiper-slide-shadow-bottom');\n if (shadowBefore.length === 0) {\n shadowBefore = swiper.$(`<div class=\"swiper-slide-shadow-${isHorizontal ? 'left' : 'top'}\"></div>`);\n $slideEl.append(shadowBefore);\n }\n if (shadowAfter.length === 0) {\n shadowAfter = swiper.$(`<div class=\"swiper-slide-shadow-${isHorizontal ? 'right' : 'bottom'}\"></div>`);\n $slideEl.append(shadowAfter);\n }\n if (shadowBefore.length) shadowBefore[0].style.opacity = Math.max(-progress, 0);\n if (shadowAfter.length) shadowAfter[0].style.opacity = Math.max(progress, 0);\n }\n }\n $wrapperEl.css({\n '-webkit-transform-origin': `50% 50% -${swiperSize / 2}px`,\n '-moz-transform-origin': `50% 50% -${swiperSize / 2}px`,\n '-ms-transform-origin': `50% 50% -${swiperSize / 2}px`,\n 'transform-origin': `50% 50% -${swiperSize / 2}px`,\n });\n\n if (params.shadow) {\n if (isHorizontal) {\n $cubeShadowEl.transform(`translate3d(0px, ${(swiperWidth / 2) + params.shadowOffset}px, ${-swiperWidth / 2}px) rotateX(90deg) rotateZ(0deg) scale(${params.shadowScale})`);\n } else {\n const shadowAngle = Math.abs(wrapperRotate) - (Math.floor(Math.abs(wrapperRotate) / 90) * 90);\n const multiplier = 1.5 - (\n (Math.sin((shadowAngle * 2 * Math.PI) / 360) / 2)\n + (Math.cos((shadowAngle * 2 * Math.PI) / 360) / 2)\n );\n const scale1 = params.shadowScale;\n const scale2 = params.shadowScale / multiplier;\n const offset$$1 = params.shadowOffset;\n $cubeShadowEl.transform(`scale3d(${scale1}, 1, ${scale2}) translate3d(0px, ${(swiperHeight / 2) + offset$$1}px, ${-swiperHeight / 2 / scale2}px) rotateX(-90deg)`);\n }\n }\n\n const zFactor = (swiper.browser.isSafari || swiper.browser.isUiWebView) ? (-swiperSize / 2) : 0;\n $wrapperEl\n .transform(`translate3d(0px,0,${zFactor}px) rotateX(${swiper.isHorizontal() ? 0 : wrapperRotate}deg) rotateY(${swiper.isHorizontal() ? -wrapperRotate : 0}deg)`);\n },\n setTransition: function(duration) {\n const swiper = this;\n const { $el, slides } = swiper;\n slides\n .transition(duration)\n .find('.swiper-slide-shadow-top, .swiper-slide-shadow-right, .swiper-slide-shadow-bottom, .swiper-slide-shadow-left')\n .transition(duration);\n if (swiper.params.cubeEffect.shadow && !swiper.isHorizontal()) {\n $el.find('.swiper-cube-shadow').transition(duration);\n }\n },\n }\n}\n```\n\n#### Fade\n\n```typescript\nconst slidesOpts = {\n on: {\n beforeInit() {\n const swiper = this;\n swiper.classNames.push(`${swiper.params.containerModifierClass}fade`);\n const overwriteParams = {\n slidesPerView: 1,\n slidesPerColumn: 1,\n slidesPerGroup: 1,\n watchSlidesProgress: true,\n spaceBetween: 0,\n virtualTranslate: true,\n };\n swiper.params = Object.assign(swiper.params, overwriteParams);\n swiper.params = Object.assign(swiper.originalParams, overwriteParams);\n },\n setTranslate() {\n const swiper = this;\n const { slides } = swiper;\n for (let i = 0; i < slides.length; i += 1) {\n const $slideEl = swiper.slides.eq(i);\n const offset$$1 = $slideEl[0].swiperSlideOffset;\n let tx = -offset$$1;\n if (!swiper.params.virtualTranslate) tx -= swiper.translate;\n let ty = 0;\n if (!swiper.isHorizontal()) {\n ty = tx;\n tx = 0;\n }\n const slideOpacity = swiper.params.fadeEffect.crossFade\n ? Math.max(1 - Math.abs($slideEl[0].progress), 0)\n : 1 + Math.min(Math.max($slideEl[0].progress, -1), 0);\n $slideEl\n .css({\n opacity: slideOpacity,\n })\n .transform(`translate3d(${tx}px, ${ty}px, 0px)`);\n }\n },\n setTransition(duration) {\n const swiper = this;\n const { slides, $wrapperEl } = swiper;\n slides.transition(duration);\n if (swiper.params.virtualTranslate && duration !== 0) {\n let eventTriggered = false;\n slides.transitionEnd(() => {\n if (eventTriggered) return;\n if (!swiper || swiper.destroyed) return;\n eventTriggered = true;\n swiper.animating = false;\n const triggerEvents = ['webkitTransitionEnd', 'transitionend'];\n for (let i = 0; i < triggerEvents.length; i += 1) {\n $wrapperEl.trigger(triggerEvents[i]);\n }\n });\n }\n },\n }\n}\n```\n\n#### Flip\n\n```typescript\nconst slideOpts = {\n on: {\n beforeInit() {\n const swiper = this;\n swiper.classNames.push(`${swiper.params.containerModifierClass}flip`);\n swiper.classNames.push(`${swiper.params.containerModifierClass}3d`);\n const overwriteParams = {\n slidesPerView: 1,\n slidesPerColumn: 1,\n slidesPerGroup: 1,\n watchSlidesProgress: true,\n spaceBetween: 0,\n virtualTranslate: true,\n };\n swiper.params = Object.assign(swiper.params, overwriteParams);\n swiper.originalParams = Object.assign(swiper.originalParams, overwriteParams);\n },\n setTranslate() {\n const swiper = this;\n const { $, slides, rtlTranslate: rtl } = swiper;\n for (let i = 0; i < slides.length; i += 1) {\n const $slideEl = slides.eq(i);\n let progress = $slideEl[0].progress;\n if (swiper.params.flipEffect.limitRotation) {\n progress = Math.max(Math.min($slideEl[0].progress, 1), -1);\n }\n const offset$$1 = $slideEl[0].swiperSlideOffset;\n const rotate = -180 * progress;\n let rotateY = rotate;\n let rotateX = 0;\n let tx = -offset$$1;\n let ty = 0;\n if (!swiper.isHorizontal()) {\n ty = tx;\n tx = 0;\n rotateX = -rotateY;\n rotateY = 0;\n } else if (rtl) {\n rotateY = -rotateY;\n }\n\n $slideEl[0].style.zIndex = -Math.abs(Math.round(progress)) + slides.length;\n\n if (swiper.params.flipEffect.slideShadows) {\n // Set shadows\n let shadowBefore = swiper.isHorizontal() ? $slideEl.find('.swiper-slide-shadow-left') : $slideEl.find('.swiper-slide-shadow-top');\n let shadowAfter = swiper.isHorizontal() ? $slideEl.find('.swiper-slide-shadow-right') : $slideEl.find('.swiper-slide-shadow-bottom');\n if (shadowBefore.length === 0) {\n shadowBefore = swiper.$(`<div class=\"swiper-slide-shadow-${swiper.isHorizontal() ? 'left' : 'top'}\"></div>`);\n $slideEl.append(shadowBefore);\n }\n if (shadowAfter.length === 0) {\n shadowAfter = swiper.$(`<div class=\"swiper-slide-shadow-${swiper.isHorizontal() ? 'right' : 'bottom'}\"></div>`);\n $slideEl.append(shadowAfter);\n }\n if (shadowBefore.length) shadowBefore[0].style.opacity = Math.max(-progress, 0);\n if (shadowAfter.length) shadowAfter[0].style.opacity = Math.max(progress, 0);\n }\n $slideEl\n .transform(`translate3d(${tx}px, ${ty}px, 0px) rotateX(${rotateX}deg) rotateY(${rotateY}deg)`);\n }\n },\n setTransition(duration) {\n const swiper = this;\n const { slides, activeIndex, $wrapperEl } = swiper;\n slides\n .transition(duration)\n .find('.swiper-slide-shadow-top, .swiper-slide-shadow-right, .swiper-slide-shadow-bottom, .swiper-slide-shadow-left')\n .transition(duration);\n if (swiper.params.virtualTranslate && duration !== 0) {\n let eventTriggered = false;\n // eslint-disable-next-line\n slides.eq(activeIndex).transitionEnd(function onTransitionEnd() {\n if (eventTriggered) return;\n if (!swiper || swiper.destroyed) return;\n\n eventTriggered = true;\n swiper.animating = false;\n const triggerEvents = ['webkitTransitionEnd', 'transitionend'];\n for (let i = 0; i < triggerEvents.length; i += 1) {\n $wrapperEl.trigger(triggerEvents[i]);\n }\n });\n }\n }\n }\n};\n```\n",
10401 "docs": "The Slides component is a multi-section container. Each section can be swiped\nor dragged between. It contains any number of [Slide](../slide) components.\n\n\nAdopted from Swiper.js:\nThe most modern mobile touch slider and framework with hardware accelerated transitions.\n\nhttp://www.idangero.us/swiper/\n\nCopyright 2016, Vladimir Kharlampidi\nThe iDangero.us\nhttp://www.idangero.us/\n\nLicensed under MIT",
10402 "docsTags": [
10403 {
10404 "text": "{\"ios\" | \"md\"} mode - The mode determines which platform styles to use.",
10405 "name": "virtualProp"
10406 }
10407 ],
10408 "usage": {
10409 "angular": "```typescript\nimport { Component } from '@angular/core';\n\n@Component({\n selector: 'slides-example',\n template: `\n <ion-slides pager=\"true\" [options]=\"slideOpts\">\n <ion-slide>\n <h1>Slide 1</h1>\n </ion-slide>\n <ion-slide>\n <h1>Slide 2</h1>\n </ion-slide>\n <ion-slide>\n <h1>Slide 3</h1>\n </ion-slide>\n </ion-slides>\n `\n})\nexport class SlideExample {\n // Optional parameters to pass to the swiper instance. See http://idangero.us/swiper/api/ for valid options.\n slideOpts = {\n initialSlide: 1,\n speed: 400\n };\n constructor() {}\n}\n```\n",
10410 "javascript": "```html\n <ion-slides pager=\"true\">\n\n <ion-slide>\n <h1>Slide 1</h1>\n </ion-slide>\n\n <ion-slide>\n <h1>Slide 2</h1>\n </ion-slide>\n\n <ion-slide>\n <h1>Slide 3</h1>\n </ion-slide>\n </ion-slides>\n```\n\n```javascript\nvar slides = document.querySelector('ion-slides');\n\n// Optional parameters to pass to the swiper instance. See http://idangero.us/swiper/api/ for valid options.\nslides.options = {\n initialSlide: 1,\n speed: 400\n}\n```\n",
10411 "react": "```tsx\nimport React from 'react';\nimport { IonSlides, IonSlide, IonContent } from '@ionic/react';\n\n// Optional parameters to pass to the swiper instance. See http://idangero.us/swiper/api/ for valid options.\nconst slideOpts = {\n initialSlide: 1,\n speed: 400\n};\n\nexport const SlidesExample: React.FC = () => (\n <IonContent>\n <IonSlides pager={true} options={slideOpts}>\n <IonSlide>\n <h1>Slide 1</h1>\n </IonSlide>\n <IonSlide>\n <h1>Slide 2</h1>\n </IonSlide>\n <IonSlide>\n <h1>Slide 3</h1>\n </IonSlide>\n </IonSlides>\n </IonContent>\n);\n```\n",
10412 "vue": "```html\n<template>\n <ion-slides pager=\"true\" :options=\"slideOpts\">\n <ion-slide>\n <h1>Slide 1</h1>\n </ion-slide>\n <ion-slide>\n <h1>Slide 2</h1>\n </ion-slide>\n <ion-slide>\n <h1>Slide 3</h1>\n </ion-slide>\n </ion-slides>\n</template>\n\n\n<script lang=\"ts\">\n import { Component, Vue } from 'vue-property-decorator';\n\n @Component()\n export default class Example extends Vue {\n // Optional parameters to pass to the swiper instance. See http://idangero.us/swiper/api/ for valid options.\n slideOpts = {\n initialSlide: 1,\n speed: 400\n };\n }\n</script>\n```\n"
10413 },
10414 "props": [
10415 {
10416 "name": "mode",
10417 "type": "\"ios\" | \"md\"",
10418 "mutable": false,
10419 "attr": "mode",
10420 "reflectToAttr": false,
10421 "docs": "The mode determines which platform styles to use.",
10422 "docsTags": [],
10423 "optional": true,
10424 "required": false
10425 },
10426 {
10427 "name": "options",
10428 "type": "any",
10429 "mutable": false,
10430 "attr": "options",
10431 "reflectToAttr": false,
10432 "docs": "Options to pass to the swiper instance.\nSee http://idangero.us/swiper/api/ for valid options",
10433 "docsTags": [],
10434 "default": "{}",
10435 "optional": false,
10436 "required": false
10437 },
10438 {
10439 "name": "pager",
10440 "type": "boolean",
10441 "mutable": false,
10442 "attr": "pager",
10443 "reflectToAttr": false,
10444 "docs": "If `true`, show the pagination.",
10445 "docsTags": [],
10446 "default": "false",
10447 "optional": false,
10448 "required": false
10449 },
10450 {
10451 "name": "scrollbar",
10452 "type": "boolean",
10453 "mutable": false,
10454 "attr": "scrollbar",
10455 "reflectToAttr": false,
10456 "docs": "If `true`, show the scrollbar.",
10457 "docsTags": [],
10458 "default": "false",
10459 "optional": false,
10460 "required": false
10461 }
10462 ],
10463 "methods": [
10464 {
10465 "name": "getActiveIndex",
10466 "returns": {
10467 "type": "Promise<number>",
10468 "docs": ""
10469 },
10470 "signature": "getActiveIndex() => Promise<number>",
10471 "parameters": [],
10472 "docs": "Get the index of the active slide.",
10473 "docsTags": []
10474 },
10475 {
10476 "name": "getPreviousIndex",
10477 "returns": {
10478 "type": "Promise<number>",
10479 "docs": ""
10480 },
10481 "signature": "getPreviousIndex() => Promise<number>",
10482 "parameters": [],
10483 "docs": "Get the index of the previous slide.",
10484 "docsTags": []
10485 },
10486 {
10487 "name": "getSwiper",
10488 "returns": {
10489 "type": "Promise<any>",
10490 "docs": ""
10491 },
10492 "signature": "getSwiper() => Promise<any>",
10493 "parameters": [],
10494 "docs": "Get the Swiper instance.\nUse this to access the full Swiper API.\nSee https://idangero.us/swiper/api/ for all API options.",
10495 "docsTags": []
10496 },
10497 {
10498 "name": "isBeginning",
10499 "returns": {
10500 "type": "Promise<boolean>",
10501 "docs": ""
10502 },
10503 "signature": "isBeginning() => Promise<boolean>",
10504 "parameters": [],
10505 "docs": "Get whether or not the current slide is the first slide.",
10506 "docsTags": []
10507 },
10508 {
10509 "name": "isEnd",
10510 "returns": {
10511 "type": "Promise<boolean>",
10512 "docs": ""
10513 },
10514 "signature": "isEnd() => Promise<boolean>",
10515 "parameters": [],
10516 "docs": "Get whether or not the current slide is the last slide.",
10517 "docsTags": []
10518 },
10519 {
10520 "name": "length",
10521 "returns": {
10522 "type": "Promise<number>",
10523 "docs": ""
10524 },
10525 "signature": "length() => Promise<number>",
10526 "parameters": [],
10527 "docs": "Get the total number of slides.",
10528 "docsTags": []
10529 },
10530 {
10531 "name": "lockSwipeToNext",
10532 "returns": {
10533 "type": "Promise<void>",
10534 "docs": ""
10535 },
10536 "signature": "lockSwipeToNext(lock: boolean) => Promise<void>",
10537 "parameters": [],
10538 "docs": "Lock or unlock the ability to slide to the next slide.",
10539 "docsTags": [
10540 {
10541 "name": "param",
10542 "text": "lock If `true`, disable swiping to the next slide."
10543 }
10544 ]
10545 },
10546 {
10547 "name": "lockSwipeToPrev",
10548 "returns": {
10549 "type": "Promise<void>",
10550 "docs": ""
10551 },
10552 "signature": "lockSwipeToPrev(lock: boolean) => Promise<void>",
10553 "parameters": [],
10554 "docs": "Lock or unlock the ability to slide to the previous slide.",
10555 "docsTags": [
10556 {
10557 "name": "param",
10558 "text": "lock If `true`, disable swiping to the previous slide."
10559 }
10560 ]
10561 },
10562 {
10563 "name": "lockSwipes",
10564 "returns": {
10565 "type": "Promise<void>",
10566 "docs": ""
10567 },
10568 "signature": "lockSwipes(lock: boolean) => Promise<void>",
10569 "parameters": [],
10570 "docs": "Lock or unlock the ability to slide to the next or previous slide.",
10571 "docsTags": [
10572 {
10573 "name": "param",
10574 "text": "lock If `true`, disable swiping to the next and previous slide."
10575 }
10576 ]
10577 },
10578 {
10579 "name": "slideNext",
10580 "returns": {
10581 "type": "Promise<void>",
10582 "docs": ""
10583 },
10584 "signature": "slideNext(speed?: number | undefined, runCallbacks?: boolean | undefined) => Promise<void>",
10585 "parameters": [],
10586 "docs": "Transition to the next slide.",
10587 "docsTags": [
10588 {
10589 "name": "param",
10590 "text": "speed The transition duration (in ms)."
10591 },
10592 {
10593 "name": "param",
10594 "text": "runCallbacks If true, the transition will produce [Transition/SlideChange][Start/End] transition events."
10595 }
10596 ]
10597 },
10598 {
10599 "name": "slidePrev",
10600 "returns": {
10601 "type": "Promise<void>",
10602 "docs": ""
10603 },
10604 "signature": "slidePrev(speed?: number | undefined, runCallbacks?: boolean | undefined) => Promise<void>",
10605 "parameters": [],
10606 "docs": "Transition to the previous slide.",
10607 "docsTags": [
10608 {
10609 "name": "param",
10610 "text": "speed The transition duration (in ms)."
10611 },
10612 {
10613 "name": "param",
10614 "text": "runCallbacks If true, the transition will produce the [Transition/SlideChange][Start/End] transition events."
10615 }
10616 ]
10617 },
10618 {
10619 "name": "slideTo",
10620 "returns": {
10621 "type": "Promise<void>",
10622 "docs": ""
10623 },
10624 "signature": "slideTo(index: number, speed?: number | undefined, runCallbacks?: boolean | undefined) => Promise<void>",
10625 "parameters": [],
10626 "docs": "Transition to the specified slide.",
10627 "docsTags": [
10628 {
10629 "name": "param",
10630 "text": "index The index of the slide to transition to."
10631 },
10632 {
10633 "name": "param",
10634 "text": "speed The transition duration (in ms)."
10635 },
10636 {
10637 "name": "param",
10638 "text": "runCallbacks If true, the transition will produce [Transition/SlideChange][Start/End] transition events."
10639 }
10640 ]
10641 },
10642 {
10643 "name": "startAutoplay",
10644 "returns": {
10645 "type": "Promise<void>",
10646 "docs": ""
10647 },
10648 "signature": "startAutoplay() => Promise<void>",
10649 "parameters": [],
10650 "docs": "Start auto play.",
10651 "docsTags": []
10652 },
10653 {
10654 "name": "stopAutoplay",
10655 "returns": {
10656 "type": "Promise<void>",
10657 "docs": ""
10658 },
10659 "signature": "stopAutoplay() => Promise<void>",
10660 "parameters": [],
10661 "docs": "Stop auto play.",
10662 "docsTags": []
10663 },
10664 {
10665 "name": "update",
10666 "returns": {
10667 "type": "Promise<void>",
10668 "docs": ""
10669 },
10670 "signature": "update() => Promise<void>",
10671 "parameters": [],
10672 "docs": "Update the underlying slider implementation. Call this if you've added or removed\nchild slides.",
10673 "docsTags": []
10674 },
10675 {
10676 "name": "updateAutoHeight",
10677 "returns": {
10678 "type": "Promise<void>",
10679 "docs": ""
10680 },
10681 "signature": "updateAutoHeight(speed?: number | undefined) => Promise<void>",
10682 "parameters": [],
10683 "docs": "Force swiper to update its height (when autoHeight is enabled) for the duration\nequal to 'speed' parameter.",
10684 "docsTags": [
10685 {
10686 "name": "param",
10687 "text": "speed The transition duration (in ms)."
10688 }
10689 ]
10690 }
10691 ],
10692 "events": [
10693 {
10694 "event": "ionSlideDidChange",
10695 "detail": "void",
10696 "bubbles": true,
10697 "cancelable": true,
10698 "composed": true,
10699 "docs": "Emitted after the active slide has changed.",
10700 "docsTags": []
10701 },
10702 {
10703 "event": "ionSlideDoubleTap",
10704 "detail": "void",
10705 "bubbles": true,
10706 "cancelable": true,
10707 "composed": true,
10708 "docs": "Emitted when the user double taps on the slide's container.",
10709 "docsTags": []
10710 },
10711 {
10712 "event": "ionSlideDrag",
10713 "detail": "void",
10714 "bubbles": true,
10715 "cancelable": true,
10716 "composed": true,
10717 "docs": "Emitted when the slider is actively being moved.",
10718 "docsTags": []
10719 },
10720 {
10721 "event": "ionSlideNextEnd",
10722 "detail": "void",
10723 "bubbles": true,
10724 "cancelable": true,
10725 "composed": true,
10726 "docs": "Emitted when the next slide has ended.",
10727 "docsTags": []
10728 },
10729 {
10730 "event": "ionSlideNextStart",
10731 "detail": "void",
10732 "bubbles": true,
10733 "cancelable": true,
10734 "composed": true,
10735 "docs": "Emitted when the next slide has started.",
10736 "docsTags": []
10737 },
10738 {
10739 "event": "ionSlidePrevEnd",
10740 "detail": "void",
10741 "bubbles": true,
10742 "cancelable": true,
10743 "composed": true,
10744 "docs": "Emitted when the previous slide has ended.",
10745 "docsTags": []
10746 },
10747 {
10748 "event": "ionSlidePrevStart",
10749 "detail": "void",
10750 "bubbles": true,
10751 "cancelable": true,
10752 "composed": true,
10753 "docs": "Emitted when the previous slide has started.",
10754 "docsTags": []
10755 },
10756 {
10757 "event": "ionSlideReachEnd",
10758 "detail": "void",
10759 "bubbles": true,
10760 "cancelable": true,
10761 "composed": true,
10762 "docs": "Emitted when the slider is at the last slide.",
10763 "docsTags": []
10764 },
10765 {
10766 "event": "ionSlideReachStart",
10767 "detail": "void",
10768 "bubbles": true,
10769 "cancelable": true,
10770 "composed": true,
10771 "docs": "Emitted when the slider is at its initial position.",
10772 "docsTags": []
10773 },
10774 {
10775 "event": "ionSlidesDidLoad",
10776 "detail": "void",
10777 "bubbles": true,
10778 "cancelable": true,
10779 "composed": true,
10780 "docs": "Emitted after Swiper initialization",
10781 "docsTags": []
10782 },
10783 {
10784 "event": "ionSlideTap",
10785 "detail": "void",
10786 "bubbles": true,
10787 "cancelable": true,
10788 "composed": true,
10789 "docs": "Emitted when the user taps/clicks on the slide's container.",
10790 "docsTags": []
10791 },
10792 {
10793 "event": "ionSlideTouchEnd",
10794 "detail": "void",
10795 "bubbles": true,
10796 "cancelable": true,
10797 "composed": true,
10798 "docs": "Emitted when the user releases the touch.",
10799 "docsTags": []
10800 },
10801 {
10802 "event": "ionSlideTouchStart",
10803 "detail": "void",
10804 "bubbles": true,
10805 "cancelable": true,
10806 "composed": true,
10807 "docs": "Emitted when the user first touches the slider.",
10808 "docsTags": []
10809 },
10810 {
10811 "event": "ionSlideTransitionEnd",
10812 "detail": "void",
10813 "bubbles": true,
10814 "cancelable": true,
10815 "composed": true,
10816 "docs": "Emitted when the slide transition has ended.",
10817 "docsTags": []
10818 },
10819 {
10820 "event": "ionSlideTransitionStart",
10821 "detail": "void",
10822 "bubbles": true,
10823 "cancelable": true,
10824 "composed": true,
10825 "docs": "Emitted when the slide transition has started.",
10826 "docsTags": []
10827 },
10828 {
10829 "event": "ionSlideWillChange",
10830 "detail": "void",
10831 "bubbles": true,
10832 "cancelable": true,
10833 "composed": true,
10834 "docs": "Emitted before the active slide has changed.",
10835 "docsTags": []
10836 }
10837 ],
10838 "styles": [
10839 {
10840 "name": "--bullet-background",
10841 "annotation": "prop",
10842 "docs": "Background of the pagination bullets"
10843 },
10844 {
10845 "name": "--bullet-background-active",
10846 "annotation": "prop",
10847 "docs": "Background of the active pagination bullet"
10848 }
10849 ],
10850 "slots": []
10851 },
10852 {
10853 "tag": "ion-spinner",
10854 "filePath": "src/components/spinner/spinner.tsx",
10855 "encapsulation": "shadow",
10856 "readme": "# ion-spinner\n\nThe Spinner component provides a variety of animated SVG spinners. Spinners are visual indicators that the app is loading content or performing another process that the user needs to wait on.\n\nThe default spinner to use is based on the platform. The default spinner for `ios` is `\"lines\"`, and the default for `android` is `\"crescent\"`. If the platform is not `ios` or `android`, the spinner will default to `crescent`. If the `name` property is set, then that spinner will be used instead of the platform specific spinner.\n\n\n",
10857 "docs": "The Spinner component provides a variety of animated SVG spinners. Spinners are visual indicators that the app is loading content or performing another process that the user needs to wait on.\n\nThe default spinner to use is based on the platform. The default spinner for `ios` is `\"lines\"`, and the default for `android` is `\"crescent\"`. If the platform is not `ios` or `android`, the spinner will default to `crescent`. If the `name` property is set, then that spinner will be used instead of the platform specific spinner.",
10858 "docsTags": [],
10859 "usage": {
10860 "angular": "```html\n<!-- Default Spinner -->\n<ion-spinner></ion-spinner>\n\n<!-- Lines -->\n<ion-spinner name=\"lines\"></ion-spinner>\n\n<!-- Lines Small -->\n<ion-spinner name=\"lines-small\"></ion-spinner>\n\n<!-- Dots -->\n<ion-spinner name=\"dots\"></ion-spinner>\n\n<!-- Bubbles -->\n<ion-spinner name=\"bubbles\"></ion-spinner>\n\n<!-- Circles -->\n<ion-spinner name=\"circles\"></ion-spinner>\n\n<!-- Crescent -->\n<ion-spinner name=\"crescent\"></ion-spinner>\n\n<!-- Paused Default Spinner -->\n<ion-spinner paused></ion-spinner>\n```\n",
10861 "javascript": "```html\n<!-- Default Spinner -->\n<ion-spinner></ion-spinner>\n\n<!-- Lines -->\n<ion-spinner name=\"lines\"></ion-spinner>\n\n<!-- Lines Small -->\n<ion-spinner name=\"lines-small\"></ion-spinner>\n\n<!-- Dots -->\n<ion-spinner name=\"dots\"></ion-spinner>\n\n<!-- Bubbles -->\n<ion-spinner name=\"bubbles\"></ion-spinner>\n\n<!-- Circles -->\n<ion-spinner name=\"circles\"></ion-spinner>\n\n<!-- Crescent -->\n<ion-spinner name=\"crescent\"></ion-spinner>\n\n<!-- Paused Default Spinner -->\n<ion-spinner paused></ion-spinner>\n```\n",
10862 "react": "```tsx\nimport React from 'react';\nimport { IonSpinner, IonContent } from '@ionic/react';\n\nexport const SpinnerExample: React.FC = () => (\n <IonContent>\n {/*-- Default Spinner --*/}\n <IonSpinner />\n\n {/*-- Lines --*/}\n <IonSpinner name=\"lines\" />\n\n {/*-- Lines Small --*/}\n <IonSpinner name=\"lines-small\" />\n\n {/*-- Dots --*/}\n <IonSpinner name=\"dots\" />\n\n {/*-- Bubbles --*/}\n <IonSpinner name=\"bubbles\" />\n\n {/*-- Circles --*/}\n <IonSpinner name=\"circles\" />\n\n {/*-- Crescent --*/}\n <IonSpinner name=\"crescent\" />\n\n {/*-- Paused Default Spinner --*/}\n <IonSpinner paused />\n </IonContent>\n);\n```\n",
10863 "vue": "```html\n<template>\n <!-- Default Spinner -->\n <ion-spinner></ion-spinner>\n\n <!-- Lines -->\n <ion-spinner name=\"lines\"></ion-spinner>\n\n <!-- Lines Small -->\n <ion-spinner name=\"lines-small\"></ion-spinner>\n\n <!-- Dots -->\n <ion-spinner name=\"dots\"></ion-spinner>\n\n <!-- Bubbles -->\n <ion-spinner name=\"bubbles\"></ion-spinner>\n\n <!-- Circles -->\n <ion-spinner name=\"circles\"></ion-spinner>\n\n <!-- Crescent -->\n <ion-spinner name=\"crescent\"></ion-spinner>\n\n <!-- Paused Default Spinner -->\n <ion-spinner paused></ion-spinner>\n</template>\n```\n"
10864 },
10865 "props": [
10866 {
10867 "name": "color",
10868 "type": "string | undefined",
10869 "mutable": false,
10870 "attr": "color",
10871 "reflectToAttr": false,
10872 "docs": "The color to use from your application's color palette.\nDefault options are: `\"primary\"`, `\"secondary\"`, `\"tertiary\"`, `\"success\"`, `\"warning\"`, `\"danger\"`, `\"light\"`, `\"medium\"`, and `\"dark\"`.\nFor more information on colors, see [theming](/docs/theming/basics).",
10873 "docsTags": [],
10874 "optional": true,
10875 "required": false
10876 },
10877 {
10878 "name": "duration",
10879 "type": "number | undefined",
10880 "mutable": false,
10881 "attr": "duration",
10882 "reflectToAttr": false,
10883 "docs": "Duration of the spinner animation in milliseconds. The default varies based on the spinner.",
10884 "docsTags": [],
10885 "optional": true,
10886 "required": false
10887 },
10888 {
10889 "name": "name",
10890 "type": "\"bubbles\" | \"circles\" | \"circular\" | \"crescent\" | \"dots\" | \"lines\" | \"lines-small\" | undefined",
10891 "mutable": false,
10892 "attr": "name",
10893 "reflectToAttr": false,
10894 "docs": "The name of the SVG spinner to use. If a name is not provided, the platform's default\nspinner will be used.",
10895 "docsTags": [],
10896 "optional": true,
10897 "required": false
10898 },
10899 {
10900 "name": "paused",
10901 "type": "boolean",
10902 "mutable": false,
10903 "attr": "paused",
10904 "reflectToAttr": false,
10905 "docs": "If `true`, the spinner's animation will be paused.",
10906 "docsTags": [],
10907 "default": "false",
10908 "optional": false,
10909 "required": false
10910 }
10911 ],
10912 "methods": [],
10913 "events": [],
10914 "styles": [
10915 {
10916 "name": "--color",
10917 "annotation": "prop",
10918 "docs": "Color of the spinner"
10919 }
10920 ],
10921 "slots": []
10922 },
10923 {
10924 "tag": "ion-split-pane",
10925 "filePath": "src/components/split-pane/split-pane.tsx",
10926 "encapsulation": "none",
10927 "readme": "# ion-split-pane\n\nA split pane is useful when creating multi-view layouts. It allows UI elements, like menus, to be\ndisplayed as the viewport width increases.\n\nIf the device's screen width is below a certain size, the split pane will collapse and the menu will be hidden. This is ideal for creating an app that will be served in a browser and deployed through the app store to phones and tablets.\n\n\n### Setting Breakpoints\n\nBy default, the split pane will expand when the screen is larger than 992px. To customize this, pass a breakpoint in the `when` property. The `when` property can accept a boolean value, any valid media query, or one of Ionic's predefined sizes.\n\n\n```html\n<!-- can be \"xs\", \"sm\", \"md\", \"lg\", or \"xl\" -->\n<ion-split-pane when=\"md\"></ion-split-pane>\n\n<!-- can be any valid media query https://developer.mozilla.org/en-US/docs/Web/CSS/Media_Queries/Using_media_queries -->\n<ion-split-pane when=\"(min-width: 40px)\"></ion-split-pane>\n```\n\n\n | Size | Value | Description |\n |------|-----------------------|-----------------------------------------------------------------------|\n | `xs` | `(min-width: 0px)` | Show the split-pane when the min-width is 0px (meaning, always) |\n | `sm` | `(min-width: 576px)` | Show the split-pane when the min-width is 576px |\n | `md` | `(min-width: 768px)` | Show the split-pane when the min-width is 768px |\n | `lg` | `(min-width: 992px)` | Show the split-pane when the min-width is 992px (default break point) |\n | `xl` | `(min-width: 1200px)` | Show the split-pane when the min-width is 1200px |\n\n",
10928 "docs": "A split pane is useful when creating multi-view layouts. It allows UI elements, like menus, to be\ndisplayed as the viewport width increases.\n\nIf the device's screen width is below a certain size, the split pane will collapse and the menu will be hidden. This is ideal for creating an app that will be served in a browser and deployed through the app store to phones and tablets.",
10929 "docsTags": [],
10930 "usage": {
10931 "angular": "```html\n<ion-split-pane contentId=\"menu-content\">\n <!-- our side menu -->\n <ion-menu contentId=\"menu-content\">\n <ion-header>\n <ion-toolbar>\n <ion-title>Menu</ion-title>\n </ion-toolbar>\n </ion-header>\n </ion-menu>\n\n <!-- the main content -->\n <ion-router-outlet id=\"menu-content\"></ion-router-outlet>\n</ion-split-pane>\n```\n",
10932 "javascript": "```html\n<ion-split-pane content-id=\"menu-content\">\n <!-- our side menu -->\n <ion-menu content-id=\"menu-content\">\n <ion-header>\n <ion-toolbar>\n <ion-title>Menu</ion-title>\n </ion-toolbar>\n </ion-header>\n </ion-menu>\n\n <!-- the main content -->\n <ion-content id=\"menu-content\">\n <h1>Hello</h1>\n </ion-content>\n</ion-split-pane>\n```\n",
10933 "react": "```tsx\nimport React from 'react';\nimport {\n IonSplitPane,\n IonMenu,\n IonHeader,\n IonToolbar,\n IonTitle,\n IonRouterOutlet,\n IonContent,\n IonPage\n} from '@ionic/react';\n\nexport const SplitPlaneExample: React.SFC<{}> = () => (\n <IonContent>\n <IonSplitPane contentId=\"menuContent\">\n {/*-- our side menu --*/}\n <IonMenu contentId=\"menuContent\">\n <IonHeader>\n <IonToolbar>\n <IonTitle>Menu</IonTitle>\n </IonToolbar>\n </IonHeader>\n </IonMenu>\n\n {/*-- the main content --*/}\n <IonPage id=\"menuContent\"/>\n </IonSplitPane>\n </IonContent>\n);\n```\n",
10934 "vue": "```html\n<template>\n <ion-split-pane contentId=\"menu-content\">\n <!-- our side menu -->\n <ion-menu contentId=\"menu-content\">\n <ion-header>\n <ion-toolbar>\n <ion-title>Menu</ion-title>\n </ion-toolbar>\n </ion-header>\n </ion-menu>\n\n <!-- the main content -->\n <ion-router-outlet id=\"menu-content\"></ion-router-outlet>\n </ion-split-pane>\n</template>\n```\n"
10935 },
10936 "props": [
10937 {
10938 "name": "contentId",
10939 "type": "string | undefined",
10940 "mutable": false,
10941 "attr": "content-id",
10942 "reflectToAttr": false,
10943 "docs": "The content `id` of the split-pane's main content.\nThis property can be used instead of the `[main]` attribute to select the `main`\ncontent of the split-pane.",
10944 "docsTags": [],
10945 "optional": true,
10946 "required": false
10947 },
10948 {
10949 "name": "disabled",
10950 "type": "boolean",
10951 "mutable": false,
10952 "attr": "disabled",
10953 "reflectToAttr": false,
10954 "docs": "If `true`, the split pane will be hidden.",
10955 "docsTags": [],
10956 "default": "false",
10957 "optional": false,
10958 "required": false
10959 },
10960 {
10961 "name": "when",
10962 "type": "boolean | string",
10963 "mutable": false,
10964 "attr": "when",
10965 "reflectToAttr": false,
10966 "docs": "When the split-pane should be shown.\nCan be a CSS media query expression, or a shortcut expression.\nCan also be a boolean expression.",
10967 "docsTags": [],
10968 "default": "QUERY['lg']",
10969 "optional": false,
10970 "required": false
10971 }
10972 ],
10973 "methods": [],
10974 "events": [
10975 {
10976 "event": "ionSplitPaneVisible",
10977 "detail": "{ visible: boolean; }",
10978 "bubbles": true,
10979 "cancelable": true,
10980 "composed": true,
10981 "docs": "Expression to be called when the split-pane visibility has changed",
10982 "docsTags": []
10983 }
10984 ],
10985 "styles": [
10986 {
10987 "name": "--border",
10988 "annotation": "prop",
10989 "docs": "Border between panes"
10990 }
10991 ],
10992 "slots": []
10993 },
10994 {
10995 "tag": "ion-tab",
10996 "filePath": "src/components/tab/tab.tsx",
10997 "encapsulation": "shadow",
10998 "readme": "# ion-tab\n\nThe tab component is a child component of [tabs](../tabs). Each tab can contain a top level navigation stack for an app or a single view. An app can have many tabs, all with their own independent navigation.\n\nSee the [tabs documentation](../tabs/) for more details on configuring tabs.\n\n",
10999 "docs": "The tab component is a child component of [tabs](../tabs). Each tab can contain a top level navigation stack for an app or a single view. An app can have many tabs, all with their own independent navigation.\n\nSee the [tabs documentation](../tabs/) for more details on configuring tabs.",
11000 "docsTags": [],
11001 "usage": {},
11002 "props": [
11003 {
11004 "name": "component",
11005 "type": "Function | HTMLElement | null | string | undefined",
11006 "mutable": false,
11007 "attr": "component",
11008 "reflectToAttr": false,
11009 "docs": "The component to display inside of the tab.",
11010 "docsTags": [],
11011 "optional": true,
11012 "required": false
11013 },
11014 {
11015 "name": "tab",
11016 "type": "string",
11017 "mutable": false,
11018 "attr": "tab",
11019 "reflectToAttr": false,
11020 "docs": "A tab id must be provided for each `ion-tab`. It's used internally to reference\nthe selected tab or by the router to switch between them.",
11021 "docsTags": [],
11022 "optional": false,
11023 "required": true
11024 }
11025 ],
11026 "methods": [
11027 {
11028 "name": "setActive",
11029 "returns": {
11030 "type": "Promise<void>",
11031 "docs": ""
11032 },
11033 "signature": "setActive() => Promise<void>",
11034 "parameters": [],
11035 "docs": "Set the active component for the tab",
11036 "docsTags": []
11037 }
11038 ],
11039 "events": [],
11040 "styles": [],
11041 "slots": []
11042 },
11043 {
11044 "tag": "ion-tab-bar",
11045 "filePath": "src/components/tab-bar/tab-bar.tsx",
11046 "encapsulation": "shadow",
11047 "readme": "# ion-tab-bar\n\nThe tab bar is a UI component that contains a set of [tab buttons](../tab-button). A tab bar must be provided inside of [tabs](../tabs) to communicate with each [tab](../tab).\n\n",
11048 "docs": "The tab bar is a UI component that contains a set of [tab buttons](../tab-button). A tab bar must be provided inside of [tabs](../tabs) to communicate with each [tab](../tab).",
11049 "docsTags": [
11050 {
11051 "text": "{\"ios\" | \"md\"} mode - The mode determines which platform styles to use.",
11052 "name": "virtualProp"
11053 }
11054 ],
11055 "usage": {
11056 "angular": "```html\n<ion-tabs>\n <!-- Tab bar -->\n <ion-tab-bar slot=\"bottom\">\n <ion-tab-button tab=\"account\">\n <ion-icon name=\"person\"></ion-icon>\n </ion-tab-button>\n <ion-tab-button tab=\"contact\">\n <ion-icon name=\"call\"></ion-icon>\n </ion-tab-button>\n <ion-tab-button tab=\"settings\">\n <ion-icon name=\"settings\"></ion-icon>\n </ion-tab-button>\n </ion-tab-bar>\n</ion-tabs>\n```",
11057 "javascript": "```html\n<ion-tabs>\n <!-- Tab views -->\n <ion-tab tab=\"account\"></ion-tab>\n <ion-tab tab=\"contact\"></ion-tab>\n <ion-tab tab=\"settings\"></ion-tab>\n\n <!-- Tab bar -->\n <ion-tab-bar slot=\"bottom\">\n <ion-tab-button tab=\"account\">\n <ion-icon name=\"person\"></ion-icon>\n </ion-tab-button>\n <ion-tab-button tab=\"contact\">\n <ion-icon name=\"call\"></ion-icon>\n </ion-tab-button>\n <ion-tab-button tab=\"settings\">\n <ion-icon name=\"settings\"></ion-icon>\n </ion-tab-button>\n </ion-tab-bar>\n</ion-tabs>\n```",
11058 "react": "```tsx\nimport React from 'react';\nimport { IonTabs, IonTabBar, IonTabButton, IonIcon, IonContent } from '@ionic/react';\n\nexport const TabBarExample: React.FC = () => (\n <IonContent>\n <IonTabs>\n {/*-- Tab bar --*/}\n <IonTabBar slot=\"bottom\">\n <IonTabButton tab=\"account\">\n <IonIcon name=\"person\" />\n </IonTabButton>\n <IonTabButton tab=\"contact\">\n <IonIcon name=\"call\" />\n </IonTabButton>\n <IonTabButton tab=\"settings\">\n <IonIcon name=\"settings\" />\n </IonTabButton>\n </IonTabBar>\n </IonTabs>\n </IonContent>\n);\n```\n",
11059 "vue": "```html\n<template>\n <ion-tabs>\n <!-- Tab bar -->\n <ion-tab-bar slot=\"bottom\">\n <ion-tab-button tab=\"account\">\n <ion-icon name=\"person\"></ion-icon>\n </ion-tab-button>\n <ion-tab-button tab=\"contact\">\n <ion-icon name=\"call\"></ion-icon>\n </ion-tab-button>\n <ion-tab-button tab=\"settings\">\n <ion-icon name=\"settings\"></ion-icon>\n </ion-tab-button>\n </ion-tab-bar>\n </ion-tabs>\n</template>\n```"
11060 },
11061 "props": [
11062 {
11063 "name": "color",
11064 "type": "string | undefined",
11065 "mutable": false,
11066 "attr": "color",
11067 "reflectToAttr": false,
11068 "docs": "The color to use from your application's color palette.\nDefault options are: `\"primary\"`, `\"secondary\"`, `\"tertiary\"`, `\"success\"`, `\"warning\"`, `\"danger\"`, `\"light\"`, `\"medium\"`, and `\"dark\"`.\nFor more information on colors, see [theming](/docs/theming/basics).",
11069 "docsTags": [],
11070 "optional": true,
11071 "required": false
11072 },
11073 {
11074 "name": "mode",
11075 "type": "\"ios\" | \"md\"",
11076 "mutable": false,
11077 "attr": "mode",
11078 "reflectToAttr": false,
11079 "docs": "The mode determines which platform styles to use.",
11080 "docsTags": [],
11081 "optional": true,
11082 "required": false
11083 },
11084 {
11085 "name": "selectedTab",
11086 "type": "string | undefined",
11087 "mutable": false,
11088 "attr": "selected-tab",
11089 "reflectToAttr": false,
11090 "docs": "The selected tab component",
11091 "docsTags": [],
11092 "optional": true,
11093 "required": false
11094 },
11095 {
11096 "name": "translucent",
11097 "type": "boolean",
11098 "mutable": false,
11099 "attr": "translucent",
11100 "reflectToAttr": false,
11101 "docs": "If `true`, the tab bar will be translucent.\nOnly applies when the mode is `\"ios\"` and the device supports\n[`backdrop-filter`](https://developer.mozilla.org/en-US/docs/Web/CSS/backdrop-filter#Browser_compatibility).",
11102 "docsTags": [],
11103 "default": "false",
11104 "optional": false,
11105 "required": false
11106 }
11107 ],
11108 "methods": [],
11109 "events": [],
11110 "styles": [
11111 {
11112 "name": "--background",
11113 "annotation": "prop",
11114 "docs": "Background of the tab bar"
11115 },
11116 {
11117 "name": "--border",
11118 "annotation": "prop",
11119 "docs": "Border of the tab bar"
11120 },
11121 {
11122 "name": "--color",
11123 "annotation": "prop",
11124 "docs": "Color of the tab bar"
11125 }
11126 ],
11127 "slots": []
11128 },
11129 {
11130 "tag": "ion-tab-button",
11131 "filePath": "src/components/tab-button/tab-button.tsx",
11132 "encapsulation": "shadow",
11133 "readme": "# ion-tab-button\n\nA tab button is a UI component that is placed inside of a [tab bar](../tab-bar). The tab button can specify the layout of the icon and label and connect to a [tab view](../tab).\n\nSee the [tabs documentation](../tabs) for more details on configuring tabs.\n\n",
11134 "docs": "A tab button is a UI component that is placed inside of a [tab bar](../tab-bar). The tab button can specify the layout of the icon and label and connect to a [tab view](../tab).\n\nSee the [tabs documentation](../tabs) for more details on configuring tabs.",
11135 "docsTags": [
11136 {
11137 "text": "{\"ios\" | \"md\"} mode - The mode determines which platform styles to use.",
11138 "name": "virtualProp"
11139 }
11140 ],
11141 "usage": {
11142 "angular": "```html\n<ion-tabs>\n\n <ion-tab-bar slot=\"bottom\">\n <ion-tab-button tab=\"schedule\">\n <ion-icon name=\"calendar\"></ion-icon>\n <ion-label>Schedule</ion-label>\n </ion-tab-button>\n\n <ion-tab-button tab=\"speakers\">\n <ion-icon name=\"contacts\"></ion-icon>\n <ion-label>Speakers</ion-label>\n </ion-tab-button>\n\n <ion-tab-button tab=\"map\">\n <ion-icon name=\"map\"></ion-icon>\n <ion-label>Map</ion-label>\n </ion-tab-button>\n\n <ion-tab-button tab=\"about\">\n <ion-icon name=\"information-circle\"></ion-icon>\n <ion-label>About</ion-label>\n </ion-tab-button>\n </ion-tab-bar>\n\n</ion-tabs>\n```\n",
11143 "javascript": "```html\n<ion-tabs>\n\n <ion-tab-bar slot=\"bottom\">\n <ion-tab-button tab=\"schedule\" href=\"/app/tabs/(schedule:schedule)\">\n <ion-icon name=\"calendar\"></ion-icon>\n <ion-label>Schedule</ion-label>\n </ion-tab-button>\n\n <ion-tab-button tab=\"speakers\" href=\"/app/tabs/(speakers:speakers)\">\n <ion-icon name=\"contacts\"></ion-icon>\n <ion-label>Speakers</ion-label>\n </ion-tab-button>\n\n <ion-tab-button tab=\"map\" href=\"/app/tabs/(map:map)\">\n <ion-icon name=\"map\"></ion-icon>\n <ion-label>Map</ion-label>\n </ion-tab-button>\n\n <ion-tab-button tab=\"about\" href=\"/app/tabs/(about:about)\">\n <ion-icon name=\"information-circle\"></ion-icon>\n <ion-label>About</ion-label>\n </ion-tab-button>\n </ion-tab-bar>\n\n <ion-tab tab=\"schedule\">\n <ion-router-outlet name=\"schedule\"></ion-router-outlet>\n </ion-tab>\n\n <ion-tab tab=\"speakers\">\n <ion-router-outlet name=\"speakers\"></ion-router-outlet>\n </ion-tab>\n\n <ion-tab tab=\"map\">\n <ion-router-outlet name=\"map\"></ion-router-outlet>\n </ion-tab>\n\n <ion-tab tab=\"about\">\n <ion-router-outlet name=\"about\"></ion-router-outlet>\n </ion-tab>\n\n</ion-tabs>\n```\n",
11144 "react": "```tsx\nimport React from 'react';\nimport { IonTabs, IonTabBar, IonTabButton, IonIcon, IonLabel, IonContent } from '@ionic/react';\n\nexport const TabButtonExample: React.FC = () => (\n <IonContent>\n <IonTabs>\n <IonTabBar slot=\"bottom\">\n <IonTabButton tab=\"schedule\">\n <IonIcon name=\"calendar\" />\n <IonLabel>Schedule</IonLabel>\n </IonTabButton>\n\n <IonTabButton tab=\"speakers\">\n <IonIcon name=\"contacts\" />\n <IonLabel>Speakers</IonLabel>\n </IonTabButton>\n\n <IonTabButton tab=\"map\">\n <IonIcon name=\"map\" />\n <IonLabel>Map</IonLabel>\n </IonTabButton>\n\n <IonTabButton tab=\"about\">\n <IonIcon name=\"information-circle\" />\n <IonLabel>About</IonLabel>\n </IonTabButton>\n </IonTabBar>\n </IonTabs>\n </IonContent>\n);\n```\n",
11145 "vue": "```html\n<template>\n <ion-tabs>\n\n <ion-tab-bar slot=\"bottom\">\n <ion-tab-button tab=\"schedule\">\n <ion-icon name=\"calendar\"></ion-icon>\n <ion-label>Schedule</ion-label>\n </ion-tab-button>\n\n <ion-tab-button tab=\"speakers\">\n <ion-icon name=\"contacts\"></ion-icon>\n <ion-label>Speakers</ion-label>\n </ion-tab-button>\n\n <ion-tab-button tab=\"map\">\n <ion-icon name=\"map\"></ion-icon>\n <ion-label>Map</ion-label>\n </ion-tab-button>\n\n <ion-tab-button tab=\"about\">\n <ion-icon name=\"information-circle\"></ion-icon>\n <ion-label>About</ion-label>\n </ion-tab-button>\n </ion-tab-bar>\n\n </ion-tabs>\n</template>\n```\n"
11146 },
11147 "props": [
11148 {
11149 "name": "disabled",
11150 "type": "boolean",
11151 "mutable": false,
11152 "attr": "disabled",
11153 "reflectToAttr": false,
11154 "docs": "If `true`, the user cannot interact with the tab button.",
11155 "docsTags": [],
11156 "default": "false",
11157 "optional": false,
11158 "required": false
11159 },
11160 {
11161 "name": "download",
11162 "type": "string | undefined",
11163 "mutable": false,
11164 "attr": "download",
11165 "reflectToAttr": false,
11166 "docs": "This attribute instructs browsers to download a URL instead of navigating to\nit, so the user will be prompted to save it as a local file. If the attribute\nhas a value, it is used as the pre-filled file name in the Save prompt\n(the user can still change the file name if they want).",
11167 "docsTags": [],
11168 "optional": false,
11169 "required": false
11170 },
11171 {
11172 "name": "href",
11173 "type": "string | undefined",
11174 "mutable": false,
11175 "attr": "href",
11176 "reflectToAttr": false,
11177 "docs": "Contains a URL or a URL fragment that the hyperlink points to.\nIf this property is set, an anchor tag will be rendered.",
11178 "docsTags": [],
11179 "optional": false,
11180 "required": false
11181 },
11182 {
11183 "name": "layout",
11184 "type": "\"icon-bottom\" | \"icon-end\" | \"icon-hide\" | \"icon-start\" | \"icon-top\" | \"label-hide\" | undefined",
11185 "mutable": true,
11186 "attr": "layout",
11187 "reflectToAttr": false,
11188 "docs": "Set the layout of the text and icon in the tab bar.\nIt defaults to `'icon-top'`.",
11189 "docsTags": [],
11190 "optional": true,
11191 "required": false
11192 },
11193 {
11194 "name": "mode",
11195 "type": "\"ios\" | \"md\"",
11196 "mutable": false,
11197 "attr": "mode",
11198 "reflectToAttr": false,
11199 "docs": "The mode determines which platform styles to use.",
11200 "docsTags": [],
11201 "optional": true,
11202 "required": false
11203 },
11204 {
11205 "name": "rel",
11206 "type": "string | undefined",
11207 "mutable": false,
11208 "attr": "rel",
11209 "reflectToAttr": false,
11210 "docs": "Specifies the relationship of the target object to the link object.\nThe value is a space-separated list of [link types](https://developer.mozilla.org/en-US/docs/Web/HTML/Link_types).",
11211 "docsTags": [],
11212 "optional": false,
11213 "required": false
11214 },
11215 {
11216 "name": "selected",
11217 "type": "boolean",
11218 "mutable": true,
11219 "attr": "selected",
11220 "reflectToAttr": false,
11221 "docs": "The selected tab component",
11222 "docsTags": [],
11223 "default": "false",
11224 "optional": false,
11225 "required": false
11226 },
11227 {
11228 "name": "tab",
11229 "type": "string | undefined",
11230 "mutable": false,
11231 "attr": "tab",
11232 "reflectToAttr": false,
11233 "docs": "A tab id must be provided for each `ion-tab`. It's used internally to reference\nthe selected tab or by the router to switch between them.",
11234 "docsTags": [],
11235 "optional": true,
11236 "required": false
11237 },
11238 {
11239 "name": "target",
11240 "type": "string | undefined",
11241 "mutable": false,
11242 "attr": "target",
11243 "reflectToAttr": false,
11244 "docs": "Specifies where to display the linked URL.\nOnly applies when an `href` is provided.\nSpecial keywords: `\"_blank\"`, `\"_self\"`, `\"_parent\"`, `\"_top\"`.",
11245 "docsTags": [],
11246 "optional": false,
11247 "required": false
11248 }
11249 ],
11250 "methods": [],
11251 "events": [],
11252 "styles": [
11253 {
11254 "name": "--background",
11255 "annotation": "prop",
11256 "docs": "Background of the tab button"
11257 },
11258 {
11259 "name": "--background-focused",
11260 "annotation": "prop",
11261 "docs": "Background of the tab button when focused with the tab key"
11262 },
11263 {
11264 "name": "--color",
11265 "annotation": "prop",
11266 "docs": "Color of the tab button"
11267 },
11268 {
11269 "name": "--color-selected",
11270 "annotation": "prop",
11271 "docs": "Color of the selected tab button"
11272 },
11273 {
11274 "name": "--padding-bottom",
11275 "annotation": "prop",
11276 "docs": "Bottom padding of the tab button"
11277 },
11278 {
11279 "name": "--padding-end",
11280 "annotation": "prop",
11281 "docs": "Right padding if direction is left-to-right, and left padding if direction is right-to-left of the tab button"
11282 },
11283 {
11284 "name": "--padding-start",
11285 "annotation": "prop",
11286 "docs": "Left padding if direction is left-to-right, and right padding if direction is right-to-left of the tab button"
11287 },
11288 {
11289 "name": "--padding-top",
11290 "annotation": "prop",
11291 "docs": "Top padding of the tab button"
11292 },
11293 {
11294 "name": "--ripple-color",
11295 "annotation": "prop",
11296 "docs": "Color of the button ripple effect"
11297 }
11298 ],
11299 "slots": []
11300 },
11301 {
11302 "tag": "ion-tabs",
11303 "filePath": "src/components/tabs/tabs.tsx",
11304 "encapsulation": "shadow",
11305 "readme": "# ion-tabs\n\nTabs are a top level navigation component to implement a tab-based navigation.\nThe component is a container of individual [Tab](../tab/) components.\n\nThe `ion-tabs` component does not have any styling and works as a router outlet in order to handle navigation. It does not provide any UI feedback or mechanism to switch between tabs. In order to do so, an `ion-tab-bar` should be provided as a direct child of `ion-tabs`.\n\nBoth `ion-tabs` and `ion-tab-bar` can be used as standalone elements. They don’t depend on each other to work, but they are usually used together in order to implement a tab-based navigation that behaves like a native app.\n\nThe `ion-tab-bar` needs a slot defined in order to be projected to the right place in an `ion-tabs` component.\n\n",
11306 "docs": "Tabs are a top level navigation component to implement a tab-based navigation.\nThe component is a container of individual [Tab](../tab/) components.\n\nThe `ion-tabs` component does not have any styling and works as a router outlet in order to handle navigation. It does not provide any UI feedback or mechanism to switch between tabs. In order to do so, an `ion-tab-bar` should be provided as a direct child of `ion-tabs`.\n\nBoth `ion-tabs` and `ion-tab-bar` can be used as standalone elements. They don’t depend on each other to work, but they are usually used together in order to implement a tab-based navigation that behaves like a native app.\n\nThe `ion-tab-bar` needs a slot defined in order to be projected to the right place in an `ion-tabs` component.",
11307 "docsTags": [
11308 {
11309 "text": "- Content is placed between the named slots if provided without a slot.",
11310 "name": "slot"
11311 },
11312 {
11313 "text": "top - Content is placed at the top of the screen.",
11314 "name": "slot"
11315 },
11316 {
11317 "text": "bottom - Content is placed at the bottom of the screen.",
11318 "name": "slot"
11319 }
11320 ],
11321 "usage": {
11322 "angular": "```html\n<ion-tabs>\n <ion-tab-bar slot=\"bottom\">\n <ion-tab-button tab=\"schedule\">\n <ion-icon name=\"calendar\"></ion-icon>\n <ion-label>Schedule</ion-label>\n <ion-badge>6</ion-badge>\n </ion-tab-button>\n\n <ion-tab-button tab=\"speakers\">\n <ion-icon name=\"contacts\"></ion-icon>\n <ion-label>Speakers</ion-label>\n </ion-tab-button>\n\n <ion-tab-button tab=\"map\">\n <ion-icon name=\"map\"></ion-icon>\n <ion-label>Map</ion-label>\n </ion-tab-button>\n\n <ion-tab-button tab=\"about\">\n <ion-icon name=\"information-circle\"></ion-icon>\n <ion-label>About</ion-label>\n </ion-tab-button>\n </ion-tab-bar>\n</ion-tabs>\n```\n\n\n### Router integration\n\nWhen used with Angular's router the `tab` property of the `ion-tab-button` should be a reference to the route path.\n\n```html\n<ion-tabs>\n <ion-tab-bar slot=\"bottom\">\n <ion-tab-button tab=\"schedule\">\n <ion-icon name=\"calendar\"></ion-icon>\n <ion-label>Schedule</ion-label>\n </ion-tab-button>\n </ion-tab-bar>\n</ion-tabs>\n```\n\n```typescript\nimport { Routes } from '@angular/router';\nimport { TabsPage } from './tabs-page';\n\nconst routes: Routes = [\n {\n path: 'tabs',\n component: TabsPage,\n children: [\n {\n path: 'schedule',\n children: [\n {\n path: '',\n loadChildren: '../schedule/schedule.module#ScheduleModule'\n }\n ]\n },\n {\n path: '',\n redirectTo: '/app/tabs/schedule',\n pathMatch: 'full'\n }\n ]\n }\n];\n```\n",
11323 "javascript": "```html\n<ion-tabs>\n\n <ion-tab tab=\"tab-schedule\">\n <ion-nav></ion-nav>\n </ion-tab>\n\n <ion-tab tab=\"tab-speaker\">\n <ion-nav></ion-nav>\n </ion-tab>\n\n <ion-tab tab=\"tab-map\" component=\"page-map\">\n <ion-nav></ion-nav>\n </ion-tab>\n\n <ion-tab tab=\"tab-about\" component=\"page-about\">\n <ion-nav></ion-nav>\n </ion-tab>\n\n <ion-tab-bar slot=\"bottom\">\n <ion-tab-button tab=\"tab-schedule\">\n <ion-icon name=\"calendar\"></ion-icon>\n <ion-label>Schedule</ion-label>\n <ion-badge>6</ion-badge>\n </ion-tab-button>\n\n <ion-tab-button tab=\"tab-speaker\">\n <ion-icon name=\"contacts\"></ion-icon>\n <ion-label>Speakers</ion-label>\n </ion-tab-button>\n\n <ion-tab-button tab=\"tab-map\">\n <ion-icon name=\"map\"></ion-icon>\n <ion-label>Map</ion-label>\n </ion-tab-button>\n\n <ion-tab-button tab=\"tab-about\">\n <ion-icon name=\"information-circle\"></ion-icon>\n <ion-label>About</ion-label>\n </ion-tab-button>\n </ion-tab-bar>\n\n</ion-tabs>\n```\n\n\n## Activating Tabs\n\nEach `ion-tab-button` will activate one of the tabs when pressed. In order to link the `ion-tab-button` to the `ion-tab` container, a matching `tab` property should be set on each component.\n\n```html\n<ion-tab tab=\"settings\">\n ...\n</ion-tab>\n\n<ion-tab-button tab=\"settings\">\n ...\n</ion-tab-button>\n```\n\nThe `ion-tab-button` and `ion-tab` above are linked by the common `tab` property.\n\nThe `tab` property identifies each tab, and it has to be unique within the `ion-tabs`. It's important to always set the `tab` property on the `ion-tab` and `ion-tab-button`, even if one component is not used.\n\n\n### Router integration\n\nWhen used with Ionic's router (`ion-router`) the `tab` property of the `ion-tab` matches the `component` property of an `ion-route`.\n\nThe following route within the scope of an `ion-tabs` outlet:\n\n```html\n<ion-route url=\"/settings-page\" component=\"settings\"></ion-route>\n```\n\nwill match the following tab:\n\n```html\n<ion-tab tab=\"settings\" component=\"settings-component\"></ion-tab>\n```",
11324 "react": "```tsx\nimport React from 'react';\nimport { IonTabs, IonTabBar, IonTabButton, IonIcon, IonLabel, IonBadge } from '@ionic/react';\n\nexport const TabsExample: React.FC = () => (\n <IonTabs>\n <IonTabBar slot=\"bottom\">\n <IonTabButton tab=\"schedule\">\n <IonIcon name=\"calendar\" />\n <IonLabel>Schedule</IonLabel>\n <IonBadge>6</IonBadge>\n </IonTabButton>\n\n <IonTabButton tab=\"speakers\">\n <IonIcon name=\"contacts\" />\n <IonLabel>Speakers</IonLabel>\n </IonTabButton>\n\n <IonTabButton tab=\"map\">\n <IonIcon name=\"map\" />\n <IonLabel>Map</IonLabel>\n </IonTabButton>\n\n <IonTabButton tab=\"about\">\n <IonIcon name=\"information-circle\" />\n <IonLabel>About</IonLabel>\n </IonTabButton>\n </IonTabBar>\n </IonTabs>\n);\n```\n",
11325 "vue": "```html\n<template>\n <!-- Listen to before and after tab change events -->\n <ion-tabs @IonTabsWillChange=\"beforeTabChange\" @IonTabsDidChange=\"afterTabChange\">\n <ion-tab tab=\"schedule\">\n <Schedule />\n </ion-tab>\n\n <!-- Match by \"app.speakers\" route name -->\n <ion-tab tab=\"speakers\" :routes=\"'app.speakers'\">\n <Speakers />\n </ion-tab>\n\n <!-- Match by an array of route names -->\n <ion-tab tab=\"map\" :routes=\"['app.map', 'app.other.route']\">\n <Map />\n </ion-tab>\n\n <!-- Get matched routes with a helper method -->\n <ion-tab tab=\"about\" :routes=\"getMatchedRoutes\">\n <About />\n </ion-tab>\n\n <!-- Use v-slot:bottom with Vue ^2.6.0 -->\n <template slot=\"bottom\">\n <ion-tab-bar>\n <ion-tab-button tab=\"schedule\">\n <ion-icon name=\"calendar\"></ion-icon>\n <ion-label>Schedule</ion-label>\n <ion-badge>6</ion-badge>\n </ion-tab-button>\n\n <!-- Provide a custom route to navigate to -->\n <ion-tab-button tab=\"speakers\" :to=\"{ name: 'app.speakers' }\">\n <ion-icon name=\"contacts\"></ion-icon>\n <ion-label>Speakers</ion-label>\n </ion-tab-button>\n\n <!-- Provide extra data to route -->\n <ion-tab-button tab=\"map\" :to=\"{ name: 'app.map', params: { mode: 'dark' } }\">\n <ion-icon name=\"map\"></ion-icon>\n <ion-label>Map</ion-label>\n </ion-tab-button>\n\n <!-- Provide custom click handler -->\n <ion-tab-button tab=\"about\" @click=\"goToAboutTab\">\n <ion-icon name=\"information-circle\"></ion-icon>\n <ion-label>About</ion-label>\n </ion-tab-button>\n </ion-tab-bar>\n </template>\n </ion-tabs>\n</template>\n```\n"
11326 },
11327 "props": [],
11328 "methods": [
11329 {
11330 "name": "getSelected",
11331 "returns": {
11332 "type": "Promise<string | undefined>",
11333 "docs": ""
11334 },
11335 "signature": "getSelected() => Promise<string | undefined>",
11336 "parameters": [],
11337 "docs": "Get the currently selected tab.",
11338 "docsTags": []
11339 },
11340 {
11341 "name": "getTab",
11342 "returns": {
11343 "type": "Promise<HTMLIonTabElement | undefined>",
11344 "docs": ""
11345 },
11346 "signature": "getTab(tab: string | HTMLIonTabElement) => Promise<HTMLIonTabElement | undefined>",
11347 "parameters": [],
11348 "docs": "Get a specific tab by the value of its `tab` property or an element reference.",
11349 "docsTags": [
11350 {
11351 "name": "param",
11352 "text": "tab The tab instance to select. If passed a string, it should be the value of the tab's `tab` property."
11353 }
11354 ]
11355 },
11356 {
11357 "name": "select",
11358 "returns": {
11359 "type": "Promise<boolean>",
11360 "docs": ""
11361 },
11362 "signature": "select(tab: string | HTMLIonTabElement) => Promise<boolean>",
11363 "parameters": [],
11364 "docs": "Select a tab by the value of its `tab` property or an element reference.",
11365 "docsTags": [
11366 {
11367 "name": "param",
11368 "text": "tab The tab instance to select. If passed a string, it should be the value of the tab's `tab` property."
11369 }
11370 ]
11371 }
11372 ],
11373 "events": [
11374 {
11375 "event": "ionTabsDidChange",
11376 "detail": "{ tab: string; }",
11377 "bubbles": false,
11378 "cancelable": true,
11379 "composed": true,
11380 "docs": "Emitted when the navigation has finished transitioning to a new component.",
11381 "docsTags": []
11382 },
11383 {
11384 "event": "ionTabsWillChange",
11385 "detail": "{ tab: string; }",
11386 "bubbles": false,
11387 "cancelable": true,
11388 "composed": true,
11389 "docs": "Emitted when the navigation is about to transition to a new component.",
11390 "docsTags": []
11391 }
11392 ],
11393 "styles": [],
11394 "slots": [
11395 {
11396 "name": "",
11397 "docs": "Content is placed between the named slots if provided without a slot."
11398 },
11399 {
11400 "name": "bottom",
11401 "docs": "Content is placed at the bottom of the screen."
11402 },
11403 {
11404 "name": "top",
11405 "docs": "Content is placed at the top of the screen."
11406 }
11407 ]
11408 },
11409 {
11410 "tag": "ion-text",
11411 "filePath": "src/components/text/text.tsx",
11412 "encapsulation": "shadow",
11413 "readme": "# ion-text\n\nThe text component is a simple component that can be used to style the text color of any element. The `ion-text` element should wrap the element in order to change the text color of that element.\n\n",
11414 "docs": "The text component is a simple component that can be used to style the text color of any element. The `ion-text` element should wrap the element in order to change the text color of that element.",
11415 "docsTags": [
11416 {
11417 "text": "{\"ios\" | \"md\"} mode - The mode determines which platform styles to use.",
11418 "name": "virtualProp"
11419 }
11420 ],
11421 "usage": {
11422 "javascript": "```html\n<ion-text color=\"secondary\">\n <h1>H1: The quick brown fox jumps over the lazy dog</h1>\n</ion-text>\n\n<ion-text color=\"primary\">\n <h2>H2: The quick brown fox jumps over the lazy dog</h2>\n</ion-text>\n\n<ion-text color=\"light\">\n <h3>H3: The quick brown fox jumps over the lazy dog</h3>\n</ion-text>\n\n<ion-text color=\"danger\">\n <h4 >H4: The quick brown fox jumps over the lazy dog</h4>\n</ion-text>\n\n<ion-text color=\"dark\">\n <h5>H5: The quick brown fox jumps over the lazy dog</h5>\n</ion-text>\n\n<p>\n I saw a werewolf with a Chinese menu in his hand.\n Walking through the <ion-text color=\"danger\"><sub>streets</sub></ion-text> of Soho in the rain.\n He <ion-text color=\"primary\"><i>was</i></ion-text> looking for a place called Lee Ho Fook's.\n Gonna get a <ion-text color=\"secondary\"><a>big dish of beef chow mein.</a></ion-text>\n <ion-text color=\"danger\"><ion-icon name=\"cut\"></ion-icon></ion-text>\n</p>\n```"
11423 },
11424 "props": [
11425 {
11426 "name": "color",
11427 "type": "string | undefined",
11428 "mutable": false,
11429 "attr": "color",
11430 "reflectToAttr": false,
11431 "docs": "The color to use from your application's color palette.\nDefault options are: `\"primary\"`, `\"secondary\"`, `\"tertiary\"`, `\"success\"`, `\"warning\"`, `\"danger\"`, `\"light\"`, `\"medium\"`, and `\"dark\"`.\nFor more information on colors, see [theming](/docs/theming/basics).",
11432 "docsTags": [],
11433 "optional": true,
11434 "required": false
11435 },
11436 {
11437 "name": "mode",
11438 "type": "\"ios\" | \"md\"",
11439 "mutable": false,
11440 "attr": "mode",
11441 "reflectToAttr": false,
11442 "docs": "The mode determines which platform styles to use.",
11443 "docsTags": [],
11444 "optional": true,
11445 "required": false
11446 }
11447 ],
11448 "methods": [],
11449 "events": [],
11450 "styles": [],
11451 "slots": []
11452 },
11453 {
11454 "tag": "ion-textarea",
11455 "filePath": "src/components/textarea/textarea.tsx",
11456 "encapsulation": "scoped",
11457 "readme": "# ion-textarea\n\nThe textarea component is used for multi-line text input. A native textarea element is rendered inside of the component. The user experience and interactivity of the textarea component is improved by having control over the native textarea.\n\nUnlike the native textarea element, the Ionic textarea does not support loading its value from the inner content. The textarea value should be set in the `value` attribute.\n\nThe textarea component accepts the [native textarea attributes](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/textarea) in addition to the Ionic properties.\n\n\n",
11458 "docs": "The textarea component is used for multi-line text input. A native textarea element is rendered inside of the component. The user experience and interactivity of the textarea component is improved by having control over the native textarea.\n\nUnlike the native textarea element, the Ionic textarea does not support loading its value from the inner content. The textarea value should be set in the `value` attribute.\n\nThe textarea component accepts the [native textarea attributes](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/textarea) in addition to the Ionic properties.",
11459 "docsTags": [
11460 {
11461 "text": "{\"ios\" | \"md\"} mode - The mode determines which platform styles to use.",
11462 "name": "virtualProp"
11463 }
11464 ],
11465 "usage": {
11466 "angular": "```html\n<!-- Default textarea -->\n<ion-textarea></ion-textarea>\n\n<!-- Textarea in an item with a placeholder -->\n<ion-item>\n <ion-textarea placeholder=\"Enter more information here...\"></ion-textarea>\n</ion-item>\n\n<!-- Textarea in an item with a floating label -->\n<ion-item>\n <ion-label position=\"floating\">Description</ion-label>\n <ion-textarea></ion-textarea>\n</ion-item>\n\n<!-- Disabled and readonly textarea in an item with a stacked label -->\n<ion-item>\n <ion-label position=\"stacked\">Summary</ion-label>\n <ion-textarea\n disabled\n readonly\n value=\"Ionic enables developers to build performant, high-quality mobile apps.\">\n </ion-textarea>\n</ion-item>\n\n<!-- Textarea that clears the value on edit -->\n<ion-item>\n <ion-label>Comment</ion-label>\n <ion-textarea clearOnEdit=\"true\"></ion-textarea>\n</ion-item>\n\n<!-- Textarea with custom number of rows and cols -->\n<ion-item>\n <ion-label>Notes</ion-label>\n <ion-textarea rows=\"6\" cols=\"20\" placeholder=\"Enter any notes here...\"></ion-textarea>\n</ion-item>\n```\n",
11467 "javascript": "```html\n<!-- Default textarea -->\n<ion-textarea></ion-textarea>\n\n<!-- Textarea in an item with a placeholder -->\n<ion-item>\n <ion-textarea placeholder=\"Enter more information here...\"></ion-textarea>\n</ion-item>\n\n<!-- Textarea in an item with a floating label -->\n<ion-item>\n <ion-label position=\"floating\">Description</ion-label>\n <ion-textarea></ion-textarea>\n</ion-item>\n\n<!-- Disabled and readonly textarea in an item with a stacked label -->\n<ion-item>\n <ion-label position=\"stacked\">Summary</ion-label>\n <ion-textarea\n disabled\n readonly\n value=\"Ionic enables developers to build performant, high-quality mobile apps.\">\n </ion-textarea>\n</ion-item>\n\n<!-- Textarea that clears the value on edit -->\n<ion-item>\n <ion-label>Comment</ion-label>\n <ion-textarea clear-on-edit=\"true\"></ion-textarea>\n</ion-item>\n\n<!-- Textarea with custom number of rows and cols -->\n<ion-item>\n <ion-label>Notes</ion-label>\n <ion-textarea rows=\"6\" cols=\"20\" placeholder=\"Enter any notes here...\"></ion-textarea>\n</ion-item>\n```\n",
11468 "react": "```tsx\nimport React from 'react';\nimport { IonTextarea, IonItem, IonLabel, IonContent } from '@ionic/react';\n\nexport const TextAreaExample: React.FC = () => (\n <IonContent>\n {/*-- Default textarea --*/}\n <IonTextarea></IonTextarea>\n\n {/*-- Textarea in an item with a placeholder --*/}\n <IonItem>\n <IonTextarea placeholder=\"Enter more information here...\"></IonTextarea>\n </IonItem>\n\n {/*-- Textarea in an item with a floating label --*/}\n <IonItem>\n <IonLabel position=\"floating\">Description</IonLabel>\n <IonTextarea></IonTextarea>\n </IonItem>\n\n {/*-- Disabled and readonly textarea in an item with a stacked label --*/}\n <IonItem>\n <IonLabel position=\"stacked\">Summary</IonLabel>\n <IonTextarea\n disabled\n readonly\n value=\"Ionic enables developers to build performant, high-quality mobile apps.\">\n </IonTextarea>\n </IonItem>\n\n {/*-- Textarea that clears the value on edit --*/}\n <IonItem>\n <IonLabel>Comment</IonLabel>\n <IonTextarea clearOnEdit={true}></IonTextarea>\n </IonItem>\n\n {/*-- Textarea with custom number of rows and cols --*/}\n <IonItem>\n <IonLabel>Notes</IonLabel>\n <IonTextarea rows={6} cols={20} placeholder=\"Enter any notes here...\"></IonTextarea>\n </IonItem>\n </IonContent>\n);\n```\n",
11469 "vue": "```html\n<template>\n <!-- Default textarea -->\n <ion-textarea></ion-textarea>\n\n <!-- Textarea in an item with a placeholder -->\n <ion-item>\n <ion-textarea placeholder=\"Enter more information here...\"></ion-textarea>\n </ion-item>\n\n <!-- Textarea in an item with a floating label -->\n <ion-item>\n <ion-label position=\"floating\">Description</ion-label>\n <ion-textarea></ion-textarea>\n </ion-item>\n\n <!-- Disabled and readonly textarea in an item with a stacked label -->\n <ion-item>\n <ion-label position=\"stacked\">Summary</ion-label>\n <ion-textarea\n disabled\n readonly\n value=\"Ionic enables developers to build performant, high-quality mobile apps.\">\n </ion-textarea>\n </ion-item>\n\n <!-- Textarea that clears the value on edit -->\n <ion-item>\n <ion-label>Comment</ion-label>\n <ion-textarea clearOnEdit=\"true\"></ion-textarea>\n </ion-item>\n\n <!-- Textarea with custom number of rows and cols -->\n <ion-item>\n <ion-label>Notes</ion-label>\n <ion-textarea rows=\"6\" cols=\"20\" placeholder=\"Enter any notes here...\"></ion-textarea>\n </ion-item>\n</template>\n```\n"
11470 },
11471 "props": [
11472 {
11473 "name": "autoGrow",
11474 "type": "boolean",
11475 "mutable": false,
11476 "attr": "auto-grow",
11477 "reflectToAttr": false,
11478 "docs": "If `true`, the element height will increase based on the value.",
11479 "docsTags": [],
11480 "default": "false",
11481 "optional": false,
11482 "required": false
11483 },
11484 {
11485 "name": "autocapitalize",
11486 "type": "string",
11487 "mutable": false,
11488 "attr": "autocapitalize",
11489 "reflectToAttr": false,
11490 "docs": "Indicates whether and how the text value should be automatically capitalized as it is entered/edited by the user.",
11491 "docsTags": [],
11492 "default": "'none'",
11493 "optional": false,
11494 "required": false
11495 },
11496 {
11497 "name": "autofocus",
11498 "type": "boolean",
11499 "mutable": false,
11500 "attr": "autofocus",
11501 "reflectToAttr": false,
11502 "docs": "This Boolean attribute lets you specify that a form control should have input focus when the page loads.",
11503 "docsTags": [],
11504 "default": "false",
11505 "optional": false,
11506 "required": false
11507 },
11508 {
11509 "name": "clearOnEdit",
11510 "type": "boolean",
11511 "mutable": true,
11512 "attr": "clear-on-edit",
11513 "reflectToAttr": false,
11514 "docs": "If `true`, the value will be cleared after focus upon edit. Defaults to `true` when `type` is `\"password\"`, `false` for all other types.",
11515 "docsTags": [],
11516 "default": "false",
11517 "optional": false,
11518 "required": false
11519 },
11520 {
11521 "name": "color",
11522 "type": "string | undefined",
11523 "mutable": false,
11524 "attr": "color",
11525 "reflectToAttr": false,
11526 "docs": "The color to use from your application's color palette.\nDefault options are: `\"primary\"`, `\"secondary\"`, `\"tertiary\"`, `\"success\"`, `\"warning\"`, `\"danger\"`, `\"light\"`, `\"medium\"`, and `\"dark\"`.\nFor more information on colors, see [theming](/docs/theming/basics).",
11527 "docsTags": [],
11528 "optional": true,
11529 "required": false
11530 },
11531 {
11532 "name": "cols",
11533 "type": "number | undefined",
11534 "mutable": false,
11535 "attr": "cols",
11536 "reflectToAttr": false,
11537 "docs": "The visible width of the text control, in average character widths. If it is specified, it must be a positive integer.",
11538 "docsTags": [],
11539 "optional": true,
11540 "required": false
11541 },
11542 {
11543 "name": "debounce",
11544 "type": "number",
11545 "mutable": false,
11546 "attr": "debounce",
11547 "reflectToAttr": false,
11548 "docs": "Set the amount of time, in milliseconds, to wait to trigger the `ionChange` event after each keystroke.",
11549 "docsTags": [],
11550 "default": "0",
11551 "optional": false,
11552 "required": false
11553 },
11554 {
11555 "name": "disabled",
11556 "type": "boolean",
11557 "mutable": false,
11558 "attr": "disabled",
11559 "reflectToAttr": false,
11560 "docs": "If `true`, the user cannot interact with the textarea.",
11561 "docsTags": [],
11562 "default": "false",
11563 "optional": false,
11564 "required": false
11565 },
11566 {
11567 "name": "maxlength",
11568 "type": "number | undefined",
11569 "mutable": false,
11570 "attr": "maxlength",
11571 "reflectToAttr": false,
11572 "docs": "If the value of the type attribute is `text`, `email`, `search`, `password`, `tel`, or `url`, this attribute specifies the maximum number of characters that the user can enter.",
11573 "docsTags": [],
11574 "optional": true,
11575 "required": false
11576 },
11577 {
11578 "name": "minlength",
11579 "type": "number | undefined",
11580 "mutable": false,
11581 "attr": "minlength",
11582 "reflectToAttr": false,
11583 "docs": "If the value of the type attribute is `text`, `email`, `search`, `password`, `tel`, or `url`, this attribute specifies the minimum number of characters that the user can enter.",
11584 "docsTags": [],
11585 "optional": true,
11586 "required": false
11587 },
11588 {
11589 "name": "mode",
11590 "type": "\"ios\" | \"md\"",
11591 "mutable": false,
11592 "attr": "mode",
11593 "reflectToAttr": false,
11594 "docs": "The mode determines which platform styles to use.",
11595 "docsTags": [],
11596 "optional": true,
11597 "required": false
11598 },
11599 {
11600 "name": "name",
11601 "type": "string",
11602 "mutable": false,
11603 "attr": "name",
11604 "reflectToAttr": false,
11605 "docs": "The name of the control, which is submitted with the form data.",
11606 "docsTags": [],
11607 "default": "this.inputId",
11608 "optional": false,
11609 "required": false
11610 },
11611 {
11612 "name": "placeholder",
11613 "type": "null | string | undefined",
11614 "mutable": false,
11615 "attr": "placeholder",
11616 "reflectToAttr": false,
11617 "docs": "Instructional text that shows before the input has a value.",
11618 "docsTags": [],
11619 "optional": true,
11620 "required": false
11621 },
11622 {
11623 "name": "readonly",
11624 "type": "boolean",
11625 "mutable": false,
11626 "attr": "readonly",
11627 "reflectToAttr": false,
11628 "docs": "If `true`, the user cannot modify the value.",
11629 "docsTags": [],
11630 "default": "false",
11631 "optional": false,
11632 "required": false
11633 },
11634 {
11635 "name": "required",
11636 "type": "boolean",
11637 "mutable": false,
11638 "attr": "required",
11639 "reflectToAttr": false,
11640 "docs": "If `true`, the user must fill in a value before submitting a form.",
11641 "docsTags": [],
11642 "default": "false",
11643 "optional": false,
11644 "required": false
11645 },
11646 {
11647 "name": "rows",
11648 "type": "number | undefined",
11649 "mutable": false,
11650 "attr": "rows",
11651 "reflectToAttr": false,
11652 "docs": "The number of visible text lines for the control.",
11653 "docsTags": [],
11654 "optional": true,
11655 "required": false
11656 },
11657 {
11658 "name": "spellcheck",
11659 "type": "boolean",
11660 "mutable": false,
11661 "attr": "spellcheck",
11662 "reflectToAttr": false,
11663 "docs": "If `true`, the element will have its spelling and grammar checked.",
11664 "docsTags": [],
11665 "default": "false",
11666 "optional": false,
11667 "required": false
11668 },
11669 {
11670 "name": "value",
11671 "type": "null | string | undefined",
11672 "mutable": true,
11673 "attr": "value",
11674 "reflectToAttr": false,
11675 "docs": "The value of the textarea.",
11676 "docsTags": [],
11677 "default": "''",
11678 "optional": true,
11679 "required": false
11680 },
11681 {
11682 "name": "wrap",
11683 "type": "\"hard\" | \"off\" | \"soft\" | undefined",
11684 "mutable": false,
11685 "attr": "wrap",
11686 "reflectToAttr": false,
11687 "docs": "Indicates how the control wraps text.",
11688 "docsTags": [],
11689 "optional": true,
11690 "required": false
11691 }
11692 ],
11693 "methods": [
11694 {
11695 "name": "getInputElement",
11696 "returns": {
11697 "type": "Promise<HTMLTextAreaElement>",
11698 "docs": ""
11699 },
11700 "signature": "getInputElement() => Promise<HTMLTextAreaElement>",
11701 "parameters": [],
11702 "docs": "Returns the native `<textarea>` element used under the hood.",
11703 "docsTags": []
11704 },
11705 {
11706 "name": "setFocus",
11707 "returns": {
11708 "type": "Promise<void>",
11709 "docs": ""
11710 },
11711 "signature": "setFocus() => Promise<void>",
11712 "parameters": [],
11713 "docs": "Sets focus on the specified `ion-textarea`. Use this method instead of the global\n`input.focus()`.",
11714 "docsTags": []
11715 }
11716 ],
11717 "events": [
11718 {
11719 "event": "ionBlur",
11720 "detail": "void",
11721 "bubbles": true,
11722 "cancelable": true,
11723 "composed": true,
11724 "docs": "Emitted when the input loses focus.",
11725 "docsTags": []
11726 },
11727 {
11728 "event": "ionChange",
11729 "detail": "TextareaChangeEventDetail",
11730 "bubbles": true,
11731 "cancelable": true,
11732 "composed": true,
11733 "docs": "Emitted when the input value has changed.",
11734 "docsTags": []
11735 },
11736 {
11737 "event": "ionFocus",
11738 "detail": "void",
11739 "bubbles": true,
11740 "cancelable": true,
11741 "composed": true,
11742 "docs": "Emitted when the input has focus.",
11743 "docsTags": []
11744 },
11745 {
11746 "event": "ionInput",
11747 "detail": "KeyboardEvent",
11748 "bubbles": true,
11749 "cancelable": true,
11750 "composed": true,
11751 "docs": "Emitted when a keyboard input ocurred.",
11752 "docsTags": []
11753 }
11754 ],
11755 "styles": [
11756 {
11757 "name": "--background",
11758 "annotation": "prop",
11759 "docs": "Background of the textarea"
11760 },
11761 {
11762 "name": "--border-radius",
11763 "annotation": "prop",
11764 "docs": "Border radius of the textarea"
11765 },
11766 {
11767 "name": "--color",
11768 "annotation": "prop",
11769 "docs": "Color of the text"
11770 },
11771 {
11772 "name": "--padding-bottom",
11773 "annotation": "prop",
11774 "docs": "Bottom padding of the textarea"
11775 },
11776 {
11777 "name": "--padding-end",
11778 "annotation": "prop",
11779 "docs": "Right padding if direction is left-to-right, and left padding if direction is right-to-left of the textarea"
11780 },
11781 {
11782 "name": "--padding-start",
11783 "annotation": "prop",
11784 "docs": "Left padding if direction is left-to-right, and right padding if direction is right-to-left of the textarea"
11785 },
11786 {
11787 "name": "--padding-top",
11788 "annotation": "prop",
11789 "docs": "Top padding of the textarea"
11790 },
11791 {
11792 "name": "--placeholder-color",
11793 "annotation": "prop",
11794 "docs": "Color of the placeholder text"
11795 },
11796 {
11797 "name": "--placeholder-font-style",
11798 "annotation": "prop",
11799 "docs": "Style of the placeholder text"
11800 },
11801 {
11802 "name": "--placeholder-font-weight",
11803 "annotation": "prop",
11804 "docs": "Weight of the placeholder text"
11805 },
11806 {
11807 "name": "--placeholder-opacity",
11808 "annotation": "prop",
11809 "docs": "Opacity of the placeholder text"
11810 }
11811 ],
11812 "slots": []
11813 },
11814 {
11815 "tag": "ion-thumbnail",
11816 "filePath": "src/components/thumbnail/thumbnail.tsx",
11817 "encapsulation": "shadow",
11818 "readme": "# ion-thumbnail\n\nThumbnails are square components that usually wrap an image or icon. They can be used to make it easier to display a group of larger images or provide a preview of the full-size image.\n\nThumbnails can be used by themselves or inside of any element. If placed inside of an `ion-item`, the thumbnail will resize to fit the parent component. To position a thumbnail on the left or right side of an item, set the slot to `start` or `end`, respectively.\n\n",
11819 "docs": "Thumbnails are square components that usually wrap an image or icon. They can be used to make it easier to display a group of larger images or provide a preview of the full-size image.\n\nThumbnails can be used by themselves or inside of any element. If placed inside of an `ion-item`, the thumbnail will resize to fit the parent component. To position a thumbnail on the left or right side of an item, set the slot to `start` or `end`, respectively.",
11820 "docsTags": [],
11821 "usage": {
11822 "javascript": "```html\n<ion-thumbnail>\n <img src=\"https://gravatar.com/avatar/dba6bae8c566f9d4041fb9cd9ada7741?d=identicon&f=y\">\n</ion-thumbnail>\n\n<ion-item>\n <ion-thumbnail slot=\"start\">\n <img src=\"https://gravatar.com/avatar/dba6bae8c566f9d4041fb9cd9ada7741?d=identicon&f=y\">\n </ion-thumbnail>\n <ion-label>Item Thumbnail</ion-label>\n</ion-item>\n```",
11823 "react": "```tsx\nimport React from 'react';\nimport { IonThumbnail, IonItem, IonLabel, IonContent } from '@ionic/react';\n\nexport const ThumbnailExample: React.FC = () => (\n <IonContent>\n <IonThumbnail>\n <img src=\"https://gravatar.com/avatar/dba6bae8c566f9d4041fb9cd9ada7741?d=identicon&f=y\" />\n </IonThumbnail>\n\n <IonItem>\n <IonThumbnail slot=\"start\">\n <img src=\"https://gravatar.com/avatar/dba6bae8c566f9d4041fb9cd9ada7741?d=identicon&f=y\" />\n </IonThumbnail>\n <IonLabel>Item Thumbnail</IonLabel>\n </IonItem>\n </IonContent>\n);\n```\n"
11824 },
11825 "props": [],
11826 "methods": [],
11827 "events": [],
11828 "styles": [
11829 {
11830 "name": "--border-radius",
11831 "annotation": "prop",
11832 "docs": "Border radius of the thumbnail"
11833 },
11834 {
11835 "name": "--size",
11836 "annotation": "prop",
11837 "docs": "Size of the thumbnail"
11838 }
11839 ],
11840 "slots": []
11841 },
11842 {
11843 "tag": "ion-title",
11844 "filePath": "src/components/title/title.tsx",
11845 "encapsulation": "shadow",
11846 "readme": "# ion-title\n\n`ion-title` is a component that sets the title of the `Toolbar`.\n\n\n",
11847 "docs": "`ion-title` is a component that sets the title of the `Toolbar`.",
11848 "docsTags": [],
11849 "usage": {
11850 "angular": "```html\n<!-- Default title -->\n<ion-toolbar>\n <ion-title>Default Title</ion-title>\n</ion-toolbar>\n\n<!-- Small title above a default title -->\n<ion-toolbar>\n <ion-title size=\"small\">Small Title above a Default Title</ion-title>\n</ion-toolbar>\n<ion-toolbar>\n <ion-title>Default Title</ion-title>\n</ion-toolbar>\n```\n",
11851 "javascript": "```html\n<!-- Default title -->\n<ion-toolbar>\n <ion-title>Default Title</ion-title>\n</ion-toolbar>\n\n<!-- Small title above a default title -->\n<ion-toolbar>\n <ion-title size=\"small\">Small Title above a Default Title</ion-title>\n</ion-toolbar>\n<ion-toolbar>\n <ion-title>Default Title</ion-title>\n</ion-toolbar>\n```\n",
11852 "react": "```tsx\nimport React from 'react';\nimport {\n IonToolbar,\n IonTitle\n} from '@ionic/react';\n\nexport const ToolbarExample: React.FC = () => (\n <IonToolbar>\n <IonTitle>Default Title</IonTitle>\n </IonToolbar>\n\n <IonToolbar>\n <IonTitle size=\"small\">Small Title above a Default Title</IonTitle>\n </IonToolbar>\n <IonToolbar>\n <IonTitle>Default Title</IonTitle>\n </IonToolbar>\n);\n```\n",
11853 "vue": "```html\n<template>\n <ion-toolbar>\n <ion-title>Default Title</ion-title>\n </ion-toolbar>\n\n <ion-toolbar>\n <ion-title size=\"small\">Small Title above a Default Title</ion-title>\n </ion-toolbar>\n <ion-toolbar>\n <ion-title>Default Title</ion-title>\n </ion-toolbar>\n</template>\n```"
11854 },
11855 "props": [
11856 {
11857 "name": "color",
11858 "type": "string | undefined",
11859 "mutable": false,
11860 "attr": "color",
11861 "reflectToAttr": false,
11862 "docs": "The color to use from your application's color palette.\nDefault options are: `\"primary\"`, `\"secondary\"`, `\"tertiary\"`, `\"success\"`, `\"warning\"`, `\"danger\"`, `\"light\"`, `\"medium\"`, and `\"dark\"`.\nFor more information on colors, see [theming](/docs/theming/basics).",
11863 "docsTags": [],
11864 "optional": true,
11865 "required": false
11866 },
11867 {
11868 "name": "size",
11869 "type": "\"large\" | \"small\" | undefined",
11870 "mutable": false,
11871 "attr": "size",
11872 "reflectToAttr": false,
11873 "docs": "The size of the toolbar title.",
11874 "docsTags": [],
11875 "optional": true,
11876 "required": false
11877 }
11878 ],
11879 "methods": [],
11880 "events": [],
11881 "styles": [
11882 {
11883 "name": "--color",
11884 "annotation": "prop",
11885 "docs": "Text color of the title"
11886 }
11887 ],
11888 "slots": []
11889 },
11890 {
11891 "tag": "ion-toast",
11892 "filePath": "src/components/toast/toast.tsx",
11893 "encapsulation": "shadow",
11894 "readme": "# ion-toast\n\nA Toast is a subtle notification commonly used in modern applications. It can be used to provide feedback about an operation or to display a system message. The toast appears on top of the app's content, and can be dismissed by the app to resume user interaction with the app.\n\n### Creating\n\nAll of the toast options should be passed in the create method. The message to display should be passed in the `message` property. The `showCloseButton` option can be set to true in order to display a close button on the toast. See the properties below for all available options.\n\n### Positioning\n\nToasts can be positioned at the top, bottom or middle of the viewport. The position can be passed upon creation. The possible values are `top`, `bottom` and `middle`. If the position is not specified, the toast will be displayed at the bottom of the viewport.\n\n### Dismissing\n\nThe toast can be dismissed automatically after a specific amount of time by passing the number of milliseconds to display it in the `duration` of the toast options. If `showCloseButton` is set to true, then the close button will dismiss the toast. To dismiss the toast after creation, call the `dismiss()` method on the instance.\n\n",
11895 "docs": "A Toast is a subtle notification commonly used in modern applications. It can be used to provide feedback about an operation or to display a system message. The toast appears on top of the app's content, and can be dismissed by the app to resume user interaction with the app.",
11896 "docsTags": [
11897 {
11898 "text": "{\"ios\" | \"md\"} mode - The mode determines which platform styles to use.",
11899 "name": "virtualProp"
11900 }
11901 ],
11902 "usage": {
11903 "angular": "```typescript\nimport { Component } from '@angular/core';\nimport { ToastController } from '@ionic/angular';\n\n@Component({\n selector: 'toast-example',\n templateUrl: 'toast-example.html',\n styleUrls: ['./toast-example.css'],\n})\nexport class ToastExample {\n\n constructor(public toastController: ToastController) {}\n\n async presentToast() {\n const toast = await this.toastController.create({\n message: 'Your settings have been saved.',\n duration: 2000\n });\n toast.present();\n }\n\n async presentToastWithOptions() {\n const toast = await this.toastController.create({\n header: 'Toast header',\n message: 'Click to Close',\n position: 'top',\n buttons: [\n {\n side: 'start',\n icon: 'star',\n text: 'Favorite',\n handler: () => {\n console.log('Favorite clicked');\n }\n }, {\n text: 'Done',\n role: 'cancel',\n handler: () => {\n console.log('Cancel clicked');\n }\n }\n ]\n });\n toast.present();\n }\n\n}\n```\n",
11904 "javascript": "```javascript\nasync function presentToast() {\n const toast = document.createElement('ion-toast');\n toast.message = 'Your settings have been saved.';\n toast.duration = 2000;\n\n document.body.appendChild(toast);\n return toast.present();\n}\n\nasync function presentToastWithOptions() {\n const toast = document.createElement('ion-toast');\n toast.header = 'Toast header';\n toast.message = 'Click to Close';\n toast.position = 'top';\n toast.buttons = [\n {\n side: 'start',\n icon: 'star',\n text: 'Favorite',\n handler: () => {\n console.log('Favorite clicked');\n }\n }, {\n text: 'Done',\n role: 'cancel',\n handler: () => {\n console.log('Cancel clicked');\n }\n }\n ];\n\n document.body.appendChild(toast);\n return toast.present();\n}\n```\n",
11905 "react": "```tsx\nimport React, { useState } from 'react';\nimport { IonToast, IonContent, IonButton } from '@ionic/react';\n\nexport const ToastExample: React.FC = () => {\n const [showToast1, setShowToast1] = useState(false);\n const [showToast2, setShowToast2] = useState(false);\n\n return (\n <IonContent>\n <IonButton onClick={() => setShowToast1(true)} expand=\"block\">Show Toast 1</IonButton>\n <IonButton onClick={() => setShowToast2(true)} expand=\"block\">Show Toast 2</IonButton>\n <IonToast\n isOpen={showToast1}\n onDidDismiss={() => setShowToast1(false)}\n message=\"Your settings have been saved.\"\n duration={200}\n />\n\n <IonToast\n isOpen={showToast2}\n onDidDismiss={() => setShowToast2(false)}\n message=\"Click to Close\"\n position=\"top\"\n buttons={[\n {\n side: 'start',\n icon: 'star',\n text: 'Favorite',\n handler: () => {\n console.log('Favorite clicked');\n }\n },\n {\n text: 'Done',\n role: 'cancel',\n handler: () => {\n console.log('Cancel clicked');\n }\n }\n ]}\n />\n </IonContent>\n );\n};\n```\n"
11906 },
11907 "props": [
11908 {
11909 "name": "animated",
11910 "type": "boolean",
11911 "mutable": false,
11912 "attr": "animated",
11913 "reflectToAttr": false,
11914 "docs": "If `true`, the toast will animate.",
11915 "docsTags": [],
11916 "default": "true",
11917 "optional": false,
11918 "required": false
11919 },
11920 {
11921 "name": "buttons",
11922 "type": "(string | ToastButton)[] | undefined",
11923 "mutable": false,
11924 "reflectToAttr": false,
11925 "docs": "An array of buttons for the toast.",
11926 "docsTags": [],
11927 "optional": true,
11928 "required": false
11929 },
11930 {
11931 "name": "closeButtonText",
11932 "type": "string | undefined",
11933 "mutable": false,
11934 "attr": "close-button-text",
11935 "reflectToAttr": false,
11936 "docs": "",
11937 "docsTags": [
11938 {
11939 "text": "Use `buttons` instead. Text to display in the close button.",
11940 "name": "deprecated"
11941 }
11942 ],
11943 "deprecation": "Use `buttons` instead. Text to display in the close button.",
11944 "optional": true,
11945 "required": false
11946 },
11947 {
11948 "name": "color",
11949 "type": "string | undefined",
11950 "mutable": false,
11951 "attr": "color",
11952 "reflectToAttr": false,
11953 "docs": "The color to use from your application's color palette.\nDefault options are: `\"primary\"`, `\"secondary\"`, `\"tertiary\"`, `\"success\"`, `\"warning\"`, `\"danger\"`, `\"light\"`, `\"medium\"`, and `\"dark\"`.\nFor more information on colors, see [theming](/docs/theming/basics).",
11954 "docsTags": [],
11955 "optional": true,
11956 "required": false
11957 },
11958 {
11959 "name": "cssClass",
11960 "type": "string | string[] | undefined",
11961 "mutable": false,
11962 "attr": "css-class",
11963 "reflectToAttr": false,
11964 "docs": "Additional classes to apply for custom CSS. If multiple classes are\nprovided they should be separated by spaces.",
11965 "docsTags": [],
11966 "optional": true,
11967 "required": false
11968 },
11969 {
11970 "name": "duration",
11971 "type": "number",
11972 "mutable": false,
11973 "attr": "duration",
11974 "reflectToAttr": false,
11975 "docs": "How many milliseconds to wait before hiding the toast. By default, it will show\nuntil `dismiss()` is called.",
11976 "docsTags": [],
11977 "default": "0",
11978 "optional": false,
11979 "required": false
11980 },
11981 {
11982 "name": "enterAnimation",
11983 "type": "((Animation: Animation, baseEl: any, opts?: any) => Promise<Animation>) | undefined",
11984 "mutable": false,
11985 "reflectToAttr": false,
11986 "docs": "Animation to use when the toast is presented.",
11987 "docsTags": [],
11988 "optional": true,
11989 "required": false
11990 },
11991 {
11992 "name": "header",
11993 "type": "string | undefined",
11994 "mutable": false,
11995 "attr": "header",
11996 "reflectToAttr": false,
11997 "docs": "Header to be shown in the toast.",
11998 "docsTags": [],
11999 "optional": true,
12000 "required": false
12001 },
12002 {
12003 "name": "keyboardClose",
12004 "type": "boolean",
12005 "mutable": false,
12006 "attr": "keyboard-close",
12007 "reflectToAttr": false,
12008 "docs": "If `true`, the keyboard will be automatically dismissed when the overlay is presented.",
12009 "docsTags": [],
12010 "default": "false",
12011 "optional": false,
12012 "required": false
12013 },
12014 {
12015 "name": "leaveAnimation",
12016 "type": "((Animation: Animation, baseEl: any, opts?: any) => Promise<Animation>) | undefined",
12017 "mutable": false,
12018 "reflectToAttr": false,
12019 "docs": "Animation to use when the toast is dismissed.",
12020 "docsTags": [],
12021 "optional": true,
12022 "required": false
12023 },
12024 {
12025 "name": "message",
12026 "type": "string | undefined",
12027 "mutable": false,
12028 "attr": "message",
12029 "reflectToAttr": false,
12030 "docs": "Message to be shown in the toast.",
12031 "docsTags": [],
12032 "optional": true,
12033 "required": false
12034 },
12035 {
12036 "name": "mode",
12037 "type": "\"ios\" | \"md\"",
12038 "mutable": false,
12039 "attr": "mode",
12040 "reflectToAttr": false,
12041 "docs": "The mode determines which platform styles to use.",
12042 "docsTags": [],
12043 "optional": true,
12044 "required": false
12045 },
12046 {
12047 "name": "position",
12048 "type": "\"bottom\" | \"middle\" | \"top\"",
12049 "mutable": false,
12050 "attr": "position",
12051 "reflectToAttr": false,
12052 "docs": "The position of the toast on the screen.",
12053 "docsTags": [],
12054 "default": "'bottom'",
12055 "optional": false,
12056 "required": false
12057 },
12058 {
12059 "name": "showCloseButton",
12060 "type": "boolean",
12061 "mutable": false,
12062 "attr": "show-close-button",
12063 "reflectToAttr": false,
12064 "docs": "",
12065 "docsTags": [
12066 {
12067 "text": "Use `buttons` instead. If `true`, the close button will be displayed.",
12068 "name": "deprecated"
12069 }
12070 ],
12071 "default": "false",
12072 "deprecation": "Use `buttons` instead. If `true`, the close button will be displayed.",
12073 "optional": false,
12074 "required": false
12075 },
12076 {
12077 "name": "translucent",
12078 "type": "boolean",
12079 "mutable": false,
12080 "attr": "translucent",
12081 "reflectToAttr": false,
12082 "docs": "If `true`, the toast will be translucent.\nOnly applies when the mode is `\"ios\"` and the device supports\n[`backdrop-filter`](https://developer.mozilla.org/en-US/docs/Web/CSS/backdrop-filter#Browser_compatibility).",
12083 "docsTags": [],
12084 "default": "false",
12085 "optional": false,
12086 "required": false
12087 }
12088 ],
12089 "methods": [
12090 {
12091 "name": "dismiss",
12092 "returns": {
12093 "type": "Promise<boolean>",
12094 "docs": ""
12095 },
12096 "signature": "dismiss(data?: any, role?: string | undefined) => Promise<boolean>",
12097 "parameters": [],
12098 "docs": "Dismiss the toast overlay after it has been presented.",
12099 "docsTags": [
12100 {
12101 "name": "param",
12102 "text": "data Any data to emit in the dismiss events."
12103 },
12104 {
12105 "name": "param",
12106 "text": "role The role of the element that is dismissing the toast.\nThis can be useful in a button handler for determining which button was\nclicked to dismiss the toast.\nSome examples include: ``\"cancel\"`, `\"destructive\"`, \"selected\"`, and `\"backdrop\"`."
12107 }
12108 ]
12109 },
12110 {
12111 "name": "onDidDismiss",
12112 "returns": {
12113 "type": "Promise<OverlayEventDetail<any>>",
12114 "docs": ""
12115 },
12116 "signature": "onDidDismiss() => Promise<OverlayEventDetail<any>>",
12117 "parameters": [],
12118 "docs": "Returns a promise that resolves when the toast did dismiss.",
12119 "docsTags": []
12120 },
12121 {
12122 "name": "onWillDismiss",
12123 "returns": {
12124 "type": "Promise<OverlayEventDetail<any>>",
12125 "docs": ""
12126 },
12127 "signature": "onWillDismiss() => Promise<OverlayEventDetail<any>>",
12128 "parameters": [],
12129 "docs": "Returns a promise that resolves when the toast will dismiss.",
12130 "docsTags": []
12131 },
12132 {
12133 "name": "present",
12134 "returns": {
12135 "type": "Promise<void>",
12136 "docs": ""
12137 },
12138 "signature": "present() => Promise<void>",
12139 "parameters": [],
12140 "docs": "Present the toast overlay after it has been created.",
12141 "docsTags": []
12142 }
12143 ],
12144 "events": [
12145 {
12146 "event": "ionToastDidDismiss",
12147 "detail": "OverlayEventDetail<any>",
12148 "bubbles": true,
12149 "cancelable": true,
12150 "composed": true,
12151 "docs": "Emitted after the toast has dismissed.",
12152 "docsTags": []
12153 },
12154 {
12155 "event": "ionToastDidPresent",
12156 "detail": "void",
12157 "bubbles": true,
12158 "cancelable": true,
12159 "composed": true,
12160 "docs": "Emitted after the toast has presented.",
12161 "docsTags": []
12162 },
12163 {
12164 "event": "ionToastWillDismiss",
12165 "detail": "OverlayEventDetail<any>",
12166 "bubbles": true,
12167 "cancelable": true,
12168 "composed": true,
12169 "docs": "Emitted before the toast has dismissed.",
12170 "docsTags": []
12171 },
12172 {
12173 "event": "ionToastWillPresent",
12174 "detail": "void",
12175 "bubbles": true,
12176 "cancelable": true,
12177 "composed": true,
12178 "docs": "Emitted before the toast has presented.",
12179 "docsTags": []
12180 }
12181 ],
12182 "styles": [
12183 {
12184 "name": "--background",
12185 "annotation": "prop",
12186 "docs": "Background of the toast"
12187 },
12188 {
12189 "name": "--border-color",
12190 "annotation": "prop",
12191 "docs": "Border color of the toast"
12192 },
12193 {
12194 "name": "--border-radius",
12195 "annotation": "prop",
12196 "docs": "Border radius of the toast"
12197 },
12198 {
12199 "name": "--border-style",
12200 "annotation": "prop",
12201 "docs": "Border style of the toast"
12202 },
12203 {
12204 "name": "--border-width",
12205 "annotation": "prop",
12206 "docs": "Border width of the toast"
12207 },
12208 {
12209 "name": "--box-shadow",
12210 "annotation": "prop",
12211 "docs": "Box shadow of the toast"
12212 },
12213 {
12214 "name": "--button-color",
12215 "annotation": "prop",
12216 "docs": "Color of the button text"
12217 },
12218 {
12219 "name": "--color",
12220 "annotation": "prop",
12221 "docs": "Color of the toast text"
12222 },
12223 {
12224 "name": "--end",
12225 "annotation": "prop",
12226 "docs": "Position from the right if direction is left-to-right, and from the left if direction is right-to-left"
12227 },
12228 {
12229 "name": "--height",
12230 "annotation": "prop",
12231 "docs": "Height of the toast"
12232 },
12233 {
12234 "name": "--max-height",
12235 "annotation": "prop",
12236 "docs": "Maximum height of the toast"
12237 },
12238 {
12239 "name": "--max-width",
12240 "annotation": "prop",
12241 "docs": "Maximum width of the toast"
12242 },
12243 {
12244 "name": "--min-height",
12245 "annotation": "prop",
12246 "docs": "Minimum height of the toast"
12247 },
12248 {
12249 "name": "--min-width",
12250 "annotation": "prop",
12251 "docs": "Minimum width of the toast"
12252 },
12253 {
12254 "name": "--start",
12255 "annotation": "prop",
12256 "docs": "Position from the left if direction is left-to-right, and from the right if direction is right-to-left"
12257 },
12258 {
12259 "name": "--width",
12260 "annotation": "prop",
12261 "docs": "Width of the toast"
12262 }
12263 ],
12264 "slots": []
12265 },
12266 {
12267 "tag": "ion-toast-controller",
12268 "filePath": "src/components/toast-controller/toast-controller.tsx",
12269 "encapsulation": "none",
12270 "readme": "# ion-toast-controller\n\nToastController is a component used to create Toast components. Please see the docs for [Toast](../toast).\n\n",
12271 "deprecation": "Use the `toastController` exported from core.",
12272 "docs": "ToastController is a component used to create Toast components. Please see the docs for [Toast](../toast).",
12273 "docsTags": [
12274 {
12275 "text": "Use the `toastController` exported from core.",
12276 "name": "deprecated"
12277 }
12278 ],
12279 "usage": {},
12280 "props": [],
12281 "methods": [
12282 {
12283 "name": "create",
12284 "returns": {
12285 "type": "Promise<HTMLIonToastElement>",
12286 "docs": ""
12287 },
12288 "signature": "create(options?: ToastOptions | undefined) => Promise<HTMLIonToastElement>",
12289 "parameters": [],
12290 "docs": "Create a toast overlay with toast options.",
12291 "docsTags": [
12292 {
12293 "name": "param",
12294 "text": "options The options to use to create the toast."
12295 }
12296 ]
12297 },
12298 {
12299 "name": "dismiss",
12300 "returns": {
12301 "type": "Promise<boolean>",
12302 "docs": ""
12303 },
12304 "signature": "dismiss(data?: any, role?: string | undefined, id?: string | undefined) => Promise<boolean>",
12305 "parameters": [],
12306 "docs": "Dismiss the open toast overlay.",
12307 "docsTags": [
12308 {
12309 "name": "param",
12310 "text": "data Any data to emit in the dismiss events."
12311 },
12312 {
12313 "name": "param",
12314 "text": "role The role of the element that is dismissing the toast. For example, 'cancel' or 'backdrop'."
12315 },
12316 {
12317 "name": "param",
12318 "text": "id The id of the toast to dismiss. If an id is not provided, it will dismiss the most recently opened toast."
12319 }
12320 ]
12321 },
12322 {
12323 "name": "getTop",
12324 "returns": {
12325 "type": "Promise<HTMLIonToastElement | undefined>",
12326 "docs": ""
12327 },
12328 "signature": "getTop() => Promise<HTMLIonToastElement | undefined>",
12329 "parameters": [],
12330 "docs": "Get the most recently opened toast overlay.",
12331 "docsTags": []
12332 }
12333 ],
12334 "events": [],
12335 "styles": [],
12336 "slots": []
12337 },
12338 {
12339 "tag": "ion-toggle",
12340 "filePath": "src/components/toggle/toggle.tsx",
12341 "encapsulation": "shadow",
12342 "readme": "# ion-toggle\n\nToggles change the state of a single option. Toggles can be switched on or off by pressing or swiping them. They can also be checked programmatically by setting the `checked` property.\n\n\n",
12343 "docs": "Toggles change the state of a single option. Toggles can be switched on or off by pressing or swiping them. They can also be checked programmatically by setting the `checked` property.",
12344 "docsTags": [
12345 {
12346 "text": "{\"ios\" | \"md\"} mode - The mode determines which platform styles to use.",
12347 "name": "virtualProp"
12348 }
12349 ],
12350 "usage": {
12351 "angular": "```html\n<!-- Default Toggle -->\n<ion-toggle></ion-toggle>\n\n<!-- Disabled Toggle -->\n<ion-toggle disabled></ion-toggle>\n\n<!-- Checked Toggle -->\n<ion-toggle checked></ion-toggle>\n\n<!-- Toggle Colors -->\n<ion-toggle color=\"primary\"></ion-toggle>\n<ion-toggle color=\"secondary\"></ion-toggle>\n<ion-toggle color=\"danger\"></ion-toggle>\n<ion-toggle color=\"light\"></ion-toggle>\n<ion-toggle color=\"dark\"></ion-toggle>\n\n<!-- Toggles in a List -->\n<ion-list>\n <ion-item>\n <ion-label>Pepperoni</ion-label>\n <ion-toggle [(ngModel)]=\"pepperoni\"></ion-toggle>\n </ion-item>\n\n <ion-item>\n <ion-label>Sausage</ion-label>\n <ion-toggle [(ngModel)]=\"sausage\" disabled=\"true\"></ion-toggle>\n </ion-item>\n\n <ion-item>\n <ion-label>Mushrooms</ion-label>\n <ion-toggle [(ngModel)]=\"mushrooms\"></ion-toggle>\n </ion-item>\n</ion-list>\n```\n",
12352 "javascript": "```html\n<!-- Default Toggle -->\n<ion-toggle></ion-toggle>\n\n<!-- Disabled Toggle -->\n<ion-toggle disabled></ion-toggle>\n\n<!-- Checked Toggle -->\n<ion-toggle checked></ion-toggle>\n\n<!-- Toggle Colors -->\n<ion-toggle color=\"primary\"></ion-toggle>\n<ion-toggle color=\"secondary\"></ion-toggle>\n<ion-toggle color=\"danger\"></ion-toggle>\n<ion-toggle color=\"light\"></ion-toggle>\n<ion-toggle color=\"dark\"></ion-toggle>\n\n<!-- Toggles in a List -->\n<ion-list>\n <ion-item>\n <ion-label>Pepperoni</ion-label>\n <ion-toggle slot=\"end\" value=\"pepperoni\" checked></ion-toggle>\n </ion-item>\n\n <ion-item>\n <ion-label>Sausage</ion-label>\n <ion-toggle slot=\"end\" value=\"sausage\" disabled></ion-toggle>\n </ion-item>\n\n <ion-item>\n <ion-label>Mushrooms</ion-label>\n <ion-toggle slot=\"end\" value=\"mushrooms\"></ion-toggle>\n </ion-item>\n</ion-list>\n```\n",
12353 "react": "```tsx\nimport React from 'react';\nimport { IonToggle, IonList, IonItem, IonLabel, IonContent } from '@ionic/react';\n\nexport const ToggleExample: React.FC = () => (\n <IonContent>\n {/*-- Default Toggle --*/}\n <IonToggle />\n\n {/*-- Disabled Toggle --*/}\n <IonToggle disabled />\n\n {/*-- Checked Toggle --*/}\n <IonToggle checked />\n\n {/*-- Toggle Colors --*/}\n <IonToggle color=\"primary\" />\n <IonToggle color=\"secondary\" />\n <IonToggle color=\"danger\" />\n <IonToggle color=\"light\" />\n <IonToggle color=\"dark\" />\n\n {/*-- Toggles in a List --*/}\n <IonList>\n <IonItem>\n <IonLabel>Pepperoni</IonLabel>\n <IonToggle value=\"pepperoni\" onChange={() => {}} />\n </IonItem>\n\n <IonItem>\n <IonLabel>Sausage</IonLabel>\n <IonToggle value=\"sausage\" onChange={() => {}} disabled={true} />\n </IonItem>\n\n <IonItem>\n <IonLabel>Mushrooms</IonLabel>\n <IonToggle value=\"mushrooms\" onChange={() => {}} />\n </IonItem>\n </IonList>\n </IonContent>\n);\n```",
12354 "vue": "```html\n<template>\n <!-- Default Toggle -->\n <ion-toggle></ion-toggle>\n\n <!-- Disabled Toggle -->\n <ion-toggle disabled></ion-toggle>\n\n <!-- Checked Toggle -->\n <ion-toggle checked></ion-toggle>\n\n <!-- Toggle Colors -->\n <ion-toggle color=\"primary\"></ion-toggle>\n <ion-toggle color=\"secondary\"></ion-toggle>\n <ion-toggle color=\"danger\"></ion-toggle>\n <ion-toggle color=\"light\"></ion-toggle>\n <ion-toggle color=\"dark\"></ion-toggle>\n\n <!-- Toggles in a List -->\n <ion-list>\n <ion-item>\n <ion-label>Pepperoni</ion-label>\n <ion-toggle @ionChange=\"toppings.push($event.target.value)\" value=\"pepperoni\" v-bind:checked=\"toppings.indexOf('pepperoni') !== -1\"></ion-toggle>\n </ion-item>\n\n <ion-item>\n <ion-label>Sausage</ion-label>\n <ion-toggle @ionChange=\"toppings.push($event.target.value)\" value=\"sausage\" v-bind:checked=\"toppings.indexOf('pepperoni') !== -1\" disabled=\"true\"></ion-toggle>\n </ion-item>\n\n <ion-item>\n <ion-label>Mushrooms</ion-label>\n <ion-toggle @ionChange=\"toppings.push($event.target.value)\" value=\"mushrooms\" v-bind:checked=\"toppings.indexOf('pepperoni') !== -1\"></ion-toggle>\n </ion-item>\n </ion-list>\n</template>\n```\n"
12355 },
12356 "props": [
12357 {
12358 "name": "checked",
12359 "type": "boolean",
12360 "mutable": true,
12361 "attr": "checked",
12362 "reflectToAttr": false,
12363 "docs": "If `true`, the toggle is selected.",
12364 "docsTags": [],
12365 "default": "false",
12366 "optional": false,
12367 "required": false
12368 },
12369 {
12370 "name": "color",
12371 "type": "string | undefined",
12372 "mutable": false,
12373 "attr": "color",
12374 "reflectToAttr": false,
12375 "docs": "The color to use from your application's color palette.\nDefault options are: `\"primary\"`, `\"secondary\"`, `\"tertiary\"`, `\"success\"`, `\"warning\"`, `\"danger\"`, `\"light\"`, `\"medium\"`, and `\"dark\"`.\nFor more information on colors, see [theming](/docs/theming/basics).",
12376 "docsTags": [],
12377 "optional": true,
12378 "required": false
12379 },
12380 {
12381 "name": "disabled",
12382 "type": "boolean",
12383 "mutable": false,
12384 "attr": "disabled",
12385 "reflectToAttr": false,
12386 "docs": "If `true`, the user cannot interact with the toggle.",
12387 "docsTags": [],
12388 "default": "false",
12389 "optional": false,
12390 "required": false
12391 },
12392 {
12393 "name": "mode",
12394 "type": "\"ios\" | \"md\"",
12395 "mutable": false,
12396 "attr": "mode",
12397 "reflectToAttr": false,
12398 "docs": "The mode determines which platform styles to use.",
12399 "docsTags": [],
12400 "optional": true,
12401 "required": false
12402 },
12403 {
12404 "name": "name",
12405 "type": "string",
12406 "mutable": false,
12407 "attr": "name",
12408 "reflectToAttr": false,
12409 "docs": "The name of the control, which is submitted with the form data.",
12410 "docsTags": [],
12411 "default": "this.inputId",
12412 "optional": false,
12413 "required": false
12414 },
12415 {
12416 "name": "value",
12417 "type": "null | string | undefined",
12418 "mutable": false,
12419 "attr": "value",
12420 "reflectToAttr": false,
12421 "docs": "The value of the toggle does not mean if it's checked or not, use the `checked`\nproperty for that.\n\nThe value of a toggle is analogous to the value of a `<input type=\"checkbox\">`,\nit's only used when the toggle participates in a native `<form>`.",
12422 "docsTags": [],
12423 "default": "'on'",
12424 "optional": true,
12425 "required": false
12426 }
12427 ],
12428 "methods": [],
12429 "events": [
12430 {
12431 "event": "ionBlur",
12432 "detail": "void",
12433 "bubbles": true,
12434 "cancelable": true,
12435 "composed": true,
12436 "docs": "Emitted when the toggle loses focus.",
12437 "docsTags": []
12438 },
12439 {
12440 "event": "ionChange",
12441 "detail": "ToggleChangeEventDetail",
12442 "bubbles": true,
12443 "cancelable": true,
12444 "composed": true,
12445 "docs": "Emitted when the value property has changed.",
12446 "docsTags": []
12447 },
12448 {
12449 "event": "ionFocus",
12450 "detail": "void",
12451 "bubbles": true,
12452 "cancelable": true,
12453 "composed": true,
12454 "docs": "Emitted when the toggle has focus.",
12455 "docsTags": []
12456 }
12457 ],
12458 "styles": [
12459 {
12460 "name": "--background",
12461 "annotation": "prop",
12462 "docs": "Background of the toggle"
12463 },
12464 {
12465 "name": "--background-checked",
12466 "annotation": "prop",
12467 "docs": "Background of the toggle when checked"
12468 },
12469 {
12470 "name": "--handle-background",
12471 "annotation": "prop",
12472 "docs": "Background of the toggle handle"
12473 },
12474 {
12475 "name": "--handle-background-checked",
12476 "annotation": "prop",
12477 "docs": "Background of the toggle handle when checked"
12478 }
12479 ],
12480 "slots": []
12481 },
12482 {
12483 "tag": "ion-toolbar",
12484 "filePath": "src/components/toolbar/toolbar.tsx",
12485 "encapsulation": "shadow",
12486 "readme": "# ion-toolbar\n\nToolbars are positioned above or below content. When a toolbar is placed in an `<ion-header>` it will appear fixed at the top of the content, and when it is in an `<ion-footer>` it will appear fixed at the bottom. Fullscreen content will scroll behind a toolbar in a header or footer. When placed within an `<ion-content>`, toolbars will scroll with the content.\n\n\n### Buttons\n\nButtons placed in a toolbar should be placed inside of the `<ion-buttons>` element. The `<ion-buttons>` element can be positioned inside of the toolbar using a named slot. The below chart has a description of each slot.\n\n| Slot | Description |\n|--------------|----------------------------------------------------------------------------------------------------------|\n| `secondary` | Positions element to the `left` of the content in `ios` mode, and directly to the `right` in `md` mode. |\n| `primary` | Positions element to the `right` of the content in `ios` mode, and to the far `right` in `md` mode. |\n| `start` | Positions to the `left` of the content in LTR, and to the `right` in RTL. |\n| `end` | Positions to the `right` of the content in LTR, and to the `left` in RTL. |\n\n\n### Borders\n\nIn `md` mode, the `<ion-header>` will receive a box-shadow on the bottom, and the `<ion-footer>` will receive a box-shadow on the top. In `ios` mode, the `<ion-header>` will receive a border on the bottom, and the `<ion-footer>` will receive a border on the top.\n\n\n",
12487 "docs": "Toolbars are positioned above or below content. When a toolbar is placed in an `<ion-header>` it will appear fixed at the top of the content, and when it is in an `<ion-footer>` it will appear fixed at the bottom. Fullscreen content will scroll behind a toolbar in a header or footer. When placed within an `<ion-content>`, toolbars will scroll with the content.",
12488 "docsTags": [
12489 {
12490 "text": "{\"ios\" | \"md\"} mode - The mode determines which platform styles to use.",
12491 "name": "virtualProp"
12492 },
12493 {
12494 "text": "- Content is placed between the named slots if provided without a slot.",
12495 "name": "slot"
12496 },
12497 {
12498 "text": "start - Content is placed to the left of the toolbar text in LTR, and to the right in RTL.",
12499 "name": "slot"
12500 },
12501 {
12502 "text": "secondary - Content is placed to the left of the toolbar text in `ios` mode, and directly to the right in `md` mode.",
12503 "name": "slot"
12504 },
12505 {
12506 "text": "primary - Content is placed to the right of the toolbar text in `ios` mode, and to the far right in `md` mode.",
12507 "name": "slot"
12508 },
12509 {
12510 "text": "end - Content is placed to the right of the toolbar text in LTR, and to the left in RTL.",
12511 "name": "slot"
12512 }
12513 ],
12514 "usage": {
12515 "angular": "```html\n<ion-toolbar>\n <ion-title>Title Only</ion-title>\n</ion-toolbar>\n\n<ion-toolbar>\n <ion-buttons slot=\"start\">\n <ion-back-button></ion-back-button>\n </ion-buttons>\n <ion-title>Back Button</ion-title>\n</ion-toolbar>\n\n<ion-toolbar>\n <ion-title size=\"small\">Small Title above a Default Title</ion-title>\n</ion-toolbar>\n<ion-toolbar>\n <ion-title>Default Title</ion-title>\n</ion-toolbar>\n\n<ion-toolbar>\n <ion-buttons slot=\"secondary\">\n <ion-button>\n <ion-icon slot=\"icon-only\" name=\"contact\"></ion-icon>\n </ion-button>\n <ion-button>\n <ion-icon slot=\"icon-only\" name=\"search\"></ion-icon>\n </ion-button>\n </ion-buttons>\n <ion-buttons slot=\"primary\">\n <ion-button color=\"secondary\">\n <ion-icon slot=\"icon-only\" name=\"more\"></ion-icon>\n </ion-button>\n </ion-buttons>\n <ion-title>Default Buttons</ion-title>\n</ion-toolbar>\n\n<ion-toolbar>\n <ion-buttons slot=\"secondary\">\n <ion-button fill=\"solid\">\n <ion-icon slot=\"start\" name=\"contact\"></ion-icon>\n Contact\n </ion-button>\n </ion-buttons>\n <ion-title>Solid Buttons</ion-title>\n <ion-buttons slot=\"primary\">\n <ion-button fill=\"solid\" color=\"secondary\">\n Help\n <ion-icon slot=\"end\" name=\"help-circle\"></ion-icon>\n </ion-button>\n </ion-buttons>\n</ion-toolbar>\n\n<ion-toolbar>\n <ion-buttons slot=\"secondary\">\n <ion-button fill=\"outline\">\n <ion-icon slot=\"start\" name=\"star\"></ion-icon>\n Star\n </ion-button>\n </ion-buttons>\n <ion-title>Outline Buttons</ion-title>\n <ion-buttons slot=\"primary\">\n <ion-button color=\"danger\" fill=\"outline\">\n Edit\n <ion-icon slot=\"end\" name=\"create\"></ion-icon>\n </ion-button>\n </ion-buttons>\n</ion-toolbar>\n\n<ion-toolbar>\n <ion-buttons slot=\"secondary\">\n <ion-button>\n Account\n </ion-button>\n </ion-buttons>\n <ion-buttons slot=\"primary\">\n <ion-button color=\"danger\">\n Edit\n </ion-button>\n </ion-buttons>\n <ion-title>Text Only Buttons</ion-title>\n</ion-toolbar>\n\n<ion-toolbar>\n <ion-buttons slot=\"start\">\n <ion-menu-button autoHide=\"false\"></ion-menu-button>\n\n </ion-buttons>\n <ion-buttons slot=\"secondary\">\n <ion-button>\n <ion-icon slot=\"icon-only\" name=\"star\"></ion-icon>\n </ion-button>\n </ion-buttons>\n <ion-title>Left side menu toggle</ion-title>\n</ion-toolbar>\n\n<ion-toolbar>\n <ion-buttons slot=\"primary\">\n <ion-button (click)=\"clickedStar()\">\n <ion-icon slot=\"icon-only\" name=\"star\"></ion-icon>\n </ion-button>\n </ion-buttons>\n <ion-title>Right side menu toggle</ion-title>\n <ion-buttons slot=\"end\">\n <ion-menu-button autoHide=\"false\"></ion-menu-button>\n\n </ion-buttons>\n</ion-toolbar>\n\n<ion-toolbar>\n <ion-buttons slot=\"primary\">\n <ion-button (click)=\"clickedSearch()\">\n <ion-icon slot=\"icon-only\" name=\"search\"></ion-icon>\n </ion-button>\n </ion-buttons>\n <ion-searchbar placeholder=\"Search Favorites\"></ion-searchbar>\n</ion-toolbar>\n\n<ion-toolbar>\n <ion-segment>\n <ion-segment-button value=\"all\" checked>\n All\n </ion-segment-button>\n <ion-segment-button value=\"favorites\">\n Favorites\n </ion-segment-button>\n </ion-segment>\n</ion-toolbar>\n\n<ion-toolbar color=\"secondary\">\n <ion-buttons slot=\"secondary\">\n <ion-button>\n <ion-icon slot=\"icon-only\" name=\"contact\"></ion-icon>\n </ion-button>\n <ion-button>\n <ion-icon slot=\"icon-only\" name=\"search\"></ion-icon>\n </ion-button>\n </ion-buttons>\n <ion-buttons slot=\"primary\">\n <ion-button color=\"primary\">\n <ion-icon slot=\"icon-only\" name=\"more\"></ion-icon>\n </ion-button>\n </ion-buttons>\n <ion-title>Secondary Toolbar</ion-title>\n</ion-toolbar>\n\n<ion-toolbar color=\"dark\">\n <ion-buttons slot=\"secondary\">\n <ion-button>\n <ion-icon slot=\"icon-only\" name=\"contact\"></ion-icon>\n </ion-button>\n <ion-button>\n <ion-icon slot=\"icon-only\" name=\"search\"></ion-icon>\n </ion-button>\n </ion-buttons>\n <ion-buttons slot=\"primary\">\n <ion-button color=\"danger\">\n <ion-icon slot=\"icon-only\" name=\"more\"></ion-icon>\n </ion-button>\n </ion-buttons>\n <ion-title>Dark Toolbar</ion-title>\n</ion-toolbar>\n```",
12516 "javascript": "```html\n<ion-toolbar>\n <ion-title>Title Only</ion-title>\n</ion-toolbar>\n\n<ion-toolbar>\n <ion-buttons slot=\"start\">\n <ion-back-button></ion-back-button>\n </ion-buttons>\n <ion-title>Back Button</ion-title>\n</ion-toolbar>\n\n<ion-toolbar>\n <ion-title size=\"small\">Small Title above a Default Title</ion-title>\n</ion-toolbar>\n<ion-toolbar>\n <ion-title>Default Title</ion-title>\n</ion-toolbar>\n\n<ion-toolbar>\n <ion-buttons slot=\"secondary\">\n <ion-button>\n <ion-icon slot=\"icon-only\" name=\"contact\"></ion-icon>\n </ion-button>\n <ion-button>\n <ion-icon slot=\"icon-only\" name=\"search\"></ion-icon>\n </ion-button>\n </ion-buttons>\n <ion-buttons slot=\"primary\">\n <ion-button color=\"secondary\">\n <ion-icon slot=\"icon-only\" name=\"more\"></ion-icon>\n </ion-button>\n </ion-buttons>\n <ion-title>Default Buttons</ion-title>\n</ion-toolbar>\n\n<ion-toolbar>\n <ion-buttons slot=\"secondary\">\n <ion-button fill=\"solid\">\n <ion-icon slot=\"start\" name=\"contact\"></ion-icon>\n Contact\n </ion-button>\n </ion-buttons>\n <ion-title>Solid Buttons</ion-title>\n <ion-buttons slot=\"primary\">\n <ion-button fill=\"solid\" color=\"secondary\">\n Help\n <ion-icon slot=\"end\" name=\"help-circle\"></ion-icon>\n </ion-button>\n </ion-buttons>\n</ion-toolbar>\n\n<ion-toolbar>\n <ion-buttons slot=\"secondary\">\n <ion-button fill=\"outline\">\n <ion-icon slot=\"start\" name=\"star\"></ion-icon>\n Star\n </ion-button>\n </ion-buttons>\n <ion-title>Outline Buttons</ion-title>\n <ion-buttons slot=\"primary\">\n <ion-button color=\"danger\" fill=\"outline\">\n Edit\n <ion-icon slot=\"end\" name=\"create\"></ion-icon>\n </ion-button>\n </ion-buttons>\n</ion-toolbar>\n\n<ion-toolbar>\n <ion-buttons slot=\"secondary\">\n <ion-button>\n Account\n </ion-button>\n </ion-buttons>\n <ion-buttons slot=\"primary\">\n <ion-button color=\"danger\">\n Edit\n </ion-button>\n </ion-buttons>\n <ion-title>Text Only Buttons</ion-title>\n</ion-toolbar>\n\n<ion-toolbar>\n <ion-buttons slot=\"start\">\n <ion-menu-button auto-hide=\"false\"></ion-menu-button>\n </ion-buttons>\n <ion-buttons slot=\"secondary\">\n <ion-button>\n <ion-icon slot=\"icon-only\" name=\"star\"></ion-icon>\n </ion-button>\n </ion-buttons>\n <ion-title>Left side menu toggle</ion-title>\n</ion-toolbar>\n\n<ion-toolbar>\n <ion-buttons slot=\"primary\">\n <ion-button onclick=\"clickedStar()\">\n <ion-icon slot=\"icon-only\" name=\"star\"></ion-icon>\n </ion-button>\n </ion-buttons>\n <ion-title>Right side menu toggle</ion-title>\n <ion-buttons slot=\"end\">\n <ion-menu-button auto-hide=\"false\"></ion-menu-button>\n </ion-buttons>\n</ion-toolbar>\n\n<ion-toolbar>\n <ion-buttons slot=\"primary\">\n <ion-button onclick=\"clickedSearch()\">\n <ion-icon slot=\"icon-only\" name=\"search\"></ion-icon>\n </ion-button>\n </ion-buttons>\n <ion-searchbar placeholder=\"Search Favorites\"></ion-searchbar>\n</ion-toolbar>\n\n<ion-toolbar>\n <ion-segment>\n <ion-segment-button value=\"all\" checked>\n All\n </ion-segment-button>\n <ion-segment-button value=\"favorites\">\n Favorites\n </ion-segment-button>\n </ion-segment>\n</ion-toolbar>\n\n<ion-toolbar color=\"secondary\">\n <ion-buttons slot=\"secondary\">\n <ion-button>\n <ion-icon slot=\"icon-only\" name=\"contact\"></ion-icon>\n </ion-button>\n <ion-button>\n <ion-icon slot=\"icon-only\" name=\"search\"></ion-icon>\n </ion-button>\n </ion-buttons>\n <ion-buttons slot=\"primary\">\n <ion-button color=\"primary\">\n <ion-icon slot=\"icon-only\" name=\"more\"></ion-icon>\n </ion-button>\n </ion-buttons>\n <ion-title>Secondary Toolbar</ion-title>\n</ion-toolbar>\n\n<ion-toolbar color=\"dark\">\n <ion-buttons slot=\"secondary\">\n <ion-button>\n <ion-icon slot=\"icon-only\" name=\"contact\"></ion-icon>\n </ion-button>\n <ion-button>\n <ion-icon slot=\"icon-only\" name=\"search\"></ion-icon>\n </ion-button>\n </ion-buttons>\n <ion-buttons slot=\"primary\">\n <ion-button color=\"danger\">\n <ion-icon slot=\"icon-only\" name=\"more\"></ion-icon>\n </ion-button>\n </ion-buttons>\n <ion-title>Dark Toolbar</ion-title>\n</ion-toolbar>\n```",
12517 "react": "```tsx\nimport React from 'react';\nimport {\n IonToolbar,\n IonTitle,\n IonButtons,\n IonBackButton,\n IonButton,\n IonIcon,\n IonMenuButton,\n IonSearchbar,\n IonSegment,\n IonSegmentButton,\n} from '@ionic/react';\n\nexport const ToolbarExample: React.FC = () => (\n <IonToolbar>\n <IonTitle>Title Only</IonTitle>\n </IonToolbar>\n\n <IonToolbar>\n <IonButtons slot=\"start\">\n <IonBackButton defaultHref=\"/\" />\n </IonButtons>\n <IonTitle>Back Button</IonTitle>\n </IonToolbar>\n\n <IonToolbar>\n <IonTitle size=\"small\">Small Title above a Default Title</IonTitle>\n </IonToolbar>\n <IonToolbar>\n <IonTitle>Default Title</IonTitle>\n </IonToolbar>\n\n <IonToolbar>\n <IonButtons slot=\"secondary\">\n <IonButton>\n <IonIcon slot=\"icon-only\" name=\"contact\" />\n </IonButton>\n <IonButton>\n <IonIcon slot=\"icon-only\" name=\"search\" />\n </IonButton>\n </IonButtons>\n <IonButtons slot=\"primary\">\n <IonButton color=\"secondary\">\n <IonIcon slot=\"icon-only\" name=\"more\" />\n </IonButton>\n </IonButtons>\n <IonTitle>Default Buttons</IonTitle>\n </IonToolbar>\n\n <IonToolbar>\n <IonButtons slot=\"secondary\">\n <IonButton fill=\"solid\">\n <IonIcon slot=\"start\" name=\"contact\" />\n Contact\n </IonButton>\n </IonButtons>\n <IonTitle>Solid Buttons</IonTitle>\n <IonButtons slot=\"primary\">\n <IonButton fill=\"solid\" color=\"secondary\">\n Help\n <IonIcon slot=\"end\" name=\"help-circle\" />\n </IonButton>\n </IonButtons>\n </IonToolbar>\n\n <IonToolbar>\n <IonButtons slot=\"secondary\">\n <IonButton fill=\"outline\">\n <IonIcon slot=\"start\" name=\"star\" />\n Star\n </IonButton>\n </IonButtons>\n <IonTitle>Outline Buttons</IonTitle>\n <IonButtons slot=\"primary\">\n <IonButton color=\"danger\" fill=\"outline\">\n Edit\n <IonIcon slot=\"end\" name=\"create\" />\n </IonButton>\n </IonButtons>\n </IonToolbar>\n\n <IonToolbar>\n <IonButtons slot=\"secondary\">\n <IonButton>Account</IonButton>\n </IonButtons>\n <IonButtons slot=\"primary\">\n <IonButton color=\"danger\">Edit</IonButton>\n </IonButtons>\n <IonTitle>Text Only Buttons</IonTitle>\n </IonToolbar>\n\n <IonToolbar>\n <IonButtons slot=\"start\">\n <IonMenuButton autoHide={false} />\n </IonButtons>\n <IonButtons slot=\"secondary\">\n <IonButton>\n <IonIcon slot=\"icon-only\" name=\"star\" />\n </IonButton>\n </IonButtons>\n <IonTitle>Left side menu toggle</IonTitle>\n </IonToolbar>\n\n <IonToolbar>\n <IonButtons slot=\"primary\">\n <IonButton onClick={() => {}}>\n <IonIcon slot=\"icon-only\" name=\"star\" />\n </IonButton>\n </IonButtons>\n <IonTitle>Right side menu toggle</IonTitle>\n <IonButtons slot=\"end\">\n <IonMenuButton autoHide={false} />\n </IonButtons>\n </IonToolbar>\n\n <IonToolbar>\n <IonButtons slot=\"primary\">\n <IonButton onClick={() => {}}>\n <IonIcon slot=\"icon-only\" name=\"search\" />\n </IonButton>\n </IonButtons>\n <IonSearchbar placeholder=\"Search Favorites\" />\n </IonToolbar>\n\n <IonToolbar>\n <IonSegment>\n <IonSegmentButton value=\"all\" checked>\n All\n </IonSegmentButton>\n <IonSegmentButton value=\"favorites\">Favorites</IonSegmentButton>\n </IonSegment>\n </IonToolbar>\n\n <IonToolbar color=\"secondary\">\n <IonButtons slot=\"secondary\">\n <IonButton>\n <IonIcon slot=\"icon-only\" name=\"contact\" />\n </IonButton>\n <IonButton>\n <IonIcon slot=\"icon-only\" name=\"search\" />\n </IonButton>\n </IonButtons>\n <IonButtons slot=\"primary\">\n <IonButton color=\"primary\">\n <IonIcon slot=\"icon-only\" name=\"more\" />\n </IonButton>\n </IonButtons>\n <IonTitle>Secondary Toolbar</IonTitle>\n </IonToolbar>\n\n <IonToolbar color=\"dark\">\n <IonButtons slot=\"secondary\">\n <IonButton>\n <IonIcon slot=\"icon-only\" name=\"contact\" />\n </IonButton>\n <IonButton>\n <IonIcon slot=\"icon-only\" name=\"search\" />\n </IonButton>\n </IonButtons>\n <IonButtons slot=\"primary\">\n <IonButton color=\"danger\">\n <IonIcon slot=\"icon-only\" name=\"more\" />\n </IonButton>\n </IonButtons>\n <IonTitle>Dark Toolbar</IonTitle>\n </IonToolbar>\n);\n```\n",
12518 "vue": "```html\n<template>\n <ion-toolbar>\n <ion-title>Title Only</ion-title>\n </ion-toolbar>\n\n <ion-toolbar>\n <ion-buttons slot=\"start\">\n <ion-back-button></ion-back-button>\n </ion-buttons>\n <ion-title>Back Button</ion-title>\n </ion-toolbar>\n\n <ion-toolbar>\n <ion-title size=\"small\">Small Title above a Default Title</ion-title>\n </ion-toolbar>\n <ion-toolbar>\n <ion-title>Default Title</ion-title>\n </ion-toolbar>\n\n <ion-toolbar>\n <ion-buttons slot=\"secondary\">\n <ion-button>\n <ion-icon slot=\"icon-only\" name=\"contact\"></ion-icon>\n </ion-button>\n <ion-button>\n <ion-icon slot=\"icon-only\" name=\"search\"></ion-icon>\n </ion-button>\n </ion-buttons>\n <ion-buttons slot=\"primary\">\n <ion-button color=\"secondary\">\n <ion-icon slot=\"icon-only\" name=\"more\"></ion-icon>\n </ion-button>\n </ion-buttons>\n <ion-title>Default Buttons</ion-title>\n </ion-toolbar>\n\n <ion-toolbar>\n <ion-buttons slot=\"secondary\">\n <ion-button fill=\"solid\">\n <ion-icon slot=\"start\" name=\"contact\"></ion-icon>\n Contact\n </ion-button>\n </ion-buttons>\n <ion-title>Solid Buttons</ion-title>\n <ion-buttons slot=\"primary\">\n <ion-button fill=\"solid\" color=\"secondary\">\n Help\n <ion-icon slot=\"end\" name=\"help-circle\"></ion-icon>\n </ion-button>\n </ion-buttons>\n </ion-toolbar>\n\n <ion-toolbar>\n <ion-buttons slot=\"secondary\">\n <ion-button fill=\"outline\">\n <ion-icon slot=\"start\" name=\"star\"></ion-icon>\n Star\n </ion-button>\n </ion-buttons>\n <ion-title>Outline Buttons</ion-title>\n <ion-buttons slot=\"primary\">\n <ion-button color=\"danger\" fill=\"outline\">\n Edit\n <ion-icon slot=\"end\" name=\"create\"></ion-icon>\n </ion-button>\n </ion-buttons>\n </ion-toolbar>\n\n <ion-toolbar>\n <ion-buttons slot=\"secondary\">\n <ion-button>\n Account\n </ion-button>\n </ion-buttons>\n <ion-buttons slot=\"primary\">\n <ion-button color=\"danger\">\n Edit\n </ion-button>\n </ion-buttons>\n <ion-title>Text Only Buttons</ion-title>\n </ion-toolbar>\n\n <ion-toolbar>\n <ion-buttons slot=\"start\">\n <ion-menu-button autoHide=\"false\"></ion-menu-button>\n\n </ion-buttons>\n <ion-buttons slot=\"secondary\">\n <ion-button>\n <ion-icon slot=\"icon-only\" name=\"star\"></ion-icon>\n </ion-button>\n </ion-buttons>\n <ion-title>Left side menu toggle</ion-title>\n </ion-toolbar>\n\n <ion-toolbar>\n <ion-buttons slot=\"primary\">\n <ion-button @click=\"clickedStar()\">\n <ion-icon slot=\"icon-only\" name=\"star\"></ion-icon>\n </ion-button>\n </ion-buttons>\n <ion-title>Right side menu toggle</ion-title>\n <ion-buttons slot=\"end\">\n <ion-menu-button autoHide=\"false\"></ion-menu-button>\n\n </ion-buttons>\n </ion-toolbar>\n\n <ion-toolbar>\n <ion-buttons slot=\"primary\">\n <ion-button @click=\"clickedSearch()\">\n <ion-icon slot=\"icon-only\" name=\"search\"></ion-icon>\n </ion-button>\n </ion-buttons>\n <ion-searchbar placeholder=\"Search Favorites\"></ion-searchbar>\n </ion-toolbar>\n\n <ion-toolbar>\n <ion-segment>\n <ion-segment-button value=\"all\" checked>\n All\n </ion-segment-button>\n <ion-segment-button value=\"favorites\">\n Favorites\n </ion-segment-button>\n </ion-segment>\n </ion-toolbar>\n\n <ion-toolbar color=\"secondary\">\n <ion-buttons slot=\"secondary\">\n <ion-button>\n <ion-icon slot=\"icon-only\" name=\"contact\"></ion-icon>\n </ion-button>\n <ion-button>\n <ion-icon slot=\"icon-only\" name=\"search\"></ion-icon>\n </ion-button>\n </ion-buttons>\n <ion-buttons slot=\"primary\">\n <ion-button color=\"primary\">\n <ion-icon slot=\"icon-only\" name=\"more\"></ion-icon>\n </ion-button>\n </ion-buttons>\n <ion-title>Secondary Toolbar</ion-title>\n </ion-toolbar>\n\n <ion-toolbar color=\"dark\">\n <ion-buttons slot=\"secondary\">\n <ion-button>\n <ion-icon slot=\"icon-only\" name=\"contact\"></ion-icon>\n </ion-button>\n <ion-button>\n <ion-icon slot=\"icon-only\" name=\"search\"></ion-icon>\n </ion-button>\n </ion-buttons>\n <ion-buttons slot=\"primary\">\n <ion-button color=\"danger\">\n <ion-icon slot=\"icon-only\" name=\"more\"></ion-icon>\n </ion-button>\n </ion-buttons>\n <ion-title>Dark Toolbar</ion-title>\n </ion-toolbar>\n</template>\n```"
12519 },
12520 "props": [
12521 {
12522 "name": "color",
12523 "type": "string | undefined",
12524 "mutable": false,
12525 "attr": "color",
12526 "reflectToAttr": false,
12527 "docs": "The color to use from your application's color palette.\nDefault options are: `\"primary\"`, `\"secondary\"`, `\"tertiary\"`, `\"success\"`, `\"warning\"`, `\"danger\"`, `\"light\"`, `\"medium\"`, and `\"dark\"`.\nFor more information on colors, see [theming](/docs/theming/basics).",
12528 "docsTags": [],
12529 "optional": true,
12530 "required": false
12531 },
12532 {
12533 "name": "mode",
12534 "type": "\"ios\" | \"md\"",
12535 "mutable": false,
12536 "attr": "mode",
12537 "reflectToAttr": false,
12538 "docs": "The mode determines which platform styles to use.",
12539 "docsTags": [],
12540 "optional": true,
12541 "required": false
12542 }
12543 ],
12544 "methods": [],
12545 "events": [],
12546 "styles": [
12547 {
12548 "name": "--background",
12549 "annotation": "prop",
12550 "docs": "Background of the toolbar"
12551 },
12552 {
12553 "name": "--border-color",
12554 "annotation": "prop",
12555 "docs": "Color of the toolbar border"
12556 },
12557 {
12558 "name": "--border-style",
12559 "annotation": "prop",
12560 "docs": "Style of the toolbar border"
12561 },
12562 {
12563 "name": "--border-width",
12564 "annotation": "prop",
12565 "docs": "Width of the toolbar border"
12566 },
12567 {
12568 "name": "--color",
12569 "annotation": "prop",
12570 "docs": "Color of the toolbar text"
12571 },
12572 {
12573 "name": "--min-height",
12574 "annotation": "prop",
12575 "docs": "Minimum height of the toolbar"
12576 },
12577 {
12578 "name": "--opacity",
12579 "annotation": "prop",
12580 "docs": "Opacity of the toolbar background"
12581 },
12582 {
12583 "name": "--padding-bottom",
12584 "annotation": "prop",
12585 "docs": "Bottom padding of the toolbar"
12586 },
12587 {
12588 "name": "--padding-end",
12589 "annotation": "prop",
12590 "docs": "Right padding if direction is left-to-right, and left padding if direction is right-to-left of the toolbar"
12591 },
12592 {
12593 "name": "--padding-start",
12594 "annotation": "prop",
12595 "docs": "Left padding if direction is left-to-right, and right padding if direction is right-to-left of the toolbar"
12596 },
12597 {
12598 "name": "--padding-top",
12599 "annotation": "prop",
12600 "docs": "Top padding of the toolbar"
12601 }
12602 ],
12603 "slots": [
12604 {
12605 "name": "",
12606 "docs": "Content is placed between the named slots if provided without a slot."
12607 },
12608 {
12609 "name": "end",
12610 "docs": "Content is placed to the right of the toolbar text in LTR, and to the left in RTL."
12611 },
12612 {
12613 "name": "primary",
12614 "docs": "Content is placed to the right of the toolbar text in `ios` mode, and to the far right in `md` mode."
12615 },
12616 {
12617 "name": "secondary",
12618 "docs": "Content is placed to the left of the toolbar text in `ios` mode, and directly to the right in `md` mode."
12619 },
12620 {
12621 "name": "start",
12622 "docs": "Content is placed to the left of the toolbar text in LTR, and to the right in RTL."
12623 }
12624 ]
12625 },
12626 {
12627 "tag": "ion-virtual-scroll",
12628 "filePath": "src/components/virtual-scroll/virtual-scroll.tsx",
12629 "encapsulation": "none",
12630 "readme": "# ion-virtual-scroll\n\nVirtual Scroll displays a virtual, \"infinite\" list. An array of records\nis passed to the virtual scroll containing the data to create templates\nfor. The template created for each record, referred to as a cell, can\nconsist of items, headers, and footers. For performance reasons, not every record\nin the list is rendered at once; instead a small subset of records (enough to fill the viewport)\nare rendered and reused as the user scrolls.\n\n\n### Approximate Widths and Heights\n\nIf the height of items in the virtual scroll are not close to the\ndefault size of `40px`, it is extremely important to provide a value for\nthe `approxItemHeight` property. An exact pixel-perfect size is not necessary,\nbut without an estimate the virtual scroll will not render correctly.\n\nThe approximate width and height of each template is used to help\ndetermine how many cells should be created, and to help calculate\nthe height of the scrollable area. Note that the actual rendered size\nof each cell comes from the app's CSS, whereas this approximation\nis only used to help calculate initial dimensions.\n\nIt's also important to know that Ionic's default item sizes have\nslightly different heights between platforms, which is perfectly fine.\n\n### Images Within Virtual Scroll\n\nHTTP requests, image decoding, and image rendering can cause jank while\nscrolling. In order to better control images, Ionic provides `<ion-img>`\nto manage HTTP requests and image rendering. While scrolling through items\nquickly, `<ion-img>` knows when and when not to make requests, when and\nwhen not to render images, and only loads the images that are viewable\nafter scrolling. [Read more about `ion-img`.](../img)\n\nIt's also important for app developers to ensure image sizes are locked in,\nand after images have fully loaded they do not change size and affect any\nother element sizes. Simply put, to ensure rendering bugs are not introduced,\nit's vital that elements within a virtual item does not dynamically change.\n\nFor virtual scrolling, the natural effects of the `<img>` are not desirable\nfeatures. We recommend using the `<ion-img>` component over the native\n`<img>` element because when an `<img>` element is added to the DOM, it\nimmediately makes a HTTP request for the image file. Additionally, `<img>`\nrenders whenever it wants which could be while the user is scrolling. However,\n`<ion-img>` is governed by the containing `ion-content` and does not render\nimages while scrolling quickly.\n\n\n## Virtual Scroll Performance Tips\n\n#### iOS Cordova WKWebView\n\nWhen deploying to iOS with Cordova, it's highly recommended to use the\n[WKWebView plugin](https://blog.ionicframework.com/cordova-ios-performance-improvements-drop-in-speed-with-wkwebview/)\nin order to take advantage of iOS's higher performing webview. Additionally,\nWKWebView is superior at scrolling efficiently in comparison to the older\nUIWebView.\n\n#### Lock in element dimensions and locations\n\nIn order for virtual scroll to efficiently size and locate every item, it's\nvery important every element within each virtual item does not dynamically\nchange its dimensions or location. The best way to ensure size and location\ndoes not change, it's recommended each virtual item has locked in its size\nvia CSS.\n\n#### Use `ion-img` for images\n\nWhen including images within Virtual Scroll, be sure to use\n[`ion-img`](../img/Img/) rather than the standard `<img>` HTML element.\nWith `ion-img`, images are lazy loaded so only the viewable ones are\nrendered, and HTTP requests are efficiently controlled while scrolling.\n\n#### Set Approximate Widths and Heights\n\nAs mentioned above, all elements should lock in their dimensions. However,\nvirtual scroll isn't aware of the dimensions until after they have been\nrendered. For the initial render, virtual scroll still needs to set\nhow many items should be built. With \"approx\" property inputs, such as\n`approxItemHeight`, we're able to give virtual scroll an approximate size,\ntherefore allowing virtual scroll to decide how many items should be\ncreated.\n\n#### Changing dataset should use `virtualTrackBy`\n\nIt is possible for the identities of elements in the iterator to change\nwhile the data does not. This can happen, for example, if the iterator\nproduced from an RPC to the server, and that RPC is re-run. Even if the\n\"data\" hasn't changed, the second response will produce objects with\ndifferent identities, and Ionic will tear down the entire DOM and rebuild\nit. This is an expensive operation and should be avoided if possible.\n\n#### Efficient headers and footer functions\nEach virtual item must stay extremely efficient, but one way to really\nkill its performance is to perform any DOM operations within section header\nand footer functions. These functions are called for every record in the\ndataset, so please make sure they're performant.\n\n## React\n\nThe Virtual Scroll component is not supported in React.\n",
12631 "docs": "Virtual Scroll displays a virtual, \"infinite\" list. An array of records\nis passed to the virtual scroll containing the data to create templates\nfor. The template created for each record, referred to as a cell, can\nconsist of items, headers, and footers. For performance reasons, not every record\nin the list is rendered at once; instead a small subset of records (enough to fill the viewport)\nare rendered and reused as the user scrolls.",
12632 "docsTags": [],
12633 "usage": {
12634 "angular": "```html\n<ion-content>\n <ion-virtual-scroll [items]=\"items\" approxItemHeight=\"320px\">\n <ion-card *virtualItem=\"let item; let itemBounds = bounds;\">\n <div>\n <ion-img [src]=\"item.imgSrc\" [height]=\"item.imgHeight\" [alt]=\"item.name\"></ion-img>\n </div>\n <ion-card-header>\n <ion-card-title>{{ item.name }}</ion-card-title>\n </ion-card-header>\n <ion-card-content>{{ item.content }}</ion-card-content>\n </ion-card>\n </ion-virtual-scroll>\n</ion-content>\n```\n\n```typescript\nexport class VirtualScrollPageComponent {\n items: any[] = [];\n\n constructor() {\n for (let i = 0; i < 1000; i++) {\n this.items.push({\n name: i + ' - ' + images[rotateImg],\n imgSrc: getImgSrc(),\n avatarSrc: getImgSrc(),\n imgHeight: Math.floor(Math.random() * 50 + 150),\n content: lorem.substring(0, Math.random() * (lorem.length - 100) + 100)\n });\n\n rotateImg++;\n if (rotateImg === images.length) {\n rotateImg = 0;\n }\n }\n }\n}\n\nconst lorem = 'Lorem ipsum dolor sit amet, consectetur adipiscing elit, seddo eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.';\n\nconst images = [\n 'bandit',\n 'batmobile',\n 'blues-brothers',\n 'bueller',\n 'delorean',\n 'eleanor',\n 'general-lee',\n 'ghostbusters',\n 'knight-rider',\n 'mirth-mobile'\n];\n\nfunction getImgSrc() {\n const src = 'https://dummyimage.com/600x400/${Math.round( Math.random() * 99999)}/fff.png';\n rotateImg++;\n if (rotateImg === images.length) {\n rotateImg = 0;\n }\n return src;\n}\n\nlet rotateImg = 0;\n```\n\n### Basic\n\nThe array of records should be passed to the `items` property on the `ion-virtual-scroll` element.\nThe data given to the `items` property must be an array. An item template with the `*virtualItem` property is required in the `ion-virtual-scroll`. The `*virtualItem` property can be added to any element.\n\n```html\n<ion-virtual-scroll [items]=\"items\">\n <ion-item *virtualItem=\"let item\">\n {{ item }}\n </ion-item>\n</ion-virtual-scroll>\n```\n\n### Section Headers and Footers\n\nSection headers and footers are optional. They can be dynamically created\nfrom developer-defined functions. For example, a large list of contacts\nusually has a divider for each letter in the alphabet. Developers provide\ntheir own custom function to be called on each record. The logic in the\ncustom function should determine whether to create the section template\nand what data to provide to the template. The custom function should\nreturn `null` if a template shouldn't be created.\n\n```html\n<ion-virtual-scroll [items]=\"items\" [headerFn]=\"myHeaderFn\">\n <ion-item-divider *virtualHeader=\"let header\">\n {{ header }}\n </ion-item-divider>\n <ion-item *virtualItem=\"let item\">\n Item: {{ item }}\n </ion-item>\n</ion-virtual-scroll>\n```\n\nBelow is an example of a custom function called on every record. It\ngets passed the individual record, the record's index number,\nand the entire array of records. In this example, after every 20\nrecords a header will be inserted. So between the 19th and 20th records,\nbetween the 39th and 40th, and so on, a `<ion-item-divider>` will\nbe created and the template's data will come from the function's\nreturned data.\n\n```ts\nmyHeaderFn(record, recordIndex, records) {\n if (recordIndex % 20 === 0) {\n return 'Header ' + recordIndex;\n }\n return null;\n}\n```\n\n\n### Custom Components\n\nIf a custom component is going to be used within Virtual Scroll, it's best\nto wrap it with a `<div>` to ensure the component is rendered correctly. Since\neach custom component's implementation and internals can be quite different, wrapping\nwithin a `<div>` is a safe way to make sure dimensions are measured correctly.\n\n```html\n<ion-virtual-scroll [items]=\"items\">\n <div *virtualItem=\"let item\">\n <my-custom-item [item]=\"item\">\n {{ item }}\n </my-custom-item>\n </div>\n</ion-virtual-scroll>\n```"
12635 },
12636 "props": [
12637 {
12638 "name": "approxFooterHeight",
12639 "type": "number",
12640 "mutable": false,
12641 "attr": "approx-footer-height",
12642 "reflectToAttr": false,
12643 "docs": "The approximate width of each footer template's cell.\nThis dimension is used to help determine how many cells should\nbe created when initialized, and to help calculate the height of\nthe scrollable area. This height value can only use `px` units.\nNote that the actual rendered size of each cell comes from the\napp's CSS, whereas this approximation is used to help calculate\ninitial dimensions before the item has been rendered.",
12644 "docsTags": [],
12645 "default": "30",
12646 "optional": false,
12647 "required": false
12648 },
12649 {
12650 "name": "approxHeaderHeight",
12651 "type": "number",
12652 "mutable": false,
12653 "attr": "approx-header-height",
12654 "reflectToAttr": false,
12655 "docs": "The approximate height of each header template's cell.\nThis dimension is used to help determine how many cells should\nbe created when initialized, and to help calculate the height of\nthe scrollable area. This height value can only use `px` units.\nNote that the actual rendered size of each cell comes from the\napp's CSS, whereas this approximation is used to help calculate\ninitial dimensions before the item has been rendered.",
12656 "docsTags": [],
12657 "default": "30",
12658 "optional": false,
12659 "required": false
12660 },
12661 {
12662 "name": "approxItemHeight",
12663 "type": "number",
12664 "mutable": false,
12665 "attr": "approx-item-height",
12666 "reflectToAttr": false,
12667 "docs": "It is important to provide this\nif virtual item height will be significantly larger than the default\nThe approximate height of each virtual item template's cell.\nThis dimension is used to help determine how many cells should\nbe created when initialized, and to help calculate the height of\nthe scrollable area. This height value can only use `px` units.\nNote that the actual rendered size of each cell comes from the\napp's CSS, whereas this approximation is used to help calculate\ninitial dimensions before the item has been rendered.",
12668 "docsTags": [],
12669 "default": "45",
12670 "optional": false,
12671 "required": false
12672 },
12673 {
12674 "name": "footerFn",
12675 "type": "((item: any, index: number, items: any[]) => string | null | undefined) | undefined",
12676 "mutable": false,
12677 "reflectToAttr": false,
12678 "docs": "Section footers and the data used within its given\ntemplate can be dynamically created by passing a function to `footerFn`.\nThe logic within the footer function can decide if the footer template\nshould be used, and what data to give to the footer template. The function\nmust return `null` if a footer cell shouldn't be created.",
12679 "docsTags": [],
12680 "optional": true,
12681 "required": false
12682 },
12683 {
12684 "name": "footerHeight",
12685 "type": "((item: any, index: number) => number) | undefined",
12686 "mutable": false,
12687 "reflectToAttr": false,
12688 "docs": "An optional function that maps each item footer within their height.",
12689 "docsTags": [],
12690 "optional": true,
12691 "required": false
12692 },
12693 {
12694 "name": "headerFn",
12695 "type": "((item: any, index: number, items: any[]) => string | null | undefined) | undefined",
12696 "mutable": false,
12697 "reflectToAttr": false,
12698 "docs": "Section headers and the data used within its given\ntemplate can be dynamically created by passing a function to `headerFn`.\nFor example, a large list of contacts usually has dividers between each\nletter in the alphabet. App's can provide their own custom `headerFn`\nwhich is called with each record within the dataset. The logic within\nthe header function can decide if the header template should be used,\nand what data to give to the header template. The function must return\n`null` if a header cell shouldn't be created.",
12699 "docsTags": [],
12700 "optional": true,
12701 "required": false
12702 },
12703 {
12704 "name": "headerHeight",
12705 "type": "((item: any, index: number) => number) | undefined",
12706 "mutable": false,
12707 "reflectToAttr": false,
12708 "docs": "An optional function that maps each item header within their height.",
12709 "docsTags": [],
12710 "optional": true,
12711 "required": false
12712 },
12713 {
12714 "name": "itemHeight",
12715 "type": "((item: any, index: number) => number) | undefined",
12716 "mutable": false,
12717 "reflectToAttr": false,
12718 "docs": "An optional function that maps each item within their height.\nWhen this function is provides, heavy optimizations and fast path can be taked by\n`ion-virtual-scroll` leading to massive performance improvements.\n\nThis function allows to skip all DOM reads, which can be Doing so leads\nto massive performance",
12719 "docsTags": [],
12720 "optional": true,
12721 "required": false
12722 },
12723 {
12724 "name": "items",
12725 "type": "any[] | undefined",
12726 "mutable": false,
12727 "reflectToAttr": false,
12728 "docs": "The data that builds the templates within the virtual scroll.\nIt's important to note that when this data has changed, then the\nentire virtual scroll is reset, which is an expensive operation and\nshould be avoided if possible.",
12729 "docsTags": [],
12730 "optional": true,
12731 "required": false
12732 },
12733 {
12734 "name": "nodeRender",
12735 "type": "((el: HTMLElement | null, cell: Cell, domIndex: number) => HTMLElement) | undefined",
12736 "mutable": false,
12737 "reflectToAttr": false,
12738 "docs": "NOTE: only Vanilla JS API.",
12739 "docsTags": [],
12740 "optional": true,
12741 "required": false
12742 },
12743 {
12744 "name": "renderFooter",
12745 "type": "((item: any, index: number) => any) | undefined",
12746 "mutable": false,
12747 "reflectToAttr": false,
12748 "docs": "NOTE: only JSX API for stencil.\n\nProvide a render function for the footer to be rendered. Returns a JSX virtual-dom.",
12749 "docsTags": [],
12750 "optional": true,
12751 "required": false
12752 },
12753 {
12754 "name": "renderHeader",
12755 "type": "((item: any, index: number) => any) | undefined",
12756 "mutable": false,
12757 "reflectToAttr": false,
12758 "docs": "NOTE: only JSX API for stencil.\n\nProvide a render function for the header to be rendered. Returns a JSX virtual-dom.",
12759 "docsTags": [],
12760 "optional": true,
12761 "required": false
12762 },
12763 {
12764 "name": "renderItem",
12765 "type": "((item: any, index: number) => any) | undefined",
12766 "mutable": false,
12767 "reflectToAttr": false,
12768 "docs": "NOTE: only JSX API for stencil.\n\nProvide a render function for the items to be rendered. Returns a JSX virtual-dom.",
12769 "docsTags": [],
12770 "optional": true,
12771 "required": false
12772 }
12773 ],
12774 "methods": [
12775 {
12776 "name": "checkEnd",
12777 "returns": {
12778 "type": "Promise<void>",
12779 "docs": ""
12780 },
12781 "signature": "checkEnd() => Promise<void>",
12782 "parameters": [],
12783 "docs": "This method marks the tail the items array as dirty, so they can be re-rendered.\n\nIt's equivalent to calling:\n\n```js\nvirtualScroll.checkRange(lastItemLen);\n```",
12784 "docsTags": []
12785 },
12786 {
12787 "name": "checkRange",
12788 "returns": {
12789 "type": "Promise<void>",
12790 "docs": ""
12791 },
12792 "signature": "checkRange(offset: number, len?: number) => Promise<void>",
12793 "parameters": [],
12794 "docs": "This method marks a subset of items as dirty, so they can be re-rendered. Items should be marked as\ndirty any time the content or their style changes.\n\nThe subset of items to be updated can are specifing by an offset and a length.",
12795 "docsTags": []
12796 },
12797 {
12798 "name": "positionForItem",
12799 "returns": {
12800 "type": "Promise<number>",
12801 "docs": ""
12802 },
12803 "signature": "positionForItem(index: number) => Promise<number>",
12804 "parameters": [],
12805 "docs": "Returns the position of the virtual item at the given index.",
12806 "docsTags": []
12807 }
12808 ],
12809 "events": [],
12810 "styles": [],
12811 "slots": []
12812 }
12813 ]
12814}
\No newline at end of file