@rjsf/shadcn 6.0.2 → 6.1.1

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 (36) hide show
  1. package/dist/amethyst-haze.css +1 -1
  2. package/dist/caffeine.css +1 -1
  3. package/dist/claude.css +1 -1
  4. package/dist/clean-slate.css +1 -1
  5. package/dist/default.css +1 -1
  6. package/dist/index.cjs +52 -32
  7. package/dist/index.cjs.map +3 -3
  8. package/dist/neo-brutalism.css +1 -1
  9. package/dist/pastel-dreams.css +1 -1
  10. package/dist/rjsf-shadcn.esm.js +50 -30
  11. package/dist/rjsf-shadcn.esm.js.map +2 -2
  12. package/dist/rjsf-shadcn.umd.js +49 -30
  13. package/dist/soft-pop.css +1 -1
  14. package/dist/twitter.css +1 -1
  15. package/dist/vercel.css +1 -1
  16. package/lib/ArrayFieldItemTemplate/ArrayFieldItemTemplate.js +3 -2
  17. package/lib/ArrayFieldItemTemplate/ArrayFieldItemTemplate.js.map +1 -1
  18. package/lib/ArrayFieldTemplate/ArrayFieldTemplate.js +1 -1
  19. package/lib/ArrayFieldTemplate/ArrayFieldTemplate.js.map +1 -1
  20. package/lib/FieldHelpTemplate/FieldHelpTemplate.js +3 -3
  21. package/lib/FieldHelpTemplate/FieldHelpTemplate.js.map +1 -1
  22. package/lib/FieldTemplate/FieldTemplate.js +1 -1
  23. package/lib/FieldTemplate/FieldTemplate.js.map +1 -1
  24. package/lib/ObjectFieldTemplate/ObjectFieldTemplate.js +1 -1
  25. package/lib/ObjectFieldTemplate/ObjectFieldTemplate.js.map +1 -1
  26. package/lib/WrapIfAdditionalTemplate/WrapIfAdditionalTemplate.d.ts +1 -1
  27. package/lib/WrapIfAdditionalTemplate/WrapIfAdditionalTemplate.js +4 -2
  28. package/lib/WrapIfAdditionalTemplate/WrapIfAdditionalTemplate.js.map +1 -1
  29. package/lib/tsconfig.tsbuildinfo +1 -1
  30. package/package.json +3 -2
  31. package/src/ArrayFieldItemTemplate/ArrayFieldItemTemplate.tsx +6 -2
  32. package/src/ArrayFieldTemplate/ArrayFieldTemplate.tsx +1 -1
  33. package/src/FieldHelpTemplate/FieldHelpTemplate.tsx +8 -5
  34. package/src/FieldTemplate/FieldTemplate.tsx +2 -0
  35. package/src/ObjectFieldTemplate/ObjectFieldTemplate.tsx +10 -8
  36. package/src/WrapIfAdditionalTemplate/WrapIfAdditionalTemplate.tsx +30 -18
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@rjsf/shadcn",
3
- "version": "6.0.2",
3
+ "version": "6.1.1",
4
4
  "main": "dist/index.js",
5
5
  "module": "lib/index.js",
6
6
  "typings": "lib/index.d.ts",
@@ -45,11 +45,12 @@
45
45
  "scripts": {
46
46
  "build:css": "tsx build-css.ts",
47
47
  "compileReplacer": "tsc -p tsconfig.replacer.json && move-file lodashReplacer.js lodashReplacer.cjs",
48
+ "copy-resources": "cp dist/*.css resources",
48
49
  "build:ts": "npm run compileReplacer && rimraf ./lib && tsc -b tsconfig.build.json && tsc-alias -p tsconfig.build.json",
49
50
  "build:cjs": "esbuild ./src/index.ts --bundle --outfile=dist/index.cjs --sourcemap --packages=external --format=cjs",
50
51
  "build:esm": "esbuild ./src/index.ts --bundle --outfile=dist/rjsf-shadcn.esm.js --sourcemap --packages=external --format=esm",
51
52
  "build:umd": "rollup dist/rjsf-shadcn.esm.js --format=umd --file=dist/rjsf-shadcn.umd.js --name=@rjsf/rjsf-shadcn",
52
- "build": "npm run build:ts && npm run build:cjs && npm run build:esm && npm run build:umd && npm run build:css",
53
+ "build": "npm run build:ts && npm run build:cjs && npm run build:esm && npm run build:umd && npm run build:css && npm run copy-resources",
53
54
  "cs-check": "prettier -l \"{src,test}/**/*.ts?(x)\"",
54
55
  "cs-format": "prettier \"{src,test}/**/*.ts?(x)\" --write",
55
56
  "lint": "eslint src test",
@@ -16,20 +16,24 @@ export default function ArrayFieldItemTemplate<
16
16
  S extends StrictRJSFSchema = RJSFSchema,
17
17
  F extends FormContextType = any,
18
18
  >(props: ArrayFieldItemTemplateProps<T, S, F>) {
19
- const { children, buttonsProps, hasToolbar, uiSchema, registry } = props;
19
+ const { children, buttonsProps, displayLabel, hasDescription, hasToolbar, uiSchema, registry } = props;
20
20
  const uiOptions = getUiOptions<T, S, F>(uiSchema);
21
21
  const ArrayFieldItemButtonsTemplate = getTemplate<'ArrayFieldItemButtonsTemplate', T, S, F>(
22
22
  'ArrayFieldItemButtonsTemplate',
23
23
  registry,
24
24
  uiOptions,
25
25
  );
26
+ const margin = hasDescription ? -6 : 22;
26
27
  return (
27
28
  <div>
28
29
  <div className='mb-2 flex flex-row flex-wrap items-center'>
29
30
  <div className='grow shrink'>{children}</div>
30
31
  <div className='flex items-end justify-end p-0.5'>
31
32
  {hasToolbar && (
32
- <div className='flex gap-2'>
33
+ <div
34
+ className='flex gap-2'
35
+ style={{ marginLeft: '5px', marginTop: displayLabel ? `${margin}px` : undefined }}
36
+ >
33
37
  <ArrayFieldItemButtonsTemplate {...buttonsProps} />
34
38
  </div>
35
39
  )}
@@ -71,7 +71,7 @@ export default function ArrayFieldTemplate<
71
71
  {!showOptionalDataControlInTitle ? optionalDataControl : undefined}
72
72
  {items}
73
73
  {canAdd && (
74
- <div className='mt-2 flex'>
74
+ <div className='mt-2 flex justify-end'>
75
75
  <AddButton
76
76
  id={buttonId(fieldPathId, 'add')}
77
77
  className='rjsf-array-item-add'
@@ -1,5 +1,5 @@
1
1
  import { FieldHelpProps, FormContextType, RJSFSchema, StrictRJSFSchema, helpId } from '@rjsf/utils';
2
-
2
+ import { RichHelp } from '@rjsf/core';
3
3
  import { cn } from '../lib/utils';
4
4
 
5
5
  /** The `FieldHelpTemplate` component renders any help desired for a field
@@ -11,14 +11,17 @@ export default function FieldHelpTemplate<
11
11
  S extends StrictRJSFSchema = RJSFSchema,
12
12
  F extends FormContextType = any,
13
13
  >(props: FieldHelpProps<T, S, F>) {
14
- const { fieldPathId, help, hasErrors } = props;
14
+ const { fieldPathId, help, uiSchema, registry, hasErrors } = props;
15
15
  if (!help) {
16
16
  return null;
17
17
  }
18
- const id = helpId(fieldPathId);
18
+
19
19
  return (
20
- <span className={cn('text-xs font-medium text-muted-foreground', { ' text-destructive': hasErrors })} id={id}>
21
- {help}
20
+ <span
21
+ className={cn('text-xs font-medium text-muted-foreground', { 'text-destructive': hasErrors })}
22
+ id={helpId(fieldPathId)}
23
+ >
24
+ <RichHelp help={help} registry={registry} uiSchema={uiSchema} />
22
25
  </span>
23
26
  );
24
27
  }
@@ -58,9 +58,11 @@ export default function FieldTemplate<
58
58
  disabled={disabled}
59
59
  id={id}
60
60
  label={label}
61
+ displayLabel={displayLabel}
61
62
  onKeyRename={onKeyRename}
62
63
  onKeyRenameBlur={onKeyRenameBlur}
63
64
  onRemoveProperty={onRemoveProperty}
65
+ rawDescription={rawDescription}
64
66
  readonly={readonly}
65
67
  required={required}
66
68
  schema={schema}
@@ -78,14 +78,16 @@ export default function ObjectFieldTemplate<
78
78
  </div>
79
79
  ))}
80
80
  {canExpand(schema, uiSchema, formData) ? (
81
- <AddButton
82
- id={buttonId(fieldPathId, 'add')}
83
- onClick={onAddProperty}
84
- disabled={disabled || readonly}
85
- className='rjsf-object-property-expand'
86
- uiSchema={uiSchema}
87
- registry={registry}
88
- />
81
+ <div className='mt-2 flex justify-end'>
82
+ <AddButton
83
+ id={buttonId(fieldPathId, 'add')}
84
+ onClick={onAddProperty}
85
+ disabled={disabled || readonly}
86
+ className='rjsf-object-property-expand'
87
+ uiSchema={uiSchema}
88
+ registry={registry}
89
+ />
90
+ </div>
89
91
  ) : null}
90
92
  </div>
91
93
  </>
@@ -27,8 +27,10 @@ export default function WrapIfAdditionalTemplate<
27
27
  disabled,
28
28
  id,
29
29
  label,
30
+ displayLabel,
30
31
  onRemoveProperty,
31
32
  onKeyRenameBlur,
33
+ rawDescription,
32
34
  readonly,
33
35
  required,
34
36
  schema,
@@ -49,16 +51,20 @@ export default function WrapIfAdditionalTemplate<
49
51
  );
50
52
  }
51
53
 
54
+ const marginDesc = rawDescription ? -28 : 0;
55
+ const margin = displayLabel ? 22 + marginDesc : 0;
52
56
  const keyId = `${id}-key`;
53
57
 
54
58
  return (
55
59
  <>
56
- <div className={`flex flex-row items-center gap-2 relative w-full ${classNames}`} style={style}>
57
- <div className='flex flex-col w-full gap-2 line-clamp-1'>
58
- <div className='flex-grow'>
59
- <label htmlFor={keyId} className='pt-2 text-sm font-medium text-muted-foreground mb-4 line-clamp-1'>
60
- {keyLabel}
61
- </label>
60
+ <div className={`grid grid-cols-12 col-span-12 items-center gap-2 ${classNames}`} style={style}>
61
+ <div className='grid gap-2 col-span-5'>
62
+ <div className='flex flex-col gap-2'>
63
+ {displayLabel && (
64
+ <label htmlFor={keyId} className='text-sm font-medium text-muted-foreground leading-none'>
65
+ {keyLabel}
66
+ </label>
67
+ )}
62
68
  <div className='pl-0.5'>
63
69
  <Input
64
70
  required={required}
@@ -68,22 +74,28 @@ export default function WrapIfAdditionalTemplate<
68
74
  name={keyId}
69
75
  onBlur={!readonly ? onKeyRenameBlur : undefined}
70
76
  type='text'
71
- className='mt-1 w-full border shadow-sm'
77
+ className='w-full border shadow-sm'
72
78
  />
73
79
  </div>
80
+ {!!rawDescription && (
81
+ <span className='text-xs font-medium text-muted-foreground'>
82
+ <div className='text-sm text-muted-foreground'>&nbsp;</div>
83
+ </span>
84
+ )}
74
85
  </div>
75
- <div className='flex-grow pr-0.5'>{children}</div>
76
86
  </div>
77
-
78
- <RemoveButton
79
- id={buttonId(id, 'remove')}
80
- iconType='block'
81
- className='rjsf-object-property-remove w-full'
82
- disabled={disabled || readonly}
83
- onClick={onRemoveProperty}
84
- uiSchema={uiSchema}
85
- registry={registry}
86
- />
87
+ <div className='grid gap-2 col-span-6 pr-0.5'>{children}</div>
88
+ <div className='grid gap-2 col-span-1' style={{ marginTop: `${margin}px` }}>
89
+ <RemoveButton
90
+ id={buttonId(id, 'remove')}
91
+ iconType='block'
92
+ className='rjsf-object-property-remove w-full'
93
+ disabled={disabled || readonly}
94
+ onClick={onRemoveProperty}
95
+ uiSchema={uiSchema}
96
+ registry={registry}
97
+ />
98
+ </div>
87
99
  </div>
88
100
  <Separator dir='horizontal' className='mt-2' />
89
101
  </>