Page Not Found
We could not find what you were looking for.
Please contact the owner of the site that linked you to the original URL and let them know their link is broken.
diff --git a/client/e2e/pages/feedback-history-details.page.ts b/client/e2e/pages/feedback-history-details.page.ts index ae6d3766..2c875a33 100644 --- a/client/e2e/pages/feedback-history-details.page.ts +++ b/client/e2e/pages/feedback-history-details.page.ts @@ -3,6 +3,7 @@ import { Persona } from './sign-in.page'; type Details = { message?: string; // note: there's no message for spontaneous feedback + context: string; positive: string; negative: string; comment: string; @@ -44,6 +45,7 @@ export class FeedbackHistoryDetailsPage { if (details.message) { await expect(this.page.getByText(details.message), 'Feedback "message" should be visible').toBeVisible(); } + await expect(this.page.getByText(details.context), 'Feedback "context" should be visible').toBeVisible(); await expect(this.page.getByText(details.positive), 'Feedback "positive" should be visible').toBeVisible(); await expect(this.page.getByText(details.negative), 'Feedback "negative" should be visible').toBeVisible(); await expect(this.page.getByText(details.comment), 'Feedback "comment" should be visible').toBeVisible(); diff --git a/client/e2e/pages/give-requested-feedback.page.ts b/client/e2e/pages/give-requested-feedback.page.ts index 5129e654..0faff32f 100644 --- a/client/e2e/pages/give-requested-feedback.page.ts +++ b/client/e2e/pages/give-requested-feedback.page.ts @@ -3,6 +3,7 @@ import { Persona } from './sign-in.page'; type Details = { message: string; + context: string; positive: string; negative: string; comment: string; @@ -19,6 +20,7 @@ export class GiveRequestedFeedbackPage { 'Feedback receiver should be filled in correctly', ).toHaveValue(persona); + await this.page.getByText('Contexte').fill(details.context); await this.page.getByText('Points forts').fill(details.positive); await this.page.getByText("Axes d'améliorations").fill(details.negative); await this.page.getByText('Commentaire').fill(details.comment); diff --git a/client/e2e/pages/give-spontaneous-feedback.page.ts b/client/e2e/pages/give-spontaneous-feedback.page.ts index 12923a92..b5134cd7 100644 --- a/client/e2e/pages/give-spontaneous-feedback.page.ts +++ b/client/e2e/pages/give-spontaneous-feedback.page.ts @@ -2,6 +2,7 @@ import { Page } from '@playwright/test'; import { Persona } from './sign-in.page'; type Details = { + context: string; positive: string; negative: string; comment: string; @@ -17,6 +18,7 @@ export class GiveSpontaneousFeedbackPage { async give(persona: Persona, details: Details) { await this.page.getByLabel('Email de votre collègue').fill(persona); + await this.page.getByText('Contexte').fill(details.context); await this.page.getByText('Points forts').fill(details.positive); await this.page.getByText("Axes d'améliorations").fill(details.negative); await this.page.getByText('Commentaire').fill(details.comment); diff --git a/client/e2e/pages/manager.page.ts b/client/e2e/pages/manager.page.ts index 03f45555..a51baf54 100644 --- a/client/e2e/pages/manager.page.ts +++ b/client/e2e/pages/manager.page.ts @@ -3,6 +3,7 @@ import { Persona } from './sign-in.page'; type Details = { message?: string; // note: there's no message for spontaneous feedback + context: string; positive: string; negative: string; comment: string; @@ -59,6 +60,7 @@ export class ManagerPage { if (details.message) { await expect(this.page.getByText(details.message), 'Feedback "message" should be visible').toBeVisible(); } + await expect(this.page.getByText(details.context), 'Feedback "context" should be visible').toBeVisible(); await expect(this.page.getByText(details.positive), 'Feedback "positive" should be visible').toBeVisible(); await expect(this.page.getByText(details.negative), 'Feedback "negative" should be visible').toBeVisible(); await expect(this.page.getByText(details.comment), 'Feedback "comment" should be visible').toBeVisible(); diff --git a/client/e2e/requested-feedback.spec.ts b/client/e2e/requested-feedback.spec.ts index 640d7ee1..557f9ebb 100644 --- a/client/e2e/requested-feedback.spec.ts +++ b/client/e2e/requested-feedback.spec.ts @@ -11,6 +11,7 @@ import { UserMenuPage } from './pages/user-menu.page'; const feedbackDetails = { message: 'Quel est votre feedback ?', + context: 'On a travaillé ensemble', positive: 'Ok', negative: 'Ko', comment: 'R.A.S', diff --git a/client/e2e/spontaneous-feedback.spec.ts b/client/e2e/spontaneous-feedback.spec.ts index 578f6935..d17275d2 100644 --- a/client/e2e/spontaneous-feedback.spec.ts +++ b/client/e2e/spontaneous-feedback.spec.ts @@ -9,6 +9,7 @@ import { Persona, SignInPage } from './pages/sign-in.page'; import { UserMenuPage } from './pages/user-menu.page'; const feedbackDetails = { + context: 'On a travaillé ensemble', positive: 'Ok', negative: 'Ko', comment: 'R.A.S', diff --git a/client/package.json b/client/package.json index 4ca138ac..adb44366 100644 --- a/client/package.json +++ b/client/package.json @@ -29,6 +29,7 @@ "server:e2e": "npm --prefix ../server run start:e2e", "prestack:e2e": "npm run build:e2e", "stack:e2e": "concurrently \"npm run firebase:e2e\" \"npm run server:e2e\"", + "e2e:install": "playwright install", "e2e:test": "playwright test", "e2e:report": "playwright show-report", "e2e:ui": "playwright test --ui", diff --git a/docs-source/docs/business-cases/feedback-draft.md b/docs-source/docs/business-cases/feedback-draft.md index dcd95e79..02472ca0 100644 --- a/docs-source/docs/business-cases/feedback-draft.md +++ b/docs-source/docs/business-cases/feedback-draft.md @@ -26,6 +26,7 @@ const feedbackRequestDraft: FeedbackRequestDraft = { // ---------------------------- // The relevant data start here + context: '', // Might be empty... positive: 'You did great...', // Might be empty because its just a draft negative: '', // Might be empty... comment: '', // Might be empty... @@ -46,6 +47,7 @@ const feedbackDraft: FeedbackDraft = { // ---------------------------- // The relevant data start here + context: '', // Might be empty... positive: 'You did great...', // Might be empty because its just a draft negative: '', // Might be empty... comment: '', // Might be empty... diff --git a/docs-source/docs/business-cases/give-spontaneous-feedback.md b/docs-source/docs/business-cases/give-spontaneous-feedback.md index f8b23924..792d6835 100644 --- a/docs-source/docs/business-cases/give-spontaneous-feedback.md +++ b/docs-source/docs/business-cases/give-spontaneous-feedback.md @@ -23,9 +23,10 @@ const feedback: Feedback = { // -------------------------------------- // In reality, the contents are encrypted - positive: 'You did great...', - negative: 'Youd should improve...', - comment: 'See you...', + context: 'Working together...', // optional + positive: 'You did great...', // required + negative: 'Youd should improve...', // required + comment: 'See you...', // optional // -------------------------------------- message: '', diff --git a/docs-source/docs/business-cases/reply-to-feedback-request.md b/docs-source/docs/business-cases/reply-to-feedback-request.md index 20c59c37..2168222f 100644 --- a/docs-source/docs/business-cases/reply-to-feedback-request.md +++ b/docs-source/docs/business-cases/reply-to-feedback-request.md @@ -36,6 +36,7 @@ const feedback: Feedback = { // ----------------------------------------------------- // Added fields (in reality, the contents are encrypted) + context: 'Working together...', // optional positive: 'You did great...', // required negative: 'Youd should improve...', // required comment: '', // optional diff --git a/docs-source/package-lock.json b/docs-source/package-lock.json index c08862a2..3373a7e9 100644 --- a/docs-source/package-lock.json +++ b/docs-source/package-lock.json @@ -13,7 +13,7 @@ "@fontsource/nunito": "^5.1.0", "@mdx-js/react": "^3.1.0", "clsx": "^2.1.1", - "prism-react-renderer": "^2.4.0", + "prism-react-renderer": "^2.4.1", "react": "^18.3.1", "react-dom": "^18.3.1", "remark-deflist": "^1.0.0" @@ -14552,9 +14552,9 @@ } }, "node_modules/prism-react-renderer": { - "version": "2.4.0", - "resolved": "https://registry.npmjs.org/prism-react-renderer/-/prism-react-renderer-2.4.0.tgz", - "integrity": "sha512-327BsVCD/unU4CNLZTWVHyUHKnsqcvj2qbPlQ8MiBE2eq2rgctjigPA1Gp9HLF83kZ20zNN6jgizHJeEsyFYOw==", + "version": "2.4.1", + "resolved": "https://registry.npmjs.org/prism-react-renderer/-/prism-react-renderer-2.4.1.tgz", + "integrity": "sha512-ey8Ls/+Di31eqzUxC46h8MksNuGx/n0AAC8uKpwFau4RPDYLuE3EXTp8N8G2vX2N7UC/+IXeNUnlWBGGcAG+Ig==", "license": "MIT", "dependencies": { "@types/prismjs": "^1.26.0", diff --git a/docs-source/package.json b/docs-source/package.json index 9373a395..5fdf8037 100644 --- a/docs-source/package.json +++ b/docs-source/package.json @@ -20,7 +20,7 @@ "@fontsource/nunito": "^5.1.0", "@mdx-js/react": "^3.1.0", "clsx": "^2.1.1", - "prism-react-renderer": "^2.4.0", + "prism-react-renderer": "^2.4.1", "react": "^18.3.1", "react-dom": "^18.3.1", "remark-deflist": "^1.0.0" diff --git a/docs/404.html b/docs/404.html index bd82f3f9..fa7cf9cc 100644 --- a/docs/404.html +++ b/docs/404.html @@ -5,8 +5,8 @@
We could not find what you were looking for.
Please contact the owner of the site that linked you to the original URL and let them know their link is broken.
feedbackRequest
drafts",id:"feedbackrequest-drafts",level:3},{value:"feedback
drafts",id:"feedback-drafts",level:3},{value:"Links",id:"links",level:2}];function l(e){const n={a:"a",admonition:"admonition",code:"code",h1:"h1",h2:"h2",h3:"h3",header:"header",li:"li",p:"p",pre:"pre",strong:"strong",ul:"ul",...(0,a.R)(),...e.components};return(0,c.jsxs)(c.Fragment,{children:[(0,c.jsx)(n.header,{children:(0,c.jsx)(n.h1,{id:"feedback-draft",children:"Feedback draft"})}),"\n",(0,c.jsx)(n.h2,{id:"user-story",children:"User story"}),"\n",(0,c.jsx)(n.p,{children:"When I reply to a feedback request or give spontaneous feedback, if I can't complete my feedback in one go, I'd like to be able to save it as a draft and continue later."}),"\n",(0,c.jsx)(n.h2,{id:"technical-specifications",children:"Technical specifications"}),"\n",(0,c.jsxs)(n.p,{children:["The drafts are stored in the ",(0,c.jsx)(n.code,{children:"feedbackDraft"})," Firestore collection."]}),"\n",(0,c.jsxs)(n.p,{children:["In this collection, the document ID is the ",(0,c.jsx)(n.code,{children:"giverEmail"})," (who wrote and saved the draft), whether he is internal or external to the Zenika organisation."]}),"\n",(0,c.jsxs)(n.p,{children:["For a given ",(0,c.jsx)(n.code,{children:"giverEmail"}),", there can be 2 nested collections:"]}),"\n",(0,c.jsxs)(n.ul,{children:["\n",(0,c.jsxs)(n.li,{children:[(0,c.jsx)(n.code,{children:"feedbackRequest"}),": contains drafts saved when replying to a feedback request"]}),"\n",(0,c.jsxs)(n.li,{children:[(0,c.jsx)(n.code,{children:"feedback"}),": contains drafts saved when giving a spontaneous feedback"]}),"\n"]}),"\n",(0,c.jsxs)(n.h3,{id:"feedbackrequest-drafts",children:[(0,c.jsx)(n.code,{children:"feedbackRequest"})," drafts"]}),"\n",(0,c.jsxs)(n.p,{children:["In this collection, the document ID is the ",(0,c.jsx)(n.code,{children:"tokenId"})," and the document contains the following fields:"]}),"\n",(0,c.jsx)(n.pre,{children:(0,c.jsx)(n.code,{className:"language-ts",children:"const feedbackRequestDraft: FeedbackRequestDraft = {\n token: '123secret', // Redondant data - same value as the document ID itself\n receiverEmail: 'pinochio@zenika.com', // Redondant data - already available in the original `FeedbackRequest` document\n\n // ----------------------------\n // The relevant data start here\n positive: 'You did great...', // Might be empty because its just a draft\n negative: '', // Might be empty...\n comment: '', // Might be empty...\n};\n"})}),"\n",(0,c.jsx)(n.admonition,{type:"note",children:(0,c.jsxs)(n.p,{children:["The redundant field ",(0,c.jsx)(n.code,{children:"receiverEmail"})," has been added to be able to display the list of drafts by recipient."]})}),"\n",(0,c.jsxs)(n.h3,{id:"feedback-drafts",children:[(0,c.jsx)(n.code,{children:"feedback"})," drafts"]}),"\n",(0,c.jsxs)(n.p,{children:["In this collection, the document ID is the ",(0,c.jsx)(n.code,{children:"receiverEmail"})," and the document contains the following fields:"]}),"\n",(0,c.jsx)(n.pre,{children:(0,c.jsx)(n.code,{className:"language-ts",children:"const feedbackDraft: FeedbackDraft = {\n receiverEmail: 'pinochio@zenika.com', // Redondant data - same value as the document ID itself\n\n // ----------------------------\n // The relevant data start here\n positive: 'You did great...', // Might be empty because its just a draft\n negative: '', // Might be empty...\n comment: '', // Might be empty...\n shared: true,\n};\n"})}),"\n",(0,c.jsx)(n.h2,{id:"links",children:"Links"}),"\n",(0,c.jsxs)(n.ul,{children:["\n",(0,c.jsxs)(n.li,{children:[(0,c.jsx)(n.strong,{children:"Client"}),"\n",(0,c.jsxs)(n.ul,{children:["\n",(0,c.jsx)(n.li,{children:(0,c.jsx)(n.a,{href:"https://github.com/Zenika/feedzback/blob/main/client/src/app/give-feedback/give-requested-feedback/give-requested-feedback.component.ts",children:(0,c.jsx)(n.code,{children:"GiveRequestedFeedbackComponent"})})}),"\n",(0,c.jsx)(n.li,{children:(0,c.jsx)(n.a,{href:"https://github.com/Zenika/feedzback/blob/main/client/src/app/give-feedback/give-feedback/give-feedback.component.ts",children:(0,c.jsx)(n.code,{children:"GiveFeedbackComponent"})})}),"\n",(0,c.jsx)(n.li,{children:(0,c.jsx)(n.a,{href:"https://github.com/Zenika/feedzback/blob/main/client/src/app/give-feedback/give-feedback/give-feedback-draft/give-feedback-draft.component.ts",children:(0,c.jsx)(n.code,{children:"GiveFeedbackDraftComponent"})})}),"\n",(0,c.jsx)(n.li,{children:(0,c.jsx)(n.a,{href:"https://github.com/Zenika/feedzback/blob/main/client/src/app/give-feedback/give-feedback/give-feedback-draft/give-feedback-draft.service.ts",children:(0,c.jsx)(n.code,{children:"GiveFeedbackDraftService"})})}),"\n"]}),"\n"]}),"\n",(0,c.jsxs)(n.li,{children:[(0,c.jsx)(n.strong,{children:"Server"}),"\n",(0,c.jsxs)(n.ul,{children:["\n",(0,c.jsxs)(n.li,{children:[(0,c.jsx)(n.a,{href:"https://github.com/Zenika/feedzback/blob/main/server/src/feedback/feedback.controller.ts",children:(0,c.jsx)(n.code,{children:"FeedbackController"})}),"\n",(0,c.jsxs)(n.ul,{children:["\n",(0,c.jsx)(n.li,{children:(0,c.jsx)(n.code,{children:"giveRequestedDraft"})}),"\n",(0,c.jsx)(n.li,{children:(0,c.jsx)(n.code,{children:"giveDraft"})}),"\n"]}),"\n"]}),"\n"]}),"\n"]}),"\n"]})]})}function h(e={}){const{wrapper:n}={...(0,a.R)(),...e.components};return n?(0,c.jsx)(n,{...e,children:(0,c.jsx)(l,{...e})}):l(e)}},8453:(e,n,s)=>{s.d(n,{R:()=>i,x:()=>d});var t=s(6540);const c={},a=t.createContext(c);function i(e){const n=t.useContext(a);return t.useMemo((function(){return"function"==typeof e?e(n):{...n,...e}}),[n,e])}function d(e){let n;return n=e.disableParentContext?"function"==typeof e.components?e.components(c):e.components||c:i(e.components),t.createElement(a.Provider,{value:n},e.children)}}}]);
\ No newline at end of file
diff --git a/docs/assets/js/e327052b.cde197cf.js b/docs/assets/js/e327052b.cde197cf.js
new file mode 100644
index 00000000..5f9727ee
--- /dev/null
+++ b/docs/assets/js/e327052b.cde197cf.js
@@ -0,0 +1 @@
+"use strict";(self.webpackChunkfeedzback_docs=self.webpackChunkfeedzback_docs||[]).push([[4187],{2455:(e,n,t)=>{t.r(n),t.d(n,{assets:()=>r,contentTitle:()=>d,default:()=>h,frontMatter:()=>a,metadata:()=>s,toc:()=>o});const s=JSON.parse('{"id":"business-cases/feedback-draft","title":"Feedback draft","description":"User story","source":"@site/docs/business-cases/feedback-draft.md","sourceDirName":"business-cases","slug":"/business-cases/feedback-draft","permalink":"/feedzback/docs/business-cases/feedback-draft","draft":false,"unlisted":false,"editUrl":"https://github.com/Zenika/feedzback/tree/main/docs-source/docs/business-cases/feedback-draft.md","tags":[],"version":"current","frontMatter":{},"sidebar":"default","previous":{"title":"Give spontaneous feedback","permalink":"/feedzback/docs/business-cases/give-spontaneous-feedback"},"next":{"title":"Shared feedback","permalink":"/feedzback/docs/business-cases/shared-feedback"}}');var c=t(4848),i=t(8453);const a={},d="Feedback draft",r={},o=[{value:"User story",id:"user-story",level:2},{value:"Technical specifications",id:"technical-specifications",level:2},{value:"feedbackRequest
drafts",id:"feedbackrequest-drafts",level:3},{value:"feedback
drafts",id:"feedback-drafts",level:3},{value:"Links",id:"links",level:2}];function l(e){const n={a:"a",admonition:"admonition",code:"code",h1:"h1",h2:"h2",h3:"h3",header:"header",li:"li",p:"p",pre:"pre",strong:"strong",ul:"ul",...(0,i.R)(),...e.components};return(0,c.jsxs)(c.Fragment,{children:[(0,c.jsx)(n.header,{children:(0,c.jsx)(n.h1,{id:"feedback-draft",children:"Feedback draft"})}),"\n",(0,c.jsx)(n.h2,{id:"user-story",children:"User story"}),"\n",(0,c.jsx)(n.p,{children:"When I reply to a feedback request or give spontaneous feedback, if I can't complete my feedback in one go, I'd like to be able to save it as a draft and continue later."}),"\n",(0,c.jsx)(n.h2,{id:"technical-specifications",children:"Technical specifications"}),"\n",(0,c.jsxs)(n.p,{children:["The drafts are stored in the ",(0,c.jsx)(n.code,{children:"feedbackDraft"})," Firestore collection."]}),"\n",(0,c.jsxs)(n.p,{children:["In this collection, the document ID is the ",(0,c.jsx)(n.code,{children:"giverEmail"})," (who wrote and saved the draft), whether he is internal or external to the Zenika organisation."]}),"\n",(0,c.jsxs)(n.p,{children:["For a given ",(0,c.jsx)(n.code,{children:"giverEmail"}),", there can be 2 nested collections:"]}),"\n",(0,c.jsxs)(n.ul,{children:["\n",(0,c.jsxs)(n.li,{children:[(0,c.jsx)(n.code,{children:"feedbackRequest"}),": contains drafts saved when replying to a feedback request"]}),"\n",(0,c.jsxs)(n.li,{children:[(0,c.jsx)(n.code,{children:"feedback"}),": contains drafts saved when giving a spontaneous feedback"]}),"\n"]}),"\n",(0,c.jsxs)(n.h3,{id:"feedbackrequest-drafts",children:[(0,c.jsx)(n.code,{children:"feedbackRequest"})," drafts"]}),"\n",(0,c.jsxs)(n.p,{children:["In this collection, the document ID is the ",(0,c.jsx)(n.code,{children:"tokenId"})," and the document contains the following fields:"]}),"\n",(0,c.jsx)(n.pre,{children:(0,c.jsx)(n.code,{className:"language-ts",children:"const feedbackRequestDraft: FeedbackRequestDraft = {\n token: '123secret', // Redondant data - same value as the document ID itself\n receiverEmail: 'pinochio@zenika.com', // Redondant data - already available in the original `FeedbackRequest` document\n\n // ----------------------------\n // The relevant data start here\n context: '', // Might be empty...\n positive: 'You did great...', // Might be empty because its just a draft\n negative: '', // Might be empty...\n comment: '', // Might be empty...\n};\n"})}),"\n",(0,c.jsx)(n.admonition,{type:"note",children:(0,c.jsxs)(n.p,{children:["The redundant field ",(0,c.jsx)(n.code,{children:"receiverEmail"})," has been added to be able to display the list of drafts by recipient."]})}),"\n",(0,c.jsxs)(n.h3,{id:"feedback-drafts",children:[(0,c.jsx)(n.code,{children:"feedback"})," drafts"]}),"\n",(0,c.jsxs)(n.p,{children:["In this collection, the document ID is the ",(0,c.jsx)(n.code,{children:"receiverEmail"})," and the document contains the following fields:"]}),"\n",(0,c.jsx)(n.pre,{children:(0,c.jsx)(n.code,{className:"language-ts",children:"const feedbackDraft: FeedbackDraft = {\n receiverEmail: 'pinochio@zenika.com', // Redondant data - same value as the document ID itself\n\n // ----------------------------\n // The relevant data start here\n context: '', // Might be empty...\n positive: 'You did great...', // Might be empty because its just a draft\n negative: '', // Might be empty...\n comment: '', // Might be empty...\n shared: true,\n};\n"})}),"\n",(0,c.jsx)(n.h2,{id:"links",children:"Links"}),"\n",(0,c.jsxs)(n.ul,{children:["\n",(0,c.jsxs)(n.li,{children:[(0,c.jsx)(n.strong,{children:"Client"}),"\n",(0,c.jsxs)(n.ul,{children:["\n",(0,c.jsx)(n.li,{children:(0,c.jsx)(n.a,{href:"https://github.com/Zenika/feedzback/blob/main/client/src/app/give-feedback/give-requested-feedback/give-requested-feedback.component.ts",children:(0,c.jsx)(n.code,{children:"GiveRequestedFeedbackComponent"})})}),"\n",(0,c.jsx)(n.li,{children:(0,c.jsx)(n.a,{href:"https://github.com/Zenika/feedzback/blob/main/client/src/app/give-feedback/give-feedback/give-feedback.component.ts",children:(0,c.jsx)(n.code,{children:"GiveFeedbackComponent"})})}),"\n",(0,c.jsx)(n.li,{children:(0,c.jsx)(n.a,{href:"https://github.com/Zenika/feedzback/blob/main/client/src/app/give-feedback/give-feedback/give-feedback-draft/give-feedback-draft.component.ts",children:(0,c.jsx)(n.code,{children:"GiveFeedbackDraftComponent"})})}),"\n",(0,c.jsx)(n.li,{children:(0,c.jsx)(n.a,{href:"https://github.com/Zenika/feedzback/blob/main/client/src/app/give-feedback/give-feedback/give-feedback-draft/give-feedback-draft.service.ts",children:(0,c.jsx)(n.code,{children:"GiveFeedbackDraftService"})})}),"\n"]}),"\n"]}),"\n",(0,c.jsxs)(n.li,{children:[(0,c.jsx)(n.strong,{children:"Server"}),"\n",(0,c.jsxs)(n.ul,{children:["\n",(0,c.jsxs)(n.li,{children:[(0,c.jsx)(n.a,{href:"https://github.com/Zenika/feedzback/blob/main/server/src/feedback/feedback.controller.ts",children:(0,c.jsx)(n.code,{children:"FeedbackController"})}),"\n",(0,c.jsxs)(n.ul,{children:["\n",(0,c.jsx)(n.li,{children:(0,c.jsx)(n.code,{children:"giveRequestedDraft"})}),"\n",(0,c.jsx)(n.li,{children:(0,c.jsx)(n.code,{children:"giveDraft"})}),"\n"]}),"\n"]}),"\n"]}),"\n"]}),"\n"]})]})}function h(e={}){const{wrapper:n}={...(0,i.R)(),...e.components};return n?(0,c.jsx)(n,{...e,children:(0,c.jsx)(l,{...e})}):l(e)}},8453:(e,n,t)=>{t.d(n,{R:()=>a,x:()=>d});var s=t(6540);const c={},i=s.createContext(c);function a(e){const n=s.useContext(i);return s.useMemo((function(){return"function"==typeof e?e(n):{...n,...e}}),[n,e])}function d(e){let n;return n=e.disableParentContext?"function"==typeof e.components?e.components(c):e.components||c:a(e.components),s.createElement(i.Provider,{value:n},e.children)}}}]);
\ No newline at end of file
diff --git a/docs/assets/js/main.1583c06c.js b/docs/assets/js/main.7ab6ca32.js
similarity index 93%
rename from docs/assets/js/main.1583c06c.js
rename to docs/assets/js/main.7ab6ca32.js
index ce47f37b..cf51c847 100644
--- a/docs/assets/js/main.1583c06c.js
+++ b/docs/assets/js/main.7ab6ca32.js
@@ -1,2 +1,2 @@
-/*! For license information please see main.1583c06c.js.LICENSE.txt */
-(self.webpackChunkfeedzback_docs=self.webpackChunkfeedzback_docs||[]).push([[8792],{8328:(e,t,n)=>{"use strict";n.d(t,{A:()=>f});n(6540);var r=n(3259),a=n.n(r),o=n(4054);const i={"1379c009":[()=>n.e(8931).then(n.bind(n,6872)),"@site/docs/business-cases/shared-feedback.md",6872],15415093:[()=>n.e(7595).then(n.bind(n,2607)),"@site/docs/audience.md",2607],17896441:[()=>Promise.all([n.e(1869),n.e(8554),n.e(8401)]).then(n.bind(n,575)),"@theme/DocItem",575],"182d926d":[()=>n.e(6089).then(n.bind(n,7193)),"@site/docs/business-cases/give-spontaneous-feedback.md",7193],"184f8cc3":[()=>n.e(9135).then(n.bind(n,1504)),"@site/docs/business-cases/request-feedback.md",1504],"1ccd811d":[()=>n.e(3464).then(n.bind(n,5528)),"@site/docs/ubiquitous-language.md",5528],"296d963c":[()=>n.e(8429).then(n.bind(n,4624)),"@site/docs/technical-guides/client/demo.md",4624],"33a49de8":[()=>n.e(3842).then(n.bind(n,4479)),"@site/docs/technical-guides/server/swagger.md",4479],"36994c47":[()=>n.e(9858).then(n.t.bind(n,5516,19)),"@generated/docusaurus-plugin-content-blog/default/__plugin.json",5516],"36f2e543":[()=>n.e(2137).then(n.bind(n,1572)),"@site/docs/ci-cd/quick-start.md",1572],"3b8c55ea":[()=>n.e(6803).then(n.bind(n,7248)),"@site/docs/installation.md",7248],"470ecfa7":[()=>n.e(238).then(n.bind(n,8280)),"@site/docs/technical-guides/environments/overview.md",8280],"47caca0e":[()=>n.e(905).then(n.bind(n,1357)),"@site/docs/technical-guides/client/cookies.md",1357],"4a707512":[()=>n.e(6102).then(n.bind(n,5931)),"@site/docs/ci-cd/circle-ci.md",5931],"4f3f1eb6":[()=>n.e(3136).then(n.bind(n,2305)),"@site/blog/2024-03-11-starting-documentation.md?truncated=true",2305],"5656e821":[()=>n.e(4939).then(n.bind(n,446)),"@site/docs/technical-guides/client/i18n.md",446],"5e95c892":[()=>n.e(9647).then(n.bind(n,7121)),"@theme/DocsRoot",7121],"5e9f5e1a":[()=>Promise.resolve().then(n.bind(n,4784)),"@generated/docusaurus.config",4784],"621db11d":[()=>Promise.all([n.e(1869),n.e(1531),n.e(4212)]).then(n.bind(n,8790)),"@theme/Blog/Pages/BlogAuthorsListPage",8790],"634558fb":[()=>n.e(2172).then(n.bind(n,2252)),"@site/docs/business-cases/reply-to-feedback-request.md",2252],"6c28a435":[()=>n.e(4347).then(n.t.bind(n,4248,19)),"@generated/docusaurus-plugin-content-docs/default/p/feedzback-docs-26a.json",4248],"6e9c3c91":[()=>n.e(7368).then(n.t.bind(n,8317,19)),"@generated/docusaurus-plugin-content-blog/default/p/feedzback-blog-archive-070.json",8317],75212946:[()=>n.e(9317).then(n.bind(n,5551)),"@site/blog/2024-03-11-starting-documentation.md",5551],"7ab81c4a":[()=>n.e(2852).then(n.bind(n,4718)),"@site/docs/documentation.md",4718],"814f3328":[()=>n.e(7472).then(n.t.bind(n,5513,19)),"~blog/default/blog-post-list-prop-default.json",5513],"94f84f1b":[()=>n.e(9441).then(n.bind(n,4886)),"@site/docs/technical-stack.md",4886],"9e4087bc":[()=>n.e(2711).then(n.bind(n,9331)),"@theme/BlogArchivePage",9331],"9f796194":[()=>n.e(5602).then(n.bind(n,8726)),"@site/docs/technical-guides/client/firebase-hosting.md",8726],a55ba532:[()=>n.e(6097).then(n.t.bind(n,1498,19)),"@generated/docusaurus-plugin-content-blog/default/p/feedzback-blog-46c.json",1498],a6aa9e1f:[()=>Promise.all([n.e(1869),n.e(8554),n.e(1531),n.e(7643)]).then(n.bind(n,2052)),"@theme/BlogListPage",2052],a7456010:[()=>n.e(1235).then(n.t.bind(n,8552,19)),"@generated/docusaurus-plugin-content-pages/default/__plugin.json",8552],a7bd4aaa:[()=>n.e(7098).then(n.bind(n,1723)),"@theme/DocVersionRoot",1723],a94703ab:[()=>Promise.all([n.e(1869),n.e(9048)]).then(n.bind(n,1377)),"@theme/DocRoot",1377],aba21aa0:[()=>n.e(5742).then(n.t.bind(n,7093,19)),"@generated/docusaurus-plugin-content-docs/default/__plugin.json",7093],acecf23e:[()=>n.e(1903).then(n.t.bind(n,1912,19)),"~blog/default/blogMetadata-default.json",1912],b92ecb7a:[()=>n.e(516).then(n.bind(n,1622)),"@site/docs/update/client.md",1622],c25608c0:[()=>n.e(3144).then(n.bind(n,5703)),"@site/docs/technical-guides/client/icons.md",5703],c4f5d8e4:[()=>Promise.all([n.e(1869),n.e(2634)]).then(n.bind(n,1459)),"@site/src/pages/index.js",1459],c5702bff:[()=>n.e(7990).then(n.bind(n,4008)),"@site/docs/technical-guides/client/styles.md",4008],ccc49370:[()=>Promise.all([n.e(1869),n.e(8554),n.e(1531),n.e(3249)]).then(n.bind(n,3858)),"@theme/BlogPostPage",3858],dfa15f88:[()=>n.e(6314).then(n.t.bind(n,2062,19)),"@generated/docusaurus-plugin-content-blog/default/p/feedzback-blog-authors-95d.json",2062],e327052b:[()=>n.e(4187).then(n.bind(n,2455)),"@site/docs/business-cases/feedback-draft.md",2455],e618cfd2:[()=>n.e(5104).then(n.bind(n,1692)),"@site/docs/usage-analytics.md",1692],f13cb29e:[()=>n.e(2748).then(n.bind(n,7018)),"@site/docs/technical-guides/e2e-testing.md",7018],f427953d:[()=>n.e(5407).then(n.bind(n,947)),"@site/docs/business-cases/archiving.md",947],f71db62a:[()=>n.e(4930).then(n.bind(n,149)),"@site/docs/technical-guides/environments/local-dev.md",149]};var l=n(4848);function s(e){let{error:t,retry:n,pastDelay:r}=e;return t?(0,l.jsxs)("div",{style:{textAlign:"center",color:"#fff",backgroundColor:"#fa383e",borderColor:"#fa383e",borderStyle:"solid",borderRadius:"0.25rem",borderWidth:"1px",boxSizing:"border-box",display:"block",padding:"1rem",flex:"0 0 50%",marginLeft:"25%",marginRight:"25%",marginTop:"5rem",maxWidth:"50%",width:"100%"},children:[(0,l.jsx)("p",{children:String(t)}),(0,l.jsx)("div",{children:(0,l.jsx)("button",{type:"button",onClick:n,children:"Retry"})})]}):r?(0,l.jsx)("div",{style:{display:"flex",justifyContent:"center",alignItems:"center",height:"100vh"},children:(0,l.jsx)("svg",{id:"loader",style:{width:128,height:110,position:"absolute",top:"calc(100vh - 64%)"},viewBox:"0 0 45 45",xmlns:"http://www.w3.org/2000/svg",stroke:"#61dafb",children:(0,l.jsxs)("g",{fill:"none",fillRule:"evenodd",transform:"translate(1 1)",strokeWidth:"2",children:[(0,l.jsxs)("circle",{cx:"22",cy:"22",r:"6",strokeOpacity:"0",children:[(0,l.jsx)("animate",{attributeName:"r",begin:"1.5s",dur:"3s",values:"6;22",calcMode:"linear",repeatCount:"indefinite"}),(0,l.jsx)("animate",{attributeName:"stroke-opacity",begin:"1.5s",dur:"3s",values:"1;0",calcMode:"linear",repeatCount:"indefinite"}),(0,l.jsx)("animate",{attributeName:"stroke-width",begin:"1.5s",dur:"3s",values:"2;0",calcMode:"linear",repeatCount:"indefinite"})]}),(0,l.jsxs)("circle",{cx:"22",cy:"22",r:"6",strokeOpacity:"0",children:[(0,l.jsx)("animate",{attributeName:"r",begin:"3s",dur:"3s",values:"6;22",calcMode:"linear",repeatCount:"indefinite"}),(0,l.jsx)("animate",{attributeName:"stroke-opacity",begin:"3s",dur:"3s",values:"1;0",calcMode:"linear",repeatCount:"indefinite"}),(0,l.jsx)("animate",{attributeName:"stroke-width",begin:"3s",dur:"3s",values:"2;0",calcMode:"linear",repeatCount:"indefinite"})]}),(0,l.jsx)("circle",{cx:"22",cy:"22",r:"8",children:(0,l.jsx)("animate",{attributeName:"r",begin:"0s",dur:"1.5s",values:"6;1;2;3;4;5;6",calcMode:"linear",repeatCount:"indefinite"})})]})})}):null}var c=n(6921),u=n(3102);function d(e,t){if("*"===e)return a()({loading:s,loader:()=>n.e(2237).then(n.bind(n,2237)),modules:["@theme/NotFound"],webpack:()=>[2237],render(e,t){const n=e.default;return(0,l.jsx)(u.W,{value:{plugin:{name:"native",id:"default"}},children:(0,l.jsx)(n,{...t})})}});const r=o[`${e}-${t}`],d={},f=[],p=[],h=(0,c.A)(r);return Object.entries(h).forEach((e=>{let[t,n]=e;const r=i[n];r&&(d[t]=r[0],f.push(r[1]),p.push(r[2]))})),a().Map({loading:s,loader:d,modules:f,webpack:()=>p,render(t,n){const a=JSON.parse(JSON.stringify(r));Object.entries(t).forEach((t=>{let[n,r]=t;const o=r.default;if(!o)throw new Error(`The page component at ${e} doesn't have a default export. This makes it impossible to render anything. Consider default-exporting a React component.`);"object"!=typeof o&&"function"!=typeof o||Object.keys(r).filter((e=>"default"!==e)).forEach((e=>{o[e]=r[e]}));let i=a;const l=n.split(".");l.slice(0,-1).forEach((e=>{i=i[e]})),i[l[l.length-1]]=o}));const o=a.__comp;delete a.__comp;const i=a.__context;delete a.__context;const s=a.__props;return delete a.__props,(0,l.jsx)(u.W,{value:i,children:(0,l.jsx)(o,{...a,...s,...n})})}})}const f=[{path:"/feedzback/blog",component:d("/feedzback/blog","1c3"),exact:!0},{path:"/feedzback/blog/archive",component:d("/feedzback/blog/archive","412"),exact:!0},{path:"/feedzback/blog/authors",component:d("/feedzback/blog/authors","a24"),exact:!0},{path:"/feedzback/blog/starting-documentation",component:d("/feedzback/blog/starting-documentation","ac2"),exact:!0},{path:"/feedzback/docs",component:d("/feedzback/docs","a6c"),routes:[{path:"/feedzback/docs",component:d("/feedzback/docs","4e6"),routes:[{path:"/feedzback/docs",component:d("/feedzback/docs","572"),routes:[{path:"/feedzback/docs/audience",component:d("/feedzback/docs/audience","b9e"),exact:!0,sidebar:"default"},{path:"/feedzback/docs/business-cases/archiving",component:d("/feedzback/docs/business-cases/archiving","f7d"),exact:!0,sidebar:"default"},{path:"/feedzback/docs/business-cases/feedback-draft",component:d("/feedzback/docs/business-cases/feedback-draft","e3a"),exact:!0,sidebar:"default"},{path:"/feedzback/docs/business-cases/give-spontaneous-feedback",component:d("/feedzback/docs/business-cases/give-spontaneous-feedback","ac0"),exact:!0,sidebar:"default"},{path:"/feedzback/docs/business-cases/reply-to-feedback-request",component:d("/feedzback/docs/business-cases/reply-to-feedback-request","2ce"),exact:!0,sidebar:"default"},{path:"/feedzback/docs/business-cases/request-feedback",component:d("/feedzback/docs/business-cases/request-feedback","f64"),exact:!0,sidebar:"default"},{path:"/feedzback/docs/business-cases/shared-feedback",component:d("/feedzback/docs/business-cases/shared-feedback","3c8"),exact:!0,sidebar:"default"},{path:"/feedzback/docs/ci-cd/circle-ci",component:d("/feedzback/docs/ci-cd/circle-ci","4b3"),exact:!0,sidebar:"default"},{path:"/feedzback/docs/ci-cd/quick-start",component:d("/feedzback/docs/ci-cd/quick-start","ea4"),exact:!0,sidebar:"default"},{path:"/feedzback/docs/documentation",component:d("/feedzback/docs/documentation","a06"),exact:!0,sidebar:"default"},{path:"/feedzback/docs/installation",component:d("/feedzback/docs/installation","393"),exact:!0,sidebar:"default"},{path:"/feedzback/docs/technical-guides/client/cookies",component:d("/feedzback/docs/technical-guides/client/cookies","ee2"),exact:!0,sidebar:"default"},{path:"/feedzback/docs/technical-guides/client/demo",component:d("/feedzback/docs/technical-guides/client/demo","1ce"),exact:!0,sidebar:"default"},{path:"/feedzback/docs/technical-guides/client/firebase-hosting",component:d("/feedzback/docs/technical-guides/client/firebase-hosting","e18"),exact:!0,sidebar:"default"},{path:"/feedzback/docs/technical-guides/client/i18n",component:d("/feedzback/docs/technical-guides/client/i18n","2b3"),exact:!0,sidebar:"default"},{path:"/feedzback/docs/technical-guides/client/icons",component:d("/feedzback/docs/technical-guides/client/icons","daf"),exact:!0,sidebar:"default"},{path:"/feedzback/docs/technical-guides/client/styles",component:d("/feedzback/docs/technical-guides/client/styles","365"),exact:!0,sidebar:"default"},{path:"/feedzback/docs/technical-guides/e2e-testing",component:d("/feedzback/docs/technical-guides/e2e-testing","b7e"),exact:!0,sidebar:"default"},{path:"/feedzback/docs/technical-guides/environments/local-dev",component:d("/feedzback/docs/technical-guides/environments/local-dev","931"),exact:!0,sidebar:"default"},{path:"/feedzback/docs/technical-guides/environments/overview",component:d("/feedzback/docs/technical-guides/environments/overview","0f9"),exact:!0,sidebar:"default"},{path:"/feedzback/docs/technical-guides/server/swagger",component:d("/feedzback/docs/technical-guides/server/swagger","55f"),exact:!0,sidebar:"default"},{path:"/feedzback/docs/technical-stack",component:d("/feedzback/docs/technical-stack","ed3"),exact:!0,sidebar:"default"},{path:"/feedzback/docs/ubiquitous-language",component:d("/feedzback/docs/ubiquitous-language","129"),exact:!0,sidebar:"default"},{path:"/feedzback/docs/update/client",component:d("/feedzback/docs/update/client","bc6"),exact:!0,sidebar:"default"},{path:"/feedzback/docs/usage-analytics",component:d("/feedzback/docs/usage-analytics","741"),exact:!0,sidebar:"default"}]}]}]},{path:"/feedzback/",component:d("/feedzback/","c84"),exact:!0},{path:"*",component:d("*")}]},6125:(e,t,n)=>{"use strict";n.d(t,{o:()=>o,x:()=>i});var r=n(6540),a=n(4848);const o=r.createContext(!1);function i(e){let{children:t}=e;const[n,i]=(0,r.useState)(!1);return(0,r.useEffect)((()=>{i(!0)}),[]),(0,a.jsx)(o.Provider,{value:n,children:t})}},7815:(e,t,n)=>{"use strict";var r=n(6540),a=n(5338),o=n(545),i=n(4625),l=n(4784),s=n(8193);const c=[n(119),n(6134),n(6294),n(1043)];var u=n(8328),d=n(6347),f=n(2831),p=n(4848);function h(e){let{children:t}=e;return(0,p.jsx)(p.Fragment,{children:t})}var g=n(5260),m=n(4586),b=n(6025),y=n(6342),v=n(1213),k=n(2131),w=n(4090);const x="default";var S=n(440),E=n(1463);function _(){const{i18n:{currentLocale:e,defaultLocale:t,localeConfigs:n}}=(0,m.A)(),r=(0,k.o)(),a=n[e].htmlLang,o=e=>e.replace("-","_");return(0,p.jsxs)(g.A,{children:[Object.entries(n).map((e=>{let[t,{htmlLang:n}]=e;return(0,p.jsx)("link",{rel:"alternate",href:r.createUrl({locale:t,fullyQualified:!0}),hrefLang:n},t)})),(0,p.jsx)("link",{rel:"alternate",href:r.createUrl({locale:t,fullyQualified:!0}),hrefLang:"x-default"}),(0,p.jsx)("meta",{property:"og:locale",content:o(a)}),Object.values(n).filter((e=>a!==e.htmlLang)).map((e=>(0,p.jsx)("meta",{property:"og:locale:alternate",content:o(e.htmlLang)},`meta-og-${e.htmlLang}`)))]})}function C(e){let{permalink:t}=e;const{siteConfig:{url:n}}=(0,m.A)(),r=function(){const{siteConfig:{url:e,baseUrl:t,trailingSlash:n}}=(0,m.A)(),{pathname:r}=(0,d.zy)();return e+(0,S.Ks)((0,b.Ay)(r),{trailingSlash:n,baseUrl:t})}(),a=t?`${n}${t}`:r;return(0,p.jsxs)(g.A,{children:[(0,p.jsx)("meta",{property:"og:url",content:a}),(0,p.jsx)("link",{rel:"canonical",href:a})]})}function A(){const{i18n:{currentLocale:e}}=(0,m.A)(),{metadata:t,image:n}=(0,y.p)();return(0,p.jsxs)(p.Fragment,{children:[(0,p.jsxs)(g.A,{children:[(0,p.jsx)("meta",{name:"twitter:card",content:"summary_large_image"}),(0,p.jsx)("body",{className:w.w})]}),n&&(0,p.jsx)(v.be,{image:n}),(0,p.jsx)(C,{}),(0,p.jsx)(_,{}),(0,p.jsx)(E.A,{tag:x,locale:e}),(0,p.jsx)(g.A,{children:t.map(((e,t)=>(0,p.jsx)("meta",{...e},t)))})]})}const T=new Map;var N=n(6125),O=n(6988),P=n(205);function j(e){for(var t=arguments.length,n=new Array(t>1?t-1:0),r=1;rYour Docusaurus site did not load properly.
\nA very common reason is a wrong site baseUrl configuration.
\nCurrent configured baseUrl = ${e} ${"/"===e?" (default value)":""}
\nWe suggest trying baseUrl =
\nYour Docusaurus site did not load properly.
\nA very common reason is a wrong site baseUrl configuration.
\nCurrent configured baseUrl = ${e} ${"/"===e?" (default value)":""}
\nWe suggest trying baseUrl =
\n