@westpac/ui 0.4.0 → 0.5.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +6 -0
- package/dist/components/alert/alert.component.js +2 -1
- package/dist/components/alert/alert.styles.js +2 -2
- package/dist/components/compacta/compacta.component.js +4 -3
- package/dist/components/flexi-cell/flexi-cell.component.js +2 -2
- package/dist/components/flexi-cell/flexi-cell.styles.js +1 -1
- package/dist/components/flexi-cell/flexi-cell.types.d.ts +4 -0
- package/dist/components/flexi-cell/index.d.ts +1 -0
- package/dist/components/flexi-cell/index.js +1 -0
- package/dist/components/icon/index.d.ts +1 -0
- package/dist/components/icon/index.js +1 -0
- package/dist/components/index.d.ts +3 -1
- package/dist/components/index.js +3 -1
- package/dist/components/list/components/item/item.styles.js +1 -1
- package/dist/components/list/list.styles.js +1 -1
- package/dist/components/repeater/index.d.ts +2 -0
- package/dist/components/repeater/index.js +1 -0
- package/dist/components/repeater/repeater.component.d.ts +3 -0
- package/dist/components/repeater/repeater.component.js +141 -0
- package/dist/components/repeater/repeater.stories.d.ts +13 -0
- package/dist/components/repeater/repeater.stories.js +34 -0
- package/dist/components/repeater/repeater.styles.d.ts +39 -0
- package/dist/components/repeater/repeater.styles.js +31 -0
- package/dist/components/repeater/repeater.types.d.ts +19 -0
- package/dist/components/repeater/repeater.types.js +1 -0
- package/dist/components/repeater/repeater.utils.d.ts +2 -0
- package/dist/components/repeater/repeater.utils.js +2 -0
- package/dist/components/selector/components/index.d.ts +2 -0
- package/dist/components/selector/components/index.js +2 -0
- package/dist/components/selector/components/selector-checkbox-group/components/index.d.ts +1 -0
- package/dist/components/selector/components/selector-checkbox-group/components/index.js +1 -0
- package/dist/components/selector/components/selector-checkbox-group/components/selector-checkbox-group-option/index.d.ts +2 -0
- package/dist/components/selector/components/selector-checkbox-group/components/selector-checkbox-group-option/index.js +1 -0
- package/dist/components/selector/components/selector-checkbox-group/components/selector-checkbox-group-option/selector-checkbox-group-option.component.d.ts +12 -0
- package/dist/components/selector/components/selector-checkbox-group/components/selector-checkbox-group-option/selector-checkbox-group-option.component.js +67 -0
- package/dist/components/selector/components/selector-checkbox-group/components/selector-checkbox-group-option/selector-checkbox-group-option.styles.d.ts +59 -0
- package/dist/components/selector/components/selector-checkbox-group/components/selector-checkbox-group-option/selector-checkbox-group-option.styles.js +57 -0
- package/dist/components/selector/components/selector-checkbox-group/components/selector-checkbox-group-option/selector-checkbox-group-option.types.d.ts +10 -0
- package/dist/components/selector/components/selector-checkbox-group/components/selector-checkbox-group-option/selector-checkbox-group-option.types.js +1 -0
- package/dist/components/selector/components/selector-checkbox-group/index.d.ts +2 -0
- package/dist/components/selector/components/selector-checkbox-group/index.js +1 -0
- package/dist/components/selector/components/selector-checkbox-group/selector-checkbox-group.component.d.ts +15 -0
- package/dist/components/selector/components/selector-checkbox-group/selector-checkbox-group.component.js +49 -0
- package/dist/components/selector/components/selector-checkbox-group/selector-checkbox-group.styles.d.ts +3 -0
- package/dist/components/selector/components/selector-checkbox-group/selector-checkbox-group.styles.js +13 -0
- package/dist/components/selector/components/selector-checkbox-group/selector-checkbox-group.types.d.ts +20 -0
- package/dist/components/selector/components/selector-checkbox-group/selector-checkbox-group.types.js +1 -0
- package/dist/components/selector/components/selector-radio-group/components/index.d.ts +1 -0
- package/dist/components/selector/components/selector-radio-group/components/index.js +1 -0
- package/dist/components/selector/components/selector-radio-group/components/selector-radio-group-option/index.d.ts +2 -0
- package/dist/components/selector/components/selector-radio-group/components/selector-radio-group-option/index.js +1 -0
- package/dist/components/selector/components/selector-radio-group/components/selector-radio-group-option/selector-radio-group-option.component.d.ts +12 -0
- package/dist/components/selector/components/selector-radio-group/components/selector-radio-group-option/selector-radio-group-option.component.js +67 -0
- package/dist/components/selector/components/selector-radio-group/components/selector-radio-group-option/selector-radio-group-option.styles.d.ts +59 -0
- package/dist/components/selector/components/selector-radio-group/components/selector-radio-group-option/selector-radio-group-option.styles.js +57 -0
- package/dist/components/selector/components/selector-radio-group/components/selector-radio-group-option/selector-radio-group-option.types.d.ts +15 -0
- package/dist/components/selector/components/selector-radio-group/components/selector-radio-group-option/selector-radio-group-option.types.js +1 -0
- package/dist/components/selector/components/selector-radio-group/index.d.ts +2 -0
- package/dist/components/selector/components/selector-radio-group/index.js +1 -0
- package/dist/components/selector/components/selector-radio-group/selector-radio-group.component.d.ts +15 -0
- package/dist/components/selector/components/selector-radio-group/selector-radio-group.component.js +58 -0
- package/dist/components/selector/components/selector-radio-group/selector-radio-group.styles.d.ts +13 -0
- package/dist/components/selector/components/selector-radio-group/selector-radio-group.styles.js +18 -0
- package/dist/components/selector/components/selector-radio-group/selector-radio-group.types.d.ts +17 -0
- package/dist/components/selector/components/selector-radio-group/selector-radio-group.types.js +1 -0
- package/dist/components/selector/index.d.ts +2 -0
- package/dist/components/selector/index.js +1 -0
- package/dist/components/selector/selector.component.d.ts +30 -0
- package/dist/components/selector/selector.component.js +34 -0
- package/dist/components/selector/selector.stories.d.ts +57 -0
- package/dist/components/selector/selector.stories.js +515 -0
- package/dist/components/selector/selector.types.d.ts +20 -0
- package/dist/components/selector/selector.types.js +1 -0
- package/dist/css/westpac-ui.css +150 -0
- package/dist/css/westpac-ui.min.css +150 -0
- package/dist/utils/generateId.d.ts +1 -0
- package/dist/utils/generateId.js +6 -0
- package/dist/utils/index.d.ts +1 -0
- package/dist/utils/index.js +1 -0
- package/package.json +7 -1
- package/src/components/alert/alert.component.tsx +1 -1
- package/src/components/alert/alert.styles.ts +2 -2
- package/src/components/compacta/compacta.component.tsx +4 -3
- package/src/components/flexi-cell/flexi-cell.component.tsx +2 -1
- package/src/components/flexi-cell/flexi-cell.styles.ts +1 -1
- package/src/components/flexi-cell/flexi-cell.types.ts +4 -0
- package/src/components/flexi-cell/index.ts +1 -0
- package/src/components/icon/index.ts +1 -0
- package/src/components/index.ts +3 -1
- package/src/components/list/components/item/item.styles.ts +1 -1
- package/src/components/list/list.styles.ts +1 -1
- package/src/components/repeater/index.ts +2 -0
- package/src/components/repeater/repeater.component.tsx +121 -0
- package/src/components/repeater/repeater.stories.tsx +49 -0
- package/src/components/repeater/repeater.styles.ts +27 -0
- package/src/components/repeater/repeater.types.ts +20 -0
- package/src/components/repeater/repeater.utils.tsx +3 -0
- package/src/components/selector/components/index.ts +2 -0
- package/src/components/selector/components/selector-checkbox-group/components/index.ts +1 -0
- package/src/components/selector/components/selector-checkbox-group/components/selector-checkbox-group-option/index.ts +2 -0
- package/src/components/selector/components/selector-checkbox-group/components/selector-checkbox-group-option/selector-checkbox-group-option.component.tsx +96 -0
- package/src/components/selector/components/selector-checkbox-group/components/selector-checkbox-group-option/selector-checkbox-group-option.styles.ts +53 -0
- package/src/components/selector/components/selector-checkbox-group/components/selector-checkbox-group-option/selector-checkbox-group-option.types.ts +15 -0
- package/src/components/selector/components/selector-checkbox-group/index.ts +2 -0
- package/src/components/selector/components/selector-checkbox-group/selector-checkbox-group.component.tsx +46 -0
- package/src/components/selector/components/selector-checkbox-group/selector-checkbox-group.styles.ts +9 -0
- package/src/components/selector/components/selector-checkbox-group/selector-checkbox-group.types.ts +25 -0
- package/src/components/selector/components/selector-radio-group/components/index.ts +1 -0
- package/src/components/selector/components/selector-radio-group/components/selector-radio-group-option/index.ts +2 -0
- package/src/components/selector/components/selector-radio-group/components/selector-radio-group-option/selector-radio-group-option.component.tsx +90 -0
- package/src/components/selector/components/selector-radio-group/components/selector-radio-group-option/selector-radio-group-option.styles.ts +53 -0
- package/src/components/selector/components/selector-radio-group/components/selector-radio-group-option/selector-radio-group-option.types.ts +21 -0
- package/src/components/selector/components/selector-radio-group/index.ts +2 -0
- package/src/components/selector/components/selector-radio-group/selector-radio-group.component.tsx +48 -0
- package/src/components/selector/components/selector-radio-group/selector-radio-group.styles.ts +14 -0
- package/src/components/selector/components/selector-radio-group/selector-radio-group.types.ts +22 -0
- package/src/components/selector/index.ts +2 -0
- package/src/components/selector/selector.component.tsx +34 -0
- package/src/components/selector/selector.stories.tsx +621 -0
- package/src/components/selector/selector.types.ts +24 -0
- package/src/utils/generateId.ts +6 -0
- package/src/utils/index.ts +1 -0
package/src/components/selector/components/selector-radio-group/selector-radio-group.component.tsx
ADDED
|
@@ -0,0 +1,48 @@
|
|
|
1
|
+
import React, { createContext } from 'react';
|
|
2
|
+
import { useRadioGroup } from 'react-aria';
|
|
3
|
+
import { useRadioGroupState } from 'react-stately';
|
|
4
|
+
|
|
5
|
+
import { SelectorRadioGroupOption } from './components/index.js';
|
|
6
|
+
import { styles } from './selector-radio-group.styles.js';
|
|
7
|
+
import { type SelectorRadioGroupContextState, type SelectorRadioGroupProps } from './selector-radio-group.types.js';
|
|
8
|
+
|
|
9
|
+
export const SelectorRadioGroupContext = createContext<SelectorRadioGroupContextState>({
|
|
10
|
+
// TODO: Remove deprecated name prop once React Aria removes it from RadioGroupState
|
|
11
|
+
name: '',
|
|
12
|
+
isDisabled: false,
|
|
13
|
+
isReadOnly: false,
|
|
14
|
+
isRequired: false,
|
|
15
|
+
validationState: null,
|
|
16
|
+
selectedValue: null,
|
|
17
|
+
setSelectedValue: () => null,
|
|
18
|
+
lastFocusedValue: null,
|
|
19
|
+
setLastFocusedValue: () => null,
|
|
20
|
+
orientation: 'vertical',
|
|
21
|
+
});
|
|
22
|
+
|
|
23
|
+
export function SelectorRadioGroup({
|
|
24
|
+
className,
|
|
25
|
+
children,
|
|
26
|
+
label,
|
|
27
|
+
orientation = 'vertical',
|
|
28
|
+
errorMessage,
|
|
29
|
+
...props
|
|
30
|
+
}: SelectorRadioGroupProps) {
|
|
31
|
+
const state = useRadioGroupState({ ...props, errorMessage, label, orientation });
|
|
32
|
+
const { radioGroupProps, labelProps, errorMessageProps } = useRadioGroup({ ...props, label, orientation }, state);
|
|
33
|
+
|
|
34
|
+
return (
|
|
35
|
+
<div className={styles({ className, orientation })} {...radioGroupProps}>
|
|
36
|
+
<span {...labelProps}>{label}</span>
|
|
37
|
+
<SelectorRadioGroupContext.Provider value={{ ...state, orientation }}>
|
|
38
|
+
{children}
|
|
39
|
+
</SelectorRadioGroupContext.Provider>
|
|
40
|
+
{errorMessage && state.validationState === 'invalid' && (
|
|
41
|
+
<div {...errorMessageProps} className="typography-body-10 text-danger">
|
|
42
|
+
{errorMessage}
|
|
43
|
+
</div>
|
|
44
|
+
)}
|
|
45
|
+
</div>
|
|
46
|
+
);
|
|
47
|
+
}
|
|
48
|
+
SelectorRadioGroup.Option = SelectorRadioGroupOption;
|
package/src/components/selector/components/selector-radio-group/selector-radio-group.styles.ts
ADDED
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import { tv } from 'tailwind-variants';
|
|
2
|
+
|
|
3
|
+
export const styles = tv(
|
|
4
|
+
{
|
|
5
|
+
base: 'flex gap-2 md:gap-3',
|
|
6
|
+
variants: {
|
|
7
|
+
orientation: {
|
|
8
|
+
vertical: 'flex-col',
|
|
9
|
+
horizontal: 'flex-row',
|
|
10
|
+
},
|
|
11
|
+
},
|
|
12
|
+
},
|
|
13
|
+
{ responsiveVariants: ['xsl', 'sm', 'md', 'lg', 'xl'] },
|
|
14
|
+
);
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
import { type HTMLAttributes } from 'react';
|
|
2
|
+
import { type AriaRadioGroupProps } from 'react-aria';
|
|
3
|
+
import { type RadioGroupState } from 'react-stately';
|
|
4
|
+
import { type VariantProps } from 'tailwind-variants';
|
|
5
|
+
|
|
6
|
+
import { styles } from './selector-radio-group.styles.js';
|
|
7
|
+
|
|
8
|
+
export type SelectorRadioGroupProps = {
|
|
9
|
+
/**
|
|
10
|
+
* Tag to render
|
|
11
|
+
*/
|
|
12
|
+
tag?: keyof JSX.IntrinsicElements;
|
|
13
|
+
} & VariantProps<typeof styles> &
|
|
14
|
+
AriaRadioGroupProps &
|
|
15
|
+
Omit<HTMLAttributes<Element>, 'onChange'>;
|
|
16
|
+
|
|
17
|
+
export type SelectorRadioGroupContextState = {
|
|
18
|
+
/**
|
|
19
|
+
* Controls orientation of `Radio` components, can't be applied directly on `Radio`
|
|
20
|
+
*/
|
|
21
|
+
orientation: 'vertical' | 'horizontal';
|
|
22
|
+
} & RadioGroupState;
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
import React from 'react';
|
|
2
|
+
|
|
3
|
+
import {
|
|
4
|
+
FlexiCellAdornment,
|
|
5
|
+
FlexiCellBody,
|
|
6
|
+
FlexiCellButton,
|
|
7
|
+
FlexiCellCircle,
|
|
8
|
+
FlexiCellFooter,
|
|
9
|
+
FlexiCellHint,
|
|
10
|
+
FlexiCellLabel,
|
|
11
|
+
} from '../flexi-cell/components/index.js';
|
|
12
|
+
|
|
13
|
+
import { SelectorCheckboxGroup, SelectorRadioGroup } from './components/index.js';
|
|
14
|
+
import { SelectorCheckboxGroupOption } from './components/selector-checkbox-group/components/index.js';
|
|
15
|
+
import { SelectorRadioGroupOption } from './components/selector-radio-group/components/index.js';
|
|
16
|
+
import { type SelectorProps } from './selector.types.js';
|
|
17
|
+
|
|
18
|
+
// TODO: react-aria doesn't consider the click as focus. so the focusRing will appeared just with the tab.
|
|
19
|
+
export function Selector(props: SelectorProps) {
|
|
20
|
+
if (props.type === 'checkbox') {
|
|
21
|
+
return <SelectorCheckboxGroup {...props} />;
|
|
22
|
+
}
|
|
23
|
+
return <SelectorRadioGroup {...props} />;
|
|
24
|
+
}
|
|
25
|
+
|
|
26
|
+
Selector.Radio = SelectorRadioGroupOption;
|
|
27
|
+
Selector.Checkbox = SelectorCheckboxGroupOption;
|
|
28
|
+
Selector.Body = FlexiCellBody;
|
|
29
|
+
Selector.Footer = FlexiCellFooter;
|
|
30
|
+
Selector.Adornment = FlexiCellAdornment;
|
|
31
|
+
Selector.Hint = FlexiCellHint;
|
|
32
|
+
Selector.Label = FlexiCellLabel;
|
|
33
|
+
Selector.Button = FlexiCellButton;
|
|
34
|
+
Selector.Circle = FlexiCellCircle;
|