@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.
Files changed (126) hide show
  1. package/CHANGELOG.md +5 -1
  2. package/dist/browser.esm.js +605 -591
  3. package/dist/browser.esm.js.map +1 -1
  4. package/dist/browser.umd.js +212 -198
  5. package/dist/browser.umd.js.map +1 -1
  6. package/lib/Autocomplete/AutocompleteMenu.js +6 -13
  7. package/lib/Checkbox.d.ts +1 -1
  8. package/lib/CheckboxInputField.d.ts +11 -0
  9. package/lib/CheckboxInputField.js +73 -0
  10. package/lib/ChoiceFieldset/ChoiceField.d.ts +22 -0
  11. package/lib/ChoiceFieldset/ChoiceField.js +58 -0
  12. package/lib/ChoiceFieldset/ChoiceFieldCaption.d.ts +3 -0
  13. package/lib/ChoiceFieldset/ChoiceFieldCaption.js +35 -0
  14. package/lib/ChoiceFieldset/ChoiceFieldInput.d.ts +13 -0
  15. package/lib/ChoiceFieldset/ChoiceFieldInput.js +43 -0
  16. package/lib/ChoiceFieldset/ChoiceFieldLabel.d.ts +3 -0
  17. package/lib/ChoiceFieldset/ChoiceFieldLabel.js +35 -0
  18. package/lib/ChoiceFieldset/ChoiceFieldset.d.ts +57 -0
  19. package/lib/ChoiceFieldset/ChoiceFieldset.js +95 -0
  20. package/lib/ChoiceFieldset/ChoiceFieldsetCaption.d.ts +3 -0
  21. package/lib/ChoiceFieldset/ChoiceFieldsetCaption.js +28 -0
  22. package/lib/ChoiceFieldset/ChoiceFieldsetLegend.d.ts +6 -0
  23. package/lib/ChoiceFieldset/ChoiceFieldsetLegend.js +41 -0
  24. package/lib/ChoiceFieldset/ChoiceFieldsetList.d.ts +6 -0
  25. package/lib/ChoiceFieldset/ChoiceFieldsetList.js +85 -0
  26. package/lib/ChoiceFieldset/ChoiceFieldsetListContext.d.ts +17 -0
  27. package/lib/ChoiceFieldset/ChoiceFieldsetListContext.js +15 -0
  28. package/lib/ChoiceFieldset/ChoiceFieldsetValidation.d.ts +6 -0
  29. package/lib/ChoiceFieldset/ChoiceFieldsetValidation.js +17 -0
  30. package/lib/ChoiceFieldset/index.d.ts +3 -0
  31. package/lib/ChoiceFieldset/index.js +23 -0
  32. package/lib/RadioInputField.d.ts +9 -0
  33. package/lib/RadioInputField.js +82 -0
  34. package/lib/TextInputField.d.ts +581 -0
  35. package/lib/TextInputField.js +66 -0
  36. package/lib/_InputCaption.d.ts +13 -0
  37. package/lib/_InputCaption.js +27 -0
  38. package/lib/_InputField/InputField.d.ts +39 -0
  39. package/lib/_InputField/InputField.js +90 -0
  40. package/lib/_InputField/InputFieldCaption.d.ts +3 -0
  41. package/lib/_InputField/InputFieldCaption.js +30 -0
  42. package/lib/_InputField/InputFieldLabel.d.ts +9 -0
  43. package/lib/_InputField/InputFieldLabel.js +34 -0
  44. package/lib/_InputField/InputFieldValidation.d.ts +6 -0
  45. package/lib/_InputField/InputFieldValidation.js +17 -0
  46. package/lib/_InputField/ToggleInputField.d.ts +13 -0
  47. package/lib/_InputField/ToggleInputField.js +71 -0
  48. package/lib/_InputField/ToggleInputLeadingVisual.d.ts +3 -0
  49. package/lib/_InputField/ToggleInputLeadingVisual.js +22 -0
  50. package/lib/_InputField/ValidationAnimationContainer.d.ts +6 -0
  51. package/lib/_InputField/ValidationAnimationContainer.js +48 -0
  52. package/lib/_InputField/index.d.ts +1 -0
  53. package/lib/_InputField/index.js +15 -0
  54. package/lib/_InputField/slots.d.ts +13 -0
  55. package/lib/_InputField/slots.js +17 -0
  56. package/lib/_InputLabel.d.ts +8 -0
  57. package/lib/_InputLabel.js +44 -0
  58. package/lib/_InputValidation.d.ts +8 -0
  59. package/lib/_InputValidation.js +56 -0
  60. package/lib/_VisuallyHidden.d.ts +6 -0
  61. package/lib/_VisuallyHidden.js +39 -0
  62. package/lib/index.d.ts +4 -0
  63. package/lib/index.js +38 -0
  64. package/lib/utils/types/FormValidationStatus.d.ts +1 -0
  65. package/lib/utils/types/FormValidationStatus.js +1 -0
  66. package/lib-esm/Autocomplete/AutocompleteMenu.js +3 -13
  67. package/lib-esm/Checkbox.d.ts +1 -1
  68. package/lib-esm/CheckboxInputField.d.ts +11 -0
  69. package/lib-esm/CheckboxInputField.js +56 -0
  70. package/lib-esm/ChoiceFieldset/ChoiceField.d.ts +22 -0
  71. package/lib-esm/ChoiceFieldset/ChoiceField.js +36 -0
  72. package/lib-esm/ChoiceFieldset/ChoiceFieldCaption.d.ts +3 -0
  73. package/lib-esm/ChoiceFieldset/ChoiceFieldCaption.js +20 -0
  74. package/lib-esm/ChoiceFieldset/ChoiceFieldInput.d.ts +13 -0
  75. package/lib-esm/ChoiceFieldset/ChoiceFieldInput.js +28 -0
  76. package/lib-esm/ChoiceFieldset/ChoiceFieldLabel.d.ts +3 -0
  77. package/lib-esm/ChoiceFieldset/ChoiceFieldLabel.js +20 -0
  78. package/lib-esm/ChoiceFieldset/ChoiceFieldset.d.ts +57 -0
  79. package/lib-esm/ChoiceFieldset/ChoiceFieldset.js +72 -0
  80. package/lib-esm/ChoiceFieldset/ChoiceFieldsetCaption.d.ts +3 -0
  81. package/lib-esm/ChoiceFieldset/ChoiceFieldsetCaption.js +16 -0
  82. package/lib-esm/ChoiceFieldset/ChoiceFieldsetLegend.d.ts +6 -0
  83. package/lib-esm/ChoiceFieldset/ChoiceFieldsetLegend.js +28 -0
  84. package/lib-esm/ChoiceFieldset/ChoiceFieldsetList.d.ts +6 -0
  85. package/lib-esm/ChoiceFieldset/ChoiceFieldsetList.js +68 -0
  86. package/lib-esm/ChoiceFieldset/ChoiceFieldsetListContext.d.ts +17 -0
  87. package/lib-esm/ChoiceFieldset/ChoiceFieldsetListContext.js +5 -0
  88. package/lib-esm/ChoiceFieldset/ChoiceFieldsetValidation.d.ts +6 -0
  89. package/lib-esm/ChoiceFieldset/ChoiceFieldsetValidation.js +7 -0
  90. package/lib-esm/ChoiceFieldset/index.d.ts +3 -0
  91. package/lib-esm/ChoiceFieldset/index.js +2 -0
  92. package/lib-esm/RadioInputField.d.ts +9 -0
  93. package/lib-esm/RadioInputField.js +65 -0
  94. package/lib-esm/TextInputField.d.ts +581 -0
  95. package/lib-esm/TextInputField.js +50 -0
  96. package/lib-esm/_InputCaption.d.ts +13 -0
  97. package/lib-esm/_InputCaption.js +16 -0
  98. package/lib-esm/_InputField/InputField.d.ts +39 -0
  99. package/lib-esm/_InputField/InputField.js +70 -0
  100. package/lib-esm/_InputField/InputFieldCaption.d.ts +3 -0
  101. package/lib-esm/_InputField/InputFieldCaption.js +18 -0
  102. package/lib-esm/_InputField/InputFieldLabel.d.ts +9 -0
  103. package/lib-esm/_InputField/InputFieldLabel.js +22 -0
  104. package/lib-esm/_InputField/InputFieldValidation.d.ts +6 -0
  105. package/lib-esm/_InputField/InputFieldValidation.js +7 -0
  106. package/lib-esm/_InputField/ToggleInputField.d.ts +13 -0
  107. package/lib-esm/_InputField/ToggleInputField.js +54 -0
  108. package/lib-esm/_InputField/ToggleInputLeadingVisual.d.ts +3 -0
  109. package/lib-esm/_InputField/ToggleInputLeadingVisual.js +11 -0
  110. package/lib-esm/_InputField/ValidationAnimationContainer.d.ts +6 -0
  111. package/lib-esm/_InputField/ValidationAnimationContainer.js +33 -0
  112. package/lib-esm/_InputField/index.d.ts +1 -0
  113. package/lib-esm/_InputField/index.js +1 -0
  114. package/lib-esm/_InputField/slots.d.ts +13 -0
  115. package/lib-esm/_InputField/slots.js +5 -0
  116. package/lib-esm/_InputLabel.d.ts +8 -0
  117. package/lib-esm/_InputLabel.js +32 -0
  118. package/lib-esm/_InputValidation.d.ts +8 -0
  119. package/lib-esm/_InputValidation.js +43 -0
  120. package/lib-esm/_VisuallyHidden.d.ts +6 -0
  121. package/lib-esm/_VisuallyHidden.js +26 -0
  122. package/lib-esm/index.d.ts +4 -0
  123. package/lib-esm/index.js +4 -0
  124. package/lib-esm/utils/types/FormValidationStatus.d.ts +1 -0
  125. package/lib-esm/utils/types/FormValidationStatus.js +1 -0
  126. package/package.json +2 -2
@@ -0,0 +1,6 @@
1
+ import React from 'react';
2
+ export interface ChoiceFieldsetListProps {
3
+ selectionVariant?: 'single' | 'multiple';
4
+ }
5
+ declare const ChoiceFieldsetList: React.FC<ChoiceFieldsetListProps>;
6
+ export default ChoiceFieldsetList;
@@ -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,5 @@
1
+ import { createContext } from 'react';
2
+ import { CheckboxInputField } from '..';
3
+ const ChoiceFieldsetListContext = /*#__PURE__*/createContext(null);
4
+ CheckboxInputField.Input;
5
+ export default ChoiceFieldsetListContext;
@@ -0,0 +1,6 @@
1
+ import React from 'react';
2
+ export interface ChoiceFieldsetValidationProps {
3
+ validationKey: string;
4
+ }
5
+ declare const ChoiceFieldsetValidation: React.FC<ChoiceFieldsetValidationProps>;
6
+ export default ChoiceFieldsetValidation;
@@ -0,0 +1,7 @@
1
+ import React from 'react';
2
+
3
+ const ChoiceFieldsetValidation = ({
4
+ children
5
+ }) => /*#__PURE__*/React.createElement(React.Fragment, null, children);
6
+
7
+ export default ChoiceFieldsetValidation;
@@ -0,0 +1,3 @@
1
+ export { default } from './ChoiceFieldset';
2
+ export { default as ChoiceField } from './ChoiceField';
3
+ export type { ChoiceFieldsetProps } from './ChoiceFieldset';
@@ -0,0 +1,2 @@
1
+ export { default } from './ChoiceFieldset';
2
+ export { default as ChoiceField } from './ChoiceField';
@@ -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
+ });