@grasp-labs/ds-microfrontends-integration 0.24.2 → 0.25.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.
- package/dist/components/groups/GroupGuard.d.ts +31 -0
- package/dist/components/groups/GroupsProvider.d.ts +1 -1
- package/dist/components/groups/index.d.ts +1 -1
- package/dist/components/schemaFields/DefaultFieldRenderer.d.ts +6 -0
- package/dist/components/schemaFields/SchemaFields.d.ts +5 -2
- package/dist/components/schemaFields/SchemaFields.stories.d.ts +8 -1
- package/dist/components/schemaFields/index.d.ts +2 -1
- package/dist/{index-DWI6fl0D.js → index-Cw60PS3o.js} +6521 -6482
- package/dist/{index.esm-fQDYRCEr-B_OscmDH.js → index.esm-fQDYRCEr-jok3LQJQ.js} +1 -1
- package/dist/index.js +37 -36
- package/dist/lib/schema/schemaResolver/utils.d.ts +4 -4
- package/dist/types/Navigation.d.ts +3 -3
- package/package.json +1 -1
- package/dist/components/groups/RouteGuard.d.ts +0 -31
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
import { ReactNode } from 'react';
|
|
2
|
+
export type GroupGuardProps = {
|
|
3
|
+
children: ReactNode;
|
|
4
|
+
requiredGroups: string | string[];
|
|
5
|
+
fallback?: ReactNode;
|
|
6
|
+
};
|
|
7
|
+
/**
|
|
8
|
+
* GroupGuard component that conditionally renders children based on user groups.
|
|
9
|
+
*
|
|
10
|
+
* @param requiredGroups - Single group name or array of group names. If array, user needs all groups.
|
|
11
|
+
* @param fallback - Optional component to render when access is denied
|
|
12
|
+
*
|
|
13
|
+
* @example
|
|
14
|
+
* ```tsx
|
|
15
|
+
* // User needs admin group
|
|
16
|
+
* <GroupGuard requiredGroups="admin">
|
|
17
|
+
* <AdminPanel />
|
|
18
|
+
* </GroupGuard>
|
|
19
|
+
*
|
|
20
|
+
* // User needs all of these groups
|
|
21
|
+
* <GroupGuard requiredGroups={['admin', 'moderator']}>
|
|
22
|
+
* <ModeratedContent />
|
|
23
|
+
* </GroupGuard>
|
|
24
|
+
*
|
|
25
|
+
* // With fallback
|
|
26
|
+
* <GroupGuard requiredGroups="admin" fallback={<AccessDenied />}>
|
|
27
|
+
* <AdminPanel />
|
|
28
|
+
* </GroupGuard>
|
|
29
|
+
* ```
|
|
30
|
+
*/
|
|
31
|
+
export declare const GroupGuard: ({ children, requiredGroups, fallback, }: GroupGuardProps) => ReactNode;
|
|
@@ -1,2 +1,2 @@
|
|
|
1
1
|
export * from './GroupsProvider';
|
|
2
|
-
export * from './
|
|
2
|
+
export * from './GroupGuard';
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
import { Control, FieldValues, Path } from 'react-hook-form';
|
|
2
|
+
import { FieldDescriptor } from 'src/lib/schema/types';
|
|
3
|
+
export declare function DefaultFieldRenderer<T extends FieldValues>({ descriptor, control, }: {
|
|
4
|
+
descriptor: FieldDescriptor<Path<T>>;
|
|
5
|
+
control: Control<T>;
|
|
6
|
+
}): import("react/jsx-runtime").JSX.Element;
|
|
@@ -1,4 +1,6 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { ReactNode } from 'react';
|
|
2
|
+
import { Control, FieldErrors, FieldValues, Path } from 'react-hook-form';
|
|
3
|
+
import { FieldDescriptor } from 'src/lib/schema/types';
|
|
2
4
|
import { Schema } from 'src/types/Schema';
|
|
3
5
|
type SchemaFieldsProps<T extends FieldValues = FieldValues> = {
|
|
4
6
|
control: Control<T>;
|
|
@@ -6,6 +8,7 @@ type SchemaFieldsProps<T extends FieldValues = FieldValues> = {
|
|
|
6
8
|
schema: Schema | null;
|
|
7
9
|
prefix?: string;
|
|
8
10
|
fieldDirection?: "horizontal" | "vertical";
|
|
11
|
+
renderField?: (descriptor: FieldDescriptor<Path<T>>, defaultRender: () => ReactNode) => ReactNode;
|
|
9
12
|
};
|
|
10
|
-
export declare function SchemaFields<T extends FieldValues = FieldValues>({ control, errors, schema, prefix, fieldDirection, }: SchemaFieldsProps<T>): import("react/jsx-runtime").JSX.Element;
|
|
13
|
+
export declare function SchemaFields<T extends FieldValues = FieldValues>({ control, errors, schema, prefix, fieldDirection, renderField, }: SchemaFieldsProps<T>): import("react/jsx-runtime").JSX.Element;
|
|
11
14
|
export {};
|
|
@@ -1,15 +1,18 @@
|
|
|
1
1
|
import { StoryObj } from '@storybook/react-vite';
|
|
2
|
+
import { default as React } from 'react';
|
|
2
3
|
import { Resolver } from 'react-hook-form';
|
|
4
|
+
import { FieldDescriptor } from 'src/lib/schema/types';
|
|
3
5
|
import { Schema } from 'src/types';
|
|
4
6
|
type SchemaFieldsExampleProps = {
|
|
5
7
|
schema: Schema;
|
|
6
8
|
defaultValues: Record<string, unknown>;
|
|
7
9
|
fieldDirection?: "horizontal" | "vertical";
|
|
8
10
|
resolver?: Resolver;
|
|
11
|
+
renderField?: (descriptor: FieldDescriptor, defaultRender: () => React.ReactNode) => React.ReactNode;
|
|
9
12
|
};
|
|
10
13
|
declare const meta: {
|
|
11
14
|
title: string;
|
|
12
|
-
component: ({ schema, defaultValues, fieldDirection, resolver, }: SchemaFieldsExampleProps) => import("react/jsx-runtime").JSX.Element;
|
|
15
|
+
component: ({ schema, defaultValues, fieldDirection, resolver, renderField, }: SchemaFieldsExampleProps) => import("react/jsx-runtime").JSX.Element;
|
|
13
16
|
parameters: {
|
|
14
17
|
layout: string;
|
|
15
18
|
};
|
|
@@ -19,11 +22,13 @@ declare const meta: {
|
|
|
19
22
|
defaultValues: Record<string, unknown>;
|
|
20
23
|
fieldDirection?: "horizontal" | "vertical" | undefined;
|
|
21
24
|
resolver?: Resolver | undefined;
|
|
25
|
+
renderField?: ((descriptor: FieldDescriptor, defaultRender: () => React.ReactNode) => React.ReactNode) | undefined;
|
|
22
26
|
}>, context: import('storybook/internal/csf').StoryContext<import('@storybook/react').ReactRenderer, {
|
|
23
27
|
schema: Schema;
|
|
24
28
|
defaultValues: Record<string, unknown>;
|
|
25
29
|
fieldDirection?: "horizontal" | "vertical" | undefined;
|
|
26
30
|
resolver?: Resolver | undefined;
|
|
31
|
+
renderField?: ((descriptor: FieldDescriptor, defaultRender: () => React.ReactNode) => React.ReactNode) | undefined;
|
|
27
32
|
}>) => import("react/jsx-runtime").JSX.Element)[];
|
|
28
33
|
};
|
|
29
34
|
export default meta;
|
|
@@ -33,3 +38,5 @@ export declare const BasicFormWithCustomValidation: Story;
|
|
|
33
38
|
export declare const BasicFormWithVerticalAlignment: Story;
|
|
34
39
|
export declare const NestedWithVault: Story;
|
|
35
40
|
export declare const PasswordFields: Story;
|
|
41
|
+
export declare const WithCustomField: Story;
|
|
42
|
+
export declare const WithFullOverride: Story;
|
|
@@ -1,5 +1,7 @@
|
|
|
1
1
|
export { ArrayField } from './ArrayField';
|
|
2
2
|
export { BooleanField } from './BooleanField';
|
|
3
|
+
export { DateField } from './DateField';
|
|
4
|
+
export { DefaultFieldRenderer } from './DefaultFieldRenderer';
|
|
3
5
|
export { EnumField } from './EnumField';
|
|
4
6
|
export { FieldError } from './FieldError';
|
|
5
7
|
export { JsonField } from './JsonField';
|
|
@@ -7,4 +9,3 @@ export { NumberField } from './NumberField';
|
|
|
7
9
|
export { SchemaFields } from './SchemaFields';
|
|
8
10
|
export { TextField } from './TextField';
|
|
9
11
|
export { VaultField } from './VaultField';
|
|
10
|
-
export { DateField } from './DateField';
|