Radio
A radio input is used to present a single option from a list. Use radio group for multiple options.
Installation
yarn add @atlaskit/radioUsage
Detailed docs and example usage can be found here.
A radio input allows users to select only one option from a number of choices. Radio is generally displayed in a radio group.
A radio input is used to present a single option from a list. Use radio group for multiple options.
yarn add @atlaskit/radioDetailed docs and example usage can be found here.
a60a82196851a -
Internal refactors to remove unused variables. No functional or public changes.437668dfbdec9 -
Add explicit types to a number of DST componentsa2571df0ccae5 -
add explicit types to radio component39e543109ec09 -
add type info to forwardRef componentsf0662cd7a143e -
Internal changes to how borders are applied.20056074447a2 -
Switch to more semantically accurate label prop in internal radio and radio group instances.255837cfba315 -
Internal changes to how border radius is applied.cd29488c8bef2 -
Add labelId to radio group.8f13376aa76a6 -
Add labelId prop to allow referencing of external elements for the accessible name.aa2315ba7c52e -
[ux] Adds css rule to style radio as disabled when it is both disabled and checkedf13d15fae9df4 -
Remove unused type in radio.578fbeefd6128 -
Remove feature flag to allow new controlsb2d69a39e6687 -
Update @compiled/react dependency for improved type checking support.c686c50f99410 -
Update dependencies.#117363
10a0f7f6c2027 -
This package's peerDependencies have been adjusted for react and/or react-dom to reflect the
status of only supporting React 18 going forward. No explicit breaking change to React support has
been made in this release, but this is to signify going forward, breaking changes for React 16 or
React 17 may come via non-major semver releases.
Please refer this community post for more details: https://community.developer.atlassian.com/t/rfc-78-dropping-support-for-react-16-and-rendering-in-a-react-18-concurrent-root-in-jira-and-confluence/87026
b50c5d5d65ae2 -
Bump to the latest version of @compiled/react4660ec858a305 -
Update React from v16 to v1882ed9ca7cc608 -
add aria-describedby for error handling to radio group188698fbad962 -
Migrated from @emotion/react to @compiled/react in order to improve performance, align with
the rest of the Atlaskit techstack, and support React 18 Streaming SSR. Please note, in order to
use this version of @atlaskit/radio, you will need to ensure that your bundler is configured to
handle .css imports correctly. Most bundlers come with built-in support for .css imports, so
you may not need to do anything. If you are using a different bundler, please refer to the
documentation for that bundler to understand how to handle .css imports. For more information on
the migration, please refer to
RFC-73 Migrating our components to Compiled CSS-in-JS.8189b94404af2 -
Update radio to match new icon styles behind feature flag.57f451bda8919 -
Adds side-effect config to support Compiled css extraction in third-party apps#127511
db30e29344013 -
Widening range of react and react-dom peer dependencies from ^16.8.0 || ^17.0.0 || ~18.2.0
to the wider range of ^16.8.0 || ^17.0.0 || ^18.0.0` (where applicable).
This change has been done to enable usage of `react@18.3as well as to have a consistent peer
dependency range forreactandreact-domfor/platform` packages.
a8bd419fd70b9 -
Explicitly set jsxRuntime to classic via pragma comments in order to avoid issues where jsxRuntime
is implicitly set to automatic.5d9e1dccacca -
[ux] Update input border color token to meet 3:1 color contrast ratioLight theme:
color.border.input: #091E4224 → #8590A2Dark mode: color.border.input: #A6C5E229 → #7384969399fbaa016c -
Add support for React 18 in non-strict mode.31fa4f46303a -
Internal changes to typography, no visual change.8d4e99057fe0 -
Upgrade Typescript from 4.9.5 to 5.4.28ab7a816dca7 -
Revert input border change from the previous version427c2dd9e0d6 -
[ux] update border with from 2px to 1px with darker color to meet 3:1 color contrast for
accessibility improvementcabae83473c3 -
[ux] Improved visibility of focus styles by adding a gap between the radio and focus ring. This
makes the focus ring easier to distinguish to a selected radio, which is also blue.a82da4c52cfb -
Fix type bug where 'crossOrigin' appeared as a required prop for Radio6b5d817a38e9 -
Expose a testId on RadioGroup. This applies data-testid to the root level element, as well
as propagates the value to Radio children.ed8b6957789 - Removes
any usage of deprecated legacy theming APIs. These have been superseeded by design tokens.d6eab5e857c - Fix
loose inequality check in determining if a radio button is checked or not.9af31f3c1ae - Delete
version.json931210a5b65 - use new
feature flag for border contrast update4ae083a7e66 - Use
@af/accessibility-testing for default jest-axe config and jest-axe import in accessibility
testing.2e1fa43ac4b - update
border width to use border spacing token599bfe90ee3 - Internal
change to use shape tokens. There is no expected visual change.8f436f0c301 - extend
border contrast feature flag to support confluence53ffecf71cb - Updated
selected radio to use color.background.selected.bold instead of color.background.brand.bold.
There's no visual change as these tokens have same hex value in both light and dark mode.b1bdec7cce2 - Internal
change to enforce token usage for spacing properties. There is no expected visual or behaviour
change.77766ad157d - Enrol
packages to push-model consumption in Jira.b257978b66a - [ux]
reduce the border from 2px to 1px9d00501a414 - Ensure
legacy types are published for TS 4.5-4.841fae2c6f68 - Upgrade
Typescript from 4.5.5 to 4.9.556507598609 - Skip
minor dependency bump18aeca8c199 - Internal
change to update token references. There is no expected behaviour or visual change.22d4be4674b - Fixes
issue where disabled radios were using the wrong background and border tokens8e6acf8f038 - Updates
tokens used for border and dot, improved tokens appearance when radio is both checked and disabled9827dcb82b8 - No-op
change to introduce spacing tokens to design system components.8cc2f888c83 - Upgrade
Typescript from 4.3.5 to 4.5.554a5b7576a6 - Updates
@emotion/core to @emotion/react; v10 to v11. There is no expected behavior change.8d4228767b0 - Upgrade
Typescript from 4.2.4 to 4.3.5.72cfbe1a536 - Internal
code change turning on new linting rules.fe575d49d66 - Updated
styles to use new input design tokenscb2392f6d33 - Upgrade
to TypeScript 4.2.419d72473dfb - The
no-unsafe-design-token-usage eslint rule now respects the new token naming conventions when
auto-fixing by correctly formatting token ids.19d72473dfb - The
no-unsafe-design-token-usage eslint rule now respects the new token naming conventions when
auto-fixing by correctly formatting token ids.f460cc7c411 - Builds
for this package now pass through a tokens babel plugin, removing runtime invocations of the
tokens() function and improving bundle size.#13302
f276913fa2c -
Instrumented Radio with the new theming package, @atlaskit/tokens.
New tokens will be visible only in applications configured to use the new Tokens API (currently in alpha). These changes are intended to be interoperable with the legacy theme implementation. Legacy dark mode users should expect no visual or breaking changes.
af4bca32ad4 - Internal
changes to supress eslint rules.2d7cc544696 - Updates
token usage to match the latest token set378d1cef00f - Bump
@atlaskit/theme to version ^11.3.0.5c4717067dd - [ux] Add
aria-labelledby prop to RadioGroupd6f7ff383cf - Updates
to development dependency storybook-addon-performance7af2427f3a8 - [ux]
Update form field examples for validation and add a new prop to RadioGroup component79c23df6340 - Use
injected package name and version for analytics instead of version.json.d3265f19be - Transpile
packages using babel rather than tsc5f58283e1f - Export
types using Typescript's new "export type" syntax to satisfy Typescript's --isolatedModules
compiler option. This requires version 3.8 of Typescript, read more about how we handle Typescript
versions here: https://atlaskit.atlassian.com/get-started Also add typescript to
devDependencies to denote version that the package was built with.#4749
44ef6437cd - In this
version, we made radio dramatically faster and lighter 😍
In 5.0.0 we improved the performance of radio by making it more similar to a native radio input.
appearance: none on the input, enabling us to style the input and the after
pseudo-element. This removes the need for an svg.${testId}--hidden-radio to
${testId}--radio-input to provide less usage friction. We looked into product usage of the
testId and we have reached out to the owners of any code that would be effected (there was
only one).peerDependency on styled-components@3 in favour of using @emotion/core.ref to a radio input.RadioIcon export, you should just use the Radio without a label if you want this
functionality.Radio and RadioGroup. RadioGroup previously allowed you to pass any
props so this has been restricted to only those used. The isChecked prop in theoptions prop
for RadioGroup has been removed. You can only set a Radio as checked if the value of the
Radio is the selected value in the RadioGroup. Radio used to explicitly define input
attributes as props and now it extends InputHTMLAttributes allowing you to pass any input
attribute as a prop.onMouse events were passed onto both the input element and the
Radio, which means they would be called multiple times. Now they are only passed to the input
element.Radio acts as a native radio input, the name prop on each RadioGroup needs to be unique
or each RadioGroup with the same name needs to be inside a form element. This is because the
name attribute on radio inputs is used to link the inputs so if you have two separate
RadioGroup's with the same name, the browser views them as one radio group.6360c46009 - Reenable
integration tests for Edge browser#3885
6c525a8229 - Upgraded
to TypeScript 3.9.6 and tslib to 2.0.0
Since tslib is a dependency for all our packages we recommend that products also follow this tslib upgrade to prevent duplicates of tslib being bundled.
76165ad82f - Bump
required because of conflicts on wadmal releasee99262c6f0 - All form
elements now have a default font explicitly set954cc87b62 - The readme
and package information has been updated to point to the new design system website.db053b24d8 - Update all
the theme imports to be tree-shakable87f4720f27 - Officially
dropping IE11 support, from this version onwards there are no warranties of the package working in
IE11. For more information see:
https://community.developer.atlassian.com/t/atlaskit-to-drop-support-for-internet-explorer-11-from-1st-july-2020/3953454a9514fcf - Build and
supporting files will no longer be published to npm966efe3f95 - Change
imports to comply with Atlassian conventions- Updated dependencies[minor]f0af33ead6:
Add name prop to RadioGroup
[patch]6548261c9a:
Remove namespace imports from React, ReactDom, and PropTypes- Updated dependencies 6548261c9a:
[patch]e20d7996ca:
Fixes radio value from string | number to just string to match the current implementation.-
Updated dependencies
ec76622d34:
Updated dependencies d93de8e56e:
[patch]4a223473c5:
Removes babel/runtime from dependencies. Users should see a smaller bundlesize as a result- Updated dependencies 28f8f0e089:
Updated dependencies 82747f2922:
[patch]24865cfaff:
Form has been converted to Typescript. TypeScript consumers will now get static type safety. Flow types are no longer provided. No API changes.- Updated dependencies 24865cfaff:
Updated dependencies 24865cfaff:
[patch]d222c2b987:
Theme has been converted to Typescript. Typescript consumers will now get static type safety. Flow types are no longer provided.
** getTokens props changes ** When defining the value function passed into a ThemeProvider, the
getTokens parameter cannot be called without props; if no props are provided an empty object {}
must be passed in:
<CustomTheme.Provider
value={t => ({ ...t(), backgroundColor: '#333'})}
>becomes:
<CustomTheme.Provider
value={t => ({ ...t({}), backgroundColor: '#333'})}
>** Color palette changes ** Color palettes have been moved into their own file. Users will need to update imports from this:
import { colors } from '@atlaskit/theme';
colors.colorPalette('8');to this:
import { colorPalette } from '@atlaskit/theme';
colorPalette.colorPalette('8');or for multi entry-point users:
import * as colors from '@atlaskit/theme/colors';
colors.colorPalette('8');to this:
import * as colorPalettes from '@atlaskit/theme/color-palette';
colorPalettes.colorPalette('8');[patch]70e57645f2:
Updates controlled example to show better pattern for state duplication between RadioGroup and Form
[patch]35d2229b2a:
Adding missing license to packages and update to Copyright 2019 Atlassian Pty Ltd.
[patch]a2d0043716:
Updated version of analytics-next to fix potential incompatibilities with TS 3.6
[minor]ff521a0e20:
Adding an optional prop testId that will set the attribute value data-testid. It will help
products to write better integration and end to end tests.
[patch]7dc767eabb:
onChange is now marked as an optional prop
[patch]097b696613:
Components now depend on TS 3.6 internally, in order to fix an issue with TS resolving non-relative imports as relative imports
[patch]ecca4d1dbb:
Upgraded Typescript to 3.3.x
[patch]708028db86:
Change all the imports to theme in Core to use multi entry points
[patch]de35ce8c67:
Updates component maintainers
[patch]926b43142b:
Analytics-next has been converted to Typescript. Typescript consumers will now get static type safety. Flow types are no longer provided. No behavioural changes.
Breaking changes
withAnalyticsForSumTypeProps alias has been removed, please use withAnalyticsEventsAnalyticsContextWrappedComp alias has been removed, please use withAnalyticsContextBreaking changes to TypeScript annotations
withAnalyticsEvents now infers proptypes automatically, consumers no longer need to provide
props as a generic type.withAnalyticsContext now infers proptypes automatically, consumers no longer need to provide
props as a generic type.WithAnalyticsEventProps has been renamed to WithAnalyticsEventsProps to match source
codeCreateUIAnalyticsEventSignature has been renamed to CreateUIAnalyticsEvent to match
source codeUIAnalyticsEventHandlerSignature has been renamed to UIAnalyticsEventHandler to match
source codeAnalyticsEventsPayload has been renamed to AnalyticsEventPayloadObjectType has been removed, please use Record<string, any> or [key: string]: anyUIAnalyticsEventInterface has been removed, please use UIAnalyticsEventAnalyticsEventInterface has been removed, please use AnalyticsEventCreateAndFireEventFunction removed and should now be inferred by TypeScriptAnalyticsEventUpdater removed and should now be inferred by TypeScript[patch]9f8ab1084b:
Consume analytics-next ts type definitions as an ambient declaration.
[patch]bbff8a7d87:
Fixes bug, missing version.json file
[patch]18dfac7332:
In this PR, we are:
[patch]d0db01b410:
TypeScript users of withAnalyticsEvents and withAnalyticsContext are now required to provide props as a generic type. This is so that TypeScript can correctly calculate the props and defaultProps of the returned component.
Before:
withAnalyticsEvents()(Button) as ComponentClass<Props>;After:
withAnalyticsEvents<Props>()(Button);[patch]4615439434:
index.ts will now be ignored when publishing to npm
[patch]93bcf314c6:
Added missing tslib dep
[minor]76299208e6:
As a breaking change, all @atlaskit packages will be dropping cjs distributions and will only
distribute esm. This means all distributed code will be transpiled, but will still contain
import and export declarations.
The major reason for doing this is to allow us to support multiple entry points in packages, e.g:
import colors from `@atlaskit/theme/colors`;Previously this was sort of possible for consumers by doing something like:
import colors from `@atlaskit/theme/dist/esm/colors`;This has a couple of issues. 1, it treats the file system as API making internal refactors harder, we have to worry about how consumers might be using things that aren't actually supposed to be used. 2. We are unable to do this internally in @atlaskit packages. This leads to lots of packages bundling all of theme, just to use a single color, especially in situations where tree shaking fails.
To support being able to use multiple entrypoints internally, we unfortunately cannot have multiple distributions as they would need to have very different imports from of their own internal dependencies.
ES Modules are widely supported by all modern bundlers and can be worked around in node environments.
We may choose to revisit this solution in the future if we find any unintended condequences, but we see this as a pretty sane path forward which should lead to some major bundle size decreases, saner API's and simpler package architecture.
Please reach out to #fabric-build (if in Atlassian) or create an issue in Design System Support (for external) if you have any questions or queries about this.