{"version":3,"file":"QuestionsTab.mjs","names":["React","useCallback","useMemo","useState","useTranslation","UdpText","UdpFlexbox","UdpSpinner","UdpCard","UdpBadge","UdpDropdown","UdpSearchInput","FIELD_TYPE_NAME","TYPE_FAMILIES","getFamilyKey","getQuestionInsight","isDisplayOnly","FormStructureTree","QuestionCard","DAY_MS","buildDateOptions","t","value","label","defaultValue","mutedStyle","color","emptyStateStyle","font","padding","filterCardBodyStyle","display","flexDirection","gap","filterRowStyle","flexWrap","alignItems","controlStyle","minWidth","flex","searchStyle","chipsRowStyle","countStyle","marginLeft","twoPaneStyle","railWrapStyle","position","top","maxHeight","overflowY","overscrollBehavior","scrollbarWidth","scrollbarColor","railHeaderStyle","justifyContent","railBodyStyle","boardStyle","sectionBandStyle","margin","sectionLineStyle","height","background","gridStyle","gridTemplateColumns","gridAutoRows","dateCutoff","key","now","Date","submissionTime","s","formSubmission_LastModifiedOn","formSubmission_SubmittedOn","formSubmission_InitialCreatedOn","cardDomId","questionId","QuestionsTab","t0","$","_c","submissions","schema","versions","t1","submissionsLoading","schemaLoading","t2","undefined","latestVersion","version","t3","dateOptions","versionFilter","setVersionFilter","respondent","setRespondent","dateRange","setDateRange","families","setFamilies","_temp","search","setSearch","activeId","setActiveId","t4","t5","opts","v","push","String","t6","t7","versionOptions","names","Set","n","formSubmission_UserDisplayName","add","t8","Array","from","sort","map","_temp2","respondentOptions","bb0","n_1","Number","isFinite","effectiveVersion","cutoff","t9","s_0","formSubmission_FormVersion","ts","getTime","filter","filteredSubmissions","bb1","Map","section","sections","question","questions","fieldTypeId","set","id","insight","fieldTypeName","insightsById","t10","bb2","t11","Symbol","for","counts","section_0","q","fam","fam_0","count","familyChips","bb3","t12","term","trim","toLowerCase","section_1","sectionIndex","items","_temp3","q_1","size","has","q_2","questionText","name","typeName","includes","question_0","answered","get","_temp4","visibleGroups","totalQuestions","reduce","_temp5","visibleCount","t13","key_0","prev","next","delete","toggleFamily","t14","document","el","getElementById","scrollIntoView","behavior","block","jumpToQuestion","loading","hasData","t15","t16","t17","t18","e","target","t19","t20","t21","e_0","t22","t23","t24","e_1","t25","t26","t27","e_2","t28","t29","t30","t31","fam_1","on","toggle","cursor","e_3","preventDefault","t32","fontWeight","t33","t34","t35","t36","t37","t38","length","t39","section_2","title","t40","question_1","entry","n_0","q_0","g","acc","g_0"],"sources":["../../../../src/udp/pages/UdpQuestionFormOverviewPage/QuestionsTab.jsx"],"sourcesContent":["import React, { useCallback, useMemo, useState } from 'react';\nimport { useTranslation } from 'react-i18next';\nimport {\n  UdpText,\n  UdpFlexbox,\n  UdpSpinner,\n  UdpCard,\n  UdpBadge,\n  UdpDropdown,\n  UdpSearchInput,\n} from '../../../UI/fluent-web-components';\nimport {\n  FIELD_TYPE_NAME,\n  TYPE_FAMILIES,\n  getFamilyKey,\n  getQuestionInsight,\n  isDisplayOnly,\n} from './questionInsights';\nimport { FormStructureTree } from './FormStructureTree';\nimport { QuestionCard } from './QuestionCard';\n\n// \"Questions\" tab — a per-question breakdown shown as a dense grid of cards\n// (one per input question, grouped by section), with the Form Structure rail\n// acting as a jump-to table of contents.\n//\n// Two distinct filter groups, deliberately separated in the toolbar:\n//   • Data scope (version / respondent / date range) — re-aggregates the\n//     submissions every card's numbers reflect. Doesn't add/remove cards.\n//   • Find (question-type chips / search) — narrows WHICH questions are shown.\n//\n// Clicking a rail row scrolls its card into view and rings it (it doesn't hide\n// the others). Version compare is intentionally deferred.\n\nconst DAY_MS = 86400 * 1000;\nconst buildDateOptions = (t) => [\n  { value: 'all', label: t('formOverview.questions.dateAllTime', { defaultValue: 'All time' }) },\n  { value: '7', label: t('formOverview.questions.dateLast7Days', { defaultValue: 'Last 7 days' }) },\n  { value: '30', label: t('formOverview.questions.dateLast30Days', { defaultValue: 'Last 30 days' }) },\n  { value: 'quarter', label: t('formOverview.questions.dateThisQuarter', { defaultValue: 'This quarter' }) },\n];\n\nconst mutedStyle = { color: 'var(--colorNeutralForeground3)' };\nconst emptyStateStyle = { ...mutedStyle, font: '400 13px/18px var(--fontFamilyBase)', padding: '12px 0' };\n\n// Filters card: search first at a fixed, reasonable width, then the three\n// data-scope dropdowns; chips drop to their own line below. align-items:flex-end\n// bottom-aligns the (label-less) search with the dropdown inputs.\nconst filterCardBodyStyle = { padding: 16, display: 'flex', flexDirection: 'column', gap: 12 };\nconst filterRowStyle = { display: 'flex', flexWrap: 'wrap', alignItems: 'flex-end', gap: 12 };\nconst controlStyle = { minWidth: 160, flex: '0 0 auto' };\nconst searchStyle = { flex: '0 1 280px', minWidth: 200 };\nconst chipsRowStyle = { display: 'flex', flexWrap: 'wrap', alignItems: 'center', gap: 8 };\nconst countStyle = { ...mutedStyle, font: '400 13px/18px var(--fontFamilyBase)', marginLeft: 'auto' };\n\nconst twoPaneStyle = { display: 'flex', gap: 16, alignItems: 'flex-start' };\n// The page is the one primary scroll surface; the board flows in it. The rail\n// pins as a sticky table of contents and only scrolls internally when a long\n// form overflows the viewport — and then with a thin, quiet, non-chaining\n// scrollbar so it never reads as a competing second scroll region.\nconst railWrapStyle = {\n  flex: '0 0 264px',\n  position: 'sticky',\n  top: 16,\n  maxHeight: 'calc(100dvh - 120px)',\n  overflowY: 'auto',\n  overscrollBehavior: 'contain',\n  scrollbarWidth: 'thin',\n  scrollbarColor: 'var(--colorNeutralStroke2) transparent',\n};\nconst railHeaderStyle = {\n  display: 'flex',\n  alignItems: 'baseline',\n  justifyContent: 'space-between',\n  gap: 8,\n  padding: '12px 12px 8px',\n};\nconst railBodyStyle = { padding: '0 6px 10px' };\nconst boardStyle = { flex: '1 1 0', minWidth: 0, display: 'flex', flexDirection: 'column', gap: 4 };\nconst sectionBandStyle = {\n  display: 'flex',\n  alignItems: 'center',\n  gap: 10,\n  margin: '14px 2px 10px',\n};\nconst sectionLineStyle = { flex: 1, height: 1, background: 'var(--colorNeutralStroke2)' };\n// Uniform cards: equal width (auto-fit 1fr columns, no full-row spanning) and\n// equal height (every cell a fixed height; each card fills it).\nconst gridStyle = {\n  display: 'grid',\n  gridTemplateColumns: 'repeat(auto-fit, minmax(380px, 1fr))',\n  gridAutoRows: '300px',\n  gap: 12,\n};\n\nconst dateCutoff = (key) => {\n  const now = Date.now();\n  if (key === '7') return now - 7 * DAY_MS;\n  if (key === '30') return now - 30 * DAY_MS;\n  if (key === 'quarter') return now - 90 * DAY_MS;\n  return null;\n};\n\nconst submissionTime = (s) =>\n  s.formSubmission_LastModifiedOn ||\n  s.formSubmission_SubmittedOn ||\n  s.formSubmission_InitialCreatedOn ||\n  null;\n\nconst cardDomId = (questionId) => `qcard-${questionId}`;\n\nexport const QuestionsTab = ({\n  submissions,\n  schema,\n  versions = [],\n  submissionsLoading,\n  schemaLoading,\n}) => {\n  const { t } = useTranslation();\n  const latestVersion = versions[0]?.version;\n\n  const dateOptions = useMemo(() => buildDateOptions(t), [t]);\n\n  // Data-scope filters (recompute the numbers).\n  const [versionFilter, setVersionFilter] = useState('latest');\n  const [respondent, setRespondent] = useState('all');\n  const [dateRange, setDateRange] = useState('all');\n  // Find filters (narrow which questions show).\n  const [families, setFamilies] = useState(() => new Set());\n  const [search, setSearch] = useState('');\n  // Rail jump target (card ring + rail highlight).\n  const [activeId, setActiveId] = useState(null);\n\n  // --- filter option lists ---\n  const versionOptions = useMemo(() => {\n    const opts = [\n      {\n        value: 'latest',\n        label:\n          latestVersion != null\n            ? t('formOverview.questions.latestVersion', {\n                defaultValue: 'Latest (v{{version}})',\n                version: latestVersion\n              })\n            : t('formOverview.questions.latest', { defaultValue: 'Latest' })\n      }\n    ];\n    for (const v of versions) {\n      if (v?.version == null) continue;\n      opts.push({ value: String(v.version), label: `v${v.version}` });\n    }\n    opts.push({\n      value: 'all',\n      label: t('formOverview.questions.allVersions', { defaultValue: 'All versions' })\n    });\n    return opts;\n  }, [versions, latestVersion, t]);\n\n  const respondentOptions = useMemo(() => {\n    const names = new Set();\n    for (const s of submissions) {\n      const n = s.formSubmission_UserDisplayName;\n      if (n) names.add(n);\n    }\n    return [\n      {\n        value: 'all',\n        label: t('formOverview.questions.allRespondents', { defaultValue: 'All respondents' })\n      },\n      ...Array.from(names).sort().map((n) => ({ value: n, label: n })),\n    ];\n  }, [submissions, t]);\n\n  const effectiveVersion = useMemo(() => {\n    if (versionFilter === 'all') return null;\n    if (versionFilter === 'latest') return latestVersion ?? null;\n    const n = Number(versionFilter);\n    return Number.isFinite(n) ? n : null;\n  }, [versionFilter, latestVersion]);\n\n  // --- filtered submission set (the data every card reflects) ---\n  const filteredSubmissions = useMemo(() => {\n    const cutoff = dateCutoff(dateRange);\n    return submissions.filter((s) => {\n      if (effectiveVersion != null && s.formSubmission_FormVersion !== effectiveVersion) return false;\n      if (respondent !== 'all' && s.formSubmission_UserDisplayName !== respondent) return false;\n      if (cutoff != null) {\n        const ts = submissionTime(s);\n        if (!ts || new Date(ts).getTime() < cutoff) return false;\n      }\n      return true;\n    });\n  }, [submissions, effectiveVersion, respondent, dateRange]);\n\n  // --- insight per input question over the filtered submissions ---\n  const insightsById = useMemo(() => {\n    const map = new Map();\n    if (!schema) return map;\n    for (const section of schema.sections) {\n      for (const question of section.questions ?? []) {\n        if (isDisplayOnly(question.fieldTypeId)) continue;\n        map.set(question.id, {\n          section,\n          question,\n          insight: getQuestionInsight(section, question, filteredSubmissions),\n          fieldTypeName: FIELD_TYPE_NAME[question.fieldTypeId] ?? null,\n        });\n      }\n    }\n    return map;\n  }, [schema, filteredSubmissions]);\n\n  // --- which type families are present, with question counts ---\n  const familyChips = useMemo(() => {\n    if (!schema) return [];\n    const counts = {};\n    for (const section of schema.sections) {\n      for (const q of section.questions ?? []) {\n        if (isDisplayOnly(q.fieldTypeId)) continue;\n        const key = getFamilyKey(q.fieldTypeId);\n        counts[key] = (counts[key] ?? 0) + 1;\n      }\n    }\n    return TYPE_FAMILIES.filter((fam) => counts[fam.key]).map((fam) => ({ ...fam, count: counts[fam.key] }));\n  }, [schema]);\n\n  // --- visible structure (type family + search), grouped by section ---\n  const visibleGroups = useMemo(() => {\n    if (!schema) return [];\n    const term = search.trim().toLowerCase();\n    return schema.sections\n      .map((section, sectionIndex) => ({\n        section,\n        sectionIndex,\n        items: (section.questions ?? [])\n          .filter((q) => !isDisplayOnly(q.fieldTypeId))\n          .filter((q) => families.size === 0 || families.has(getFamilyKey(q.fieldTypeId)))\n          .filter((q) => {\n            if (!term) return true;\n            const label = (q.questionText || q.name || '').toLowerCase();\n            const typeName = (FIELD_TYPE_NAME[q.fieldTypeId] ?? '').toLowerCase();\n            return label.includes(term) || typeName.includes(term);\n          })\n          .map((question) => ({\n            question,\n            fieldTypeId: question.fieldTypeId,\n            answered: insightsById.get(question.id)?.insight?.answered ?? 0,\n          })),\n      }))\n      .filter((g) => g.items.length > 0);\n  }, [schema, families, search, insightsById]);\n\n  const totalQuestions = insightsById.size;\n  const visibleCount = useMemo(\n    () => visibleGroups.reduce((acc, g) => acc + g.items.length, 0),\n    [visibleGroups],\n  );\n\n  const toggleFamily = (key) => {\n    setFamilies((prev) => {\n      const next = new Set(prev);\n      if (next.has(key)) next.delete(key);\n      else next.add(key);\n      return next;\n    });\n  };\n\n  // Rail click → scroll the matching card into view + ring it.\n  const jumpToQuestion = useCallback((questionId) => {\n    setActiveId(questionId);\n    if (typeof document !== 'undefined') {\n      const el = document.getElementById(cardDomId(questionId));\n      el?.scrollIntoView({ behavior: 'smooth', block: 'center' });\n    }\n  }, []);\n\n  const loading = schemaLoading || submissionsLoading;\n  const hasData = totalQuestions > 0;\n\n  return (\n    <UdpFlexbox direction='column' gap='md' wrap='nowrap'>\n      {/* Filters card: search + data-scope dropdowns on line 1, type chips on line 2. */}\n      <UdpCard variant='outlined' bodyPadding={false}>\n        <div style={filterCardBodyStyle}>\n          <UdpText variant='subtitle2' weight='semibold' block>\n            {t('formOverview.questions.filters', { defaultValue: 'Filters' })}\n          </UdpText>\n          <div style={filterRowStyle}>\n            <div style={searchStyle}>\n              <UdpSearchInput\n                placeholder={t('formOverview.questions.searchQuestions', { defaultValue: 'Search questions' })}\n                value={search}\n                onChange={(e) => setSearch(e.target.value)}\n              />\n            </div>\n            <div style={controlStyle}>\n              <UdpDropdown\n                label={t('formOverview.grid.columns.version', { defaultValue: 'Version' })}\n                options={versionOptions}\n                optionLabel='label'\n                optionValue='value'\n                value={versionFilter}\n                onChange={(e) => setVersionFilter(e.target.value)}\n              />\n            </div>\n            <div style={controlStyle}>\n              <UdpDropdown\n                label={t('formOverview.questions.respondent', { defaultValue: 'Respondent' })}\n                options={respondentOptions}\n                optionLabel='label'\n                optionValue='value'\n                value={respondent}\n                onChange={(e) => setRespondent(e.target.value)}\n              />\n            </div>\n            <div style={controlStyle}>\n              <UdpDropdown\n                label={t('formOverview.questions.dateRange', { defaultValue: 'Date range' })}\n                options={dateOptions}\n                optionLabel='label'\n                optionValue='value'\n                value={dateRange}\n                onChange={(e) => setDateRange(e.target.value)}\n              />\n            </div>\n          </div>\n\n          <div style={chipsRowStyle}>\n            {familyChips.map((fam) => {\n              const on = families.has(fam.key);\n              const toggle = () => toggleFamily(fam.key);\n              return (\n                <UdpBadge\n                  key={fam.key}\n                  appearance={on ? 'filled' : 'tint'}\n                  color={on ? 'brand' : 'informative'}\n                  size='large'\n                  role='button'\n                  tabIndex={0}\n                  aria-pressed={on}\n                  style={{ cursor: 'pointer' }}\n                  onClick={toggle}\n                  onKeyDown={(e) => {\n                    if (e.key === 'Enter' || e.key === ' ') {\n                      e.preventDefault();\n                      toggle();\n                    }\n                  }}\n                >\n                  {`${fam.label} (${fam.count})`}\n                </UdpBadge>\n              );\n            })}\n            <span style={countStyle}>\n              {t('formOverview.questions.showing', { defaultValue: 'Showing' })}{' '}\n              <b style={{ color: 'var(--colorNeutralForeground1)', fontWeight: 600 }}>{visibleCount}</b>{' '}\n              {t('formOverview.questions.of', { defaultValue: 'of' })} {totalQuestions}\n            </span>\n          </div>\n        </div>\n      </UdpCard>\n\n      {/* Rail (jump-to) + card board */}\n      {loading ? (\n        <div style={{ padding: 16 }}>\n          <UdpSpinner size='small' />\n        </div>\n      ) : !hasData ? (\n        <div style={emptyStateStyle}>\n          {schema\n            ? t('formOverview.questions.noSubmissionsToAnalyze', {\n                defaultValue: 'No submissions yet to analyze.'\n              })\n            : t('formOverview.questions.schemaUnavailable', {\n                defaultValue: 'Schema unavailable.'\n              })}\n        </div>\n      ) : (\n        <div style={twoPaneStyle}>\n          <UdpCard variant='outlined' bodyPadding={false} style={railWrapStyle}>\n            <div style={railHeaderStyle}>\n              <UdpText variant='subtitle2' weight='semibold' block>\n                {t('formOverview.questions.formStructure', { defaultValue: 'Form structure' })}\n              </UdpText>\n              <UdpText variant='caption1' block style={mutedStyle}>\n                {visibleCount === 1\n                  ? t('formOverview.questions.questionCountOne', {\n                      defaultValue: '{{count}} question',\n                      count: visibleCount\n                    })\n                  : t('formOverview.questions.questionCountOther', {\n                      defaultValue: '{{count}} questions',\n                      count: visibleCount\n                    })}\n              </UdpText>\n            </div>\n            <div style={railBodyStyle}>\n              <FormStructureTree\n                groups={visibleGroups}\n                selectedQuestionId={activeId}\n                onSelect={jumpToQuestion}\n              />\n            </div>\n          </UdpCard>\n\n          <div style={boardStyle}>\n            {visibleGroups.length === 0 ? (\n              <UdpText variant='caption1' block style={emptyStateStyle}>\n                {t('formOverview.questions.noQuestionsMatch', {\n                  defaultValue:\n                    'No questions match the current filters. Clear a filter to see results.'\n                })}\n              </UdpText>\n            ) : (\n              visibleGroups.map(({ section, items }) => (\n                <div key={section.id}>\n                  <div style={sectionBandStyle}>\n                    <UdpText variant='subtitle1' weight='semibold' block>\n                      {section.title || section.name}\n                    </UdpText>\n                    <UdpText variant='caption1' block style={mutedStyle}>\n                      {items.length === 1\n                        ? t('formOverview.questions.questionCountOne', {\n                            defaultValue: '{{count}} question',\n                            count: items.length\n                          })\n                        : t('formOverview.questions.questionCountOther', {\n                            defaultValue: '{{count}} questions',\n                            count: items.length\n                          })}\n                    </UdpText>\n                    <span style={sectionLineStyle} />\n                  </div>\n                  <div style={gridStyle}>\n                    {items.map(({ question }) => {\n                      const entry = insightsById.get(question.id);\n                      return (\n                        <QuestionCard\n                          key={question.id}\n                          domId={cardDomId(question.id)}\n                          question={question}\n                          insight={entry?.insight}\n                          fieldTypeName={entry?.fieldTypeName}\n                          active={activeId === question.id}\n                        />\n                      );\n                    })}\n                  </div>\n                </div>\n              ))\n            )}\n          </div>\n        </div>\n      )}\n    </UdpFlexbox>\n  );\n};\n"],"mappings":"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"}