@papillonarts/components 0.8.0 → 0.9.0

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 (239) hide show
  1. package/build/index.ts +1 -0
  2. package/build/primer/Alert/Alert.mdx +88 -0
  3. package/build/primer/Alert/Alert.prop.ts +45 -0
  4. package/build/primer/Alert/Alert.tsx +101 -0
  5. package/build/primer/Alert/__tests__/Alert.int.story.tsx +86 -0
  6. package/build/primer/Alert/__tests__/Alert.int.test.ts +37 -0
  7. package/build/primer/Alert/index.ts +2 -0
  8. package/build/primer/Blankslate/Blankslate.mdx +57 -0
  9. package/build/primer/Blankslate/Blankslate.prop.ts +26 -0
  10. package/build/primer/Blankslate/Blankslate.tsx +26 -0
  11. package/build/primer/Blankslate/__tests__/Blankslate.int.story.tsx +43 -0
  12. package/build/primer/Blankslate/__tests__/Blankslate.int.test.ts +29 -0
  13. package/build/primer/Blankslate/index.ts +2 -0
  14. package/build/primer/Breadcrumb/Breadcrumb.mdx +23 -0
  15. package/build/primer/Breadcrumb/Breadcrumb.prop.ts +28 -0
  16. package/build/primer/Breadcrumb/Breadcrumb.tsx +57 -0
  17. package/build/primer/Breadcrumb/__tests__/Breadcrumb.int.story.tsx +40 -0
  18. package/build/primer/Breadcrumb/__tests__/Breadcrumb.int.test.ts +40 -0
  19. package/build/primer/Breadcrumb/index.ts +2 -0
  20. package/build/primer/Button/Button.mdx +239 -0
  21. package/build/primer/Button/Button.prop.ts +77 -0
  22. package/build/primer/Button/Button.tsx +91 -0
  23. package/build/primer/Button/__tests__/Button.int.story.tsx +173 -0
  24. package/build/primer/Button/__tests__/Button.int.test.ts +191 -0
  25. package/build/primer/Button/index.ts +2 -0
  26. package/build/primer/Dropdown/Dropdown.mdx +19 -0
  27. package/build/primer/Dropdown/Dropdown.prop.ts +33 -0
  28. package/build/primer/Dropdown/Dropdown.tsx +102 -0
  29. package/build/primer/Dropdown/__tests__/Dropdown.int.story.tsx +43 -0
  30. package/build/primer/Dropdown/__tests__/Dropdown.int.test.ts +53 -0
  31. package/build/primer/Dropdown/index.ts +2 -0
  32. package/build/primer/ErrorBoundary/ErrorBoundary.prop.ts +5 -0
  33. package/build/primer/ErrorBoundary/ErrorBoundary.tsx +35 -0
  34. package/build/primer/ErrorBoundary/__tests__/ErrorBoundary.int.story.tsx +23 -0
  35. package/build/primer/ErrorBoundary/__tests__/ErrorBoundary.int.test.ts +9 -0
  36. package/build/primer/ErrorBoundary/index.ts +1 -0
  37. package/build/primer/Form/Checkbox/Checkbox.prop.ts +34 -0
  38. package/build/primer/Form/Checkbox/Checkbox.tsx +40 -0
  39. package/build/primer/Form/Checkbox/__tests__/Checkbox.int.story.tsx +50 -0
  40. package/build/primer/Form/Checkbox/__tests__/Checkbox.int.test.ts +23 -0
  41. package/build/primer/Form/Checkbox/index.ts +2 -0
  42. package/build/primer/Form/Input/Input.prop.ts +43 -0
  43. package/build/primer/Form/Input/Input.tsx +43 -0
  44. package/build/primer/Form/Input/__tests__/Input.int.story.tsx +54 -0
  45. package/build/primer/Form/Input/__tests__/Input.int.test.ts +15 -0
  46. package/build/primer/Form/Input/index.ts +2 -0
  47. package/build/primer/Form/Radio/Radio.prop.ts +30 -0
  48. package/build/primer/Form/Radio/Radio.tsx +38 -0
  49. package/build/primer/Form/Radio/__tests__/Radio.int.story.tsx +42 -0
  50. package/build/primer/Form/Radio/__tests__/Radio.int.test.ts +13 -0
  51. package/build/primer/Form/Radio/index.ts +2 -0
  52. package/build/primer/Form/index.ts +19 -0
  53. package/build/primer/Grid/DisplayTable/DisplayTable.prop.ts +21 -0
  54. package/build/primer/Grid/DisplayTable/DisplayTable.tsx +68 -0
  55. package/build/primer/Grid/DisplayTable/__tests__/DisplayTable.int.data.ts +289 -0
  56. package/build/primer/Grid/DisplayTable/__tests__/DisplayTable.int.story.tsx +27 -0
  57. package/build/primer/Grid/DisplayTable/__tests__/DisplayTable.int.test.ts +9 -0
  58. package/build/primer/Grid/DisplayTable/index.ts +1 -0
  59. package/build/primer/Grid/FlexGrid/FlexGrid.prop.ts +59 -0
  60. package/build/primer/Grid/FlexGrid/FlexGrid.tsx +274 -0
  61. package/build/primer/Grid/FlexGrid/__tests__/FlexGrid.int.data.ts +289 -0
  62. package/build/primer/Grid/FlexGrid/__tests__/FlexGrid.int.story.tsx +146 -0
  63. package/build/primer/Grid/FlexGrid/__tests__/FlexGrid.int.test.ts +46 -0
  64. package/build/primer/Grid/FlexGrid/index.ts +2 -0
  65. package/build/primer/Grid/index.ts +9 -0
  66. package/build/primer/Icon/Icon.part.ts +1289 -0
  67. package/build/primer/Icon/Icon.prop.ts +1337 -0
  68. package/build/primer/Icon/Icon.tsx +49 -0
  69. package/build/primer/Icon/__tests__/Icon.int.story.tsx +58 -0
  70. package/build/primer/Icon/__tests__/Icon.int.test.ts +13 -0
  71. package/build/primer/Icon/index.ts +2 -0
  72. package/build/primer/Label/Label.mdx +13 -0
  73. package/build/primer/Label/Label.prop.ts +31 -0
  74. package/build/primer/Label/Label.tsx +27 -0
  75. package/build/primer/Label/__tests__/Label.int.story.tsx +19 -0
  76. package/build/primer/Label/__tests__/Label.int.test.ts +9 -0
  77. package/build/primer/Label/index.ts +1 -0
  78. package/build/primer/Loader/Loader.mdx +31 -0
  79. package/build/primer/Loader/Loader.prop.ts +16 -0
  80. package/build/primer/Loader/Loader.tsx +43 -0
  81. package/build/primer/Loader/__tests__/Loader.int.story.tsx +34 -0
  82. package/build/primer/Loader/__tests__/Loader.int.test.ts +21 -0
  83. package/build/primer/Loader/index.ts +2 -0
  84. package/build/primer/Navigation/Menu/Menu.prop.ts +26 -0
  85. package/build/primer/Navigation/Menu/Menu.tsx +42 -0
  86. package/build/primer/Navigation/Menu/__tests__/Menu.int.story.tsx +55 -0
  87. package/build/primer/Navigation/Menu/__tests__/Menu.int.test.ts +57 -0
  88. package/build/primer/Navigation/Menu/index.ts +1 -0
  89. package/build/primer/Navigation/TabNav/TabNav.prop.ts +39 -0
  90. package/build/primer/Navigation/TabNav/TabNav.tsx +105 -0
  91. package/build/primer/Navigation/TabNav/__tests__/TabNav.int.story.tsx +168 -0
  92. package/build/primer/Navigation/TabNav/__tests__/TabNav.int.test.ts +55 -0
  93. package/build/primer/Navigation/TabNav/index.ts +2 -0
  94. package/build/primer/Navigation/UnderlineNav/UnderlineNav.prop.ts +41 -0
  95. package/build/primer/Navigation/UnderlineNav/UnderlineNav.tsx +106 -0
  96. package/build/primer/Navigation/UnderlineNav/__tests__/UnderlineNav.int.story.tsx +140 -0
  97. package/build/primer/Navigation/UnderlineNav/__tests__/UnderlineNav.int.test.ts +81 -0
  98. package/build/primer/Navigation/UnderlineNav/index.ts +2 -0
  99. package/build/primer/Navigation/index.ts +12 -0
  100. package/build/primer/Pagination/PreviousNext/PreviousNext.prop.ts +53 -0
  101. package/build/primer/Pagination/PreviousNext/PreviousNext.tsx +71 -0
  102. package/build/primer/Pagination/PreviousNext/__tests__/PreviousNext.int.story.tsx +48 -0
  103. package/build/primer/Pagination/PreviousNext/__tests__/PreviousNext.int.test.ts +15 -0
  104. package/build/primer/Pagination/PreviousNext/index.ts +2 -0
  105. package/build/primer/Pagination/index.ts +6 -0
  106. package/build/primer/Popover/Popover.mdx +190 -0
  107. package/build/primer/Popover/Popover.prop.ts +49 -0
  108. package/build/primer/Popover/Popover.tsx +80 -0
  109. package/build/primer/Popover/__tests__/Popover.int.story.tsx +216 -0
  110. package/build/primer/Popover/__tests__/Popover.int.test.ts +71 -0
  111. package/build/primer/Popover/index.ts +2 -0
  112. package/build/primer/Progress/Progress.mdx +31 -0
  113. package/build/primer/Progress/Progress.prop.ts +16 -0
  114. package/build/primer/Progress/Progress.tsx +19 -0
  115. package/build/primer/Progress/__tests__/Progress.int.story.tsx +28 -0
  116. package/build/primer/Progress/__tests__/Progress.int.test.ts +17 -0
  117. package/build/primer/Progress/index.ts +2 -0
  118. package/build/primer/Select/Select.mdx +19 -0
  119. package/build/primer/Select/Select.prop.ts +24 -0
  120. package/build/primer/Select/Select.tsx +58 -0
  121. package/build/primer/Select/__tests__/Select.int.story.tsx +38 -0
  122. package/build/primer/Select/__tests__/Select.int.test.ts +42 -0
  123. package/build/primer/Select/index.ts +2 -0
  124. package/build/primer/SelectMenu/SelectMenu.mdx +13 -0
  125. package/build/primer/SelectMenu/SelectMenu.prop.ts +25 -0
  126. package/build/primer/SelectMenu/SelectMenu.tsx +68 -0
  127. package/build/primer/SelectMenu/__tests__/SelectMenu.int.story.tsx +50 -0
  128. package/build/primer/SelectMenu/__tests__/SelectMenu.int.test.ts +56 -0
  129. package/build/primer/SelectMenu/index.ts +1 -0
  130. package/build/primer/Subhead/Subhead.mdx +20 -0
  131. package/build/primer/Subhead/Subhead.prop.ts +10 -0
  132. package/build/primer/Subhead/Subhead.tsx +15 -0
  133. package/build/primer/Subhead/__tests__/Subhead.int.story.tsx +23 -0
  134. package/build/primer/Subhead/__tests__/Subhead.int.test.ts +13 -0
  135. package/build/primer/Subhead/index.ts +1 -0
  136. package/build/primer/Toast/Toast.prop.ts +21 -0
  137. package/build/primer/Toast/Toast.tsx +38 -0
  138. package/build/primer/Toast/__tests__/Toast.int.story.tsx +50 -0
  139. package/build/primer/Toast/__tests__/Toast.int.test.ts +25 -0
  140. package/build/primer/Toast/index.ts +2 -0
  141. package/build/primer/index.ts +83 -0
  142. package/package.json +4 -4
  143. package/build/index.js +0 -12
  144. package/build/primer/Alert/Alert.js +0 -121
  145. package/build/primer/Alert/Alert.prop.js +0 -38
  146. package/build/primer/Alert/index.js +0 -19
  147. package/build/primer/Blankslate/Blankslate.js +0 -31
  148. package/build/primer/Blankslate/Blankslate.prop.js +0 -26
  149. package/build/primer/Blankslate/index.js +0 -19
  150. package/build/primer/Breadcrumb/Breadcrumb.js +0 -74
  151. package/build/primer/Breadcrumb/Breadcrumb.prop.js +0 -29
  152. package/build/primer/Breadcrumb/index.js +0 -19
  153. package/build/primer/Button/Button.js +0 -99
  154. package/build/primer/Button/Button.prop.js +0 -67
  155. package/build/primer/Button/index.js +0 -49
  156. package/build/primer/Dropdown/Dropdown.js +0 -104
  157. package/build/primer/Dropdown/Dropdown.prop.js +0 -34
  158. package/build/primer/Dropdown/index.js +0 -19
  159. package/build/primer/ErrorBoundary/ErrorBoundary.js +0 -59
  160. package/build/primer/ErrorBoundary/ErrorBoundary.prop.js +0 -11
  161. package/build/primer/ErrorBoundary/index.js +0 -12
  162. package/build/primer/Form/Checkbox/Checkbox.js +0 -49
  163. package/build/primer/Form/Checkbox/Checkbox.prop.js +0 -36
  164. package/build/primer/Form/Checkbox/index.js +0 -19
  165. package/build/primer/Form/Input/Input.js +0 -56
  166. package/build/primer/Form/Input/Input.prop.js +0 -43
  167. package/build/primer/Form/Input/index.js +0 -25
  168. package/build/primer/Form/Radio/Radio.js +0 -48
  169. package/build/primer/Form/Radio/Radio.prop.js +0 -34
  170. package/build/primer/Form/Radio/index.js +0 -19
  171. package/build/primer/Form/index.js +0 -24
  172. package/build/primer/Grid/DisplayTable/DisplayTable.js +0 -58
  173. package/build/primer/Grid/DisplayTable/DisplayTable.prop.js +0 -18
  174. package/build/primer/Grid/DisplayTable/index.js +0 -12
  175. package/build/primer/Grid/FlexGrid/FlexGrid.js +0 -244
  176. package/build/primer/Grid/FlexGrid/FlexGrid.prop.js +0 -49
  177. package/build/primer/Grid/FlexGrid/index.js +0 -25
  178. package/build/primer/Grid/index.js +0 -14
  179. package/build/primer/Icon/Icon.js +0 -70
  180. package/build/primer/Icon/Icon.part.js +0 -1295
  181. package/build/primer/Icon/Icon.prop.js +0 -689
  182. package/build/primer/Icon/index.js +0 -25
  183. package/build/primer/Label/Label.js +0 -31
  184. package/build/primer/Label/Label.prop.js +0 -34
  185. package/build/primer/Label/index.js +0 -12
  186. package/build/primer/Loader/Loader.js +0 -65
  187. package/build/primer/Loader/Loader.prop.js +0 -21
  188. package/build/primer/Loader/index.js +0 -19
  189. package/build/primer/Navigation/Menu/Menu.js +0 -70
  190. package/build/primer/Navigation/Menu/Menu.prop.js +0 -28
  191. package/build/primer/Navigation/Menu/index.js +0 -12
  192. package/build/primer/Navigation/TabNav/TabNav.js +0 -125
  193. package/build/primer/Navigation/TabNav/TabNav.prop.js +0 -36
  194. package/build/primer/Navigation/TabNav/index.js +0 -19
  195. package/build/primer/Navigation/UnderlineNav/UnderlineNav.js +0 -121
  196. package/build/primer/Navigation/UnderlineNav/UnderlineNav.prop.js +0 -41
  197. package/build/primer/Navigation/UnderlineNav/index.js +0 -25
  198. package/build/primer/Navigation/index.js +0 -17
  199. package/build/primer/Pagination/PreviousNext/PreviousNext.js +0 -76
  200. package/build/primer/Pagination/PreviousNext/PreviousNext.prop.js +0 -56
  201. package/build/primer/Pagination/PreviousNext/index.js +0 -19
  202. package/build/primer/Pagination/index.js +0 -11
  203. package/build/primer/Popover/Popover.js +0 -63
  204. package/build/primer/Popover/Popover.prop.js +0 -41
  205. package/build/primer/Popover/index.js +0 -25
  206. package/build/primer/Progress/Progress.js +0 -31
  207. package/build/primer/Progress/Progress.prop.js +0 -21
  208. package/build/primer/Progress/index.js +0 -19
  209. package/build/primer/Select/Select.js +0 -66
  210. package/build/primer/Select/Select.prop.js +0 -27
  211. package/build/primer/Select/index.js +0 -19
  212. package/build/primer/SelectMenu/SelectMenu.js +0 -95
  213. package/build/primer/SelectMenu/SelectMenu.prop.js +0 -26
  214. package/build/primer/SelectMenu/index.js +0 -12
  215. package/build/primer/Subhead/Subhead.js +0 -27
  216. package/build/primer/Subhead/Subhead.prop.js +0 -16
  217. package/build/primer/Subhead/index.js +0 -12
  218. package/build/primer/Toast/Toast.js +0 -55
  219. package/build/primer/Toast/Toast.prop.js +0 -26
  220. package/build/primer/Toast/index.js +0 -19
  221. package/build/primer/index.js +0 -87
  222. /package/build/primer/Form/Checkbox/{Checkbox.md → Checkbox.mdx} +0 -0
  223. /package/build/primer/Form/Checkbox/__tests__/__snapshots__/{Checkbox.int.test.js.snap → Checkbox.int.test.ts.snap} +0 -0
  224. /package/build/primer/Form/Input/{Input.md → Input.mdx} +0 -0
  225. /package/build/primer/Form/Input/__tests__/__snapshots__/{Input.int.test.js.snap → Input.int.test.ts.snap} +0 -0
  226. /package/build/primer/Form/Radio/{Radio.md → Radio.mdx} +0 -0
  227. /package/build/primer/Form/Radio/__tests__/__snapshots__/{Radio.int.test.js.snap → Radio.int.test.ts.snap} +0 -0
  228. /package/build/primer/Grid/DisplayTable/{DisplayTable.md → DisplayTable.mdx} +0 -0
  229. /package/build/primer/Grid/DisplayTable/__tests__/__snapshots__/{DisplayTable.int.test.js.snap → DisplayTable.int.test.ts.snap} +0 -0
  230. /package/build/primer/Grid/FlexGrid/{FlexGrid.md → FlexGrid.mdx} +0 -0
  231. /package/build/primer/Grid/FlexGrid/__tests__/__snapshots__/{FlexGrid.int.test.js.snap → FlexGrid.int.test.ts.snap} +0 -0
  232. /package/build/primer/Navigation/Menu/{Menu.md → Menu.mdx} +0 -0
  233. /package/build/primer/Navigation/Menu/__tests__/__snapshots__/{Menu.int.test.js.snap → Menu.int.test.ts.snap} +0 -0
  234. /package/build/primer/Navigation/TabNav/{TabNav.md → TabNav.mdx} +0 -0
  235. /package/build/primer/Navigation/TabNav/__tests__/__snapshots__/{TabNav.int.test.js.snap → TabNav.int.test.ts.snap} +0 -0
  236. /package/build/primer/Navigation/UnderlineNav/{UnderlineNav.md → UnderlineNav.mdx} +0 -0
  237. /package/build/primer/Navigation/UnderlineNav/__tests__/__snapshots__/{UnderlineNav.int.test.js.snap → UnderlineNav.int.test.ts.snap} +0 -0
  238. /package/build/primer/Pagination/PreviousNext/{PreviousNext.md → PreviousNext.mdx} +0 -0
  239. /package/build/primer/Pagination/PreviousNext/__tests__/__snapshots__/{PreviousNext.int.test.js.snap → PreviousNext.int.test.ts.snap} +0 -0
@@ -0,0 +1,2 @@
1
+ export { UnderlineNav } from './UnderlineNav'
2
+ export { underlineNavItemType, underlineNavAlignmentType } from './UnderlineNav.prop'
@@ -0,0 +1,12 @@
1
+ import { Menu } from './Menu'
2
+ import { TabNav, tabNavState } from './TabNav'
3
+ import { UnderlineNav, underlineNavItemType, underlineNavAlignmentType } from './UnderlineNav'
4
+
5
+ export const Navigation = {
6
+ Menu,
7
+ TabNav,
8
+ tabNavState,
9
+ UnderlineNav,
10
+ underlineNavItemType,
11
+ underlineNavAlignmentType,
12
+ }
@@ -0,0 +1,53 @@
1
+ export const previousNextState = {
2
+ active: 'active',
3
+ inactive: 'inactive',
4
+ }
5
+
6
+ export const defaultProps = {
7
+ className: null,
8
+ previous: {
9
+ rel: 'previous',
10
+ href: '#url',
11
+ ariaAttr: {
12
+ label: 'Previous',
13
+ },
14
+ text: '<',
15
+ },
16
+ next: {
17
+ rel: 'next',
18
+ href: '#url',
19
+ ariaAttr: {
20
+ label: 'Next',
21
+ },
22
+ text: '>',
23
+ },
24
+ state: previousNextState.active,
25
+ }
26
+
27
+ export interface AriaAttrType {
28
+ label: string
29
+ }
30
+
31
+ export interface PreviousNextType {
32
+ rel: string
33
+ href: string
34
+ ariaAttr: AriaAttrType
35
+ text: string
36
+ }
37
+
38
+ export interface currentPageType {
39
+ indexItems: React.ReactNode[]
40
+ currentIndex: number
41
+ canMoveBackwards: boolean
42
+ canMoveForward: boolean
43
+ }
44
+
45
+ export interface PreviousNextProps {
46
+ className?: string
47
+ ariaAttr: AriaAttrType
48
+ currentPage: currentPageType
49
+ previous?: PreviousNextType
50
+ next?: PreviousNextType
51
+ onClick: (value) => void
52
+ state?: typeof previousNextState.active | typeof previousNextState.inactive
53
+ }
@@ -0,0 +1,71 @@
1
+ import cx from 'classnames'
2
+ import displayStyles from '@papillonarts/css/build/primer/utilities/visibility-display.scss'
3
+ import { paginationActionTypes } from '@papillonarts/library/pagination'
4
+ import { PreviousNextProps, defaultProps, previousNextState } from './PreviousNext.prop'
5
+ import styles from './PreviousNext.scss'
6
+
7
+ export function PreviousNext({
8
+ className = defaultProps.className,
9
+ ariaAttr,
10
+ currentPage,
11
+ previous = defaultProps.previous,
12
+ next = defaultProps.next,
13
+ onClick,
14
+ state = defaultProps.state,
15
+ }: PreviousNextProps) {
16
+ const { label } = ariaAttr
17
+
18
+ const { indexItems, currentIndex, canMoveBackwards, canMoveForward } = currentPage
19
+ const backwardsAriaProps = !canMoveBackwards ? { ...{ 'aria-disabled': 'true' } } : null
20
+ const forwardAriaProps = !canMoveForward ? { ...{ 'aria-disabled': 'true' } } : null
21
+
22
+ // @ts-ignore
23
+ // if (indexItems === [] || currentIndex === -1) {
24
+ // return null
25
+ // }
26
+
27
+ return (
28
+ <nav
29
+ className={cx(className, styles['paginate-container'], {
30
+ [styles['previousnext-inactive']]: state === previousNextState.inactive,
31
+ })}
32
+ aria-label={label}
33
+ >
34
+ <div className={cx(styles.pagination, displayStyles['d-flex'])}>
35
+ {!canMoveBackwards ? (
36
+ // @ts-ignore
37
+ <span {...backwardsAriaProps}>{previous.text}</span>
38
+ ) : (
39
+ <a
40
+ onClick={(event) => {
41
+ event.preventDefault()
42
+ onClick(paginationActionTypes.onBackwards)
43
+ }}
44
+ rel={previous.rel}
45
+ href={previous.href}
46
+ aria-label={previous.ariaAttr.label}
47
+ >
48
+ {previous.text}
49
+ </a>
50
+ )}
51
+ <span>{`Viewing ${currentIndex + 1} to ${indexItems.length}`}</span>
52
+ {!canMoveForward ? (
53
+ // @ts-ignore
54
+ <span {...forwardAriaProps}>{next.text}</span>
55
+ ) : (
56
+ <a
57
+ onClick={(event) => {
58
+ event.preventDefault()
59
+ onClick(paginationActionTypes.onForward)
60
+ }}
61
+ rel={next.rel}
62
+ href={next.href}
63
+ aria-label={next.ariaAttr.label}
64
+ >
65
+ {next.text}
66
+ </a>
67
+ )}
68
+ </div>
69
+ </nav>
70
+ )
71
+ }
@@ -0,0 +1,48 @@
1
+ import { action } from 'storybook/actions'
2
+ import { withTests } from '@storybook/addon-jest'
3
+ import { previousNextState } from '../PreviousNext.prop'
4
+ import results from '../../../../../../../.jest-test-results.json'
5
+
6
+ const PreviousNext =
7
+ process.env.NODE_ENV === 'develop' || process.env.NODE_ENV === 'test'
8
+ ? require('../../../../index').primer.Pagination.PreviousNext
9
+ : require('../../../../../build').primer.Pagination.PreviousNext
10
+
11
+ export default {
12
+ title: 'Primer/Atom/Pagination/PreviousNext',
13
+ component: PreviousNext,
14
+ decorators: [withTests({ results })],
15
+ parameters: { jest: ['PreviousNext.int.test.js'] },
16
+ excludeStories: ['ariaAttr', 'currentPage', 'custom'],
17
+ }
18
+
19
+ export const ariaAttr = {
20
+ label: 'Pagination',
21
+ }
22
+
23
+ export const currentPage = {
24
+ indexItems: [
25
+ { isCurrent: false, index: 0 },
26
+ { isCurrent: false, index: 1 },
27
+ { isCurrent: true, index: 2 },
28
+ { isCurrent: false, index: 3 },
29
+ { isCurrent: false, index: 4 },
30
+ { isCurrent: false, index: 5 },
31
+ { isCurrent: false, index: 6 },
32
+ ],
33
+ currentIndex: 2,
34
+ canMoveBackwards: true,
35
+ canMoveForward: true,
36
+ }
37
+
38
+ export function custom(onClick) {
39
+ return <PreviousNext ariaAttr={ariaAttr} currentPage={currentPage} onClick={onClick} />
40
+ }
41
+
42
+ export function regular() {
43
+ return <PreviousNext ariaAttr={ariaAttr} currentPage={currentPage} onClick={action('onClick')} />
44
+ }
45
+
46
+ export function inactive() {
47
+ return <PreviousNext ariaAttr={ariaAttr} currentPage={currentPage} onClick={action('onClick')} state={previousNextState.inactive} />
48
+ }
@@ -0,0 +1,15 @@
1
+ import { regular, inactive } from './PreviousNext.int.story'
2
+
3
+ describe('<PreviousNext />', () => {
4
+ afterEach(() => jest.clearAllMocks())
5
+
6
+ describe('Render', () => {
7
+ test('must match regular()', () => {
8
+ expect(global.renderToJSON(regular())).toMatchSnapshot()
9
+ })
10
+
11
+ test('must match inactive()', () => {
12
+ expect(global.renderToJSON(inactive())).toMatchSnapshot()
13
+ })
14
+ })
15
+ })
@@ -0,0 +1,2 @@
1
+ export { PreviousNext } from './PreviousNext'
2
+ export { previousNextState } from './PreviousNext.prop'
@@ -0,0 +1,6 @@
1
+ import { PreviousNext, previousNextState } from './PreviousNext'
2
+
3
+ export const Pagination = {
4
+ PreviousNext,
5
+ previousNextState,
6
+ }
@@ -0,0 +1,190 @@
1
+ # Popover
2
+
3
+ - Default, DefaultLarge
4
+ - Bottom, BottomRight, BottomLeft
5
+ - Left, LeftBottom, LeftTop
6
+ - Right, RightBottom, RightTop
7
+ - TopLeft, TopRight
8
+
9
+ > Popovers are used to bring attention to specific user interface elements, typically to suggest an action or to guide users through a new experience.
10
+
11
+ ## Default
12
+
13
+ ```jsx
14
+ <Popover
15
+ intro={intro}
16
+ heading={heading}
17
+ message={message}
18
+ acknowledge={acknowledge}
19
+ introOnClick={action('introOnClick')}
20
+ acknowledgeOnClick={action('acknowledgeOnClick')}
21
+ />
22
+ ```
23
+
24
+ ## DefaultLarge
25
+
26
+ ```jsx
27
+ <Popover
28
+ intro={intro}
29
+ heading={heading}
30
+ message={message}
31
+ acknowledge={acknowledge}
32
+ size={popoverSize.large}
33
+ introOnClick={action('introOnClick')}
34
+ acknowledgeOnClick={action('acknowledgeOnClick')}
35
+ />
36
+ ```
37
+
38
+ ## Bottom
39
+
40
+ ```jsx
41
+ <Popover
42
+ intro={intro}
43
+ heading={heading}
44
+ message={message}
45
+ acknowledge={acknowledge}
46
+ variant={popoverVariant.bottom}
47
+ introOnClick={action('introOnClick')}
48
+ acknowledgeOnClick={action('acknowledgeOnClick')}
49
+ />
50
+ ```
51
+
52
+ ## BottomRight
53
+
54
+ ```jsx
55
+ <Popover
56
+ intro={intro}
57
+ heading={heading}
58
+ message={message}
59
+ acknowledge={acknowledge}
60
+ variant={popoverVariant.bottomRight}
61
+ introOnClick={action('introOnClick')}
62
+ acknowledgeOnClick={action('acknowledgeOnClick')}
63
+ />
64
+ ```
65
+
66
+ ## BottomLeft
67
+
68
+ ```jsx
69
+ <Popover
70
+ intro={intro}
71
+ heading={heading}
72
+ message={message}
73
+ acknowledge={acknowledge}
74
+ variant={popoverVariant.bottomLeft}
75
+ introOnClick={action('introOnClick')}
76
+ acknowledgeOnClick={action('acknowledgeOnClick')}
77
+ />
78
+ ```
79
+
80
+ ## Left
81
+
82
+ ```jsx
83
+ <Popover
84
+ intro={intro}
85
+ heading={heading}
86
+ message={message}
87
+ acknowledge={acknowledge}
88
+ variant={popoverVariant.left}
89
+ introOnClick={action('introOnClick')}
90
+ acknowledgeOnClick={action('acknowledgeOnClick')}
91
+ />
92
+ ```
93
+
94
+ ## LeftBottom
95
+
96
+ ```jsx
97
+ <Popover
98
+ intro={intro}
99
+ heading={heading}
100
+ message={message}
101
+ acknowledge={acknowledge}
102
+ variant={popoverVariant.leftBottom}
103
+ introOnClick={action('introOnClick')}
104
+ acknowledgeOnClick={action('acknowledgeOnClick')}
105
+ />
106
+ ```
107
+
108
+ ## LeftTop
109
+
110
+ ```jsx
111
+ <Popover
112
+ intro={intro}
113
+ heading={heading}
114
+ message={message}
115
+ acknowledge={acknowledge}
116
+ variant={popoverVariant.leftTop}
117
+ introOnClick={action('introOnClick')}
118
+ acknowledgeOnClick={action('acknowledgeOnClick')}
119
+ />
120
+ ```
121
+
122
+ ## Right
123
+
124
+ ```jsx
125
+ <Popover
126
+ intro={intro}
127
+ heading={heading}
128
+ message={message}
129
+ acknowledge={acknowledge}
130
+ variant={popoverVariant.right}
131
+ introOnClick={action('introOnClick')}
132
+ acknowledgeOnClick={action('acknowledgeOnClick')}
133
+ />
134
+ ```
135
+
136
+ ## RightBottom
137
+
138
+ ```jsx
139
+ <Popover
140
+ intro={intro}
141
+ heading={heading}
142
+ message={message}
143
+ acknowledge={acknowledge}
144
+ variant={popoverVariant.rightBottom}
145
+ introOnClick={action('introOnClick')}
146
+ acknowledgeOnClick={action('acknowledgeOnClick')}
147
+ />
148
+ ```
149
+
150
+ ## RightTop
151
+
152
+ ```jsx
153
+ <Popover
154
+ intro={intro}
155
+ heading={heading}
156
+ message={message}
157
+ acknowledge={acknowledge}
158
+ variant={popoverVariant.rightTop}
159
+ introOnClick={action('introOnClick')}
160
+ acknowledgeOnClick={action('acknowledgeOnClick')}
161
+ />
162
+ ```
163
+
164
+ ## TopLeft
165
+
166
+ ```jsx
167
+ <Popover
168
+ intro={intro}
169
+ heading={heading}
170
+ message={message}
171
+ acknowledge={acknowledge}
172
+ variant={popoverVariant.topLeft}
173
+ introOnClick={action('introOnClick')}
174
+ acknowledgeOnClick={action('acknowledgeOnClick')}
175
+ />
176
+ ```
177
+
178
+ ## TopRight
179
+
180
+ ```jsx
181
+ <Popover
182
+ intro={intro}
183
+ heading={heading}
184
+ message={message}
185
+ acknowledge={acknowledge}
186
+ variant={popoverVariant.topRight}
187
+ introOnClick={action('introOnClick')}
188
+ acknowledgeOnClick={action('acknowledgeOnClick')}
189
+ />
190
+ ```
@@ -0,0 +1,49 @@
1
+ export const popoverVariant = {
2
+ default: 'default',
3
+ bottom: 'bottom',
4
+ bottomRight: 'bottomRight',
5
+ bottomLeft: 'bottomLeft',
6
+ left: 'left',
7
+ leftBottom: 'leftBottom',
8
+ leftTop: 'leftTop',
9
+ right: 'right',
10
+ rightBottom: 'rightBottom',
11
+ rightTop: 'rightTop',
12
+ topLeft: 'topLeft',
13
+ topRight: 'topRight',
14
+ }
15
+
16
+ export const popoverSize = {
17
+ normal: 'normal',
18
+ large: 'large',
19
+ }
20
+
21
+ export const defaultProps = {
22
+ className: null,
23
+ variant: popoverVariant.default,
24
+ size: popoverSize.normal,
25
+ }
26
+
27
+ export interface PopoverProps {
28
+ className?: string
29
+ variant?:
30
+ | typeof popoverVariant.default
31
+ | typeof popoverVariant.bottom
32
+ | typeof popoverVariant.bottomRight
33
+ | typeof popoverVariant.bottomLeft
34
+ | typeof popoverVariant.left
35
+ | typeof popoverVariant.leftBottom
36
+ | typeof popoverVariant.leftTop
37
+ | typeof popoverVariant.right
38
+ | typeof popoverVariant.rightBottom
39
+ | typeof popoverVariant.rightTop
40
+ | typeof popoverVariant.topLeft
41
+ | typeof popoverVariant.topRight
42
+ size?: typeof popoverSize.normal | typeof popoverSize.large
43
+ intro: string
44
+ heading: string
45
+ message: string
46
+ acknowledge: string
47
+ introOnClick: (value) => void
48
+ acknowledgeOnClick: (value) => void
49
+ }
@@ -0,0 +1,80 @@
1
+ import cx from 'classnames'
2
+ import boxShadowStyles from '@papillonarts/css/build/primer/utilities/box-shadow.scss'
3
+ import layoutStyles from '@papillonarts/css/build/primer/utilities/layout.scss'
4
+ import marginStyles from '@papillonarts/css/build/primer/utilities/margin.scss'
5
+ import paddingStyles from '@papillonarts/css/build/primer/utilities/padding.scss'
6
+ import typographyStyles from '@papillonarts/css/build/primer/utilities/typography.scss'
7
+ import boxStyles from '../Box/box.scss'
8
+ import { PopoverProps, defaultProps, popoverVariant, popoverSize } from './Popover.prop'
9
+ import styles from './Popover.scss'
10
+ import { Button, buttonVariant } from '../Button'
11
+
12
+ export function Popover({
13
+ className = defaultProps.className,
14
+ variant = defaultProps.variant,
15
+ size = defaultProps.size,
16
+ intro,
17
+ heading,
18
+ message,
19
+ acknowledge,
20
+ introOnClick,
21
+ acknowledgeOnClick,
22
+ }: PopoverProps) {
23
+ return (
24
+ <div
25
+ className={cx(className, layoutStyles['position-relative'], {
26
+ [typographyStyles['text-center']]: variant === popoverVariant.default || variant === popoverVariant.bottom,
27
+ [cx(typographyStyles['text-right'], paddingStyles['pr-2'])]: variant === popoverVariant.bottomRight,
28
+ })}
29
+ >
30
+ {variant === popoverVariant.default && <Button variant={buttonVariant.primary} text={intro} onClick={introOnClick} />}
31
+ <div
32
+ // @ts-ignore
33
+ className={
34
+ (cx(styles.Popover, layoutStyles['position-relative']),
35
+ {
36
+ [cx(layoutStyles['right-0'], layoutStyles['left-0'])]: variant === popoverVariant.default,
37
+ [paddingStyles['pl-2']]: variant === popoverVariant.bottomLeft,
38
+ })
39
+ }
40
+ >
41
+ <div
42
+ className={cx(
43
+ styles['Popover-message'],
44
+ typographyStyles['text-left'],
45
+ paddingStyles['p-4'],
46
+ boxStyles.Box,
47
+ boxShadowStyles['box-shadow-large'],
48
+ {
49
+ [cx(marginStyles['mx-auto'], marginStyles['mt-2'])]: variant === popoverVariant.default,
50
+ [cx(styles['Popover-message--bottom'], marginStyles['mx-auto'], marginStyles['mb-2'])]: variant === popoverVariant.bottom,
51
+ [cx(styles['Popover-message--bottom-right'], marginStyles['mb-2'])]: variant === popoverVariant.bottomRight,
52
+ [cx(styles['Popover-message--bottom-left'], marginStyles['mb-2'])]: variant === popoverVariant.bottomLeft,
53
+ [styles['Popover-message--left']]: variant === popoverVariant.left,
54
+ [styles['Popover-message--left-bottom']]: variant === popoverVariant.leftBottom,
55
+ [styles['Popover-message--left-top']]: variant === popoverVariant.leftTop,
56
+ [styles['Popover-message--right']]: variant === popoverVariant.right,
57
+ [styles['Popover-message--right-bottom']]: variant === popoverVariant.rightBottom,
58
+ [styles['Popover-message--right-top']]: variant === popoverVariant.rightTop,
59
+ [styles['Popover-message--top-left']]: variant === popoverVariant.topLeft,
60
+ [styles['Popover-message--top-right']]: variant === popoverVariant.topRight,
61
+ [styles['Popover-message--large']]: size === popoverSize.large,
62
+ },
63
+ )}
64
+ >
65
+ <h4 className={marginStyles['mb-2']}>{heading}</h4>
66
+ <p>{message}</p>
67
+ <Button
68
+ className={cx(marginStyles['mt-2'], typographyStyles['text-bold'])}
69
+ text={acknowledge}
70
+ variant={buttonVariant.outline}
71
+ onClick={acknowledgeOnClick}
72
+ />
73
+ </div>
74
+ </div>
75
+ {(variant === popoverVariant.bottom || variant === popoverVariant.bottomRight || variant === popoverVariant.bottomLeft) && (
76
+ <Button variant={buttonVariant.primary} text={intro} onClick={introOnClick} />
77
+ )}
78
+ </div>
79
+ )
80
+ }