@digigov/react-core 0.25.5 → 0.26.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 (200) hide show
  1. package/Accordion/index.d.ts +1 -1
  2. package/AccordionControls/index.d.ts +1 -1
  3. package/AccordionSection/index.d.ts +1 -1
  4. package/AccordionSectionContent/index.d.ts +1 -1
  5. package/AccordionSectionHeader/index.d.ts +1 -1
  6. package/AccordionSectionSummary/index.d.ts +1 -1
  7. package/AccordionSectionSummaryHeading/index.d.ts +1 -1
  8. package/Aside/index.d.ts +1 -1
  9. package/BackLink/index.d.ts +1 -1
  10. package/Base/index.d.ts +1 -0
  11. package/Base/index.js +2 -34
  12. package/Blockquote/index.d.ts +1 -1
  13. package/Bottom/index.d.ts +1 -1
  14. package/Breadcrumbs/index.d.ts +1 -1
  15. package/BreadcrumbsList/index.d.ts +1 -1
  16. package/BreadcrumbsListItem/index.d.ts +1 -1
  17. package/Button/index.d.ts +1 -1
  18. package/ButtonGroup/index.d.ts +1 -1
  19. package/ButtonLink/index.d.ts +1 -1
  20. package/CHANGELOG.md +13 -1
  21. package/CallToAction/index.d.ts +1 -1
  22. package/Card/index.d.ts +1 -1
  23. package/CardAction/index.d.ts +1 -1
  24. package/CardHeading/index.d.ts +1 -1
  25. package/CardText/index.d.ts +1 -1
  26. package/CaretContainer/index.d.ts +1 -1
  27. package/Checkbox/index.d.ts +1 -1
  28. package/CheckboxConditional/index.d.ts +1 -1
  29. package/CheckboxItem/__snapshots__/index.test.tsx.snap +219 -73
  30. package/CheckboxItem/index.d.ts +7 -1
  31. package/CheckboxItem/index.js +8 -3
  32. package/CheckboxItem/index.test.js +20 -1
  33. package/ChoiceDivider/__snapshots__/index.test.tsx.snap +18 -0
  34. package/ChoiceDivider/index.d.ts +11 -0
  35. package/ChoiceDivider/index.js +39 -0
  36. package/ChoiceDivider/index.test.d.ts +1 -0
  37. package/ChoiceDivider/index.test.js +17 -0
  38. package/Confirmation/index.d.ts +1 -1
  39. package/ConfirmationBody/index.d.ts +1 -1
  40. package/ConfirmationTitle/index.d.ts +1 -1
  41. package/Container/index.d.ts +1 -1
  42. package/CopyrightContainer/index.d.ts +1 -1
  43. package/DateInputContainer/index.d.ts +1 -1
  44. package/DateInputItem/index.d.ts +1 -1
  45. package/Details/index.d.ts +1 -1
  46. package/DetailsContent/index.d.ts +1 -1
  47. package/DetailsSummary/index.d.ts +1 -1
  48. package/ErrorMessage/index.d.ts +1 -1
  49. package/ErrorSummary/index.d.ts +1 -1
  50. package/FieldContainer/index.d.ts +1 -1
  51. package/Fieldset/index.d.ts +1 -1
  52. package/FieldsetLegend/index.d.ts +1 -1
  53. package/FileUpload/index.d.ts +1 -1
  54. package/FileUploadContainer/index.d.ts +1 -1
  55. package/Footer/index.d.ts +1 -1
  56. package/FooterContainer/index.d.ts +1 -1
  57. package/FooterContent/index.d.ts +1 -1
  58. package/FooterContentLogos/index.d.ts +1 -1
  59. package/FooterHeading/index.d.ts +1 -1
  60. package/FooterImage/index.d.ts +1 -1
  61. package/FooterInlineList/index.d.ts +1 -1
  62. package/FooterInlineListItem/index.d.ts +1 -1
  63. package/FooterLink/index.d.ts +1 -1
  64. package/FooterList/index.d.ts +1 -1
  65. package/FooterListItem/index.d.ts +1 -1
  66. package/FooterMeta/index.d.ts +1 -1
  67. package/FooterMetaItem/index.d.ts +1 -1
  68. package/FooterNavigation/index.d.ts +1 -1
  69. package/FooterSection/index.d.ts +1 -1
  70. package/Form/index.d.ts +1 -1
  71. package/GovGRLogo/index.d.ts +1 -1
  72. package/Grid/index.d.ts +1 -1
  73. package/Header/index.d.ts +1 -1
  74. package/HeaderContent/index.d.ts +1 -1
  75. package/HeaderLogo/index.d.ts +1 -1
  76. package/HeaderNavMenuContent/index.d.ts +1 -1
  77. package/HeaderSecondaryLogo/index.d.ts +1 -1
  78. package/HeaderSection/index.d.ts +1 -1
  79. package/HeaderSubtitle/index.d.ts +1 -1
  80. package/HeaderTitle/index.d.ts +1 -1
  81. package/Heading/index.d.ts +1 -1
  82. package/HeadingCaption/index.d.ts +1 -1
  83. package/HellenicRepublicLogo/index.d.ts +1 -1
  84. package/Hidden/index.d.ts +1 -1
  85. package/Hint/index.d.ts +1 -1
  86. package/LabelContainer/index.d.ts +1 -1
  87. package/LabelTitle/index.d.ts +1 -1
  88. package/Layout/index.d.ts +1 -1
  89. package/LinkBase/index.d.ts +1 -1
  90. package/List/index.d.ts +1 -1
  91. package/ListItem/index.d.ts +1 -1
  92. package/Main/index.d.ts +1 -1
  93. package/Masthead/index.d.ts +1 -1
  94. package/MastheadBody/index.d.ts +1 -1
  95. package/Nav/index.d.ts +1 -1
  96. package/NavList/index.d.ts +1 -1
  97. package/NavListItem/index.d.ts +1 -1
  98. package/NavListItemButton/index.d.ts +1 -1
  99. package/NavListItemLink/index.d.ts +1 -1
  100. package/NavMenu/index.d.ts +1 -1
  101. package/NavMenuContainer/index.d.ts +1 -1
  102. package/NavMenuContainerContent/index.d.ts +1 -1
  103. package/NavMenuContainerContentList/index.d.ts +1 -1
  104. package/NavMenuContainerContentListItem/index.d.ts +1 -1
  105. package/NavMenuContainerTitle/index.d.ts +1 -1
  106. package/NavVertical/index.d.ts +1 -1
  107. package/NavVerticalItem/index.d.ts +1 -1
  108. package/NormalText/index.d.ts +1 -1
  109. package/NotificationBannerContainer/index.d.ts +1 -1
  110. package/NotificationBannerContent/index.d.ts +1 -1
  111. package/NotificationBannerHeader/index.d.ts +1 -1
  112. package/NotificationBannerHeading/index.d.ts +1 -1
  113. package/NotificationBannerLink/index.d.ts +1 -1
  114. package/PageTitle/index.d.ts +1 -1
  115. package/PageTitleCaption/index.d.ts +1 -1
  116. package/PageTitleHeading/index.d.ts +1 -1
  117. package/PageTitleSection/index.d.ts +1 -1
  118. package/Paragraph/index.d.ts +1 -1
  119. package/PhaseBanner/index.d.ts +1 -1
  120. package/PhaseBannerHeaderContainer/index.d.ts +1 -1
  121. package/PhaseBannerTag/index.d.ts +1 -1
  122. package/PhaseBannerText/index.d.ts +1 -1
  123. package/RadioConditional/index.d.ts +1 -1
  124. package/RadioContainer/index.d.ts +1 -1
  125. package/RadioItem/__snapshots__/index.test.tsx.snap +253 -90
  126. package/RadioItem/index.d.ts +7 -1
  127. package/RadioItem/index.js +9 -4
  128. package/RadioItem/index.test.js +24 -5
  129. package/SectionBreak/index.d.ts +1 -1
  130. package/SelectContainer/index.d.ts +1 -1
  131. package/SelectOption/index.d.ts +1 -1
  132. package/SingleCharacterInputContainer/index.d.ts +1 -1
  133. package/SingleCharacterInputItem/index.d.ts +1 -1
  134. package/SkipLink/index.d.ts +1 -1
  135. package/SummaryList/index.d.ts +1 -1
  136. package/SummaryListItem/index.d.ts +1 -1
  137. package/SummaryListItemAction/index.d.ts +1 -1
  138. package/SummaryListItemKey/index.d.ts +1 -1
  139. package/SummaryListItemValue/index.d.ts +1 -1
  140. package/SvgIcon/index.d.ts +1 -1
  141. package/Table/index.d.ts +1 -1
  142. package/TableBody/index.d.ts +1 -1
  143. package/TableCaption/index.d.ts +1 -1
  144. package/TableContainer/index.d.ts +1 -1
  145. package/TableDataCell/index.d.ts +1 -1
  146. package/TableHead/index.d.ts +1 -1
  147. package/TableHeadCell/index.d.ts +1 -1
  148. package/TableNoDataRow/index.d.ts +1 -1
  149. package/TableRow/index.d.ts +1 -1
  150. package/Tabs/index.d.ts +1 -1
  151. package/TabsHeading/index.d.ts +1 -1
  152. package/TabsList/index.d.ts +1 -1
  153. package/TabsListItem/index.d.ts +1 -1
  154. package/TabsPanel/index.d.ts +1 -1
  155. package/TextArea/index.d.ts +1 -1
  156. package/TextInput/index.d.ts +1 -1
  157. package/Top/index.d.ts +1 -1
  158. package/VisuallyHidden/index.d.ts +1 -1
  159. package/WarningText/index.d.ts +1 -1
  160. package/es/Base/index.js +2 -35
  161. package/es/CheckboxItem/__snapshots__/index.test.tsx.snap +219 -73
  162. package/es/CheckboxItem/index.js +7 -3
  163. package/es/CheckboxItem/index.test.js +20 -1
  164. package/es/ChoiceDivider/__snapshots__/index.test.tsx.snap +18 -0
  165. package/es/ChoiceDivider/index.js +23 -0
  166. package/es/ChoiceDivider/index.test.js +11 -0
  167. package/es/RadioItem/__snapshots__/index.test.tsx.snap +253 -90
  168. package/es/RadioItem/index.js +8 -4
  169. package/es/RadioItem/index.test.js +24 -5
  170. package/es/index.js +1 -0
  171. package/es/registry.js +2 -0
  172. package/esm/Base/index.js +2 -35
  173. package/esm/CheckboxItem/__snapshots__/index.test.tsx.snap +219 -73
  174. package/esm/CheckboxItem/index.js +7 -3
  175. package/esm/CheckboxItem/index.test.js +20 -1
  176. package/esm/ChoiceDivider/__snapshots__/index.test.tsx.snap +18 -0
  177. package/esm/ChoiceDivider/index.js +23 -0
  178. package/esm/ChoiceDivider/index.test.js +11 -0
  179. package/esm/RadioItem/__snapshots__/index.test.tsx.snap +253 -90
  180. package/esm/RadioItem/index.js +8 -4
  181. package/esm/RadioItem/index.test.js +24 -5
  182. package/esm/index.js +2 -1
  183. package/esm/registry.js +2 -0
  184. package/index.d.ts +1 -0
  185. package/index.js +13 -0
  186. package/package.json +1 -1
  187. package/registry.d.ts +1 -0
  188. package/registry.js +3 -0
  189. package/src/Base/index.tsx +31 -80
  190. package/src/CheckboxItem/__snapshots__/index.test.tsx.snap +219 -73
  191. package/src/CheckboxItem/index.test.tsx +13 -0
  192. package/src/CheckboxItem/index.tsx +35 -24
  193. package/src/ChoiceDivider/__snapshots__/index.test.tsx.snap +18 -0
  194. package/src/ChoiceDivider/index.test.tsx +8 -0
  195. package/src/ChoiceDivider/index.tsx +29 -0
  196. package/src/RadioItem/__snapshots__/index.test.tsx.snap +253 -90
  197. package/src/RadioItem/index.test.tsx +16 -0
  198. package/src/RadioItem/index.tsx +35 -24
  199. package/src/index.ts +1 -0
  200. package/src/registry.js +2 -0
@@ -55,6 +55,7 @@ export type BaseProps<
55
55
  paddingRight?: 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12;
56
56
  /** printHidden is optional. Default value is false. When true, the component is hidden at print. */
57
57
  printHidden?: boolean;
58
+ printVisible?: 'block' | 'inline';
58
59
  /** Components will be hidden from 'xs' screen size and up. */
59
60
  xsUpHidden?: boolean;
60
61
  /** Components will be hidden from 'sm' screen size and up. */
@@ -85,59 +86,6 @@ type BaseComponent = <C extends React.ElementType = 'span'>(
85
86
  props: BaseProps<C>
86
87
  ) => React.ReactElement | null;
87
88
 
88
- function calculateClasses(
89
- margin?: number,
90
- marginTop?: number,
91
- marginBottom?: number,
92
- marginRight?: number,
93
- marginLeft?: number,
94
- padding?: number,
95
- paddingTop?: number,
96
- paddingBottom?: number,
97
- paddingRight?: number,
98
- paddingLeft?: number,
99
- printHidden?: boolean,
100
- printVisible?: 'block' | 'inline',
101
- xsUpHidden?: boolean,
102
- smUpHidden?: boolean,
103
- mdUpHidden?: boolean,
104
- lgUpHidden?: boolean,
105
- xlUpHidden?: boolean,
106
- xsHidden?: boolean,
107
- smHidden?: boolean,
108
- mdHidden?: boolean,
109
- lgHidden?: boolean,
110
- xlHidden?: boolean
111
- ) {
112
- const classList = {} as Record<string, boolean>;
113
- for (let i = 0; i <= 12; i++) {
114
- classList[`govgr-m-${i}`] = margin === i;
115
- classList[`govgr-mt-${i}`] = marginTop === i;
116
- classList[`govgr-mb-${i}`] = marginBottom === i;
117
- classList[`govgr-mr-${i}`] = marginRight === i;
118
- classList[`govgr-ml-${i}`] = marginLeft === i;
119
- classList[`govgr-p-${i}`] = padding === i;
120
- classList[`govgr-pt-${i}`] = paddingTop === i;
121
- classList[`govgr-pb-${i}`] = paddingBottom === i;
122
- classList[`govgr-pr-${i}`] = paddingRight === i;
123
- classList[`govgr-pl-${i}`] = paddingLeft === i;
124
- }
125
- classList['govgr-print-hidden'] = !!printHidden;
126
- classList['govgr-print-visible-block'] = printVisible === 'block';
127
- classList['govgr-print-visible-inline'] = printVisible === 'inline';
128
- classList['govgr-hidden-xs--up'] = xsUpHidden === true;
129
- classList['govgr-hidden-sm--up'] = smUpHidden === true;
130
- classList['govgr-hidden-md--up'] = mdUpHidden === true;
131
- classList['govgr-hidden-lg--up'] = lgUpHidden === true;
132
- classList['govgr-hidden-xl--up'] = xlUpHidden === true;
133
- classList['govgr-hidden-xs'] = xsHidden === true;
134
- classList['govgr-hidden-sm'] = smHidden === true;
135
- classList['govgr-hidden-md'] = mdHidden === true;
136
- classList['govgr-hidden-lg'] = lgHidden === true;
137
- classList['govgr-hidden-xl'] = xlHidden === true;
138
- return classList;
139
- }
140
-
141
89
  export const Base: BaseComponent = React.forwardRef(function Base<
142
90
  C extends React.ElementType = 'span'
143
91
  >(
@@ -175,34 +123,37 @@ export const Base: BaseComponent = React.forwardRef(function Base<
175
123
 
176
124
  return (
177
125
  <Component
126
+ className={clsx(className, {
127
+ [`govgr-m-${margin}`]: margin !== undefined ? true : undefined,
128
+ [`govgr-mt-${marginTop}`]: marginTop !== undefined ? true : undefined,
129
+ [`govgr-mb-${marginBottom}`]:
130
+ marginBottom !== undefined ? true : undefined,
131
+ [`govgr-mr-${marginRight}`]:
132
+ marginRight !== undefined ? true : undefined,
133
+ [`govgr-ml-${marginLeft}`]: marginLeft !== undefined ? true : undefined,
134
+ [`govgr-p-${padding}`]: padding !== undefined ? true : undefined,
135
+ [`govgr-pt-${paddingTop}`]: paddingTop !== undefined ? true : undefined,
136
+ [`govgr-pb-${paddingBottom}`]:
137
+ paddingBottom !== undefined ? true : undefined,
138
+ [`govgr-pr-${paddingRight}`]:
139
+ paddingRight !== undefined ? true : undefined,
140
+ [`govgr-pl-${paddingLeft}`]:
141
+ paddingLeft !== undefined ? true : undefined,
142
+ 'govgr-print-hidden': !!printHidden,
143
+ 'govgr-print-visible-block': printVisible === 'block',
144
+ 'govgr-print-visible-inline': printVisible === 'inline',
145
+ 'govgr-hidden-xs--up': !!xsUpHidden,
146
+ 'govgr-hidden-sm--up': !!smUpHidden,
147
+ 'govgr-hidden-md--up': !!mdUpHidden,
148
+ 'govgr-hidden-lg--up': !!lgUpHidden,
149
+ 'govgr-hidden-xl--up': !!xlUpHidden,
150
+ 'govgr-hidden-xs': !!xsHidden,
151
+ 'govgr-hidden-sm': !!smHidden,
152
+ 'govgr-hidden-md': !!mdHidden,
153
+ 'govgr-hidden-lg': !!lgHidden,
154
+ 'govgr-hidden-xl': !!xlHidden,
155
+ })}
178
156
  ref={ref}
179
- className={clsx(
180
- className,
181
- calculateClasses(
182
- margin,
183
- marginTop,
184
- marginBottom,
185
- marginRight,
186
- marginLeft,
187
- padding,
188
- paddingTop,
189
- paddingBottom,
190
- paddingRight,
191
- paddingLeft,
192
- printHidden,
193
- printVisible,
194
- xsUpHidden,
195
- smUpHidden,
196
- mdUpHidden,
197
- lgUpHidden,
198
- xlUpHidden,
199
- xsHidden,
200
- smHidden,
201
- mdHidden,
202
- lgHidden,
203
- xlHidden
204
- )
205
- )}
206
157
  {...props}
207
158
  >
208
159
  {children}
@@ -7,23 +7,81 @@ exports[`renders the CheckboxItem with \`disabled\` prop 1`] = `
7
7
  <div
8
8
  className="govgr-checkboxes__item"
9
9
  >
10
- <label
11
- className="govgr-checkboxes__label--disabled govgr-label govgr-checkboxes__label"
10
+ <ForwardRef(LabelContainer)
11
+ className="govgr-checkboxes__label--disabled govgr-checkboxes__label"
12
12
  >
13
- hello
14
13
  <ForwardRef(Base)
15
- as="input"
16
- className="govgr-checkboxes__input"
17
- disabled={true}
18
- type="checkbox"
14
+ as="label"
15
+ className="govgr-checkboxes__label--disabled govgr-checkboxes__label govgr-label"
19
16
  >
20
- <input
21
- className="govgr-checkboxes__input"
22
- disabled={true}
23
- type="checkbox"
24
- />
17
+ <label
18
+ className="govgr-checkboxes__label--disabled govgr-checkboxes__label govgr-label"
19
+ >
20
+ hello
21
+ <ForwardRef(Base)
22
+ as="input"
23
+ className="govgr-checkboxes__input"
24
+ disabled={true}
25
+ type="checkbox"
26
+ >
27
+ <input
28
+ className="govgr-checkboxes__input"
29
+ disabled={true}
30
+ type="checkbox"
31
+ />
32
+ </ForwardRef(Base)>
33
+ </label>
25
34
  </ForwardRef(Base)>
26
- </label>
35
+ </ForwardRef(LabelContainer)>
36
+ </div>
37
+ </ForwardRef(CheckboxItem)>
38
+ `;
39
+
40
+ exports[`renders the CheckboxItem with \`divider\` prop 1`] = `
41
+ <ForwardRef(CheckboxItem)
42
+ divider="ή"
43
+ >
44
+ <ForwardRef(ChoiceDivider)
45
+ text="ή"
46
+ >
47
+ <ForwardRef(Base)
48
+ as="div"
49
+ className="govgr-choice-divider"
50
+ >
51
+ <div
52
+ className="govgr-choice-divider"
53
+ >
54
+ ή
55
+ </div>
56
+ </ForwardRef(Base)>
57
+ </ForwardRef(ChoiceDivider)>
58
+ <div
59
+ className="govgr-checkboxes__item"
60
+ >
61
+ <ForwardRef(LabelContainer)
62
+ className="govgr-checkboxes__label"
63
+ >
64
+ <ForwardRef(Base)
65
+ as="label"
66
+ className="govgr-checkboxes__label govgr-label"
67
+ >
68
+ <label
69
+ className="govgr-checkboxes__label govgr-label"
70
+ >
71
+ hello
72
+ <ForwardRef(Base)
73
+ as="input"
74
+ className="govgr-checkboxes__input"
75
+ type="checkbox"
76
+ >
77
+ <input
78
+ className="govgr-checkboxes__input"
79
+ type="checkbox"
80
+ />
81
+ </ForwardRef(Base)>
82
+ </label>
83
+ </ForwardRef(Base)>
84
+ </ForwardRef(LabelContainer)>
27
85
  </div>
28
86
  </ForwardRef(CheckboxItem)>
29
87
  `;
@@ -35,25 +93,32 @@ exports[`renders the CheckboxItem with \`name\` prop 1`] = `
35
93
  <div
36
94
  className="govgr-checkboxes__item"
37
95
  >
38
- <label
39
- className="govgr-label govgr-checkboxes__label"
96
+ <ForwardRef(LabelContainer)
97
+ className="govgr-checkboxes__label"
40
98
  >
41
- hello
42
99
  <ForwardRef(Base)
43
- as="input"
44
- className="govgr-checkboxes__input"
45
- disabled={false}
46
- name="example"
47
- type="checkbox"
100
+ as="label"
101
+ className="govgr-checkboxes__label govgr-label"
48
102
  >
49
- <input
50
- className="govgr-checkboxes__input"
51
- disabled={false}
52
- name="example"
53
- type="checkbox"
54
- />
103
+ <label
104
+ className="govgr-checkboxes__label govgr-label"
105
+ >
106
+ hello
107
+ <ForwardRef(Base)
108
+ as="input"
109
+ className="govgr-checkboxes__input"
110
+ name="example"
111
+ type="checkbox"
112
+ >
113
+ <input
114
+ className="govgr-checkboxes__input"
115
+ name="example"
116
+ type="checkbox"
117
+ />
118
+ </ForwardRef(Base)>
119
+ </label>
55
120
  </ForwardRef(Base)>
56
- </label>
121
+ </ForwardRef(LabelContainer)>
57
122
  </div>
58
123
  </ForwardRef(CheckboxItem)>
59
124
  `;
@@ -67,27 +132,94 @@ exports[`renders the CheckboxItem with \`value\` \`name\` and \`disabled\` props
67
132
  <div
68
133
  className="govgr-checkboxes__item"
69
134
  >
70
- <label
71
- className="govgr-checkboxes__label--disabled govgr-label govgr-checkboxes__label"
135
+ <ForwardRef(LabelContainer)
136
+ className="govgr-checkboxes__label--disabled govgr-checkboxes__label"
137
+ >
138
+ <ForwardRef(Base)
139
+ as="label"
140
+ className="govgr-checkboxes__label--disabled govgr-checkboxes__label govgr-label"
141
+ >
142
+ <label
143
+ className="govgr-checkboxes__label--disabled govgr-checkboxes__label govgr-label"
144
+ >
145
+ hello
146
+ <ForwardRef(Base)
147
+ as="input"
148
+ className="govgr-checkboxes__input"
149
+ disabled={true}
150
+ name="example"
151
+ type="checkbox"
152
+ value="example"
153
+ >
154
+ <input
155
+ className="govgr-checkboxes__input"
156
+ disabled={true}
157
+ name="example"
158
+ type="checkbox"
159
+ value="example"
160
+ />
161
+ </ForwardRef(Base)>
162
+ </label>
163
+ </ForwardRef(Base)>
164
+ </ForwardRef(LabelContainer)>
165
+ </div>
166
+ </ForwardRef(CheckboxItem)>
167
+ `;
168
+
169
+ exports[`renders the CheckboxItem with \`value\` \`name\`, \`divider\` and \`disabled\` props 1`] = `
170
+ <ForwardRef(CheckboxItem)
171
+ disabled={true}
172
+ divider="ή"
173
+ name="example"
174
+ value="example"
175
+ >
176
+ <ForwardRef(ChoiceDivider)
177
+ text="ή"
178
+ >
179
+ <ForwardRef(Base)
180
+ as="div"
181
+ className="govgr-choice-divider"
182
+ >
183
+ <div
184
+ className="govgr-choice-divider"
185
+ >
186
+ ή
187
+ </div>
188
+ </ForwardRef(Base)>
189
+ </ForwardRef(ChoiceDivider)>
190
+ <div
191
+ className="govgr-checkboxes__item"
192
+ >
193
+ <ForwardRef(LabelContainer)
194
+ className="govgr-checkboxes__label--disabled govgr-checkboxes__label"
72
195
  >
73
- hello
74
196
  <ForwardRef(Base)
75
- as="input"
76
- className="govgr-checkboxes__input"
77
- disabled={true}
78
- name="example"
79
- type="checkbox"
80
- value="example"
197
+ as="label"
198
+ className="govgr-checkboxes__label--disabled govgr-checkboxes__label govgr-label"
81
199
  >
82
- <input
83
- className="govgr-checkboxes__input"
84
- disabled={true}
85
- name="example"
86
- type="checkbox"
87
- value="example"
88
- />
200
+ <label
201
+ className="govgr-checkboxes__label--disabled govgr-checkboxes__label govgr-label"
202
+ >
203
+ hello
204
+ <ForwardRef(Base)
205
+ as="input"
206
+ className="govgr-checkboxes__input"
207
+ disabled={true}
208
+ name="example"
209
+ type="checkbox"
210
+ value="example"
211
+ >
212
+ <input
213
+ className="govgr-checkboxes__input"
214
+ disabled={true}
215
+ name="example"
216
+ type="checkbox"
217
+ value="example"
218
+ />
219
+ </ForwardRef(Base)>
220
+ </label>
89
221
  </ForwardRef(Base)>
90
- </label>
222
+ </ForwardRef(LabelContainer)>
91
223
  </div>
92
224
  </ForwardRef(CheckboxItem)>
93
225
  `;
@@ -99,25 +231,32 @@ exports[`renders the CheckboxItem with \`value\` prop 1`] = `
99
231
  <div
100
232
  className="govgr-checkboxes__item"
101
233
  >
102
- <label
103
- className="govgr-label govgr-checkboxes__label"
234
+ <ForwardRef(LabelContainer)
235
+ className="govgr-checkboxes__label"
104
236
  >
105
- hello
106
237
  <ForwardRef(Base)
107
- as="input"
108
- className="govgr-checkboxes__input"
109
- disabled={false}
110
- type="checkbox"
111
- value="example"
238
+ as="label"
239
+ className="govgr-checkboxes__label govgr-label"
112
240
  >
113
- <input
114
- className="govgr-checkboxes__input"
115
- disabled={false}
116
- type="checkbox"
117
- value="example"
118
- />
241
+ <label
242
+ className="govgr-checkboxes__label govgr-label"
243
+ >
244
+ hello
245
+ <ForwardRef(Base)
246
+ as="input"
247
+ className="govgr-checkboxes__input"
248
+ type="checkbox"
249
+ value="example"
250
+ >
251
+ <input
252
+ className="govgr-checkboxes__input"
253
+ type="checkbox"
254
+ value="example"
255
+ />
256
+ </ForwardRef(Base)>
257
+ </label>
119
258
  </ForwardRef(Base)>
120
- </label>
259
+ </ForwardRef(LabelContainer)>
121
260
  </div>
122
261
  </ForwardRef(CheckboxItem)>
123
262
  `;
@@ -127,23 +266,30 @@ exports[`renders the CheckboxItem with no props 1`] = `
127
266
  <div
128
267
  className="govgr-checkboxes__item"
129
268
  >
130
- <label
131
- className="govgr-label govgr-checkboxes__label"
269
+ <ForwardRef(LabelContainer)
270
+ className="govgr-checkboxes__label"
132
271
  >
133
- hello
134
272
  <ForwardRef(Base)
135
- as="input"
136
- className="govgr-checkboxes__input"
137
- disabled={false}
138
- type="checkbox"
273
+ as="label"
274
+ className="govgr-checkboxes__label govgr-label"
139
275
  >
140
- <input
141
- className="govgr-checkboxes__input"
142
- disabled={false}
143
- type="checkbox"
144
- />
276
+ <label
277
+ className="govgr-checkboxes__label govgr-label"
278
+ >
279
+ hello
280
+ <ForwardRef(Base)
281
+ as="input"
282
+ className="govgr-checkboxes__input"
283
+ type="checkbox"
284
+ >
285
+ <input
286
+ className="govgr-checkboxes__input"
287
+ type="checkbox"
288
+ />
289
+ </ForwardRef(Base)>
290
+ </label>
145
291
  </ForwardRef(Base)>
146
- </label>
292
+ </ForwardRef(LabelContainer)>
147
293
  </div>
148
294
  </ForwardRef(CheckboxItem)>
149
295
  `;
@@ -21,6 +21,9 @@ it('renders the CheckboxItem with `value` prop', () => {
21
21
  it('renders the CheckboxItem with `disabled` prop', () => {
22
22
  expect(mount(<CheckboxItem disabled>hello</CheckboxItem>)).toMatchSnapshot();
23
23
  });
24
+ it('renders the CheckboxItem with `divider` prop', () => {
25
+ expect(mount(<CheckboxItem divider='ή'>hello</CheckboxItem>)).toMatchSnapshot();
26
+ });
24
27
 
25
28
  it('renders the CheckboxItem with `value` `name` and `disabled` props', () => {
26
29
  expect(
@@ -31,3 +34,13 @@ it('renders the CheckboxItem with `value` `name` and `disabled` props', () => {
31
34
  )
32
35
  ).toMatchSnapshot();
33
36
  });
37
+ it('renders the CheckboxItem with `value` `name`, `divider` and `disabled` props', () => {
38
+ expect(
39
+ mount(
40
+ <CheckboxItem value="example" name="example" divider='ή' disabled>
41
+ hello
42
+ </CheckboxItem>
43
+ )
44
+ ).toMatchSnapshot();
45
+ });
46
+
@@ -2,8 +2,16 @@ import React from 'react';
2
2
  import Base, { BaseProps } from '@digigov/react-core/Base';
3
3
  import LabelContainer from '@digigov/react-core/LabelContainer';
4
4
  import clsx from 'clsx';
5
+ import ChoiceDivider from '@digigov/react-core/ChoiceDivider';
5
6
 
6
- export interface CheckboxItemProps extends BaseProps<'input'> {}
7
+ export interface CheckboxItemProps extends BaseProps<'input'> {
8
+ /**
9
+ * divider is optional.
10
+ * Add this prop to add a choice divider ontop of a checkbox item.
11
+ * The string is the text that it will appear above this checkbox item.
12
+ */
13
+ divider?: string;
14
+ }
7
15
  /**
8
16
  * Details for the CheckboxItem.
9
17
  * CheckboxItem component allows the user to select one or more checkboxes
@@ -13,36 +21,39 @@ export const CheckboxItem = React.forwardRef<
13
21
  HTMLInputElement,
14
22
  CheckboxItemProps
15
23
  >(function CheckboxItem(
16
- { name, value, className, disabled, children, ...props },
24
+ { name, value, divider, className, disabled, children, ...props },
17
25
  ref
18
26
  ) {
19
27
  return (
20
- <div
21
- className={clsx(className, {
22
- 'govgr-checkboxes__item': true,
23
- })}
24
- >
25
- <LabelContainer
26
- className={clsx({
27
- 'govgr-checkboxes__label': true,
28
- 'govgr-checkboxes__label--disabled': disabled === true,
28
+ <>
29
+ {divider && <ChoiceDivider text={divider} />}
30
+ <div
31
+ className={clsx(className, {
32
+ 'govgr-checkboxes__item': true,
29
33
  })}
30
34
  >
31
- {children}
32
- <Base
33
- as="input"
34
- ref={ref}
35
- type="checkbox"
36
- name={name}
37
- value={value}
35
+ <LabelContainer
38
36
  className={clsx({
39
- 'govgr-checkboxes__input': true,
37
+ 'govgr-checkboxes__label': true,
38
+ 'govgr-checkboxes__label--disabled': disabled === true,
40
39
  })}
41
- disabled={disabled}
42
- {...props}
43
- />
44
- </LabelContainer>
45
- </div>
40
+ >
41
+ {children}
42
+ <Base
43
+ as="input"
44
+ ref={ref}
45
+ type="checkbox"
46
+ name={name}
47
+ value={value}
48
+ className={clsx({
49
+ 'govgr-checkboxes__input': true,
50
+ })}
51
+ disabled={disabled}
52
+ {...props}
53
+ />
54
+ </LabelContainer>
55
+ </div>
56
+ </>
46
57
  );
47
58
  });
48
59
 
@@ -0,0 +1,18 @@
1
+ // Jest Snapshot v1, https://goo.gl/fbAQLP
2
+
3
+ exports[`renders the ChoiceDivider with text prop 1`] = `
4
+ <ForwardRef(ChoiceDivider)
5
+ text="ή"
6
+ >
7
+ <ForwardRef(Base)
8
+ as="div"
9
+ className="govgr-choice-divider"
10
+ >
11
+ <div
12
+ className="govgr-choice-divider"
13
+ >
14
+ ή
15
+ </div>
16
+ </ForwardRef(Base)>
17
+ </ForwardRef(ChoiceDivider)>
18
+ `;
@@ -0,0 +1,8 @@
1
+ import React from 'react';
2
+ import { mount } from 'enzyme';
3
+
4
+ import ChoiceDivider from '@digigov/react-core/ChoiceDivider';
5
+
6
+ it('renders the ChoiceDivider with text prop', () => {
7
+ expect(mount(<ChoiceDivider text='ή'/>)).toMatchSnapshot();
8
+ });
@@ -0,0 +1,29 @@
1
+ import React from 'react';
2
+ import Base, { BaseProps } from '@digigov/react-core/Base';
3
+ import clsx from 'clsx';
4
+
5
+ export interface ChoiceDividerProps extends BaseProps<'div'> {
6
+ text?: string;
7
+ }
8
+ /**
9
+ * ChoiceDivider component adds a text divider on top of a Radio or Checkbox item.
10
+ * It's been used as a prop ("divider") inside RadioItem and CheckboxItem.
11
+ */
12
+ export const ChoiceDivider = React.forwardRef<HTMLDivElement, ChoiceDividerProps>(
13
+ function ChoiceDivider({ text, className, ...props }, ref) {
14
+ return (
15
+ <Base
16
+ as="div"
17
+ ref={ref}
18
+ className={clsx(className, {
19
+ 'govgr-choice-divider': true,
20
+ })}
21
+ {...props}
22
+ >
23
+ {text}
24
+ </Base>
25
+ );
26
+ }
27
+ );
28
+
29
+ export default ChoiceDivider;