![]() System : Linux absol.cf 5.4.0-198-generic #218-Ubuntu SMP Fri Sep 27 20:18:53 UTC 2024 x86_64 User : www-data ( 33) PHP Version : 7.4.33 Disable Function : pcntl_alarm,pcntl_fork,pcntl_waitpid,pcntl_wait,pcntl_wifexited,pcntl_wifstopped,pcntl_wifsignaled,pcntl_wifcontinued,pcntl_wexitstatus,pcntl_wtermsig,pcntl_wstopsig,pcntl_signal,pcntl_signal_get_handler,pcntl_signal_dispatch,pcntl_get_last_error,pcntl_strerror,pcntl_sigprocmask,pcntl_sigwaitinfo,pcntl_sigtimedwait,pcntl_exec,pcntl_getpriority,pcntl_setpriority,pcntl_async_signals,pcntl_unshare, Directory : /opt/mattermost/client/ |
Upload File : |
{"version":3,"file":"9163.52a1019a7d2213a16ccb.js","mappings":"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","sources":["webpack://mattermost-webapp/./src/components/settings_sidebar/settings_sidebar.tsx","webpack://mattermost-webapp/./src/components/settings_sidebar/index.ts"],"sourcesContent":["// Copyright (c) 2015-present Mattermost, Inc. All Rights Reserved.\n// See LICENSE.txt for license information.\n\nimport React from 'react';\nimport type {RefObject} from 'react';\nimport {FormattedMessage} from 'react-intl';\n\nimport Constants from 'utils/constants';\nimport {isKeyPressed} from 'utils/keyboard';\nimport {a11yFocus} from 'utils/utils';\n\nexport type Tab = {\n icon: string | {url: string};\n iconTitle: string;\n name: string;\n uiName: string;\n}\n\nexport type Props = {\n activeTab?: string;\n tabs: Tab[];\n pluginTabs?: Tab[];\n updateTab: (name: string) => void;\n isMobileView: boolean;\n};\n\nexport default class SettingsSidebar extends React.PureComponent<Props> {\n buttonRefs: Array<RefObject<HTMLButtonElement>>;\n\n constructor(props: Props) {\n super(props);\n this.buttonRefs = this.props.tabs.map(() => React.createRef());\n }\n\n public handleClick = (tab: Tab, e: React.MouseEvent) => {\n e.preventDefault();\n this.props.updateTab(tab.name);\n (e.target as Element).closest('.settings-modal')?.classList.add('display--content');\n };\n\n public handleKeyUp = (index: number, e: React.KeyboardEvent) => {\n if (isKeyPressed(e, Constants.KeyCodes.UP)) {\n if (index > 0) {\n this.props.updateTab(this.props.tabs[index - 1].name);\n a11yFocus(this.buttonRefs[index - 1].current);\n }\n } else if (isKeyPressed(e, Constants.KeyCodes.DOWN)) {\n if (index < this.props.tabs.length - 1) {\n this.props.updateTab(this.props.tabs[index + 1].name);\n a11yFocus(this.buttonRefs[index + 1].current);\n }\n }\n };\n\n private renderTab(tab: Tab, index: number) {\n const key = `${tab.name}_li`;\n const isActive = this.props.activeTab === tab.name;\n let className = '';\n if (isActive) {\n className = 'active';\n }\n\n let icon;\n if (typeof tab.icon === 'string') {\n icon = (\n <i\n className={tab.icon}\n title={tab.iconTitle}\n />\n );\n } else {\n icon = (\n <img\n src={tab.icon.url}\n alt={tab.iconTitle}\n className='icon'\n />\n );\n }\n\n return (\n <li\n id={`${tab.name}Li`}\n key={key}\n className={className}\n role='presentation'\n >\n <button\n ref={this.buttonRefs[index]}\n id={`${tab.name}Button`}\n className='cursor--pointer style--none'\n onClick={this.handleClick.bind(null, tab)}\n onKeyUp={this.handleKeyUp.bind(null, index)}\n aria-label={tab.uiName.toLowerCase()}\n role='tab'\n aria-selected={isActive}\n tabIndex={!isActive && !this.props.isMobileView ? -1 : 0}\n >\n {icon}\n {tab.uiName}\n </button>\n </li>\n );\n }\n\n public render() {\n const tabList = this.props.tabs.map((tab, index) => this.renderTab(tab, index));\n let pluginTabList: React.ReactNode;\n if (this.props.pluginTabs?.length) {\n pluginTabList = (\n <>\n <hr/>\n <li\n key={'plugin preferences heading'}\n role='heading'\n className={'header'}\n >\n <FormattedMessage\n id={'userSettingsModal.pluginPreferences.header'}\n defaultMessage={'PLUGIN PREFERENCES'}\n />\n </li>\n {this.props.pluginTabs.map((tab, index) => this.renderTab(tab, index))}\n </>\n );\n }\n\n return (\n <div>\n <ul\n id='tabList'\n className='nav nav-pills nav-stacked'\n role='tablist'\n aria-orientation='vertical'\n >\n {tabList}\n {pluginTabList}\n </ul>\n </div>\n );\n }\n}\n","// Copyright (c) 2015-present Mattermost, Inc. All Rights Reserved.\n// See LICENSE.txt for license information.\n\nimport {connect} from 'react-redux';\n\nimport {getIsMobileView} from 'selectors/views/browser';\n\nimport type {GlobalState} from 'types/store';\n\nimport SettingsSidebar from './settings_sidebar';\n\nfunction mapStateToProps(state: GlobalState) {\n return {\n isMobileView: getIsMobileView(state),\n };\n}\n\nexport default connect(mapStateToProps)(SettingsSidebar);\n"],"names":["SettingsSidebar","React","constructor","props","super","_defineProperty","tab","e","_closest","preventDefault","this","updateTab","name","target","closest","classList","add","index","isKeyPressed","Constants","KeyCodes","UP","tabs","a11yFocus","buttonRefs","current","DOWN","length","map","renderTab","key","concat","isActive","activeTab","icon","className","title","iconTitle","src","url","alt","id","role","ref","onClick","handleClick","bind","onKeyUp","handleKeyUp","uiName","toLowerCase","tabIndex","isMobileView","render","_this$props$pluginTab","tabList","pluginTabList","pluginTabs","FormattedMessage","defaultMessage","connect","state","getIsMobileView"],"sourceRoot":""}