@bspk/ui 1.1.17 → 1.1.19
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/dist/Avatar.d.ts +17 -6
- package/dist/Avatar.js +15 -6
- package/dist/Avatar.js.map +1 -1
- package/dist/AvatarGroup.d.ts +49 -0
- package/dist/AvatarGroup.js +18 -0
- package/dist/AvatarGroup.js.map +1 -0
- package/dist/Badge.js +1 -1
- package/dist/Button.d.ts +14 -4
- package/dist/Button.js +1 -1
- package/dist/Button.js.map +1 -1
- package/dist/Checkbox.d.ts +15 -2
- package/dist/Checkbox.js.map +1 -1
- package/dist/CheckboxGroup.d.ts +6 -3
- package/dist/CheckboxGroup.js.map +1 -1
- package/dist/CheckboxOption.d.ts +8 -1
- package/dist/CheckboxOption.js.map +1 -1
- package/dist/Chip.d.ts +3 -1
- package/dist/Chip.js.map +1 -1
- package/dist/Dialog.d.ts +3 -3
- package/dist/Dialog.js.map +1 -1
- package/dist/Divider.js +1 -1
- package/dist/Dropdown.d.ts +33 -7
- package/dist/Dropdown.js +5 -5
- package/dist/Dropdown.js.map +1 -1
- package/dist/ListItem.js +1 -1
- package/dist/Menu.d.ts +40 -21
- package/dist/Menu.js +63 -41
- package/dist/Menu.js.map +1 -1
- package/dist/NumberInput.d.ts +5 -1
- package/dist/NumberInput.js +7 -5
- package/dist/NumberInput.js.map +1 -1
- package/dist/Portal.d.ts +5 -1
- package/dist/Portal.js.map +1 -1
- package/dist/ProgressBar.d.ts +4 -0
- package/dist/ProgressBar.js.map +1 -1
- package/dist/ProgressionStepper.d.ts +9 -2
- package/dist/ProgressionStepper.js +1 -1
- package/dist/ProgressionStepper.js.map +1 -1
- package/dist/ProgressionStepperBar.d.ts +6 -0
- package/dist/ProgressionStepperBar.js.map +1 -1
- package/dist/Radio.d.ts +16 -2
- package/dist/Radio.js +2 -2
- package/dist/Radio.js.map +1 -1
- package/dist/RadioGroup.d.ts +26 -3
- package/dist/RadioGroup.js +3 -3
- package/dist/RadioGroup.js.map +1 -1
- package/dist/RadioOption.d.ts +9 -1
- package/dist/RadioOption.js.map +1 -1
- package/dist/SearchBar.d.ts +30 -4
- package/dist/SearchBar.js +16 -15
- package/dist/SearchBar.js.map +1 -1
- package/dist/SegmentedControl.d.ts +21 -2
- package/dist/SegmentedControl.js +1 -1
- package/dist/SegmentedControl.js.map +1 -1
- package/dist/Switch.d.ts +1 -1
- package/dist/SwitchGroup.d.ts +13 -6
- package/dist/SwitchGroup.js +1 -1
- package/dist/SwitchGroup.js.map +1 -1
- package/dist/TabGroup.d.ts +23 -5
- package/dist/TabGroup.js +1 -1
- package/dist/TabGroup.js.map +1 -1
- package/dist/Tag.d.ts +5 -2
- package/dist/Tag.js +1 -1
- package/dist/Tag.js.map +1 -1
- package/dist/TextInput.d.ts +15 -6
- package/dist/TextInput.js +11 -5
- package/dist/TextInput.js.map +1 -1
- package/dist/Textarea.d.ts +3 -3
- package/dist/avatar-group.css +1 -0
- package/dist/avatar.css +1 -1
- package/dist/badge.css +1 -1
- package/dist/button.css +1 -1
- package/dist/demo/ExampleModalRender.d.ts +7 -0
- package/dist/demo/ExampleModalRender.js +16 -0
- package/dist/demo/ExampleModalRender.js.map +1 -0
- package/dist/demo/ExamplePlaceholder.d.ts +7 -0
- package/dist/demo/ExamplePlaceholder.js +13 -0
- package/dist/demo/ExamplePlaceholder.js.map +1 -0
- package/dist/demo/examples.d.ts +101 -0
- package/dist/demo/examples.js +483 -0
- package/dist/demo/examples.js.map +1 -0
- package/dist/divider.css +1 -1
- package/dist/dropdown.css +1 -1
- package/dist/hooks/useKeyboardNavigation.js +5 -2
- package/dist/hooks/useKeyboardNavigation.js.map +1 -1
- package/dist/hooks/useOptionIconsInvalid.d.ts +10 -1
- package/dist/hooks/useOptionIconsInvalid.js.map +1 -1
- package/dist/index.d.ts +4 -26
- package/dist/index.js.map +1 -1
- package/dist/list-item.css +1 -1
- package/dist/menu.css +1 -1
- package/dist/segmented-control.css +1 -1
- package/dist/tab-group.css +1 -1
- package/dist/tag.css +1 -1
- package/dist/text-input.css +1 -1
- package/dist/utils/children.js.map +1 -1
- package/meta-types.ts +2 -0
- package/meta.ts +76 -42
- package/package.json +1 -1
- package/src/Avatar.tsx +35 -8
- package/src/AvatarGroup.tsx +71 -0
- package/src/Button.tsx +14 -4
- package/src/Checkbox.tsx +25 -11
- package/src/CheckboxGroup.tsx +6 -3
- package/src/CheckboxOption.tsx +9 -2
- package/src/Chip.tsx +3 -1
- package/src/Dialog.tsx +3 -3
- package/src/Dropdown.tsx +40 -11
- package/src/Menu.tsx +159 -108
- package/src/NumberInput.tsx +15 -6
- package/src/Portal.tsx +5 -1
- package/src/ProgressBar.tsx +4 -0
- package/src/ProgressionStepper.tsx +9 -2
- package/src/ProgressionStepperBar.tsx +6 -0
- package/src/Radio.tsx +21 -4
- package/src/RadioGroup.tsx +34 -6
- package/src/RadioOption.tsx +11 -2
- package/src/SearchBar.tsx +87 -44
- package/src/SegmentedControl.tsx +21 -2
- package/src/Switch.tsx +1 -1
- package/src/SwitchGroup.tsx +19 -7
- package/src/TabGroup.tsx +23 -5
- package/src/Tag.tsx +5 -2
- package/src/TextInput.tsx +25 -15
- package/src/Textarea.tsx +3 -3
- package/src/avatar-group.scss +17 -0
- package/src/avatar.scss +26 -2
- package/src/badge.scss +1 -0
- package/src/button.scss +1 -0
- package/src/demo/ExampleModalRender.tsx +37 -0
- package/src/demo/ExamplePlaceholder.tsx +40 -0
- package/src/demo/examples.tsx +699 -0
- package/src/divider.scss +2 -0
- package/src/dropdown.scss +5 -0
- package/src/hooks/useKeyboardNavigation.ts +3 -2
- package/src/hooks/useOptionIconsInvalid.ts +10 -1
- package/src/index.ts +5 -32
- package/src/list-item.scss +5 -1
- package/src/menu.scss +5 -1
- package/src/segmented-control.scss +1 -0
- package/src/tab-group.scss +1 -0
- package/src/tag.scss +1 -0
- package/src/text-input.scss +13 -18
- package/src/utils/children.ts +1 -1
package/dist/Menu.d.ts
CHANGED
|
@@ -1,14 +1,14 @@
|
|
|
1
1
|
import './menu.scss';
|
|
2
|
-
import { ComponentProps,
|
|
2
|
+
import { ComponentProps, ReactNode } from 'react';
|
|
3
3
|
import { ListItem } from './ListItem';
|
|
4
|
-
import { CommonProps, ElementProps } from './';
|
|
4
|
+
import { CommonProps, ElementProps, SetRef } from './';
|
|
5
5
|
export declare const MIN_ITEM_COUNT = 3;
|
|
6
6
|
export declare const MAX_ITEM_COUNT = 10;
|
|
7
7
|
export declare function menuItemId(menuId: string, index: number): string;
|
|
8
8
|
/** The props for the renderListItem function. Useful for customizing menu list items. */
|
|
9
|
-
export type RenderListItemParams<
|
|
9
|
+
export type RenderListItemParams<T extends MenuItem = MenuItem> = Pick<MenuProps<T>, 'activeIndex' | 'isMulti' | 'selectedValues'> & {
|
|
10
10
|
index: number;
|
|
11
|
-
item:
|
|
11
|
+
item: T;
|
|
12
12
|
menuId: string;
|
|
13
13
|
selected: boolean;
|
|
14
14
|
itemId?: string;
|
|
@@ -22,7 +22,7 @@ export type MenuItem = CommonProps<'disabled'> & {
|
|
|
22
22
|
/** The unique id of the menu item. */
|
|
23
23
|
id?: string;
|
|
24
24
|
};
|
|
25
|
-
export type MenuProps<
|
|
25
|
+
export type MenuProps<T extends MenuItem = MenuItem> = CommonProps<'disabled' | 'id'> & {
|
|
26
26
|
/**
|
|
27
27
|
* The number of items to display in the menu
|
|
28
28
|
*
|
|
@@ -34,17 +34,27 @@ export type MenuProps<Item extends MenuItem = MenuItem> = CommonProps<'disabled'
|
|
|
34
34
|
/**
|
|
35
35
|
* Content to display in the menu.
|
|
36
36
|
*
|
|
37
|
-
* @
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
*
|
|
37
|
+
* @example
|
|
38
|
+
* [
|
|
39
|
+
* { value: '1', label: 'Option 1' },
|
|
40
|
+
* { value: '2', label: 'Option 2' },
|
|
41
|
+
* { value: '3', label: 'Option 3' },
|
|
42
|
+
* { value: '4', label: 'Option 4' },
|
|
43
|
+
* { value: '5', label: 'Option 5' },
|
|
44
|
+
* { value: '6', label: 'Option 6' },
|
|
45
|
+
* { value: '7', label: 'Option 7' },
|
|
46
|
+
* { value: '8', label: 'Option 8' },
|
|
47
|
+
* { value: '9', label: 'Option 9' },
|
|
48
|
+
* { value: '10', label: 'Option 10' },
|
|
49
|
+
* ];
|
|
44
50
|
*
|
|
45
|
-
* @type
|
|
51
|
+
* @type Array<MenuItem>
|
|
46
52
|
*/
|
|
47
|
-
|
|
53
|
+
items?: T[];
|
|
54
|
+
/** A ref to the inner div element. */
|
|
55
|
+
innerRef?: SetRef<HTMLDivElement>;
|
|
56
|
+
/** Message to display when no results are found */
|
|
57
|
+
noResultsMessage?: ReactNode;
|
|
48
58
|
/** The index of the currently highlighted item. */
|
|
49
59
|
activeIndex?: number;
|
|
50
60
|
/** The values of the selected items */
|
|
@@ -56,29 +66,38 @@ export type MenuProps<Item extends MenuItem = MenuItem> = CommonProps<'disabled'
|
|
|
56
66
|
* @param {RenderListItemParams} props
|
|
57
67
|
* @returns {ComponentProps<typeof ListItem>}
|
|
58
68
|
*/
|
|
59
|
-
renderListItem?: (props: RenderListItemParams<
|
|
69
|
+
renderListItem?: (props: RenderListItemParams<T>) => Partial<ComponentProps<typeof ListItem>>;
|
|
60
70
|
/**
|
|
61
71
|
* Whether the menu allows multiple selections.
|
|
62
72
|
*
|
|
63
73
|
* @default false
|
|
64
74
|
*/
|
|
65
75
|
isMulti?: boolean;
|
|
76
|
+
/**
|
|
77
|
+
* The label for the "Select All" option.
|
|
78
|
+
*
|
|
79
|
+
* Ignored if `isMulti` is false.
|
|
80
|
+
*
|
|
81
|
+
* If `isMulti` is `true`, defaults to "Select All". If a string, it will be used as the label. If false the select
|
|
82
|
+
* all option will not be rendered.
|
|
83
|
+
*
|
|
84
|
+
* @default false
|
|
85
|
+
*/
|
|
86
|
+
selectAll?: boolean | string;
|
|
66
87
|
/**
|
|
67
88
|
* The function to call when the selected values change.
|
|
68
89
|
*
|
|
69
|
-
* @
|
|
70
|
-
*
|
|
71
|
-
* @param {ChangeEvent} event
|
|
72
|
-
* @returns {void}
|
|
90
|
+
* @example
|
|
91
|
+
* (selectedValues, event) => setState({ selectedValues });
|
|
73
92
|
*/
|
|
74
|
-
onChange?: (selectedValues: string[], event?:
|
|
93
|
+
onChange?: (selectedValues: string[], event?: React.MouseEvent<HTMLButtonElement, MouseEvent>) => void;
|
|
75
94
|
};
|
|
76
95
|
/**
|
|
77
96
|
* A container housing a simple list of options presented to the user to select one option at a time.
|
|
78
97
|
*
|
|
79
98
|
* @name Menu
|
|
80
99
|
*/
|
|
81
|
-
declare function Menu
|
|
100
|
+
declare function Menu({ itemCount: itemCountProp, items: itemsProp, noResultsMessage, innerRef, onChange, activeIndex, selectedValues, disabled, id: idProp, renderListItem, isMulti, selectAll: selectAllProp, ...props }: ElementProps<MenuProps, 'div'>): import("react/jsx-runtime").JSX.Element;
|
|
82
101
|
declare namespace Menu {
|
|
83
102
|
var bspkName: string;
|
|
84
103
|
}
|
package/dist/Menu.js
CHANGED
|
@@ -1,12 +1,14 @@
|
|
|
1
1
|
import { createElement as _createElement } from "react";
|
|
2
|
-
import { jsx as _jsx,
|
|
2
|
+
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
3
3
|
import { styleAdd } from './utils/styleAdd';
|
|
4
|
-
styleAdd(`[data-bspk=menu]{/*! --item-count: is set via inline style */width:332px;border:1px solid var(--stroke-neutral-low);background-color:var(--surface-neutral-t1-base);box-shadow:var(--drop-shadow-float);border-radius:var(--radius-large);display:flex;flex-direction:column;--item-size: var(--spacing-sizing-12)}[data-bspk=menu][data-floating]{z-index:var(--z-index-dropdown)}[data-bspk=menu][data-item-count]{height:calc(var(--item-count)*var(--item-size));overflow-y:scroll}[data-bspk=menu][data-no-items]{padding:var(--spacing-sizing-08) var(--spacing-sizing-04);align-items:center;justify-content:center;gap:var(--spacing-sizing-03)}[data-bspk=menu] [data-list-item]{min-height:var(--item-size);height:var(--item-size)}`);;
|
|
4
|
+
styleAdd(`[data-bspk=menu]{/*! --item-count: is set via inline style */width:332px;border:1px solid var(--stroke-neutral-low);background-color:var(--surface-neutral-t1-base);box-shadow:var(--drop-shadow-float);border-radius:var(--radius-large);display:flex;flex-direction:column;--item-size: var(--spacing-sizing-12)}[data-bspk=menu][data-floating]{z-index:var(--z-index-dropdown)}[data-bspk=menu][data-item-count]{height:calc(var(--item-count)*var(--item-size));overflow-y:scroll}[data-bspk=menu][data-no-items]{padding:var(--spacing-sizing-08) var(--spacing-sizing-04);align-items:center;justify-content:center;gap:var(--spacing-sizing-03)}[data-bspk=menu] [data-bspk=list-item]{min-height:var(--item-size);height:var(--item-size)}[data-bspk=menu] [data-bspk=list-item][data-selected]{background-color:var(--surface-brand-primary-highlight)}`);;
|
|
5
5
|
import { useMemo } from 'react';
|
|
6
6
|
import { Checkbox } from './Checkbox';
|
|
7
7
|
import { ListItem } from './ListItem';
|
|
8
|
-
import { Txt } from './Txt';
|
|
9
8
|
import { useId } from './hooks/useId';
|
|
9
|
+
const DEFAULT = {
|
|
10
|
+
selectAll: 'Select All',
|
|
11
|
+
};
|
|
10
12
|
export const MIN_ITEM_COUNT = 3;
|
|
11
13
|
export const MAX_ITEM_COUNT = 10;
|
|
12
14
|
export function menuItemId(menuId, index) {
|
|
@@ -17,45 +19,65 @@ export function menuItemId(menuId, index) {
|
|
|
17
19
|
*
|
|
18
20
|
* @name Menu
|
|
19
21
|
*/
|
|
20
|
-
function Menu({ itemCount: itemCountProp = 5, items: itemsProp = [], noResultsMessage, innerRef, onChange, activeIndex, selectedValues = [], disabled, id: idProp, renderListItem, isMulti, ...props }) {
|
|
22
|
+
function Menu({ itemCount: itemCountProp = 5, items: itemsProp = [], noResultsMessage, innerRef, onChange, activeIndex, selectedValues = [], disabled, id: idProp, renderListItem, isMulti, selectAll: selectAllProp, ...props }) {
|
|
21
23
|
const menuId = useId(idProp);
|
|
22
|
-
const
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
}
|
|
58
|
-
|
|
24
|
+
const selectAll = useMemo(() => {
|
|
25
|
+
if (!isMulti)
|
|
26
|
+
return false;
|
|
27
|
+
if (selectAllProp && typeof selectAllProp === 'string')
|
|
28
|
+
return selectAllProp;
|
|
29
|
+
return selectAllProp === true ? DEFAULT.selectAll : false;
|
|
30
|
+
}, [isMulti, selectAllProp]);
|
|
31
|
+
const { items, itemCount } = useMemo(() => {
|
|
32
|
+
const itemsNext = Array.isArray(itemsProp) ? itemsProp : [];
|
|
33
|
+
return {
|
|
34
|
+
items: itemsNext,
|
|
35
|
+
// Ensure itemCount is within the range of items.length
|
|
36
|
+
itemCount: Math.min(itemsNext.length,
|
|
37
|
+
// pin itemCountProp to a range of 3 to 10
|
|
38
|
+
Math.max(MIN_ITEM_COUNT, Math.min(itemCountProp, MAX_ITEM_COUNT))),
|
|
39
|
+
};
|
|
40
|
+
}, [itemCountProp, itemsProp]);
|
|
41
|
+
const allSelected = useMemo(() => !!(items.length && items.every((item) => selectedValues.includes(item.value))), [items, selectedValues]);
|
|
42
|
+
return (_jsxs("div", { ...props, "aria-multiselectable": isMulti || undefined, "data-bspk": "menu", "data-disabled": disabled || undefined, "data-item-count": itemCount || undefined, "data-no-items": !items.length || undefined, id: menuId, ref: innerRef, role: "listbox", style: { ...props.style, '--item-count': itemCount }, children: [isMulti && selectAll && (_jsx(ListItem, { as: "button", "data-selected": allSelected || undefined, label: selectAll, onClick: (event) => {
|
|
43
|
+
onChange?.(allSelected ? [] : items.map((item) => item.value), event);
|
|
44
|
+
}, role: "option", tabIndex: -1, trailing: _jsx(Checkbox, { "aria-label": selectAll, checked: !!allSelected, name: "", onChange: (checked) => {
|
|
45
|
+
onChange?.(checked ? items.map((item) => item.value) : []);
|
|
46
|
+
}, value: "" }) }, "select-all")), items.length
|
|
47
|
+
? items.map((item, index) => {
|
|
48
|
+
const itemId = item.id || menuItemId(menuId, index);
|
|
49
|
+
const selected = Boolean(Array.isArray(selectedValues) && selectedValues.includes(item.value));
|
|
50
|
+
const renderProps = renderListItem?.({
|
|
51
|
+
activeIndex,
|
|
52
|
+
index,
|
|
53
|
+
item,
|
|
54
|
+
selectedValues,
|
|
55
|
+
isMulti,
|
|
56
|
+
menuId: menuId || '',
|
|
57
|
+
selected,
|
|
58
|
+
itemId,
|
|
59
|
+
});
|
|
60
|
+
return (_createElement(ListItem, { ...renderProps, active: activeIndex === index || undefined, "aria-disabled": item.disabled || undefined, "aria-posinset": index + 1, "aria-selected": selected || undefined, as: "button",
|
|
61
|
+
//data-selected={selected || undefined}
|
|
62
|
+
disabled: item.disabled || undefined, id: itemId, key: itemId, label: renderProps?.label?.toString() || item.label?.toString(), onClick: (event) => {
|
|
63
|
+
if (renderProps)
|
|
64
|
+
renderProps?.onClick?.(event);
|
|
65
|
+
if (onChange) {
|
|
66
|
+
if (!isMulti) {
|
|
67
|
+
onChange?.([item.value], event);
|
|
68
|
+
return;
|
|
69
|
+
}
|
|
70
|
+
onChange(selected
|
|
71
|
+
? selectedValues.filter((value) => value !== item.value)
|
|
72
|
+
: [...selectedValues, item.value], event);
|
|
73
|
+
}
|
|
74
|
+
}, role: "option", tabIndex: -1, trailing: isMulti ? (_jsx(Checkbox, { "aria-label": item.label, checked: selected, name: item.value, onChange: (checked) => {
|
|
75
|
+
onChange?.(checked
|
|
76
|
+
? selectedValues.filter((value) => value !== item.value)
|
|
77
|
+
: [...selectedValues, item.value]);
|
|
78
|
+
}, value: item.value })) : (renderProps?.trailing) }));
|
|
79
|
+
})
|
|
80
|
+
: noResultsMessage] }));
|
|
59
81
|
}
|
|
60
82
|
Menu.bspkName = 'Menu';
|
|
61
83
|
export { Menu };
|
package/dist/Menu.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Menu.js","sourceRoot":"","sources":["../src/Menu.tsx"],"names":[],"mappings":";;AAAA,OAAO,aAAa,CAAC;AACrB,OAAO,
|
|
1
|
+
{"version":3,"file":"Menu.js","sourceRoot":"","sources":["../src/Menu.tsx"],"names":[],"mappings":"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"}
|
package/dist/NumberInput.d.ts
CHANGED
|
@@ -3,7 +3,11 @@ import { CommonProps, InvalidPropsLibrary } from '.';
|
|
|
3
3
|
export type NumberInputProps = CommonProps<'aria-label' | 'disabled' | 'id' | 'name' | 'readOnly' | 'size'> & InvalidPropsLibrary & {
|
|
4
4
|
/** The value of the control. */
|
|
5
5
|
value?: number;
|
|
6
|
-
/**
|
|
6
|
+
/**
|
|
7
|
+
* Callback when the value changes.
|
|
8
|
+
*
|
|
9
|
+
* @required
|
|
10
|
+
*/
|
|
7
11
|
onChange: (value: number | undefined) => void;
|
|
8
12
|
/**
|
|
9
13
|
* The alignment of the input box. Centered between the plus and minus buttons or to the left of the buttons.
|
package/dist/NumberInput.js
CHANGED
|
@@ -32,8 +32,9 @@ function NumberInput({ value, onChange, align = DEFAULT.align, size = DEFAULT.si
|
|
|
32
32
|
const inputId = useId(inputIdProp);
|
|
33
33
|
const max = isNumber(maxProp);
|
|
34
34
|
const min = isNumber(minProp);
|
|
35
|
-
const fix = (
|
|
36
|
-
|
|
35
|
+
const fix = (nextValue) => {
|
|
36
|
+
const next = isNumber(nextValue);
|
|
37
|
+
if (typeof next !== 'number' || isNaN(next)) {
|
|
37
38
|
onChange(undefined);
|
|
38
39
|
return;
|
|
39
40
|
}
|
|
@@ -53,10 +54,11 @@ function NumberInput({ value, onChange, align = DEFAULT.align, size = DEFAULT.si
|
|
|
53
54
|
onChange: fix,
|
|
54
55
|
value,
|
|
55
56
|
};
|
|
56
|
-
return (_jsxs("div", { "aria-valuemax": max || undefined, "aria-valuemin": min || undefined, "data-bspk": "number-input", "data-centered": centered || undefined, "data-disabled": disabled || undefined, "data-invalid": invalid || undefined, "data-readonly": readOnly || undefined, "data-size": size, "data-stepper-input": true, children: [!!centered && _jsx(IncrementButton, { ...buttonProps, increment: -1 }), _jsx("input", { "aria-label": ariaLabel, disabled: disabled, id: inputId, name: name, onBlur: () => {
|
|
57
|
-
|
|
57
|
+
return (_jsxs("div", { "aria-valuemax": max || undefined, "aria-valuemin": min || undefined, "data-bspk": "number-input", "data-centered": centered || undefined, "data-disabled": disabled || undefined, "data-invalid": invalid || undefined, "data-readonly": readOnly || undefined, "data-size": size, "data-stepper-input": true, children: [!!centered && _jsx(IncrementButton, { ...buttonProps, increment: -1 }), _jsx("input", { "aria-label": ariaLabel, disabled: disabled, id: inputId, max: max, min: min, name: name, onBlur: (event) => {
|
|
58
|
+
// Fix the value on blur to ensure it is a valid number
|
|
59
|
+
fix(event.target.value);
|
|
58
60
|
}, onChange: (event) => {
|
|
59
|
-
onChange(event.target.value);
|
|
61
|
+
onChange(isNumber(event.target.value));
|
|
60
62
|
}, readOnly: readOnly, type: "number", value: value }), !centered && (_jsxs(_Fragment, { children: [_jsx("div", { "aria-hidden": true, "data-divider": true }), _jsx(IncrementButton, { ...buttonProps, increment: -1 })] })), _jsx(IncrementButton, { ...buttonProps, increment: 1 })] }));
|
|
61
63
|
}
|
|
62
64
|
// eslint-disable-next-line react/no-multi-comp
|
package/dist/NumberInput.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"NumberInput.js","sourceRoot":"","sources":["../src/NumberInput.tsx"],"names":[],"mappings":";AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,iBAAiB,CAAC;AACzC,OAAO,EAAE,SAAS,EAAE,MAAM,oBAAoB,CAAC;AAE/C,OAAO,qBAAqB,CAAC;AAC7B,OAAO,EAAE,KAAK,EAAE,MAAM,eAAe,CAAC;AACtC,OAAO,EAAE,YAAY,EAAE,MAAM,sBAAsB,CAAC;AAIpD,MAAM,OAAO,GAAG;IACZ,KAAK,EAAE,QAAQ;IACf,IAAI,EAAE,QAAQ;IACd,QAAQ,EAAE,KAAK;IACf,QAAQ,EAAE,KAAK;CACT,CAAC;AAEX,SAAS,QAAQ,CAAC,KAAc;IAC5B,IAAI,OAAO,KAAK,KAAK,QAAQ;QAAE,OAAO,KAAK,CAAC;IAC5C,IAAI,OAAO,KAAK,KAAK,QAAQ;QAAE,OAAO,SAAS,CAAC;IAChD,MAAM,GAAG,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC;IAC1B,OAAO,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,GAAG,CAAC;AACxC,CAAC;
|
|
1
|
+
{"version":3,"file":"NumberInput.js","sourceRoot":"","sources":["../src/NumberInput.tsx"],"names":[],"mappings":"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"}
|
package/dist/Portal.d.ts
CHANGED
package/dist/Portal.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Portal.js","sourceRoot":"","sources":["../src/Portal.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAa,SAAS,EAAE,QAAQ,EAAE,MAAM,OAAO,CAAC;AACvD,OAAO,EAAE,YAAY,EAAE,MAAM,WAAW,CAAC;
|
|
1
|
+
{"version":3,"file":"Portal.js","sourceRoot":"","sources":["../src/Portal.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAa,SAAS,EAAE,QAAQ,EAAE,MAAM,OAAO,CAAC;AACvD,OAAO,EAAE,YAAY,EAAE,MAAM,WAAW,CAAC;AAiBzC;;;;;;GAMG;AACH,SAAS,MAAM,CAAC,EAAE,QAAQ,EAAE,SAAS,EAAe;IAChD,MAAM,CAAC,eAAe,EAAE,kBAAkB,CAAC,GAAG,QAAQ,CAAqB,SAAS,IAAI,IAAI,CAAC,CAAC;IAE9F,SAAS,CAAC,GAAG,EAAE;QACX,IAAI,CAAC,eAAe,IAAI,OAAO,MAAM,KAAK,WAAW;YAAE,kBAAkB,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;IAC7F,CAAC,EAAE,CAAC,eAAe,CAAC,CAAC,CAAC;IAEtB,wCAAwC;IACxC,OAAO,eAAe,IAAI,YAAY,CAAC,QAAQ,EAAE,eAAe,CAAC,CAAC;AACtE,CAAC;AAED,MAAM,CAAC,QAAQ,GAAG,QAAQ,CAAC;AAE3B,OAAO,EAAE,MAAM,EAAE,CAAC;AAElB,sDAAsD"}
|
package/dist/ProgressBar.d.ts
CHANGED
package/dist/ProgressBar.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ProgressBar.js","sourceRoot":"","sources":["../src/ProgressBar.tsx"],"names":[],"mappings":";AAAA,OAAO,qBAAqB,CAAC;AAC7B,OAAO,EAAiB,KAAK,EAAE,MAAM,OAAO,CAAC;
|
|
1
|
+
{"version":3,"file":"ProgressBar.js","sourceRoot":"","sources":["../src/ProgressBar.tsx"],"names":[],"mappings":";AAAA,OAAO,qBAAqB,CAAC;AAC7B,OAAO,EAAiB,KAAK,EAAE,MAAM,OAAO,CAAC;AAgC7C;;;;;GAKG;AACH,SAAS,WAAW,CAAC,EAAE,IAAI,GAAG,OAAO,EAAE,UAAU,GAAG,CAAC,EAAE,KAAK,GAAG,QAAQ,EAAE,KAAK,EAAoB;IAC9F,MAAM,EAAE,GAAG,KAAK,EAAE,CAAC;IAEnB,OAAO,CACH,6BAAiB,KAAK,eAAY,cAAc,eAAY,IAAI,aAC5D,iCACe,UAAU,GAAG,GAAG,gBAChB,sCAAsC,mBAClC,GAAG,mBACH,CAAC,mBACD,UAAU,EACzB,EAAE,EAAE,EAAE,EACN,GAAG,EAAC,KAAK,EACT,KAAK,EAAE,UAAU,aAEhB,UAAU,SACJ,EACX,qDAA0B,KAAK,EAAE,EAAE,SAAS,EAAE,GAAG,UAAU,GAAG,EAAmB,GAAI,EACrF,gBAAO,OAAO,EAAE,EAAE,YAAG,KAAK,GAAS,IACjC,CACT,CAAC;AACN,CAAC;AAED,WAAW,CAAC,QAAQ,GAAG,aAAa,CAAC;AAErC,OAAO,EAAE,WAAW,EAAE,CAAC"}
|
|
@@ -29,7 +29,14 @@ export type ProgressionStepperProps = {
|
|
|
29
29
|
/**
|
|
30
30
|
* The steps to display in the progress bar.
|
|
31
31
|
*
|
|
32
|
-
* @
|
|
32
|
+
* @example
|
|
33
|
+
* [
|
|
34
|
+
* { name: '[Name of step to proceed forward 1]' },
|
|
35
|
+
* { name: '[Name of step to proceed forward 2]' },
|
|
36
|
+
* { name: '[Name of step to proceed forward 3]' },
|
|
37
|
+
* ];
|
|
38
|
+
*
|
|
39
|
+
* @type Array<ProgressionStepperItem>
|
|
33
40
|
* @required
|
|
34
41
|
*/
|
|
35
42
|
steps: ProgressionStepperItem[];
|
|
@@ -58,7 +65,7 @@ export type ProgressionStepperProps = {
|
|
|
58
65
|
*
|
|
59
66
|
* @name ProgressionStepper
|
|
60
67
|
*/
|
|
61
|
-
declare function ProgressionStepper({ steps, currentStep: currentStepProp, variant, ...containerProps }: ElementProps<ProgressionStepperProps, 'div'>): import("react/jsx-runtime").JSX.Element;
|
|
68
|
+
declare function ProgressionStepper({ steps, currentStep: currentStepProp, variant, ...containerProps }: ElementProps<ProgressionStepperProps, 'div'>): import("react/jsx-runtime").JSX.Element | null;
|
|
62
69
|
declare namespace ProgressionStepper {
|
|
63
70
|
var bspkName: string;
|
|
64
71
|
}
|
|
@@ -9,7 +9,7 @@ styleAdd(`[data-bspk=progression-stepper]{width:100%;--circle-width: var(--spaci
|
|
|
9
9
|
*/
|
|
10
10
|
function ProgressionStepper({ steps = [], currentStep: currentStepProp = 0, variant = 'horizontal', ...containerProps }) {
|
|
11
11
|
const currentStep = Math.max(0, Math.min(currentStepProp, steps.length + 1));
|
|
12
|
-
return (_jsxs("div", { ...containerProps, "data-bspk": "progression-stepper", "data-variant": variant, children: [variant === 'widget' && (_jsxs("label", { children: [_jsx("span", { "data-title": true, children: steps[Math.max(0, Math.min(currentStep - 1, steps.length - 1))].name }), _jsx("span", { "data-subtitle": true, children: currentStep >= steps.length ? ('Completed') : (_jsxs(_Fragment, { children: ["Step ", currentStep, " of ", steps.length] })) })] })), _jsx("ol", { children: steps.flatMap(({ name, subtext }, index) => {
|
|
12
|
+
return !steps?.length ? null : (_jsxs("div", { ...containerProps, "data-bspk": "progression-stepper", "data-variant": variant, children: [variant === 'widget' && (_jsxs("label", { children: [_jsx("span", { "data-title": true, children: steps[Math.max(0, Math.min(currentStep - 1, steps.length - 1))].name }), _jsx("span", { "data-subtitle": true, children: currentStep >= steps.length ? ('Completed') : (_jsxs(_Fragment, { children: ["Step ", currentStep, " of ", steps.length] })) })] })), _jsx("ol", { children: steps.flatMap(({ name, subtext }, index) => {
|
|
13
13
|
const stepNum = index + 1;
|
|
14
14
|
let status = 'incomplete';
|
|
15
15
|
if (stepNum < currentStep)
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ProgressionStepper.js","sourceRoot":"","sources":["../src/ProgressionStepper.tsx"],"names":[],"mappings":";AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,mBAAmB,CAAC;AAE7C,OAAO,4BAA4B,CAAC;
|
|
1
|
+
{"version":3,"file":"ProgressionStepper.js","sourceRoot":"","sources":["../src/ProgressionStepper.tsx"],"names":[],"mappings":";AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,mBAAmB,CAAC;AAE7C,OAAO,4BAA4B,CAAC;AA8DpC;;;;GAIG;AACH,SAAS,kBAAkB,CAAC,EACxB,KAAK,GAAG,EAAE,EACV,WAAW,EAAE,eAAe,GAAG,CAAC,EAChC,OAAO,GAAG,YAAY,EACtB,GAAG,cAAc,EAC0B;IAC3C,MAAM,WAAW,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,eAAe,EAAE,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC;IAC7E,OAAO,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAC3B,kBAAS,cAAc,eAAY,qBAAqB,kBAAe,OAAO,aACzE,OAAO,KAAK,QAAQ,IAAI,CACrB,4BACI,6CAAkB,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,WAAW,GAAG,CAAC,EAAE,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,GAAQ,EAC9F,gDACK,WAAW,IAAI,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,CAC3B,WAAW,CACd,CAAC,CAAC,CAAC,CACA,uCACU,WAAW,UAAM,KAAK,CAAC,MAAM,IACpC,CACN,GACE,IACH,CACX,EACD,uBACK,KAAK,CAAC,OAAO,CAAC,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,EAAE,KAAK,EAAE,EAAE;oBACxC,MAAM,OAAO,GAAG,KAAK,GAAG,CAAC,CAAC;oBAC1B,IAAI,MAAM,GAA0C,YAAY,CAAC;oBACjE,IAAI,OAAO,GAAG,WAAW;wBAAE,MAAM,GAAG,UAAU,CAAC;yBAC1C,IAAI,OAAO,KAAK,WAAW;wBAAE,MAAM,GAAG,SAAS,CAAC;oBAErD,OAAO,CACH,6BAAiB,MAAM,eAAa,OAAO,aACvC,0EACI,4BAAgB,QAAQ,GAAG,EAC3B,gDACI,yBAAO,OAAO,GAAQ,EACrB,MAAM,KAAK,UAAU,IAAI,KAAC,QAAQ,KAAG,IACnC,EACP,4BAAgB,OAAO,GAAG,IACvB,EACN,OAAO,KAAK,QAAQ,IAAI,CACrB,iDACI,4CAAiB,IAAI,GAAQ,EAC5B,OAAO,IAAI,+CAAoB,OAAO,GAAQ,IAC5C,CACV,KAd6C,QAAQ,KAAK,EAAE,CAe5D,CACR,CAAC;gBACN,CAAC,CAAC,GACD,IACH,CACT,CAAC;AACN,CAAC;AAED,kBAAkB,CAAC,QAAQ,GAAG,oBAAoB,CAAC;AAEnD,OAAO,EAAE,kBAAkB,EAAE,CAAC"}
|
|
@@ -3,6 +3,9 @@ export type ProgressionStepperBarProps = {
|
|
|
3
3
|
/**
|
|
4
4
|
* The number of steps in the progress bar.
|
|
5
5
|
*
|
|
6
|
+
* @example
|
|
7
|
+
* 5;
|
|
8
|
+
*
|
|
6
9
|
* @minimum 2
|
|
7
10
|
* @maximum 10
|
|
8
11
|
* @required
|
|
@@ -11,6 +14,9 @@ export type ProgressionStepperBarProps = {
|
|
|
11
14
|
/**
|
|
12
15
|
* The last step completed.
|
|
13
16
|
*
|
|
17
|
+
* @example
|
|
18
|
+
* 2;
|
|
19
|
+
*
|
|
14
20
|
* @default 0
|
|
15
21
|
* @minimum 0
|
|
16
22
|
*/
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ProgressionStepperBar.js","sourceRoot":"","sources":["../src/ProgressionStepperBar.tsx"],"names":[],"mappings":";AAAA,OAAO,gCAAgC,CAAC;
|
|
1
|
+
{"version":3,"file":"ProgressionStepperBar.js","sourceRoot":"","sources":["../src/ProgressionStepperBar.tsx"],"names":[],"mappings":";AAAA,OAAO,gCAAgC,CAAC;AAiCxC;;;;GAIG;AACH,SAAS,qBAAqB,CAAC,EAC3B,SAAS,EACT,aAAa,EAAE,iBAAiB,GAAG,CAAC,EACpC,IAAI,GAAG,OAAO,GACW;IACzB,MAAM,aAAa,GAAG,IAAI,CAAC,GAAG,CAAC,iBAAiB,EAAE,SAAS,CAAC,CAAC;IAE7D,OAAO,CACH,4BAAe,yBAAyB,eAAY,IAAI,EAAE,KAAK,EAAE,EAAE,SAAS,EAAE,SAAS,EAAmB,aACtG,4CACK,KAAK,CAAC,IAAI,CAAC,EAAE,MAAM,EAAE,SAAS,EAAE,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CACzC,+BAAoB,CAAC,GAAG,aAAa,IAAI,SAAS,eAAa,CAAC,IAAO,CAAC,CAAI,CAC/E,CAAC,GACA,EACN,4BACK,aAAa,UAAM,SAAS,yBACzB,IACN,CACT,CAAC;AACN,CAAC;AAED,qBAAqB,CAAC,QAAQ,GAAG,uBAAuB,CAAC;AAEzD,OAAO,EAAE,qBAAqB,EAAE,CAAC"}
|
package/dist/Radio.d.ts
CHANGED
|
@@ -1,6 +1,20 @@
|
|
|
1
1
|
import './radio.scss';
|
|
2
|
-
import {
|
|
3
|
-
|
|
2
|
+
import { ChangeEvent } from 'react';
|
|
3
|
+
import { ElementProps, InvalidPropsLibrary, CommonProps } from './';
|
|
4
|
+
export type RadioProps = CommonProps<'aria-label' | 'disabled' | 'name'> & InvalidPropsLibrary & Required<CommonProps<'value'>> & {
|
|
5
|
+
/**
|
|
6
|
+
* Marks the radio as checked.
|
|
7
|
+
*
|
|
8
|
+
* @default false
|
|
9
|
+
*/
|
|
10
|
+
checked?: boolean;
|
|
11
|
+
/**
|
|
12
|
+
* The function to call when the radio is checked.
|
|
13
|
+
*
|
|
14
|
+
* @required
|
|
15
|
+
*/
|
|
16
|
+
onChange: (checked: boolean, event: ChangeEvent<HTMLInputElement>) => void;
|
|
17
|
+
};
|
|
4
18
|
/**
|
|
5
19
|
* A round control that allows user to choose one option from a set. This is the base element and if used directly you
|
|
6
20
|
* must wrap it with a label. This will more often be used in the RadioOption or RadioGroup component.
|
package/dist/Radio.js
CHANGED
|
@@ -10,8 +10,8 @@ styleAdd(`[data-bspk=radio]{display:block;position:relative;width:var(--spacing-
|
|
|
10
10
|
* @name Radio
|
|
11
11
|
*/
|
|
12
12
|
function Radio(props) {
|
|
13
|
-
const { checked = false, invalid, disabled, onChange, ...otherProps } = props;
|
|
14
|
-
return (_jsxs("span", { "data-bspk": "radio", children: [_jsx("input", { ...otherProps, checked: !!checked, "data-invalid": invalid || undefined, disabled: disabled || undefined, onChange: (event) => onChange(!!event.target.checked, event), type: "radio" }), _jsx("span", { "aria-hidden": true })] }));
|
|
13
|
+
const { checked = false, invalid, disabled, onChange, errorMessage, ...otherProps } = props;
|
|
14
|
+
return (_jsxs("span", { "data-bspk": "radio", children: [_jsx("input", { ...otherProps, checked: !!checked, "data-errormessage": errorMessage || undefined, "data-invalid": invalid || undefined, disabled: disabled || undefined, onChange: (event) => onChange(!!event.target.checked, event), type: "radio" }), _jsx("span", { "aria-hidden": true })] }));
|
|
15
15
|
}
|
|
16
16
|
Radio.bspkName = 'Radio';
|
|
17
17
|
export { Radio };
|
package/dist/Radio.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Radio.js","sourceRoot":"","sources":["../src/Radio.tsx"],"names":[],"mappings":";AAAA,OAAO,cAAc,CAAC;
|
|
1
|
+
{"version":3,"file":"Radio.js","sourceRoot":"","sources":["../src/Radio.tsx"],"names":[],"mappings":";AAAA,OAAO,cAAc,CAAC;AAsBtB;;;;;;;GAOG;AACH,SAAS,KAAK,CAAC,KAAwC;IACnD,MAAM,EAAE,OAAO,GAAG,KAAK,EAAE,OAAO,EAAE,QAAQ,EAAE,QAAQ,EAAE,YAAY,EAAE,GAAG,UAAU,EAAE,GAAG,KAAK,CAAC;IAE5F,OAAO,CACH,6BAAgB,OAAO,aACnB,mBACQ,UAAU,EACd,OAAO,EAAE,CAAC,CAAC,OAAO,uBACC,YAAY,IAAI,SAAS,kBAC9B,OAAO,IAAI,SAAS,EAClC,QAAQ,EAAE,QAAQ,IAAI,SAAS,EAC/B,QAAQ,EAAE,CAAC,KAAK,EAAE,EAAE,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,CAAC,MAAM,CAAC,OAAO,EAAE,KAAK,CAAC,EAC5D,IAAI,EAAC,OAAO,GACd,EACF,qCAAoB,IACjB,CACV,CAAC;AACN,CAAC;AAED,KAAK,CAAC,QAAQ,GAAG,OAAO,CAAC;AAEzB,OAAO,EAAE,KAAK,EAAE,CAAC"}
|
package/dist/RadioGroup.d.ts
CHANGED
|
@@ -1,21 +1,44 @@
|
|
|
1
1
|
import { ToggleOptionProps } from './ToggleOption';
|
|
2
2
|
import { ElementProps, CommonProps } from './';
|
|
3
3
|
export type RadioGroupOption = Pick<ToggleOptionProps, 'description' | 'label'> & Required<CommonProps<'value'>>;
|
|
4
|
-
export type RadioGroupProps = CommonProps<'name'
|
|
4
|
+
export type RadioGroupProps = CommonProps<'name'> & {
|
|
5
|
+
/**
|
|
6
|
+
* The value of the control.
|
|
7
|
+
*
|
|
8
|
+
* @example
|
|
9
|
+
* 1;
|
|
10
|
+
*
|
|
11
|
+
* @required
|
|
12
|
+
*/
|
|
13
|
+
value: string;
|
|
5
14
|
/**
|
|
6
15
|
* The function to call when the radios are changed.
|
|
7
16
|
*
|
|
17
|
+
* @example
|
|
18
|
+
* (value) => setState({ value }),
|
|
19
|
+
*
|
|
8
20
|
* @required
|
|
9
21
|
*/
|
|
10
22
|
onChange: (value: string) => void;
|
|
11
23
|
/**
|
|
12
24
|
* The options for the radios.
|
|
13
25
|
*
|
|
14
|
-
* @
|
|
26
|
+
* @example
|
|
27
|
+
* [
|
|
28
|
+
* { value: '1', label: 'Option 1', description: 'Description here' },
|
|
29
|
+
* { value: '2', label: 'Option 2' },
|
|
30
|
+
* { value: '3', label: 'Option 3' },
|
|
31
|
+
* ];
|
|
32
|
+
*
|
|
33
|
+
* @type Array<RadioGroupOption>
|
|
15
34
|
* @required
|
|
16
35
|
*/
|
|
17
36
|
options: RadioGroupOption[];
|
|
18
|
-
/**
|
|
37
|
+
/**
|
|
38
|
+
* The size of the radio group labels.
|
|
39
|
+
*
|
|
40
|
+
* @default base
|
|
41
|
+
*/
|
|
19
42
|
size?: 'base' | 'large' | 'small';
|
|
20
43
|
};
|
|
21
44
|
/**
|
package/dist/RadioGroup.js
CHANGED
|
@@ -6,9 +6,9 @@ import { ToggleOption } from './ToggleOption';
|
|
|
6
6
|
*
|
|
7
7
|
* @name RadioGroup
|
|
8
8
|
*/
|
|
9
|
-
function RadioGroup({ onChange, options = [], name, value: groupValue, size, ...props }) {
|
|
10
|
-
return (_jsx("div", { ...props, "data-bspk": "radio-group", role: "radiogroup", style: { display: 'contents' }, children: options.map(({ label, description, value }) => {
|
|
11
|
-
return (_jsx(ToggleOption, { description: description, label: label, size: size, children: _jsx(Radio, { "aria-label": label, checked: groupValue === value, name: name, onChange: (checked) => checked && onChange(value), value: value }) }, value));
|
|
9
|
+
function RadioGroup({ onChange, options = [], name, value: groupValue, size = 'base', ...props }) {
|
|
10
|
+
return (_jsx("div", { ...props, "data-bspk": "radio-group", role: "radiogroup", style: { display: 'contents' }, children: options.map(({ label, description, value }, index) => {
|
|
11
|
+
return (_jsx(ToggleOption, { description: description, label: label, size: size, children: _jsx(Radio, { "aria-label": label, checked: groupValue === value, name: name, onChange: (checked) => checked && onChange(value), value: value }) }, `toggle-option-${value || index}`));
|
|
12
12
|
}) }));
|
|
13
13
|
}
|
|
14
14
|
RadioGroup.bspkName = 'RadioGroup';
|
package/dist/RadioGroup.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"RadioGroup.js","sourceRoot":"","sources":["../src/RadioGroup.tsx"],"names":[],"mappings":";AAAA,OAAO,EAAE,KAAK,EAAE,MAAM,SAAS,CAAC;AAChC,OAAO,EAAqB,YAAY,EAAE,MAAM,gBAAgB,CAAC;
|
|
1
|
+
{"version":3,"file":"RadioGroup.js","sourceRoot":"","sources":["../src/RadioGroup.tsx"],"names":[],"mappings":";AAAA,OAAO,EAAE,KAAK,EAAE,MAAM,SAAS,CAAC;AAChC,OAAO,EAAqB,YAAY,EAAE,MAAM,gBAAgB,CAAC;AA+CjE;;;;GAIG;AACH,SAAS,UAAU,CAAC,EAChB,QAAQ,EACR,OAAO,GAAG,EAAE,EACZ,IAAI,EACJ,KAAK,EAAE,UAAU,EACjB,IAAI,GAAG,MAAM,EACb,GAAG,KAAK,EAC2B;IACnC,OAAO,CACH,iBAAS,KAAK,eAAY,aAAa,EAAC,IAAI,EAAC,YAAY,EAAC,KAAK,EAAE,EAAE,OAAO,EAAE,UAAU,EAAE,YACnF,OAAO,CAAC,GAAG,CAAC,CAAC,EAAE,KAAK,EAAE,WAAW,EAAE,KAAK,EAAE,EAAE,KAAK,EAAE,EAAE;YAClD,OAAO,CACH,KAAC,YAAY,IACT,WAAW,EAAE,WAAW,EAExB,KAAK,EAAE,KAAK,EACZ,IAAI,EAAE,IAAI,YAEV,KAAC,KAAK,kBACU,KAAK,EACjB,OAAO,EAAE,UAAU,KAAK,KAAK,EAC7B,IAAI,EAAE,IAAI,EACV,QAAQ,EAAE,CAAC,OAAO,EAAE,EAAE,CAAC,OAAO,IAAI,QAAQ,CAAC,KAAK,CAAC,EACjD,KAAK,EAAE,KAAK,GACd,IAVG,iBAAiB,KAAK,IAAI,KAAK,EAAE,CAW3B,CAClB,CAAC;QACN,CAAC,CAAC,GACA,CACT,CAAC;AACN,CAAC;AAED,UAAU,CAAC,QAAQ,GAAG,YAAY,CAAC;AAEnC,OAAO,EAAE,UAAU,EAAE,CAAC"}
|
package/dist/RadioOption.d.ts
CHANGED
|
@@ -1,7 +1,15 @@
|
|
|
1
|
+
import { ChangeEvent } from 'react';
|
|
1
2
|
import { RadioProps } from './Radio';
|
|
2
3
|
import { ToggleOptionProps } from './ToggleOption';
|
|
3
4
|
import { InvalidPropsLibrary } from '.';
|
|
4
|
-
export type RadioOptionProps = InvalidPropsLibrary & Pick<RadioProps, 'checked' | 'disabled' | 'name' | '
|
|
5
|
+
export type RadioOptionProps = InvalidPropsLibrary & Pick<RadioProps, 'checked' | 'disabled' | 'name' | 'value'> & Pick<ToggleOptionProps, 'description' | 'label'> & {
|
|
6
|
+
/**
|
|
7
|
+
* The function to call when the radio is checked.
|
|
8
|
+
*
|
|
9
|
+
* @required
|
|
10
|
+
*/
|
|
11
|
+
onChange: (checked: boolean, event: ChangeEvent<HTMLInputElement>) => void;
|
|
12
|
+
};
|
|
5
13
|
/**
|
|
6
14
|
* A control that allows users to choose one or more items from a list or turn an feature on or off.
|
|
7
15
|
*
|
package/dist/RadioOption.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"RadioOption.js","sourceRoot":"","sources":["../src/RadioOption.tsx"],"names":[],"mappings":";
|
|
1
|
+
{"version":3,"file":"RadioOption.js","sourceRoot":"","sources":["../src/RadioOption.tsx"],"names":[],"mappings":";AAEA,OAAO,EAAc,KAAK,EAAE,MAAM,SAAS,CAAC;AAC5C,OAAO,EAAqB,YAAY,EAAE,MAAM,gBAAgB,CAAC;AAejE;;;;GAIG;AACH,SAAS,WAAW,CAAC,EAAE,KAAK,EAAE,WAAW,EAAE,GAAG,aAAa,EAAoB;IAC3E,OAAO,CACH,KAAC,YAAY,iBAAW,cAAc,EAAC,WAAW,EAAE,WAAW,EAAE,KAAK,EAAE,KAAK,YACzE,KAAC,KAAK,OAAK,aAAa,gBAAc,KAAK,GAAI,GACpC,CAClB,CAAC;AACN,CAAC;AAED,WAAW,CAAC,QAAQ,GAAG,aAAa,CAAC;AAErC,OAAO,EAAE,WAAW,EAAE,CAAC"}
|