{"version":3,"file":"DataTableSettings.cjs","names":["_react","require","_MenuButton","_MenuItem","_i18n","_index","_constants","_jsxRuntime","_interopRequireDefault","e","__esModule","default","DataTableSettings","hasChangeableDensity","rowDensity","setRowDensity","hasColumnVisibility","columns","columnVisibility","setColumnVisibility","t","useTranslation","changeRowDensity","useCallback","value","_event","process","env","NODE_ENV","console","debug","changeColumnVisibility","columnId","prevVisibility","isColumnVisibilityChecked","useMemo","reduce","acc","column","isChecked","accessorKey","jsxs","Fragment","children","jsx","MenuButton","ariaLabel","endIcon","ListIcon","menuAlignment","shouldCloseOnSelect","densityValues","map","MenuItem","isSelected","onClick","ShowIcon","filter","enableHiding","id","_Checkbox2","checked","header","MemoizedDataTableSettings","exports","memo","displayName"],"sources":["../../../src/DataTable/DataTableSettings.tsx"],"sourcesContent":["/*!\n * Copyright (c) 2023-present, Okta, Inc. and/or its affiliates. All rights reserved.\n * The Okta software accompanied by this notice is provided pursuant to the Apache License, Version 2.0 (the \"License.\")\n *\n * You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0.\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT\n * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n *\n * See the License for the specific language governing permissions and limitations under the License.\n */\n\nimport { Checkbox as MuiCheckbox } from \"@mui/material\";\nimport { MRT_VisibilityState } from \"material-react-table\";\nimport { Dispatch, memo, SetStateAction, useCallback, useMemo } from \"react\";\n\nimport { MenuButton } from \"../Buttons/MenuButton.js\";\nimport { MenuItem } from \"../Buttons/MenuItem.js\";\nimport { useTranslation } from \"../i18n.generated/i18n.js\";\nimport { ListIcon, ShowIcon } from \"../icons.generated/index.js\";\nimport { densityValues } from \"./constants.js\";\nimport { DataTableProps } from \"./DataTable.js\";\n\nexport type DataTableSettingsProps = {\n  columns: DataTableProps[\"columns\"];\n  columnVisibility?: MRT_VisibilityState;\n  hasChangeableDensity: DataTableProps[\"hasChangeableDensity\"];\n  hasColumnVisibility: DataTableProps[\"hasColumnVisibility\"];\n  rowDensity: (typeof densityValues)[number];\n  setColumnVisibility: Dispatch<\n    SetStateAction<MRT_VisibilityState | undefined>\n  >;\n  setRowDensity: Dispatch<SetStateAction<(typeof densityValues)[number]>>;\n};\n\nconst DataTableSettings = ({\n  hasChangeableDensity,\n  rowDensity,\n  setRowDensity,\n  hasColumnVisibility,\n  columns,\n  columnVisibility,\n  setColumnVisibility,\n}: DataTableSettingsProps) => {\n  const { t } = useTranslation();\n\n  const changeRowDensity = useCallback(\n    (value: (typeof densityValues)[number]) =>\n      (_event: React.MouseEvent<HTMLLIElement>) => {\n        // This is necessary to avoid linter errors, while the _event is necessary to satisfy the onClick type\n        if (process.env.NODE_ENV === \"development\") console.debug(_event);\n\n        setRowDensity(value);\n      },\n    [setRowDensity],\n  );\n\n  const changeColumnVisibility = useCallback(\n    (columnId: string) => (_event: React.MouseEvent<HTMLLIElement>) => {\n      // This is necessary to avoid linter errors, while the _event is necessary to satisfy the onClick type\n      if (process.env.NODE_ENV === \"development\") console.debug(_event);\n\n      setColumnVisibility((prevVisibility) => ({\n        ...prevVisibility,\n        [columnId]: prevVisibility ? prevVisibility[columnId] === false : false,\n      }));\n    },\n    [setColumnVisibility],\n  );\n\n  const isColumnVisibilityChecked = useMemo(() => {\n    return columns.reduce(\n      (acc, column) => {\n        const isChecked = columnVisibility\n          ? columnVisibility[column.accessorKey!] !== false\n          : true;\n        acc[column.accessorKey!] = isChecked;\n        return acc;\n      },\n      {} as Record<string, boolean>,\n    );\n  }, [columns, columnVisibility]);\n\n  return (\n    <>\n      {hasChangeableDensity && (\n        <MenuButton\n          ariaLabel={t(\"table.density.arialabel\")}\n          endIcon={<ListIcon />}\n          menuAlignment=\"right\"\n          shouldCloseOnSelect={false}\n        >\n          <>\n            {densityValues.map((value: (typeof densityValues)[number]) => (\n              <MenuItem\n                isSelected={rowDensity === value}\n                key={value}\n                onClick={changeRowDensity(value)}\n              >\n                {t(`table.density.${value}`)}\n              </MenuItem>\n            ))}\n          </>\n        </MenuButton>\n      )}\n\n      {hasColumnVisibility && (\n        <MenuButton\n          ariaLabel={t(\"table.columnvisibility.arialabel\")}\n          endIcon={<ShowIcon />}\n          menuAlignment=\"right\"\n          shouldCloseOnSelect={false}\n        >\n          <>\n            {columns\n              .filter((column) => column.enableHiding !== false)\n              .map((column) => (\n                <MenuItem\n                  key={column.accessorKey}\n                  onClick={changeColumnVisibility(column.id as string)}\n                >\n                  <MuiCheckbox\n                    checked={isColumnVisibilityChecked[column.accessorKey!]}\n                  />\n                  {column.header}\n                </MenuItem>\n              ))}\n          </>\n        </MenuButton>\n      )}\n    </>\n  );\n};\n\nconst MemoizedDataTableSettings = memo(DataTableSettings);\nMemoizedDataTableSettings.displayName = \"DataTableSettings\";\n\nexport { MemoizedDataTableSettings as DataTableSettings };\n"],"mappings":"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","ignoreList":[]}