@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,68 @@
|
|
1
|
+
import React from 'react';
|
2
|
+
import styled from 'styled-components';
|
3
|
+
import { CheckboxInputField, RadioInputField } from '..';
|
4
|
+
import { get } from '../constants';
|
5
|
+
import { uniqueId } from '../utils/uniqueId';
|
6
|
+
import { Slot } from './ChoiceFieldset';
|
7
|
+
import ChoiceFieldsetListContext from './ChoiceFieldsetListContext';
|
8
|
+
const List = styled.ul.withConfig({
|
9
|
+
displayName: "ChoiceFieldsetList__List",
|
10
|
+
componentId: "sc-16da7ba-0"
|
11
|
+
})(["display:flex;flex-direction:column;list-style:none;margin:0;padding:0;> li + li{margin-top:", ";}"], get('space.2'));
|
12
|
+
|
13
|
+
const ChoiceFieldsetList = ({
|
14
|
+
selectionVariant,
|
15
|
+
children
|
16
|
+
}) => {
|
17
|
+
var _React$Children$map;
|
18
|
+
|
19
|
+
const initialSelectedChoices = ((_React$Children$map = React.Children.map(children, child => {
|
20
|
+
if ( /*#__PURE__*/React.isValidElement(child) && child.props.checked) {
|
21
|
+
return child.props.value;
|
22
|
+
}
|
23
|
+
|
24
|
+
return '';
|
25
|
+
})) === null || _React$Children$map === void 0 ? void 0 : _React$Children$map.filter(Boolean)) || [];
|
26
|
+
|
27
|
+
const getSelectedCheckboxes = (value, checked) => {
|
28
|
+
if (checked) {
|
29
|
+
return selectionVariant === 'multiple' ? [...initialSelectedChoices, value] : [value];
|
30
|
+
}
|
31
|
+
|
32
|
+
return initialSelectedChoices.filter(selectedValue => selectedValue !== value);
|
33
|
+
}; // generates a name to pass to radio inputs if one was not passed in ChoiceFieldset props
|
34
|
+
|
35
|
+
|
36
|
+
const getRadioGroupName = nameFromContext => {
|
37
|
+
if (nameFromContext || selectionVariant !== 'multiple') {
|
38
|
+
return nameFromContext;
|
39
|
+
}
|
40
|
+
|
41
|
+
const generatedName = uniqueId();
|
42
|
+
return generatedName;
|
43
|
+
};
|
44
|
+
|
45
|
+
return /*#__PURE__*/React.createElement(Slot, {
|
46
|
+
name: "ChoiceList"
|
47
|
+
}, ({
|
48
|
+
name,
|
49
|
+
onSelect
|
50
|
+
}) => /*#__PURE__*/React.createElement(ChoiceFieldsetListContext.Provider, {
|
51
|
+
value: {
|
52
|
+
initialSelectedChoices,
|
53
|
+
name: getRadioGroupName(name),
|
54
|
+
fieldComponent: selectionVariant === 'multiple' ? CheckboxInputField : RadioInputField,
|
55
|
+
onChange: e => {
|
56
|
+
onSelect && onSelect(getSelectedCheckboxes(e.currentTarget.value, e.currentTarget.checked));
|
57
|
+
}
|
58
|
+
}
|
59
|
+
}, /*#__PURE__*/React.createElement(List, null, React.Children.map(children, (child, i) => /*#__PURE__*/React.createElement("li", {
|
60
|
+
key: i
|
61
|
+
}, child)))));
|
62
|
+
};
|
63
|
+
|
64
|
+
ChoiceFieldsetList.displayName = "ChoiceFieldsetList";
|
65
|
+
ChoiceFieldsetList.defaultProps = {
|
66
|
+
selectionVariant: 'single'
|
67
|
+
};
|
68
|
+
export default ChoiceFieldsetList;
|
@@ -0,0 +1,17 @@
|
|
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
|
+
initialSelectedChoices?: string[] | undefined;
|
8
|
+
name?: string | undefined;
|
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
|
+
} | null>;
|
17
|
+
export default ChoiceFieldsetListContext;
|
@@ -0,0 +1,9 @@
|
|
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
|
+
Caption: React.FC<{}>;
|
6
|
+
Label: React.FC<import("./_InputField/InputFieldLabel").Props>;
|
7
|
+
LeadingVisual: React.FC<{}>;
|
8
|
+
};
|
9
|
+
export default _default;
|
@@ -0,0 +1,65 @@
|
|
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 InputField from './_InputField/InputField';
|
5
|
+
import { Slot } from './_InputField/slots';
|
6
|
+
import ToggleInputField from './_InputField/ToggleInputField';
|
7
|
+
import ToggleInputLeadingVisual from './_InputField/ToggleInputLeadingVisual'; // TODO: use Primer's checkbox input once it's available
|
8
|
+
// https://github.com/github/primer/issues/489
|
9
|
+
|
10
|
+
const RadioInput = props => {
|
11
|
+
return /*#__PURE__*/React.createElement("input", _extends({
|
12
|
+
type: "radio"
|
13
|
+
}, props));
|
14
|
+
};
|
15
|
+
|
16
|
+
RadioInput.displayName = "RadioInput";
|
17
|
+
|
18
|
+
// pulling out `id`, `disabled`, and `required` because those should come from the parent TextInputField component
|
19
|
+
const Input = ({
|
20
|
+
id: idProp,
|
21
|
+
required: requiredProp,
|
22
|
+
disabled: disabledProp,
|
23
|
+
...rest
|
24
|
+
}) => {
|
25
|
+
if (idProp) {
|
26
|
+
// eslint-disable-next-line no-console
|
27
|
+
console.warn("instead of passing the 'id' prop directly to <TextInputField.Input>, it should be passed to the parent component, <TextInputField>");
|
28
|
+
}
|
29
|
+
|
30
|
+
if (disabledProp) {
|
31
|
+
// eslint-disable-next-line no-console
|
32
|
+
console.warn("instead of passing the 'disabled' prop directly to <TextInputField.Input>, it should be passed to the parent component, <TextInputField>");
|
33
|
+
}
|
34
|
+
|
35
|
+
if (requiredProp) {
|
36
|
+
// eslint-disable-next-line no-console
|
37
|
+
console.warn("instead of passing the 'required' prop directly to <TextInputField.Input>, it should be passed to the parent component, <TextInputField>");
|
38
|
+
}
|
39
|
+
|
40
|
+
return /*#__PURE__*/React.createElement(Slot, {
|
41
|
+
name: "Input"
|
42
|
+
}, ({
|
43
|
+
disabled,
|
44
|
+
id,
|
45
|
+
required,
|
46
|
+
captionId
|
47
|
+
}) => /*#__PURE__*/React.createElement(RadioInput, _extends({
|
48
|
+
"aria-describedby": captionId,
|
49
|
+
id: id,
|
50
|
+
required: required,
|
51
|
+
disabled: disabled
|
52
|
+
}, rest)));
|
53
|
+
};
|
54
|
+
|
55
|
+
Input.displayName = "Input";
|
56
|
+
|
57
|
+
const RadioInputField = props => /*#__PURE__*/React.createElement(ToggleInputField, props);
|
58
|
+
|
59
|
+
RadioInputField.displayName = "RadioInputField";
|
60
|
+
export default Object.assign(RadioInputField, {
|
61
|
+
Input,
|
62
|
+
Caption: InputField.Caption,
|
63
|
+
Label: InputField.Label,
|
64
|
+
LeadingVisual: ToggleInputLeadingVisual
|
65
|
+
});
|