From b0b424ce32117c1fc1681a0593384d8d97fa6a81 Mon Sep 17 00:00:00 2001 From: Nicholas Cunningham Date: Wed, 3 Apr 2024 13:45:26 -0600 Subject: [PATCH] docs(nx-dev): Add feedback CTA (#22455) --- .../feature-doc-viewer/src/lib/doc-viewer.tsx | 89 +++++-- .../src/lib/table-of-contents.tsx | 3 + nx-dev/feature-feedback/.babelrc | 12 + nx-dev/feature-feedback/.eslintrc.json | 18 ++ nx-dev/feature-feedback/README.md | 7 + nx-dev/feature-feedback/jest.config.ts | 10 + nx-dev/feature-feedback/project.json | 11 + nx-dev/feature-feedback/src/index.ts | 1 + .../src/lib/feature-feedback.module.css | 63 +++++ .../src/lib/feedback-dialog.tsx | 250 ++++++++++++++++++ nx-dev/feature-feedback/tsconfig.json | 20 ++ nx-dev/feature-feedback/tsconfig.lib.json | 24 ++ nx-dev/feature-feedback/tsconfig.spec.json | 20 ++ nx-dev/nx-dev/pages/index.tsx | 2 +- .../ui-common/src/lib/github-star-widget.tsx | 2 +- tsconfig.base.json | 1 + 16 files changed, 515 insertions(+), 18 deletions(-) create mode 100644 nx-dev/feature-feedback/.babelrc create mode 100644 nx-dev/feature-feedback/.eslintrc.json create mode 100644 nx-dev/feature-feedback/README.md create mode 100644 nx-dev/feature-feedback/jest.config.ts create mode 100644 nx-dev/feature-feedback/project.json create mode 100644 nx-dev/feature-feedback/src/index.ts create mode 100644 nx-dev/feature-feedback/src/lib/feature-feedback.module.css create mode 100644 nx-dev/feature-feedback/src/lib/feedback-dialog.tsx create mode 100644 nx-dev/feature-feedback/tsconfig.json create mode 100644 nx-dev/feature-feedback/tsconfig.lib.json create mode 100644 nx-dev/feature-feedback/tsconfig.spec.json diff --git a/nx-dev/feature-doc-viewer/src/lib/doc-viewer.tsx b/nx-dev/feature-doc-viewer/src/lib/doc-viewer.tsx index b0d96fa983..cdf07da473 100644 --- a/nx-dev/feature-doc-viewer/src/lib/doc-viewer.tsx +++ b/nx-dev/feature-doc-viewer/src/lib/doc-viewer.tsx @@ -8,9 +8,11 @@ import { renderMarkdown } from '@nx/nx-dev/ui-markdoc'; import { NextSeo } from 'next-seo'; import { useRouter } from 'next/router'; import { cx } from '@nx/nx-dev/ui-primitives'; -import { useRef } from 'react'; +import { useRef, useState } from 'react'; import { collectHeadings, TableOfContents } from './table-of-contents'; import { RelatedDocumentsSection } from './related-documents-section'; +import { sendCustomEvent } from '@nx/nx-dev/feature-analytics'; +import { FeedbackDialog } from '@nx/nx-dev/feature-feedback'; export function DocViewer({ document, @@ -51,6 +53,17 @@ export function DocViewer({ return splits[splits.length - 1]; } + const [showFeedback, setShowFeedback] = useState(false); + + function submitIdeaFeedback(feedback: string) { + // sanitize the feedback from the user script tags/other malicious code + const sanitizedFeedback = feedback.replace(/(<([^>]+)>)/gi, ''); + + sendCustomEvent('feedback', 'feedback', 'idea', undefined, { + feedback: sanitizedFeedback, + }); + } + return ( <>