{"version":3,"sources":["../call-control-sdk/lib/pages/common/components/ReportFilterBar.tsx"],"sourcesContent":["import React from \"react\";\r\nimport {\r\n  Box,\r\n  Checkbox,\r\n  FormControl,\r\n  InputLabel,\r\n  MenuItem,\r\n  Select,\r\n  TextField,\r\n  CircularProgress,\r\n} from \"@mui/material\";\r\nimport AppButton from \"./AppButton\";\r\nimport dayjs, { Dayjs } from \"dayjs\";\r\nimport isoWeek from \"dayjs/plugin/isoWeek\";\r\nimport SearchBar from \"./SearchBar\";\r\nimport MenuSearchField from \"./MenuSearchField\";\r\nimport DateRangePicker from \"./DateRangePicker\";\r\nimport AgentMultiSelect, { type AgentOption } from \"./AgentMultiSelect\";\r\nimport { type Queue } from \"../../cdrReport/useCdrReport\";\r\n\r\ndayjs.extend(isoWeek);\r\n\r\nconst FILTER_HEIGHT = 32;\r\n\r\ntype QuickRange = \"today\" | \"week\" | \"month\" | \"\";\r\n\r\ninterface ProcessOption {\r\n  label: string;\r\n  value: string;\r\n}\r\n\r\nexport interface DidOption {\r\n  id: number | string;\r\n  didNumber: string;\r\n  friendlyName?: string | null;\r\n}\r\n\r\ninterface ReportFilterBarProps {\r\n  startDate: Dayjs | null;\r\n  endDate: Dayjs | null;\r\n  onStartChange: (val: Dayjs | null) => void;\r\n  onEndChange: (val: Dayjs | null) => void;\r\n  showTime?: boolean;\r\n  quickRange: string;\r\n  onQuickRangeChange: (range: QuickRange) => void;\r\n  showAgentSelect?: boolean;\r\n  selectedAgents?: AgentOption[];\r\n  onAgentsChange?: (agents: AgentOption[]) => void;\r\n  showQueueSelect?: boolean;\r\n  queues?: Queue[];\r\n  selectedQueues?: Queue[];\r\n  onQueuesChange?: (queues: Queue[]) => void;\r\n  showDidSelect?: boolean;\r\n  dids?: DidOption[];\r\n  selectedDids?: DidOption[];\r\n  onDidsChange?: (dids: DidOption[]) => void;\r\n  showProcessSelect?: boolean;\r\n  processes?: ProcessOption[];\r\n  selectedProcess?: string;\r\n  onProcessChange?: (process: string) => void;\r\n  showCallTypeSelect?: boolean;\r\n  selectedCallType?: string;\r\n  onCallTypeChange?: (callType: string) => void;\r\n  callTypeOptions?: ProcessOption[];\r\n  showStatusSelect?: boolean;\r\n  selectedStatus?: string;\r\n  onStatusChange?: (status: string) => void;\r\n  statusOptions?: ProcessOption[];\r\n  showConferenceSelect?: boolean;\r\n  /** \"\" = all, \"true\" = conference only, \"false\" = non-conference only. */\r\n  selectedConference?: string;\r\n  onConferenceChange?: (value: string) => void;\r\n  showSearchBar?: boolean;\r\n  searchValue?: string;\r\n  onSearchChange?: (value: string) => void;\r\n  searchPlaceholder?: string;\r\n  showSearchButton?: boolean;\r\n  onSearch?: () => void;\r\n  loading?: boolean;\r\n  extra?: React.ReactNode;\r\n  setIsAllUsersSelected?: (allSelected: boolean) => void;\r\n}\r\n\r\nexport default function ReportFilterBar({\r\n  startDate,\r\n  endDate,\r\n  onStartChange,\r\n  onEndChange,\r\n  showTime = true,\r\n  quickRange,\r\n  onQuickRangeChange,\r\n  showAgentSelect = false,\r\n  selectedAgents = [],\r\n  onAgentsChange,\r\n  setIsAllUsersSelected,\r\n  showQueueSelect = false,\r\n  queues = [],\r\n  selectedQueues = [],\r\n  onQueuesChange,\r\n  showDidSelect = false,\r\n  dids = [],\r\n  selectedDids = [],\r\n  onDidsChange,\r\n  showProcessSelect = false,\r\n  processes = [],\r\n  selectedProcess = \"\",\r\n  onProcessChange,\r\n  showCallTypeSelect = false,\r\n  selectedCallType = \"\",\r\n  onCallTypeChange,\r\n  callTypeOptions = [\r\n    { label: \"All Call Types\", value: \"\" },\r\n    { label: \"Inbound\", value: \"Inbound\" },\r\n    { label: \"Outbound\", value: \"Outbound\" }\r\n  ],\r\n  showStatusSelect = false,\r\n  selectedStatus = \"\",\r\n  onStatusChange,\r\n  statusOptions = [\r\n    { label: \"All Statuses\", value: \"\" },\r\n    { label: \"Answered\", value: \"Answered\" },\r\n    { label: \"Abandoned\", value: \"Abandoned\" },\r\n    { label: \"Not Answered\", value: \"NO_ANSWER\" },\r\n  ],\r\n  showConferenceSelect = false,\r\n  selectedConference = \"\",\r\n  onConferenceChange,\r\n  showSearchBar = false,\r\n  searchValue = \"\",\r\n  onSearchChange,\r\n  searchPlaceholder = \"Search...\",\r\n  showSearchButton = false,\r\n  onSearch,\r\n  loading = false,\r\n  extra,\r\n}: ReportFilterBarProps) {\r\n  /* in-menu search for the queue dropdown */\r\n  const [queueSearch, setQueueSearch] = React.useState(\"\");\r\n  const queueQuery = queueSearch.trim().toLowerCase();\r\n  const visibleQueues = queueQuery\r\n    ? queues.filter((q) => (q.name || \"\").toLowerCase().includes(queueQuery))\r\n    : queues;\r\n  const allVisibleQueuesSelected =\r\n    visibleQueues.length > 0 &&\r\n    visibleQueues.every((q) => selectedQueues.some((sq) => sq.id === q.id));\r\n\r\n  /* in-menu search for the DID dropdown */\r\n  const [didSearch, setDidSearch] = React.useState(\"\");\r\n  const didQuery = didSearch.trim().toLowerCase();\r\n  const visibleDids = didQuery\r\n    ? dids.filter(\r\n        (d) =>\r\n          (d.didNumber || \"\").toLowerCase().includes(didQuery) ||\r\n          (d.friendlyName || \"\").toLowerCase().includes(didQuery),\r\n      )\r\n    : dids;\r\n  const allVisibleDidsSelected =\r\n    visibleDids.length > 0 &&\r\n    visibleDids.every((d) => selectedDids.some((sd) => sd.id === d.id));\r\n\r\n  const setQuick = (range: QuickRange) => {\r\n    onQuickRangeChange(range);\r\n    const today = dayjs();\r\n    let sd: Dayjs = today.startOf(\"day\");\r\n    const ed: Dayjs = today;\r\n    if (range === \"week\") sd = today.startOf(\"week\").startOf(\"day\");\r\n    else if (range === \"month\") sd = today.startOf(\"month\").startOf(\"day\");\r\n    onStartChange(sd);\r\n    onEndChange(ed);\r\n  };\r\n\r\n  return (\r\n    <Box sx={{ py: 0.6, px: 1, display: \"flex\", alignItems: \"center\", gap: 1, flexWrap: \"wrap\", rowGap: 1 }}>\r\n      <DateRangePicker\r\n        startDate={startDate}\r\n        endDate={endDate}\r\n        onStartChange={(v) => { onStartChange(v); onQuickRangeChange(\"\"); }}\r\n        onEndChange={(v) => { onEndChange(v); onQuickRangeChange(\"\"); }}\r\n        showTime={showTime}\r\n      />\r\n\r\n      <AppButton variant={quickRange === \"today\" ? \"primary\" : \"outlined\"} onClick={() => setQuick(\"today\")} sx={{ height: FILTER_HEIGHT, whiteSpace: \"nowrap\" }}>\r\n        Today\r\n      </AppButton>\r\n      <AppButton variant={quickRange === \"week\" ? \"primary\" : \"outlined\"} onClick={() => setQuick(\"week\")} sx={{ height: FILTER_HEIGHT, whiteSpace: \"nowrap\" }}>\r\n        This Week\r\n      </AppButton>\r\n      <AppButton variant={quickRange === \"month\" ? \"primary\" : \"outlined\"} onClick={() => setQuick(\"month\")} sx={{ height: FILTER_HEIGHT, whiteSpace: \"nowrap\" }}>\r\n        This Month\r\n      </AppButton>\r\n\r\n      {showAgentSelect && onAgentsChange && (\r\n        <AgentMultiSelect value={selectedAgents} onChange={onAgentsChange} setIsAllUsersSelected={setIsAllUsersSelected} minWidth={130} />\r\n      )}\r\n\r\n      {showQueueSelect && onQueuesChange && (\r\n        <FormControl size=\"small\" sx={{ minWidth: 130 }}>\r\n          <InputLabel sx={{ fontSize: \"0.76rem\" }}>All Queues</InputLabel>\r\n          <Select\r\n            multiple\r\n            sx={{ fontSize: \"0.76rem\", height: FILTER_HEIGHT, borderRadius: \"6px\" }}\r\n            MenuProps={{\r\n              variant: \"menu\",\r\n              autoFocus: false,\r\n              PaperProps: {\r\n                sx: {\r\n                  maxHeight: 280,\r\n                  \"& .MuiMenuItem-root\": { fontSize: \"0.76rem\", minHeight: 32, py: 0.3 },\r\n                },\r\n              },\r\n            }}\r\n            value={selectedQueues.map((q) => q.id)}\r\n            label=\"All Queues\"\r\n            onClose={() => setQueueSearch(\"\")}\r\n            onChange={(e) => {\r\n              const ids = e.target.value as number[];\r\n              if (ids.includes(-1)) {\r\n                onQueuesChange(\r\n                  allVisibleQueuesSelected\r\n                    ? selectedQueues.filter((sq) => !visibleQueues.some((q) => q.id === sq.id))\r\n                    : [\r\n                        ...selectedQueues,\r\n                        ...visibleQueues.filter(\r\n                          (q) => !selectedQueues.some((sq) => sq.id === q.id),\r\n                        ),\r\n                      ],\r\n                );\r\n              } else {\r\n                onQueuesChange(queues.filter((q) => ids.includes(q.id)));\r\n              }\r\n            }}\r\n            renderValue={(selected) => {\r\n              if ((selected as number[]).length === 0) return \"All Queues\";\r\n              if ((selected as number[]).length === queues.length) return \"All Queues\";\r\n              return `${(selected as number[]).length} Queue(s)`;\r\n            }}\r\n          >\r\n            <MenuSearchField\r\n              value={queueSearch}\r\n              onChange={setQueueSearch}\r\n              placeholder=\"Search queue...\"\r\n            />\r\n            {visibleQueues.length > 0 && (\r\n              <MenuItem value={-1}>\r\n                <Checkbox\r\n                  checked={allVisibleQueuesSelected}\r\n                  indeterminate={\r\n                    visibleQueues.some((q) => selectedQueues.some((sq) => sq.id === q.id)) &&\r\n                    !allVisibleQueuesSelected\r\n                  }\r\n                  size=\"small\"\r\n                />\r\n                {queueQuery ? \"Select All (filtered)\" : \"Select All\"}\r\n              </MenuItem>\r\n            )}\r\n            {visibleQueues.length === 0 && <MenuItem disabled>No queues found</MenuItem>}\r\n            {visibleQueues.map((q) => (\r\n              <MenuItem key={q.id} value={q.id}>\r\n                <Checkbox checked={selectedQueues.some((sq) => sq.id === q.id)} size=\"small\" />\r\n                {q.name}\r\n              </MenuItem>\r\n            ))}\r\n          </Select>\r\n        </FormControl>\r\n      )}\r\n\r\n      {showDidSelect && onDidsChange && (\r\n        <FormControl size=\"small\" sx={{ minWidth: 140 }}>\r\n          <InputLabel sx={{ fontSize: \"0.76rem\" }}>All DIDs</InputLabel>\r\n          <Select\r\n            multiple\r\n            sx={{ fontSize: \"0.76rem\", height: FILTER_HEIGHT, borderRadius: \"6px\" }}\r\n            MenuProps={{\r\n              variant: \"menu\",\r\n              autoFocus: false,\r\n              PaperProps: {\r\n                sx: {\r\n                  maxHeight: 280,\r\n                  \"& .MuiMenuItem-root\": { fontSize: \"0.76rem\", minHeight: 32, py: 0.3 },\r\n                },\r\n              },\r\n            }}\r\n            value={selectedDids.map((d) => d.id)}\r\n            label=\"All DIDs\"\r\n            onClose={() => setDidSearch(\"\")}\r\n            onChange={(e) => {\r\n              const ids = e.target.value as (number | string)[];\r\n              if (ids.includes(-1)) {\r\n                onDidsChange(\r\n                  allVisibleDidsSelected\r\n                    ? selectedDids.filter((sd) => !visibleDids.some((d) => d.id === sd.id))\r\n                    : [\r\n                        ...selectedDids,\r\n                        ...visibleDids.filter(\r\n                          (d) => !selectedDids.some((sd) => sd.id === d.id),\r\n                        ),\r\n                      ],\r\n                );\r\n              } else {\r\n                onDidsChange(dids.filter((d) => ids.includes(d.id)));\r\n              }\r\n            }}\r\n            renderValue={(selected) => {\r\n              const sel = selected as (number | string)[];\r\n              if (sel.length === 0 || sel.length === dids.length) return \"All DIDs\";\r\n              if (sel.length === 1) {\r\n                const item = dids.find((d) => d.id === sel[0]);\r\n                if (item) return item.friendlyName || item.didNumber;\r\n              }\r\n              return `${sel.length} DID(s)`;\r\n            }}\r\n          >\r\n            <MenuSearchField\r\n              value={didSearch}\r\n              onChange={setDidSearch}\r\n              placeholder=\"Search DID...\"\r\n            />\r\n            {visibleDids.length > 0 && (\r\n              <MenuItem value={-1}>\r\n                <Checkbox\r\n                  checked={allVisibleDidsSelected}\r\n                  indeterminate={\r\n                    visibleDids.some((d) => selectedDids.some((sd) => sd.id === d.id)) &&\r\n                    !allVisibleDidsSelected\r\n                  }\r\n                  size=\"small\"\r\n                />\r\n                {didQuery ? \"Select All (filtered)\" : \"Select All\"}\r\n              </MenuItem>\r\n            )}\r\n            {visibleDids.length === 0 && <MenuItem disabled>No DIDs found</MenuItem>}\r\n            {visibleDids.map((d) => (\r\n              <MenuItem key={d.id} value={d.id}>\r\n                <Checkbox checked={selectedDids.some((sd) => sd.id === d.id)} size=\"small\" />\r\n                <Box component=\"span\" sx={{ fontWeight: 500 }}>\r\n                  {d.friendlyName || d.didNumber}\r\n                </Box>\r\n              </MenuItem>\r\n            ))}\r\n          </Select>\r\n        </FormControl>\r\n      )}\r\n\r\n      {showProcessSelect && processes.length > 0 && onProcessChange && (\r\n        <TextField\r\n          select\r\n          size=\"small\"\r\n          value={selectedProcess}\r\n          onChange={(e) => onProcessChange(e.target.value)}\r\n          sx={{ width: 140, \"& .MuiOutlinedInput-root\": { height: FILTER_HEIGHT, borderRadius: \"6px\", fontSize: 13 } }}\r\n        >\r\n          {processes.map((p) => (\r\n            <option key={p.value} value={p.value}>\r\n              {p.label}\r\n            </option>\r\n          ))}\r\n        </TextField>\r\n      )}\r\n\r\n      {showCallTypeSelect && onCallTypeChange && (\r\n        <FormControl size=\"small\" sx={{ minWidth: 130 }}>\r\n          <InputLabel sx={{ fontSize: \"0.76rem\" }}>Call Type</InputLabel>\r\n          <Select\r\n            value={selectedCallType}\r\n            label=\"Call Type\"\r\n            onChange={(e) => onCallTypeChange(e.target.value as string)}\r\n            sx={{ fontSize: \"0.76rem\", height: FILTER_HEIGHT, borderRadius: \"6px\" }}\r\n            MenuProps={{\r\n              PaperProps: {\r\n                sx: {\r\n                  \"& .MuiMenuItem-root\": { fontSize: \"0.76rem\", minHeight: 32, py: 0.3 },\r\n                },\r\n              },\r\n            }}\r\n          >\r\n            {callTypeOptions.map((opt) => (\r\n              <MenuItem key={opt.value || \"all\"} value={opt.value}>\r\n                {opt.label}\r\n              </MenuItem>\r\n            ))}\r\n          </Select>\r\n        </FormControl>\r\n      )}\r\n\r\n      {showStatusSelect && onStatusChange && (\r\n        <FormControl size=\"small\" sx={{ minWidth: 130 }}>\r\n          <InputLabel sx={{ fontSize: \"0.76rem\" }}>Status</InputLabel>\r\n          <Select\r\n            value={selectedStatus}\r\n            label=\"Status\"\r\n            onChange={(e) => onStatusChange(e.target.value as string)}\r\n            sx={{ fontSize: \"0.76rem\", height: FILTER_HEIGHT, borderRadius: \"6px\" }}\r\n            MenuProps={{\r\n              PaperProps: {\r\n                sx: {\r\n                  \"& .MuiMenuItem-root\": { fontSize: \"0.76rem\", minHeight: 32, py: 0.3 },\r\n                },\r\n              },\r\n            }}\r\n          >\r\n            {statusOptions.map((opt) => (\r\n              <MenuItem key={opt.value || \"all\"} value={opt.value}>\r\n                {opt.label}\r\n              </MenuItem>\r\n            ))}\r\n          </Select>\r\n        </FormControl>\r\n      )}\r\n\r\n      {showConferenceSelect && onConferenceChange && (\r\n        <FormControl size=\"small\" sx={{ minWidth: 140 }}>\r\n          <InputLabel sx={{ fontSize: \"0.76rem\" }}>Conference</InputLabel>\r\n          <Select\r\n            value={selectedConference}\r\n            label=\"Conference\"\r\n            onChange={(e) => onConferenceChange(e.target.value as string)}\r\n            sx={{ fontSize: \"0.76rem\", height: FILTER_HEIGHT, borderRadius: \"6px\" }}\r\n            MenuProps={{\r\n              PaperProps: {\r\n                sx: {\r\n                  \"& .MuiMenuItem-root\": { fontSize: \"0.76rem\", minHeight: 32, py: 0.3 },\r\n                },\r\n              },\r\n            }}\r\n          >\r\n            {[\r\n              { label: \"All Calls\", value: \"\" },\r\n              { label: \"Conference Only\", value: \"true\" },\r\n              { label: \"Non-Conference\", value: \"false\" },\r\n            ].map((opt) => (\r\n              <MenuItem key={opt.value || \"all\"} value={opt.value}>\r\n                {opt.label}\r\n              </MenuItem>\r\n            ))}\r\n          </Select>\r\n        </FormControl>\r\n      )}\r\n\r\n      {showSearchBar && onSearchChange && (\r\n        <SearchBar\r\n          value={searchValue}\r\n          onChange={onSearchChange}\r\n          placeholder={searchPlaceholder}\r\n          width={200}\r\n          borderRadius=\"6px\"\r\n          sx={{ \"& .MuiOutlinedInput-root\": { height: FILTER_HEIGHT, fontSize: 13 } }}\r\n        />\r\n      )}\r\n\r\n      {showSearchButton && onSearch && (\r\n        <AppButton onClick={onSearch} disabled={loading} sx={{ height: FILTER_HEIGHT }}>\r\n          {loading ? <CircularProgress size={16} sx={{ color: \"#fff\" }} /> : \"Search\"}\r\n        </AppButton>\r\n      )}\r\n\r\n      {extra}\r\n    </Box>\r\n  );\r\n}\r\n\r\nexport type { QuickRange, ProcessOption, ReportFilterBarProps };\r\n"],"mappings":"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","names":[]}