{"version":3,"file":"TableSettings.cjs","names":["_react","require","_MenuButton","_MenuItem","_i18n","_index","_constants","_jsxRuntime","_interopRequireDefault","e","__esModule","default","TableSettings","setTableState","tableLayoutOptions","tableState","t","useTranslation","hasChangeableDensity","hasColumnVisibility","columns","rowDensity","columnVisibility","changeRowDensity","useCallback","value","prevState","changeColumnVisibility","columnId","visibleColumns","useMemo","Set","filter","column","accessorKey","map","memoizedDensityMenu","jsx","MenuButton","ariaLabel","endIcon","ListIcon","menuAlignment","shouldCloseOnSelect","children","densityValues","MenuItem","isSelected","onClick","memoizedColumnVisibilityMenu","ShowIcon","Boolean","enableHiding","jsxs","id","_Checkbox2","checked","has","header","Fragment","MemoizedTableSettings","exports","memo","displayName"],"sources":["../../../../src/labs/DataView/TableSettings.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_DensityState, MRT_RowData } from \"material-react-table\";\nimport {\n  Dispatch,\n  type JSX,\n  memo,\n  SetStateAction,\n  useCallback,\n  useMemo,\n} 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 { TableLayoutProps, TableState } from \"./componentTypes.js\";\nimport { densityValues } from \"./constants.js\";\n\nexport type TableSettingsProps<TData extends MRT_RowData> = {\n  setTableState: Dispatch<SetStateAction<TableState>>;\n  tableLayoutOptions: TableLayoutProps<TData>;\n  tableState: TableState;\n};\n\ntype TableSettingsComponent = (<TData extends MRT_RowData>(\n  props: TableSettingsProps<TData>,\n) => JSX.Element) & {\n  displayName?: string;\n};\n\nconst TableSettings: TableSettingsComponent = <TData extends MRT_RowData>({\n  setTableState,\n  tableLayoutOptions,\n  tableState,\n}: TableSettingsProps<TData>) => {\n  const { t } = useTranslation();\n\n  const { hasChangeableDensity, hasColumnVisibility, columns } =\n    tableLayoutOptions;\n  const { rowDensity, columnVisibility } = tableState;\n\n  const changeRowDensity = useCallback<(value: MRT_DensityState) => void>(\n    (value) => {\n      setTableState((prevState) => ({\n        ...prevState,\n        rowDensity: value,\n      }));\n    },\n    [setTableState],\n  );\n\n  const changeColumnVisibility = useCallback<(columnId: string) => void>(\n    (columnId) => {\n      setTableState((prevState) => ({\n        ...prevState,\n        columnVisibility: {\n          ...prevState.columnVisibility,\n          [columnId]: prevState.columnVisibility\n            ? prevState.columnVisibility[columnId] === false\n            : false,\n        },\n      }));\n    },\n    [setTableState],\n  );\n\n  const visibleColumns = useMemo(\n    () =>\n      new Set(\n        columns\n          .filter((column) =>\n            columnVisibility\n              ? columnVisibility[column.accessorKey!] !== false\n              : true,\n          )\n          .map((column) => column.accessorKey!),\n      ),\n    [columns, columnVisibility],\n  );\n\n  const memoizedDensityMenu = useMemo(\n    () =>\n      hasChangeableDensity && (\n        <MenuButton\n          ariaLabel={t(\"table.density.arialabel\")}\n          endIcon={<ListIcon />}\n          menuAlignment=\"right\"\n          shouldCloseOnSelect={false}\n        >\n          {densityValues.map((value) => (\n            <MenuItem\n              isSelected={rowDensity === value}\n              key={value}\n              onClick={() => changeRowDensity(value)}\n            >\n              {t(`table.density.${value}`)}\n            </MenuItem>\n          ))}\n        </MenuButton>\n      ),\n    [hasChangeableDensity, t, rowDensity, changeRowDensity],\n  );\n\n  const memoizedColumnVisibilityMenu = useMemo(\n    () =>\n      hasColumnVisibility && (\n        <MenuButton\n          ariaLabel={t(\"table.columnvisibility.arialabel\")}\n          endIcon={<ShowIcon />}\n          menuAlignment=\"right\"\n          shouldCloseOnSelect={false}\n        >\n          {columns\n            .filter((column) => Boolean(column.enableHiding !== false))\n            .map((column) => (\n              <MenuItem\n                key={column.accessorKey}\n                onClick={() => changeColumnVisibility(column.id!)}\n              >\n                <MuiCheckbox checked={visibleColumns.has(column.id!)} />\n                {column.header}\n              </MenuItem>\n            ))}\n        </MenuButton>\n      ),\n    [hasColumnVisibility, t, columns, changeColumnVisibility, visibleColumns],\n  );\n\n  return (\n    <>\n      {memoizedDensityMenu}\n      {memoizedColumnVisibilityMenu}\n    </>\n  );\n};\n\nconst MemoizedTableSettings = memo(TableSettings) as TableSettingsComponent;\nMemoizedTableSettings.displayName = \"TableSettings\";\n\nexport { MemoizedTableSettings as TableSettings };\n"],"mappings":"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","ignoreList":[]}