Merge branch 'master' into add-additional-scaffolder-permissions

Signed-off-by: Frank Kong <50030060+Zaperex@users.noreply.github.com>
This commit is contained in:
Frank Kong
2024-05-02 09:02:19 -04:00
committed by GitHub
384 changed files with 5528 additions and 2449 deletions
+10
View File
@@ -1,5 +1,15 @@
# @backstage/plugin-scaffolder-react
## 1.8.5-next.1
### Patch Changes
- 9156654: Capturing more event clicks for scaffolder
- Updated dependencies
- @backstage/plugin-scaffolder-common@1.5.2-next.1
- @backstage/core-components@0.14.6-next.1
- @backstage/plugin-catalog-react@1.11.4-next.1
## 1.8.5-next.0
### Patch Changes
+1 -1
View File
@@ -1,6 +1,6 @@
{
"name": "@backstage/plugin-scaffolder-react",
"version": "1.8.5-next.0",
"version": "1.8.5-next.1",
"description": "A frontend library that helps other Backstage plugins interact with the Scaffolder",
"backstage": {
"role": "web-library"
@@ -35,9 +35,8 @@ import {
type FormValidation,
} from './createAsyncValidators';
import { ReviewState, type ReviewStateProps } from '../ReviewState';
import { useTemplateSchema } from '../../hooks/useTemplateSchema';
import { useTemplateSchema, useFormDataFromQuery } from '../../hooks';
import validator from '@rjsf/validator-ajv8';
import { useFormDataFromQuery } from '../../hooks';
import { useTransformSchemaToProps } from '../../hooks/useTransformSchemaToProps';
import { hasErrors } from './utils';
import * as FieldOverrides from './FieldOverrides';
@@ -115,6 +114,13 @@ export const Stepper = (stepperProps: StepperProps) => {
const [errors, setErrors] = useState<undefined | FormValidation>();
const styles = useStyles();
const backLabel =
presentation?.buttonLabels?.backButtonText ?? backButtonText;
const createLabel =
presentation?.buttonLabels?.createButtonText ?? createButtonText;
const reviewLabel =
presentation?.buttonLabels?.reviewButtonText ?? reviewButtonText;
const extensions = useMemo(() => {
return Object.fromEntries(
props.extensions.map(({ name, component }) => [name, component]),
@@ -150,7 +156,8 @@ export const Stepper = (stepperProps: StepperProps) => {
const handleCreate = useCallback(() => {
props.onCreate(formState);
}, [props, formState]);
analytics.captureEvent('click', `${createLabel}`);
}, [props, formState, analytics, createLabel]);
const currentStep = useTransformSchemaToProps(steps[activeStep], { layouts });
@@ -181,13 +188,6 @@ export const Stepper = (stepperProps: StepperProps) => {
setFormState(current => ({ ...current, ...formData }));
};
const backLabel =
presentation?.buttonLabels?.backButtonText ?? backButtonText;
const createLabel =
presentation?.buttonLabels?.createButtonText ?? createButtonText;
const reviewLabel =
presentation?.buttonLabels?.reviewButtonText ?? reviewButtonText;
return (
<>
{isValidating && <LinearProgress variant="indeterminate" />}
@@ -214,7 +214,7 @@ export const Stepper = (stepperProps: StepperProps) => {
);
})}
<MuiStep>
<MuiStepLabel>Review</MuiStepLabel>
<MuiStepLabel>${reviewLabel}</MuiStepLabel>
</MuiStep>
</MuiStepper>
<div className={styles.formWrapper}>
@@ -274,7 +274,7 @@ export const Stepper = (stepperProps: StepperProps) => {
className={styles.backButton}
disabled={activeStep < 1}
>
Back
{backLabel}
</Button>
<Button
variant="contained"
@@ -16,7 +16,11 @@
import { RELATION_OWNED_BY } from '@backstage/catalog-model';
import { MarkdownContent, UserIcon } from '@backstage/core-components';
import { IconComponent, useApp } from '@backstage/core-plugin-api';
import {
IconComponent,
useAnalytics,
useApp,
} from '@backstage/core-plugin-api';
import {
EntityRefLinks,
getEntityRelations,
@@ -32,7 +36,7 @@ import Button from '@material-ui/core/Button';
import Grid from '@material-ui/core/Grid';
import { makeStyles, Theme } from '@material-ui/core/styles';
import LanguageIcon from '@material-ui/icons/Language';
import React from 'react';
import React, { useCallback } from 'react';
import { CardHeader } from './CardHeader';
import { CardLink } from './CardLink';
import { usePermission } from '@backstage/plugin-permission-react';
@@ -94,8 +98,9 @@ export interface TemplateCardProps {
* @alpha
*/
export const TemplateCard = (props: TemplateCardProps) => {
const { template } = props;
const { onSelected, template } = props;
const styles = useStyles();
const analytics = useAnalytics();
const ownedByRelations = getEntityRelations(template, RELATION_OWNED_BY);
const app = useApp();
const iconResolver = (key?: string): IconComponent =>
@@ -109,6 +114,10 @@ export const TemplateCard = (props: TemplateCardProps) => {
permission: taskCreatePermission,
resourceRef: 'task',
});
const handleChoose = useCallback(() => {
analytics.captureEvent('click', `Template has been opened`);
onSelected?.(template);
}, [analytics, onSelected, template]);
return (
<Card>
@@ -198,7 +207,7 @@ export const TemplateCard = (props: TemplateCardProps) => {
size="small"
variant="outlined"
color="primary"
onClick={() => props.onSelected?.(template)}
onClick={handleChoose}
>
Choose
</Button>