@primer/components 0.0.0-20211030161952 → 0.0.0-20211030163410

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 (82) hide show
  1. package/CHANGELOG.md +5 -1
  2. package/dist/browser.esm.js +585 -581
  3. package/dist/browser.esm.js.map +1 -1
  4. package/dist/browser.umd.js +203 -199
  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 +74 -0
  10. package/lib/RadioInputField.d.ts +9 -0
  11. package/lib/RadioInputField.js +83 -0
  12. package/lib/TextInputField.d.ts +581 -0
  13. package/lib/TextInputField.js +66 -0
  14. package/lib/_InputCaption.d.ts +6 -0
  15. package/lib/_InputCaption.js +23 -0
  16. package/lib/_InputField/InputField.d.ts +39 -0
  17. package/lib/_InputField/InputField.js +90 -0
  18. package/lib/_InputField/InputFieldCaption.d.ts +3 -0
  19. package/lib/_InputField/InputFieldCaption.js +28 -0
  20. package/lib/_InputField/InputFieldLabel.d.ts +9 -0
  21. package/lib/_InputField/InputFieldLabel.js +34 -0
  22. package/lib/_InputField/InputFieldValidation.d.ts +6 -0
  23. package/lib/_InputField/InputFieldValidation.js +17 -0
  24. package/lib/_InputField/ToggleInputField.d.ts +13 -0
  25. package/lib/_InputField/ToggleInputField.js +71 -0
  26. package/lib/_InputField/ToggleInputLeadingVisual.d.ts +3 -0
  27. package/lib/_InputField/ToggleInputLeadingVisual.js +22 -0
  28. package/lib/_InputField/ValidationAnimationContainer.d.ts +6 -0
  29. package/lib/_InputField/ValidationAnimationContainer.js +48 -0
  30. package/lib/_InputField/index.d.ts +1 -0
  31. package/lib/_InputField/index.js +15 -0
  32. package/lib/_InputField/slots.d.ts +13 -0
  33. package/lib/_InputField/slots.js +17 -0
  34. package/lib/_InputLabel.d.ts +8 -0
  35. package/lib/_InputLabel.js +44 -0
  36. package/lib/_InputValidation.d.ts +8 -0
  37. package/lib/_InputValidation.js +56 -0
  38. package/lib/_VisuallyHidden.d.ts +6 -0
  39. package/lib/_VisuallyHidden.js +39 -0
  40. package/lib/index.d.ts +3 -0
  41. package/lib/index.js +24 -0
  42. package/lib/utils/types/FormValidationStatus.d.ts +1 -0
  43. package/lib/utils/types/FormValidationStatus.js +1 -0
  44. package/lib-esm/Autocomplete/AutocompleteMenu.js +3 -13
  45. package/lib-esm/Checkbox.d.ts +1 -1
  46. package/lib-esm/CheckboxInputField.d.ts +11 -0
  47. package/lib-esm/CheckboxInputField.js +57 -0
  48. package/lib-esm/RadioInputField.d.ts +9 -0
  49. package/lib-esm/RadioInputField.js +66 -0
  50. package/lib-esm/TextInputField.d.ts +581 -0
  51. package/lib-esm/TextInputField.js +50 -0
  52. package/lib-esm/_InputCaption.d.ts +6 -0
  53. package/lib-esm/_InputCaption.js +12 -0
  54. package/lib-esm/_InputField/InputField.d.ts +39 -0
  55. package/lib-esm/_InputField/InputField.js +70 -0
  56. package/lib-esm/_InputField/InputFieldCaption.d.ts +3 -0
  57. package/lib-esm/_InputField/InputFieldCaption.js +16 -0
  58. package/lib-esm/_InputField/InputFieldLabel.d.ts +9 -0
  59. package/lib-esm/_InputField/InputFieldLabel.js +22 -0
  60. package/lib-esm/_InputField/InputFieldValidation.d.ts +6 -0
  61. package/lib-esm/_InputField/InputFieldValidation.js +7 -0
  62. package/lib-esm/_InputField/ToggleInputField.d.ts +13 -0
  63. package/lib-esm/_InputField/ToggleInputField.js +54 -0
  64. package/lib-esm/_InputField/ToggleInputLeadingVisual.d.ts +3 -0
  65. package/lib-esm/_InputField/ToggleInputLeadingVisual.js +11 -0
  66. package/lib-esm/_InputField/ValidationAnimationContainer.d.ts +6 -0
  67. package/lib-esm/_InputField/ValidationAnimationContainer.js +33 -0
  68. package/lib-esm/_InputField/index.d.ts +1 -0
  69. package/lib-esm/_InputField/index.js +1 -0
  70. package/lib-esm/_InputField/slots.d.ts +13 -0
  71. package/lib-esm/_InputField/slots.js +5 -0
  72. package/lib-esm/_InputLabel.d.ts +8 -0
  73. package/lib-esm/_InputLabel.js +32 -0
  74. package/lib-esm/_InputValidation.d.ts +8 -0
  75. package/lib-esm/_InputValidation.js +43 -0
  76. package/lib-esm/_VisuallyHidden.d.ts +6 -0
  77. package/lib-esm/_VisuallyHidden.js +26 -0
  78. package/lib-esm/index.d.ts +3 -0
  79. package/lib-esm/index.js +3 -0
  80. package/lib-esm/utils/types/FormValidationStatus.d.ts +1 -0
  81. package/lib-esm/utils/types/FormValidationStatus.js +1 -0
  82. 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,6 @@
1
+ import { SxProp } from './sx';
2
+ interface Props {
3
+ isVisible?: boolean;
4
+ }
5
+ declare const VisuallyHidden: import("styled-components").StyledComponent<"span", any, Props & SxProp, never>;
6
+ export default VisuallyHidden;
@@ -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,7 @@ 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';
49
50
  export { default as CounterLabel } from './CounterLabel';
50
51
  export type { CounterLabelProps } from './CounterLabel';
51
52
  export { default as Details } from './Details';
@@ -86,6 +87,7 @@ export { default as Popover } from './Popover';
86
87
  export type { PopoverProps, PopoverContentProps } from './Popover';
87
88
  export { default as ProgressBar } from './ProgressBar';
88
89
  export type { ProgressBarProps } from './ProgressBar';
90
+ export { default as RadioInputField } from './RadioInputField';
89
91
  export { default as SelectMenu } from './SelectMenu';
90
92
  export type { SelectMenuProps, SelectMenuDividerProps, SelectMenuFilterProps, SelectMenuFooterProps, SelectMenuItemProps, SelectMenuListProps, SelectMenuModalProps, SelectMenuTabsProps, SelectMenuHeaderProps, SelectMenuTabProps, SelectMenuTabPanelProps, SelectMenuLoadingAnimationProps } from './SelectMenu';
91
93
  export { default as SideNav } from './SideNav';
@@ -102,6 +104,7 @@ export { default as TabNav } from './TabNav';
102
104
  export type { TabNavProps, TabNavLinkProps } from './TabNav';
103
105
  export { default as TextInput } from './TextInput';
104
106
  export type { TextInputProps } from './TextInput';
107
+ export { default as TextInputField } from './TextInputField';
105
108
  export { default as TextInputWithTokens } from './TextInputWithTokens';
106
109
  export type { TextInputWithTokensProps } from './TextInputWithTokens';
107
110
  export { default as Text } from './Text';
package/lib/index.js CHANGED
@@ -267,6 +267,12 @@ 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
+ });
270
276
  Object.defineProperty(exports, "CounterLabel", {
271
277
  enumerable: true,
272
278
  get: function () {
@@ -393,6 +399,12 @@ Object.defineProperty(exports, "ProgressBar", {
393
399
  return _ProgressBar.default;
394
400
  }
395
401
  });
402
+ Object.defineProperty(exports, "RadioInputField", {
403
+ enumerable: true,
404
+ get: function () {
405
+ return _RadioInputField.default;
406
+ }
407
+ });
396
408
  Object.defineProperty(exports, "SelectMenu", {
397
409
  enumerable: true,
398
410
  get: function () {
@@ -441,6 +453,12 @@ Object.defineProperty(exports, "TextInput", {
441
453
  return _TextInput.default;
442
454
  }
443
455
  });
456
+ Object.defineProperty(exports, "TextInputField", {
457
+ enumerable: true,
458
+ get: function () {
459
+ return _TextInputField.default;
460
+ }
461
+ });
444
462
  Object.defineProperty(exports, "TextInputWithTokens", {
445
463
  enumerable: true,
446
464
  get: function () {
@@ -572,6 +590,8 @@ var _CircleBadge = _interopRequireDefault(require("./CircleBadge"));
572
590
 
573
591
  var _CircleOcticon = _interopRequireDefault(require("./CircleOcticon"));
574
592
 
593
+ var _CheckboxInputField = _interopRequireDefault(require("./CheckboxInputField"));
594
+
575
595
  var _CounterLabel = _interopRequireDefault(require("./CounterLabel"));
576
596
 
577
597
  var _Details = _interopRequireDefault(require("./Details"));
@@ -612,6 +632,8 @@ var _Popover = _interopRequireDefault(require("./Popover"));
612
632
 
613
633
  var _ProgressBar = _interopRequireDefault(require("./ProgressBar"));
614
634
 
635
+ var _RadioInputField = _interopRequireDefault(require("./RadioInputField"));
636
+
615
637
  var _SelectMenu = _interopRequireDefault(require("./SelectMenu"));
616
638
 
617
639
  var _SideNav = _interopRequireDefault(require("./SideNav"));
@@ -628,6 +650,8 @@ var _TabNav = _interopRequireDefault(require("./TabNav"));
628
650
 
629
651
  var _TextInput = _interopRequireDefault(require("./TextInput"));
630
652
 
653
+ var _TextInputField = _interopRequireDefault(require("./TextInputField"));
654
+
631
655
  var _TextInputWithTokens = _interopRequireDefault(require("./TextInputWithTokens"));
632
656
 
633
657
  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(Box, {
168
- sx: !showMenu ? {
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",
@@ -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> | "indeterminate" | "validationStatus"> & React.RefAttributes<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
+ declare const _default: React.FC<import("./_InputField/ToggleInputField").Props> & {
3
+ Input: React.FC<Omit<React.HTMLProps<HTMLInputElement>, "ref"> & {
4
+ ref?: React.Ref<HTMLInputElement> | undefined;
5
+ }>;
6
+ Caption: React.FC<{}>;
7
+ Label: React.FC<import("./_InputField/InputFieldLabel").Props>;
8
+ Validation: React.FC<import("./_InputField/InputFieldValidation").InputFieldValidationProps>;
9
+ LeadingVisual: React.FC<{}>;
10
+ };
11
+ export default _default;
@@ -0,0 +1,57 @@
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
+ Validation: InputField.Validation,
56
+ LeadingVisual: ToggleInputLeadingVisual
57
+ });
@@ -0,0 +1,9 @@
1
+ import React from 'react';
2
+ declare const _default: React.FC<import("./_InputField/ToggleInputField").Props> & {
3
+ Input: React.FC<React.HTMLProps<HTMLInputElement>>;
4
+ Caption: React.FC<{}>;
5
+ Label: React.FC<import("./_InputField/InputFieldLabel").Props>;
6
+ Validation: React.FC<import("./_InputField/InputFieldValidation").InputFieldValidationProps>;
7
+ LeadingVisual: React.FC<{}>;
8
+ };
9
+ export default _default;
@@ -0,0 +1,66 @@
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
+ Validation: InputField.Validation,
65
+ LeadingVisual: ToggleInputLeadingVisual
66
+ });