@primer/components 0.0.0-2021118165314 → 0.0.0-20211181903
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/browser.esm.js +2 -2
- package/dist/browser.esm.js.map +1 -1
- package/dist/browser.umd.js +2 -2
- package/dist/browser.umd.js.map +1 -1
- package/lib/Autocomplete/AutocompleteMenu.js +11 -17
- package/lib/CheckboxInputField.d.ts +11 -0
- package/lib/CheckboxInputField.js +73 -0
- package/lib/ChoiceFieldset/ChoiceFieldCaption.d.ts +3 -0
- package/lib/ChoiceFieldset/ChoiceFieldCaption.js +35 -0
- package/lib/ChoiceFieldset/ChoiceFieldLabel.d.ts +3 -0
- package/lib/ChoiceFieldset/ChoiceFieldLabel.js +35 -0
- package/lib/ChoiceFieldset/ChoiceFieldset.d.ts +65 -0
- package/lib/ChoiceFieldset/ChoiceFieldset.js +93 -0
- package/lib/ChoiceFieldset/ChoiceFieldsetDescription.d.ts +3 -0
- package/lib/ChoiceFieldset/ChoiceFieldsetDescription.js +29 -0
- package/lib/ChoiceFieldset/ChoiceFieldsetLegend.d.ts +9 -0
- package/lib/ChoiceFieldset/ChoiceFieldsetLegend.js +44 -0
- package/lib/ChoiceFieldset/ChoiceFieldsetList.d.ts +9 -0
- package/lib/ChoiceFieldset/ChoiceFieldsetList.js +71 -0
- package/lib/ChoiceFieldset/ChoiceFieldsetListContext.d.ts +19 -0
- package/lib/ChoiceFieldset/ChoiceFieldsetListContext.js +15 -0
- package/lib/ChoiceFieldset/ChoiceFieldsetListItem.d.ts +25 -0
- package/lib/ChoiceFieldset/ChoiceFieldsetListItem.js +75 -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 +10 -0
- package/lib/RadioInputField.js +74 -0
- package/lib/TextInputField.d.ts +583 -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 +88 -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 +75 -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 +45 -0
- package/lib/_InputValidation.d.ts +8 -0
- package/lib/_InputValidation.js +59 -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 +7 -16
- package/lib-esm/CheckboxInputField.d.ts +11 -0
- package/lib-esm/CheckboxInputField.js +56 -0
- package/lib-esm/ChoiceFieldset/ChoiceFieldCaption.d.ts +3 -0
- package/lib-esm/ChoiceFieldset/ChoiceFieldCaption.js +20 -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 +65 -0
- package/lib-esm/ChoiceFieldset/ChoiceFieldset.js +71 -0
- package/lib-esm/ChoiceFieldset/ChoiceFieldsetDescription.d.ts +3 -0
- package/lib-esm/ChoiceFieldset/ChoiceFieldsetDescription.js +17 -0
- package/lib-esm/ChoiceFieldset/ChoiceFieldsetLegend.d.ts +9 -0
- package/lib-esm/ChoiceFieldset/ChoiceFieldsetLegend.js +31 -0
- package/lib-esm/ChoiceFieldset/ChoiceFieldsetList.d.ts +9 -0
- package/lib-esm/ChoiceFieldset/ChoiceFieldsetList.js +55 -0
- package/lib-esm/ChoiceFieldset/ChoiceFieldsetListContext.d.ts +19 -0
- package/lib-esm/ChoiceFieldset/ChoiceFieldsetListContext.js +5 -0
- package/lib-esm/ChoiceFieldset/ChoiceFieldsetListItem.d.ts +25 -0
- package/lib-esm/ChoiceFieldset/ChoiceFieldsetListItem.js +51 -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 +10 -0
- package/lib-esm/RadioInputField.js +56 -0
- package/lib-esm/TextInputField.d.ts +583 -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 +69 -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 +58 -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 +33 -0
- package/lib-esm/_InputValidation.d.ts +8 -0
- package/lib-esm/_InputValidation.js +46 -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
@@ -17,10 +17,14 @@ var _AutocompleteContext = require("./AutocompleteContext");
|
|
17
17
|
|
18
18
|
var _octiconsReact = require("@primer/octicons-react");
|
19
19
|
|
20
|
-
var _uniqueId = require("../utils/uniqueId");
|
21
|
-
|
22
20
|
var _scrollIntoViewingArea = require("../behaviors/scrollIntoViewingArea");
|
23
21
|
|
22
|
+
var _VisuallyHidden = _interopRequireDefault(require("../_VisuallyHidden"));
|
23
|
+
|
24
|
+
var _ssr = require("@react-aria/ssr");
|
25
|
+
|
26
|
+
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
|
27
|
+
|
24
28
|
function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "function") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function (nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); }
|
25
29
|
|
26
30
|
function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || typeof obj !== "object" && typeof obj !== "function") { return { default: obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj.default = obj; if (cache) { cache.set(obj, newObj); } return newObj; }
|
@@ -90,6 +94,7 @@ function AutocompleteMenu(props) {
|
|
90
94
|
const [sortedItemIds, setSortedItemIds] = (0, _react.useState)(items.map(({
|
91
95
|
id: itemId
|
92
96
|
}) => itemId));
|
97
|
+
const generatedUniqueId = (0, _ssr.useSSRSafeId)(id);
|
93
98
|
const selectableItems = (0, _react.useMemo)(() => items.map(selectableItem => {
|
94
99
|
return { ...selectableItem,
|
95
100
|
role: 'option',
|
@@ -125,7 +130,7 @@ function AutocompleteMenu(props) {
|
|
125
130
|
onAction: item => {
|
126
131
|
// TODO: make it possible to pass a leadingVisual when using `addNewItem`
|
127
132
|
addNewItem.handleAddItem({ ...item,
|
128
|
-
id: item.id ||
|
133
|
+
id: item.id || generatedUniqueId,
|
129
134
|
leadingVisual: undefined
|
130
135
|
});
|
131
136
|
|
@@ -134,7 +139,7 @@ function AutocompleteMenu(props) {
|
|
134
139
|
setAutocompleteSuggestion('');
|
135
140
|
}
|
136
141
|
}
|
137
|
-
}] : [])], [sortedAndFilteredItemsToRender, addNewItem, setAutocompleteSuggestion, selectionVariant, setInputValue]);
|
142
|
+
}] : [])], [sortedAndFilteredItemsToRender, addNewItem, setAutocompleteSuggestion, selectionVariant, setInputValue, generatedUniqueId]);
|
138
143
|
(0, _useFocusZone.useFocusZone)({
|
139
144
|
containerRef: listContainerRef,
|
140
145
|
focusOutBehavior: 'wrap',
|
@@ -182,19 +187,8 @@ function AutocompleteMenu(props) {
|
|
182
187
|
setSelectedItemLength(selectedItemIds.length);
|
183
188
|
}
|
184
189
|
}, [selectedItemIds, setSelectedItemLength]);
|
185
|
-
return /*#__PURE__*/_react.default.createElement(
|
186
|
-
|
187
|
-
// visually hides this label for sighted users
|
188
|
-
position: 'absolute',
|
189
|
-
width: '1px',
|
190
|
-
height: '1px',
|
191
|
-
padding: '0',
|
192
|
-
margin: '-1px',
|
193
|
-
overflow: 'hidden',
|
194
|
-
clip: 'rect(0, 0, 0, 0)',
|
195
|
-
whiteSpace: 'nowrap',
|
196
|
-
borderWidth: '0'
|
197
|
-
} : {}
|
190
|
+
return /*#__PURE__*/_react.default.createElement(_VisuallyHidden.default, {
|
191
|
+
isVisible: showMenu
|
198
192
|
}, loading ? /*#__PURE__*/_react.default.createElement(_.Box, {
|
199
193
|
p: 3,
|
200
194
|
display: "flex",
|
@@ -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,73 @@
|
|
1
|
+
"use strict";
|
2
|
+
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
4
|
+
value: true
|
5
|
+
});
|
6
|
+
exports.default = void 0;
|
7
|
+
|
8
|
+
var _react = _interopRequireDefault(require("react"));
|
9
|
+
|
10
|
+
var _ = require(".");
|
11
|
+
|
12
|
+
var _InputField = _interopRequireDefault(require("./_InputField/InputField"));
|
13
|
+
|
14
|
+
var _slots = require("./_InputField/slots");
|
15
|
+
|
16
|
+
var _ToggleInputField = _interopRequireDefault(require("./_InputField/ToggleInputField"));
|
17
|
+
|
18
|
+
var _ToggleInputLeadingVisual = _interopRequireDefault(require("./_InputField/ToggleInputLeadingVisual"));
|
19
|
+
|
20
|
+
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
|
21
|
+
|
22
|
+
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); }
|
23
|
+
|
24
|
+
const Input = ({
|
25
|
+
id: idProp,
|
26
|
+
required: requiredProp,
|
27
|
+
disabled: disabledProp,
|
28
|
+
...rest
|
29
|
+
}) => {
|
30
|
+
if (idProp) {
|
31
|
+
// eslint-disable-next-line no-console
|
32
|
+
console.warn("instead of passing the 'id' prop directly to <TextInputField.Input>, it should be passed to the parent component, <TextInputField>");
|
33
|
+
}
|
34
|
+
|
35
|
+
if (disabledProp) {
|
36
|
+
// eslint-disable-next-line no-console
|
37
|
+
console.warn("instead of passing the 'disabled' prop directly to <TextInputField.Input>, it should be passed to the parent component, <TextInputField>");
|
38
|
+
}
|
39
|
+
|
40
|
+
if (requiredProp) {
|
41
|
+
// eslint-disable-next-line no-console
|
42
|
+
console.warn("instead of passing the 'required' prop directly to <TextInputField.Input>, it should be passed to the parent component, <TextInputField>");
|
43
|
+
}
|
44
|
+
|
45
|
+
return /*#__PURE__*/_react.default.createElement(_slots.Slot, {
|
46
|
+
name: "Input"
|
47
|
+
}, ({
|
48
|
+
disabled,
|
49
|
+
id,
|
50
|
+
required,
|
51
|
+
captionId
|
52
|
+
}) => /*#__PURE__*/_react.default.createElement(_.Checkbox, _extends({
|
53
|
+
"aria-describedby": captionId,
|
54
|
+
id: id,
|
55
|
+
required: required,
|
56
|
+
disabled: disabled
|
57
|
+
}, rest)));
|
58
|
+
};
|
59
|
+
|
60
|
+
Input.displayName = "Input";
|
61
|
+
|
62
|
+
const CheckboxInputField = props => /*#__PURE__*/_react.default.createElement(_ToggleInputField.default, props);
|
63
|
+
|
64
|
+
CheckboxInputField.displayName = "CheckboxInputField";
|
65
|
+
|
66
|
+
var _default = Object.assign(CheckboxInputField, {
|
67
|
+
Input,
|
68
|
+
Caption: _InputField.default.Caption,
|
69
|
+
Label: _InputField.default.Label,
|
70
|
+
LeadingVisual: _ToggleInputLeadingVisual.default
|
71
|
+
});
|
72
|
+
|
73
|
+
exports.default = _default;
|
@@ -0,0 +1,35 @@
|
|
1
|
+
"use strict";
|
2
|
+
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
4
|
+
value: true
|
5
|
+
});
|
6
|
+
exports.default = void 0;
|
7
|
+
|
8
|
+
var _react = _interopRequireWildcard(require("react"));
|
9
|
+
|
10
|
+
var _ChoiceFieldsetListContext = _interopRequireDefault(require("./ChoiceFieldsetListContext"));
|
11
|
+
|
12
|
+
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
|
13
|
+
|
14
|
+
function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "function") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function (nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); }
|
15
|
+
|
16
|
+
function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || typeof obj !== "object" && typeof obj !== "function") { return { default: obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj.default = obj; if (cache) { cache.set(obj, newObj); } return newObj; }
|
17
|
+
|
18
|
+
const ChoiceFieldCaption = ({
|
19
|
+
children
|
20
|
+
}) => {
|
21
|
+
const choiceFieldsetListContext = (0, _react.useContext)(_ChoiceFieldsetListContext.default);
|
22
|
+
|
23
|
+
if (choiceFieldsetListContext === null) {
|
24
|
+
throw new Error('ChoiceFieldsetListContext returned null');
|
25
|
+
}
|
26
|
+
|
27
|
+
const {
|
28
|
+
fieldComponent: FieldComponent
|
29
|
+
} = choiceFieldsetListContext;
|
30
|
+
return /*#__PURE__*/_react.default.createElement(FieldComponent.Caption, null, children);
|
31
|
+
};
|
32
|
+
|
33
|
+
ChoiceFieldCaption.displayName = "ChoiceFieldCaption";
|
34
|
+
var _default = ChoiceFieldCaption;
|
35
|
+
exports.default = _default;
|
@@ -0,0 +1,35 @@
|
|
1
|
+
"use strict";
|
2
|
+
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
4
|
+
value: true
|
5
|
+
});
|
6
|
+
exports.default = void 0;
|
7
|
+
|
8
|
+
var _react = _interopRequireWildcard(require("react"));
|
9
|
+
|
10
|
+
var _ChoiceFieldsetListContext = _interopRequireDefault(require("./ChoiceFieldsetListContext"));
|
11
|
+
|
12
|
+
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
|
13
|
+
|
14
|
+
function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "function") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function (nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); }
|
15
|
+
|
16
|
+
function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || typeof obj !== "object" && typeof obj !== "function") { return { default: obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj.default = obj; if (cache) { cache.set(obj, newObj); } return newObj; }
|
17
|
+
|
18
|
+
const ChoiceFieldLabel = ({
|
19
|
+
children
|
20
|
+
}) => {
|
21
|
+
const choiceFieldsetListContext = (0, _react.useContext)(_ChoiceFieldsetListContext.default);
|
22
|
+
|
23
|
+
if (choiceFieldsetListContext === null) {
|
24
|
+
throw new Error('ChoiceFieldsetListContext returned null');
|
25
|
+
}
|
26
|
+
|
27
|
+
const {
|
28
|
+
fieldComponent: FieldComponent
|
29
|
+
} = choiceFieldsetListContext;
|
30
|
+
return /*#__PURE__*/_react.default.createElement(FieldComponent.Label, null, children);
|
31
|
+
};
|
32
|
+
|
33
|
+
ChoiceFieldLabel.displayName = "ChoiceFieldLabel";
|
34
|
+
var _default = ChoiceFieldLabel;
|
35
|
+
exports.default = _default;
|
@@ -0,0 +1,65 @@
|
|
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
|
+
* Whether the fieldset is NOT ready for user input
|
7
|
+
*/
|
8
|
+
disabled?: boolean;
|
9
|
+
/**
|
10
|
+
* The unique identifier for this fieldset. Used to associate the validation text with the fieldset
|
11
|
+
* If an ID is not passed, one will be automatically generated
|
12
|
+
*/
|
13
|
+
id?: string;
|
14
|
+
/**
|
15
|
+
* The unique identifier used to associate radio inputs with eachother
|
16
|
+
* If a name is not passed and the fieldset renders radio inputs, a name will be automatically generated
|
17
|
+
*/
|
18
|
+
name?: string;
|
19
|
+
/**
|
20
|
+
* The callback that is called when a user toggles a choice on or off
|
21
|
+
*/
|
22
|
+
onSelect?: (selectedValues: string[]) => void;
|
23
|
+
/**
|
24
|
+
* Whether this field must have a value for the user to complete their task
|
25
|
+
*/
|
26
|
+
required?: boolean;
|
27
|
+
/**
|
28
|
+
* The selected values
|
29
|
+
*/
|
30
|
+
selected?: string[];
|
31
|
+
/**
|
32
|
+
* A map of validation statuses and their associated validation keys. When one of the validation keys is passed to the `validationResult` prop,
|
33
|
+
* the associated validation message will be rendered in the correct style
|
34
|
+
*/
|
35
|
+
validationMap?: T;
|
36
|
+
/**
|
37
|
+
* The key of the validation message to show
|
38
|
+
*/
|
39
|
+
validationResult?: keyof T;
|
40
|
+
}
|
41
|
+
export interface ChoiceFieldsetContext extends ChoiceFieldsetProps {
|
42
|
+
validationMessageId: string;
|
43
|
+
}
|
44
|
+
declare const Slot: React.FC<{
|
45
|
+
name: "Description" | "ChoiceList" | "Legend" | "Validation";
|
46
|
+
children: React.ReactNode;
|
47
|
+
}>;
|
48
|
+
export { Slot };
|
49
|
+
declare const ChoiceFieldset: <T extends Record<string, FormValidationStatus>>({ children, disabled, id, name, onSelect, required, selected, validationMap, validationResult }: ChoiceFieldsetProps<T>) => JSX.Element;
|
50
|
+
export declare type InputFieldComponentProps = ComponentProps<typeof ChoiceFieldset>;
|
51
|
+
export type { ChoiceFieldsetListProps } from './ChoiceFieldsetList';
|
52
|
+
export type { ChoiceFieldsetLegendProps } from './ChoiceFieldsetLegend';
|
53
|
+
export type { ChoiceFieldProps } from './ChoiceFieldsetListItem';
|
54
|
+
declare const _default: (<T extends Record<string, FormValidationStatus>>({ children, disabled, id, name, onSelect, required, selected, validationMap, validationResult }: ChoiceFieldsetProps<T>) => JSX.Element) & {
|
55
|
+
Description: React.FC<{}>;
|
56
|
+
Item: React.FC<import("./ChoiceFieldsetListItem").ChoiceFieldProps> & {
|
57
|
+
Caption: React.FC<{}>;
|
58
|
+
Label: React.FC<{}>;
|
59
|
+
LeadingVisual: React.FC<{}>;
|
60
|
+
};
|
61
|
+
Legend: React.FC<import("./ChoiceFieldsetLegend").ChoiceFieldsetLegendProps>;
|
62
|
+
List: React.FC<import("./ChoiceFieldsetList").ChoiceFieldsetListProps>;
|
63
|
+
Validation: React.FC<import("./ChoiceFieldsetValidation").ChoiceFieldsetValidationProps>;
|
64
|
+
};
|
65
|
+
export default _default;
|
@@ -0,0 +1,93 @@
|
|
1
|
+
"use strict";
|
2
|
+
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
4
|
+
value: true
|
5
|
+
});
|
6
|
+
exports.default = exports.Slot = void 0;
|
7
|
+
|
8
|
+
var _react = _interopRequireDefault(require("react"));
|
9
|
+
|
10
|
+
var _ = require("..");
|
11
|
+
|
12
|
+
var _createSlots = _interopRequireDefault(require("../utils/create-slots"));
|
13
|
+
|
14
|
+
var _ValidationAnimationContainer = _interopRequireDefault(require("../_InputField/ValidationAnimationContainer"));
|
15
|
+
|
16
|
+
var _InputValidation = _interopRequireDefault(require("../_InputValidation"));
|
17
|
+
|
18
|
+
var _ChoiceFieldsetListItem = _interopRequireDefault(require("./ChoiceFieldsetListItem"));
|
19
|
+
|
20
|
+
var _ChoiceFieldsetDescription = _interopRequireDefault(require("./ChoiceFieldsetDescription"));
|
21
|
+
|
22
|
+
var _ChoiceFieldsetLegend = _interopRequireDefault(require("./ChoiceFieldsetLegend"));
|
23
|
+
|
24
|
+
var _ChoiceFieldsetList = _interopRequireDefault(require("./ChoiceFieldsetList"));
|
25
|
+
|
26
|
+
var _ChoiceFieldsetValidation = _interopRequireDefault(require("./ChoiceFieldsetValidation"));
|
27
|
+
|
28
|
+
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
|
29
|
+
|
30
|
+
const {
|
31
|
+
Slots,
|
32
|
+
Slot
|
33
|
+
} = (0, _createSlots.default)(['Description', 'ChoiceList', 'Legend', 'Validation']);
|
34
|
+
exports.Slot = Slot;
|
35
|
+
|
36
|
+
const ChoiceFieldset = ({
|
37
|
+
children,
|
38
|
+
disabled,
|
39
|
+
id,
|
40
|
+
name,
|
41
|
+
onSelect,
|
42
|
+
required,
|
43
|
+
selected,
|
44
|
+
validationMap,
|
45
|
+
validationResult
|
46
|
+
}) => {
|
47
|
+
var _React$Children$map;
|
48
|
+
|
49
|
+
const fieldsetId = (0, _.useSSRSafeId)(id);
|
50
|
+
const validationChildren = (_React$Children$map = _react.default.Children.map(children, child => /*#__PURE__*/_react.default.isValidElement(child) && child.type === _ChoiceFieldsetValidation.default ? child : null)) === null || _React$Children$map === void 0 ? void 0 : _React$Children$map.filter(Boolean);
|
51
|
+
const validationChildToRender = validationChildren === null || validationChildren === void 0 ? void 0 : validationChildren.find(child => child.props.validationKey === validationResult);
|
52
|
+
const validationMessageId = validationChildToRender ? `${fieldsetId}-validationMsg` : undefined;
|
53
|
+
return /*#__PURE__*/_react.default.createElement(Slots, {
|
54
|
+
context: {
|
55
|
+
disabled,
|
56
|
+
name,
|
57
|
+
onSelect,
|
58
|
+
required,
|
59
|
+
selected,
|
60
|
+
validationMessageId
|
61
|
+
}
|
62
|
+
}, slots => {
|
63
|
+
const isLegendVisible = /*#__PURE__*/_react.default.isValidElement(slots.Legend) && slots.Legend.props.isVisible;
|
64
|
+
return /*#__PURE__*/_react.default.createElement("div", null, /*#__PURE__*/_react.default.createElement(_.Box, {
|
65
|
+
as: "fieldset",
|
66
|
+
border: "none",
|
67
|
+
margin: 0,
|
68
|
+
padding: 0,
|
69
|
+
"aria-describedby": [validationMessageId].filter(Boolean).join(' ')
|
70
|
+
}, _react.default.Children.toArray(children).filter(child => /*#__PURE__*/_react.default.isValidElement(child) && child.type !== _ChoiceFieldsetValidation.default), /*#__PURE__*/_react.default.createElement(_.Box, {
|
71
|
+
mb: isLegendVisible ? 3 : undefined
|
72
|
+
}, slots.Legend, slots.Description), slots.ChoiceList), validationChildToRender && /*#__PURE__*/_react.default.createElement(_.Box, {
|
73
|
+
mt: 3
|
74
|
+
}, validationMap && validationResult && validationMessageId && /*#__PURE__*/_react.default.createElement(_ValidationAnimationContainer.default, {
|
75
|
+
show: true
|
76
|
+
}, /*#__PURE__*/_react.default.createElement(_InputValidation.default, {
|
77
|
+
validationStatus: validationMap[validationResult],
|
78
|
+
id: validationMessageId
|
79
|
+
}, validationChildToRender))));
|
80
|
+
});
|
81
|
+
};
|
82
|
+
|
83
|
+
ChoiceFieldset.displayName = "ChoiceFieldset";
|
84
|
+
|
85
|
+
var _default = Object.assign(ChoiceFieldset, {
|
86
|
+
Description: _ChoiceFieldsetDescription.default,
|
87
|
+
Item: _ChoiceFieldsetListItem.default,
|
88
|
+
Legend: _ChoiceFieldsetLegend.default,
|
89
|
+
List: _ChoiceFieldsetList.default,
|
90
|
+
Validation: _ChoiceFieldsetValidation.default
|
91
|
+
});
|
92
|
+
|
93
|
+
exports.default = _default;
|
@@ -0,0 +1,29 @@
|
|
1
|
+
"use strict";
|
2
|
+
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
4
|
+
value: true
|
5
|
+
});
|
6
|
+
exports.default = void 0;
|
7
|
+
|
8
|
+
var _react = _interopRequireDefault(require("react"));
|
9
|
+
|
10
|
+
var _ = require("..");
|
11
|
+
|
12
|
+
var _ChoiceFieldset = require("./ChoiceFieldset");
|
13
|
+
|
14
|
+
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
|
15
|
+
|
16
|
+
const ChoiceFieldsetDescription = ({
|
17
|
+
children
|
18
|
+
}) => /*#__PURE__*/_react.default.createElement(_ChoiceFieldset.Slot, {
|
19
|
+
name: "Description"
|
20
|
+
}, ({
|
21
|
+
disabled
|
22
|
+
}) => /*#__PURE__*/_react.default.createElement(_.Text, {
|
23
|
+
color: disabled ? 'fg.muted' : 'fg.default',
|
24
|
+
fontSize: 1
|
25
|
+
}, children));
|
26
|
+
|
27
|
+
ChoiceFieldsetDescription.displayName = "ChoiceFieldsetDescription";
|
28
|
+
var _default = ChoiceFieldsetDescription;
|
29
|
+
exports.default = _default;
|
@@ -0,0 +1,9 @@
|
|
1
|
+
import React from 'react';
|
2
|
+
export interface ChoiceFieldsetLegendProps {
|
3
|
+
/**
|
4
|
+
* Whether to visually hide the fieldset legend
|
5
|
+
*/
|
6
|
+
visuallyHidden?: boolean;
|
7
|
+
}
|
8
|
+
declare const ChoiceFieldsetLegend: React.FC<ChoiceFieldsetLegendProps>;
|
9
|
+
export default ChoiceFieldsetLegend;
|
@@ -0,0 +1,44 @@
|
|
1
|
+
"use strict";
|
2
|
+
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
4
|
+
value: true
|
5
|
+
});
|
6
|
+
exports.default = void 0;
|
7
|
+
|
8
|
+
var _react = _interopRequireDefault(require("react"));
|
9
|
+
|
10
|
+
var _ = require("..");
|
11
|
+
|
12
|
+
var _VisuallyHidden = _interopRequireDefault(require("../_VisuallyHidden"));
|
13
|
+
|
14
|
+
var _ChoiceFieldset = require("./ChoiceFieldset");
|
15
|
+
|
16
|
+
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
|
17
|
+
|
18
|
+
const ChoiceFieldsetLegend = ({
|
19
|
+
children,
|
20
|
+
visuallyHidden
|
21
|
+
}) => /*#__PURE__*/_react.default.createElement(_ChoiceFieldset.Slot, {
|
22
|
+
name: "Legend"
|
23
|
+
}, ({
|
24
|
+
required,
|
25
|
+
disabled
|
26
|
+
}) => /*#__PURE__*/_react.default.createElement(_VisuallyHidden.default, {
|
27
|
+
as: "legend",
|
28
|
+
isVisible: !visuallyHidden,
|
29
|
+
title: required ? 'required field' : undefined,
|
30
|
+
sx: {
|
31
|
+
color: disabled ? 'fg.muted' : undefined,
|
32
|
+
fontSize: 2,
|
33
|
+
padding: 0
|
34
|
+
}
|
35
|
+
}, required ? /*#__PURE__*/_react.default.createElement(_.Box, {
|
36
|
+
display: "flex",
|
37
|
+
as: "span"
|
38
|
+
}, /*#__PURE__*/_react.default.createElement(_.Box, {
|
39
|
+
mr: 1
|
40
|
+
}, children), /*#__PURE__*/_react.default.createElement("span", null, "*")) : children));
|
41
|
+
|
42
|
+
ChoiceFieldsetLegend.displayName = "ChoiceFieldsetLegend";
|
43
|
+
var _default = ChoiceFieldsetLegend;
|
44
|
+
exports.default = _default;
|
@@ -0,0 +1,9 @@
|
|
1
|
+
import React from 'react';
|
2
|
+
export interface ChoiceFieldsetListProps {
|
3
|
+
/**
|
4
|
+
* Whether multiple items or a single item can be selected
|
5
|
+
*/
|
6
|
+
selectionVariant?: 'single' | 'multiple';
|
7
|
+
}
|
8
|
+
declare const ChoiceFieldsetList: React.FC<ChoiceFieldsetListProps>;
|
9
|
+
export default ChoiceFieldsetList;
|
@@ -0,0 +1,71 @@
|
|
1
|
+
"use strict";
|
2
|
+
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
4
|
+
value: true
|
5
|
+
});
|
6
|
+
exports.default = void 0;
|
7
|
+
|
8
|
+
var _react = _interopRequireDefault(require("react"));
|
9
|
+
|
10
|
+
var _styledComponents = _interopRequireDefault(require("styled-components"));
|
11
|
+
|
12
|
+
var _ = require("..");
|
13
|
+
|
14
|
+
var _constants = require("../constants");
|
15
|
+
|
16
|
+
var _ChoiceFieldset = require("./ChoiceFieldset");
|
17
|
+
|
18
|
+
var _ChoiceFieldsetListContext = _interopRequireDefault(require("./ChoiceFieldsetListContext"));
|
19
|
+
|
20
|
+
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
|
21
|
+
|
22
|
+
const List = _styledComponents.default.ul.withConfig({
|
23
|
+
displayName: "ChoiceFieldsetList__List",
|
24
|
+
componentId: "sc-16da7ba-0"
|
25
|
+
})(["display:flex;flex-direction:column;list-style:none;margin:0;padding:0;> li + li{margin-top:", ";}"], (0, _constants.get)('space.2'));
|
26
|
+
|
27
|
+
const getSelectedCheckboxes = (value, checked, selectedValues, selectionVariant) => {
|
28
|
+
if (checked) {
|
29
|
+
return selectionVariant === 'multiple' ? [...selectedValues, value] : [value];
|
30
|
+
}
|
31
|
+
|
32
|
+
return selectedValues.filter(selectedValue => selectedValue !== value);
|
33
|
+
};
|
34
|
+
|
35
|
+
const ChoiceFieldsetList = ({
|
36
|
+
selectionVariant,
|
37
|
+
children
|
38
|
+
}) => {
|
39
|
+
const ssrSafeUniqueName = (0, _.useSSRSafeId)();
|
40
|
+
return /*#__PURE__*/_react.default.createElement(_ChoiceFieldset.Slot, {
|
41
|
+
name: "ChoiceList"
|
42
|
+
}, ({
|
43
|
+
name,
|
44
|
+
onSelect,
|
45
|
+
disabled,
|
46
|
+
selected = []
|
47
|
+
}) => {
|
48
|
+
return /*#__PURE__*/_react.default.createElement(_ChoiceFieldsetListContext.default.Provider, {
|
49
|
+
value: {
|
50
|
+
disabled,
|
51
|
+
selected,
|
52
|
+
name: name || ssrSafeUniqueName,
|
53
|
+
fieldComponent: selectionVariant === 'multiple' ? _.CheckboxInputField : _.RadioInputField,
|
54
|
+
onChange: e => {
|
55
|
+
const updatedSelections = getSelectedCheckboxes(e.currentTarget.value, e.currentTarget.checked, selected, selectionVariant);
|
56
|
+
onSelect && onSelect(updatedSelections);
|
57
|
+
},
|
58
|
+
selectionVariant
|
59
|
+
}
|
60
|
+
}, /*#__PURE__*/_react.default.createElement(List, null, _react.default.Children.map(children, (child, i) => /*#__PURE__*/_react.default.createElement("li", {
|
61
|
+
key: i
|
62
|
+
}, child))));
|
63
|
+
});
|
64
|
+
};
|
65
|
+
|
66
|
+
ChoiceFieldsetList.displayName = "ChoiceFieldsetList";
|
67
|
+
ChoiceFieldsetList.defaultProps = {
|
68
|
+
selectionVariant: 'single'
|
69
|
+
};
|
70
|
+
var _default = ChoiceFieldsetList;
|
71
|
+
exports.default = _default;
|
@@ -0,0 +1,19 @@
|
|
1
|
+
import { ChangeEventHandler } from 'react';
|
2
|
+
import { CheckboxInputField, RadioInputField } from '..';
|
3
|
+
import { ComponentProps } from '../utils/types';
|
4
|
+
import InputField from '../_InputField';
|
5
|
+
import ToggleInputField, { ToggleInputFieldProps } from '../_InputField/ToggleInputField';
|
6
|
+
declare const ChoiceFieldsetListContext: import("react").Context<{
|
7
|
+
disabled?: boolean | undefined;
|
8
|
+
name: string;
|
9
|
+
onChange: ChangeEventHandler<HTMLInputElement>;
|
10
|
+
fieldComponent: React.FC<ToggleInputFieldProps> & {
|
11
|
+
Input: React.FC<ComponentProps<typeof RadioInputField.Input>> | React.FC<ComponentProps<typeof CheckboxInputField.Input>>;
|
12
|
+
Caption: React.FC<ComponentProps<typeof InputField.Caption>>;
|
13
|
+
Label: React.FC<ComponentProps<typeof InputField.Label>>;
|
14
|
+
LeadingVisual: React.FC<ComponentProps<typeof ToggleInputField.LeadingVisual>>;
|
15
|
+
};
|
16
|
+
selected?: string[] | undefined;
|
17
|
+
selectionVariant?: "single" | "multiple" | undefined;
|
18
|
+
} | null>;
|
19
|
+
export default ChoiceFieldsetListContext;
|
@@ -0,0 +1,15 @@
|
|
1
|
+
"use strict";
|
2
|
+
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
4
|
+
value: true
|
5
|
+
});
|
6
|
+
exports.default = void 0;
|
7
|
+
|
8
|
+
var _react = require("react");
|
9
|
+
|
10
|
+
var _ = require("..");
|
11
|
+
|
12
|
+
const ChoiceFieldsetListContext = /*#__PURE__*/(0, _react.createContext)(null);
|
13
|
+
_.CheckboxInputField.Input;
|
14
|
+
var _default = ChoiceFieldsetListContext;
|
15
|
+
exports.default = _default;
|
@@ -0,0 +1,25 @@
|
|
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
|
+
* If an ID is not provided, one will be automatically generated.
|
11
|
+
*/
|
12
|
+
id?: string;
|
13
|
+
/**
|
14
|
+
* The value that is being selected
|
15
|
+
*/
|
16
|
+
value: string;
|
17
|
+
}
|
18
|
+
declare const ChoiceFieldsetListItem: React.FC<ChoiceFieldProps>;
|
19
|
+
export declare type ChoiceFieldComponentProps = ComponentProps<typeof ChoiceFieldsetListItem>;
|
20
|
+
declare const _default: React.FC<ChoiceFieldProps> & {
|
21
|
+
Caption: React.FC<{}>;
|
22
|
+
Label: React.FC<{}>;
|
23
|
+
LeadingVisual: React.FC<{}>;
|
24
|
+
};
|
25
|
+
export default _default;
|