@digigov/react-core 2.0.0-rc.18 → 2.0.0-rc.19

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 (55) hide show
  1. package/Base/index.native/index.js +47 -42
  2. package/Base/index.native.js.map +2 -2
  3. package/Base/index.web/index.js +41 -41
  4. package/Base/index.web.d.ts +32 -25
  5. package/Base/index.web.js.map +2 -2
  6. package/Base/utils/index.js +50 -43
  7. package/Base/utils.d.ts +1 -2
  8. package/Base/utils.js.map +2 -2
  9. package/CheckboxItemInput/index.native.d.ts +1 -2
  10. package/CopyToClipboardMessage/index.native.d.ts +1 -2
  11. package/DateInputItem/index.native.d.ts +1 -2
  12. package/Details/index.native.d.ts +1 -2
  13. package/ModalContainer/index.js +1 -7
  14. package/ModalContainer/index.js.map +2 -2
  15. package/NavListItemActionContainer/index.native.d.ts +2 -3
  16. package/NotificationBannerLink/index.native.d.ts +1 -2
  17. package/Stack/index.d.ts +9 -1
  18. package/Stack/index.js +6 -1
  19. package/Stack/index.js.map +2 -2
  20. package/TextArea/index.native.d.ts +1 -2
  21. package/TextInput/index.native.d.ts +1 -2
  22. package/Unpurge/index.js +2381 -2
  23. package/Unpurge/index.js.map +2 -2
  24. package/cjs/Base/index.native/index.js +47 -42
  25. package/cjs/Base/index.native.js.map +2 -2
  26. package/cjs/Base/index.web/index.js +41 -41
  27. package/cjs/Base/index.web.js.map +2 -2
  28. package/cjs/Base/utils/index.js +50 -43
  29. package/cjs/Base/utils.js.map +2 -2
  30. package/cjs/ModalContainer/index.js +1 -7
  31. package/cjs/ModalContainer/index.js.map +2 -2
  32. package/cjs/Stack/index.js +6 -1
  33. package/cjs/Stack/index.js.map +2 -2
  34. package/cjs/Unpurge/index.js +2381 -2
  35. package/cjs/Unpurge/index.js.map +2 -2
  36. package/cjs/lazy/index.js +1 -1
  37. package/cjs/lazy.js.map +2 -2
  38. package/cjs/registry/index.js +2 -0
  39. package/cjs/registry.js.map +2 -2
  40. package/index.js +1 -1
  41. package/lazy/index.js +1 -1
  42. package/lazy.d.ts +2 -2
  43. package/lazy.js.map +2 -2
  44. package/package.json +3 -3
  45. package/registry/index.js +2 -0
  46. package/registry.d.ts +1 -0
  47. package/registry.js.map +2 -2
  48. package/src/Base/index.native.tsx +59 -42
  49. package/src/Base/index.web.tsx +76 -67
  50. package/src/Base/utils.ts +38 -28
  51. package/src/ModalContainer/index.tsx +12 -10
  52. package/src/Stack/index.tsx +32 -13
  53. package/src/Unpurge/index.tsx +2383 -3
  54. package/src/lazy.js +1 -1
  55. package/src/registry.js +2 -0
@@ -32,53 +32,53 @@ export type BaseProps<C extends React.ElementType> =
32
32
  C,
33
33
  {
34
34
  /** margin is optional. It has not a default value. */
35
- margin?: spacingValues;
35
+ margin?: SpacingValues | SpacingMediaValues;
36
36
  /** marginTop is optional. It has not a default value. */
37
- marginTop?: spacingValues;
37
+ marginTop?: SpacingValues | SpacingMediaValues;
38
38
  /** marginBottom is optional. It has not a default value. */
39
- marginBottom?: spacingValues;
39
+ marginBottom?: SpacingValues | SpacingMediaValues;
40
40
  /** marginLeft is optional. It has not a default value. */
41
- marginLeft?: spacingValues;
41
+ marginLeft?: SpacingValues | SpacingMediaValues;
42
42
  /** marginRight is optional. It has not a default value. */
43
- marginRight?: spacingValues;
43
+ marginRight?: SpacingValues | SpacingMediaValues;
44
44
  /** Alternative for margin. Margin is optional. It has not a default value. */
45
- m?: spacingValues;
45
+ m?: SpacingValues | SpacingMediaValues;
46
46
  /** Alternative for marginTop. MarginTop is optional. It has not a default value. */
47
- mt?: spacingValues;
47
+ mt?: SpacingValues | SpacingMediaValues;
48
48
  /** Alternative for marginBottom. MarginBottom is optional. It has not a default value. */
49
- mb?: spacingValues;
49
+ mb?: SpacingValues | SpacingMediaValues;
50
50
  /** Alternative for marginLeft. MarginLeft is optional. It has not a default value. */
51
- ml?: spacingValues;
51
+ ml?: SpacingValues | SpacingMediaValues;
52
52
  /** Alternative for marginRight. MarginRight is optional. It has not a default value. */
53
- mr?: spacingValues;
53
+ mr?: SpacingValues | SpacingMediaValues;
54
54
  /** Alternative for marginX. MarginX is optional. It has not a default value. */
55
- mx?: spacingValues;
55
+ mx?: SpacingValues | SpacingMediaValues;
56
56
  /** Alternative for marginY. MarginY is optional. It has not a default value. */
57
- my?: spacingValues;
57
+ my?: SpacingValues | SpacingMediaValues;
58
58
  /** padding is optional. It has not a default value. */
59
- padding?: spacingValues;
59
+ padding?: SpacingValues | SpacingMediaValues;
60
60
  /** paddingTop is optional. It has not a default value. */
61
- paddingTop?: spacingValues;
61
+ paddingTop?: SpacingValues | SpacingMediaValues;
62
62
  /** paddingBottom is optional. It has not a default value. */
63
- paddingBottom?: spacingValues;
63
+ paddingBottom?: SpacingValues | SpacingMediaValues;
64
64
  /** paddingLeft is optional. It has not a default value. */
65
- paddingLeft?: spacingValues;
65
+ paddingLeft?: SpacingValues | SpacingMediaValues;
66
66
  /** paddingRight is optional. It has not a default value. */
67
- paddingRight?: spacingValues;
67
+ paddingRight?: SpacingValues | SpacingMediaValues;
68
68
  /** Alternative for padding. Padding is optional. It has not a default value. */
69
- p?: spacingValues;
69
+ p?: SpacingValues | SpacingMediaValues;
70
70
  /** Alternative for paddingTop. PaddingTop is optional. It has not a default value. */
71
- pt?: spacingValues;
71
+ pt?: SpacingValues | SpacingMediaValues;
72
72
  /** Alternative for paddingBottom. PaddingBottom is optional. It has not a default value. */
73
- pb?: spacingValues;
73
+ pb?: SpacingValues | SpacingMediaValues;
74
74
  /** Alternative for paddingLeft. PaddingLeft is optional. It has not a default value. */
75
- pl?: spacingValues;
75
+ pl?: SpacingValues | SpacingMediaValues;
76
76
  /** Alternative for paddingRight. PaddingRight is optional. It has not a default value. */
77
- pr?: spacingValues;
77
+ pr?: SpacingValues | SpacingMediaValues;
78
78
  /** Alternative for paddingX. PaddingX is optional. It has not a default value. */
79
- px?: spacingValues;
79
+ px?: SpacingValues | SpacingMediaValues;
80
80
  /** Alternative for paddingY. PaddingY is optional. It has not a default value. */
81
- py?: spacingValues;
81
+ py?: SpacingValues | SpacingMediaValues;
82
82
  /** printHidden is optional. Default value is false. When true, the component is hidden at print. */
83
83
  printHidden?: boolean;
84
84
  /** printVisible is optional. When block, the component is displayed as block. When inline, the component is displayed as inline.*/
@@ -106,11 +106,11 @@ export type BaseProps<C extends React.ElementType> =
106
106
  /** Components will be hidden between xl and 2xl screen size. */
107
107
  xlHidden?: boolean;
108
108
  /** display is optional. It has not a default value. */
109
- display?: 'flex' | 'block' | 'none'
109
+ display?: 'flex' | 'block' | 'none';
110
110
  }
111
111
  >;
112
112
 
113
- type spacingValues =
113
+ export type SpacingValues =
114
114
  | 0
115
115
  | 0.5
116
116
  | 1
@@ -146,6 +146,14 @@ type spacingValues =
146
146
  | 80
147
147
  | 96;
148
148
 
149
+ export type SpacingMediaValues = {
150
+ xs?: SpacingValues;
151
+ sm?: SpacingValues;
152
+ md?: SpacingValues;
153
+ lg?: SpacingValues;
154
+ xl?: SpacingValues;
155
+ };
156
+
149
157
  /**
150
158
  * This is the type used in the type annotation for the component
151
159
  */
@@ -204,50 +212,51 @@ export const Base: BaseComponent = React.forwardRef(function Base<
204
212
  ) {
205
213
  const Component = as || 'span';
206
214
 
215
+ const basePropToClassName = basePropGenerator({
216
+ display,
217
+ margin,
218
+ marginTop,
219
+ marginBottom,
220
+ marginLeft,
221
+ marginRight,
222
+ m,
223
+ mt,
224
+ mb,
225
+ ml,
226
+ mr,
227
+ mx,
228
+ my,
229
+ padding,
230
+ paddingTop,
231
+ paddingBottom,
232
+ paddingLeft,
233
+ paddingRight,
234
+ p,
235
+ pt,
236
+ pb,
237
+ pr,
238
+ pl,
239
+ px,
240
+ py,
241
+ printHidden,
242
+ printVisible,
243
+ hidden,
244
+ xsUpHidden,
245
+ smUpHidden,
246
+ mdUpHidden,
247
+ lgUpHidden,
248
+ xlUpHidden,
249
+ xsHidden,
250
+ smHidden,
251
+ mdHidden,
252
+ lgHidden,
253
+ xlHidden,
254
+ });
255
+
207
256
  return (
208
257
  <Component
209
258
  as={as}
210
- className={basePropGenerator({
211
- display,
212
- margin,
213
- marginTop,
214
- marginBottom,
215
- marginLeft,
216
- marginRight,
217
- m,
218
- mt,
219
- mb,
220
- ml,
221
- mr,
222
- mx,
223
- my,
224
- padding,
225
- paddingTop,
226
- paddingBottom,
227
- paddingLeft,
228
- paddingRight,
229
- p,
230
- pt,
231
- pb,
232
- pr,
233
- pl,
234
- px,
235
- py,
236
- printHidden,
237
- printVisible,
238
- hidden,
239
- xsUpHidden,
240
- smUpHidden,
241
- mdUpHidden,
242
- lgUpHidden,
243
- xlUpHidden,
244
- xsHidden,
245
- smHidden,
246
- mdHidden,
247
- lgHidden,
248
- xlHidden,
249
- className,
250
- })}
259
+ className={`${basePropToClassName} ${className}`}
251
260
  ref={ref}
252
261
  {...props}
253
262
  >
package/src/Base/utils.ts CHANGED
@@ -1,5 +1,25 @@
1
1
  import clsx from 'clsx';
2
2
 
3
+ // Helper function to handle both SpacingValues and SpacingMediaValues
4
+ const generateSpacingClasses = (prefix, spacing) => {
5
+ if (typeof spacing === 'object') {
6
+ // It's a SpacingMediaValues (media-specific)
7
+ return {
8
+ [`${prefix}-xs-${spacing?.xs}`]: spacing?.xs !== undefined,
9
+ [`${prefix}-sm-${spacing?.sm}`]: spacing?.sm !== undefined,
10
+ [`${prefix}-md-${spacing?.md}`]: spacing?.md !== undefined,
11
+ [`${prefix}-lg-${spacing?.lg}`]: spacing?.lg !== undefined,
12
+ [`${prefix}-xl-${spacing?.xl}`]: spacing?.xl !== undefined,
13
+ };
14
+ } else if (spacing !== undefined) {
15
+ // It's a regular SpacingValues
16
+ return {
17
+ [`${prefix}-${spacing}`]: true,
18
+ };
19
+ }
20
+ return {};
21
+ };
22
+
3
23
  export const basePropGenerator = ({
4
24
  display,
5
25
  margin,
@@ -39,34 +59,23 @@ export const basePropGenerator = ({
39
59
  mdHidden,
40
60
  lgHidden,
41
61
  xlHidden,
42
- className,
43
- }) =>
44
- clsx(className, {
45
- [`ds-display-${display}`]: display !== undefined ? true : undefined,
46
- [`ds-m-${margin}`]: margin !== undefined ? true : undefined,
47
- [`ds-mt-${marginTop}`]: marginTop !== undefined ? true : undefined,
48
- [`ds-mb-${marginBottom}`]: marginBottom !== undefined ? true : undefined,
49
- [`ds-mr-${marginRight}`]: marginRight !== undefined ? true : undefined,
50
- [`ds-ml-${marginLeft}`]: marginLeft !== undefined ? true : undefined,
51
- [`ds-m-${m}`]: m !== undefined ? true : undefined,
52
- [`ds-mt-${mt}`]: mt !== undefined ? true : undefined,
53
- [`ds-mb-${mb}`]: mb !== undefined ? true : undefined,
54
- [`ds-mr-${mr}`]: mr !== undefined ? true : undefined,
55
- [`ds-ml-${ml}`]: ml !== undefined ? true : undefined,
56
- [`ds-mx-${mx}`]: mx !== undefined ? true : undefined,
57
- [`ds-my-${my}`]: my !== undefined ? true : undefined,
58
- [`ds-p-${padding}`]: padding !== undefined ? true : undefined,
59
- [`ds-pt-${paddingTop}`]: paddingTop !== undefined ? true : undefined,
60
- [`ds-pb-${paddingBottom}`]: paddingBottom !== undefined ? true : undefined,
61
- [`ds-pr-${paddingRight}`]: paddingRight !== undefined ? true : undefined,
62
- [`ds-pl-${paddingLeft}`]: paddingLeft !== undefined ? true : undefined,
63
- [`ds-p-${p}`]: p !== undefined ? true : undefined,
64
- [`ds-pt-${pt}`]: pt !== undefined ? true : undefined,
65
- [`ds-pb-${pb}`]: pb !== undefined ? true : undefined,
66
- [`ds-pr-${pr}`]: pr !== undefined ? true : undefined,
67
- [`ds-pl-${pl}`]: pl !== undefined ? true : undefined,
68
- [`ds-px-${px}`]: px !== undefined ? true : undefined,
69
- [`ds-py-${py}`]: py !== undefined ? true : undefined,
62
+ }) => {
63
+ return clsx({
64
+ [`ds-display-${display}`]: display !== undefined,
65
+ ...generateSpacingClasses('ds-m', m ?? margin),
66
+ ...generateSpacingClasses('ds-mt', mt ?? marginTop),
67
+ ...generateSpacingClasses('ds-mb', mb ?? marginBottom),
68
+ ...generateSpacingClasses('ds-mr', mr ?? marginRight),
69
+ ...generateSpacingClasses('ds-ml', ml ?? marginLeft),
70
+ ...generateSpacingClasses('ds-mx', mx),
71
+ ...generateSpacingClasses('ds-my', my),
72
+ ...generateSpacingClasses('ds-p', p ?? padding),
73
+ ...generateSpacingClasses('ds-pt', pt ?? paddingTop),
74
+ ...generateSpacingClasses('ds-pb', pb ?? paddingBottom),
75
+ ...generateSpacingClasses('ds-pr', pr ?? paddingRight),
76
+ ...generateSpacingClasses('ds-pl', pl ?? paddingLeft),
77
+ ...generateSpacingClasses('ds-px', px),
78
+ ...generateSpacingClasses('ds-py', py),
70
79
  'ds-print-hidden': !!printHidden,
71
80
  'ds-print-visible-block': printVisible === 'block',
72
81
  'ds-print-visible-inline': printVisible === 'inline',
@@ -82,3 +91,4 @@ export const basePropGenerator = ({
82
91
  'ds-hidden-lg': !!lgHidden,
83
92
  'ds-hidden-xl': !!xlHidden,
84
93
  });
94
+ };
@@ -32,7 +32,10 @@ export interface ModalContainerProps extends BaseProps<'div'> {
32
32
  export const ModalContainer = React.forwardRef<
33
33
  HTMLDivElement,
34
34
  ModalContainerProps
35
- >(function ModalContainer({ className, gaps = true, children, open, dense, ...props }, ref) {
35
+ >(function ModalContainer(
36
+ { className, gaps = true, children, open, dense, ...props },
37
+ ref
38
+ ) {
36
39
  return (
37
40
  <Base
38
41
  ref={ref}
@@ -44,16 +47,15 @@ export const ModalContainer = React.forwardRef<
44
47
  })}
45
48
  {...props}
46
49
  >
47
- <div className='ds-modal__body'>
48
- {gaps ?
49
- <div
50
- className='ds-modal__container'
51
- >
50
+ <Base as="div" className="ds-modal__body">
51
+ {gaps ? (
52
+ <Base as="div" className="ds-modal__container">
52
53
  {children}
53
- </div>
54
- :
55
- children}
56
- </div>
54
+ </Base>
55
+ ) : (
56
+ children
57
+ )}
58
+ </Base>
57
59
  </Base>
58
60
  );
59
61
  });
@@ -11,12 +11,12 @@ export interface StackProps extends BaseProps<'div'> {
11
11
  * justifyContent is optional. Set to control how items are positioned along Stack's main axis .
12
12
  */
13
13
  justifyContent?:
14
- | 'flex-start'
15
- | 'flex-end'
16
- | 'center'
17
- | 'space-between'
18
- | 'space-around'
19
- | 'space-evenly';
14
+ | 'flex-start'
15
+ | 'flex-end'
16
+ | 'center'
17
+ | 'space-between'
18
+ | 'space-around'
19
+ | 'space-evenly';
20
20
  /**
21
21
  * alignItems is optional. Set to control how items are positioned along Stack's cross axis.
22
22
  */
@@ -25,21 +25,30 @@ export interface StackProps extends BaseProps<'div'> {
25
25
  * alignContent is optional. Set to control how rows are positioned in multi-row Stack container.
26
26
  */
27
27
  alignContent?:
28
- | 'flex-start'
29
- | 'flex-end'
30
- | 'center'
31
- | 'space-between'
32
- | 'space-around'
33
- | 'space-evenly';
28
+ | 'flex-start'
29
+ | 'flex-end'
30
+ | 'center'
31
+ | 'space-between'
32
+ | 'space-around'
33
+ | 'space-evenly';
34
34
  /**
35
35
  * spacing is optional. Set to the number you want the space to be.
36
36
  */
37
- spacing?: 1 | 2 | 4 | 6 | 8 | 10 | 12;
37
+ spacing?: SpacingValues | SpacingMediaValues;
38
38
  /**
39
39
  * flexWrap is optional. The default value is 'wrap'.
40
40
  */
41
41
  flexWrap?: 'wrap' | 'nowrap';
42
42
  }
43
+
44
+ type SpacingValues = 1 | 2 | 3 | 4 | 5 | 6 | 8 | 10 | 11 | 12;
45
+ type SpacingMediaValues = {
46
+ xs?: SpacingValues;
47
+ sm?: SpacingValues;
48
+ md?: SpacingValues;
49
+ lg?: SpacingValues;
50
+ xl?: SpacingValues;
51
+ };
43
52
  /**
44
53
  * ...
45
54
  */
@@ -70,6 +79,16 @@ export const Stack = React.forwardRef<HTMLDivElement, StackProps>(
70
79
  [`ds-stack--content-${alignContent}`]: alignContent,
71
80
  'ds-stack--nowrap': flexWrap === 'nowrap',
72
81
  [`ds-gap-${spacing}`]: spacing !== undefined,
82
+ [`ds-gap-xs-${(spacing as SpacingMediaValues)?.xs}`]:
83
+ (spacing as SpacingMediaValues)?.xs !== undefined,
84
+ [`ds-gap-sm-${(spacing as SpacingMediaValues)?.sm}`]:
85
+ (spacing as SpacingMediaValues)?.sm !== undefined,
86
+ [`ds-gap-md-${(spacing as SpacingMediaValues)?.md}`]:
87
+ (spacing as SpacingMediaValues)?.md !== undefined,
88
+ [`ds-gap-lg-${(spacing as SpacingMediaValues)?.lg}`]:
89
+ (spacing as SpacingMediaValues)?.lg !== undefined,
90
+ [`ds-gap-xl-${(spacing as SpacingMediaValues)?.xl}`]:
91
+ (spacing as SpacingMediaValues)?.xl !== undefined,
73
92
  })}
74
93
  {...props}
75
94
  >