All notable changes to this project will be documented in this file.
The format is based on these versioning and changelog guidelines.
- Deprecated Navigation
Item
’siconBody
prop. Pass a string into theicon
prop instead. (#1299)
- Added an
onChange
handler toCheckableButton
(#1326) Labelled
now wraps its content, no longer causing alabel + action
to get unreasonably squished (#1309)- Updated
polaris-tokens
from2.3.0
to2.5.0
and converted all use ofduration
values (#1268) - More consistent use of
text-breakword
mixin (#1306) - Added an icon and screen reader hint when
Link
opens a new tab (#1247) - Updated open styleguide pr to create multiple pull requests to update
polaris-react
across multiple repos (#1069) - Updated the pull request creation to retry when it fails (#1069)
- Exported overlay and layer data attributes for use in consumer components (#1266)
- Added new
frame-with-nav-max-width
variable and matchingframe-with-nav-when-not-max-width
mixin (#1311) - Updated
Resizer
to schedulehandleHeightCheck
to run in next animation frame (#1301)
- Fixed
ResourceList
actions from show at incorrect breakpoints or while in select mode (#1333) - Fixed Search overlay stretching below the viewport (#1260)
- Added
onChange
andvalue
to selectAppProvider
examples to remove console errors (#1320) - Fixed promoted bulk actions in
ResourceList
not properly disabling (#1317) (thanks @jineshshah36 for the issue report) - Fixed
ResourceList
header from displaying whenEmptySearchResult
exists (#1286) - Stopped passing the
polaris
context into the div rendered byScrollable
(#1271) - Fixed clickable area on sortable column headers on
DataTable
(#1273)
Upgraded Storybook to v5 (#1140)
- Migrated the refs in
DropZone
to use the new createRef API (#1063) - Updated
ResourceList
to no longer usecomponentWillReceiveProps
(#1235) - Updated
Tabs
to no longer usecomponentWillReceiveProps
(#1221) - Removed an unneeded media query from Modal's
Header
component (#1272) - Replaced all instances where we pass a string representing a bundled icon into
Button
. Prefer passing in the React Component from@shopify/polaris-icons
(#1297)
- Added a public
focus
method onBanner
(#1219) - Added an
onScrollToBottom
prop toPopover.Pane
(#1248) - Added a
placeholder
prop toFilterControl
(#1257) - Added support for setting string values on the
TextField
autoComplete
prop (#1259)
- Fixed disabled states while loading for
ResourceList
(#1237) - Fixed
Checkbox
from losing focus and not receiving some modified events(#1112) - Added translation for the cancel button on the
ResourceList
BulkActions
(#1243) - Fixed the
Autocomplete
onLoadMoreResults
prop not being called on scrolling to the end of the option list (#1249)
- Removed
button group joined to the bottom of a component
example (#1267)
- Updated
Navigation
badge prop to accept a react node (#1142) - Changed max width on
Search
to 694px so that it is perfectly centered in the top bar (#1107) - Added
action
prop toToast
(#919) - Remove all usage of
@shopify/javascript-utilities/decorators
, namelyautobind
,debounce
, andmemoize
(#1148) - Added
Empty State
footerContent prop (#1200) - Added viewport condition to
TopBar
to enlarge thecontextControl
wrapper on wider screens (#1231)
- Fixed selectMode on
ResourceList
not toggling when items are selected programmatically (#1224) - Fixed unnecessary height on
TextField
due to unhandled carriage returns (#901) - Ensured server side rendering matches client side rendering for embedded app components (#976)
- Fixed rendering of the spinner on
TextField
when setting to readOnly (#1118) - Fixed webpack example that does not compile (#1189)
- Added accessibility documentation for
Checkbox
,RadioButton
, andChoiceList
(#1145)
- Regenerated the yarn.lock file in the browserify example to resolve security vulnerabilities (#1202)
- Updated browserify example dependencies and dev dependencies (#1191)
- Updated webpack example dependencies and dev dependencies (#1189)
- Replaced all occurrences of
_.merge
with a custommerge
function (#1018) - Replaced all occurrences of
_.pick
with a custom pick function (#1020) - Deleted the icons index file that would re-export icons, and replaced it with direct imports (#1195)
- Replaces all instances where we pass a string representing a bundled icon into
Icon
. Prefer passing in the React Component from@shopify/polaris-icons
(#1196)
- Added Polaris version information tracking in App Bridge actions (#1087)
- Re-added the navigation’s border-right (#1096)
- Added
onScrolledToBottom
prop toModal
(#1117) - Updated
Navigation.Item
to useIcon
wheniconBody
prop is passed in. Renders these icons in animg
tag now. (#1094) - Added focus state outlines to be visible when using Windows High Contrast Mode for
Button
(#1101)
- Reverted a change that constrained
DropZone
height based on inherited wrapper height #1129 - Fixed missing rounded corners on
Tag
button states (#1078) - Removed reference to
window.Polaris
, which in some cases could be undefined (#1104) - Added padding and margin to
subdued
sections for proper spacing between the header and footer (#1082) - Removed left margin from vertical
Stack
to prevent overflow (#1024) - Fixed the size differences between
SkeletonThumbnail
andThumbnail
(#1141) (thanks @mbaumbach for the issue report) - Refactored
ComboBox
tests that were not running (#1137)
- Updated related component documentation for
Page
,PageActions
, andPagination
(#1103) - Improved
Modal
documentation for properties only available in a stand-alone app context (#1065) - Added accessibility documentation about
Banner
(#1071) - Added accessibility documentation for
InlineError
(#1073) - Added accessibility documentation for
Loading
(#1075) - Fixed documentation about the
ariaPressed
prop forButton
(#1097) - Fixed examples using the
selected
prop forAutocomplete
(#1053)
- Added viewport meta tag to Storybook frame (#1026)
- Removed lodash decorators and replace all occurrences of
_.throttle
withdebounce
(#1009) - Removed all occurrences of
_.replace
(#1012) - Added lodash to
create-react-app
example (#1010) - Updated
create-react-app
example dependencies (#1010) - Replaced all occurrences of
_.capitalize
with a customcapitalize
function (#1015) - Replaced all occurrences of
_.isObject
with a customisObject
function (#1011) - Replaced all occurrences of
_.get
with a customget
function (#1013) - Moved icons specific to
Banner
,DropZone
, andResourceList
to @shopify/polaris-icons (#1042) - Updated spinner component to use the
Image
component instead of an SVG tag to render (#1042)
- Deprecated passing a React Element into the
Icon
component in favor of passing a React Component (#1042) - Deprecated the untrusted prop in the
Icon
component (#1042)
- Used
base-tight
spacing
value instead ofrem(12px)
(#1044)
- Fixed the
focused
prop onTextField
so it sets the focus state (#990) - Resolved an unsupported
React.Fragment
syntax (#1080) - Constrained
DropZone
height based on inherited wrapper height #908 - Reverted a change that adjusted padding in the
Card
component introduced in (#962)
SkeletonThumbnail
for representing thumbnails in loading state
- Updates
TopBar.UserMenu
interaction states styling (#1006) - Added
download
prop toButton
andUnstyledLink
components that enables setting the download attribute (#1027) - Added support for internationalization of month and week names to
DatePicker
(#1005) - Added
untrusted
prop toIcon
to render SVG strings in an img tag (#926) - Added a
data-href
toResourceList.Item
s that have aurl
prop (#1054)
- Fixed
type="number"
TextField
to prevent conditions where press-and-hold could increment or decrement infinitely (#1029) - Fixed the top border of
DataTable
overlapping its container’s border (#975) - Fixed the
DataTable
sort direction not reversing on second sort of the initially sorted column (#918) (thanks @tabrez96 for the issue report) - Changed the offset from 5px to 4px in
Tooltip
between activator and message to be consistent withPopover
(#1019) - Fixed
Card
header not showing whentitle
empty or not set (#1031) - Fixed an issue on Chrome when you use a
TextField
insideCollapsible
which is inside a scrollable element, the text disappeared if you focused a fully hiddenTextField
(#1047)
- Added accessibility documentation for the button and link components (#924)
- Added accessibility recommendations for the text field and autocomplete components (#968)
- Added a test that builds Polaris for web and polaris-styleguide. This test takes ~20 minutes to run so it’s only configured to run for master (931)
- Enabled
no-vague-titles eslint
rule (#1051)
- Moved character counter to bottom of multiline text input (#992)
- Aligned
TopBar
search input and results with page content (#1008)
- Added all props example of
ResourceList
in the style guide (#978)
- Removed
TopBar
logo background (#957) - Updated
TopBar
search results width to adapt to search input and added a minimum width (#969) - Updated
Card.Section
to acceptReact.ReactNode
astitle
(#781) - Added
contextControl
prop toTopBar
andNavigation
(#966)
- Fixed
Collapsible
to useoverflow: visible;
once fully open (#951) - Fixed the
DataTable
sort direction not reversing on second sort of the initially sorted column (#918) (thanks @tabrez96 for the issue report) - Fixed
TextField
when passingnull
tovalue
(#964) (thanks @mbaumbach for the original issue) - Changed the default value for
showHidden
prop onResourcePicker
for backward compatibility with legacy EASDK (#981) - Adjusted top and bottom padding to the header, footer and sections in
Card
to add space between action buttons in the header and footer and the card sections. (#962)
- Added accessibility documentation for the account connection and setting toggle components (#970)
- Added accessibility documentation for the avatar component (#973)
- Updated docs about App Bridge usage in AppProvider (#945)
- Added all props example to
DataTable
in the style guide (#1003)
- Fixed links to Polaris component pages in story descriptions (#933)
- Upgraded to
@shopify/polaris-icons
v2.0.0 (#982)
- Updated
import styles from './foo.scss';
from non-standardimport * as styles from './foo.scss';
when importing scss files (#929) - Removed internal ellipsis icon as it is deprecated, and horizontalDots should be used instead (#974)
- Updated
TextField
to accept ashowCharacterCount
prop enabling the display of character count (#709)
- Fixed vertical misalignment in
Banner.Header
(#870) - Removed a duplicate
activatorWrapper
inPopover
when destructuring props (#916) - Fixed
Banner
secondaryAction content wrapping in Firefox (#719) - Added
onKeyPress
,onKeyDown
, andonKeyUp
toButton
(#860) - Added
monochrome
prop toButton
andLink
component (#821) - Updated
Frame
layout and madeTopBar.UserMenu
visible on mobile (#852) - Added a
forceRender
prop toPage
to not delegate to the app bridge TitleBar action (#695) - Changed
Tabs
example to contain children so thePanel
renders for accessibility (#893) - Fixed timezone not being accounted for in
ResourceList
date filter control (#710) - Removed unnecessary tooltip text in the
TopBar
component (#859)
- Added
Stack.Item
properties and description to style guide’s (#772) - Added accessibility documentation to the resource list and data table components (#927)
- Added accessibility recommendations for the caption component (#928)
- Improved build speed by adjusting our rollup workflow (#912) and not optimizing svgs in the node_modules folder (#920)
- Fixed an issue where deployments would use an old version of Yarn, and open a pull request to polaris-styleguide with thousands of deleted integrity hashes in
yarn.lock
(#856)
- Updated App Bridge to version 1.0.3 (#844)
- Deprecated
Navigation.UserMenu
in favor ofTopBar.UserMenu
(#849) - Deprecated
Navigation
’suserMenu
prop (#930)
- Update build toolchain to use Babel v7, PostCSS v7 and Rollup v1. Updated our build targets match our supported browsers, leading to a reduction in bundle size (#837)
- Ensured disabled
Button
components with aurl
prop output valid HTML (#773) - Fixed
DropZone
which was unable to add a duplicate file back to back or add a file again once removed #782. Thank you @jzsplk for the contribution #425 and @vladucu for the clear example. - Added a fallback to the
safeAreaFor
sass mixin to handle browsers that don’t supportenv
andconstant
(#881)
- Added deprecation guidelines (#853)
- Replaced our home-grown playground with Storybook (still accessed through
yarn dev
) (#768) - Removed our usage of babel-node for build scripts - use plain node instead (#836)
- Ensured CSS builds are reproducible (#869)
- Moved icons to a separate npm package (#686)
- Added
oneHalf
andoneThird
props toLayout
component (#724) - Added
helpText
prop toActionList
items (#777) - Updated
Page
header layout so actions take up less room on small screens (#707) - Added
alternateTool
prop toResourceList
component (#812) - Updated color of warning status
ExceptionList
items from dark orange to dark yellow for better differentiation from critical status items (#813)
- Fixed
TextField
not showing the correct color while it has focus and an error (#806) - Fixed
ResourceList
not renderingBulkActions
on initial load when items were selected (#746) - Fixed the new variant of the
Badge
component so that it is simpler and easier to read (#751) - Reverted a change that set the
autocomplete
property onTextField
tonope
when it wasfalse
(#761) - Added dismiss button for
CalloutCard
(#353) - Removed an extra tab stop from
ResourceList.Item
and make it unactionable while loading (#745) - Fixed
Checkbox
from losing focus when quickly toggled (#717) - Fixed the console error in the
PositionedOverlay
test environment (#758) - Fixed
ResourceList
not rendering a header after initial load (thanks to @andrewpye for the original issue) - Fixed
TextField
not passingstep
to the input (#829) - Renamed
Option
andGroup
types inSelect
to work around typedoc oddness (#830)
- Modified image paths to fit the style guide’s new Markdown parsing rules (#753)
- Added a slight delay to the Percy screenshot script to give time for components to render fully (#704)
- Refactored to remove cyclical type imports (#759, #754, and #767)
- Upgraded
@shopify/polaris-tokens
to v2.1.1 (#813)
- Added support for
ResourceList.Item
opening a URL in new tab if command or control keys are pressed during click (#690) - Added
primaryAction
prop toSkeletonPage
(#488) - Added support for press-and-hold to increment and decrement value in a
type="number"
TextField
(#573) (thanks to @andrewpye for the original issue) - Forced
Avatar
to fall back toinitials
when the image fails to load (#712)
- Fixed
Popover
not opening in a smallScrollable
container (#658) - Fixed
Page
header component to only render actions wrapper when actions are present (#732) - Fixed
ContextualSaveBarProps
type not being exported (#734) - Fixed
Avatar
proportions when image is not square (#740)
- Upgraded to TypeScript 3.1.6 (#700)
- Moved some inconsistent prop types around for compatibility with the styleguide's Props Explorer (#727)
- Fixed
ToastProps
type not being exported (#722) - Fixed Shopify App Bridge import issues in
AppProvider
andenzyme
test utilities (#720)
- Updated
TextField
to no longer usecomponentWillReceiveProps
(#628) - Updated
EventListener
to no longer usecomponentWillUpdate
(#628) - Allowed
Icon
to accept a React Node as a source (#635) (thanks to @mbriggs for the original issue) - Added
alignContentFlush
prop to ContextualSaveBar (#654)
- Fixed
Pagination
from callingonNext
andonPrevious
whilehasNext
andhasPrevious
are false for key press events (#643) - Removed min-width from
FormLayout
Items
and applying it only toItems
used inside aFormLayout.Group
(#650) - Removed added space in
ChoiceList
when choice has children on selection but is not selected (#665) - Fixed
errorOverlayText
onDropzone
(#671) - Updated the
InlineError
text color, the error border-color on form fields and the errorIcon
color to be the same red. (#676) - Fixed
AppProvider
server side rendering support (#696) (thanks @sbstnmsch for the original issue) - Fixed
TextField
autocomplete disabling by setting autocomplete="nope" whenautoComplete
prop isfalse
(#708)
- Updated documentation links to match the new style guide link structure (#478)
yarn run tophat
has been removed and its functionality has been moved into theyarn run dev
server. Example editing now supports hot-reloading so you don’t need restart the server anymore.
- Bumped
@shopify/polaris-tokens
to v2.0.0. This is a breaking change for consumers of color design tokens in languages such as JavaScript and Sass (full release notes)
- Fixed selector import in
DataTable
andCell
(#638)
- Improved
Avatar
so it falls back toinitials
when the image fails to load (#557) - Added
onScrolledToBottom
prop toScrollable
(#568)
- Fixed
Action
's selector inPage
'sHeader
component (#523) - Fixed
Card
spacing in small devices (#608) - Fixed
ResourceList
BulkActions
that were remaining in fixed position outside theboundingElement
(#627) - Improved readability of
Badge
withsize
small andstatus
new for navigation (#633)
- Fixed
Datepicker
ranges whenstart
andend
dates are similar but have different references (#601) - Fixed
DataTable
column visibility calculation in production environments by using adata-polaris-header-cell
attribute instead of class-based targeting (#615) - Fixed
Navigation.Item
not callingonClick
on small screens whenonNavigationDismiss
is undefined (#603) - Fixed
Autocomplete
empty state example Markdown not parsing correctly (#592) - Fixed
TopBar
’sUserMenu
alignment to be right-aligned whenTopBar
isn’t passed asearchField
prop (#597) - Removed erroneous SCSS file import that rendered Polaris unable to be used in typescript projects without scss support (#609)
- Fixed
Popover
inconsistent border-radius values (#605) TextStyle
strong variant now uses a span tag instead of b (#606)- Fixed non-blocking context errors when using
Toast
orLoading
in an embedded app (#613)
- Added padding top and bottom on
Card.Section
when set to full width - Fixed
Portal
rendering by usingcomponentDidMount
lifecycle hook as opposed tocomponentWillMount
- Fixed an issue where clicking a
Link
without aurl
in a form would implicitly submit the form.Link
can no longer submit forms. Use<Button submit>
instead. - Renamed the
Keys
enum to align with Shopify naming standards. It is now singular and the properties are in PascalCase. Replaceimport {Keys} from '@shopify/polaris'
withimport {Key} from '@shopify/polaris'
and change the casing of the properties, e.g. replaceKeys.DOWN_ARROW
withKey.DownArrow
. - Added !important to
display: none
in@print-hidden
mixin
- Use the Shopify App Bridge in favor of the EASDK. The EASDK has been removed.
- Added Shopify App Bridge support to new components
Toast
andLoading
- Added
target
prop to all actions which get passed to the Shopify App Bridge - Added new
size
andmessage
props toModal
which aligns with the Shopify App Bridge API - Added new
resourceType
,initialQuery
, andshowVariants
props toResourcePicker
which aligns with the Shopify App Bridge API - Moved embedded
ResourcePicker
,Modal
, andPage
to the main bundle and removed the embedded bundle. Imports from'@shopify/polaris/embedded'
will no longer work, use'@shopify/polaris'
instead. - Made the
shopOrigin
prop onAppProvider
optional. It’s now provided by default. If you do provide ashopOrigin
it now needs to be given without the'https://'
per the Shopify App Bridge API. - Updated
onSelection
prop onResourcePicker
. The shape of theselectPayload
data has changed and the productid
is now agid
. For example,/9019381572
is nowgid://shopify/Product/9019381572
. We offer @shopify/admin-graphql-api-utilities to help compose and parsegid
from Shopify admin. - Updated default values for
ResourcePicker
props to align with the Shopify App Bridge. Set the propsshowHidden
,allowMultiple={false}
, andshowVariants={false}
to get the previous default behavior. - Updated
target
prop type related to embedded apps, use'APP'
,'ADMIN_PATH'
, or'REMOTE'
- Removed
icon
prop fromPage
. Upload your app’s icon in the Shopify Partners dashboard “App setup” section instead. - Removed
title
prop fromResourcePicker
as setting a title is no longer supported by the Shopify App Bridge - Removed
products
prop fromResourcePicker
, useresourceType="Product"
instead - Removed
collections
prop fromResourcePicker
, useresourceType="Collection"
instead - Removed
width
andheight
props fromModal
, usesize
instead - Removed
debug
prop fromAppProvider
, use Redux DevTools instead. Redux DevTools also has browser extensions. - Removed the
Alert
component, useModal
withmessage
prop instead - Replaced
easdk
on React context withappBridge
. Access it viathis.context.polaris.appBridge
. - Removed
this.context.easdk.startLoading()
andthis.context.easdk.stopLoading()
, use theLoading
component instead - Removed
this.context.easdk.showFlashNotice()
, use theToast
component instead - Removed
this.context.easdk.pushState()
, use the Shopify App BridgeHistory
action instead. TheHistory
action requires passing theappBridge
instance which is accessible viathis.context.polaris.appBridge
. - Removed
this.context.easdk.redirect()
, use the Shopify App BridgeRedirect
action instead. TheRedirect
action requires passing theappBridge
instance which is accessible viathis.context.polaris.appBridge
.
- Updated the license from MIT to a custom license based on MIT. The new license restricts Polaris usage to applications that integrate or interoperate with Shopify software or services, with additional restrictions for external, stand-alone applications.
We’ve released a suite of new components that, when combined, form the application frame of a stand-alone (or non-embedded) Polaris app.
The frame component, while not visible in the user interface itself, provides the structure for any non-embedded application. It wraps the main elements and houses the following components:
- primary navigation
- top bar
- toast
- loading
- contextual save bar
The navigation component is used to display the primary navigation in the sidebar of the frame of any non-embedded application. Navigation includes a list of links that merchants use to move between sections of the application.
The top bar component is always visible at the top of a non-embedded application. Its logo and color can be customized using the app provider component to reflect an application’s brand. Merchants can use it to search an application, access menus, and navigate by clicking on the logo.
The toast component is a non-disruptive message that appears at the bottom of the interface to provide quick, at-a-glance feedback on the outcome of an action.
The loading component is used to indicate to merchants that a page is loading or an upload is processing.
The contextual save bar tells merchants their options once they have made changes to a form on the page. This component is also shown while creating a new object like a product or customer. Merchants can use this component to save or discard their work.
The autocomplete component is an input field that provides selectable suggestions as a merchant types into it. It allows merchants to quickly search through and select from large collections of options.
- Changed
Form
to default themethod
topost
in order to prevent accidental leaking of form details - Added support for boolean type on Choice error prop
- Changed the esnext folder to contain individual, minimally transpiled JavaScript component files, as well as raw style and image assets
- Added
onPortalCreated
prop toPortal
- Improved consistency of
Badge
styling - Explicitly specifying
list-style
onList
- Fixed console error and used new ref syntax in
DataTable
(thanks to @duythien0912 for the original issue) - Fixed the ability to upload multiple files even when
allowedMultiple
prop is false - Fixed
Datatable
so it resizes with new content (thanks @andrewpye for the original issue) - Fixed
RangeSlider
linear-gradient so it doesn’t break the css build (thanks @Ankitjasoliya and @nerfologist for the original issue) - Fixed issue in
Page
, where styling wasn’t being applied correctly to Page Actions - Removed unnecessary bindings on the
Modal
’sonClose
prop - Rearranged
primaryFooterAction
andsecondaryFooterAction
inCard
(thanks @sivakumar-kailasam for the original issue)
- Updated banner guidelines to make it clearer when success banners should be used vs success toasts.
- Added examples for iOS and Android section header
- Added examples for iOS and Android thumbnail
- Added examples for iOS and Android empty state
- Added examples for iOS and Android text field
- Added examples for iOS and Android select
- Added examples for iOS and Android keyboard accessories
- Added examples for iOS and Android collapsible
- Added examples for iOS and Android list
- Clarified placement and usage of
Banner
- Added an explanation to
Modal
about why it can’t be closed by clicking outside the modal and should only be closed by clickingX
orCancel
- Moved sub-sub-components within
ResourceList
into components folders - Removed empty state from
ResourceList
if there are no items andloading
is true - Move to use sewing-kit for test running, updating to Jest 23 in the process. This gives us working sourcemaps for code coverage
- Improved accessibility testing checklist
- Updated development node environment to 10.13.0
- Added shopify/jest plugin to eslint config
- Added contribution guidelines
- Added tophatting documentation
- Updated the project README
- Moved active development to the public repository
- Fixes type imports in the build
- Removed tip from
Popover
- Increased speed of
Popover
transition from 500ms to 100ms - Improved text contrast in
Badge
. - Added named
medium
size to Button that renders the same as omiting the size attribute
- Fixed typo in
Collapsible
example - Fixed padding and margins on
SkeletonPage
to matchPage
- Fixed spacing between
Page
title and metadata
- Made
ActionList
,OptionList
andPopover
examples active by default so previews are visible without interacting - Improved the manual accessibility checklist
- Batched Percy snapshots per component
Tab.Item
with aurl
prop now renders anUnstyledLink
instead of aButton
when displayed inPopover
and you can now keyboard navigate the disclosure inTabs
- Refs can be placed on
DropZone.FileUpload
- Use the new context API in
ResourceList
- Use the new context API in
DropZone
- Update example description in
ExceptionList
documentation - Move Modal CloseButton into its own subcomponent, instead of being part of the Header subcomponent. This is an internal implementation detail if you are using the React component. If you are using (s)css and are defining class names manually you will need to update references to
Polaris-Modal-Header__CloseButton
andPolaris-Modal-Header--withoutTitle
toPolaris-Modal-CloseButton
andPolaris-Modal-CloseButton--withoutTitle
respectively.
- Added
d.ts
files to test coverage ignore Page
is no longer self-closing in the playground
- Fixed
Button
alignment issue caused by unnecessary icon markup rendering ([#2339](Fixing button alignment #2339)) (thanks to (@mbaumbach) for the (original issue)) - Fixed console error and used new ref syntax in
DataTable
(thanks to @duythien0912 for the original issue) - Fixed margin of
InlineError
text to align with theChoiceList
labels - Replaced hardcoded
rem
values with globally scalable ones onDataTable
’s collapsed shadow, andTextStyle
code blocks - Fixed spacing of numbered
List
for double digits (#121) - Fixed
ProgressBar
not showing up in Windows high contrast mode (#1708) - Top aligned all cells in
DataTable
- Fixed stacking order of loading overlay in
ResourceList
- Fixed form inputs in
Popover
that were disappearing instead of top aligning thanks to @mbaumbach for the original issue - Removed a redundant class on
OptionList
list items
- Made
Modal
examples show the modal dialog by default - Changed fitted
Tabs
to have equal width when enough space is present (#2314)
Use withContext
to pass consumer context to a component.
Use withRef
with compose
to forwardRefs to a component.
- Updated
Button
to accept aReact.ReactNode
for itsicon
prop
- Refined accessibility checklist
- Added truncation to
Tag
- Updated date filter labels in resource list
- Changed
placeholder
prop inSelect
to be the default selection - Added a
loading
prop toResourceList
that places a spinner overtop items and disables bulk actions
- Clarified when and how to use icons in the banner component
- Updated footer help component guidelines to include content instructions for app developers
- Fixed resource list component to correctly handle inclusive filter keys
- Fixed date field in DateSelector to not render an error when date is added by the date picker and field is blurred
- Fixed pagination from firing keypress events while focus is inside inputs or contenteditables
- Fixed
EmptyState
horizontally scrolling when fully condensed - Fixed the bottom margin of elements inside
Page
being ignored in some browsers - Added required
url
prop tobreadcrumbs
inPage
component examples - Fixed
ActionList
wrapping text within aPopover
- Fixed
Banner
spacing when inside of a section - Fixed
Stack
so it doesn’t add extra spacing between items in Safari
- Reverted a change that caused the built embedded.js bundle to be way larger than it should be due to broad imports
- Added support for boolean type on Choice error prop
- Updated banner guidelines to make it clearer when success banners should be used vs success toasts.
- Updated display text documentation to have a separate example for medium and large display
- Reverted a change that caused items in a
Popover
component not to be clickable
- Fixed paths to images in the “Attention badge” example
- Fixed the
Page
component’sprimaryAction
to supportLoadableAction
s andDisableableAction
s
- Adjusted spacing for
ChoiceChildren
inChoiceList
for readability - Made
Card.Header
a separate publicly accessible component - Added support for complex operators in
ResourceList
component - Updated the
Page
component’sprimaryAction
to supportButton
props. - Added validation for non-numeric input in a type="number"
TextField
- Added circle information icon
- Updated
Banner
guidelines to make it clearer when success banners should be used vs success toasts
- Moved
pa11y
andobject-hash
from dependencies to devDependencies
- Fixed inconsistent
DropZone
error styling
- Added a
test:coverage
script to gather and display test coverage results - Added Codecov test coverage checks to pull requests
- Added automated a11y testing to CI
- Added support for
titleMetadata
inPage
component - Added support for
FilterType.DateSelector
inResourceList
component - Added
code
as an acceptedvariation
of theTextStyle
component to provide support for accessible markup and styling of inline code snippets and code-like text - Added new
border-width
SCSS function - Added support for
fullWidth
andconnectedTop
props onButtonGroup
- Added
label
prop toDropZone
for better accessibility - Added support for
RadioButton
to accept a block as alabel
- Added a
singleColumn
prop to theSkeletonPage
component - Updated the transition on large
Modal
to match the default transition - Added
nextKeys
,previousKeys
,nextTooltip
, andpreviousTooltip
props to thePagination
component to support keypress handling andTooltip
in pagination buttons. - Added examples to the
Layout
component documentation for two and three column grid layouts - Added an export for the
Progress
type to support downstream typechecking of theBadge
componentprogress
prop - Added an
iFrameName
prop to theModal
component to support named iframe children - Added a
ScrollTo
subcomponent to theScrollable
component to support scrolling to a child node programmatically - Added support for the
Button
component to accept an array of strings as children - Changed the primary focus target of an activated
Popover
from the first focusable child to thePopover
itself - Added an improved error message when the child of an embedded
Alert
component is not a string (thanks @superwhykz for the original issue) - Added a minimum width to tab items to improve touch target sizing and account for smaller tab titles
- Added support for additional accessibility attributes to the
TextField
andOptionList
components - Added support for
OptionList
withAvatar
,Icon
, andThumbnail
whenoptions
descriptors have amedia
property - Added support for destructive
ActionList
items - Added support for
OptionList
options
descriptors to accept a block for thelabel
property - Added
$page-max-width
variable to capture page calculatedmax-width
value andpage-when-not-max-width
mixin to trigger when page is resized horizontally - Added support for select error messages to be optional
- Updated the
Breadcrumbs
component to support theCallbackAction
type as a prop (thanks @dylan for the current issue and everyone who identified this.) - Added support for
TextField
error messages to be optional - Added a
disabled
prop to theChoice
component.Checkbox
andRadioButton
labels are now styled to reflect their disabled state - Added support for Windows High Contrast mode in the
Select
,Checkbox
andRadioButton
components
- Fixed
TextField
resizer rendering whenmultiline
was false - Fixed
Modal
header condensing - Fixed
Tooltip
so active prop activates on initial render - Fixed
Popover
border radius and left and right alignment - Fixed visibility of the hidden implicit submit button in
Form
(thanks @cgenevier for the original issue) - Fixed alignment of wrapped empty state actions
- Swapped the import and export icons
- Fixed incorrect
DataTable
column count and content skipping in assistive technologies - Fixed unintended form submittal by action list items enclosed in a
form
(thanks @andrewpye for the original issue) - Fixed text alignment of multiline
OptionList
option text - Fixed an issue where the
Stack
component would render incorrectly nested items - Fixed spacing above annotated sections on smaller screens
- Fixed an issue that caused problems for some build tools
- Fixed the word-break of long text in
Label
andBanner
on small screens
- Added examples for iOS and Android
RadioButton
- Added examples for iOS and Android
Banner
- Added
Toast
component - Added examples for iOS and Android
Button
- Added examples for iOS and Android
ButtonGroup
- Added examples for iOS and Android
Badge
- Added examples for iOS and Android
Avatar
- Added
Stepper
component
Use inline errors to describe custom form inputs or form groups when invalid.
- Updated sub component structure
- Added
weekStartsOn
prop toDatePicker
- Remove
stickyManager
fromAppProviderProps
interface - Fixed a bug where
Layout.AnnotatedSection
would output a wrapper div for adescription
even when its contents were empty - Remove extra padding from annotated section
- Added iOS and Android examples to the
Card
component - Added iOS and Android examples to the
ChoiceList
component
- Renamed
yarn start:vrt
toyarn tophat
and updated the folder name to match - Improved
yarn tophat
’s design, and added a/all-components
route
- Added
weekStartsOn
prop toDatePicker
- Changed
Form
to submit a form by default when the enter key is pressed, and added the propimplicitSubmit
to disable this default
- Fixed
TextField
padding when aprefix
orsuffix
is included
- Removed the min-width of 320px from
ResourceList
- Resolve issue with
RangeSlider
component not accepting0
as amax
value - Slightly reduced spacing for
prefix
andsuffix
on theRangeSlider
component - Fixed spacing for
prefix
andsuffix
on theTextField
component - Fixed height of cells in
DataTable
that are rendered after initial page load (for example: in aTab
or aPopover
) (thanks @flewid for the original issue) - Fixed
DatePicker
month styling for previous years
Use OptionList
to present a group of selectable items outside of the context of a Form
.
- Fixed
Form
examples
- Added
prefix
andsuffix
props toRangeSlider
for better layout control - Added testing documentation and examples in
AppProvider
- Performance: optimized avatar SVG files
- Updated
yarn run optimize
to add new line at the end of SVG files - Added a more compact variant of
Select
, with the form label appearing inside the control)
- Adjusted padding on
TextField
to work with Chrome’s autofill - Fixed a regression where the version of Polaris wasn’t globally available anymore
- Updated the interaction state visuals for
ActionList
- Fixed z-index on
ResourceList
header with sorting options (thanks @janklimo for the original issue) - Fixed an issue where
RadioButton
was not focusable in Safari - Fixed spacing for annotated section descriptions
- Fixed a bug in EASDK action transforms that prevented external urls in embedded apps from opening (thanks @dansundy for the original issue)
- Updated
@shopify/polaris-tokens
, the single source of truth for colors
Use RangeSlider
to select a number value between a min and max range.
- Added a fixed prop to
Popover
allowing for a fixed position - Added badge prop to the
ItemDescriptor
type and action group - Added
text-breakword
mixin for easier word breaking when dealing with long unspaced strings
- Fixed unexpected form submission when switching tabs in a
Tabs
component wrapped in aForm
- Added missing
'Shopify.API.setWindowLocation'
message handler to the EASDK
- Added support for
Card
to accept a block for a title - Added an intermediate prop typing for
Link
to allow redefinition of prop definitions
- Fixed an issue where
ResourceList
filters lost padding (thanks @BarryCarlyon for the original issue) - Fixed unexpected focus jumps when
DatePicker
props are updated - Fixed the spacing and text wrapping of
ExceptionList
title and description
- Fixed
DropZone
to prevent it from kicking into small size too soon
- Various content and markdown fixes
Use Exception lists to draw the merchant’s attention to important information that adds extra context to a task.
- Added an
ellipsis
prop toActionList.Item
allowing for an ellipsis suffix after the content - Added a
preferredAlignment
prop toPopover
allowing it to be aligned to the left, center, or right of its activator - Updated styling for
Banner
that appear in aCard
or aModal
- Added new size to
DropZone
component - Exposed Group interface from the
Select
component - Renamed
plain-list
mixin tounstyled-list
- Removed padding from
DropZone
and applied it toFileUpload
instead
- Fixed unexpected window scroll on rendering
DataTable
(thanks @mfurniss for the original issue) - Fixed focused inner interaction state on
ResourceList.Item
for reverse tabbing - Fixed border radius on
Card
to match the padding onPage
- Added
target
to thebreadcrumb
prop onPage
(thanks @sdn90 for the original issue) - Fixed visual representation of disabled bulk action buttons in
ResourceList
- Fixed margins of a
fullWidth
Popover
that appears above its activator - Fixed rendering of
Popover
when activator rerenders (thanks @nerfologist for the original issue) - Fixed
z-index
calculation forPositionOverlay
andDialog
- Fixed an issue where selecting a date in
DatePicker
would submit its enclosing form - Fixed
ResourceList
reverse tabbing focus interaction on action buttons - Fixed padding in the case where a
ResourceList
had no filters
Summary: this is the first major version of Polaris React since launch. Included in this release are:
- Several new components, including
DataTable
,DropZone
,AppProvider
, andModal
- Improvements to existing components, such as
ResourceList
,ChoiceList
, andCard
- A few breaking API changes
We’re removing support for React 15 in order to make full use of some of the new features in React 16, such as fragments, error boundaries, and improved server-side rendering.
Upgrade your app to the latest version of React.
The AppProvider
component is now required in your app for Polaris components to function properly.
Wrap your app in the AppProvider
component.
Collapsible component requires an id
prop
For accessibility reasons, the id
prop is now required on the Collapsible
component.
Pass a unique value as an id
to all Collapsible
components. For example, <Collapsible id="my-unique-id">
.
The EmbeddedApp
component has been removed. The AppProvider
component now accepts the configuration needed to initialize an embedded app.
Use the AppProvider
component with the apiKey
and shopOrigin
props.
Shopify is organized around objects that represent a merchant’s business, such as customers, products, and orders. Each individual order, for example, is given a dedicated page that can be linked to. In Shopify, we call these types of objects resources.
The resource list component functions as:
- A content format, presenting a set of individual resources in a compact form
- A system for taking action on one or more individual resources
- A way to navigate to the details page of an individual resource
Our current resource list component gave you some nice defaults out of the box, but didn’t take you much further than that. We recognized that each of these lists is unique and contains different information that is important to the merchant.
Our new resource list allow you to build custom items in the list, with their own layout, content, and styling. This gives you a powerful way to build these sorts of lists going forward.
We’ve also included in depth documentation and a tutorial on how to build your own custom resource list items.
To be more consistent with our other component APIs, the Tabs
component now uses content
instead of title
.
Change all instances of title
to be content
instead.
Because we require you to manage state for your inputs, we decided to make onChange
required for TextField
to avoid confusion.
Add an onChange
callback to each use of TextField
that is not disabled or readonly.
The CSS for Icon
will no longer apply a color to icons by default. You must use the color
prop on the Icon
component to specify the color.
Use color
prop on all instances of Icon
component.
To avoid conflicts with other styling or frameworks, we’re removing the styling we globally applied to all a
elements.
Use the Link
component instead.
This change only impacts users of the Sass version of Polaris, more specifically the color()
function. The color($hue, $value: base, $for-background: null)
function in Sass now accepts strings for $hue
and $value
as advertised in the color function documentation.
If you’re using VS Code, here are the exact search / replace instructions to follow (toggle “Use Regular Expression”):
- replace
\bcolor\(([a-z-]+)\)
withcolor('$1')
- replace
\bcolor\(([a-z-]+), ([a-z-]+)\)
withcolor('$1', '$2')
- replace
\bcolor\(([a-z-]+), ([a-z-]+), (.*)\)
withcolor('$1', '$2', $3)
Since launching Polaris components, we’ve had many people ask why we didn’t include tables. While we have been moving away from using tables for comparisons that aren’t tabular data (resource lists, for example), we recognize that there are still cases to use them.
The data table component is our answer to those cases. While data visualizations represents part of a data set, data tables are used to organize and display all the information from a data set, allowing merchants view details from the entire set. This helps merchants compare and analyze all the data in a unified way.
Currently we have several different interfaces for uploading files across Shopify, which leads to a lack of consistency and some missing features and capabilities. To solve this problem, we’re releasing a new drop zone component.
This new component allows merchants to upload files by dragging and dropping them into an area on a page. The component handles file type validation, dropping onto the window, and more, meaning more ease of use for merchants.
In the original Polaris React, the modal component was only available to embedded apps. No longer. Our new modal component is universal in that it can be used in either stand-alone or embedded apps, and will handle the correct behavior for you.
The app provider is a required component that enables sharing global app config with the components in Polaris. This is used for the internationalization of strings in Polaris components, as well as set other configuration such as a custom link component that all the Polaris components will use. This unlocks new ways for us to share configuration at an app level and have the components react to that configuration.
- Added
error
prop toChoiceList
TextField
,Select
, andCheckbox
now accept the typesstring
orReactElement
for theerror
prop- Added optional
id
props to more components, and restructured the prop definitions to allow projects to makeid
props mandatory - Added
fullWidth
prop toCard.Section
- Added
fullHeight
prop toPopover
to override max-height - Added
allowRange
as a property forDatePicker
- Added the
external
option to thesecondaryAction.action
prop on theBanner
component. Thank you to (Andrew Cargill) for the issue (#236)
- Enforced subdued description
TextStyle
inAnnotatedSection
- Fixed overflow of
TextField
that caused the border to be cut off - Allowed specific props in the
TextField
component to pass through properties to the input child - Fixed
ActionList
component to provide section dividers when atitle
was not provided - Fixed an issue in the
Select
component where placeholder didn’t properly appear on Firefox and appeared disabled on all browsers
This will be the last v1.x release outside of critical security fixes.
- Add margin-left spacing to disclosure icon within
Button
component - Remove margins on segmented
ButtonGroup
- Fixed text alignment of
Link
so that it inherits from its parent node
- Fixing an error with the release process
- Changed
term
inDescriptionList
component to acceptReact.ReactNode
to allow for more than juststring
type
- Added missing
publishConfig.access
setting inpackage.json
, in accordance with the new Shipit requirements for public npm packages
- Added an
id
prop to Collapsible to be referenced by thearia-controls
attribute of the component triggering the collapse
- Fixed external prop not working within
ActionList
component - Fixed a syntax error in one of the
Card
component examples (thanks @meecrobe for the original issue)
- Enhanced
Avatar
to work better when provided non-square images - Move documentation file so it’s picked up by the style guide
- Fixed disclosure centering on the
Tabs
component - Fixed an issue where a style void would appear between breakpoints at high text zoom levels
- Removed purpose section from component READMEs
- Added
EmbeddedPage
under the Embedded section - Added “Using embedded components” section
- Added screenshots to the embedded components
- Clarified usage of
Card
header andFooterActions
- Moving property descriptions out of READMEs and into source files
- Fixed server-side environments
- Updated component examples that use state to use an es6 class
- Fixed
TextField
overflow issues when insideScrollable
- Fixed
Select
focus state bug occuring in Firefox - Fixed vertical alignment of text within full width variant of the button component
- Changed
Checkbox
label to allow string or React.ReactNode - Update
TextField
type with currency - Added
ariaControls
,ariaExpanded
prop toButton
- Updated the base red color to improve contrast
- Added a notification icon to the bundled icons available to use in the icon component’s source prop
- Exposed Status from the
Banner
component - Added
titleHidden
prop toPage
- Clarified intended usage for
EmptyState
- Added version number to source
- Changed Action to Disableable Action in Card
- Added
renderChildren
prop toChoiceList
component
- Fixed an issue with
FooterHelp
links not expanding to full-width on mobile devices (#759) - Added breadcrumbs to
SkeletonPage
- Added max-width and auto margin to
EmptyState
- Fixed outline
Button
disabled state styles - Fixed
Tag
so theonRemove
function is not improperly called (thanks @chaddjohnson for the original issue) - Fixed border on inputs disabled state
- Fixed an issue in
TextInput
, when you increment or decrement with a float value, and the digits after the decimal point where wrong (thanks @cgidzinski for the original issue) - Added top alignment to FormLayout.Group
- Fixed capitalization of prop names in
Pagination
component’s documentation (thanks @donnguyen for the original issue) - Exposed Option from the
Select
component
- Fixed the public repository’s build (which was missing the new CircleCI configuration files)
- Fixed CSS-only
Checkbox
(thanks @daddy88 for the original issue)
-
Restored the correct
latest
version to the CDN -
Fixed rgbToHsb function when red is the largest number and added tests (thanks @emcmanus for the original issue)
-
Fixed an issue where a hard-coded path would cause the build to fail on Windows (thanks @Invader444 for the original issue and pull request)
-
Added
onClick
toUnstyledLink
-
Added tests to
Link
-
Added tests for
ColorPicker
color utilities
- Ammending changelog
- Added
onActionAnyItem
prop to action list and used to closePage
actionGroups
on click or keypress of any item - Added
content
prop toTabs
and deprecated use oftitle
- Added
TextContainer
component - Added
idForItem
prop to resource list - Added
fullWidth
prop to layout section - Added
indeterminate
as option for checkboxchecked
prop value - Added
singleColumn
prop to page - Added
focused
prop toTextField
- Fixed positioned overlay not responding to
Scrollable
container events - Fixed first focusable item focus in
Popover
- Fixed typos in the select component documentation (thanks @mattchidley for the original issue)
- Moved react-transition-group from a dev dependency to a dependency
- Fixed
Stack
not returning children
- Added missing yarn config file which was causing the build to fail
- Updated README to consistently use contractions (thanks @stefanmiodrag for the original pull request)
- Improved example description for
Layout
component - Updated
Spinner
documentation - Improved component purpose documentation across components
- Improved documentation for
TextStyle
component
- Added support for React 16
- Added an option to show or hide unpublished products from the
ResourcePicker
- Changed
Popover
component to usereact-transition-group
instead of our deprecated custom version in@shopify/react-utilities
- Added new
ProgressBar
component - Changed today’s date to be tabbable and clearly indicated in
DatePicker
- Added support for disabled choices in
ChoiceList
component - Added support for disabled secondary
Page
actions - Changed
TextField
andSelect
to now focus on clicking only within the area from the input to the end of its label text
- Fixed
Layout
component example description - Fixed
SkeletonPage
header appearing in embedded apps (thanks @rkbhochalya for the original issue)) - Fixed border-radius on
ActionList
component in Chrome
- Added
SkeletonPage
,SkeletonBodyText
andSkeletonDisplayText
components - Added
Spinner
component - Added hint prop to
Scrollable
and use inPopover
- Updated
Button
component to use newSpinner
component - Added external link support for
Page
secondaryActions
- Enabled the
primaryAction
ofPageActions
to be loading Stack
now supports non-wrapping layouts on small screens- Updated
TextField
min and max documentation - Breadcrumbs now accept a callback through onAction (thanks @arypbatista for the original issue)
- Fixed issue with embedded app breadcrumb linking to Shopify settings page (thanks @cargix1 for the original issue)
- Fixed
Avatar
to display image and initials simultaneously - Fixed various links to embedded components
- Fixed left and right ends of
TextField
not responding to clicks RadioButton
&Checkbox
now focus on clicking only within the area from the input to the end of its label text- Fixed plain and
fullWidth
Button
alignment - Add a minor delay to
Tooltip
display
- Documented disabled prop for
Checkbox
andRadioButton
(thanks @LeoAref for the original issue) - Documented progress prop for
Badge
(thanks @sp4cecat for the original issue) - Added loading prop to
Button
(thanks @bakura10 for the original issue) - Documented complex
Select
option (thanks @sp4cecat for the original issue) - Documented
TextStyle
component - Improved
Avatar
typography spacing - Added subtract icon
- Improved acessibility for
Pagination
- Fixed failed dependency installation for unauthenticated GitHub users (thanks @mikeyhew for the original issue)
- Fixed
Page
header spacing - Fixed
TextField
focus ring transition - Fixed
Popover
not resizing on content updates
- Fixes alignment of
PageAction
links
- Fixed disabled
Button
when using local class names - Fixed
Scrollable
resize listener not autobinding
- Updated
Scrollable
component to remember scroll position on re-render - Added checkmark icon to the
Icon
component - Added an example for a disabled
TextField
- Fixed typo in
Icon
code example
Various documentation fixes.
- Updated import, export, and view icons
- Improved documentation of various components
- Improved how
ActionList
handles images and groups - Exposed PopoverCloseSource from
Popover
component
- Fixed
PageActions
spacing in IE11 - Fixed ID inconsistency on
TextField
- Fixed spacing on
Page
component with no header (thanks @bakura10 for the original issue) - Fixed disabled state on primary and destructive
Button
- Upgraded javascript-utilities to the latest version
- Fixed classnames in built *.scss files
- Fixed broken link in description list README
- Added an
esnext
build (allows production builds to perform class/method tree shaking) - Changed KeyboardKey component to use
kbd
tag - Added publishing
docs
folder to npm package - Added
fullWidth
option toPopover
component
- Updated Static HTML page examples to correct markup (thanks @bartcoppens for the original issue)
- Hide increment and decrement buttons on number input when disabled (thanks @kguller for the original issue)
- Fixed link to product content documentation
- Fixed documented type for error prop on
Checkbox
component - Fixed
Popover
reopening when clicking around during transition - Fixed
Popover
resizing on content updates - Fixed vertical alignment of
Button
content
- Added Sketch color palette file
- Fixed a repo issue that caused the public repo release not to happen
- Added helpText to
ChoiceList
choices (thanks @cgenevier for the original issue) - Added save icon
- Added
accessibilityLabel
toTabs
- Updated icons for
Banner
- Improved
Page
component by fixing up spacing, addin a prop to show a separator below the page title, and changing the secondary actions to roll up into a dropdown menu on small screens - Improved default stacking behavior for Tooltip and
Popover
(thanks @Taphood for the original issue) - Added extraTight spacing option to Stack
- Use default subheading type styles for
ActionList
- Improved large
Button
styles - Updated font-weight for text emphasis (thanks @bakura10 for the original issue)
- Removed the focus state for
Banner
on click - Fixed disabled
Pagination
button looking active - Fixed alignment on
Button
- Fixed min-width on
TextField
(thanks @asacarter for the original issue) - Removed the border-top on
EmptyState
) (thanks @alexdover for the original issue - Fixed
Select
placeholder value warnings (thanks @cgenevier for the original issue) - Fixed disabled text on iOS
- Fixed type for
onChange
event (thanks @bakura10 for the original issue)
- Added color palette page to “Getting started”
Button
typography updated. More changes to come soon.- Changed typeface from
San Francisco UI
toSan Francisco Pro
. You will need to download the updated typeface here. https://developer.apple.com/fonts/ - Updated to Sketch version 45.2
- Updated layer styles and fonts styles to take advantage of Sketch’s new organizational features.
- Fixed disabled
Button
documentation (thanks @michaelsunglee for the original issue) - Fixed project URL in CircleCI badge
- Fixed Stack documentation (thanks @nerfologist for the original issue)
- Added embedded Alert documentation and updated other embedded documentation
- Updated React TypeScript definitions
- Updated EASDK metadata structure for generic interfaces
- Removed postinstall hook
- Fixed a repo issue that caused the public repo release not to happen
- Added automatic inference of the
target
property of EASDK buttons inPage
primaryAction
andsecondaryAction
based on their URL (thanks @jimmyn for the original issue) - Added automatic inference of the
target
property of EASDK breadcrumbs inPage
breadcrumbs
prop based on the URL Select
option descriptors now accept adisabled
attribute to disable the generatedoption
(thanks @sogko for the original issue)easdk.showFlashNotice
now accepts an optional options object as its second parameter. Passing{error: true}
will cause the flash to appear as an error, matching the behaviour ofShopifyApp.flashError
Checkbox
,RadioButton
,ChoiceList
,Select
, andTextField
now pass the ID of the changed input as the second argument to theironChange
callback (thanks @milep for the original issue)Popover
now respects thez-index
of the activator if it exists- When putting content as children of
Tabs
, the default panel that is generated now respects thepanelID
of the selected tab, and uses a sensible default based on the tab’sid
if nopanelID
exists - When selecting a tab in
Tabs
, the matching panel is now focused by default easdk
methods are bound to the object so they can be freely passed as callbacks
Avatar
now renders as aspan
instead of adiv
- Fixed contents in
Layout.AnnotatedSection
breaking out of their container (thanks @cargix1 for the original issue) - Fixed spacing above a
primaryAction
inCalloutCard
when there is nosecondaryAction
- Aria attributes are now on the actionable elements of
Tabs
instead of in the list items - Exposed
Panel
asTabs.Panel
instead ofTabs.panel
- Fixed the alignment of
prefix
andsuffix
content ofTextField
(thanks @bdillon3 for the original issue) - Fixed the disabled text color in
TextField
Checkbox
andRadioButton
no longer generate invalid HTML in their labels (thanks @ernestogutierrez for the original issue)Tabs
no longer steal focus from contained elements (thanks @alexdover for the original issue)
- Reduced horizontal padding on
Breadcrumbs
- Updated icon and internal padding of
FooterHelp
- Updated the
EmptyState
layout and typographic styles
- Fixed the code examples on the
EmbeddedApp
documentation - Added a simple
EmbeddedApp
example - Renamed the “Tables and lists” category to “Lists”
- A variety of other documentation updates (thanks @sebnun, @asacarter, and @resistorsoftware for raising issues)
- Updated all dependencies
- Added a script to automatically match the published version number to the one referenced in the README
- Added the correct viewport tag to the Playground
- Hid deprecation errors during tests
- Fixed an issue where the embedded components would not reload the page within the Shopify admin (thanks @buggy for the original issue)
- Fixed the
spacing="none"
variation onStack
not working correctly, and added the missingextraLarge
enum value forspacing
- Fixed
Banner
’sonDismiss
callback not being called when the dismiss button was clicked (76ce13f) (thanks @tlwirtz for the original issue)
- Updated
Badge
text colors - Updated line height for the small
DisplayText
variation - Updated the default icon for error
Banner
(thanks @heyneff for the original issue)
- Added app examples (thanks @lukepxu for the original issue)
- Removed references to the Graphik typeface (thanks @adamnel for the original issue)
- Left-aligned button text for better resizing
- Added Messenger link to navigation to better communicate that the channel nav collapses after 3 items
- Fixed alignment of table headers
- Minor updates to Dataviz and Reports examples
- Added indicators to Home notifications
- Synchronized component documentation with the style guide (1e89559)
- Fixed an issue that prevented the public CHANGELOG from being generated correctly
- Added a hot-reloading Playground to easily try out different components
- Removed the references to Babel presets from
package.json
(thanks @macs91 for digging into this with us) - Removed the
@import
statements at the top of source Sass files - Updated TSLint and related linting dependencies
- Fixed an issue where subcomponents with variations would use a single
-
instead of--
(thanks @johnsonab for the original issue) - Fixed a missing typing dependency and a missing
embedded
types entry point that were causing issues using this package with TypeScript (thanks @buggy for the original issues) - Fixed an issue where the anchor tag for
ResourceList.Item
would not span the full width of the item (0c11498) (thanks @sdn90 for the original issue)
- Started using the
prop-types
package instead of gettingPropTypes
fromreact
, as the latter is deprecated as of React 15.5.0
- Corrected the name of
documentation/Embeddded apps.md
todocumentation/Embedded apps.md
(thanks @chrispappas for the original issue) - Fixed the
ColorPicker
documentation to show valid values forsaturation
,brightness
, andalpha
(thanks @allanarmstrong for the original issue)
- Added a description to
package.json
- Added license to
package.json
and to the root of the repo (thanks @d2s for the original issue) - Fixed an issue where the Webpack example would complain about a missing dependency (thanks @rafaedez for the original issue)
- Switch repo to public access
- Initial release