{"version":3,"file":"GridPrimaryBar.mjs","names":["React","AppIconDefaultIcon","BlockedIcon","BulletedTreeListIcon","CombineIcon","ExportIcon","FavoriteStarIcon","FilterIcon","LightbulbIcon","MoreVerticalIcon","SaveIcon","SearchIcon","TripleColumnIcon","UploadIcon","InputAdornment","MenuItem","Popover","Typography","makeStyles","PropTypes","useCallback","useEffect","useMemo","useState","useTranslation","FluentIcon","AmbientChipButton","AmbientTokenButton","PrimaryActionButton","AmbientTextField","useStyles","theme","root","display","flexDirection","padding","spacing","label","alignItems","justifyContent","title","flex","marginLeft","props","tabRoot","minWidth","textTransform","controls","gridGap","gap","marginRight","icon","background","palette","common","white","color","primary","main","GridPrimaryBar","classes","t","children","onChange","fitClick","expandClick","clearClick","exportClick","filterClick","columnsClick","groupClick","hiddenActionButtons","hiddenLabels","hideSearchBar","secondaryActionButtons","saveViewClick","viewsClick","insightsClick","onPrimaryActionClick","primaryActionDisabled","primaryActionLabel","primaryActionIcon","onSearchKeyDown","actionButtonMedianPx","setActionButtonMedianPx","actionButtons","setActionButtons","menuActionButtons","setMenuActionButtons","anchorEl","setAnchorEl","windowWidthBreakpoint","setWindowWidthBreakpoint","chipButtonSizePx","tokenButtonSizePx","open","Boolean","id","undefined","defaultActionButtons","tooltip","defaultValue","visible","includes","hideLabel","onClick","iconClassName","handlePopoverClick","event","currentTarget","handlePopoverClose","formatActionButtons","buttons","map","button","allActionButtons","menuButtons","numActionButtons","length","buttonTotalWidth","calculatedMedian","Math","floor","breakPointOffset","breakPoint","currentWindowWidth","window","innerWidth","movedAction","pop","push","handleResize","visibleButtons","addEventListener","removeEventListener","handleCustomKeyDown","key","overflow","whiteSpace","textOverflow","marginTop","maxWidth","type","startAdornment","replace","vertical","horizontal","slice","reverse","propTypes","string","node","func","bool","arrayOf","object","oneOf","elementType"],"sources":["../../../../../src/UI/utilityDisplay/deprecated/grid/GridPrimaryBar.jsx"],"sourcesContent":["import React from \"react\";\nimport {\n  AppIconDefaultIcon,\n  BlockedIcon,\n  BulletedTreeListIcon,\n  CombineIcon,\n  ExportIcon,\n  FavoriteStarIcon,\n  FilterIcon,\n  LightbulbIcon,\n  MoreVerticalIcon,\n  SaveIcon,\n  SearchIcon,\n  TripleColumnIcon,\n  UploadIcon\n} from '@fluentui/react-icons';\nimport {\n  InputAdornment,\n  MenuItem,\n  Popover,\n  Typography,\n  makeStyles\n} from '@material-ui/core';\nimport PropTypes from 'prop-types';\nimport { useCallback, useEffect, useMemo, useState } from 'react';\nimport { useTranslation } from 'react-i18next';\nimport { FluentIcon } from '../../../../utilities/iconLibrary/FluentIcon';\nimport { AmbientChipButton } from '../../../inputs/buttons/AmbientChipButton';\nimport { AmbientTokenButton } from '../../../inputs/buttons/AmbientTokenButton';\nimport PrimaryActionButton from '../../../inputs/buttons/PrimaryActionButton';\nimport { AmbientTextField } from '../../../inputs/textField/AmbientTextField';\n\nconst useStyles = makeStyles((theme) => ({\n  root: {\n    display: 'flex',\n    flexDirection: 'row',\n    padding: theme.spacing(0.5)\n    // background: (props) =>\n    //   props.background\n    //     ? props.background\n    //     : lighten(theme.palette.secondary.light, 0.9)\n  },\n  label: {\n    display: 'flex',\n    alignItems: 'center',\n    justifyContent: 'flex-end'\n  },\n  title: {\n    flex: 1,\n    display: 'flex',\n    alignItems: 'center',\n    marginLeft: (props) => (props.title ? theme.spacing(2) : 0)\n  },\n  // @todo: switch to Fluent tabs and remove this style\n  tabRoot: {\n    minWidth: 0,\n    textTransform: 'none'\n  },\n  controls: {\n    display: 'flex',\n    alignItems: 'center',\n    gridGap: theme.spacing(2),\n    gap: theme.spacing(2),\n    marginRight: theme.spacing(2)\n  },\n  icon: {\n    background: theme.palette.common.white,\n    padding: theme.spacing(1),\n    color: theme.palette.primary.main\n  }\n}));\n\n/** @deprecated Use the new grid. */\nexport const GridPrimaryBar = (props) => {\n  const classes = useStyles(props);\n  const { t } = useTranslation();\n  const {\n    children,\n    onChange,\n    fitClick,\n    expandClick,\n    clearClick,\n    exportClick,\n    filterClick,\n    columnsClick,\n    groupClick,\n    title,\n    hiddenActionButtons,\n    hiddenLabels,\n    hideSearchBar = false,\n    secondaryActionButtons,\n    saveViewClick,\n    viewsClick,\n    insightsClick,\n    onPrimaryActionClick,\n    primaryActionDisabled,\n    primaryActionLabel,\n    primaryActionIcon,\n    onSearchKeyDown\n  } = props;\n\n  const [actionButtonMedianPx, setActionButtonMedianPx] = useState(0);\n  const [actionButtons, setActionButtons] = useState([]);\n  const [menuActionButtons, setMenuActionButtons] = useState([]);\n  const [anchorEl, setAnchorEl] = useState(null);\n  const [windowWidthBreakpoint, setWindowWidthBreakpoint] = useState(1400);\n\n  const chipButtonSizePx = 100;\n  const tokenButtonSizePx = 40;\n  const open = Boolean(anchorEl);\n  const id = open ? 'simple-popover' : undefined;\n\n  const defaultActionButtons = useMemo(\n    () => [\n      {\n        icon: SaveIcon,\n        tooltip: t('grid.toolbar.saveGridConfiguration', {\n          defaultValue: 'Save Grid Configuration'\n        }),\n        label: t('grid.views.saveView', { defaultValue: 'Save View' }),\n        visible: !hiddenActionButtons.includes('saveView'),\n        hideLabel: hiddenLabels.includes('saveView'),\n        onClick: saveViewClick,\n        background: 'transparent'\n      },\n      {\n        icon: FavoriteStarIcon,\n        tooltip: t('grid.views.browseViews', { defaultValue: 'Browse Views' }),\n        label: t('grid.views.views', { defaultValue: 'Views' }),\n        visible: !hiddenActionButtons.includes('views'),\n        onClick: viewsClick,\n        hideLabel: hiddenLabels.includes('views'),\n        iconClassName: classes.icon\n      },\n      {\n        icon: LightbulbIcon,\n        tooltip: t('grid.toolbar.insights', { defaultValue: 'Insights' }),\n        label: t('grid.toolbar.insights', { defaultValue: 'Insights' }),\n        visible: !hiddenActionButtons.includes('insights'),\n        hideLabel: hiddenLabels.includes('insights'),\n        onClick: insightsClick,\n        iconClassName: classes.icon\n      },\n      {\n        icon: UploadIcon,\n        tooltip: t('grid.toolbar.importExport', {\n          defaultValue: 'Import/Export'\n        }),\n        label: t('grid.toolbar.importExport', {\n          defaultValue: 'Import/Export'\n        }),\n        visible: !!exportClick && !hiddenActionButtons.includes('importExport'),\n        hideLabel: hiddenLabels.includes('importExport'),\n        onClick: exportClick,\n        iconClassName: classes.icon\n      },\n      {\n        icon: BulletedTreeListIcon,\n        tooltip: t('grid.toolbar.group', { defaultValue: 'Group' }),\n        label: t('grid.toolbar.group', { defaultValue: 'Group' }),\n        visible: !!groupClick && !hiddenActionButtons.includes('group'),\n        hideLabel: hiddenLabels.includes('group'),\n        onClick: groupClick,\n        iconClassName: classes.icon\n      },\n      {\n        icon: FilterIcon,\n        tooltip: t('grid.toolbar.filter', { defaultValue: 'Filter' }),\n        label: t('grid.toolbar.filter', { defaultValue: 'Filter' }),\n        visible: !!filterClick && !hiddenActionButtons.includes('filter'),\n        hideLabel: hiddenLabels.includes('filter'),\n        onClick: filterClick,\n        iconClassName: classes.icon\n      },\n      {\n        icon: TripleColumnIcon,\n        tooltip: t('grid.toolbar.columns', { defaultValue: 'Columns' }),\n        label: t('grid.toolbar.columns', { defaultValue: 'Columns' }),\n        visible: !!columnsClick && !hiddenActionButtons.includes('columns'),\n        hideLabel: hiddenLabels.includes('columns'),\n        onClick: columnsClick,\n        iconClassName: classes.icon\n      },\n      {\n        icon: CombineIcon,\n        tooltip: t('grid.toolbar.fitGrid', { defaultValue: 'Fit Grid' }),\n        label: t('grid.toolbar.fitGrid', { defaultValue: 'Fit Grid' }),\n        visible: !!fitClick && !hiddenActionButtons.includes('fitGrid'),\n        hideLabel: hiddenLabels.includes('fitGrid'),\n        onClick: fitClick,\n        iconClassName: classes.icon\n      },\n      {\n        icon: ExportIcon,\n        tooltip: t('grid.toolbar.expandGrid', { defaultValue: 'Expand Grid' }),\n        label: t('grid.toolbar.expandGrid', { defaultValue: 'Expand Grid' }),\n        visible: !!expandClick && !hiddenActionButtons.includes('expandGrid'),\n        hideLabel: hiddenLabels.includes('expandGrid'),\n        onClick: expandClick,\n        iconClassName: classes.icon\n      },\n      {\n        icon: BlockedIcon,\n        tooltip: t('grid.toolbar.clearFilters', {\n          defaultValue: 'Clear Filters'\n        }),\n        label: t('grid.toolbar.clearFilters', {\n          defaultValue: 'Clear Filters'\n        }),\n        visible: !!clearClick && !hiddenActionButtons.includes('clearFilters'),\n        hideLabel: hiddenLabels.includes('clearFilters'),\n        onClick: clearClick,\n        iconClassName: classes.icon\n      }\n    ],\n    [\n      classes.icon,\n      clearClick,\n      columnsClick,\n      expandClick,\n      exportClick,\n      filterClick,\n      fitClick,\n      groupClick,\n      hiddenActionButtons,\n      hiddenLabels,\n      insightsClick,\n      saveViewClick,\n      t,\n      viewsClick\n    ]\n  );\n\n  const handlePopoverClick = (event) => {\n    setAnchorEl(event.currentTarget);\n  };\n\n  const handlePopoverClose = () => {\n    setAnchorEl(null);\n  };\n\n  const formatActionButtons = useCallback(\n    (buttons) => {\n      // This allows users to not have to set the visible and showLabel properties when passing secondaryActionButtons\n      return buttons.map((button) => {\n        if (button.visible === undefined) {\n          button.visible = true;\n        }\n        if (button.hideLabel === undefined) {\n          button.hideLabel = false;\n        }\n        if (button.label === undefined) {\n          button.label =\n            button.tooltip ?? t('grid.toolbar.button', { defaultValue: 'Button' });\n          button.hideLabel = true;\n        }\n        if (\n          button.iconClassName === undefined &&\n          button.background === undefined\n        ) {\n          button.iconClassName = classes.icon;\n        }\n        return button;\n      });\n    },\n    [classes?.icon, t]\n  );\n\n  // calculate the action buttons to display based on the window width\n  useEffect(() => {\n    const allActionButtons = formatActionButtons([\n      ...defaultActionButtons,\n      ...secondaryActionButtons\n    ]);\n    const menuButtons = [];\n\n    const numActionButtons =\n      allActionButtons.length - hiddenActionButtons.length;\n    const buttonTotalWidth =\n      numActionButtons * chipButtonSizePx -\n      (chipButtonSizePx - tokenButtonSizePx) * hiddenLabels.length;\n\n    const calculatedMedian = Math.floor(buttonTotalWidth / numActionButtons);\n\n    const breakPointOffset = calculatedMedian > 70 ? 950 : 900;\n    let breakPoint = breakPointOffset + buttonTotalWidth;\n\n    const currentWindowWidth = window.innerWidth;\n    while (currentWindowWidth < breakPoint && allActionButtons.length > 0) {\n      const movedAction = allActionButtons.pop();\n      menuButtons.push(movedAction);\n      breakPoint -= calculatedMedian;\n    }\n\n    setActionButtonMedianPx(calculatedMedian);\n    setActionButtons(allActionButtons);\n    setMenuActionButtons(menuButtons);\n    setWindowWidthBreakpoint(breakPoint);\n  }, [\n    formatActionButtons,\n    defaultActionButtons,\n    secondaryActionButtons,\n    hiddenActionButtons?.length,\n    hiddenLabels?.length\n  ]);\n\n  useEffect(() => {\n    const handleResize = () => {\n      let breakPoint = windowWidthBreakpoint;\n      let visibleButtons = [...actionButtons];\n      let menuButtons = [...menuActionButtons];\n\n      while (window.innerWidth < breakPoint && visibleButtons.length > 0) {\n        const movedAction = visibleButtons.pop();\n        menuButtons.push(movedAction);\n        breakPoint -= actionButtonMedianPx;\n      }\n\n      while (\n        window.innerWidth > breakPoint + actionButtonMedianPx &&\n        menuButtons.length > 0\n      ) {\n        const movedAction = menuButtons.pop(0);\n        visibleButtons.push(movedAction);\n        breakPoint += actionButtonMedianPx;\n      }\n\n      setActionButtons(visibleButtons);\n      setMenuActionButtons(menuButtons);\n      setWindowWidthBreakpoint(breakPoint);\n    };\n\n    window.addEventListener('resize', handleResize);\n    return () => {\n      window.removeEventListener('resize', handleResize);\n    };\n  }, [\n    windowWidthBreakpoint,\n    actionButtons,\n    menuActionButtons,\n    actionButtonMedianPx\n  ]);\n\n  const handleCustomKeyDown = (event) => {\n    if(onSearchKeyDown){\n      if (event.key === 'Enter') {\n        onSearchKeyDown()\n      }\n    }\n\n  }\n\n  return (\n    <div className={classes.root}>\n      <div className={classes.title}>\n        {title && (\n          <Typography\n            variant='h6'\n            style={{\n              overflow: 'hidden',\n              whiteSpace: 'nowrap',\n              textOverflow: 'ellipsis'\n            }}\n          >\n            {' '}\n            {title}{' '}\n          </Typography>\n        )}\n        {!hideSearchBar && (\n          <div\n            style={{\n              flex: 1,\n              marginLeft: 16,\n              marginRight: 16,\n              marginTop: -16,\n              maxWidth: 300\n            }}\n          >\n            <AmbientTextField\n              title={title}\n              onChange={onChange}\n              onKeyDown={handleCustomKeyDown}\n              InputProps={{\n                type: 'search',\n                startAdornment: (\n                  <InputAdornment position='start'>\n                    <SearchIcon />\n                  </InputAdornment>\n                )\n              }}\n            />\n          </div>\n        )}\n      </div>\n\n      <div className={classes.controls}>\n        {actionButtons.map(\n          (button) =>\n            button.visible &&\n            (button.hideLabel ? (\n              <AmbientTokenButton\n                id={\n                  'udpRecord-GridPrimaryBar-Token-' +\n                  button.label.replace(/ /g, '-')\n                }\n                udprecordid={\n                  'udpRecord-GridPrimaryBar-Token-' +\n                  button.label.replace(/ /g, '-')\n                }\n                icon={button.icon ?? AppIconDefaultIcon}\n                tooltip={button.tooltip}\n                onClick={button.onClick}\n                ariaLabel={button.label}\n                iconClassName={button.iconClassName}\n              />\n            ) : (\n              <AmbientChipButton\n                id={\n                  'udpRecord-GridPrimaryBar-Chip-' +\n                  button.label.replace(/ /g, '-')\n                }\n                udprecordid={\n                  'udpRecord-GridPrimaryBar-Chip-' +\n                  button.label.replace(/ /g, '-')\n                }\n                icon={button.icon ?? AppIconDefaultIcon}\n                tooltip={button.tooltip}\n                label={button.label}\n                onClick={button.onClick}\n                background={button.background}\n              />\n            ))\n        )}\n\n        {!!menuActionButtons.length && (\n          <div>\n            <AmbientTokenButton\n              id={id}\n              icon={MoreVerticalIcon}\n              tooltip={t('grid.toolbar.moreActions', { defaultValue: 'More Actions' })}\n              ariaLabel={t('grid.toolbar.moreActions', { defaultValue: 'More Actions' })}\n              onClick={handlePopoverClick}\n              iconClassName={classes.icon}\n            />\n            <Popover\n              id={id}\n              open={open}\n              anchorEl={anchorEl}\n              onClose={handlePopoverClose}\n              anchorOrigin={{\n                vertical: 'bottom',\n                horizontal: 'right'\n              }}\n              transformOrigin={{\n                vertical: 'top',\n                horizontal: 'right'\n              }}\n            >\n              {menuActionButtons\n                .slice(0)\n                .reverse()\n                .map((button) => {\n                  if (!button.visible) return null;\n                  return (\n                    <MenuItem\n                      id={\n                        'udpRecord-GridPrimaryBar-MenuItem-' +\n                        button.label.replace(/ /g, '-')\n                      }\n                      udprecordid={\n                        'udpRecord-GridPrimaryBar-MenuItem-' +\n                        button.label.replace(/ /g, '-')\n                      }\n                      onClick={button.onClick}\n                      style={{\n                        display: 'flex',\n                        justifyContent: 'space-between'\n                      }}\n                    >\n                      <Typography>{button.label}</Typography>\n                      <FluentIcon\n                        component={button.icon ?? AppIconDefaultIcon}\n                        style={{ marginLeft: 7 }}\n                      />\n                    </MenuItem>\n                  );\n                })}\n            </Popover>\n          </div>\n        )}\n      </div>\n\n      {onPrimaryActionClick && (\n        <PrimaryActionButton\n          onClick={onPrimaryActionClick}\n          id='udpRecord-GridPrimaryBar-Add'\n          udprecordid='udpRecord-GridPrimaryBar-Add'\n          disabled={primaryActionDisabled}\n        >\n          <Typography style={{ marginLeft: 4 }}>\n            {primaryActionLabel ??\n              t('grid.toolbar.button', { defaultValue: 'Button' })}\n          </Typography>\n          <FluentIcon\n            style={{ marginLeft: 7 }}\n            component={primaryActionIcon ?? AppIconDefaultIcon}\n          />\n        </PrimaryActionButton>\n      )}\n    </div>\n  );\n};\n\nGridPrimaryBar.propTypes = {\n  /**\n   * Title of the action bar\n   */\n  title: PropTypes.string,\n  /**\n   * Child content to add within action bar\n   */\n  children: PropTypes.node,\n  /**\n   * The event that occurs when the grid changes due to a search\n   */\n  onChange: PropTypes.func,\n  /**\n   * Passes click event to function for fit to grid\n   */\n  fitClick: PropTypes.func,\n  /**\n   * Passes click event to function for expanding grid\n   */\n  expandClick: PropTypes.func,\n  /**\n   * Passes click event to function for clearing filters\n   */\n  clearClick: PropTypes.func,\n  /**\n   * Passes click event to function for exporting grid\n   */\n  exportClick: PropTypes.func,\n  /**\n   * Passes function that executes on the insights button click\n   */\n  insightsClick: PropTypes.func,\n  /**\n   * Passes click event to function for filtering grid\n   */\n  filterClick: PropTypes.func,\n  /**\n   * Passes click event to function for disabling columns in grid\n   */\n  columnsClick: PropTypes.func,\n  /**\n   * Passes click event to function for grouping grid\n   */\n  groupClick: PropTypes.func,\n  /**\n   * Specifies whether to hide the search bar\n   */\n  hideSearchBar: PropTypes.bool,\n  /**\n   * An optional array of secondary action buttons to display.\n   * Required minimum format:\n   *  {\n        tooltip: 'Description',\n        label: 'Label',\n        onClick: () => console.log('Button clicked'),\n      },\n   */\n  secondaryActionButtons: PropTypes.arrayOf(PropTypes.object),\n  /*\n   * Specifies which action buttons to hide\n   */\n  hiddenActionButtons: PropTypes.arrayOf(\n    PropTypes.oneOf([\n      'saveView',\n      'views',\n      'insights',\n      'importExport',\n      'group',\n      'filter',\n      'columns',\n      'fitGrid',\n      'expandGrid',\n      'clearFilters'\n    ])\n  ),\n  /*\n   * Specifies which action button labels to hide\n   */\n  hiddenLabels: PropTypes.arrayOf(\n    PropTypes.oneOf([\n      'saveView',\n      'views',\n      'insights',\n      'importExport',\n      'group',\n      'filter',\n      'columns',\n      'fitGrid',\n      'expandGrid',\n      'clearFilters'\n    ])\n  ),\n  /**\n   * Passes function that executes on the primary action button click\n   */\n  onPrimaryActionClick: PropTypes.func,\n  /**\n   * Specifies the label for the primary action button\n   */\n  primaryActionLabel: PropTypes.string,\n  /**\n   * Specifies the icon for the primary action button\n   */\n  primaryActionIcon: PropTypes.elementType\n};\n"],"mappings":"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"}