|
@@ -3,10 +3,7 @@ import { memo } from 'react'
|
|
|
import classNames from 'classnames'
|
|
import classNames from 'classnames'
|
|
|
import { useDetachCompileContext as useCompileContext } from '../../../shared/context/detach-compile-context'
|
|
import { useDetachCompileContext as useCompileContext } from '../../../shared/context/detach-compile-context'
|
|
|
import { useStopOnFirstError } from '../../../shared/hooks/use-stop-on-first-error'
|
|
import { useStopOnFirstError } from '../../../shared/hooks/use-stop-on-first-error'
|
|
|
-import SplitMenu from '../../../shared/components/split-menu'
|
|
|
|
|
-import Icon from '../../../shared/components/icon'
|
|
|
|
|
import * as eventTracking from '../../../infrastructure/event-tracking'
|
|
import * as eventTracking from '../../../infrastructure/event-tracking'
|
|
|
-import BootstrapVersionSwitcher from '@/features/ui/components/bootstrap-5/bootstrap-version-switcher'
|
|
|
|
|
import OLTooltip from '@/features/ui/components/ol/ol-tooltip'
|
|
import OLTooltip from '@/features/ui/components/ol/ol-tooltip'
|
|
|
import {
|
|
import {
|
|
|
DropdownToggleCustom,
|
|
DropdownToggleCustom,
|
|
@@ -19,7 +16,6 @@ import {
|
|
|
} from '@/features/ui/components/bootstrap-5/dropdown-menu'
|
|
} from '@/features/ui/components/bootstrap-5/dropdown-menu'
|
|
|
import OLButton from '@/features/ui/components/ol/ol-button'
|
|
import OLButton from '@/features/ui/components/ol/ol-button'
|
|
|
import OLButtonGroup from '@/features/ui/components/ol/ol-button-group'
|
|
import OLButtonGroup from '@/features/ui/components/ol/ol-button-group'
|
|
|
-import { bsVersion, isBootstrap5 } from '@/features/utils/bootstrap-5'
|
|
|
|
|
import { useLayoutContext } from '@/shared/context/layout-context'
|
|
import { useLayoutContext } from '@/shared/context/layout-context'
|
|
|
|
|
|
|
|
const modifierKey = /Mac/i.test(navigator.platform) ? 'Cmd' : 'Ctrl'
|
|
const modifierKey = /Mac/i.test(navigator.platform) ? 'Cmd' : 'Ctrl'
|
|
@@ -43,7 +39,6 @@ function PdfCompileButton() {
|
|
|
compiling,
|
|
compiling,
|
|
|
draft,
|
|
draft,
|
|
|
hasChanges,
|
|
hasChanges,
|
|
|
- setAnimateCompileDropdownArrow,
|
|
|
|
|
setAutoCompile,
|
|
setAutoCompile,
|
|
|
setDraft,
|
|
setDraft,
|
|
|
setStopOnValidationError,
|
|
setStopOnValidationError,
|
|
@@ -67,7 +62,6 @@ function PdfCompileButton() {
|
|
|
recompileFromScratch()
|
|
recompileFromScratch()
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
- const compileButtonLabel = compiling ? `${t('compiling')}…` : t('recompile')
|
|
|
|
|
const tooltipElement = (
|
|
const tooltipElement = (
|
|
|
<>
|
|
<>
|
|
|
{t('recompile_pdf')}{' '}
|
|
{t('recompile_pdf')}{' '}
|
|
@@ -81,288 +75,160 @@ function PdfCompileButton() {
|
|
|
'btn-striped-animated': hasChanges,
|
|
'btn-striped-animated': hasChanges,
|
|
|
},
|
|
},
|
|
|
'no-left-border',
|
|
'no-left-border',
|
|
|
- bsVersion({ bs5: 'dropdown-button-toggle' })
|
|
|
|
|
|
|
+ 'dropdown-button-toggle'
|
|
|
)
|
|
)
|
|
|
|
|
|
|
|
const buttonClassName = classNames(
|
|
const buttonClassName = classNames(
|
|
|
|
|
+ 'align-items-center py-0 no-left-radius px-3',
|
|
|
{
|
|
{
|
|
|
'btn-striped-animated': hasChanges,
|
|
'btn-striped-animated': hasChanges,
|
|
|
- 'align-items-center py-0': isBootstrap5(),
|
|
|
|
|
- },
|
|
|
|
|
- 'no-left-radius px-3'
|
|
|
|
|
|
|
+ }
|
|
|
)
|
|
)
|
|
|
|
|
|
|
|
return (
|
|
return (
|
|
|
- <BootstrapVersionSwitcher
|
|
|
|
|
- bs3={
|
|
|
|
|
- <SplitMenu
|
|
|
|
|
- bsStyle="primary"
|
|
|
|
|
- bsSize="xs"
|
|
|
|
|
|
|
+ <Dropdown as={OLButtonGroup} className="compile-button-group">
|
|
|
|
|
+ <OLTooltip
|
|
|
|
|
+ description={tooltipElement}
|
|
|
|
|
+ id="compile"
|
|
|
|
|
+ tooltipProps={{ className: 'keyboard-tooltip' }}
|
|
|
|
|
+ overlayProps={{
|
|
|
|
|
+ delay: { show: 500, hide: 0 },
|
|
|
|
|
+ placement: detachRole === 'detached' ? 'bottom' : undefined,
|
|
|
|
|
+ }}
|
|
|
|
|
+ >
|
|
|
|
|
+ <OLButton
|
|
|
|
|
+ variant="primary"
|
|
|
disabled={compiling}
|
|
disabled={compiling}
|
|
|
- button={{
|
|
|
|
|
- tooltip: {
|
|
|
|
|
- description: tooltipElement,
|
|
|
|
|
- id: 'compile',
|
|
|
|
|
- tooltipProps: { className: 'keyboard-tooltip' },
|
|
|
|
|
- overlayProps: {
|
|
|
|
|
- delayShow: 500,
|
|
|
|
|
- placement: detachRole === 'detached' ? 'bottom' : undefined,
|
|
|
|
|
- },
|
|
|
|
|
- },
|
|
|
|
|
- icon: { type: 'refresh', spin: compiling },
|
|
|
|
|
- onClick: () => startCompile(),
|
|
|
|
|
- text: compileButtonLabel,
|
|
|
|
|
- className: buttonClassName,
|
|
|
|
|
- }}
|
|
|
|
|
- dropdownToggle={{
|
|
|
|
|
- 'aria-label': t('toggle_compile_options_menu'),
|
|
|
|
|
- handleAnimationEnd: () => setAnimateCompileDropdownArrow(false),
|
|
|
|
|
- className: dropdownToggleClassName,
|
|
|
|
|
- }}
|
|
|
|
|
- dropdown={{
|
|
|
|
|
- id: 'pdf-recompile-dropdown',
|
|
|
|
|
- }}
|
|
|
|
|
|
|
+ isLoading={compiling}
|
|
|
|
|
+ onClick={() => startCompile()}
|
|
|
|
|
+ className={buttonClassName}
|
|
|
|
|
+ loadingLabel={`${t('compiling')}…`}
|
|
|
>
|
|
>
|
|
|
- <SplitMenu.Item header>{t('auto_compile')}</SplitMenu.Item>
|
|
|
|
|
-
|
|
|
|
|
- <SplitMenu.Item
|
|
|
|
|
- onSelect={() =>
|
|
|
|
|
|
|
+ {t('recompile')}
|
|
|
|
|
+ </OLButton>
|
|
|
|
|
+ </OLTooltip>
|
|
|
|
|
+
|
|
|
|
|
+ <DropdownToggle
|
|
|
|
|
+ as={DropdownToggleCustom}
|
|
|
|
|
+ split
|
|
|
|
|
+ variant="primary"
|
|
|
|
|
+ id="pdf-recompile-dropdown"
|
|
|
|
|
+ size="sm"
|
|
|
|
|
+ aria-label={t('toggle_compile_options_menu')}
|
|
|
|
|
+ className={dropdownToggleClassName}
|
|
|
|
|
+ />
|
|
|
|
|
+
|
|
|
|
|
+ <DropdownMenu>
|
|
|
|
|
+ <DropdownHeader>{t('auto_compile')}</DropdownHeader>
|
|
|
|
|
+ <li role="none">
|
|
|
|
|
+ <DropdownItem
|
|
|
|
|
+ as="button"
|
|
|
|
|
+ onClick={() =>
|
|
|
sendEventAndSet(true, setAutoCompile, 'auto-compile')
|
|
sendEventAndSet(true, setAutoCompile, 'auto-compile')
|
|
|
}
|
|
}
|
|
|
|
|
+ trailingIcon={autoCompile ? 'check' : null}
|
|
|
>
|
|
>
|
|
|
- <Icon type={autoCompile ? 'check' : ''} fw />
|
|
|
|
|
{t('on')}
|
|
{t('on')}
|
|
|
- </SplitMenu.Item>
|
|
|
|
|
-
|
|
|
|
|
- <SplitMenu.Item
|
|
|
|
|
- onSelect={() =>
|
|
|
|
|
|
|
+ </DropdownItem>
|
|
|
|
|
+ </li>
|
|
|
|
|
+ <li role="none">
|
|
|
|
|
+ <DropdownItem
|
|
|
|
|
+ as="button"
|
|
|
|
|
+ onClick={() =>
|
|
|
sendEventAndSet(false, setAutoCompile, 'auto-compile')
|
|
sendEventAndSet(false, setAutoCompile, 'auto-compile')
|
|
|
}
|
|
}
|
|
|
|
|
+ trailingIcon={!autoCompile ? 'check' : null}
|
|
|
>
|
|
>
|
|
|
- <Icon type={!autoCompile ? 'check' : ''} fw />
|
|
|
|
|
{t('off')}
|
|
{t('off')}
|
|
|
- </SplitMenu.Item>
|
|
|
|
|
-
|
|
|
|
|
- <SplitMenu.Item header>{t('compile_mode')}</SplitMenu.Item>
|
|
|
|
|
-
|
|
|
|
|
- <SplitMenu.Item
|
|
|
|
|
- onSelect={() => sendEventAndSet(false, setDraft, 'compile-mode')}
|
|
|
|
|
|
|
+ </DropdownItem>
|
|
|
|
|
+ </li>
|
|
|
|
|
+ <DropdownDivider />
|
|
|
|
|
+ <DropdownHeader>{t('compile_mode')}</DropdownHeader>
|
|
|
|
|
+ <li role="none">
|
|
|
|
|
+ <DropdownItem
|
|
|
|
|
+ as="button"
|
|
|
|
|
+ onClick={() => sendEventAndSet(false, setDraft, 'compile-mode')}
|
|
|
|
|
+ trailingIcon={!draft ? 'check' : null}
|
|
|
>
|
|
>
|
|
|
- <Icon type={!draft ? 'check' : ''} fw />
|
|
|
|
|
{t('normal')}
|
|
{t('normal')}
|
|
|
- </SplitMenu.Item>
|
|
|
|
|
-
|
|
|
|
|
- <SplitMenu.Item
|
|
|
|
|
- onSelect={() => sendEventAndSet(true, setDraft, 'compile-mode')}
|
|
|
|
|
|
|
+ </DropdownItem>
|
|
|
|
|
+ </li>
|
|
|
|
|
+ <li role="none">
|
|
|
|
|
+ <DropdownItem
|
|
|
|
|
+ as="button"
|
|
|
|
|
+ onClick={() => sendEventAndSet(true, setDraft, 'compile-mode')}
|
|
|
|
|
+ trailingIcon={draft ? 'check' : null}
|
|
|
>
|
|
>
|
|
|
- <Icon type={draft ? 'check' : ''} fw />
|
|
|
|
|
- {t('fast')} <span className="subdued">[draft]</span>
|
|
|
|
|
- </SplitMenu.Item>
|
|
|
|
|
-
|
|
|
|
|
- <SplitMenu.Item header>Syntax Checks</SplitMenu.Item>
|
|
|
|
|
-
|
|
|
|
|
- <SplitMenu.Item
|
|
|
|
|
- onSelect={() =>
|
|
|
|
|
|
|
+ {t('fast')} <span className="subdued">[draft]</span>
|
|
|
|
|
+ </DropdownItem>
|
|
|
|
|
+ </li>
|
|
|
|
|
+ <DropdownDivider />
|
|
|
|
|
+ <DropdownHeader>Syntax Checks</DropdownHeader>
|
|
|
|
|
+ <li role="none">
|
|
|
|
|
+ <DropdownItem
|
|
|
|
|
+ as="button"
|
|
|
|
|
+ onClick={() =>
|
|
|
sendEventAndSet(true, setStopOnValidationError, 'syntax-check')
|
|
sendEventAndSet(true, setStopOnValidationError, 'syntax-check')
|
|
|
}
|
|
}
|
|
|
|
|
+ trailingIcon={stopOnValidationError ? 'check' : null}
|
|
|
>
|
|
>
|
|
|
- <Icon type={stopOnValidationError ? 'check' : ''} fw />
|
|
|
|
|
{t('stop_on_validation_error')}
|
|
{t('stop_on_validation_error')}
|
|
|
- </SplitMenu.Item>
|
|
|
|
|
-
|
|
|
|
|
- <SplitMenu.Item
|
|
|
|
|
- onSelect={() =>
|
|
|
|
|
|
|
+ </DropdownItem>
|
|
|
|
|
+ </li>
|
|
|
|
|
+ <li role="none">
|
|
|
|
|
+ <DropdownItem
|
|
|
|
|
+ as="button"
|
|
|
|
|
+ onClick={() =>
|
|
|
sendEventAndSet(false, setStopOnValidationError, 'syntax-check')
|
|
sendEventAndSet(false, setStopOnValidationError, 'syntax-check')
|
|
|
}
|
|
}
|
|
|
|
|
+ trailingIcon={!stopOnValidationError ? 'check' : null}
|
|
|
>
|
|
>
|
|
|
- <Icon type={!stopOnValidationError ? 'check' : ''} fw />
|
|
|
|
|
{t('ignore_validation_errors')}
|
|
{t('ignore_validation_errors')}
|
|
|
- </SplitMenu.Item>
|
|
|
|
|
-
|
|
|
|
|
- <SplitMenu.Item header>{t('compile_error_handling')}</SplitMenu.Item>
|
|
|
|
|
-
|
|
|
|
|
- <SplitMenu.Item onSelect={enableStopOnFirstError}>
|
|
|
|
|
- <Icon type={stopOnFirstError ? 'check' : ''} fw />
|
|
|
|
|
|
|
+ </DropdownItem>
|
|
|
|
|
+ </li>
|
|
|
|
|
+ <DropdownDivider />
|
|
|
|
|
+ <DropdownHeader>{t('compile_error_handling')}</DropdownHeader>
|
|
|
|
|
+ <li role="none">
|
|
|
|
|
+ <DropdownItem
|
|
|
|
|
+ as="button"
|
|
|
|
|
+ onClick={enableStopOnFirstError}
|
|
|
|
|
+ trailingIcon={stopOnFirstError ? 'check' : null}
|
|
|
|
|
+ >
|
|
|
{t('stop_on_first_error')}
|
|
{t('stop_on_first_error')}
|
|
|
- </SplitMenu.Item>
|
|
|
|
|
-
|
|
|
|
|
- <SplitMenu.Item onSelect={disableStopOnFirstError}>
|
|
|
|
|
- <Icon type={!stopOnFirstError ? 'check' : ''} fw />
|
|
|
|
|
|
|
+ </DropdownItem>
|
|
|
|
|
+ </li>
|
|
|
|
|
+ <li role="none">
|
|
|
|
|
+ <DropdownItem
|
|
|
|
|
+ as="button"
|
|
|
|
|
+ onClick={disableStopOnFirstError}
|
|
|
|
|
+ trailingIcon={!stopOnFirstError ? 'check' : null}
|
|
|
|
|
+ >
|
|
|
{t('try_to_compile_despite_errors')}
|
|
{t('try_to_compile_despite_errors')}
|
|
|
- </SplitMenu.Item>
|
|
|
|
|
-
|
|
|
|
|
- <SplitMenu.Item divider />
|
|
|
|
|
-
|
|
|
|
|
- <SplitMenu.Item
|
|
|
|
|
- onSelect={() => stopCompile()}
|
|
|
|
|
|
|
+ </DropdownItem>
|
|
|
|
|
+ </li>
|
|
|
|
|
+ <DropdownDivider />
|
|
|
|
|
+ <li role="none">
|
|
|
|
|
+ <DropdownItem
|
|
|
|
|
+ as="button"
|
|
|
|
|
+ onClick={() => stopCompile()}
|
|
|
disabled={!compiling}
|
|
disabled={!compiling}
|
|
|
aria-disabled={!compiling}
|
|
aria-disabled={!compiling}
|
|
|
>
|
|
>
|
|
|
{t('stop_compile')}
|
|
{t('stop_compile')}
|
|
|
- </SplitMenu.Item>
|
|
|
|
|
-
|
|
|
|
|
- <SplitMenu.Item
|
|
|
|
|
- onSelect={fromScratchWithEvent}
|
|
|
|
|
|
|
+ </DropdownItem>
|
|
|
|
|
+ </li>
|
|
|
|
|
+ <li role="none">
|
|
|
|
|
+ <DropdownItem
|
|
|
|
|
+ as="button"
|
|
|
|
|
+ onClick={fromScratchWithEvent}
|
|
|
disabled={compiling}
|
|
disabled={compiling}
|
|
|
aria-disabled={compiling}
|
|
aria-disabled={compiling}
|
|
|
>
|
|
>
|
|
|
{t('recompile_from_scratch')}
|
|
{t('recompile_from_scratch')}
|
|
|
- </SplitMenu.Item>
|
|
|
|
|
- </SplitMenu>
|
|
|
|
|
- }
|
|
|
|
|
- bs5={
|
|
|
|
|
- <Dropdown as={OLButtonGroup} className="compile-button-group">
|
|
|
|
|
- <OLTooltip
|
|
|
|
|
- description={tooltipElement}
|
|
|
|
|
- id="compile"
|
|
|
|
|
- tooltipProps={{ className: 'keyboard-tooltip' }}
|
|
|
|
|
- overlayProps={{
|
|
|
|
|
- delay: { show: 500, hide: 0 },
|
|
|
|
|
- placement: detachRole === 'detached' ? 'bottom' : undefined,
|
|
|
|
|
- }}
|
|
|
|
|
- >
|
|
|
|
|
- <OLButton
|
|
|
|
|
- variant="primary"
|
|
|
|
|
- disabled={compiling}
|
|
|
|
|
- isLoading={compiling}
|
|
|
|
|
- onClick={() => startCompile()}
|
|
|
|
|
- className={buttonClassName}
|
|
|
|
|
- >
|
|
|
|
|
- {t('recompile')}
|
|
|
|
|
- </OLButton>
|
|
|
|
|
- </OLTooltip>
|
|
|
|
|
-
|
|
|
|
|
- <DropdownToggle
|
|
|
|
|
- as={DropdownToggleCustom}
|
|
|
|
|
- split
|
|
|
|
|
- variant="primary"
|
|
|
|
|
- id="pdf-recompile-dropdown"
|
|
|
|
|
- size="sm"
|
|
|
|
|
- aria-label={t('toggle_compile_options_menu')}
|
|
|
|
|
- className={dropdownToggleClassName}
|
|
|
|
|
- />
|
|
|
|
|
-
|
|
|
|
|
- <DropdownMenu>
|
|
|
|
|
- <DropdownHeader>{t('auto_compile')}</DropdownHeader>
|
|
|
|
|
- <li role="none">
|
|
|
|
|
- <DropdownItem
|
|
|
|
|
- as="button"
|
|
|
|
|
- onClick={() =>
|
|
|
|
|
- sendEventAndSet(true, setAutoCompile, 'auto-compile')
|
|
|
|
|
- }
|
|
|
|
|
- trailingIcon={autoCompile ? 'check' : null}
|
|
|
|
|
- >
|
|
|
|
|
- {t('on')}
|
|
|
|
|
- </DropdownItem>
|
|
|
|
|
- </li>
|
|
|
|
|
- <li role="none">
|
|
|
|
|
- <DropdownItem
|
|
|
|
|
- as="button"
|
|
|
|
|
- onClick={() =>
|
|
|
|
|
- sendEventAndSet(false, setAutoCompile, 'auto-compile')
|
|
|
|
|
- }
|
|
|
|
|
- trailingIcon={!autoCompile ? 'check' : null}
|
|
|
|
|
- >
|
|
|
|
|
- {t('off')}
|
|
|
|
|
- </DropdownItem>
|
|
|
|
|
- </li>
|
|
|
|
|
- <DropdownDivider />
|
|
|
|
|
- <DropdownHeader>{t('compile_mode')}</DropdownHeader>
|
|
|
|
|
- <li role="none">
|
|
|
|
|
- <DropdownItem
|
|
|
|
|
- as="button"
|
|
|
|
|
- onClick={() => sendEventAndSet(false, setDraft, 'compile-mode')}
|
|
|
|
|
- trailingIcon={!draft ? 'check' : null}
|
|
|
|
|
- >
|
|
|
|
|
- {t('normal')}
|
|
|
|
|
- </DropdownItem>
|
|
|
|
|
- </li>
|
|
|
|
|
- <li role="none">
|
|
|
|
|
- <DropdownItem
|
|
|
|
|
- as="button"
|
|
|
|
|
- onClick={() => sendEventAndSet(true, setDraft, 'compile-mode')}
|
|
|
|
|
- trailingIcon={draft ? 'check' : null}
|
|
|
|
|
- >
|
|
|
|
|
- {t('fast')} <span className="subdued">[draft]</span>
|
|
|
|
|
- </DropdownItem>
|
|
|
|
|
- </li>
|
|
|
|
|
- <DropdownDivider />
|
|
|
|
|
- <DropdownHeader>Syntax Checks</DropdownHeader>
|
|
|
|
|
- <li role="none">
|
|
|
|
|
- <DropdownItem
|
|
|
|
|
- as="button"
|
|
|
|
|
- onClick={() =>
|
|
|
|
|
- sendEventAndSet(
|
|
|
|
|
- true,
|
|
|
|
|
- setStopOnValidationError,
|
|
|
|
|
- 'syntax-check'
|
|
|
|
|
- )
|
|
|
|
|
- }
|
|
|
|
|
- trailingIcon={stopOnValidationError ? 'check' : null}
|
|
|
|
|
- >
|
|
|
|
|
- {t('stop_on_validation_error')}
|
|
|
|
|
- </DropdownItem>
|
|
|
|
|
- </li>
|
|
|
|
|
- <li role="none">
|
|
|
|
|
- <DropdownItem
|
|
|
|
|
- as="button"
|
|
|
|
|
- onClick={() =>
|
|
|
|
|
- sendEventAndSet(
|
|
|
|
|
- false,
|
|
|
|
|
- setStopOnValidationError,
|
|
|
|
|
- 'syntax-check'
|
|
|
|
|
- )
|
|
|
|
|
- }
|
|
|
|
|
- trailingIcon={!stopOnValidationError ? 'check' : null}
|
|
|
|
|
- >
|
|
|
|
|
- {t('ignore_validation_errors')}
|
|
|
|
|
- </DropdownItem>
|
|
|
|
|
- </li>
|
|
|
|
|
- <DropdownDivider />
|
|
|
|
|
- <DropdownHeader>{t('compile_error_handling')}</DropdownHeader>
|
|
|
|
|
- <li role="none">
|
|
|
|
|
- <DropdownItem
|
|
|
|
|
- as="button"
|
|
|
|
|
- onClick={enableStopOnFirstError}
|
|
|
|
|
- trailingIcon={stopOnFirstError ? 'check' : null}
|
|
|
|
|
- >
|
|
|
|
|
- {t('stop_on_first_error')}
|
|
|
|
|
- </DropdownItem>
|
|
|
|
|
- </li>
|
|
|
|
|
- <li role="none">
|
|
|
|
|
- <DropdownItem
|
|
|
|
|
- as="button"
|
|
|
|
|
- onClick={disableStopOnFirstError}
|
|
|
|
|
- trailingIcon={!stopOnFirstError ? 'check' : null}
|
|
|
|
|
- >
|
|
|
|
|
- {t('try_to_compile_despite_errors')}
|
|
|
|
|
- </DropdownItem>
|
|
|
|
|
- </li>
|
|
|
|
|
- <DropdownDivider />
|
|
|
|
|
- <li role="none">
|
|
|
|
|
- <DropdownItem
|
|
|
|
|
- as="button"
|
|
|
|
|
- onClick={() => stopCompile()}
|
|
|
|
|
- disabled={!compiling}
|
|
|
|
|
- aria-disabled={!compiling}
|
|
|
|
|
- >
|
|
|
|
|
- {t('stop_compile')}
|
|
|
|
|
- </DropdownItem>
|
|
|
|
|
- </li>
|
|
|
|
|
- <li role="none">
|
|
|
|
|
- <DropdownItem
|
|
|
|
|
- as="button"
|
|
|
|
|
- onClick={fromScratchWithEvent}
|
|
|
|
|
- disabled={compiling}
|
|
|
|
|
- aria-disabled={compiling}
|
|
|
|
|
- >
|
|
|
|
|
- {t('recompile_from_scratch')}
|
|
|
|
|
- </DropdownItem>
|
|
|
|
|
- </li>
|
|
|
|
|
- </DropdownMenu>
|
|
|
|
|
- </Dropdown>
|
|
|
|
|
- }
|
|
|
|
|
- />
|
|
|
|
|
|
|
+ </DropdownItem>
|
|
|
|
|
+ </li>
|
|
|
|
|
+ </DropdownMenu>
|
|
|
|
|
+ </Dropdown>
|
|
|
)
|
|
)
|
|
|
}
|
|
}
|
|
|
|
|
|