-
Notifications
You must be signed in to change notification settings - Fork 13.4k
feat(toast): add hue property for the ionic theme #30333
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Merged
Merged
Changes from all commits
Commits
Show all changes
43 commits
Select commit
Hold shift + click to select a range
9b25ed0
feat(css): add support for the subtle color map
brandyscarney 2a0fdf3
Merge branch 'next' into FW-6252
brandyscarney e8605e7
test(theme): skip test because all tests fail on one or more colors
brandyscarney 5391165
chore(): add updated snapshots
Ionitron 19c944a
style: comments
brandyscarney 147550a
Merge branch 'next' into FW-6252
brandyscarney e13d85d
Merge branch 'next' into FW-6252
brandyscarney 8fc775f
refactor(themes): add foreground color for colors when used as text
brandyscarney 5f2e195
feat(toast): add subtle hue for the ionic theme
brandyscarney 9bfe374
test(theme): use proper color variants
brandyscarney 46daa85
test: backdrop
brandyscarney caf3c2d
style: lint
brandyscarney aed941f
test(themes): re-enable tests with correct checks
brandyscarney e86e9d5
chore(): add updated snapshots
Ionitron 59d713f
revert back to tokens
brandyscarney 6306fe6
style: lint
brandyscarney e2fbe91
Merge branch 'FW-6252' into FW-6252-toast
brandyscarney a84f282
Merge branch 'next' into FW-6252
brandyscarney 60a241f
fix(themes): add tertiary, remove TODOs
brandyscarney 465a5ef
lint again and again and again
brandyscarney 7e8e4e8
Merge branch 'FW-6252' into FW-6252-toast
brandyscarney 3187866
chore(): add updated snapshots
Ionitron 75421d3
fix(themes): update other palettes to include foreground
brandyscarney eca3566
fix(themes): do not require the foreground variant for ios and md
brandyscarney 67f8334
Merge branch 'next' into FW-6252
brandyscarney df94653
Merge branch 'FW-6252' into FW-6252-toast
brandyscarney 22ddb4c
fix(css): remove the unused foreground vars
brandyscarney 6d05513
style: comment cleanup
brandyscarney da4e069
fix(themes): fallback to base if foreground is undefined
brandyscarney db28e8b
Merge branch 'FW-6252' into FW-6252-toast
brandyscarney c19c29d
fix(toast): default hue should be subtle
brandyscarney be28b4f
test(toast): title
brandyscarney a786cc1
fix(toast): move the background and colors to the subtle and bold cla…
brandyscarney eee9f14
test(toast): add e2e test for subtle and improve positioning using in…
brandyscarney d184ad0
chore(): add updated snapshots
brandyscarney 811e2a5
fix(toast): default to neutral colors
brandyscarney ad2cdd1
chore(): add updated snapshots
brandyscarney 01a2583
fix(toast): use correct button colors
brandyscarney fd0ec49
chore(): add updated snapshots
brandyscarney 670ebb2
chore: build
brandyscarney a3c52ff
docs
brandyscarney c33fec5
Merge branch 'next' into FW-6252-toast
brandyscarney d763ff8
Merge branch 'next' into FW-6252-toast
brandyscarney File filter
Filter by extension
Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
There are no files selected for viewing
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Binary file modified
BIN
+43 Bytes
(100%)
...toast.e2e.ts-snapshots/toast-bottom-ionic-ios-ltr-light-Mobile-Chrome-linux.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file modified
BIN
+2 Bytes
(100%)
...oast.e2e.ts-snapshots/toast-bottom-ionic-ios-ltr-light-Mobile-Firefox-linux.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file modified
BIN
-34 Bytes
(100%)
...toast.e2e.ts-snapshots/toast-bottom-ionic-ios-ltr-light-Mobile-Safari-linux.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file modified
BIN
+35 Bytes
(100%)
.../toast.e2e.ts-snapshots/toast-bottom-ionic-md-ltr-light-Mobile-Chrome-linux.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file modified
BIN
-28 Bytes
(100%)
...toast.e2e.ts-snapshots/toast-bottom-ionic-md-ltr-light-Mobile-Firefox-linux.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file modified
BIN
+7 Bytes
(100%)
.../toast.e2e.ts-snapshots/toast-bottom-ionic-md-ltr-light-Mobile-Safari-linux.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file modified
BIN
+65 Bytes
(100%)
...toast.e2e.ts-snapshots/toast-buttons-ionic-md-ltr-light-Mobile-Chrome-linux.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file modified
BIN
+265 Bytes
(110%)
...oast.e2e.ts-snapshots/toast-buttons-ionic-md-ltr-light-Mobile-Firefox-linux.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file modified
BIN
+30 Bytes
(100%)
...toast.e2e.ts-snapshots/toast-buttons-ionic-md-ltr-light-Mobile-Safari-linux.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file modified
BIN
+106 Bytes
(100%)
...toast.e2e.ts-snapshots/toast-buttons-ionic-md-rtl-light-Mobile-Chrome-linux.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file modified
BIN
+275 Bytes
(110%)
...oast.e2e.ts-snapshots/toast-buttons-ionic-md-rtl-light-Mobile-Firefox-linux.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file modified
BIN
+71 Bytes
(100%)
...toast.e2e.ts-snapshots/toast-buttons-ionic-md-rtl-light-Mobile-Safari-linux.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file modified
BIN
-1 Byte
(100%)
...c/toast.e2e.ts-snapshots/toast-color-ionic-md-ltr-light-Mobile-Chrome-linux.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file modified
BIN
+160 Bytes
(100%)
.../toast.e2e.ts-snapshots/toast-color-ionic-md-ltr-light-Mobile-Firefox-linux.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file modified
BIN
-39 Bytes
(99%)
...c/toast.e2e.ts-snapshots/toast-color-ionic-md-ltr-light-Mobile-Safari-linux.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file modified
BIN
+45 Bytes
(100%)
...toast.e2e.ts-snapshots/toast-middle-ionic-ios-ltr-light-Mobile-Chrome-linux.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file modified
BIN
+92 Bytes
(100%)
...oast.e2e.ts-snapshots/toast-middle-ionic-ios-ltr-light-Mobile-Firefox-linux.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file modified
BIN
-26 Bytes
(100%)
...toast.e2e.ts-snapshots/toast-middle-ionic-ios-ltr-light-Mobile-Safari-linux.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file modified
BIN
+46 Bytes
(100%)
.../toast.e2e.ts-snapshots/toast-middle-ionic-md-ltr-light-Mobile-Chrome-linux.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file modified
BIN
-7 Bytes
(100%)
...toast.e2e.ts-snapshots/toast-middle-ionic-md-ltr-light-Mobile-Firefox-linux.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file modified
BIN
+29 Bytes
(100%)
.../toast.e2e.ts-snapshots/toast-middle-ionic-md-ltr-light-Mobile-Safari-linux.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file modified
BIN
-243 Bytes
(92%)
...ast.e2e.ts-snapshots/toast-start-end-ionic-md-ltr-light-Mobile-Chrome-linux.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file modified
BIN
+146 Bytes
(100%)
...st.e2e.ts-snapshots/toast-start-end-ionic-md-ltr-light-Mobile-Firefox-linux.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file modified
BIN
-259 Bytes
(93%)
...ast.e2e.ts-snapshots/toast-start-end-ionic-md-ltr-light-Mobile-Safari-linux.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file modified
BIN
-297 Bytes
(90%)
...ast.e2e.ts-snapshots/toast-start-end-ionic-md-rtl-light-Mobile-Chrome-linux.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file modified
BIN
+143 Bytes
(100%)
...st.e2e.ts-snapshots/toast-start-end-ionic-md-rtl-light-Mobile-Firefox-linux.png
Oops, something went wrong.
Binary file modified
BIN
-233 Bytes
(94%)
...ast.e2e.ts-snapshots/toast-start-end-ionic-md-rtl-light-Mobile-Safari-linux.png
Oops, something went wrong.
Binary file modified
BIN
-87 Bytes
(99%)
...ic/toast.e2e.ts-snapshots/toast-text-ionic-md-ltr-light-Mobile-Chrome-linux.png
Oops, something went wrong.
Binary file modified
BIN
+651 Bytes
(110%)
...c/toast.e2e.ts-snapshots/toast-text-ionic-md-ltr-light-Mobile-Firefox-linux.png
Oops, something went wrong.
Binary file modified
BIN
+563 Bytes
(100%)
...ic/toast.e2e.ts-snapshots/toast-text-ionic-md-ltr-light-Mobile-Safari-linux.png
Oops, something went wrong.
Binary file modified
BIN
-270 Bytes
(99%)
...ic/toast.e2e.ts-snapshots/toast-top-ionic-ios-ltr-light-Mobile-Chrome-linux.png
Oops, something went wrong.
Binary file modified
BIN
-148 Bytes
(100%)
...c/toast.e2e.ts-snapshots/toast-top-ionic-ios-ltr-light-Mobile-Firefox-linux.png
Oops, something went wrong.
Binary file modified
BIN
-209 Bytes
(99%)
...ic/toast.e2e.ts-snapshots/toast-top-ionic-ios-ltr-light-Mobile-Safari-linux.png
Oops, something went wrong.
Binary file modified
BIN
-219 Bytes
(99%)
...sic/toast.e2e.ts-snapshots/toast-top-ionic-md-ltr-light-Mobile-Chrome-linux.png
Oops, something went wrong.
Binary file modified
BIN
-139 Bytes
(100%)
...ic/toast.e2e.ts-snapshots/toast-top-ionic-md-ltr-light-Mobile-Firefox-linux.png
Oops, something went wrong.
Binary file modified
BIN
-200 Bytes
(99%)
...sic/toast.e2e.ts-snapshots/toast-top-ionic-md-ltr-light-Mobile-Safari-linux.png
Oops, something went wrong.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,123 @@ | ||
| <!DOCTYPE html> | ||
| <html lang="en" dir="ltr"> | ||
| <head> | ||
| <meta charset="UTF-8" /> | ||
| <title>Toast - Hue</title> | ||
| <meta | ||
| name="viewport" | ||
| content="width=device-width, initial-scale=1.0, minimum-scale=1.0, maximum-scale=1.0, user-scalable=no, viewport-fit=cover" | ||
| /> | ||
| <link href="../../../../../css/ionic.bundle.css" rel="stylesheet" /> | ||
| <link href="../../../../../scripts/testing/styles.css" rel="stylesheet" /> | ||
| <script src="../../../../../scripts/testing/scripts.js"></script> | ||
| <script nomodule src="../../../../../dist/ionic/ionic.js"></script> | ||
| <script type="module" src="../../../../../dist/ionic/ionic.esm.js"></script> | ||
| </head> | ||
|
|
||
| <body> | ||
| <ion-app> | ||
| <ion-header> | ||
| <ion-toolbar> | ||
| <ion-title>Toast - Hue</ion-title> | ||
| </ion-toolbar> | ||
| </ion-header> | ||
|
|
||
| <ion-content class="ion-padding" id="content"> | ||
| <p> | ||
| Toasts are presented indefinitely but can be closed by clicking the backdrop. The backdrop has been added for | ||
| demo purposes only. | ||
| </p> | ||
|
|
||
| <button id="show-subtle-toasts" class="expand">Show All Subtle Toasts</button> | ||
| <button id="show-bold-toasts" class="expand">Show All Bold Toasts</button> | ||
| </ion-content> | ||
|
|
||
| <div id="backdrop" class="backdrop"></div> | ||
|
|
||
| <ion-toast position="top"></ion-toast> | ||
| <ion-toast color="primary" position="top"></ion-toast> | ||
| <ion-toast color="secondary" position="top"></ion-toast> | ||
| <ion-toast color="tertiary" position="top"></ion-toast> | ||
| <ion-toast color="success" position="top"></ion-toast> | ||
| <ion-toast color="warning" position="top"></ion-toast> | ||
| <ion-toast color="danger" position="top"></ion-toast> | ||
| <ion-toast color="light" position="top"></ion-toast> | ||
| <ion-toast color="medium" position="top"></ion-toast> | ||
| <ion-toast color="dark" position="top"></ion-toast> | ||
| </ion-app> | ||
|
|
||
| <script type="module"> | ||
| let lastToast = null; | ||
| let toastOffset = 10; | ||
|
|
||
| // Show all toasts when the button is clicked | ||
| function openAllToasts(isBold) { | ||
| toastOffset = 10; | ||
|
|
||
| const toasts = document.querySelectorAll('ion-toast'); | ||
|
|
||
| toasts.forEach((toast, index) => { | ||
| toast.removeAttribute('hue'); | ||
| toast.hue = isBold ? 'bold' : 'subtle'; | ||
| const hue = toast.hue; | ||
|
|
||
| const color = toast.color || 'default'; | ||
| toast.message = `This is a ${color} toast.`; | ||
|
|
||
| toast.icon = 'information-circle'; | ||
|
|
||
| toast.buttons = [ | ||
| { | ||
| text: 'Action', | ||
| }, | ||
| { | ||
| icon: 'close', | ||
| role: 'cancel', | ||
| }, | ||
| ]; | ||
|
|
||
| // Set dynamic position for each toast to ensure they don't overlap | ||
| toast.style.position = 'absolute'; | ||
| toast.style.top = `${toastOffset}px`; | ||
| toast.style.left = '50%'; | ||
| toast.style.transform = 'translateX(-50%)'; | ||
|
|
||
| toast.present(); | ||
|
|
||
| // Update the toastOffset for the next toast to ensure it's positioned below the previous one | ||
| toastOffset += 60; | ||
| }); | ||
|
|
||
| document.getElementById('backdrop').style.display = 'block'; | ||
| } | ||
|
|
||
| // Dismiss all toasts when backdrop is clicked | ||
| function dismissAllToasts() { | ||
| const toasts = document.querySelectorAll('ion-toast'); | ||
| toasts.forEach((toast) => toast.dismiss()); | ||
|
|
||
| document.getElementById('backdrop').style.display = 'none'; | ||
| } | ||
|
|
||
| document.addEventListener('DOMContentLoaded', function () { | ||
| document.getElementById('show-subtle-toasts').addEventListener('click', () => openAllToasts(false)); | ||
| document.getElementById('show-bold-toasts').addEventListener('click', () => openAllToasts(true)); | ||
|
|
||
| document.getElementById('backdrop').addEventListener('click', dismissAllToasts); | ||
| }); | ||
| </script> | ||
|
|
||
| <style> | ||
| .backdrop { | ||
| position: fixed; | ||
| top: 0; | ||
| left: 0; | ||
| right: 0; | ||
| bottom: 0; | ||
| background: rgba(0, 0, 0, 0.5); | ||
| z-index: 1000; | ||
| display: none; | ||
| } | ||
| </style> | ||
| </body> | ||
| </html> |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,59 @@ | ||
| import { expect } from '@playwright/test'; | ||
| import type { E2EPage, E2EPageOptions, ScreenshotFn, EventSpy } from '@utils/test/playwright'; | ||
| import { configs, test } from '@utils/test/playwright'; | ||
|
|
||
| class ToastFixture { | ||
| readonly page: E2EPage; | ||
|
|
||
| private ionToastDidPresent!: EventSpy; | ||
|
|
||
| constructor(page: E2EPage) { | ||
| this.page = page; | ||
| } | ||
|
|
||
| async goto(config: E2EPageOptions) { | ||
| const { page } = this; | ||
| await page.goto(`/src/components/toast/test/hue`, config); | ||
| this.ionToastDidPresent = await page.spyOnEvent('ionToastDidPresent'); | ||
| } | ||
|
|
||
| async openToast(selector: string) { | ||
| const { page, ionToastDidPresent } = this; | ||
| const button = page.locator(selector); | ||
| await button.click(); | ||
|
|
||
| await ionToastDidPresent.next(); | ||
|
|
||
| return { | ||
| toast: page.locator('ion-toast'), | ||
| }; | ||
| } | ||
|
|
||
| async screenshot(screenshotModifier: string, screenshot: ScreenshotFn) { | ||
| const { page } = this; | ||
|
|
||
| const screenshotString = screenshot(`toast-${screenshotModifier}`); | ||
|
|
||
| await expect(page).toHaveScreenshot(screenshotString); | ||
| } | ||
| } | ||
|
|
||
| configs({ directions: ['ltr'], modes: ['ionic-md'] }).forEach(({ title, screenshot, config }) => { | ||
| test.describe(title('toast: hue'), () => { | ||
| let toastFixture: ToastFixture; | ||
| test.beforeEach(async ({ page }) => { | ||
| toastFixture = new ToastFixture(page); | ||
| await toastFixture.goto(config); | ||
| }); | ||
|
|
||
| test('should show all subtle toasts', async () => { | ||
| await toastFixture.openToast('#show-subtle-toasts'); | ||
| await toastFixture.screenshot('subtle', screenshot); | ||
| }); | ||
|
|
||
| test('should show all bold toasts', async () => { | ||
| await toastFixture.openToast('#show-bold-toasts'); | ||
| await toastFixture.screenshot('bold', screenshot); | ||
| }); | ||
| }); | ||
| }); |
Binary file added
BIN
+60.1 KB
...ue/toast.e2e.ts-snapshots/toast-bold-ionic-md-ltr-light-Mobile-Chrome-linux.png
Oops, something went wrong.
Binary file added
BIN
+75.2 KB
...e/toast.e2e.ts-snapshots/toast-bold-ionic-md-ltr-light-Mobile-Firefox-linux.png
Oops, something went wrong.
Binary file added
BIN
+73.3 KB
...ue/toast.e2e.ts-snapshots/toast-bold-ionic-md-ltr-light-Mobile-Safari-linux.png
Oops, something went wrong.
Binary file added
BIN
+60.8 KB
.../toast.e2e.ts-snapshots/toast-subtle-ionic-md-ltr-light-Mobile-Chrome-linux.png
Oops, something went wrong.
Binary file added
BIN
+78.9 KB
...toast.e2e.ts-snapshots/toast-subtle-ionic-md-ltr-light-Mobile-Firefox-linux.png
Oops, something went wrong.
Binary file added
BIN
+74.2 KB
.../toast.e2e.ts-snapshots/toast-subtle-ionic-md-ltr-light-Mobile-Safari-linux.png
Oops, something went wrong.
Binary file modified
BIN
+17 Bytes
(100%)
...ts-snapshots/toast-shape-rectangular-ionic-md-ltr-light-Mobile-Chrome-linux.png
Oops, something went wrong.
Binary file modified
BIN
-8 Bytes
(100%)
...s-snapshots/toast-shape-rectangular-ionic-md-ltr-light-Mobile-Firefox-linux.png
Oops, something went wrong.
Binary file modified
BIN
-41 Bytes
(100%)
...ts-snapshots/toast-shape-rectangular-ionic-md-ltr-light-Mobile-Safari-linux.png
Oops, something went wrong.
Binary file modified
BIN
-240 Bytes
(99%)
...t.e2e.ts-snapshots/toast-shape-round-ionic-md-ltr-light-Mobile-Chrome-linux.png
Oops, something went wrong.
Binary file modified
BIN
-161 Bytes
(99%)
....e2e.ts-snapshots/toast-shape-round-ionic-md-ltr-light-Mobile-Firefox-linux.png
Oops, something went wrong.
Binary file modified
BIN
-258 Bytes
(99%)
...t.e2e.ts-snapshots/toast-shape-round-ionic-md-ltr-light-Mobile-Safari-linux.png
Oops, something went wrong.
Binary file modified
BIN
-80 Bytes
(100%)
...st.e2e.ts-snapshots/toast-shape-soft-ionic-md-ltr-light-Mobile-Chrome-linux.png
Oops, something went wrong.
Binary file modified
BIN
-69 Bytes
(100%)
...t.e2e.ts-snapshots/toast-shape-soft-ionic-md-ltr-light-Mobile-Firefox-linux.png
Oops, something went wrong.
Binary file modified
BIN
-206 Bytes
(99%)
...st.e2e.ts-snapshots/toast-shape-soft-ionic-md-ltr-light-Mobile-Safari-linux.png
Oops, something went wrong.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Oops, something went wrong.
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Uh oh!
There was an error while loading. Please reload this page.