@primer/components 0.0.0-2021104155230 → 0.0.0-2021104181937

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 (158) hide show
  1. package/CHANGELOG.md +1 -3
  2. package/dist/browser.esm.js +474 -473
  3. package/dist/browser.esm.js.map +1 -1
  4. package/dist/browser.umd.js +98 -97
  5. package/dist/browser.umd.js.map +1 -1
  6. package/lib/AnchoredOverlay/AnchoredOverlay.d.ts +4 -2
  7. package/lib/Autocomplete/Autocomplete.d.ts +30 -28
  8. package/lib/Autocomplete/AutocompleteInput.d.ts +30 -28
  9. package/lib/Button/Button.d.ts +24 -24
  10. package/lib/Button/Button.js +1 -1
  11. package/lib/Button/ButtonClose.d.ts +43 -43
  12. package/lib/Button/ButtonDanger.d.ts +24 -24
  13. package/lib/Button/ButtonInvisible.d.ts +24 -24
  14. package/lib/Button/ButtonOutline.d.ts +24 -24
  15. package/lib/Button/ButtonPrimary.d.ts +24 -24
  16. package/lib/CircleOcticon.d.ts +40 -40
  17. package/lib/DatePicker/DatePicker.d.ts +52 -0
  18. package/lib/DatePicker/DatePicker.js +109 -0
  19. package/lib/DatePicker/DatePickerAnchor.d.ts +5 -0
  20. package/lib/DatePicker/DatePickerAnchor.js +202 -0
  21. package/lib/DatePicker/DatePickerOverlay.d.ts +3 -0
  22. package/lib/DatePicker/DatePickerOverlay.js +55 -0
  23. package/lib/DatePicker/DatePickerPanel.d.ts +2 -0
  24. package/lib/DatePicker/DatePickerPanel.js +363 -0
  25. package/lib/DatePicker/Day.d.ts +15 -0
  26. package/lib/DatePicker/Day.js +204 -0
  27. package/lib/DatePicker/Month.d.ts +8 -0
  28. package/lib/DatePicker/Month.js +122 -0
  29. package/lib/DatePicker/dateParser.d.ts +12 -0
  30. package/lib/DatePicker/dateParser.js +193 -0
  31. package/lib/DatePicker/index.d.ts +2 -0
  32. package/lib/DatePicker/index.js +13 -0
  33. package/lib/DatePicker/useDatePicker.d.ts +107 -0
  34. package/lib/DatePicker/useDatePicker.js +561 -0
  35. package/lib/Dialog.d.ts +43 -43
  36. package/lib/Dropdown.d.ts +168 -168
  37. package/lib/DropdownMenu/DropdownButton.d.ts +44 -44
  38. package/lib/FilterList.d.ts +40 -40
  39. package/lib/Position.d.ts +4 -4
  40. package/lib/SelectMenu/SelectMenu.d.ts +239 -237
  41. package/lib/SelectMenu/SelectMenuItem.d.ts +1 -1
  42. package/lib/SelectMenu/SelectMenuModal.d.ts +1 -1
  43. package/lib/TextInputWithTokens.d.ts +30 -28
  44. package/lib/Timeline.d.ts +41 -41
  45. package/lib/Token/AvatarToken.d.ts +1 -1
  46. package/lib/Token/IssueLabelToken.d.ts +1 -1
  47. package/lib/Token/Token.d.ts +1 -1
  48. package/lib/hooks/useDebounce.d.ts +2 -0
  49. package/lib/hooks/useDebounce.js +24 -0
  50. package/lib/hooks/useResizeObserver.d.ts +1 -1
  51. package/lib/hooks/useResizeObserver.js +1 -1
  52. package/lib/sx.d.ts +0 -2
  53. package/lib/sx.js +0 -8
  54. package/lib/theme-preval.js +0 -79
  55. package/lib/utils/testing.d.ts +0 -13
  56. package/lib-esm/AnchoredOverlay/AnchoredOverlay.d.ts +4 -2
  57. package/lib-esm/Autocomplete/Autocomplete.d.ts +30 -28
  58. package/lib-esm/Autocomplete/AutocompleteInput.d.ts +30 -28
  59. package/lib-esm/Button/Button.d.ts +24 -24
  60. package/lib-esm/Button/Button.js +1 -1
  61. package/lib-esm/Button/ButtonClose.d.ts +43 -43
  62. package/lib-esm/Button/ButtonDanger.d.ts +24 -24
  63. package/lib-esm/Button/ButtonInvisible.d.ts +24 -24
  64. package/lib-esm/Button/ButtonOutline.d.ts +24 -24
  65. package/lib-esm/Button/ButtonPrimary.d.ts +24 -24
  66. package/lib-esm/CircleOcticon.d.ts +40 -40
  67. package/lib-esm/DatePicker/DatePicker.d.ts +52 -0
  68. package/lib-esm/DatePicker/DatePicker.js +92 -0
  69. package/lib-esm/DatePicker/DatePickerAnchor.d.ts +5 -0
  70. package/lib-esm/DatePicker/DatePickerAnchor.js +174 -0
  71. package/lib-esm/DatePicker/DatePickerOverlay.d.ts +3 -0
  72. package/lib-esm/DatePicker/DatePickerOverlay.js +40 -0
  73. package/lib-esm/DatePicker/DatePickerPanel.d.ts +2 -0
  74. package/lib-esm/DatePicker/DatePickerPanel.js +332 -0
  75. package/lib-esm/DatePicker/Day.d.ts +15 -0
  76. package/lib-esm/DatePicker/Day.js +180 -0
  77. package/lib-esm/DatePicker/Month.d.ts +8 -0
  78. package/lib-esm/DatePicker/Month.js +98 -0
  79. package/lib-esm/DatePicker/dateParser.d.ts +12 -0
  80. package/lib-esm/DatePicker/dateParser.js +179 -0
  81. package/lib-esm/DatePicker/index.d.ts +2 -0
  82. package/lib-esm/DatePicker/index.js +1 -0
  83. package/lib-esm/DatePicker/useDatePicker.d.ts +107 -0
  84. package/lib-esm/DatePicker/useDatePicker.js +526 -0
  85. package/lib-esm/Dialog.d.ts +43 -43
  86. package/lib-esm/Dropdown.d.ts +168 -168
  87. package/lib-esm/DropdownMenu/DropdownButton.d.ts +44 -44
  88. package/lib-esm/FilterList.d.ts +40 -40
  89. package/lib-esm/Position.d.ts +4 -4
  90. package/lib-esm/SelectMenu/SelectMenu.d.ts +239 -237
  91. package/lib-esm/SelectMenu/SelectMenuItem.d.ts +1 -1
  92. package/lib-esm/SelectMenu/SelectMenuModal.d.ts +1 -1
  93. package/lib-esm/TextInputWithTokens.d.ts +30 -28
  94. package/lib-esm/Timeline.d.ts +41 -41
  95. package/lib-esm/Token/AvatarToken.d.ts +1 -1
  96. package/lib-esm/Token/IssueLabelToken.d.ts +1 -1
  97. package/lib-esm/Token/Token.d.ts +1 -1
  98. package/lib-esm/hooks/useDebounce.d.ts +2 -0
  99. package/lib-esm/hooks/useDebounce.js +16 -0
  100. package/lib-esm/hooks/useResizeObserver.d.ts +1 -1
  101. package/lib-esm/hooks/useResizeObserver.js +1 -1
  102. package/lib-esm/sx.d.ts +0 -2
  103. package/lib-esm/sx.js +1 -3
  104. package/lib-esm/theme-preval.js +0 -79
  105. package/lib-esm/utils/testing.d.ts +0 -13
  106. package/package.json +9 -10
  107. package/lib/ActionList2/Description.d.ts +0 -12
  108. package/lib/ActionList2/Description.js +0 -53
  109. package/lib/ActionList2/Divider.d.ts +0 -5
  110. package/lib/ActionList2/Divider.js +0 -35
  111. package/lib/ActionList2/Group.d.ts +0 -11
  112. package/lib/ActionList2/Group.js +0 -57
  113. package/lib/ActionList2/Header.d.ts +0 -26
  114. package/lib/ActionList2/Header.js +0 -55
  115. package/lib/ActionList2/Item.d.ts +0 -71
  116. package/lib/ActionList2/Item.js +0 -223
  117. package/lib/ActionList2/LinkItem.d.ts +0 -17
  118. package/lib/ActionList2/LinkItem.js +0 -57
  119. package/lib/ActionList2/List.d.ts +0 -26
  120. package/lib/ActionList2/List.js +0 -51
  121. package/lib/ActionList2/Selection.d.ts +0 -5
  122. package/lib/ActionList2/Selection.js +0 -70
  123. package/lib/ActionList2/Visuals.d.ts +0 -11
  124. package/lib/ActionList2/Visuals.js +0 -90
  125. package/lib/ActionList2/index.d.ts +0 -40
  126. package/lib/ActionList2/index.js +0 -47
  127. package/lib/experiments.d.ts +0 -1
  128. package/lib/experiments.js +0 -18
  129. package/lib/utils/create-slots.d.ts +0 -17
  130. package/lib/utils/create-slots.js +0 -105
  131. package/lib/utils/use-force-update.d.ts +0 -1
  132. package/lib/utils/use-force-update.js +0 -19
  133. package/lib-esm/ActionList2/Description.d.ts +0 -12
  134. package/lib-esm/ActionList2/Description.js +0 -37
  135. package/lib-esm/ActionList2/Divider.d.ts +0 -5
  136. package/lib-esm/ActionList2/Divider.js +0 -23
  137. package/lib-esm/ActionList2/Group.d.ts +0 -11
  138. package/lib-esm/ActionList2/Group.js +0 -40
  139. package/lib-esm/ActionList2/Header.d.ts +0 -26
  140. package/lib-esm/ActionList2/Header.js +0 -44
  141. package/lib-esm/ActionList2/Item.d.ts +0 -71
  142. package/lib-esm/ActionList2/Item.js +0 -197
  143. package/lib-esm/ActionList2/LinkItem.d.ts +0 -17
  144. package/lib-esm/ActionList2/LinkItem.js +0 -43
  145. package/lib-esm/ActionList2/List.d.ts +0 -26
  146. package/lib-esm/ActionList2/List.js +0 -34
  147. package/lib-esm/ActionList2/Selection.d.ts +0 -5
  148. package/lib-esm/ActionList2/Selection.js +0 -52
  149. package/lib-esm/ActionList2/Visuals.d.ts +0 -11
  150. package/lib-esm/ActionList2/Visuals.js +0 -68
  151. package/lib-esm/ActionList2/index.d.ts +0 -40
  152. package/lib-esm/ActionList2/index.js +0 -33
  153. package/lib-esm/experiments.d.ts +0 -1
  154. package/lib-esm/experiments.js +0 -2
  155. package/lib-esm/utils/create-slots.d.ts +0 -17
  156. package/lib-esm/utils/create-slots.js +0 -84
  157. package/lib-esm/utils/use-force-update.d.ts +0 -1
  158. package/lib-esm/utils/use-force-update.js +0 -6
@@ -25,14 +25,14 @@ export declare const ButtonPrimary: import("styled-components").StyledComponent<
25
25
  suppressHydrationWarning?: boolean | undefined;
26
26
  accessKey?: string | undefined;
27
27
  className?: string | undefined;
28
- contentEditable?: "inherit" | (boolean | "false" | "true") | undefined;
28
+ contentEditable?: "inherit" | (boolean | "true" | "false") | undefined;
29
29
  contextMenu?: string | undefined;
30
30
  dir?: string | undefined;
31
- draggable?: (boolean | "false" | "true") | undefined;
31
+ draggable?: (boolean | "true" | "false") | undefined;
32
32
  id?: string | undefined;
33
33
  lang?: string | undefined;
34
34
  placeholder?: string | undefined;
35
- spellCheck?: (boolean | "false" | "true") | undefined;
35
+ spellCheck?: (boolean | "true" | "false") | undefined;
36
36
  tabIndex?: number | undefined;
37
37
  radioGroup?: string | undefined;
38
38
  role?: import("react").AriaRole | undefined;
@@ -58,47 +58,47 @@ export declare const ButtonPrimary: import("styled-components").StyledComponent<
58
58
  inputMode?: "search" | "none" | "text" | "tel" | "url" | "email" | "numeric" | "decimal" | undefined;
59
59
  is?: string | undefined;
60
60
  'aria-activedescendant'?: string | undefined;
61
- 'aria-atomic'?: boolean | "false" | "true" | undefined;
62
- 'aria-autocomplete'?: "none" | "both" | "inline" | "list" | undefined;
63
- 'aria-busy'?: boolean | "false" | "true" | undefined;
64
- 'aria-checked'?: boolean | "mixed" | "false" | "true" | undefined;
61
+ 'aria-atomic'?: boolean | "true" | "false" | undefined;
62
+ 'aria-autocomplete'?: "none" | "list" | "inline" | "both" | undefined;
63
+ 'aria-busy'?: boolean | "true" | "false" | undefined;
64
+ 'aria-checked'?: boolean | "true" | "false" | "mixed" | undefined;
65
65
  'aria-colcount'?: number | undefined;
66
66
  'aria-colindex'?: number | undefined;
67
67
  'aria-colspan'?: number | undefined;
68
68
  'aria-controls'?: string | undefined;
69
- 'aria-current'?: boolean | "time" | "page" | "false" | "true" | "step" | "location" | "date" | undefined;
69
+ 'aria-current'?: boolean | "time" | "true" | "false" | "page" | "step" | "location" | "date" | undefined;
70
70
  'aria-describedby'?: string | undefined;
71
71
  'aria-details'?: string | undefined;
72
- 'aria-disabled'?: boolean | "false" | "true" | undefined;
73
- 'aria-dropeffect'?: "link" | "none" | "copy" | "move" | "execute" | "popup" | undefined;
72
+ 'aria-disabled'?: boolean | "true" | "false" | undefined;
73
+ 'aria-dropeffect'?: "link" | "none" | "copy" | "execute" | "move" | "popup" | undefined;
74
74
  'aria-errormessage'?: string | undefined;
75
- 'aria-expanded'?: boolean | "false" | "true" | undefined;
75
+ 'aria-expanded'?: boolean | "true" | "false" | undefined;
76
76
  'aria-flowto'?: string | undefined;
77
- 'aria-grabbed'?: boolean | "false" | "true" | undefined;
78
- 'aria-haspopup'?: boolean | "grid" | "dialog" | "menu" | "listbox" | "false" | "true" | "tree" | undefined;
79
- 'aria-hidden'?: boolean | "false" | "true" | undefined;
80
- 'aria-invalid'?: boolean | "false" | "true" | "grammar" | "spelling" | undefined;
77
+ 'aria-grabbed'?: boolean | "true" | "false" | undefined;
78
+ 'aria-haspopup'?: boolean | "grid" | "dialog" | "menu" | "listbox" | "tree" | "true" | "false" | undefined;
79
+ 'aria-hidden'?: boolean | "true" | "false" | undefined;
80
+ 'aria-invalid'?: boolean | "true" | "false" | "grammar" | "spelling" | undefined;
81
81
  'aria-keyshortcuts'?: string | undefined;
82
82
  'aria-label'?: string | undefined;
83
83
  'aria-labelledby'?: string | undefined;
84
84
  'aria-level'?: number | undefined;
85
85
  'aria-live'?: "off" | "assertive" | "polite" | undefined;
86
- 'aria-modal'?: boolean | "false" | "true" | undefined;
87
- 'aria-multiline'?: boolean | "false" | "true" | undefined;
88
- 'aria-multiselectable'?: boolean | "false" | "true" | undefined;
86
+ 'aria-modal'?: boolean | "true" | "false" | undefined;
87
+ 'aria-multiline'?: boolean | "true" | "false" | undefined;
88
+ 'aria-multiselectable'?: boolean | "true" | "false" | undefined;
89
89
  'aria-orientation'?: "horizontal" | "vertical" | undefined;
90
90
  'aria-owns'?: string | undefined;
91
91
  'aria-placeholder'?: string | undefined;
92
92
  'aria-posinset'?: number | undefined;
93
- 'aria-pressed'?: boolean | "mixed" | "false" | "true" | undefined;
94
- 'aria-readonly'?: boolean | "false" | "true" | undefined;
93
+ 'aria-pressed'?: boolean | "true" | "false" | "mixed" | undefined;
94
+ 'aria-readonly'?: boolean | "true" | "false" | undefined;
95
95
  'aria-relevant'?: "all" | "text" | "additions" | "additions removals" | "additions text" | "removals" | "removals additions" | "removals text" | "text additions" | "text removals" | undefined;
96
- 'aria-required'?: boolean | "false" | "true" | undefined;
96
+ 'aria-required'?: boolean | "true" | "false" | undefined;
97
97
  'aria-roledescription'?: string | undefined;
98
98
  'aria-rowcount'?: number | undefined;
99
99
  'aria-rowindex'?: number | undefined;
100
100
  'aria-rowspan'?: number | undefined;
101
- 'aria-selected'?: boolean | "false" | "true" | undefined;
101
+ 'aria-selected'?: boolean | "true" | "false" | undefined;
102
102
  'aria-setsize'?: number | undefined;
103
103
  'aria-sort'?: "none" | "ascending" | "descending" | "other" | undefined;
104
104
  'aria-valuemax'?: number | undefined;
@@ -268,15 +268,15 @@ export declare const ButtonPrimary: import("styled-components").StyledComponent<
268
268
  onAnimationIterationCapture?: import("react").AnimationEventHandler<HTMLButtonElement> | undefined;
269
269
  onTransitionEnd?: import("react").TransitionEventHandler<HTMLButtonElement> | undefined;
270
270
  onTransitionEndCapture?: import("react").TransitionEventHandler<HTMLButtonElement> | undefined;
271
- variant?: "small" | "medium" | "large" | undefined;
272
271
  as?: string | import("react").ComponentClass<any, any> | import("react").FunctionComponent<any> | undefined;
273
- disabled?: boolean | undefined;
274
272
  autoFocus?: boolean | undefined;
273
+ disabled?: boolean | undefined;
275
274
  formAction?: string | undefined;
276
275
  formEncType?: string | undefined;
277
276
  formMethod?: string | undefined;
278
277
  formNoValidate?: boolean | undefined;
279
278
  formTarget?: string | undefined;
279
+ variant?: "small" | "medium" | "large" | undefined;
280
280
  } & {
281
281
  theme?: any;
282
282
  } & import("styled-system").FontSizeProps<Required<import("styled-system").Theme<import("styled-system").TLengthStyledSystem>>, string | number | symbol> & import("../constants").SystemCommonProps & import("../constants").SystemLayoutProps & SxProp, never>;
@@ -114,24 +114,6 @@ declare namespace CircleOcticon {
114
114
  slot?: string | undefined;
115
115
  style?: React.CSSProperties | undefined;
116
116
  title?: string | undefined;
117
- bg?: import("styled-system").ResponsiveValue<string | number | symbol, Required<import("styled-system").Theme<import("styled-system").TLengthStyledSystem>>> | undefined;
118
- m?: import("styled-system").ResponsiveValue<string | number | symbol, Required<import("styled-system").Theme<import("styled-system").TLengthStyledSystem>>> | undefined;
119
- mt?: import("styled-system").ResponsiveValue<string | number | symbol, Required<import("styled-system").Theme<import("styled-system").TLengthStyledSystem>>> | undefined;
120
- mr?: import("styled-system").ResponsiveValue<string | number | symbol, Required<import("styled-system").Theme<import("styled-system").TLengthStyledSystem>>> | undefined;
121
- mb?: import("styled-system").ResponsiveValue<string | number | symbol, Required<import("styled-system").Theme<import("styled-system").TLengthStyledSystem>>> | undefined;
122
- ml?: import("styled-system").ResponsiveValue<string | number | symbol, Required<import("styled-system").Theme<import("styled-system").TLengthStyledSystem>>> | undefined;
123
- mx?: import("styled-system").ResponsiveValue<string | number | symbol, Required<import("styled-system").Theme<import("styled-system").TLengthStyledSystem>>> | undefined;
124
- marginX?: import("styled-system").ResponsiveValue<string | number | symbol, Required<import("styled-system").Theme<import("styled-system").TLengthStyledSystem>>> | undefined;
125
- my?: import("styled-system").ResponsiveValue<string | number | symbol, Required<import("styled-system").Theme<import("styled-system").TLengthStyledSystem>>> | undefined;
126
- marginY?: import("styled-system").ResponsiveValue<string | number | symbol, Required<import("styled-system").Theme<import("styled-system").TLengthStyledSystem>>> | undefined;
127
- pt?: import("styled-system").ResponsiveValue<string | number | symbol, Required<import("styled-system").Theme<import("styled-system").TLengthStyledSystem>>> | undefined;
128
- pr?: import("styled-system").ResponsiveValue<string | number | symbol, Required<import("styled-system").Theme<import("styled-system").TLengthStyledSystem>>> | undefined;
129
- pb?: import("styled-system").ResponsiveValue<string | number | symbol, Required<import("styled-system").Theme<import("styled-system").TLengthStyledSystem>>> | undefined;
130
- pl?: import("styled-system").ResponsiveValue<string | number | symbol, Required<import("styled-system").Theme<import("styled-system").TLengthStyledSystem>>> | undefined;
131
- px?: import("styled-system").ResponsiveValue<string | number | symbol, Required<import("styled-system").Theme<import("styled-system").TLengthStyledSystem>>> | undefined;
132
- paddingX?: import("styled-system").ResponsiveValue<string | number | symbol, Required<import("styled-system").Theme<import("styled-system").TLengthStyledSystem>>> | undefined;
133
- py?: import("styled-system").ResponsiveValue<string | number | symbol, Required<import("styled-system").Theme<import("styled-system").TLengthStyledSystem>>> | undefined;
134
- paddingY?: import("styled-system").ResponsiveValue<string | number | symbol, Required<import("styled-system").Theme<import("styled-system").TLengthStyledSystem>>> | undefined;
135
117
  key?: React.Key | null | undefined;
136
118
  defaultChecked?: boolean | undefined;
137
119
  defaultValue?: string | number | readonly string[] | undefined;
@@ -139,14 +121,14 @@ declare namespace CircleOcticon {
139
121
  suppressHydrationWarning?: boolean | undefined;
140
122
  accessKey?: string | undefined;
141
123
  className?: string | undefined;
142
- contentEditable?: "inherit" | (boolean | "false" | "true") | undefined;
124
+ contentEditable?: "inherit" | (boolean | "true" | "false") | undefined;
143
125
  contextMenu?: string | undefined;
144
126
  dir?: string | undefined;
145
- draggable?: (boolean | "false" | "true") | undefined;
127
+ draggable?: (boolean | "true" | "false") | undefined;
146
128
  id?: string | undefined;
147
129
  lang?: string | undefined;
148
130
  placeholder?: string | undefined;
149
- spellCheck?: (boolean | "false" | "true") | undefined;
131
+ spellCheck?: (boolean | "true" | "false") | undefined;
150
132
  tabIndex?: number | undefined;
151
133
  radioGroup?: string | undefined;
152
134
  role?: React.AriaRole | undefined;
@@ -172,47 +154,47 @@ declare namespace CircleOcticon {
172
154
  inputMode?: "search" | "none" | "text" | "tel" | "url" | "email" | "numeric" | "decimal" | undefined;
173
155
  is?: string | undefined;
174
156
  'aria-activedescendant'?: string | undefined;
175
- 'aria-atomic'?: boolean | "false" | "true" | undefined;
176
- 'aria-autocomplete'?: "none" | "both" | "inline" | "list" | undefined;
177
- 'aria-busy'?: boolean | "false" | "true" | undefined;
178
- 'aria-checked'?: boolean | "mixed" | "false" | "true" | undefined;
157
+ 'aria-atomic'?: boolean | "true" | "false" | undefined;
158
+ 'aria-autocomplete'?: "none" | "list" | "inline" | "both" | undefined;
159
+ 'aria-busy'?: boolean | "true" | "false" | undefined;
160
+ 'aria-checked'?: boolean | "true" | "false" | "mixed" | undefined;
179
161
  'aria-colcount'?: number | undefined;
180
162
  'aria-colindex'?: number | undefined;
181
163
  'aria-colspan'?: number | undefined;
182
164
  'aria-controls'?: string | undefined;
183
- 'aria-current'?: boolean | "time" | "page" | "false" | "true" | "step" | "location" | "date" | undefined;
165
+ 'aria-current'?: boolean | "time" | "true" | "false" | "page" | "step" | "location" | "date" | undefined;
184
166
  'aria-describedby'?: string | undefined;
185
167
  'aria-details'?: string | undefined;
186
- 'aria-disabled'?: boolean | "false" | "true" | undefined;
187
- 'aria-dropeffect'?: "link" | "none" | "copy" | "move" | "execute" | "popup" | undefined;
168
+ 'aria-disabled'?: boolean | "true" | "false" | undefined;
169
+ 'aria-dropeffect'?: "link" | "none" | "copy" | "execute" | "move" | "popup" | undefined;
188
170
  'aria-errormessage'?: string | undefined;
189
- 'aria-expanded'?: boolean | "false" | "true" | undefined;
171
+ 'aria-expanded'?: boolean | "true" | "false" | undefined;
190
172
  'aria-flowto'?: string | undefined;
191
- 'aria-grabbed'?: boolean | "false" | "true" | undefined;
192
- 'aria-haspopup'?: boolean | "grid" | "dialog" | "menu" | "listbox" | "false" | "true" | "tree" | undefined;
193
- 'aria-hidden'?: boolean | "false" | "true" | undefined;
194
- 'aria-invalid'?: boolean | "false" | "true" | "grammar" | "spelling" | undefined;
173
+ 'aria-grabbed'?: boolean | "true" | "false" | undefined;
174
+ 'aria-haspopup'?: boolean | "grid" | "dialog" | "menu" | "listbox" | "tree" | "true" | "false" | undefined;
175
+ 'aria-hidden'?: boolean | "true" | "false" | undefined;
176
+ 'aria-invalid'?: boolean | "true" | "false" | "grammar" | "spelling" | undefined;
195
177
  'aria-keyshortcuts'?: string | undefined;
196
178
  'aria-label'?: string | undefined;
197
179
  'aria-labelledby'?: string | undefined;
198
180
  'aria-level'?: number | undefined;
199
181
  'aria-live'?: "off" | "assertive" | "polite" | undefined;
200
- 'aria-modal'?: boolean | "false" | "true" | undefined;
201
- 'aria-multiline'?: boolean | "false" | "true" | undefined;
202
- 'aria-multiselectable'?: boolean | "false" | "true" | undefined;
182
+ 'aria-modal'?: boolean | "true" | "false" | undefined;
183
+ 'aria-multiline'?: boolean | "true" | "false" | undefined;
184
+ 'aria-multiselectable'?: boolean | "true" | "false" | undefined;
203
185
  'aria-orientation'?: "horizontal" | "vertical" | undefined;
204
186
  'aria-owns'?: string | undefined;
205
187
  'aria-placeholder'?: string | undefined;
206
188
  'aria-posinset'?: number | undefined;
207
- 'aria-pressed'?: boolean | "mixed" | "false" | "true" | undefined;
208
- 'aria-readonly'?: boolean | "false" | "true" | undefined;
189
+ 'aria-pressed'?: boolean | "true" | "false" | "mixed" | undefined;
190
+ 'aria-readonly'?: boolean | "true" | "false" | undefined;
209
191
  'aria-relevant'?: "all" | "text" | "additions" | "additions removals" | "additions text" | "removals" | "removals additions" | "removals text" | "text additions" | "text removals" | undefined;
210
- 'aria-required'?: boolean | "false" | "true" | undefined;
192
+ 'aria-required'?: boolean | "true" | "false" | undefined;
211
193
  'aria-roledescription'?: string | undefined;
212
194
  'aria-rowcount'?: number | undefined;
213
195
  'aria-rowindex'?: number | undefined;
214
196
  'aria-rowspan'?: number | undefined;
215
- 'aria-selected'?: boolean | "false" | "true" | undefined;
197
+ 'aria-selected'?: boolean | "true" | "false" | undefined;
216
198
  'aria-setsize'?: number | undefined;
217
199
  'aria-sort'?: "none" | "ascending" | "descending" | "other" | undefined;
218
200
  'aria-valuemax'?: number | undefined;
@@ -382,6 +364,24 @@ declare namespace CircleOcticon {
382
364
  onAnimationIterationCapture?: React.AnimationEventHandler<HTMLDivElement> | undefined;
383
365
  onTransitionEnd?: React.TransitionEventHandler<HTMLDivElement> | undefined;
384
366
  onTransitionEndCapture?: React.TransitionEventHandler<HTMLDivElement> | undefined;
367
+ bg?: import("styled-system").ResponsiveValue<string | number | symbol, Required<import("styled-system").Theme<import("styled-system").TLengthStyledSystem>>> | undefined;
368
+ m?: import("styled-system").ResponsiveValue<string | number | symbol, Required<import("styled-system").Theme<import("styled-system").TLengthStyledSystem>>> | undefined;
369
+ mt?: import("styled-system").ResponsiveValue<string | number | symbol, Required<import("styled-system").Theme<import("styled-system").TLengthStyledSystem>>> | undefined;
370
+ mr?: import("styled-system").ResponsiveValue<string | number | symbol, Required<import("styled-system").Theme<import("styled-system").TLengthStyledSystem>>> | undefined;
371
+ mb?: import("styled-system").ResponsiveValue<string | number | symbol, Required<import("styled-system").Theme<import("styled-system").TLengthStyledSystem>>> | undefined;
372
+ ml?: import("styled-system").ResponsiveValue<string | number | symbol, Required<import("styled-system").Theme<import("styled-system").TLengthStyledSystem>>> | undefined;
373
+ mx?: import("styled-system").ResponsiveValue<string | number | symbol, Required<import("styled-system").Theme<import("styled-system").TLengthStyledSystem>>> | undefined;
374
+ marginX?: import("styled-system").ResponsiveValue<string | number | symbol, Required<import("styled-system").Theme<import("styled-system").TLengthStyledSystem>>> | undefined;
375
+ my?: import("styled-system").ResponsiveValue<string | number | symbol, Required<import("styled-system").Theme<import("styled-system").TLengthStyledSystem>>> | undefined;
376
+ marginY?: import("styled-system").ResponsiveValue<string | number | symbol, Required<import("styled-system").Theme<import("styled-system").TLengthStyledSystem>>> | undefined;
377
+ pt?: import("styled-system").ResponsiveValue<string | number | symbol, Required<import("styled-system").Theme<import("styled-system").TLengthStyledSystem>>> | undefined;
378
+ pr?: import("styled-system").ResponsiveValue<string | number | symbol, Required<import("styled-system").Theme<import("styled-system").TLengthStyledSystem>>> | undefined;
379
+ pb?: import("styled-system").ResponsiveValue<string | number | symbol, Required<import("styled-system").Theme<import("styled-system").TLengthStyledSystem>>> | undefined;
380
+ pl?: import("styled-system").ResponsiveValue<string | number | symbol, Required<import("styled-system").Theme<import("styled-system").TLengthStyledSystem>>> | undefined;
381
+ px?: import("styled-system").ResponsiveValue<string | number | symbol, Required<import("styled-system").Theme<import("styled-system").TLengthStyledSystem>>> | undefined;
382
+ paddingX?: import("styled-system").ResponsiveValue<string | number | symbol, Required<import("styled-system").Theme<import("styled-system").TLengthStyledSystem>>> | undefined;
383
+ py?: import("styled-system").ResponsiveValue<string | number | symbol, Required<import("styled-system").Theme<import("styled-system").TLengthStyledSystem>>> | undefined;
384
+ paddingY?: import("styled-system").ResponsiveValue<string | number | symbol, Required<import("styled-system").Theme<import("styled-system").TLengthStyledSystem>>> | undefined;
385
385
  borderX?: import("styled-system").ResponsiveValue<import("csstype").Property.Border<import("styled-system").TLengthStyledSystem>, Required<import("styled-system").Theme<import("styled-system").TLengthStyledSystem>>> | undefined;
386
386
  borderY?: import("styled-system").ResponsiveValue<import("csstype").Property.Border<import("styled-system").TLengthStyledSystem>, Required<import("styled-system").Theme<import("styled-system").TLengthStyledSystem>>> | undefined;
387
387
  sx?: import("./sx").BetterSystemStyleObject | undefined;
@@ -0,0 +1,52 @@
1
+ import React from 'react';
2
+ import { OverlayProps } from '../Overlay';
3
+ import { FocusTrapHookSettings } from '../hooks/useFocusTrap';
4
+ import { FocusZoneHookSettings } from '../hooks/useFocusZone';
5
+ import { DatePickerConfiguration, Selection } from './useDatePicker';
6
+ declare type OpenGesture = 'anchor-click' | 'anchor-key-press';
7
+ declare type CloseGesture = 'anchor-click' | 'click-outside' | 'escape';
8
+ export interface DatePickerProps extends DatePickerConfiguration {
9
+ /**
10
+ * An override to the internal ref that will be spread on to the renderAnchor
11
+ */
12
+ anchorRef?: React.RefObject<HTMLElement>;
13
+ /**
14
+ * Settings to apply to the Focus Zone on the internal `Overlay` component.
15
+ */
16
+ focusTrapSettings?: Partial<FocusTrapHookSettings>;
17
+ /**
18
+ * Settings to apply to the Focus Zone on the internal `Overlay` component.
19
+ */
20
+ focusZoneSettings?: Partial<FocusZoneHookSettings>;
21
+ initialValue?: 'today' | Date | string | null;
22
+ iconOnly?: boolean;
23
+ placeholder?: string;
24
+ /**
25
+ * Determines whether the overlay portion of the component should be shown or not
26
+ */
27
+ open?: boolean;
28
+ /**
29
+ * A callback which is called whenever the overlay is currently closed and an "open gesture" is detected.
30
+ */
31
+ onOpen?: (gesture: OpenGesture) => unknown;
32
+ /**
33
+ * A callback which is called whenever the overlay is currently open and a "close gesture" is detected.
34
+ */
35
+ onClose?: (gesture: CloseGesture) => unknown;
36
+ /**
37
+ * Props to be spread on the internal `Overlay` component.
38
+ */
39
+ overlayProps?: Partial<OverlayProps>;
40
+ /**
41
+ * A custom function component used to render the anchor element.
42
+ * Will receive the selected text as `children` prop when an item is activated.
43
+ */
44
+ renderAnchor?: <T extends React.HTMLAttributes<HTMLElement>>(props: T) => JSX.Element;
45
+ value?: Selection;
46
+ /**
47
+ * Minimum date to select
48
+ */
49
+ minDate?: Date | null;
50
+ }
51
+ export declare const DatePicker: React.FC<DatePickerProps>;
52
+ export {};
@@ -0,0 +1,92 @@
1
+ import React, { useRef, useState } from 'react';
2
+ import { DatePickerAnchor } from './DatePickerAnchor';
3
+ import { DatePickerProvider } from './useDatePicker';
4
+ import { DatePickerOverlay } from './DatePickerOverlay';
5
+ export const DatePicker = ({
6
+ anchorVariant,
7
+ anchorRef: externalAnchorRef,
8
+ confirmation,
9
+ confirmUnsavedClose,
10
+ compressedHeader,
11
+ dateFormat,
12
+ disableWeekends,
13
+ focusTrapSettings,
14
+ focusZoneSettings,
15
+ iconPlacement,
16
+ maxDate,
17
+ maxRangeSize,
18
+ maxSelections,
19
+ minDate,
20
+ onOpen: onOpenExternal,
21
+ onClose: onCloseExternal,
22
+ open,
23
+ overlayProps,
24
+ placeholder,
25
+ renderAnchor = null,
26
+ showInputPrompt,
27
+ value,
28
+ variant,
29
+ view,
30
+ weekStartsOn
31
+ }) => {
32
+ const anchorRef = useRef(null);
33
+ const [isOpen, setIsOpen] = useState(false);
34
+ const datePickerConfiguration = {
35
+ anchorVariant,
36
+ confirmation,
37
+ confirmUnsavedClose,
38
+ compressedHeader,
39
+ dateFormat,
40
+ disableWeekends,
41
+ iconPlacement,
42
+ maxDate: maxDate ? new Date(new Date(maxDate).toDateString()) : maxDate,
43
+ maxRangeSize,
44
+ maxSelections,
45
+ minDate: minDate ? new Date(new Date(minDate).toDateString()) : minDate,
46
+ placeholder,
47
+ showInputPrompt,
48
+ variant,
49
+ view,
50
+ weekStartsOn
51
+ };
52
+
53
+ const onOpen = gesture => {
54
+ setIsOpen(true);
55
+ onOpenExternal === null || onOpenExternal === void 0 ? void 0 : onOpenExternal(gesture);
56
+ };
57
+
58
+ const onClose = gesture => {
59
+ setIsOpen(false);
60
+ onCloseExternal === null || onCloseExternal === void 0 ? void 0 : onCloseExternal(gesture);
61
+ };
62
+
63
+ const toggleIsOpen = () => {
64
+ if (isOpen) {
65
+ setIsOpen(false);
66
+ onCloseExternal === null || onCloseExternal === void 0 ? void 0 : onCloseExternal('anchor-click');
67
+ } else {
68
+ setIsOpen(true);
69
+ onCloseExternal === null || onCloseExternal === void 0 ? void 0 : onCloseExternal('anchor-click');
70
+ }
71
+ };
72
+
73
+ return /*#__PURE__*/React.createElement(DatePickerProvider, {
74
+ configuration: datePickerConfiguration,
75
+ isOpen: isOpen,
76
+ value: value,
77
+ closePicker: () => setIsOpen(false)
78
+ }, /*#__PURE__*/React.createElement(DatePickerAnchor, {
79
+ ref: anchorRef,
80
+ onAction: toggleIsOpen
81
+ }), /*#__PURE__*/React.createElement(DatePickerOverlay, {
82
+ anchorRef: externalAnchorRef !== null && externalAnchorRef !== void 0 ? externalAnchorRef : anchorRef,
83
+ renderAnchor: renderAnchor,
84
+ open: open !== null && open !== void 0 ? open : isOpen,
85
+ onOpen: onOpen,
86
+ onClose: onClose,
87
+ overlayProps: overlayProps,
88
+ focusTrapSettings: focusTrapSettings,
89
+ focusZoneSettings: focusZoneSettings
90
+ }));
91
+ };
92
+ DatePicker.displayName = "DatePicker";
@@ -0,0 +1,5 @@
1
+ import React from 'react';
2
+ export interface DatePickerAnchorProps {
3
+ onAction?: (event?: React.MouseEvent<HTMLDivElement> | React.KeyboardEvent<HTMLDivElement>) => void;
4
+ }
5
+ export declare const DatePickerAnchor: React.ForwardRefExoticComponent<DatePickerAnchorProps & React.RefAttributes<HTMLDivElement>>;
@@ -0,0 +1,174 @@
1
+ import { AlertIcon, CalendarIcon, CheckIcon } from '@primer/octicons-react';
2
+ import styled from 'styled-components';
3
+ import React, { useCallback, useEffect, useMemo, useRef, useState } from 'react';
4
+ import Button, { ButtonInvisible } from '../Button';
5
+ import Text from '../Text';
6
+ import { get } from '../constants';
7
+ import StyledOcticon from '../StyledOcticon';
8
+ import useDatePicker from './useDatePicker';
9
+ import TextInput from '../TextInput';
10
+ import Box from '../Box';
11
+ import { parseDate } from './dateParser';
12
+ import { Tooltip } from '..';
13
+ const DatePickerAnchorButton = styled(Button).withConfig({
14
+ displayName: "DatePickerAnchor__DatePickerAnchorButton",
15
+ componentId: "sc-8gpb9d-0"
16
+ })(["align-items:center;display:flex;flex-direction:row;justify-content:space-between;max-width:350px;overflow:hidden;& ", " ~ svg{margin-left:", ";}& svg ~ ", "{margin-left:", ";}"], Text, get('space.2'), Text, get('space.2'));
17
+ export const DatePickerAnchor = /*#__PURE__*/React.forwardRef(({
18
+ onAction
19
+ }, ref) => {
20
+ const {
21
+ configuration: {
22
+ anchorVariant,
23
+ iconPlacement,
24
+ placeholder,
25
+ variant
26
+ },
27
+ disabled,
28
+ formattedDate,
29
+ inputDate,
30
+ onDateInput
31
+ } = useDatePicker();
32
+ const [inputValue, setInputValue] = useState(formattedDate);
33
+ const inputRef = useRef(null);
34
+ const [inputValid, setInputValid] = useState(true);
35
+ const [inputFocused, setInputFocused] = useState(false);
36
+ const keyPressHandler = useCallback(event => {
37
+ if (disabled) {
38
+ return;
39
+ }
40
+
41
+ if ([' ', 'Enter'].includes(event.key)) {
42
+ onAction === null || onAction === void 0 ? void 0 : onAction(event);
43
+ }
44
+ }, [disabled, onAction]);
45
+ const clickHandler = useCallback(event => {
46
+ if (disabled) {
47
+ return;
48
+ }
49
+
50
+ onAction === null || onAction === void 0 ? void 0 : onAction(event);
51
+ }, [disabled, onAction]);
52
+ useEffect(() => {
53
+ if (document.activeElement !== inputRef.current) {
54
+ setInputValue(formattedDate);
55
+ }
56
+ }, [formattedDate]);
57
+ const onInputChangeHandler = useCallback(e => {
58
+ const value = e.currentTarget.value;
59
+ setInputValue(value);
60
+
61
+ if (!value) {
62
+ return;
63
+ }
64
+
65
+ const parsedDate = parseDate(value, variant);
66
+ setInputValid(!!parsedDate);
67
+
68
+ if (parsedDate) {
69
+ onDateInput(parsedDate);
70
+ }
71
+ }, [onDateInput, variant]);
72
+
73
+ const onFocusHandler = () => {
74
+ setInputValue(inputDate);
75
+ setInputFocused(true);
76
+ };
77
+
78
+ const onBlurHandler = () => {
79
+ setInputValue(formattedDate);
80
+ setInputValid(true);
81
+ setInputFocused(false);
82
+ };
83
+
84
+ const inputSx = useMemo(() => {
85
+ let sxObject = {};
86
+
87
+ if (iconPlacement === 'start') {
88
+ sxObject = { ...sxObject,
89
+ pl: 5,
90
+ pr: 2
91
+ };
92
+ } else if (iconPlacement === 'end') {
93
+ sxObject = { ...sxObject,
94
+ pl: 2,
95
+ pr: 5
96
+ };
97
+ }
98
+
99
+ return sxObject;
100
+ }, [iconPlacement]);
101
+
102
+ if (anchorVariant === 'input') {
103
+ const calendarButton = side => /*#__PURE__*/React.createElement(ButtonInvisible, {
104
+ onClick: clickHandler,
105
+ sx: {
106
+ width: '32px',
107
+ px: '6px',
108
+ position: 'absolute',
109
+ [side]: '1px',
110
+ top: '1px',
111
+ bottom: '1px'
112
+ }
113
+ }, /*#__PURE__*/React.createElement(StyledOcticon, {
114
+ icon: CalendarIcon
115
+ }));
116
+
117
+ const iconSx = () => ({
118
+ position: 'absolute',
119
+ top: 0,
120
+ bottom: 0,
121
+ right: iconPlacement === 'end' ? '36px' : '10px',
122
+ display: 'flex',
123
+ alignItems: 'center'
124
+ });
125
+
126
+ return /*#__PURE__*/React.createElement(Box, {
127
+ ref: ref,
128
+ sx: {
129
+ position: 'relative',
130
+ display: 'flex'
131
+ }
132
+ }, iconPlacement === 'start' && calendarButton('left'), /*#__PURE__*/React.createElement(TextInput, {
133
+ ref: inputRef,
134
+ placeholder: placeholder,
135
+ value: inputValue,
136
+ onChange: onInputChangeHandler,
137
+ sx: inputSx,
138
+ onBlur: onBlurHandler,
139
+ onFocus: onFocusHandler
140
+ }), /*#__PURE__*/React.createElement(Box, {
141
+ sx: iconSx()
142
+ }, inputValid && inputFocused && /*#__PURE__*/React.createElement(StyledOcticon, {
143
+ icon: CheckIcon,
144
+ color: "success.emphasis"
145
+ }), !inputValid && /*#__PURE__*/React.createElement(Tooltip, {
146
+ direction: "s",
147
+ text: "Invalid entry. Please make sure you use the 'MM/DD/YYYY' format."
148
+ }, /*#__PURE__*/React.createElement(StyledOcticon, {
149
+ icon: AlertIcon,
150
+ color: "attention.emphasis"
151
+ }))), iconPlacement === 'end' && calendarButton('right'));
152
+ }
153
+
154
+ const calendarIcon = () => /*#__PURE__*/React.createElement(StyledOcticon, {
155
+ icon: CalendarIcon,
156
+ color: "fg.muted",
157
+ sx: {
158
+ my: '2px'
159
+ }
160
+ });
161
+
162
+ return /*#__PURE__*/React.createElement(Box, {
163
+ ref: ref
164
+ }, /*#__PURE__*/React.createElement(DatePickerAnchorButton, {
165
+ onClick: clickHandler,
166
+ onKeyPress: keyPressHandler,
167
+ "aria-label": formattedDate
168
+ }, (iconPlacement === 'start' || anchorVariant === 'icon-only') && calendarIcon(), anchorVariant !== 'icon-only' && /*#__PURE__*/React.createElement(Text, {
169
+ sx: {
170
+ overflow: 'hidden',
171
+ textOverflow: 'ellipsis'
172
+ }
173
+ }, formattedDate), iconPlacement === 'end' && calendarIcon()));
174
+ });
@@ -0,0 +1,3 @@
1
+ import React from 'react';
2
+ import { AnchoredOverlayProps } from '../AnchoredOverlay';
3
+ export declare const DatePickerOverlay: React.FC<AnchoredOverlayProps>;
@@ -0,0 +1,40 @@
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 useDatePicker from './useDatePicker';
5
+ import { AnchoredOverlay } from '../AnchoredOverlay';
6
+ import { DatePickerPanel } from './DatePickerPanel';
7
+ export const DatePickerOverlay = ({
8
+ onClose,
9
+ ...rest
10
+ }) => {
11
+ const {
12
+ dialogOpen,
13
+ onClose: onDatePickerClose,
14
+ setDialogOpen,
15
+ currentViewingDate
16
+ } = useDatePicker();
17
+
18
+ const onOverlayClose = async gesture => {
19
+ if (!dialogOpen) {
20
+ setDialogOpen(true);
21
+ await onDatePickerClose();
22
+ setDialogOpen(false);
23
+ onClose === null || onClose === void 0 ? void 0 : onClose(gesture);
24
+ }
25
+ };
26
+
27
+ return /*#__PURE__*/React.createElement(AnchoredOverlay, _extends({}, rest, {
28
+ onClose: onOverlayClose,
29
+ focusTrapSettings: {
30
+ restoreFocusOnCleanUp: true
31
+ },
32
+ focusZoneSettings: {
33
+ disabled: true
34
+ },
35
+ "aria-modal": "true",
36
+ "aria-labelledby": `${currentViewingDate.getMonth()} ${currentViewingDate.getFullYear()}`,
37
+ "aria-live": "polite"
38
+ }), /*#__PURE__*/React.createElement(DatePickerPanel, null));
39
+ };
40
+ DatePickerOverlay.displayName = "DatePickerOverlay";
@@ -0,0 +1,2 @@
1
+ /// <reference types="react" />
2
+ export declare const DatePickerPanel: () => JSX.Element;