@primer/components 0.0.0-202111321290 → 0.0.0-2021113214714

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 (81) hide show
  1. package/dist/browser.esm.js +2 -2
  2. package/dist/browser.esm.js.map +1 -1
  3. package/dist/browser.umd.js +2 -2
  4. package/dist/browser.umd.js.map +1 -1
  5. package/lib/Autocomplete/AutocompleteMenu.js +13 -6
  6. package/lib/Checkbox.d.ts +1 -1
  7. package/lib/index.d.ts +0 -3
  8. package/lib/index.js +0 -24
  9. package/lib-esm/Autocomplete/AutocompleteMenu.js +13 -3
  10. package/lib-esm/Checkbox.d.ts +1 -1
  11. package/lib-esm/index.d.ts +0 -3
  12. package/lib-esm/index.js +0 -3
  13. package/package.json +2 -2
  14. package/lib/CheckboxInputField.d.ts +0 -10
  15. package/lib/CheckboxInputField.js +0 -73
  16. package/lib/RadioInputField.d.ts +0 -8
  17. package/lib/RadioInputField.js +0 -82
  18. package/lib/TextInputField.d.ts +0 -583
  19. package/lib/TextInputField.js +0 -66
  20. package/lib/_InputCaption.d.ts +0 -13
  21. package/lib/_InputCaption.js +0 -26
  22. package/lib/_InputField/InputField.d.ts +0 -39
  23. package/lib/_InputField/InputField.js +0 -90
  24. package/lib/_InputField/InputFieldCaption.d.ts +0 -3
  25. package/lib/_InputField/InputFieldCaption.js +0 -30
  26. package/lib/_InputField/InputFieldLabel.d.ts +0 -9
  27. package/lib/_InputField/InputFieldLabel.js +0 -34
  28. package/lib/_InputField/InputFieldValidation.d.ts +0 -6
  29. package/lib/_InputField/InputFieldValidation.js +0 -17
  30. package/lib/_InputField/ToggleInputField.d.ts +0 -13
  31. package/lib/_InputField/ToggleInputField.js +0 -71
  32. package/lib/_InputField/ToggleInputLeadingVisual.d.ts +0 -3
  33. package/lib/_InputField/ToggleInputLeadingVisual.js +0 -22
  34. package/lib/_InputField/ValidationAnimationContainer.d.ts +0 -6
  35. package/lib/_InputField/ValidationAnimationContainer.js +0 -48
  36. package/lib/_InputField/index.d.ts +0 -1
  37. package/lib/_InputField/index.js +0 -15
  38. package/lib/_InputField/slots.d.ts +0 -13
  39. package/lib/_InputField/slots.js +0 -17
  40. package/lib/_InputLabel.d.ts +0 -8
  41. package/lib/_InputLabel.js +0 -44
  42. package/lib/_InputValidation.d.ts +0 -8
  43. package/lib/_InputValidation.js +0 -56
  44. package/lib/_VisuallyHidden.d.ts +0 -6
  45. package/lib/_VisuallyHidden.js +0 -39
  46. package/lib/utils/types/FormValidationStatus.d.ts +0 -1
  47. package/lib/utils/types/FormValidationStatus.js +0 -1
  48. package/lib-esm/CheckboxInputField.d.ts +0 -10
  49. package/lib-esm/CheckboxInputField.js +0 -56
  50. package/lib-esm/RadioInputField.d.ts +0 -8
  51. package/lib-esm/RadioInputField.js +0 -65
  52. package/lib-esm/TextInputField.d.ts +0 -583
  53. package/lib-esm/TextInputField.js +0 -50
  54. package/lib-esm/_InputCaption.d.ts +0 -13
  55. package/lib-esm/_InputCaption.js +0 -15
  56. package/lib-esm/_InputField/InputField.d.ts +0 -39
  57. package/lib-esm/_InputField/InputField.js +0 -70
  58. package/lib-esm/_InputField/InputFieldCaption.d.ts +0 -3
  59. package/lib-esm/_InputField/InputFieldCaption.js +0 -18
  60. package/lib-esm/_InputField/InputFieldLabel.d.ts +0 -9
  61. package/lib-esm/_InputField/InputFieldLabel.js +0 -22
  62. package/lib-esm/_InputField/InputFieldValidation.d.ts +0 -6
  63. package/lib-esm/_InputField/InputFieldValidation.js +0 -7
  64. package/lib-esm/_InputField/ToggleInputField.d.ts +0 -13
  65. package/lib-esm/_InputField/ToggleInputField.js +0 -54
  66. package/lib-esm/_InputField/ToggleInputLeadingVisual.d.ts +0 -3
  67. package/lib-esm/_InputField/ToggleInputLeadingVisual.js +0 -11
  68. package/lib-esm/_InputField/ValidationAnimationContainer.d.ts +0 -6
  69. package/lib-esm/_InputField/ValidationAnimationContainer.js +0 -33
  70. package/lib-esm/_InputField/index.d.ts +0 -1
  71. package/lib-esm/_InputField/index.js +0 -1
  72. package/lib-esm/_InputField/slots.d.ts +0 -13
  73. package/lib-esm/_InputField/slots.js +0 -5
  74. package/lib-esm/_InputLabel.d.ts +0 -8
  75. package/lib-esm/_InputLabel.js +0 -32
  76. package/lib-esm/_InputValidation.d.ts +0 -8
  77. package/lib-esm/_InputValidation.js +0 -43
  78. package/lib-esm/_VisuallyHidden.d.ts +0 -6
  79. package/lib-esm/_VisuallyHidden.js +0 -26
  80. package/lib-esm/utils/types/FormValidationStatus.d.ts +0 -1
  81. package/lib-esm/utils/types/FormValidationStatus.js +0 -1
@@ -1,13 +0,0 @@
1
- import React from 'react';
2
- interface Props {
3
- /**
4
- * The unique identifier used to associate the caption with an input
5
- */
6
- id: string;
7
- /**
8
- * Whether the input associated with this caption is disabled
9
- */
10
- disabled?: boolean;
11
- }
12
- declare const InputCaption: React.FC<Props>;
13
- export default InputCaption;
@@ -1,15 +0,0 @@
1
- import React from 'react';
2
- import { Text } from '.';
3
-
4
- const InputCaption = ({
5
- children,
6
- disabled,
7
- id
8
- }) => /*#__PURE__*/React.createElement(Text, {
9
- color: disabled ? 'fg.subtle' : 'fg.muted',
10
- fontSize: 0,
11
- id: id
12
- }, children);
13
-
14
- InputCaption.displayName = "InputCaption";
15
- export default InputCaption;
@@ -1,39 +0,0 @@
1
- import React from 'react';
2
- import { ComponentProps } from '../utils/types';
3
- import { FormValidationStatus } from '../utils/types/FormValidationStatus';
4
- export interface Props<T = Record<string, FormValidationStatus>> {
5
- children?: React.ReactNode;
6
- /**
7
- * Whether the field is ready for user input
8
- */
9
- disabled?: boolean;
10
- /**
11
- * The unique identifier for this field. Used to associate the label, validation text, and caption text
12
- */
13
- id?: string;
14
- /**
15
- * Whether this field must have a value for the user to complete their task
16
- */
17
- required?: boolean;
18
- /**
19
- * A map of validation statuses and their associated validation keys. When one of the validation keys is passed to the `validationResult` prop,
20
- * the associated validation message will be rendered in the correct style
21
- */
22
- validationMap?: T;
23
- /**
24
- * The key of the validation message to show
25
- */
26
- validationResult?: keyof T;
27
- }
28
- export interface InputFieldContext extends Pick<Props<Record<string, FormValidationStatus>>, 'disabled' | 'id' | 'required'> {
29
- captionId: string;
30
- validationMessageId: string;
31
- }
32
- declare const InputField: <T extends Record<string, FormValidationStatus>>({ children, disabled, id: idProp, required, validationMap, validationResult }: Props<T>) => JSX.Element;
33
- export declare type InputFieldComponentProps = ComponentProps<typeof InputField>;
34
- declare const _default: (<T extends Record<string, FormValidationStatus>>({ children, disabled, id: idProp, required, validationMap, validationResult }: Props<T>) => JSX.Element) & {
35
- Caption: React.FC<{}>;
36
- Label: React.FC<import("./InputFieldLabel").Props>;
37
- Validation: React.FC<import("./InputFieldValidation").InputFieldValidationProps>;
38
- };
39
- export default _default;
@@ -1,70 +0,0 @@
1
- import React from 'react';
2
- import { Box } from '..';
3
- import InputValidation from '../_InputValidation';
4
- import { uniqueId } from '../utils/uniqueId';
5
- import InputFieldCaption from './InputFieldCaption';
6
- import InputFieldLabel from './InputFieldLabel';
7
- import InputFieldValidation from './InputFieldValidation';
8
- import { Slots } from './slots';
9
- import ValidationAnimationContainer from './ValidationAnimationContainer';
10
-
11
- const InputField = ({
12
- children,
13
- disabled,
14
- id: idProp,
15
- required,
16
- validationMap,
17
- validationResult
18
- }) => {
19
- var _React$Children$map, _React$Children$map2;
20
-
21
- const id = idProp || uniqueId();
22
- const validationChildren = (_React$Children$map = React.Children.map(children, child => /*#__PURE__*/React.isValidElement(child) && child.type === InputFieldValidation ? child : null)) === null || _React$Children$map === void 0 ? void 0 : _React$Children$map.filter(Boolean);
23
- const captionChildren = (_React$Children$map2 = React.Children.map(children, child => /*#__PURE__*/React.isValidElement(child) && child.type === InputFieldCaption ? child : null)) === null || _React$Children$map2 === void 0 ? void 0 : _React$Children$map2.filter(Boolean);
24
- const validationChildToRender = validationChildren === null || validationChildren === void 0 ? void 0 : validationChildren.find(child => child.props.validationKey === validationResult);
25
- const validationMessageId = validationChildToRender ? `${id}-validationMsg` : undefined;
26
- const captionId = captionChildren !== null && captionChildren !== void 0 && captionChildren.length ? `${id}-caption` : undefined;
27
- return /*#__PURE__*/React.createElement(Slots, {
28
- context: {
29
- captionId,
30
- disabled,
31
- id,
32
- required,
33
- validationMessageId
34
- }
35
- }, slots => {
36
- const isLabelHidden = /*#__PURE__*/React.isValidElement(slots.Label) && slots.Label.props.visuallyHidden;
37
-
38
- if (slots.Input && !slots.Label) {
39
- // eslint-disable-next-line no-console
40
- console.error(`The input field with the id ${id} MUST have a Label child (e.g.: <TextInputField.Label>).\n\nIf you want to hide the label, pass the 'visuallyHidden' prop to the Label component.`);
41
- }
42
-
43
- return /*#__PURE__*/React.createElement(Box, {
44
- display: "flex",
45
- flexDirection: "column",
46
- width: "100%",
47
- sx: isLabelHidden ? {
48
- '> *:not(label) + *': {
49
- marginTop: 2
50
- }
51
- } : {
52
- '> * + *': {
53
- marginTop: 2
54
- }
55
- }
56
- }, React.Children.toArray(children).filter(child => /*#__PURE__*/React.isValidElement(child) && child.type !== InputFieldValidation), slots.Label, slots.Input, validationChildToRender && validationMap && validationResult && validationMessageId && /*#__PURE__*/React.createElement(ValidationAnimationContainer, {
57
- show: true
58
- }, /*#__PURE__*/React.createElement(InputValidation, {
59
- validationStatus: validationMap[validationResult],
60
- id: validationMessageId
61
- }, validationChildToRender)), slots.Caption);
62
- });
63
- };
64
-
65
- InputField.displayName = "InputField";
66
- export default Object.assign(InputField, {
67
- Caption: InputFieldCaption,
68
- Label: InputFieldLabel,
69
- Validation: InputFieldValidation
70
- });
@@ -1,3 +0,0 @@
1
- import React from 'react';
2
- declare const InputFieldCaption: React.FC;
3
- export default InputFieldCaption;
@@ -1,18 +0,0 @@
1
- import React from 'react';
2
- import InputCaption from '../_InputCaption';
3
- import { Slot } from './slots';
4
-
5
- const InputFieldCaption = ({
6
- children
7
- }) => /*#__PURE__*/React.createElement(Slot, {
8
- name: "Caption"
9
- }, ({
10
- captionId,
11
- disabled
12
- }) => /*#__PURE__*/React.createElement(InputCaption, {
13
- id: captionId,
14
- disabled: disabled
15
- }, children));
16
-
17
- InputFieldCaption.displayName = "InputFieldCaption";
18
- export default InputFieldCaption;
@@ -1,9 +0,0 @@
1
- import React from 'react';
2
- export interface Props {
3
- /**
4
- * Whether the label should be visually hidden
5
- */
6
- visuallyHidden?: boolean;
7
- }
8
- declare const InputFieldLabel: React.FC<Props>;
9
- export default InputFieldLabel;
@@ -1,22 +0,0 @@
1
- import React from 'react';
2
- import InputLabel from '../_InputLabel';
3
- import { Slot } from './slots';
4
-
5
- const InputFieldLabel = ({
6
- children,
7
- visuallyHidden
8
- }) => /*#__PURE__*/React.createElement(Slot, {
9
- name: "Label"
10
- }, ({
11
- disabled,
12
- id,
13
- required
14
- }) => /*#__PURE__*/React.createElement(InputLabel, {
15
- htmlFor: id,
16
- visuallyHidden: visuallyHidden,
17
- required: required,
18
- disabled: disabled
19
- }, children));
20
-
21
- InputFieldLabel.displayName = "InputFieldLabel";
22
- export default InputFieldLabel;
@@ -1,6 +0,0 @@
1
- import React from 'react';
2
- export interface InputFieldValidationProps {
3
- validationKey: string;
4
- }
5
- declare const InputFieldValidation: React.FC<InputFieldValidationProps>;
6
- export default InputFieldValidation;
@@ -1,7 +0,0 @@
1
- import React from 'react';
2
-
3
- const InputFieldValidation = ({
4
- children
5
- }) => /*#__PURE__*/React.createElement(React.Fragment, null, children);
6
-
7
- export default InputFieldValidation;
@@ -1,13 +0,0 @@
1
- import React from 'react';
2
- import { Props as InputFieldProps } from './InputField';
3
- import { FormValidationStatus } from '../utils/types/FormValidationStatus';
4
- export interface Props extends Pick<InputFieldProps, 'disabled' | 'id'> {
5
- /**
6
- * Styles the field to visually communicate the result of form validation
7
- */
8
- validationStatus?: FormValidationStatus;
9
- }
10
- declare const _default: React.FC<Props> & {
11
- LeadingVisual: React.FC<{}>;
12
- };
13
- export default _default;
@@ -1,54 +0,0 @@
1
- import React from 'react';
2
- import { Box } from '..';
3
- import { get } from '../constants';
4
- import { uniqueId } from '../utils/uniqueId';
5
- import { Slots } from './slots';
6
- import ToggleInputLeadingVisual from './ToggleInputLeadingVisual';
7
-
8
- const ToggleInputField = ({
9
- children,
10
- disabled,
11
- id,
12
- validationStatus
13
- }) => {
14
- const fieldId = id || uniqueId();
15
- return /*#__PURE__*/React.createElement(Slots, {
16
- context: {
17
- captionId: `${id}-caption`,
18
- disabled,
19
- id: fieldId,
20
- validationStatus
21
- }
22
- }, slots => {
23
- return /*#__PURE__*/React.createElement(Box, {
24
- display: "flex",
25
- alignItems: slots.LeadingVisual ? 'center' : undefined
26
- }, children, /*#__PURE__*/React.createElement(Box, {
27
- sx: {
28
- '> input': {
29
- marginLeft: 0,
30
- marginRight: 0
31
- }
32
- }
33
- }, slots.Input), slots.LeadingVisual && /*#__PURE__*/React.createElement(Box, {
34
- color: disabled ? 'fg.muted' : 'fg.default',
35
- sx: {
36
- '> *': {
37
- minWidth: slots.Caption ? get('fontSizes.4') : get('fontSizes.2'),
38
- minHeight: slots.Caption ? get('fontSizes.4') : get('fontSizes.2'),
39
- fill: 'currentColor'
40
- }
41
- },
42
- ml: 2
43
- }, slots.LeadingVisual), /*#__PURE__*/React.isValidElement(slots.Label) && !slots.Label.props.visuallyHidden || slots.Caption ? /*#__PURE__*/React.createElement(Box, {
44
- display: "flex",
45
- flexDirection: "column",
46
- ml: 2
47
- }, slots.Label, slots.Caption) : /*#__PURE__*/React.createElement(React.Fragment, null, slots.Label, slots.Caption));
48
- });
49
- };
50
-
51
- ToggleInputField.displayName = "ToggleInputField";
52
- export default Object.assign(ToggleInputField, {
53
- LeadingVisual: ToggleInputLeadingVisual
54
- });
@@ -1,3 +0,0 @@
1
- import React from 'react';
2
- declare const ToggleInputLeadingVisual: React.FC;
3
- export default ToggleInputLeadingVisual;
@@ -1,11 +0,0 @@
1
- import React from 'react';
2
- import { Slot } from './slots';
3
-
4
- const ToggleInputLeadingVisual = ({
5
- children
6
- }) => /*#__PURE__*/React.createElement(Slot, {
7
- name: "LeadingVisual"
8
- }, children);
9
-
10
- ToggleInputLeadingVisual.displayName = "ToggleInputLeadingVisual";
11
- export default ToggleInputLeadingVisual;
@@ -1,6 +0,0 @@
1
- import React from 'react';
2
- interface Props {
3
- show?: boolean;
4
- }
5
- declare const ValidationAnimationContainer: React.FC<Props>;
6
- export default ValidationAnimationContainer;
@@ -1,33 +0,0 @@
1
- import React, { useEffect, useState } from 'react';
2
- import styled, { keyframes, css } from 'styled-components';
3
- import { Box } from '..';
4
- const fadeIn = keyframes(["0%{opacity:0;transform:translateY(-100%);}100%{opacity:1;transform:translateY(0);}"]); // using easeOutQuint easing fn https://easings.net/#easeOutQuint
5
-
6
- const AnimatedElement = styled.div.withConfig({
7
- displayName: "ValidationAnimationContainer__AnimatedElement",
8
- componentId: "sc-1grmoaz-0"
9
- })(["animation:", ";"], props => props.show && css(["170ms ", " cubic-bezier(0.44,0.74,0.36,1);"], fadeIn));
10
-
11
- const ValidationAnimationContainer = ({
12
- show,
13
- children
14
- }) => {
15
- const [shouldRender, setRender] = useState(show);
16
- useEffect(() => {
17
- if (show) setRender(true);
18
- }, [show]);
19
-
20
- const onAnimationEnd = () => {
21
- if (!show) setRender(false);
22
- };
23
-
24
- return shouldRender ? /*#__PURE__*/React.createElement(Box, {
25
- height: show ? 'auto' : 0,
26
- overflow: "hidden"
27
- }, /*#__PURE__*/React.createElement(AnimatedElement, {
28
- show: show,
29
- onAnimationEnd: onAnimationEnd
30
- }, children)) : null;
31
- };
32
-
33
- export default ValidationAnimationContainer;
@@ -1 +0,0 @@
1
- export { default } from './InputField';
@@ -1 +0,0 @@
1
- export { default } from './InputField';
@@ -1,13 +0,0 @@
1
- /// <reference types="react" />
2
- export declare const Slots: import("react").FC<{
3
- context?: Record<string, unknown> | undefined;
4
- children: (slots: {
5
- LeadingVisual?: import("react").ReactNode;
6
- Caption?: import("react").ReactNode;
7
- Input?: import("react").ReactNode;
8
- Label?: import("react").ReactNode;
9
- }) => import("react").ReactNode;
10
- }>, Slot: import("react").FC<{
11
- name: "LeadingVisual" | "Caption" | "Input" | "Label";
12
- children: import("react").ReactNode;
13
- }>;
@@ -1,5 +0,0 @@
1
- import createSlots from '../utils/create-slots';
2
- export const {
3
- Slots,
4
- Slot
5
- } = createSlots(['Caption', 'Input', 'Label', 'LeadingVisual']);
@@ -1,8 +0,0 @@
1
- import React from 'react';
2
- interface Props extends React.HTMLProps<HTMLLabelElement> {
3
- disabled?: boolean;
4
- required?: boolean;
5
- visuallyHidden?: boolean;
6
- }
7
- declare const InputLabel: React.FC<Props>;
8
- export default InputLabel;
@@ -1,32 +0,0 @@
1
- import React from 'react';
2
- import { Box } from '.';
3
- import VisuallyHidden from './_VisuallyHidden';
4
-
5
- const InputLabel = ({
6
- children,
7
- disabled,
8
- required,
9
- visuallyHidden,
10
- htmlFor
11
- }) => {
12
- return /*#__PURE__*/React.createElement(VisuallyHidden, {
13
- isVisible: !visuallyHidden,
14
- as: "label",
15
- htmlFor: htmlFor,
16
- title: required ? 'required field' : undefined,
17
- sx: {
18
- fontWeight: 'bold',
19
- fontSize: 1,
20
- display: 'block',
21
- color: disabled ? 'fg.muted' : 'fg.default'
22
- }
23
- }, required ? /*#__PURE__*/React.createElement(Box, {
24
- display: "flex",
25
- as: "span"
26
- }, /*#__PURE__*/React.createElement(Box, {
27
- mr: 1
28
- }, children), /*#__PURE__*/React.createElement("span", null, "*")) : children);
29
- };
30
-
31
- InputLabel.displayName = "InputLabel";
32
- export default InputLabel;
@@ -1,8 +0,0 @@
1
- import React from 'react';
2
- import { FormValidationStatus } from './utils/types/FormValidationStatus';
3
- interface Props {
4
- id: string;
5
- validationStatus?: FormValidationStatus;
6
- }
7
- declare const InputValidation: React.FC<Props>;
8
- export default InputValidation;
@@ -1,43 +0,0 @@
1
- import { AlertFillIcon, CheckCircleFillIcon } from '@primer/octicons-react';
2
- import React from 'react';
3
- import { Box, Text } from '.';
4
- const validationIconMap = {
5
- success: CheckCircleFillIcon,
6
- error: AlertFillIcon
7
- };
8
- const validationColorMap = {
9
- success: 'success.fg',
10
- error: 'danger.fg'
11
- };
12
-
13
- const InputValidation = ({
14
- children,
15
- id,
16
- validationStatus
17
- }) => {
18
- const IconComponent = validationStatus ? validationIconMap[validationStatus] : undefined;
19
- const fgColor = validationStatus ? validationColorMap[validationStatus] : undefined;
20
- return /*#__PURE__*/React.createElement(Text, {
21
- display: "flex",
22
- color: fgColor,
23
- fontSize: 0,
24
- sx: {
25
- alignItems: 'baseline',
26
- a: {
27
- color: 'currentColor',
28
- textDecoration: 'underline'
29
- }
30
- }
31
- }, IconComponent && /*#__PURE__*/React.createElement(Box, {
32
- as: "span",
33
- mr: 1
34
- }, /*#__PURE__*/React.createElement(IconComponent, {
35
- size: 12,
36
- fill: "currentColor"
37
- })), /*#__PURE__*/React.createElement("span", {
38
- id: id
39
- }, children));
40
- };
41
-
42
- InputValidation.displayName = "InputValidation";
43
- export default InputValidation;
@@ -1,6 +0,0 @@
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;
@@ -1,26 +0,0 @@
1
- import styled from 'styled-components';
2
- import sx from './sx';
3
- const VisuallyHidden = styled.span.withConfig({
4
- displayName: "_VisuallyHidden__VisuallyHidden",
5
- componentId: "sc-1k15c4h-0"
6
- })(["", ""], props => {
7
- if (props.isVisible) {
8
- return sx;
9
- }
10
-
11
- return `
12
- position: absolute;
13
- width: 1px;
14
- height: 1px;
15
- padding: 0;
16
- margin: -1px;
17
- overflow: hidden;
18
- clip: rect(0, 0, 0, 0);
19
- white-space: nowrap;
20
- border-width: 0;
21
- `;
22
- });
23
- VisuallyHidden.defaultProps = {
24
- isVisible: true
25
- };
26
- export default VisuallyHidden;
@@ -1 +0,0 @@
1
- export declare type FormValidationStatus = 'error' | 'success';
@@ -1 +0,0 @@
1
- export {};