@primer/components 0.0.0-20211030161952 → 0.0.0-20211030173748
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 +5 -1
- package/dist/browser.esm.js +605 -591
- package/dist/browser.esm.js.map +1 -1
- package/dist/browser.umd.js +212 -198
- package/dist/browser.umd.js.map +1 -1
- package/lib/Autocomplete/AutocompleteMenu.js +6 -13
- package/lib/Checkbox.d.ts +1 -1
- package/lib/CheckboxInputField.d.ts +11 -0
- package/lib/CheckboxInputField.js +73 -0
- package/lib/ChoiceFieldset/ChoiceField.d.ts +22 -0
- package/lib/ChoiceFieldset/ChoiceField.js +58 -0
- package/lib/ChoiceFieldset/ChoiceFieldCaption.d.ts +3 -0
- package/lib/ChoiceFieldset/ChoiceFieldCaption.js +35 -0
- package/lib/ChoiceFieldset/ChoiceFieldInput.d.ts +13 -0
- package/lib/ChoiceFieldset/ChoiceFieldInput.js +43 -0
- package/lib/ChoiceFieldset/ChoiceFieldLabel.d.ts +3 -0
- package/lib/ChoiceFieldset/ChoiceFieldLabel.js +35 -0
- package/lib/ChoiceFieldset/ChoiceFieldset.d.ts +57 -0
- package/lib/ChoiceFieldset/ChoiceFieldset.js +95 -0
- package/lib/ChoiceFieldset/ChoiceFieldsetCaption.d.ts +3 -0
- package/lib/ChoiceFieldset/ChoiceFieldsetCaption.js +28 -0
- package/lib/ChoiceFieldset/ChoiceFieldsetLegend.d.ts +6 -0
- package/lib/ChoiceFieldset/ChoiceFieldsetLegend.js +41 -0
- package/lib/ChoiceFieldset/ChoiceFieldsetList.d.ts +6 -0
- package/lib/ChoiceFieldset/ChoiceFieldsetList.js +85 -0
- package/lib/ChoiceFieldset/ChoiceFieldsetListContext.d.ts +17 -0
- package/lib/ChoiceFieldset/ChoiceFieldsetListContext.js +15 -0
- package/lib/ChoiceFieldset/ChoiceFieldsetValidation.d.ts +6 -0
- package/lib/ChoiceFieldset/ChoiceFieldsetValidation.js +17 -0
- package/lib/ChoiceFieldset/index.d.ts +3 -0
- package/lib/ChoiceFieldset/index.js +23 -0
- package/lib/RadioInputField.d.ts +9 -0
- package/lib/RadioInputField.js +82 -0
- package/lib/TextInputField.d.ts +581 -0
- package/lib/TextInputField.js +66 -0
- package/lib/_InputCaption.d.ts +13 -0
- package/lib/_InputCaption.js +27 -0
- package/lib/_InputField/InputField.d.ts +39 -0
- package/lib/_InputField/InputField.js +90 -0
- package/lib/_InputField/InputFieldCaption.d.ts +3 -0
- package/lib/_InputField/InputFieldCaption.js +30 -0
- package/lib/_InputField/InputFieldLabel.d.ts +9 -0
- package/lib/_InputField/InputFieldLabel.js +34 -0
- package/lib/_InputField/InputFieldValidation.d.ts +6 -0
- package/lib/_InputField/InputFieldValidation.js +17 -0
- package/lib/_InputField/ToggleInputField.d.ts +13 -0
- package/lib/_InputField/ToggleInputField.js +71 -0
- package/lib/_InputField/ToggleInputLeadingVisual.d.ts +3 -0
- package/lib/_InputField/ToggleInputLeadingVisual.js +22 -0
- package/lib/_InputField/ValidationAnimationContainer.d.ts +6 -0
- package/lib/_InputField/ValidationAnimationContainer.js +48 -0
- package/lib/_InputField/index.d.ts +1 -0
- package/lib/_InputField/index.js +15 -0
- package/lib/_InputField/slots.d.ts +13 -0
- package/lib/_InputField/slots.js +17 -0
- package/lib/_InputLabel.d.ts +8 -0
- package/lib/_InputLabel.js +44 -0
- package/lib/_InputValidation.d.ts +8 -0
- package/lib/_InputValidation.js +56 -0
- package/lib/_VisuallyHidden.d.ts +6 -0
- package/lib/_VisuallyHidden.js +39 -0
- package/lib/index.d.ts +4 -0
- package/lib/index.js +38 -0
- package/lib/utils/types/FormValidationStatus.d.ts +1 -0
- package/lib/utils/types/FormValidationStatus.js +1 -0
- package/lib-esm/Autocomplete/AutocompleteMenu.js +3 -13
- package/lib-esm/Checkbox.d.ts +1 -1
- package/lib-esm/CheckboxInputField.d.ts +11 -0
- package/lib-esm/CheckboxInputField.js +56 -0
- package/lib-esm/ChoiceFieldset/ChoiceField.d.ts +22 -0
- package/lib-esm/ChoiceFieldset/ChoiceField.js +36 -0
- package/lib-esm/ChoiceFieldset/ChoiceFieldCaption.d.ts +3 -0
- package/lib-esm/ChoiceFieldset/ChoiceFieldCaption.js +20 -0
- package/lib-esm/ChoiceFieldset/ChoiceFieldInput.d.ts +13 -0
- package/lib-esm/ChoiceFieldset/ChoiceFieldInput.js +28 -0
- package/lib-esm/ChoiceFieldset/ChoiceFieldLabel.d.ts +3 -0
- package/lib-esm/ChoiceFieldset/ChoiceFieldLabel.js +20 -0
- package/lib-esm/ChoiceFieldset/ChoiceFieldset.d.ts +57 -0
- package/lib-esm/ChoiceFieldset/ChoiceFieldset.js +72 -0
- package/lib-esm/ChoiceFieldset/ChoiceFieldsetCaption.d.ts +3 -0
- package/lib-esm/ChoiceFieldset/ChoiceFieldsetCaption.js +16 -0
- package/lib-esm/ChoiceFieldset/ChoiceFieldsetLegend.d.ts +6 -0
- package/lib-esm/ChoiceFieldset/ChoiceFieldsetLegend.js +28 -0
- package/lib-esm/ChoiceFieldset/ChoiceFieldsetList.d.ts +6 -0
- package/lib-esm/ChoiceFieldset/ChoiceFieldsetList.js +68 -0
- package/lib-esm/ChoiceFieldset/ChoiceFieldsetListContext.d.ts +17 -0
- package/lib-esm/ChoiceFieldset/ChoiceFieldsetListContext.js +5 -0
- package/lib-esm/ChoiceFieldset/ChoiceFieldsetValidation.d.ts +6 -0
- package/lib-esm/ChoiceFieldset/ChoiceFieldsetValidation.js +7 -0
- package/lib-esm/ChoiceFieldset/index.d.ts +3 -0
- package/lib-esm/ChoiceFieldset/index.js +2 -0
- package/lib-esm/RadioInputField.d.ts +9 -0
- package/lib-esm/RadioInputField.js +65 -0
- package/lib-esm/TextInputField.d.ts +581 -0
- package/lib-esm/TextInputField.js +50 -0
- package/lib-esm/_InputCaption.d.ts +13 -0
- package/lib-esm/_InputCaption.js +16 -0
- package/lib-esm/_InputField/InputField.d.ts +39 -0
- package/lib-esm/_InputField/InputField.js +70 -0
- package/lib-esm/_InputField/InputFieldCaption.d.ts +3 -0
- package/lib-esm/_InputField/InputFieldCaption.js +18 -0
- package/lib-esm/_InputField/InputFieldLabel.d.ts +9 -0
- package/lib-esm/_InputField/InputFieldLabel.js +22 -0
- package/lib-esm/_InputField/InputFieldValidation.d.ts +6 -0
- package/lib-esm/_InputField/InputFieldValidation.js +7 -0
- package/lib-esm/_InputField/ToggleInputField.d.ts +13 -0
- package/lib-esm/_InputField/ToggleInputField.js +54 -0
- package/lib-esm/_InputField/ToggleInputLeadingVisual.d.ts +3 -0
- package/lib-esm/_InputField/ToggleInputLeadingVisual.js +11 -0
- package/lib-esm/_InputField/ValidationAnimationContainer.d.ts +6 -0
- package/lib-esm/_InputField/ValidationAnimationContainer.js +33 -0
- package/lib-esm/_InputField/index.d.ts +1 -0
- package/lib-esm/_InputField/index.js +1 -0
- package/lib-esm/_InputField/slots.d.ts +13 -0
- package/lib-esm/_InputField/slots.js +5 -0
- package/lib-esm/_InputLabel.d.ts +8 -0
- package/lib-esm/_InputLabel.js +32 -0
- package/lib-esm/_InputValidation.d.ts +8 -0
- package/lib-esm/_InputValidation.js +43 -0
- package/lib-esm/_VisuallyHidden.d.ts +6 -0
- package/lib-esm/_VisuallyHidden.js +26 -0
- package/lib-esm/index.d.ts +4 -0
- package/lib-esm/index.js +4 -0
- package/lib-esm/utils/types/FormValidationStatus.d.ts +1 -0
- package/lib-esm/utils/types/FormValidationStatus.js +1 -0
- package/package.json +2 -2
@@ -0,0 +1,56 @@
|
|
1
|
+
"use strict";
|
2
|
+
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
4
|
+
value: true
|
5
|
+
});
|
6
|
+
exports.default = void 0;
|
7
|
+
|
8
|
+
var _octiconsReact = require("@primer/octicons-react");
|
9
|
+
|
10
|
+
var _react = _interopRequireDefault(require("react"));
|
11
|
+
|
12
|
+
var _ = require(".");
|
13
|
+
|
14
|
+
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
|
15
|
+
|
16
|
+
const validationIconMap = {
|
17
|
+
success: _octiconsReact.CheckCircleFillIcon,
|
18
|
+
error: _octiconsReact.AlertFillIcon
|
19
|
+
};
|
20
|
+
const validationColorMap = {
|
21
|
+
success: 'success.fg',
|
22
|
+
error: 'danger.fg'
|
23
|
+
};
|
24
|
+
|
25
|
+
const InputValidation = ({
|
26
|
+
children,
|
27
|
+
id,
|
28
|
+
validationStatus
|
29
|
+
}) => {
|
30
|
+
const IconComponent = validationStatus ? validationIconMap[validationStatus] : undefined;
|
31
|
+
const fgColor = validationStatus ? validationColorMap[validationStatus] : undefined;
|
32
|
+
return /*#__PURE__*/_react.default.createElement(_.Text, {
|
33
|
+
display: "flex",
|
34
|
+
color: fgColor,
|
35
|
+
fontSize: 0,
|
36
|
+
sx: {
|
37
|
+
alignItems: 'baseline',
|
38
|
+
a: {
|
39
|
+
color: 'currentColor',
|
40
|
+
textDecoration: 'underline'
|
41
|
+
}
|
42
|
+
}
|
43
|
+
}, IconComponent && /*#__PURE__*/_react.default.createElement(_.Box, {
|
44
|
+
as: "span",
|
45
|
+
mr: 1
|
46
|
+
}, /*#__PURE__*/_react.default.createElement(IconComponent, {
|
47
|
+
size: 12,
|
48
|
+
fill: "currentColor"
|
49
|
+
})), /*#__PURE__*/_react.default.createElement("span", {
|
50
|
+
id: id
|
51
|
+
}, children));
|
52
|
+
};
|
53
|
+
|
54
|
+
InputValidation.displayName = "InputValidation";
|
55
|
+
var _default = InputValidation;
|
56
|
+
exports.default = _default;
|
@@ -0,0 +1,39 @@
|
|
1
|
+
"use strict";
|
2
|
+
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
4
|
+
value: true
|
5
|
+
});
|
6
|
+
exports.default = void 0;
|
7
|
+
|
8
|
+
var _styledComponents = _interopRequireDefault(require("styled-components"));
|
9
|
+
|
10
|
+
var _sx = _interopRequireDefault(require("./sx"));
|
11
|
+
|
12
|
+
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
|
13
|
+
|
14
|
+
const VisuallyHidden = _styledComponents.default.span.withConfig({
|
15
|
+
displayName: "_VisuallyHidden__VisuallyHidden",
|
16
|
+
componentId: "sc-1k15c4h-0"
|
17
|
+
})(["", ""], props => {
|
18
|
+
if (props.isVisible) {
|
19
|
+
return _sx.default;
|
20
|
+
}
|
21
|
+
|
22
|
+
return `
|
23
|
+
position: absolute;
|
24
|
+
width: 1px;
|
25
|
+
height: 1px;
|
26
|
+
padding: 0;
|
27
|
+
margin: -1px;
|
28
|
+
overflow: hidden;
|
29
|
+
clip: rect(0, 0, 0, 0);
|
30
|
+
white-space: nowrap;
|
31
|
+
border-width: 0;
|
32
|
+
`;
|
33
|
+
});
|
34
|
+
|
35
|
+
VisuallyHidden.defaultProps = {
|
36
|
+
isVisible: true
|
37
|
+
};
|
38
|
+
var _default = VisuallyHidden;
|
39
|
+
exports.default = _default;
|
package/lib/index.d.ts
CHANGED
@@ -46,6 +46,8 @@ export { default as CircleBadge } from './CircleBadge';
|
|
46
46
|
export type { CircleBadgeProps, CircleBadgeIconProps } from './CircleBadge';
|
47
47
|
export { default as CircleOcticon } from './CircleOcticon';
|
48
48
|
export type { CircleOcticonProps } from './CircleOcticon';
|
49
|
+
export { default as CheckboxInputField } from './CheckboxInputField';
|
50
|
+
export { default as ChoiceFieldset, ChoiceField } from './ChoiceFieldset';
|
49
51
|
export { default as CounterLabel } from './CounterLabel';
|
50
52
|
export type { CounterLabelProps } from './CounterLabel';
|
51
53
|
export { default as Details } from './Details';
|
@@ -86,6 +88,7 @@ export { default as Popover } from './Popover';
|
|
86
88
|
export type { PopoverProps, PopoverContentProps } from './Popover';
|
87
89
|
export { default as ProgressBar } from './ProgressBar';
|
88
90
|
export type { ProgressBarProps } from './ProgressBar';
|
91
|
+
export { default as RadioInputField } from './RadioInputField';
|
89
92
|
export { default as SelectMenu } from './SelectMenu';
|
90
93
|
export type { SelectMenuProps, SelectMenuDividerProps, SelectMenuFilterProps, SelectMenuFooterProps, SelectMenuItemProps, SelectMenuListProps, SelectMenuModalProps, SelectMenuTabsProps, SelectMenuHeaderProps, SelectMenuTabProps, SelectMenuTabPanelProps, SelectMenuLoadingAnimationProps } from './SelectMenu';
|
91
94
|
export { default as SideNav } from './SideNav';
|
@@ -102,6 +105,7 @@ export { default as TabNav } from './TabNav';
|
|
102
105
|
export type { TabNavProps, TabNavLinkProps } from './TabNav';
|
103
106
|
export { default as TextInput } from './TextInput';
|
104
107
|
export type { TextInputProps } from './TextInput';
|
108
|
+
export { default as TextInputField } from './TextInputField';
|
105
109
|
export { default as TextInputWithTokens } from './TextInputWithTokens';
|
106
110
|
export type { TextInputWithTokensProps } from './TextInputWithTokens';
|
107
111
|
export { default as Text } from './Text';
|
package/lib/index.js
CHANGED
@@ -267,6 +267,24 @@ Object.defineProperty(exports, "CircleOcticon", {
|
|
267
267
|
return _CircleOcticon.default;
|
268
268
|
}
|
269
269
|
});
|
270
|
+
Object.defineProperty(exports, "CheckboxInputField", {
|
271
|
+
enumerable: true,
|
272
|
+
get: function () {
|
273
|
+
return _CheckboxInputField.default;
|
274
|
+
}
|
275
|
+
});
|
276
|
+
Object.defineProperty(exports, "ChoiceFieldset", {
|
277
|
+
enumerable: true,
|
278
|
+
get: function () {
|
279
|
+
return _ChoiceFieldset.default;
|
280
|
+
}
|
281
|
+
});
|
282
|
+
Object.defineProperty(exports, "ChoiceField", {
|
283
|
+
enumerable: true,
|
284
|
+
get: function () {
|
285
|
+
return _ChoiceFieldset.ChoiceField;
|
286
|
+
}
|
287
|
+
});
|
270
288
|
Object.defineProperty(exports, "CounterLabel", {
|
271
289
|
enumerable: true,
|
272
290
|
get: function () {
|
@@ -393,6 +411,12 @@ Object.defineProperty(exports, "ProgressBar", {
|
|
393
411
|
return _ProgressBar.default;
|
394
412
|
}
|
395
413
|
});
|
414
|
+
Object.defineProperty(exports, "RadioInputField", {
|
415
|
+
enumerable: true,
|
416
|
+
get: function () {
|
417
|
+
return _RadioInputField.default;
|
418
|
+
}
|
419
|
+
});
|
396
420
|
Object.defineProperty(exports, "SelectMenu", {
|
397
421
|
enumerable: true,
|
398
422
|
get: function () {
|
@@ -441,6 +465,12 @@ Object.defineProperty(exports, "TextInput", {
|
|
441
465
|
return _TextInput.default;
|
442
466
|
}
|
443
467
|
});
|
468
|
+
Object.defineProperty(exports, "TextInputField", {
|
469
|
+
enumerable: true,
|
470
|
+
get: function () {
|
471
|
+
return _TextInputField.default;
|
472
|
+
}
|
473
|
+
});
|
444
474
|
Object.defineProperty(exports, "TextInputWithTokens", {
|
445
475
|
enumerable: true,
|
446
476
|
get: function () {
|
@@ -572,6 +602,10 @@ var _CircleBadge = _interopRequireDefault(require("./CircleBadge"));
|
|
572
602
|
|
573
603
|
var _CircleOcticon = _interopRequireDefault(require("./CircleOcticon"));
|
574
604
|
|
605
|
+
var _CheckboxInputField = _interopRequireDefault(require("./CheckboxInputField"));
|
606
|
+
|
607
|
+
var _ChoiceFieldset = _interopRequireWildcard(require("./ChoiceFieldset"));
|
608
|
+
|
575
609
|
var _CounterLabel = _interopRequireDefault(require("./CounterLabel"));
|
576
610
|
|
577
611
|
var _Details = _interopRequireDefault(require("./Details"));
|
@@ -612,6 +646,8 @@ var _Popover = _interopRequireDefault(require("./Popover"));
|
|
612
646
|
|
613
647
|
var _ProgressBar = _interopRequireDefault(require("./ProgressBar"));
|
614
648
|
|
649
|
+
var _RadioInputField = _interopRequireDefault(require("./RadioInputField"));
|
650
|
+
|
615
651
|
var _SelectMenu = _interopRequireDefault(require("./SelectMenu"));
|
616
652
|
|
617
653
|
var _SideNav = _interopRequireDefault(require("./SideNav"));
|
@@ -628,6 +664,8 @@ var _TabNav = _interopRequireDefault(require("./TabNav"));
|
|
628
664
|
|
629
665
|
var _TextInput = _interopRequireDefault(require("./TextInput"));
|
630
666
|
|
667
|
+
var _TextInputField = _interopRequireDefault(require("./TextInputField"));
|
668
|
+
|
631
669
|
var _TextInputWithTokens = _interopRequireDefault(require("./TextInputWithTokens"));
|
632
670
|
|
633
671
|
var _Text = _interopRequireDefault(require("./Text"));
|
@@ -0,0 +1 @@
|
|
1
|
+
export declare type FormValidationStatus = 'error' | 'success';
|
@@ -0,0 +1 @@
|
|
1
|
+
"use strict";
|
@@ -6,6 +6,7 @@ import { AutocompleteContext } from './AutocompleteContext';
|
|
6
6
|
import { PlusIcon } from '@primer/octicons-react';
|
7
7
|
import { uniqueId } from '../utils/uniqueId';
|
8
8
|
import { scrollIntoViewingArea } from '../behaviors/scrollIntoViewingArea';
|
9
|
+
import VisuallyHidden from '../_VisuallyHidden';
|
9
10
|
|
10
11
|
const getDefaultSortFn = isItemSelectedFn => (itemIdA, itemIdB) => isItemSelectedFn(itemIdA) === isItemSelectedFn(itemIdB) ? 0 : isItemSelectedFn(itemIdA) ? -1 : 1;
|
11
12
|
|
@@ -164,19 +165,8 @@ function AutocompleteMenu(props) {
|
|
164
165
|
setSelectedItemLength(selectedItemIds.length);
|
165
166
|
}
|
166
167
|
}, [selectedItemIds, setSelectedItemLength]);
|
167
|
-
return /*#__PURE__*/React.createElement(
|
168
|
-
|
169
|
-
// visually hides this label for sighted users
|
170
|
-
position: 'absolute',
|
171
|
-
width: '1px',
|
172
|
-
height: '1px',
|
173
|
-
padding: '0',
|
174
|
-
margin: '-1px',
|
175
|
-
overflow: 'hidden',
|
176
|
-
clip: 'rect(0, 0, 0, 0)',
|
177
|
-
whiteSpace: 'nowrap',
|
178
|
-
borderWidth: '0'
|
179
|
-
} : {}
|
168
|
+
return /*#__PURE__*/React.createElement(VisuallyHidden, {
|
169
|
+
isVisible: showMenu
|
180
170
|
}, loading ? /*#__PURE__*/React.createElement(Box, {
|
181
171
|
p: 3,
|
182
172
|
display: "flex",
|
package/lib-esm/Checkbox.d.ts
CHANGED
@@ -25,5 +25,5 @@ export declare type CheckboxProps = {
|
|
25
25
|
/**
|
26
26
|
* An accessible, native checkbox component
|
27
27
|
*/
|
28
|
-
declare const Checkbox: React.ForwardRefExoticComponent<Pick<CheckboxProps, "sx" | keyof React.InputHTMLAttributes<HTMLInputElement> | "
|
28
|
+
declare const Checkbox: React.ForwardRefExoticComponent<Pick<CheckboxProps, "sx" | keyof React.InputHTMLAttributes<HTMLInputElement> | "validationStatus" | "indeterminate"> & React.RefAttributes<HTMLInputElement>>;
|
29
29
|
export default Checkbox;
|
@@ -0,0 +1,11 @@
|
|
1
|
+
import React from 'react';
|
2
|
+
import { ToggleInputFieldProps } from './_InputField/ToggleInputField';
|
3
|
+
declare const _default: React.FC<ToggleInputFieldProps> & {
|
4
|
+
Input: React.FC<React.HTMLProps<HTMLInputElement> & {
|
5
|
+
ref?: React.Ref<HTMLInputElement> | undefined;
|
6
|
+
}>;
|
7
|
+
Caption: React.FC<{}>;
|
8
|
+
Label: React.FC<import("./_InputField/InputFieldLabel").Props>;
|
9
|
+
LeadingVisual: React.FC<{}>;
|
10
|
+
};
|
11
|
+
export default _default;
|
@@ -0,0 +1,56 @@
|
|
1
|
+
function _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }
|
2
|
+
|
3
|
+
import React from 'react';
|
4
|
+
import { Checkbox } from '.';
|
5
|
+
import InputField from './_InputField/InputField';
|
6
|
+
import { Slot } from './_InputField/slots';
|
7
|
+
import ToggleInputField from './_InputField/ToggleInputField';
|
8
|
+
import ToggleInputLeadingVisual from './_InputField/ToggleInputLeadingVisual';
|
9
|
+
|
10
|
+
const Input = ({
|
11
|
+
id: idProp,
|
12
|
+
required: requiredProp,
|
13
|
+
disabled: disabledProp,
|
14
|
+
...rest
|
15
|
+
}) => {
|
16
|
+
if (idProp) {
|
17
|
+
// eslint-disable-next-line no-console
|
18
|
+
console.warn("instead of passing the 'id' prop directly to <TextInputField.Input>, it should be passed to the parent component, <TextInputField>");
|
19
|
+
}
|
20
|
+
|
21
|
+
if (disabledProp) {
|
22
|
+
// eslint-disable-next-line no-console
|
23
|
+
console.warn("instead of passing the 'disabled' prop directly to <TextInputField.Input>, it should be passed to the parent component, <TextInputField>");
|
24
|
+
}
|
25
|
+
|
26
|
+
if (requiredProp) {
|
27
|
+
// eslint-disable-next-line no-console
|
28
|
+
console.warn("instead of passing the 'required' prop directly to <TextInputField.Input>, it should be passed to the parent component, <TextInputField>");
|
29
|
+
}
|
30
|
+
|
31
|
+
return /*#__PURE__*/React.createElement(Slot, {
|
32
|
+
name: "Input"
|
33
|
+
}, ({
|
34
|
+
disabled,
|
35
|
+
id,
|
36
|
+
required,
|
37
|
+
captionId
|
38
|
+
}) => /*#__PURE__*/React.createElement(Checkbox, _extends({
|
39
|
+
"aria-describedby": captionId,
|
40
|
+
id: id,
|
41
|
+
required: required,
|
42
|
+
disabled: disabled
|
43
|
+
}, rest)));
|
44
|
+
};
|
45
|
+
|
46
|
+
Input.displayName = "Input";
|
47
|
+
|
48
|
+
const CheckboxInputField = props => /*#__PURE__*/React.createElement(ToggleInputField, props);
|
49
|
+
|
50
|
+
CheckboxInputField.displayName = "CheckboxInputField";
|
51
|
+
export default Object.assign(CheckboxInputField, {
|
52
|
+
Input,
|
53
|
+
Caption: InputField.Caption,
|
54
|
+
Label: InputField.Label,
|
55
|
+
LeadingVisual: ToggleInputLeadingVisual
|
56
|
+
});
|
@@ -0,0 +1,22 @@
|
|
1
|
+
import React from 'react';
|
2
|
+
import { ComponentProps } from '../utils/types';
|
3
|
+
export interface ChoiceFieldProps {
|
4
|
+
/**
|
5
|
+
* Whether the field is ready for user input
|
6
|
+
*/
|
7
|
+
disabled?: boolean;
|
8
|
+
/**
|
9
|
+
* The unique identifier for this field. Used to associate the label, validation text, and caption text
|
10
|
+
*/
|
11
|
+
id?: string;
|
12
|
+
}
|
13
|
+
declare const ChoiceField: React.FC<ChoiceFieldProps>;
|
14
|
+
export declare type ChoiceFieldComponentProps = ComponentProps<typeof ChoiceField>;
|
15
|
+
export type { ChoiceFieldInputProps } from './ChoiceFieldInput';
|
16
|
+
declare const _default: React.FC<ChoiceFieldProps> & {
|
17
|
+
Caption: React.FC<{}>;
|
18
|
+
Input: React.FC<import("./ChoiceFieldInput").ChoiceFieldInputProps>;
|
19
|
+
Label: React.FC<{}>;
|
20
|
+
LeadingVisual: React.FC<{}>;
|
21
|
+
};
|
22
|
+
export default _default;
|
@@ -0,0 +1,36 @@
|
|
1
|
+
import React, { useContext } from 'react';
|
2
|
+
import { uniqueId } from '../utils/uniqueId';
|
3
|
+
import ToggleInputLeadingVisual from '../_InputField/ToggleInputLeadingVisual';
|
4
|
+
import ChoiceFieldCaption from './ChoiceFieldCaption';
|
5
|
+
import ChoiceFieldInput from './ChoiceFieldInput';
|
6
|
+
import ChoiceFieldLabel from './ChoiceFieldLabel';
|
7
|
+
import ChoiceFieldsetListContext from './ChoiceFieldsetListContext';
|
8
|
+
|
9
|
+
const ChoiceField = ({
|
10
|
+
children,
|
11
|
+
id,
|
12
|
+
disabled
|
13
|
+
}) => {
|
14
|
+
const choiceFieldsetListContext = useContext(ChoiceFieldsetListContext);
|
15
|
+
|
16
|
+
if (choiceFieldsetListContext === null) {
|
17
|
+
throw new Error('ChoiceFieldsetListContext returned null');
|
18
|
+
}
|
19
|
+
|
20
|
+
const {
|
21
|
+
fieldComponent: FieldComponent
|
22
|
+
} = choiceFieldsetListContext;
|
23
|
+
const fieldId = id || uniqueId();
|
24
|
+
return /*#__PURE__*/React.createElement(FieldComponent, {
|
25
|
+
id: fieldId,
|
26
|
+
disabled: disabled
|
27
|
+
}, children);
|
28
|
+
};
|
29
|
+
|
30
|
+
ChoiceField.displayName = "ChoiceField";
|
31
|
+
export default Object.assign(ChoiceField, {
|
32
|
+
Caption: ChoiceFieldCaption,
|
33
|
+
Input: ChoiceFieldInput,
|
34
|
+
Label: ChoiceFieldLabel,
|
35
|
+
LeadingVisual: ToggleInputLeadingVisual
|
36
|
+
});
|
@@ -0,0 +1,20 @@
|
|
1
|
+
import React, { useContext } from 'react';
|
2
|
+
import ChoiceFieldsetListContext from './ChoiceFieldsetListContext';
|
3
|
+
|
4
|
+
const ChoiceFieldCaption = ({
|
5
|
+
children
|
6
|
+
}) => {
|
7
|
+
const choiceFieldsetListContext = useContext(ChoiceFieldsetListContext);
|
8
|
+
|
9
|
+
if (choiceFieldsetListContext === null) {
|
10
|
+
throw new Error('ChoiceFieldsetListContext returned null');
|
11
|
+
}
|
12
|
+
|
13
|
+
const {
|
14
|
+
fieldComponent: FieldComponent
|
15
|
+
} = choiceFieldsetListContext;
|
16
|
+
return /*#__PURE__*/React.createElement(FieldComponent.Caption, null, children);
|
17
|
+
};
|
18
|
+
|
19
|
+
ChoiceFieldCaption.displayName = "ChoiceFieldCaption";
|
20
|
+
export default ChoiceFieldCaption;
|
@@ -0,0 +1,13 @@
|
|
1
|
+
import React from 'react';
|
2
|
+
export interface ChoiceFieldInputProps {
|
3
|
+
/**
|
4
|
+
* The value that is being toggled on
|
5
|
+
*/
|
6
|
+
value: string;
|
7
|
+
/**
|
8
|
+
* Whether the input is toggled on
|
9
|
+
*/
|
10
|
+
checked?: boolean;
|
11
|
+
}
|
12
|
+
declare const ChoiceFieldInput: React.FC<ChoiceFieldInputProps>;
|
13
|
+
export default ChoiceFieldInput;
|
@@ -0,0 +1,28 @@
|
|
1
|
+
import React, { useContext } from 'react';
|
2
|
+
import ChoiceFieldsetListContext from './ChoiceFieldsetListContext';
|
3
|
+
|
4
|
+
const ChoiceFieldInput = ({
|
5
|
+
checked,
|
6
|
+
value
|
7
|
+
}) => {
|
8
|
+
const choiceFieldsetListContext = useContext(ChoiceFieldsetListContext);
|
9
|
+
|
10
|
+
if (choiceFieldsetListContext === null) {
|
11
|
+
throw new Error('ChoiceFieldsetListContext returned null');
|
12
|
+
}
|
13
|
+
|
14
|
+
const {
|
15
|
+
name,
|
16
|
+
onChange,
|
17
|
+
fieldComponent: FieldComponent
|
18
|
+
} = choiceFieldsetListContext;
|
19
|
+
return /*#__PURE__*/React.createElement(FieldComponent.Input, {
|
20
|
+
checked: checked,
|
21
|
+
value: value,
|
22
|
+
name: name,
|
23
|
+
onChange: onChange
|
24
|
+
});
|
25
|
+
};
|
26
|
+
|
27
|
+
ChoiceFieldInput.displayName = "ChoiceFieldInput";
|
28
|
+
export default ChoiceFieldInput;
|
@@ -0,0 +1,20 @@
|
|
1
|
+
import React, { useContext } from 'react';
|
2
|
+
import ChoiceFieldsetListContext from './ChoiceFieldsetListContext';
|
3
|
+
|
4
|
+
const ChoiceFieldLabel = ({
|
5
|
+
children
|
6
|
+
}) => {
|
7
|
+
const choiceFieldsetListContext = useContext(ChoiceFieldsetListContext);
|
8
|
+
|
9
|
+
if (choiceFieldsetListContext === null) {
|
10
|
+
throw new Error('ChoiceFieldsetListContext returned null');
|
11
|
+
}
|
12
|
+
|
13
|
+
const {
|
14
|
+
fieldComponent: FieldComponent
|
15
|
+
} = choiceFieldsetListContext;
|
16
|
+
return /*#__PURE__*/React.createElement(FieldComponent.Label, null, children);
|
17
|
+
};
|
18
|
+
|
19
|
+
ChoiceFieldLabel.displayName = "ChoiceFieldLabel";
|
20
|
+
export default ChoiceFieldLabel;
|
@@ -0,0 +1,57 @@
|
|
1
|
+
import React, { ComponentProps } from 'react';
|
2
|
+
import { FormValidationStatus } from '../utils/types/FormValidationStatus';
|
3
|
+
export interface ChoiceFieldsetProps<T = Record<string, FormValidationStatus>> {
|
4
|
+
children?: React.ReactNode;
|
5
|
+
/**
|
6
|
+
* The unique identifier for this fieldset. Used to associate the validation text and caption text with the fieldset
|
7
|
+
*/
|
8
|
+
id?: string;
|
9
|
+
/**
|
10
|
+
* The unique identifier used to associate the inputs with eachother
|
11
|
+
*/
|
12
|
+
name?: string;
|
13
|
+
/**
|
14
|
+
* The callback that is called when a user toggles a choice on or off
|
15
|
+
*/
|
16
|
+
onSelect?: (selectedValues?: string[]) => void;
|
17
|
+
/**
|
18
|
+
* Whether this field must have a value for the user to complete their task
|
19
|
+
*/
|
20
|
+
required?: boolean;
|
21
|
+
/**
|
22
|
+
* A map of validation statuses and their associated validation keys. When one of the validation keys is passed to the `validationResult` prop,
|
23
|
+
* the associated validation message will be rendered in the correct style
|
24
|
+
*/
|
25
|
+
validationMap?: T;
|
26
|
+
/**
|
27
|
+
* The key of the validation message to show
|
28
|
+
*/
|
29
|
+
validationResult?: keyof T;
|
30
|
+
}
|
31
|
+
export interface ChoiceFieldsetContext extends ChoiceFieldsetProps {
|
32
|
+
captionId: string;
|
33
|
+
validationMessageId: string;
|
34
|
+
}
|
35
|
+
declare const Slot: React.FC<{
|
36
|
+
name: "Caption" | "ChoiceList" | "Legend" | "Validation";
|
37
|
+
children: React.ReactNode;
|
38
|
+
}>;
|
39
|
+
export { Slot };
|
40
|
+
declare const ChoiceFieldset: <T extends Record<string, FormValidationStatus>>({ children, id, name, onSelect, required, validationMap, validationResult }: ChoiceFieldsetProps<T>) => JSX.Element;
|
41
|
+
export declare type InputFieldComponentProps = ComponentProps<typeof ChoiceFieldset>;
|
42
|
+
export type { ChoiceFieldsetListProps } from './ChoiceFieldsetList';
|
43
|
+
export type { ChoiceFieldsetLegendProps } from './ChoiceFieldsetLegend';
|
44
|
+
export type { ChoiceFieldProps } from './ChoiceField';
|
45
|
+
declare const _default: (<T extends Record<string, FormValidationStatus>>({ children, id, name, onSelect, required, validationMap, validationResult }: ChoiceFieldsetProps<T>) => JSX.Element) & {
|
46
|
+
ChoiceField: React.FC<import("./ChoiceField").ChoiceFieldProps> & {
|
47
|
+
Caption: React.FC<{}>;
|
48
|
+
Input: React.FC<import("./ChoiceFieldInput").ChoiceFieldInputProps>;
|
49
|
+
Label: React.FC<{}>;
|
50
|
+
LeadingVisual: React.FC<{}>;
|
51
|
+
};
|
52
|
+
Caption: React.FC<{}>;
|
53
|
+
Legend: React.FC<import("./ChoiceFieldsetLegend").ChoiceFieldsetLegendProps>;
|
54
|
+
List: React.FC<import("./ChoiceFieldsetList").ChoiceFieldsetListProps>;
|
55
|
+
Validation: React.FC<import("./ChoiceFieldsetValidation").ChoiceFieldsetValidationProps>;
|
56
|
+
};
|
57
|
+
export default _default;
|
@@ -0,0 +1,72 @@
|
|
1
|
+
import React from 'react';
|
2
|
+
import { Box } from '..';
|
3
|
+
import createSlots from '../utils/create-slots';
|
4
|
+
import { uniqueId } from '../utils/uniqueId';
|
5
|
+
import ValidationAnimationContainer from '../_InputField/ValidationAnimationContainer';
|
6
|
+
import InputValidation from '../_InputValidation';
|
7
|
+
import ChoiceField from './ChoiceField';
|
8
|
+
import ChoiceFieldsetCaption from './ChoiceFieldsetCaption';
|
9
|
+
import ChoiceFieldsetLegend from './ChoiceFieldsetLegend';
|
10
|
+
import ChoiceFieldsetList from './ChoiceFieldsetList';
|
11
|
+
import ChoiceFieldsetValidation from './ChoiceFieldsetValidation';
|
12
|
+
const {
|
13
|
+
Slots,
|
14
|
+
Slot
|
15
|
+
} = createSlots(['Caption', 'ChoiceList', 'Legend', 'Validation']);
|
16
|
+
export { Slot };
|
17
|
+
|
18
|
+
const ChoiceFieldset = ({
|
19
|
+
children,
|
20
|
+
id,
|
21
|
+
name,
|
22
|
+
onSelect,
|
23
|
+
required,
|
24
|
+
validationMap,
|
25
|
+
validationResult
|
26
|
+
}) => {
|
27
|
+
var _React$Children$map;
|
28
|
+
|
29
|
+
const fieldsetId = id || uniqueId();
|
30
|
+
const validationChildren = (_React$Children$map = React.Children.map(children, child => /*#__PURE__*/React.isValidElement(child) && child.type === ChoiceFieldsetValidation ? child : null)) === null || _React$Children$map === void 0 ? void 0 : _React$Children$map.filter(Boolean);
|
31
|
+
const validationChildToRender = validationChildren === null || validationChildren === void 0 ? void 0 : validationChildren.find(child => child.props.validationKey === validationResult);
|
32
|
+
const captionId = `${fieldsetId}-caption`;
|
33
|
+
const validationMessageId = validationChildToRender ? `${fieldsetId}-validationMsg` : undefined;
|
34
|
+
return /*#__PURE__*/React.createElement(Slots, {
|
35
|
+
context: {
|
36
|
+
captionId,
|
37
|
+
name,
|
38
|
+
onSelect,
|
39
|
+
required,
|
40
|
+
validationMessageId
|
41
|
+
}
|
42
|
+
}, slots => {
|
43
|
+
const isLegendVisible = /*#__PURE__*/React.isValidElement(slots.Legend) && slots.Legend.props.isVisible;
|
44
|
+
return /*#__PURE__*/React.createElement("div", null, /*#__PURE__*/React.createElement(Box, {
|
45
|
+
as: "fieldset",
|
46
|
+
border: "none",
|
47
|
+
margin: 0,
|
48
|
+
padding: 0,
|
49
|
+
"aria-describedby": [validationMessageId, captionId].filter(Boolean).join(' ')
|
50
|
+
}, React.Children.toArray(children).filter(child => /*#__PURE__*/React.isValidElement(child) && child.type !== ChoiceFieldsetValidation), /*#__PURE__*/React.createElement(Box, {
|
51
|
+
mb: isLegendVisible ? 3 : undefined
|
52
|
+
}, slots.Legend), slots.ChoiceList), (validationChildToRender || slots.Caption) && /*#__PURE__*/React.createElement(Box, {
|
53
|
+
mt: 3
|
54
|
+
}, validationChildToRender && validationMap && validationResult && validationMessageId && /*#__PURE__*/React.createElement(ValidationAnimationContainer, {
|
55
|
+
show: true
|
56
|
+
}, /*#__PURE__*/React.createElement(InputValidation, {
|
57
|
+
validationStatus: validationMap[validationResult],
|
58
|
+
id: validationMessageId
|
59
|
+
}, validationChildToRender)), /*#__PURE__*/React.createElement(Box, {
|
60
|
+
mt: validationChildToRender ? 1 : undefined
|
61
|
+
}, slots.Caption)));
|
62
|
+
});
|
63
|
+
};
|
64
|
+
|
65
|
+
ChoiceFieldset.displayName = "ChoiceFieldset";
|
66
|
+
export default Object.assign(ChoiceFieldset, {
|
67
|
+
ChoiceField,
|
68
|
+
Caption: ChoiceFieldsetCaption,
|
69
|
+
Legend: ChoiceFieldsetLegend,
|
70
|
+
List: ChoiceFieldsetList,
|
71
|
+
Validation: ChoiceFieldsetValidation
|
72
|
+
});
|
@@ -0,0 +1,16 @@
|
|
1
|
+
import React from 'react';
|
2
|
+
import InputCaption from '../_InputCaption';
|
3
|
+
import { Slot } from './ChoiceFieldset';
|
4
|
+
|
5
|
+
const ChoiceFieldsetCaption = ({
|
6
|
+
children
|
7
|
+
}) => /*#__PURE__*/React.createElement(Slot, {
|
8
|
+
name: "Caption"
|
9
|
+
}, ({
|
10
|
+
captionId
|
11
|
+
}) => /*#__PURE__*/React.createElement(InputCaption, {
|
12
|
+
id: captionId
|
13
|
+
}, children));
|
14
|
+
|
15
|
+
ChoiceFieldsetCaption.displayName = "ChoiceFieldsetCaption";
|
16
|
+
export default ChoiceFieldsetCaption;
|
@@ -0,0 +1,28 @@
|
|
1
|
+
import React from 'react';
|
2
|
+
import { Box } from '..';
|
3
|
+
import VisuallyHidden from '../_VisuallyHidden';
|
4
|
+
import { Slot } from './ChoiceFieldset';
|
5
|
+
|
6
|
+
const ChoiceFieldsetLegend = ({
|
7
|
+
children,
|
8
|
+
visuallyHidden
|
9
|
+
}) => /*#__PURE__*/React.createElement(Slot, {
|
10
|
+
name: "Legend"
|
11
|
+
}, ({
|
12
|
+
required
|
13
|
+
}) => /*#__PURE__*/React.createElement(VisuallyHidden, {
|
14
|
+
isVisible: !visuallyHidden,
|
15
|
+
title: required ? 'required field' : undefined,
|
16
|
+
sx: {
|
17
|
+
fontSize: 2,
|
18
|
+
padding: 0
|
19
|
+
}
|
20
|
+
}, required ? /*#__PURE__*/React.createElement(Box, {
|
21
|
+
display: "flex",
|
22
|
+
as: "span"
|
23
|
+
}, /*#__PURE__*/React.createElement(Box, {
|
24
|
+
mr: 1
|
25
|
+
}, children), /*#__PURE__*/React.createElement("span", null, "*")) : children));
|
26
|
+
|
27
|
+
ChoiceFieldsetLegend.displayName = "ChoiceFieldsetLegend";
|
28
|
+
export default ChoiceFieldsetLegend;
|