mirror of
https://github.com/ansible/awx.git
synced 2026-01-11 10:00:01 -03:30
Fix relative imports
python tools/fixrelative.py awx/ui_next/src npm --prefix=awx/ui_next run lint -- --fix npm --prefix=awx/ui_next run prettier
This commit is contained in:
parent
0ee7d22e9d
commit
595cf192b7
@ -16,21 +16,21 @@ import {
|
||||
ConfigProvider,
|
||||
useAuthorizedPath,
|
||||
useUserProfile,
|
||||
} from './contexts/Config';
|
||||
import { SessionProvider, useSession } from './contexts/Session';
|
||||
import AppContainer from './components/AppContainer';
|
||||
import Background from './components/Background';
|
||||
import ContentError from './components/ContentError';
|
||||
import NotFound from './screens/NotFound';
|
||||
import Login from './screens/Login';
|
||||
import { isAuthenticated } from './util/auth';
|
||||
import { getLanguageWithoutRegionCode } from './util/language';
|
||||
} from 'contexts/Config';
|
||||
import { SessionProvider, useSession } from 'contexts/Session';
|
||||
import AppContainer from 'components/AppContainer';
|
||||
import Background from 'components/Background';
|
||||
import ContentError from 'components/ContentError';
|
||||
import NotFound from 'screens/NotFound';
|
||||
import Login from 'screens/Login';
|
||||
import { isAuthenticated } from 'util/auth';
|
||||
import { getLanguageWithoutRegionCode } from 'util/language';
|
||||
import Metrics from 'screens/Metrics';
|
||||
import SubscriptionEdit from 'screens/Setting/Subscription/SubscriptionEdit';
|
||||
import { RootAPI } from 'api';
|
||||
import { dynamicActivate, locales } from './i18nLoader';
|
||||
import Metrics from './screens/Metrics';
|
||||
import getRouteConfig from './routeConfig';
|
||||
import SubscriptionEdit from './screens/Setting/Subscription/SubscriptionEdit';
|
||||
import { SESSION_REDIRECT_URL } from './constants';
|
||||
import { RootAPI } from './api';
|
||||
|
||||
function ErrorFallback({ error }) {
|
||||
return (
|
||||
|
||||
@ -1,8 +1,8 @@
|
||||
import React from 'react';
|
||||
import { act } from 'react-dom/test-utils';
|
||||
import { RootAPI } from 'api';
|
||||
import * as SessionContext from 'contexts/Session';
|
||||
import { mountWithContexts } from '../testUtils/enzymeHelpers';
|
||||
import { RootAPI } from './api';
|
||||
import * as SessionContext from './contexts/Session';
|
||||
import App from './App';
|
||||
|
||||
jest.mock('./api');
|
||||
|
||||
@ -1,7 +1,7 @@
|
||||
import axios from 'axios';
|
||||
import { encodeQueryString } from 'util/qs';
|
||||
import debounce from 'util/debounce';
|
||||
import { SESSION_TIMEOUT_KEY } from '../constants';
|
||||
import { encodeQueryString } from '../util/qs';
|
||||
import debounce from '../util/debounce';
|
||||
|
||||
const updateStorage = debounce((key, val) => {
|
||||
window.localStorage.setItem(key, val);
|
||||
|
||||
@ -2,7 +2,7 @@ import React from 'react';
|
||||
import PropTypes from 'prop-types';
|
||||
import { t } from '@lingui/macro';
|
||||
import { AboutModal } from '@patternfly/react-core';
|
||||
import useBrandName from '../../util/useBrandName';
|
||||
import useBrandName from 'util/useBrandName';
|
||||
|
||||
function About({ version, isOpen, onClose }) {
|
||||
const brandName = useBrandName();
|
||||
|
||||
@ -5,13 +5,13 @@ import { t } from '@lingui/macro';
|
||||
import PropTypes from 'prop-types';
|
||||
import { Button, DropdownItem } from '@patternfly/react-core';
|
||||
|
||||
import useRequest, { useDismissableError } from '../../util/useRequest';
|
||||
import { InventoriesAPI, CredentialTypesAPI } from '../../api';
|
||||
import useRequest, { useDismissableError } from 'util/useRequest';
|
||||
import { InventoriesAPI, CredentialTypesAPI } from 'api';
|
||||
|
||||
import { KebabifiedContext } from 'contexts/Kebabified';
|
||||
import AlertModal from '../AlertModal';
|
||||
import ErrorDetail from '../ErrorDetail';
|
||||
import AdHocCommandsWizard from './AdHocCommandsWizard';
|
||||
import { KebabifiedContext } from '../../contexts/Kebabified';
|
||||
import ContentError from '../ContentError';
|
||||
|
||||
function AdHocCommands({ adHocItems, hasListItems, onLaunchLoading }) {
|
||||
|
||||
@ -1,16 +1,16 @@
|
||||
import React from 'react';
|
||||
import { act } from 'react-dom/test-utils';
|
||||
import {
|
||||
mountWithContexts,
|
||||
waitForElement,
|
||||
} from '../../../testUtils/enzymeHelpers';
|
||||
import {
|
||||
CredentialTypesAPI,
|
||||
InventoriesAPI,
|
||||
CredentialsAPI,
|
||||
ExecutionEnvironmentsAPI,
|
||||
RootAPI,
|
||||
} from '../../api';
|
||||
} from 'api';
|
||||
import {
|
||||
mountWithContexts,
|
||||
waitForElement,
|
||||
} from '../../../testUtils/enzymeHelpers';
|
||||
import AdHocCommands from './AdHocCommands';
|
||||
|
||||
jest.mock('../../api/models/CredentialTypes');
|
||||
|
||||
@ -1,10 +1,10 @@
|
||||
import React from 'react';
|
||||
import { act } from 'react-dom/test-utils';
|
||||
import { CredentialsAPI, ExecutionEnvironmentsAPI, RootAPI } from 'api';
|
||||
import {
|
||||
mountWithContexts,
|
||||
waitForElement,
|
||||
} from '../../../testUtils/enzymeHelpers';
|
||||
import { CredentialsAPI, ExecutionEnvironmentsAPI, RootAPI } from '../../api';
|
||||
import AdHocCommandsWizard from './AdHocCommandsWizard';
|
||||
|
||||
jest.mock('../../api/models/CredentialTypes');
|
||||
|
||||
@ -5,14 +5,14 @@ import { t } from '@lingui/macro';
|
||||
import PropTypes from 'prop-types';
|
||||
import { useField } from 'formik';
|
||||
import { Form, FormGroup } from '@patternfly/react-core';
|
||||
import { CredentialsAPI } from '../../api';
|
||||
import { CredentialsAPI } from 'api';
|
||||
import { getQSConfig, parseQueryString, mergeParams } from 'util/qs';
|
||||
import useRequest from 'util/useRequest';
|
||||
import { required } from 'util/validators';
|
||||
import Popover from '../Popover';
|
||||
|
||||
import { getQSConfig, parseQueryString, mergeParams } from '../../util/qs';
|
||||
import useRequest from '../../util/useRequest';
|
||||
import ContentError from '../ContentError';
|
||||
import ContentLoading from '../ContentLoading';
|
||||
import { required } from '../../util/validators';
|
||||
import OptionsList from '../OptionsList';
|
||||
|
||||
const QS_CONFIG = getQSConfig('credentials', {
|
||||
|
||||
@ -1,11 +1,11 @@
|
||||
import React from 'react';
|
||||
import { act } from 'react-dom/test-utils';
|
||||
import { Formik } from 'formik';
|
||||
import { CredentialsAPI } from 'api';
|
||||
import {
|
||||
mountWithContexts,
|
||||
waitForElement,
|
||||
} from '../../../testUtils/enzymeHelpers';
|
||||
import { CredentialsAPI } from '../../api';
|
||||
import AdHocCredentialStep from './AdHocCredentialStep';
|
||||
|
||||
jest.mock('../../api/models/Credentials');
|
||||
|
||||
@ -6,6 +6,8 @@ import PropTypes from 'prop-types';
|
||||
import { useField } from 'formik';
|
||||
import { Form, FormGroup, Switch, Checkbox } from '@patternfly/react-core';
|
||||
import styled from 'styled-components';
|
||||
import { required } from 'util/validators';
|
||||
import useBrandName from 'util/useBrandName';
|
||||
import AnsibleSelect from '../AnsibleSelect';
|
||||
import FormField from '../FormField';
|
||||
import { VariablesField } from '../CodeEditor';
|
||||
@ -15,8 +17,6 @@ import {
|
||||
FormCheckboxLayout,
|
||||
} from '../FormLayout';
|
||||
import Popover from '../Popover';
|
||||
import { required } from '../../util/validators';
|
||||
import useBrandName from '../../util/useBrandName';
|
||||
|
||||
const TooltipWrapper = styled.div`
|
||||
text-align: left;
|
||||
|
||||
@ -1,8 +1,8 @@
|
||||
import React from 'react';
|
||||
import { act } from 'react-dom/test-utils';
|
||||
import { Formik } from 'formik';
|
||||
import { RootAPI } from 'api';
|
||||
import { mountWithContexts } from '../../../testUtils/enzymeHelpers';
|
||||
import { RootAPI } from '../../api';
|
||||
import DetailsStep from './AdHocDetailsStep';
|
||||
|
||||
jest.mock('../../api/models/Credentials');
|
||||
|
||||
@ -1,11 +1,11 @@
|
||||
import React from 'react';
|
||||
import { act } from 'react-dom/test-utils';
|
||||
import { Formik } from 'formik';
|
||||
import { ExecutionEnvironmentsAPI } from 'api';
|
||||
import {
|
||||
mountWithContexts,
|
||||
waitForElement,
|
||||
} from '../../../testUtils/enzymeHelpers';
|
||||
import { ExecutionEnvironmentsAPI } from '../../api';
|
||||
import AdHocExecutionEnvironmentStep from './AdHocExecutionEnvironmentStep';
|
||||
|
||||
jest.mock('../../api/models/ExecutionEnvironments');
|
||||
|
||||
@ -3,11 +3,11 @@ import { useHistory } from 'react-router-dom';
|
||||
import { t } from '@lingui/macro';
|
||||
import { useField } from 'formik';
|
||||
import { Form, FormGroup } from '@patternfly/react-core';
|
||||
import { ExecutionEnvironmentsAPI } from '../../api';
|
||||
import Popover from '../Popover';
|
||||
import { ExecutionEnvironmentsAPI } from 'api';
|
||||
|
||||
import { parseQueryString, getQSConfig, mergeParams } from '../../util/qs';
|
||||
import useRequest from '../../util/useRequest';
|
||||
import { parseQueryString, getQSConfig, mergeParams } from 'util/qs';
|
||||
import useRequest from 'util/useRequest';
|
||||
import Popover from '../Popover';
|
||||
import ContentError from '../ContentError';
|
||||
import ContentLoading from '../ContentLoading';
|
||||
import OptionsList from '../OptionsList';
|
||||
|
||||
@ -2,8 +2,8 @@ import React, { useState, useRef, useEffect, Fragment } from 'react';
|
||||
import { t } from '@lingui/macro';
|
||||
import PropTypes from 'prop-types';
|
||||
import { Dropdown, DropdownPosition } from '@patternfly/react-core';
|
||||
import { useKebabifiedMenu } from 'contexts/Kebabified';
|
||||
import { ToolbarAddButton } from '../PaginatedTable';
|
||||
import { useKebabifiedMenu } from '../../contexts/Kebabified';
|
||||
|
||||
function AddDropDownButton({ dropdownItems, ouiaId }) {
|
||||
const { isKebabified } = useKebabifiedMenu();
|
||||
|
||||
@ -2,11 +2,11 @@ import React, { Fragment, useState, useEffect } from 'react';
|
||||
import PropTypes from 'prop-types';
|
||||
import { useHistory } from 'react-router-dom';
|
||||
import { t } from '@lingui/macro';
|
||||
import { TeamsAPI, UsersAPI } from 'api';
|
||||
import SelectableCard from '../SelectableCard';
|
||||
import Wizard from '../Wizard';
|
||||
import SelectResourceStep from './SelectResourceStep';
|
||||
import SelectRoleStep from './SelectRoleStep';
|
||||
import { TeamsAPI, UsersAPI } from '../../api';
|
||||
|
||||
const readUsers = async queryParams =>
|
||||
UsersAPI.read(Object.assign(queryParams, { is_superuser: false }));
|
||||
|
||||
@ -4,12 +4,12 @@ import { shallow } from 'enzyme';
|
||||
import { createMemoryHistory } from 'history';
|
||||
import { act } from 'react-dom/test-utils';
|
||||
|
||||
import { TeamsAPI, UsersAPI } from 'api';
|
||||
import {
|
||||
mountWithContexts,
|
||||
waitForElement,
|
||||
} from '../../../testUtils/enzymeHelpers';
|
||||
import AddResourceRole, { _AddResourceRole } from './AddResourceRole';
|
||||
import { TeamsAPI, UsersAPI } from '../../api';
|
||||
|
||||
jest.mock('../../api/models/Teams');
|
||||
jest.mock('../../api/models/Users');
|
||||
|
||||
@ -2,12 +2,12 @@ import React, { Fragment, useCallback, useEffect } from 'react';
|
||||
import PropTypes from 'prop-types';
|
||||
import { withRouter, useLocation } from 'react-router-dom';
|
||||
import { t } from '@lingui/macro';
|
||||
import useRequest from '../../util/useRequest';
|
||||
import { SearchColumns, SortColumns } from '../../types';
|
||||
import useRequest from 'util/useRequest';
|
||||
import { SearchColumns, SortColumns } from 'types';
|
||||
import { getQSConfig, parseQueryString } from 'util/qs';
|
||||
import DataListToolbar from '../DataListToolbar';
|
||||
import CheckboxListItem from '../CheckboxListItem';
|
||||
import { SelectedList } from '../SelectedList';
|
||||
import { getQSConfig, parseQueryString } from '../../util/qs';
|
||||
import PaginatedTable, { HeaderCell, HeaderRow } from '../PaginatedTable';
|
||||
|
||||
const QS_Config = sortColumns => {
|
||||
|
||||
@ -15,9 +15,9 @@ import { t, Plural } from '@lingui/macro';
|
||||
|
||||
import styled from 'styled-components';
|
||||
|
||||
import { useConfig, useAuthorizedPath } from '../../contexts/Config';
|
||||
import { useSession } from '../../contexts/Session';
|
||||
import issuePendoIdentity from '../../util/issuePendoIdentity';
|
||||
import { useConfig, useAuthorizedPath } from 'contexts/Config';
|
||||
import { useSession } from 'contexts/Session';
|
||||
import issuePendoIdentity from 'util/issuePendoIdentity';
|
||||
import About from '../About';
|
||||
import BrandLogo from './BrandLogo';
|
||||
import NavExpandableGroup from './NavExpandableGroup';
|
||||
|
||||
@ -1,11 +1,11 @@
|
||||
import React from 'react';
|
||||
import { act } from 'react-dom/test-utils';
|
||||
import { MeAPI, RootAPI } from 'api';
|
||||
import { useAuthorizedPath } from 'contexts/Config';
|
||||
import {
|
||||
mountWithContexts,
|
||||
waitForElement,
|
||||
} from '../../../testUtils/enzymeHelpers';
|
||||
import { MeAPI, RootAPI } from '../../api';
|
||||
import { useAuthorizedPath } from '../../contexts/Config';
|
||||
import AppContainer from './AppContainer';
|
||||
|
||||
jest.mock('../../api');
|
||||
|
||||
@ -20,10 +20,10 @@ import {
|
||||
QuestionCircleIcon,
|
||||
UserIcon,
|
||||
} from '@patternfly/react-icons';
|
||||
import { WorkflowApprovalsAPI } from '../../api';
|
||||
import useRequest from '../../util/useRequest';
|
||||
import getDocsBaseUrl from '../../util/getDocsBaseUrl';
|
||||
import { useConfig } from '../../contexts/Config';
|
||||
import { WorkflowApprovalsAPI } from 'api';
|
||||
import useRequest from 'util/useRequest';
|
||||
import getDocsBaseUrl from 'util/getDocsBaseUrl';
|
||||
import { useConfig } from 'contexts/Config';
|
||||
import useWsPendingApprovalCount from './useWsPendingApprovalCount';
|
||||
|
||||
const PendingWorkflowApprovals = styled.div`
|
||||
|
||||
@ -1,8 +1,8 @@
|
||||
import React from 'react';
|
||||
import { act } from 'react-dom/test-utils';
|
||||
import { WorkflowApprovalsAPI } from 'api';
|
||||
import { mountWithContexts } from '../../../testUtils/enzymeHelpers';
|
||||
import PageHeaderToolbar from './PageHeaderToolbar';
|
||||
import { WorkflowApprovalsAPI } from '../../api';
|
||||
|
||||
jest.mock('../../api');
|
||||
|
||||
|
||||
@ -1,6 +1,6 @@
|
||||
import { useState, useEffect } from 'react';
|
||||
import useWebsocket from '../../util/useWebsocket';
|
||||
import useThrottle from '../../util/useThrottle';
|
||||
import useWebsocket from 'util/useWebsocket';
|
||||
import useThrottle from 'util/useThrottle';
|
||||
|
||||
export default function useWsPendingApprovalCount(
|
||||
initialCount,
|
||||
|
||||
@ -3,10 +3,10 @@ import { useHistory } from 'react-router-dom';
|
||||
|
||||
import { t } from '@lingui/macro';
|
||||
import { Button, Modal } from '@patternfly/react-core';
|
||||
import useRequest from 'util/useRequest';
|
||||
import { getQSConfig, parseQueryString } from 'util/qs';
|
||||
import useSelected from 'util/useSelected';
|
||||
import OptionsList from '../OptionsList';
|
||||
import useRequest from '../../util/useRequest';
|
||||
import { getQSConfig, parseQueryString } from '../../util/qs';
|
||||
import useSelected from '../../util/useSelected';
|
||||
|
||||
const QS_CONFIG = (order_by = 'name') => {
|
||||
return getQSConfig('associate', {
|
||||
|
||||
@ -11,7 +11,7 @@ import 'ace-builds/src-noconflict/theme-github';
|
||||
|
||||
import { t } from '@lingui/macro';
|
||||
import styled from 'styled-components';
|
||||
import debounce from '../../util/debounce';
|
||||
import debounce from 'util/debounce';
|
||||
|
||||
config.set('loadWorkerFromBlob', false);
|
||||
|
||||
|
||||
@ -1,7 +1,7 @@
|
||||
import React from 'react';
|
||||
import debounce from 'util/debounce';
|
||||
import { mountWithContexts } from '../../../testUtils/enzymeHelpers';
|
||||
import CodeEditor from './CodeEditor';
|
||||
import debounce from '../../util/debounce';
|
||||
|
||||
jest.mock('../../util/debounce');
|
||||
|
||||
|
||||
@ -11,15 +11,10 @@ import {
|
||||
Modal,
|
||||
} from '@patternfly/react-core';
|
||||
import { ExpandArrowsAltIcon } from '@patternfly/react-icons';
|
||||
import { yamlToJson, jsonToYaml, isJsonObject, isJsonString } from 'util/yaml';
|
||||
import { DetailName, DetailValue } from '../DetailList';
|
||||
import MultiButtonToggle from '../MultiButtonToggle';
|
||||
import Popover from '../Popover';
|
||||
import {
|
||||
yamlToJson,
|
||||
jsonToYaml,
|
||||
isJsonObject,
|
||||
isJsonString,
|
||||
} from '../../util/yaml';
|
||||
import CodeEditor from './CodeEditor';
|
||||
import { JSON_MODE, YAML_MODE } from './constants';
|
||||
|
||||
|
||||
@ -6,9 +6,9 @@ import { useField } from 'formik';
|
||||
import styled from 'styled-components';
|
||||
import { Split, SplitItem, Button, Modal } from '@patternfly/react-core';
|
||||
import { ExpandArrowsAltIcon } from '@patternfly/react-icons';
|
||||
import { yamlToJson, jsonToYaml, isJsonString } from 'util/yaml';
|
||||
import { CheckboxField } from '../FormField';
|
||||
import MultiButtonToggle from '../MultiButtonToggle';
|
||||
import { yamlToJson, jsonToYaml, isJsonString } from '../../util/yaml';
|
||||
import CodeEditor from './CodeEditor';
|
||||
import Popover from '../Popover';
|
||||
import { JSON_MODE, YAML_MODE } from './constants';
|
||||
|
||||
@ -2,7 +2,7 @@ import React, { useState } from 'react';
|
||||
import { string, func, bool, number } from 'prop-types';
|
||||
import { Split, SplitItem } from '@patternfly/react-core';
|
||||
import styled from 'styled-components';
|
||||
import { yamlToJson, jsonToYaml, isJsonString } from '../../util/yaml';
|
||||
import { yamlToJson, jsonToYaml, isJsonString } from 'util/yaml';
|
||||
import MultiButtonToggle from '../MultiButtonToggle';
|
||||
import CodeEditor from './CodeEditor';
|
||||
import { JSON_MODE, YAML_MODE } from './constants';
|
||||
|
||||
@ -10,7 +10,7 @@ import {
|
||||
EmptyStateBody,
|
||||
} from '@patternfly/react-core';
|
||||
import { ExclamationTriangleIcon } from '@patternfly/react-icons';
|
||||
import { useSession } from '../../contexts/Session';
|
||||
import { useSession } from 'contexts/Session';
|
||||
import ErrorDetail from '../ErrorDetail';
|
||||
|
||||
function ContentError({ error, children, isNotFound }) {
|
||||
|
||||
@ -3,7 +3,7 @@ import { t } from '@lingui/macro';
|
||||
import PropTypes from 'prop-types';
|
||||
import { Button } from '@patternfly/react-core';
|
||||
import { CopyIcon } from '@patternfly/react-icons';
|
||||
import useRequest, { useDismissableError } from '../../util/useRequest';
|
||||
import useRequest, { useDismissableError } from 'util/useRequest';
|
||||
import AlertModal from '../AlertModal';
|
||||
import ErrorDetail from '../ErrorDetail';
|
||||
|
||||
|
||||
@ -2,8 +2,8 @@ import React from 'react';
|
||||
|
||||
import { t } from '@lingui/macro';
|
||||
import { Chip } from '@patternfly/react-core';
|
||||
import { Credential } from '../../types';
|
||||
import { toTitleCase } from '../../util/strings';
|
||||
import { Credential } from 'types';
|
||||
import { toTitleCase } from 'util/strings';
|
||||
|
||||
function CredentialChip({ credential, ...props }) {
|
||||
let type;
|
||||
|
||||
@ -20,11 +20,11 @@ import {
|
||||
AngleRightIcon,
|
||||
SearchIcon,
|
||||
} from '@patternfly/react-icons';
|
||||
import { SearchColumns, SortColumns, QSConfig } from 'types';
|
||||
import { KebabifiedProvider } from 'contexts/Kebabified';
|
||||
import ExpandCollapse from '../ExpandCollapse';
|
||||
import Search from '../Search';
|
||||
import Sort from '../Sort';
|
||||
import { SearchColumns, SortColumns, QSConfig } from '../../types';
|
||||
import { KebabifiedProvider } from '../../contexts/Kebabified';
|
||||
|
||||
const ToolbarContent = styled(PFToolbarContent)`
|
||||
& > .pf-c-toolbar__content-section {
|
||||
|
||||
@ -4,8 +4,8 @@ import PropTypes from 'prop-types';
|
||||
import { t } from '@lingui/macro';
|
||||
import styled from 'styled-components';
|
||||
import { Button, Badge, Alert, Tooltip } from '@patternfly/react-core';
|
||||
import { getRelatedResourceDeleteCounts } from 'util/getRelatedResourceDeleteDetails';
|
||||
import AlertModal from '../AlertModal';
|
||||
import { getRelatedResourceDeleteCounts } from '../../util/getRelatedResourceDeleteDetails';
|
||||
import ErrorDetail from '../ErrorDetail';
|
||||
|
||||
const WarningMessage = styled(Alert)`
|
||||
|
||||
@ -1,10 +1,10 @@
|
||||
import React from 'react';
|
||||
import { act } from 'react-dom/test-utils';
|
||||
import { CredentialsAPI } from 'api';
|
||||
import {
|
||||
mountWithContexts,
|
||||
waitForElement,
|
||||
} from '../../../testUtils/enzymeHelpers';
|
||||
import { CredentialsAPI } from '../../api';
|
||||
import DeleteButton from './DeleteButton';
|
||||
|
||||
jest.mock('../../api');
|
||||
|
||||
@ -2,7 +2,7 @@ import React from 'react';
|
||||
import { node, string } from 'prop-types';
|
||||
import { t } from '@lingui/macro';
|
||||
import styled from 'styled-components';
|
||||
import { formatDateString } from '../../util/dates';
|
||||
import { formatDateString } from 'util/dates';
|
||||
import _Detail from './Detail';
|
||||
|
||||
const Detail = styled(_Detail)`
|
||||
|
||||
@ -3,9 +3,9 @@ import { node, string } from 'prop-types';
|
||||
import { Trans } from '@lingui/macro';
|
||||
import { Link } from 'react-router-dom';
|
||||
import styled from 'styled-components';
|
||||
import { formatDateString } from '../../util/dates';
|
||||
import { formatDateString } from 'util/dates';
|
||||
import { SummaryFieldUser } from 'types';
|
||||
import _Detail from './Detail';
|
||||
import { SummaryFieldUser } from '../../types';
|
||||
|
||||
const Detail = styled(_Detail)`
|
||||
word-break: break-word;
|
||||
|
||||
@ -4,7 +4,7 @@ import { arrayOf, func, shape, string, oneOfType, number } from 'prop-types';
|
||||
import { t } from '@lingui/macro';
|
||||
import { Button, Tooltip, DropdownItem } from '@patternfly/react-core';
|
||||
import styled from 'styled-components';
|
||||
import { KebabifiedContext } from '../../contexts/Kebabified';
|
||||
import { KebabifiedContext } from 'contexts/Kebabified';
|
||||
|
||||
import AlertModal from '../AlertModal';
|
||||
|
||||
|
||||
@ -5,10 +5,10 @@ import { t, Trans } from '@lingui/macro';
|
||||
import { Popover, Tooltip } from '@patternfly/react-core';
|
||||
import styled from 'styled-components';
|
||||
import { ExclamationTriangleIcon as PFExclamationTriangleIcon } from '@patternfly/react-icons';
|
||||
import { ExecutionEnvironment } from 'types';
|
||||
import getDocsBaseUrl from 'util/getDocsBaseUrl';
|
||||
import { useConfig } from 'contexts/Config';
|
||||
import { Detail } from '../DetailList';
|
||||
import { ExecutionEnvironment } from '../../types';
|
||||
import getDocsBaseUrl from '../../util/getDocsBaseUrl';
|
||||
import { useConfig } from '../../contexts/Config';
|
||||
|
||||
const ExclamationTriangleIcon = styled(PFExclamationTriangleIcon)`
|
||||
color: var(--pf-global--warning-color--100);
|
||||
|
||||
@ -3,13 +3,13 @@ import { bool, func, shape } from 'prop-types';
|
||||
import { Formik, useField, useFormikContext } from 'formik';
|
||||
import { t } from '@lingui/macro';
|
||||
import { Form, FormGroup, Tooltip } from '@patternfly/react-core';
|
||||
import { required } from 'util/validators';
|
||||
import FormField, { FormSubmitError } from '../FormField';
|
||||
import FormActionGroup from '../FormActionGroup/FormActionGroup';
|
||||
import { VariablesField } from '../CodeEditor';
|
||||
import { InventoryLookup } from '../Lookup';
|
||||
import { FormColumnLayout, FormFullWidthLayout } from '../FormLayout';
|
||||
import Popover from '../Popover';
|
||||
import { required } from '../../util/validators';
|
||||
|
||||
const InventoryLookupField = ({ isDisabled }) => {
|
||||
const { setFieldValue, setFieldTouched } = useFormikContext();
|
||||
|
||||
@ -3,10 +3,10 @@ import React, { Fragment, useState, useEffect, useCallback } from 'react';
|
||||
|
||||
import { t } from '@lingui/macro';
|
||||
import { Switch, Tooltip } from '@patternfly/react-core';
|
||||
import useRequest from 'util/useRequest';
|
||||
import { HostsAPI } from 'api';
|
||||
import AlertModal from '../AlertModal';
|
||||
import ErrorDetail from '../ErrorDetail';
|
||||
import useRequest from '../../util/useRequest';
|
||||
import { HostsAPI } from '../../api';
|
||||
|
||||
function HostToggle({
|
||||
className,
|
||||
|
||||
@ -1,6 +1,6 @@
|
||||
import React from 'react';
|
||||
import { act } from 'react-dom/test-utils';
|
||||
import { HostsAPI } from '../../api';
|
||||
import { HostsAPI } from 'api';
|
||||
import { mountWithContexts } from '../../../testUtils/enzymeHelpers';
|
||||
import HostToggle from './HostToggle';
|
||||
|
||||
|
||||
@ -2,11 +2,11 @@ import React, { useState, useEffect, useCallback } from 'react';
|
||||
|
||||
import { t } from '@lingui/macro';
|
||||
import { Switch, Tooltip } from '@patternfly/react-core';
|
||||
import AlertModal from '../AlertModal';
|
||||
import useRequest from 'util/useRequest';
|
||||
import { InstancesAPI } from 'api';
|
||||
import { useConfig } from 'contexts/Config';
|
||||
import ErrorDetail from '../ErrorDetail';
|
||||
import useRequest from '../../util/useRequest';
|
||||
import { InstancesAPI } from '../../api';
|
||||
import { useConfig } from '../../contexts/Config';
|
||||
import AlertModal from '../AlertModal';
|
||||
|
||||
function InstanceToggle({ className, fetchInstances, instance, onToggle }) {
|
||||
const { me = {} } = useConfig();
|
||||
|
||||
@ -1,6 +1,6 @@
|
||||
import React from 'react';
|
||||
import { act } from 'react-dom/test-utils';
|
||||
import { InstancesAPI } from '../../api';
|
||||
import { InstancesAPI } from 'api';
|
||||
import { mountWithContexts } from '../../../testUtils/enzymeHelpers';
|
||||
import InstanceToggle from './InstanceToggle';
|
||||
|
||||
|
||||
@ -2,8 +2,8 @@ import React, { useCallback, useState } from 'react';
|
||||
import { t } from '@lingui/macro';
|
||||
import { MinusCircleIcon } from '@patternfly/react-icons';
|
||||
import { Button, Tooltip } from '@patternfly/react-core';
|
||||
import { getJobModel } from '../../util/jobs';
|
||||
import useRequest, { useDismissableError } from '../../util/useRequest';
|
||||
import { getJobModel } from 'util/jobs';
|
||||
import useRequest, { useDismissableError } from 'util/useRequest';
|
||||
import AlertModal from '../AlertModal';
|
||||
import ErrorDetail from '../ErrorDetail';
|
||||
|
||||
|
||||
@ -6,7 +6,7 @@ import {
|
||||
SystemJobsAPI,
|
||||
WorkflowJobsAPI,
|
||||
JobsAPI,
|
||||
} from '../../api';
|
||||
} from 'api';
|
||||
import { mountWithContexts } from '../../../testUtils/enzymeHelpers';
|
||||
import JobCancelButton from './JobCancelButton';
|
||||
|
||||
|
||||
@ -3,6 +3,16 @@ import { useLocation } from 'react-router-dom';
|
||||
import { t, Plural } from '@lingui/macro';
|
||||
|
||||
import { Card } from '@patternfly/react-core';
|
||||
import useRequest, {
|
||||
useDeleteItems,
|
||||
useDismissableError,
|
||||
} from 'util/useRequest';
|
||||
import { useConfig } from 'contexts/Config';
|
||||
import useSelected from 'util/useSelected';
|
||||
import useExpanded from 'util/useExpanded';
|
||||
import { isJobRunning, getJobModel } from 'util/jobs';
|
||||
import { getQSConfig, parseQueryString } from 'util/qs';
|
||||
import { UnifiedJobsAPI } from 'api';
|
||||
import AlertModal from '../AlertModal';
|
||||
import DatalistToolbar from '../DataListToolbar';
|
||||
import ErrorDetail from '../ErrorDetail';
|
||||
@ -11,19 +21,9 @@ import PaginatedTable, {
|
||||
HeaderCell,
|
||||
ToolbarDeleteButton,
|
||||
} from '../PaginatedTable';
|
||||
import useRequest, {
|
||||
useDeleteItems,
|
||||
useDismissableError,
|
||||
} from '../../util/useRequest';
|
||||
import { useConfig } from '../../contexts/Config';
|
||||
import useSelected from '../../util/useSelected';
|
||||
import useExpanded from '../../util/useExpanded';
|
||||
import { isJobRunning, getJobModel } from '../../util/jobs';
|
||||
import { getQSConfig, parseQueryString } from '../../util/qs';
|
||||
import JobListItem from './JobListItem';
|
||||
import JobListCancelButton from './JobListCancelButton';
|
||||
import useWsJobs from './useWsJobs';
|
||||
import { UnifiedJobsAPI } from '../../api';
|
||||
|
||||
function JobList({ defaultParams, showTypeColumn = false }) {
|
||||
const qsConfig = getQSConfig(
|
||||
|
||||
@ -1,9 +1,5 @@
|
||||
import React from 'react';
|
||||
import { act } from 'react-dom/test-utils';
|
||||
import {
|
||||
mountWithContexts,
|
||||
waitForElement,
|
||||
} from '../../../testUtils/enzymeHelpers';
|
||||
import {
|
||||
AdHocCommandsAPI,
|
||||
InventoryUpdatesAPI,
|
||||
@ -12,7 +8,11 @@ import {
|
||||
SystemJobsAPI,
|
||||
UnifiedJobsAPI,
|
||||
WorkflowJobsAPI,
|
||||
} from '../../api';
|
||||
} from 'api';
|
||||
import {
|
||||
mountWithContexts,
|
||||
waitForElement,
|
||||
} from '../../../testUtils/enzymeHelpers';
|
||||
import JobList from './JobList';
|
||||
|
||||
jest.mock('../../api');
|
||||
|
||||
@ -3,10 +3,10 @@ import React, { useContext, useEffect, useState } from 'react';
|
||||
import { t, Plural } from '@lingui/macro';
|
||||
import { arrayOf, func } from 'prop-types';
|
||||
import { Button, DropdownItem, Tooltip } from '@patternfly/react-core';
|
||||
import { KebabifiedContext } from '../../contexts/Kebabified';
|
||||
import { isJobRunning } from '../../util/jobs';
|
||||
import { KebabifiedContext } from 'contexts/Kebabified';
|
||||
import { isJobRunning } from 'util/jobs';
|
||||
import { Job } from 'types';
|
||||
import AlertModal from '../AlertModal';
|
||||
import { Job } from '../../types';
|
||||
|
||||
function cannotCancelBecausePermissions(job) {
|
||||
return (
|
||||
|
||||
@ -6,6 +6,8 @@ import { Button, Chip } from '@patternfly/react-core';
|
||||
import { Tr, Td, ExpandableRowContent } from '@patternfly/react-table';
|
||||
import { RocketIcon } from '@patternfly/react-icons';
|
||||
import styled from 'styled-components';
|
||||
import { formatDateString } from 'util/dates';
|
||||
import { isJobRunning } from 'util/jobs';
|
||||
import { ActionsTd, ActionItem } from '../PaginatedTable';
|
||||
import { LaunchButton, ReLaunchDropDown } from '../LaunchButton';
|
||||
import StatusLabel from '../StatusLabel';
|
||||
@ -13,8 +15,6 @@ import { DetailList, Detail, LaunchedByDetail } from '../DetailList';
|
||||
import ChipGroup from '../ChipGroup';
|
||||
import CredentialChip from '../CredentialChip';
|
||||
import ExecutionEnvironmentDetail from '../ExecutionEnvironmentDetail';
|
||||
import { formatDateString } from '../../util/dates';
|
||||
import { isJobRunning } from '../../util/jobs';
|
||||
import { JOB_TYPE_URL_SEGMENTS } from '../../constants';
|
||||
import JobCancelButton from '../JobCancelButton';
|
||||
|
||||
|
||||
@ -1,8 +1,8 @@
|
||||
import { useState, useEffect } from 'react';
|
||||
import { useLocation } from 'react-router-dom';
|
||||
import useWebsocket from '../../util/useWebsocket';
|
||||
import useThrottle from '../../util/useThrottle';
|
||||
import { parseQueryString } from '../../util/qs';
|
||||
import useWebsocket from 'util/useWebsocket';
|
||||
import useThrottle from 'util/useThrottle';
|
||||
import { parseQueryString } from 'util/qs';
|
||||
import sortJobs from './sortJobs';
|
||||
|
||||
export default function useWsJobs(initialJobs, fetchJobsById, qsConfig) {
|
||||
|
||||
@ -4,8 +4,6 @@ import { number, shape } from 'prop-types';
|
||||
|
||||
import { t } from '@lingui/macro';
|
||||
|
||||
import AlertModal from '../AlertModal';
|
||||
import ErrorDetail from '../ErrorDetail';
|
||||
import {
|
||||
AdHocCommandsAPI,
|
||||
InventorySourcesAPI,
|
||||
@ -14,7 +12,9 @@ import {
|
||||
ProjectsAPI,
|
||||
WorkflowJobsAPI,
|
||||
WorkflowJobTemplatesAPI,
|
||||
} from '../../api';
|
||||
} from 'api';
|
||||
import AlertModal from '../AlertModal';
|
||||
import ErrorDetail from '../ErrorDetail';
|
||||
import LaunchPrompt from '../LaunchPrompt';
|
||||
|
||||
function canLaunchWithoutPrompt(launchData) {
|
||||
|
||||
@ -1,10 +1,6 @@
|
||||
import React from 'react';
|
||||
import { createMemoryHistory } from 'history';
|
||||
import { act } from 'react-dom/test-utils';
|
||||
import { mountWithContexts } from '../../../testUtils/enzymeHelpers';
|
||||
import { sleep } from '../../../testUtils/testUtils';
|
||||
|
||||
import LaunchButton from './LaunchButton';
|
||||
import {
|
||||
InventorySourcesAPI,
|
||||
JobsAPI,
|
||||
@ -12,7 +8,11 @@ import {
|
||||
ProjectsAPI,
|
||||
WorkflowJobsAPI,
|
||||
WorkflowJobTemplatesAPI,
|
||||
} from '../../api';
|
||||
} from 'api';
|
||||
import { mountWithContexts } from '../../../testUtils/enzymeHelpers';
|
||||
import { sleep } from '../../../testUtils/testUtils';
|
||||
|
||||
import LaunchButton from './LaunchButton';
|
||||
|
||||
jest.mock('../../api');
|
||||
|
||||
|
||||
@ -2,11 +2,11 @@ import React, { useState } from 'react';
|
||||
import { ExpandableSection, Wizard } from '@patternfly/react-core';
|
||||
import { t } from '@lingui/macro';
|
||||
import { Formik, useFormikContext } from 'formik';
|
||||
import ContentError from '../ContentError';
|
||||
import { useDismissableError } from 'util/useRequest';
|
||||
import mergeExtraVars from 'util/prompt/mergeExtraVars';
|
||||
import getSurveyValues from 'util/prompt/getSurveyValues';
|
||||
import ContentLoading from '../ContentLoading';
|
||||
import { useDismissableError } from '../../util/useRequest';
|
||||
import mergeExtraVars from '../../util/prompt/mergeExtraVars';
|
||||
import getSurveyValues from '../../util/prompt/getSurveyValues';
|
||||
import ContentError from '../ContentError';
|
||||
import useLaunchSteps from './useLaunchSteps';
|
||||
import AlertModal from '../AlertModal';
|
||||
|
||||
|
||||
@ -1,5 +1,11 @@
|
||||
import React from 'react';
|
||||
import { act, isElementOfType } from 'react-dom/test-utils';
|
||||
import {
|
||||
InventoriesAPI,
|
||||
CredentialsAPI,
|
||||
CredentialTypesAPI,
|
||||
JobTemplatesAPI,
|
||||
} from 'api';
|
||||
import {
|
||||
mountWithContexts,
|
||||
waitForElement,
|
||||
@ -10,12 +16,6 @@ import CredentialsStep from './steps/CredentialsStep';
|
||||
import CredentialPasswordsStep from './steps/CredentialPasswordsStep';
|
||||
import OtherPromptsStep from './steps/OtherPromptsStep';
|
||||
import PreviewStep from './steps/PreviewStep';
|
||||
import {
|
||||
InventoriesAPI,
|
||||
CredentialsAPI,
|
||||
CredentialTypesAPI,
|
||||
JobTemplatesAPI,
|
||||
} from '../../api';
|
||||
|
||||
jest.mock('../../api/models/Inventories');
|
||||
jest.mock('../../api/models/CredentialTypes');
|
||||
|
||||
@ -6,14 +6,14 @@ import { t } from '@lingui/macro';
|
||||
import { useField } from 'formik';
|
||||
import styled from 'styled-components';
|
||||
import { Alert, ToolbarItem } from '@patternfly/react-core';
|
||||
import { CredentialsAPI, CredentialTypesAPI } from '../../../api';
|
||||
import { CredentialsAPI, CredentialTypesAPI } from 'api';
|
||||
import { getQSConfig, parseQueryString } from 'util/qs';
|
||||
import useRequest from 'util/useRequest';
|
||||
import AnsibleSelect from '../../AnsibleSelect';
|
||||
import OptionsList from '../../OptionsList';
|
||||
import ContentLoading from '../../ContentLoading';
|
||||
import CredentialChip from '../../CredentialChip';
|
||||
import ContentError from '../../ContentError';
|
||||
import { getQSConfig, parseQueryString } from '../../../util/qs';
|
||||
import useRequest from '../../../util/useRequest';
|
||||
import credentialsValidator from './credentialsValidator';
|
||||
|
||||
const CredentialErrorAlert = styled(Alert)`
|
||||
|
||||
@ -1,9 +1,9 @@
|
||||
import React from 'react';
|
||||
import { act } from 'react-dom/test-utils';
|
||||
import { Formik } from 'formik';
|
||||
import { CredentialsAPI, CredentialTypesAPI } from 'api';
|
||||
import { mountWithContexts } from '../../../../testUtils/enzymeHelpers';
|
||||
import CredentialsStep from './CredentialsStep';
|
||||
import { CredentialsAPI, CredentialTypesAPI } from '../../../api';
|
||||
|
||||
jest.mock('../../../api/models/CredentialTypes');
|
||||
jest.mock('../../../api/models/Credentials');
|
||||
|
||||
@ -5,9 +5,9 @@ import { t } from '@lingui/macro';
|
||||
import { useField } from 'formik';
|
||||
import styled from 'styled-components';
|
||||
import { Alert } from '@patternfly/react-core';
|
||||
import { InventoriesAPI } from '../../../api';
|
||||
import { getQSConfig, parseQueryString } from '../../../util/qs';
|
||||
import useRequest from '../../../util/useRequest';
|
||||
import { InventoriesAPI } from 'api';
|
||||
import { getQSConfig, parseQueryString } from 'util/qs';
|
||||
import useRequest from 'util/useRequest';
|
||||
import OptionsList from '../../OptionsList';
|
||||
import ContentLoading from '../../ContentLoading';
|
||||
import ContentError from '../../ContentError';
|
||||
|
||||
@ -1,9 +1,9 @@
|
||||
import React from 'react';
|
||||
import { act } from 'react-dom/test-utils';
|
||||
import { Formik } from 'formik';
|
||||
import { InventoriesAPI } from 'api';
|
||||
import { mountWithContexts } from '../../../../testUtils/enzymeHelpers';
|
||||
import InventoryStep from './InventoryStep';
|
||||
import { InventoriesAPI } from '../../../api';
|
||||
|
||||
jest.mock('../../../api/models/Inventories');
|
||||
|
||||
|
||||
@ -6,10 +6,8 @@ import { t } from '@lingui/macro';
|
||||
import { useFormikContext } from 'formik';
|
||||
|
||||
import yaml from 'js-yaml';
|
||||
import mergeExtraVars, {
|
||||
maskPasswords,
|
||||
} from '../../../util/prompt/mergeExtraVars';
|
||||
import getSurveyValues from '../../../util/prompt/getSurveyValues';
|
||||
import mergeExtraVars, { maskPasswords } from 'util/prompt/mergeExtraVars';
|
||||
import getSurveyValues from 'util/prompt/getSurveyValues';
|
||||
import PromptDetail from '../../PromptDetail';
|
||||
|
||||
const ExclamationCircleIcon = styled(PFExclamationCircleIcon)`
|
||||
|
||||
@ -8,8 +8,6 @@ import {
|
||||
SelectOption,
|
||||
SelectVariant,
|
||||
} from '@patternfly/react-core';
|
||||
import FormField from '../../FormField';
|
||||
import Popover from '../../Popover';
|
||||
import {
|
||||
required,
|
||||
minMaxValue,
|
||||
@ -17,8 +15,10 @@ import {
|
||||
minLength,
|
||||
integer,
|
||||
combine,
|
||||
} from '../../../util/validators';
|
||||
import { Survey } from '../../../types';
|
||||
} from 'util/validators';
|
||||
import { Survey } from 'types';
|
||||
import FormField from '../../FormField';
|
||||
import Popover from '../../Popover';
|
||||
|
||||
function SurveyStep({ surveyConfig }) {
|
||||
const fieldTypes = {
|
||||
|
||||
@ -1,7 +1,7 @@
|
||||
import React, { useState } from 'react';
|
||||
import { t } from '@lingui/macro';
|
||||
import { useField } from 'formik';
|
||||
import { jsonToYaml, yamlToJson } from '../../../util/yaml';
|
||||
import { jsonToYaml, yamlToJson } from 'util/yaml';
|
||||
import OtherPromptsStep from './OtherPromptsStep';
|
||||
import StepName from './StepName';
|
||||
|
||||
|
||||
@ -3,15 +3,15 @@ import PropTypes from 'prop-types';
|
||||
import { withRouter } from 'react-router-dom';
|
||||
import styled from 'styled-components';
|
||||
import { Toolbar, ToolbarContent } from '@patternfly/react-core';
|
||||
import DataListToolbar from '../DataListToolbar';
|
||||
|
||||
import {
|
||||
parseQueryString,
|
||||
mergeParams,
|
||||
removeParams,
|
||||
updateQueryString,
|
||||
} from '../../util/qs';
|
||||
import { QSConfig, SearchColumns, SortColumns } from '../../types';
|
||||
} from 'util/qs';
|
||||
import { QSConfig, SearchColumns, SortColumns } from 'types';
|
||||
import DataListToolbar from '../DataListToolbar';
|
||||
|
||||
const EmptyStateControlsWrapper = styled.div`
|
||||
display: flex;
|
||||
|
||||
@ -3,12 +3,12 @@ import { func, node, string } from 'prop-types';
|
||||
import { withRouter, useLocation } from 'react-router-dom';
|
||||
import { t } from '@lingui/macro';
|
||||
import { FormGroup } from '@patternfly/react-core';
|
||||
import { ApplicationsAPI } from '../../api';
|
||||
import { Application } from '../../types';
|
||||
import { getQSConfig, parseQueryString } from '../../util/qs';
|
||||
import { ApplicationsAPI } from 'api';
|
||||
import { Application } from 'types';
|
||||
import { getQSConfig, parseQueryString } from 'util/qs';
|
||||
import useRequest from 'util/useRequest';
|
||||
import Lookup from './Lookup';
|
||||
import OptionsList from '../OptionsList';
|
||||
import useRequest from '../../util/useRequest';
|
||||
import LookupErrorMessage from './shared/LookupErrorMessage';
|
||||
|
||||
const QS_CONFIG = getQSConfig('applications', {
|
||||
|
||||
@ -1,9 +1,9 @@
|
||||
import React from 'react';
|
||||
import { act } from 'react-dom/test-utils';
|
||||
import { Formik } from 'formik';
|
||||
import { ApplicationsAPI } from 'api';
|
||||
import { mountWithContexts } from '../../../testUtils/enzymeHelpers';
|
||||
import ApplicationLookup from './ApplicationLookup';
|
||||
import { ApplicationsAPI } from '../../api';
|
||||
|
||||
jest.mock('../../api');
|
||||
const application = {
|
||||
|
||||
@ -12,14 +12,14 @@ import {
|
||||
|
||||
import { t } from '@lingui/macro';
|
||||
import { FormGroup } from '@patternfly/react-core';
|
||||
import { CredentialsAPI } from '../../api';
|
||||
import { Credential } from '../../types';
|
||||
import { getQSConfig, parseQueryString, mergeParams } from '../../util/qs';
|
||||
import { CredentialsAPI } from 'api';
|
||||
import { Credential } from 'types';
|
||||
import { getQSConfig, parseQueryString, mergeParams } from 'util/qs';
|
||||
import useAutoPopulateLookup from 'util/useAutoPopulateLookup';
|
||||
import useRequest from 'util/useRequest';
|
||||
import Popover from '../Popover';
|
||||
import Lookup from './Lookup';
|
||||
import OptionsList from '../OptionsList';
|
||||
import useAutoPopulateLookup from '../../util/useAutoPopulateLookup';
|
||||
import useRequest from '../../util/useRequest';
|
||||
import LookupErrorMessage from './shared/LookupErrorMessage';
|
||||
|
||||
const QS_CONFIG = getQSConfig('credentials', {
|
||||
|
||||
@ -1,9 +1,9 @@
|
||||
import React from 'react';
|
||||
import { act } from 'react-dom/test-utils';
|
||||
import { Formik } from 'formik';
|
||||
import { CredentialsAPI } from 'api';
|
||||
import { mountWithContexts } from '../../../testUtils/enzymeHelpers';
|
||||
import CredentialLookup, { _CredentialLookup } from './CredentialLookup';
|
||||
import { CredentialsAPI } from '../../api';
|
||||
|
||||
jest.mock('../../api');
|
||||
|
||||
|
||||
@ -3,12 +3,12 @@ import { string, func, bool, oneOfType, number } from 'prop-types';
|
||||
import { useLocation } from 'react-router-dom';
|
||||
import { t } from '@lingui/macro';
|
||||
import { FormGroup, Tooltip } from '@patternfly/react-core';
|
||||
import { ExecutionEnvironmentsAPI, ProjectsAPI } from '../../api';
|
||||
import { ExecutionEnvironment } from '../../types';
|
||||
import { getQSConfig, parseQueryString, mergeParams } from '../../util/qs';
|
||||
import { ExecutionEnvironmentsAPI, ProjectsAPI } from 'api';
|
||||
import { ExecutionEnvironment } from 'types';
|
||||
import { getQSConfig, parseQueryString, mergeParams } from 'util/qs';
|
||||
import useRequest from 'util/useRequest';
|
||||
import Popover from '../Popover';
|
||||
import OptionsList from '../OptionsList';
|
||||
import useRequest from '../../util/useRequest';
|
||||
|
||||
import Lookup from './Lookup';
|
||||
import LookupErrorMessage from './shared/LookupErrorMessage';
|
||||
|
||||
@ -1,9 +1,9 @@
|
||||
import React from 'react';
|
||||
import { act } from 'react-dom/test-utils';
|
||||
import { Formik } from 'formik';
|
||||
import { ExecutionEnvironmentsAPI, ProjectsAPI } from 'api';
|
||||
import { mountWithContexts } from '../../../testUtils/enzymeHelpers';
|
||||
import ExecutionEnvironmentLookup from './ExecutionEnvironmentLookup';
|
||||
import { ExecutionEnvironmentsAPI, ProjectsAPI } from '../../api';
|
||||
|
||||
jest.mock('../../api');
|
||||
|
||||
|
||||
@ -14,15 +14,15 @@ import {
|
||||
Modal,
|
||||
Tooltip,
|
||||
} from '@patternfly/react-core';
|
||||
import { HostsAPI } from 'api';
|
||||
import { getQSConfig, mergeParams, parseQueryString } from 'util/qs';
|
||||
import useRequest, { useDismissableError } from 'util/useRequest';
|
||||
import ChipGroup from '../ChipGroup';
|
||||
import Popover from '../Popover';
|
||||
import DataListToolbar from '../DataListToolbar';
|
||||
import LookupErrorMessage from './shared/LookupErrorMessage';
|
||||
import PaginatedTable, { HeaderCell, HeaderRow } from '../PaginatedTable';
|
||||
import HostListItem from './HostListItem';
|
||||
import { HostsAPI } from '../../api';
|
||||
import { getQSConfig, mergeParams, parseQueryString } from '../../util/qs';
|
||||
import useRequest, { useDismissableError } from '../../util/useRequest';
|
||||
import {
|
||||
removeDefaultParams,
|
||||
removeNamespacedKeys,
|
||||
|
||||
@ -4,12 +4,12 @@ import { withRouter } from 'react-router-dom';
|
||||
|
||||
import { t, Trans } from '@lingui/macro';
|
||||
import { FormGroup } from '@patternfly/react-core';
|
||||
import { InstanceGroupsAPI } from '../../api';
|
||||
import { InstanceGroup } from '../../types';
|
||||
import { getQSConfig, parseQueryString } from '../../util/qs';
|
||||
import { InstanceGroupsAPI } from 'api';
|
||||
import { InstanceGroup } from 'types';
|
||||
import { getQSConfig, parseQueryString } from 'util/qs';
|
||||
import useRequest from 'util/useRequest';
|
||||
import Popover from '../Popover';
|
||||
import OptionsList from '../OptionsList';
|
||||
import useRequest from '../../util/useRequest';
|
||||
import Lookup from './Lookup';
|
||||
import LookupErrorMessage from './shared/LookupErrorMessage';
|
||||
|
||||
|
||||
@ -2,12 +2,12 @@ import React, { useCallback, useEffect } from 'react';
|
||||
import { func, bool, string } from 'prop-types';
|
||||
import { withRouter } from 'react-router-dom';
|
||||
import { t } from '@lingui/macro';
|
||||
import { InventoriesAPI } from '../../api';
|
||||
import { Inventory } from '../../types';
|
||||
import { InventoriesAPI } from 'api';
|
||||
import { Inventory } from 'types';
|
||||
import useRequest from 'util/useRequest';
|
||||
import { getQSConfig, parseQueryString, mergeParams } from 'util/qs';
|
||||
import Lookup from './Lookup';
|
||||
import OptionsList from '../OptionsList';
|
||||
import useRequest from '../../util/useRequest';
|
||||
import { getQSConfig, parseQueryString, mergeParams } from '../../util/qs';
|
||||
import LookupErrorMessage from './shared/LookupErrorMessage';
|
||||
import FieldWithPrompt from '../FieldWithPrompt';
|
||||
|
||||
|
||||
@ -1,9 +1,9 @@
|
||||
import React from 'react';
|
||||
import { act } from 'react-dom/test-utils';
|
||||
import { Formik } from 'formik';
|
||||
import { InventoriesAPI } from 'api';
|
||||
import { mountWithContexts } from '../../../testUtils/enzymeHelpers';
|
||||
import InventoryLookup from './InventoryLookup';
|
||||
import { InventoriesAPI } from '../../api';
|
||||
|
||||
jest.mock('../../api');
|
||||
|
||||
|
||||
@ -22,10 +22,10 @@ import {
|
||||
} from '@patternfly/react-core';
|
||||
import { t } from '@lingui/macro';
|
||||
import styled from 'styled-components';
|
||||
import useDebounce from '../../util/useDebounce';
|
||||
import useDebounce from 'util/useDebounce';
|
||||
import { QSConfig } from 'types';
|
||||
import ChipGroup from '../ChipGroup';
|
||||
import reducer, { initReducer } from './shared/reducer';
|
||||
import { QSConfig } from '../../types';
|
||||
|
||||
const ChipHolder = styled.div`
|
||||
--pf-c-form-control--Height: auto;
|
||||
|
||||
@ -2,11 +2,11 @@
|
||||
import React from 'react';
|
||||
import { act } from 'react-dom/test-utils';
|
||||
import { Formik } from 'formik';
|
||||
import { getQSConfig } from 'util/qs';
|
||||
import {
|
||||
mountWithContexts,
|
||||
waitForElement,
|
||||
} from '../../../testUtils/enzymeHelpers';
|
||||
import { getQSConfig } from '../../util/qs';
|
||||
import Lookup from './Lookup';
|
||||
|
||||
/**
|
||||
|
||||
@ -4,14 +4,14 @@ import { withRouter } from 'react-router-dom';
|
||||
import PropTypes from 'prop-types';
|
||||
import { t } from '@lingui/macro';
|
||||
import { ToolbarItem, Alert } from '@patternfly/react-core';
|
||||
import { CredentialsAPI, CredentialTypesAPI } from '../../api';
|
||||
import { CredentialsAPI, CredentialTypesAPI } from 'api';
|
||||
import useRequest from 'util/useRequest';
|
||||
import { getQSConfig, parseQueryString } from 'util/qs';
|
||||
import useIsMounted from 'util/useIsMounted';
|
||||
import AnsibleSelect from '../AnsibleSelect';
|
||||
import CredentialChip from '../CredentialChip';
|
||||
import OptionsList from '../OptionsList';
|
||||
import useRequest from '../../util/useRequest';
|
||||
import { getQSConfig, parseQueryString } from '../../util/qs';
|
||||
import Lookup from './Lookup';
|
||||
import useIsMounted from '../../util/useIsMounted';
|
||||
|
||||
const QS_CONFIG = getQSConfig('credentials', {
|
||||
page: 1,
|
||||
|
||||
@ -1,12 +1,12 @@
|
||||
import React from 'react';
|
||||
import { act } from 'react-dom/test-utils';
|
||||
import { Formik } from 'formik';
|
||||
import { CredentialsAPI, CredentialTypesAPI } from 'api';
|
||||
import {
|
||||
mountWithContexts,
|
||||
waitForElement,
|
||||
} from '../../../testUtils/enzymeHelpers';
|
||||
import MultiCredentialsLookup from './MultiCredentialsLookup';
|
||||
import { CredentialsAPI, CredentialTypesAPI } from '../../api';
|
||||
|
||||
jest.mock('../../api');
|
||||
|
||||
|
||||
@ -3,11 +3,11 @@ import { node, func, bool, string } from 'prop-types';
|
||||
import { withRouter } from 'react-router-dom';
|
||||
import { t } from '@lingui/macro';
|
||||
import { FormGroup } from '@patternfly/react-core';
|
||||
import { OrganizationsAPI } from '../../api';
|
||||
import { Organization } from '../../types';
|
||||
import { getQSConfig, parseQueryString } from '../../util/qs';
|
||||
import useRequest from '../../util/useRequest';
|
||||
import useAutoPopulateLookup from '../../util/useAutoPopulateLookup';
|
||||
import { OrganizationsAPI } from 'api';
|
||||
import { Organization } from 'types';
|
||||
import { getQSConfig, parseQueryString } from 'util/qs';
|
||||
import useRequest from 'util/useRequest';
|
||||
import useAutoPopulateLookup from 'util/useAutoPopulateLookup';
|
||||
import OptionsList from '../OptionsList';
|
||||
import Lookup from './Lookup';
|
||||
import LookupErrorMessage from './shared/LookupErrorMessage';
|
||||
|
||||
@ -1,9 +1,9 @@
|
||||
import React from 'react';
|
||||
import { act } from 'react-dom/test-utils';
|
||||
import { Formik } from 'formik';
|
||||
import { OrganizationsAPI } from 'api';
|
||||
import { mountWithContexts } from '../../../testUtils/enzymeHelpers';
|
||||
import OrganizationLookup, { _OrganizationLookup } from './OrganizationLookup';
|
||||
import { OrganizationsAPI } from '../../api';
|
||||
|
||||
jest.mock('../../api');
|
||||
|
||||
|
||||
@ -3,13 +3,13 @@ import { node, string, func, bool } from 'prop-types';
|
||||
import { withRouter } from 'react-router-dom';
|
||||
import { t } from '@lingui/macro';
|
||||
import { FormGroup } from '@patternfly/react-core';
|
||||
import { ProjectsAPI } from '../../api';
|
||||
import { Project } from '../../types';
|
||||
import Popover from '../Popover';
|
||||
import { ProjectsAPI } from 'api';
|
||||
import { Project } from 'types';
|
||||
import useAutoPopulateLookup from 'util/useAutoPopulateLookup';
|
||||
import useRequest from 'util/useRequest';
|
||||
import { getQSConfig, parseQueryString } from 'util/qs';
|
||||
import OptionsList from '../OptionsList';
|
||||
import useAutoPopulateLookup from '../../util/useAutoPopulateLookup';
|
||||
import useRequest from '../../util/useRequest';
|
||||
import { getQSConfig, parseQueryString } from '../../util/qs';
|
||||
import Popover from '../Popover';
|
||||
import Lookup from './Lookup';
|
||||
import LookupErrorMessage from './shared/LookupErrorMessage';
|
||||
|
||||
|
||||
@ -1,8 +1,8 @@
|
||||
import React from 'react';
|
||||
import { act } from 'react-dom/test-utils';
|
||||
import { Formik } from 'formik';
|
||||
import { ProjectsAPI } from 'api';
|
||||
import { mountWithContexts } from '../../../testUtils/enzymeHelpers';
|
||||
import { ProjectsAPI } from '../../api';
|
||||
import ProjectLookup from './ProjectLookup';
|
||||
|
||||
jest.mock('../../api');
|
||||
|
||||
@ -2,7 +2,7 @@ import React, { useState } from 'react';
|
||||
import { func, string } from 'prop-types';
|
||||
import { t } from '@lingui/macro';
|
||||
import { Select, SelectOption, SelectVariant } from '@patternfly/react-core';
|
||||
import { arrayToString, stringToArray } from '../../util/strings';
|
||||
import { arrayToString, stringToArray } from 'util/strings';
|
||||
|
||||
function TagMultiSelect({ onChange, value }) {
|
||||
const selections = stringToArray(value);
|
||||
|
||||
@ -1,5 +1,5 @@
|
||||
import { useState, useEffect } from 'react';
|
||||
import useIsMounted from '../../util/useIsMounted';
|
||||
import useIsMounted from 'util/useIsMounted';
|
||||
|
||||
/*
|
||||
Hook for using PatternFly's <Select> component when a pre-existing value
|
||||
|
||||
@ -3,13 +3,13 @@ import { useLocation } from 'react-router-dom';
|
||||
import { number, shape, bool } from 'prop-types';
|
||||
|
||||
import { t } from '@lingui/macro';
|
||||
import { getQSConfig, parseQueryString } from 'util/qs';
|
||||
import useRequest from 'util/useRequest';
|
||||
import { NotificationTemplatesAPI } from 'api';
|
||||
import AlertModal from '../AlertModal';
|
||||
import ErrorDetail from '../ErrorDetail';
|
||||
import NotificationListItem from './NotificationListItem';
|
||||
import PaginatedTable, { HeaderRow, HeaderCell } from '../PaginatedTable';
|
||||
import { getQSConfig, parseQueryString } from '../../util/qs';
|
||||
import useRequest from '../../util/useRequest';
|
||||
import { NotificationTemplatesAPI } from '../../api';
|
||||
|
||||
const QS_CONFIG = getQSConfig('notification', {
|
||||
page: 1,
|
||||
|
||||
@ -1,7 +1,7 @@
|
||||
import React from 'react';
|
||||
import { act } from 'react-dom/test-utils';
|
||||
import { NotificationTemplatesAPI, JobTemplatesAPI } from 'api';
|
||||
import { mountWithContexts } from '../../../testUtils/enzymeHelpers';
|
||||
import { NotificationTemplatesAPI, JobTemplatesAPI } from '../../api';
|
||||
import NotificationList from './NotificationList';
|
||||
|
||||
jest.mock('../../api');
|
||||
|
||||
@ -10,10 +10,10 @@ import {
|
||||
} from 'prop-types';
|
||||
import styled from 'styled-components';
|
||||
import { t } from '@lingui/macro';
|
||||
import { QSConfig, SearchColumns, SortColumns } from 'types';
|
||||
import { SelectedList, DraggableSelectedList } from '../SelectedList';
|
||||
import CheckboxListItem from '../CheckboxListItem';
|
||||
import DataListToolbar from '../DataListToolbar';
|
||||
import { QSConfig, SearchColumns, SortColumns } from '../../types';
|
||||
import PaginatedTable, { HeaderCell, HeaderRow } from '../PaginatedTable';
|
||||
|
||||
const ModalList = styled.div`
|
||||
|
||||
@ -1,6 +1,6 @@
|
||||
import React from 'react';
|
||||
import { getQSConfig } from 'util/qs';
|
||||
import { mountWithContexts } from '../../../testUtils/enzymeHelpers';
|
||||
import { getQSConfig } from '../../util/qs';
|
||||
import OptionsList from './OptionsList';
|
||||
|
||||
const qsConfig = getQSConfig('test', { order_by: 'foo' });
|
||||
|
||||
@ -3,7 +3,7 @@ import React from 'react';
|
||||
import { useLocation, useHistory } from 'react-router-dom';
|
||||
import { Thead, Tr, Th as PFTh } from '@patternfly/react-table';
|
||||
import styled from 'styled-components';
|
||||
import { parseQueryString, updateQueryString } from '../../util/qs';
|
||||
import { parseQueryString, updateQueryString } from 'util/qs';
|
||||
|
||||
const Th = styled(PFTh)`
|
||||
--pf-c-table--cell--Overflow: initial;
|
||||
|
||||
@ -6,6 +6,8 @@ import { TableComposable, Tbody } from '@patternfly/react-table';
|
||||
import { t } from '@lingui/macro';
|
||||
import { useLocation, useHistory } from 'react-router-dom';
|
||||
|
||||
import { parseQueryString, updateQueryString } from 'util/qs';
|
||||
import { QSConfig, SearchColumns } from 'types';
|
||||
import ListHeader from '../ListHeader';
|
||||
import ContentEmpty from '../ContentEmpty';
|
||||
import ContentError from '../ContentError';
|
||||
@ -14,9 +16,6 @@ import Pagination from '../Pagination';
|
||||
import DataListToolbar from '../DataListToolbar';
|
||||
import LoadingSpinner from '../LoadingSpinner';
|
||||
|
||||
import { parseQueryString, updateQueryString } from '../../util/qs';
|
||||
import { QSConfig, SearchColumns } from '../../types';
|
||||
|
||||
function PaginatedTable({
|
||||
contentError,
|
||||
hasContentLoading,
|
||||
|
||||
@ -5,7 +5,7 @@ import { Button, DropdownItem, Tooltip } from '@patternfly/react-core';
|
||||
import CaretDownIcon from '@patternfly/react-icons/dist/js/icons/caret-down-icon';
|
||||
|
||||
import { t } from '@lingui/macro';
|
||||
import { useKebabifiedMenu } from '../../contexts/Kebabified';
|
||||
import { useKebabifiedMenu } from 'contexts/Kebabified';
|
||||
|
||||
function ToolbarAddButton({
|
||||
linkTo,
|
||||
|
||||
@ -18,9 +18,9 @@ import {
|
||||
Tooltip,
|
||||
} from '@patternfly/react-core';
|
||||
import { t } from '@lingui/macro';
|
||||
import { KebabifiedContext } from 'contexts/Kebabified';
|
||||
import { getRelatedResourceDeleteCounts } from 'util/getRelatedResourceDeleteDetails';
|
||||
import AlertModal from '../AlertModal';
|
||||
import { KebabifiedContext } from '../../contexts/Kebabified';
|
||||
import { getRelatedResourceDeleteCounts } from '../../util/getRelatedResourceDeleteDetails';
|
||||
|
||||
import ErrorDetail from '../ErrorDetail';
|
||||
|
||||
|
||||
@ -1,11 +1,11 @@
|
||||
import React from 'react';
|
||||
import { act } from 'react-dom/test-utils';
|
||||
|
||||
import { CredentialsAPI } from 'api';
|
||||
import {
|
||||
mountWithContexts,
|
||||
waitForElement,
|
||||
} from '../../../testUtils/enzymeHelpers';
|
||||
import { CredentialsAPI } from '../../api';
|
||||
import ToolbarDeleteButton from './ToolbarDeleteButton';
|
||||
|
||||
jest.mock('../../api');
|
||||
|
||||
@ -6,7 +6,7 @@ import { t, Trans } from '@lingui/macro';
|
||||
import { Link } from 'react-router-dom';
|
||||
import styled from 'styled-components';
|
||||
import { Chip, Divider, Title } from '@patternfly/react-core';
|
||||
import { toTitleCase } from '../../util/strings';
|
||||
import { toTitleCase } from 'util/strings';
|
||||
|
||||
import CredentialChip from '../CredentialChip';
|
||||
import ChipGroup from '../ChipGroup';
|
||||
|
||||
@ -8,13 +8,13 @@ import {
|
||||
TextListVariants,
|
||||
TextListItemVariants,
|
||||
} from '@patternfly/react-core';
|
||||
import { toTitleCase } from 'util/strings';
|
||||
import CredentialChip from '../CredentialChip';
|
||||
import ChipGroup from '../ChipGroup';
|
||||
import Sparkline from '../Sparkline';
|
||||
import { Detail, DeletedDetail } from '../DetailList';
|
||||
import { VariablesDetail } from '../CodeEditor';
|
||||
import ExecutionEnvironmentDetail from '../ExecutionEnvironmentDetail';
|
||||
import { toTitleCase } from '../../util/strings';
|
||||
|
||||
function PromptJobTemplateDetail({ resource }) {
|
||||
const {
|
||||
|
||||
@ -7,10 +7,10 @@ import {
|
||||
TextListItemVariants,
|
||||
} from '@patternfly/react-core';
|
||||
import { Link } from 'react-router-dom';
|
||||
import { Config } from '../../contexts/Config';
|
||||
import { Config } from 'contexts/Config';
|
||||
import { toTitleCase } from 'util/strings';
|
||||
import { Detail, DeletedDetail } from '../DetailList';
|
||||
import CredentialChip from '../CredentialChip';
|
||||
import { toTitleCase } from '../../util/strings';
|
||||
import ExecutionEnvironmentDetail from '../ExecutionEnvironmentDetail';
|
||||
|
||||
function PromptProjectDetail({ resource }) {
|
||||
|
||||
@ -8,12 +8,12 @@ import {
|
||||
TextListVariants,
|
||||
TextListItemVariants,
|
||||
} from '@patternfly/react-core';
|
||||
import { toTitleCase } from 'util/strings';
|
||||
import CredentialChip from '../CredentialChip';
|
||||
import ChipGroup from '../ChipGroup';
|
||||
import { Detail } from '../DetailList';
|
||||
import { VariablesDetail } from '../CodeEditor';
|
||||
import Sparkline from '../Sparkline';
|
||||
import { toTitleCase } from '../../util/strings';
|
||||
|
||||
function PromptWFJobTemplateDetail({ resource }) {
|
||||
const {
|
||||
|
||||
@ -4,8 +4,8 @@ import { Button } from '@patternfly/react-core';
|
||||
|
||||
import { t } from '@lingui/macro';
|
||||
|
||||
import { Role } from 'types';
|
||||
import AlertModal from '../AlertModal';
|
||||
import { Role } from '../../types';
|
||||
|
||||
function DeleteRoleConfirmationModal({ role, username, onCancel, onConfirm }) {
|
||||
const isTeamRole = () => {
|
||||
|
||||
@ -1,7 +1,9 @@
|
||||
import React, { useCallback, useEffect, useState } from 'react';
|
||||
import { useLocation } from 'react-router-dom';
|
||||
import { t } from '@lingui/macro';
|
||||
import { RolesAPI, TeamsAPI, UsersAPI } from '../../api';
|
||||
import { RolesAPI, TeamsAPI, UsersAPI } from 'api';
|
||||
import { getQSConfig, parseQueryString } from 'util/qs';
|
||||
import useRequest, { useDeleteItems } from 'util/useRequest';
|
||||
import AddResourceRole from '../AddRole/AddResourceRole';
|
||||
import AlertModal from '../AlertModal';
|
||||
import DataListToolbar from '../DataListToolbar';
|
||||
@ -10,8 +12,6 @@ import PaginatedTable, {
|
||||
HeaderCell,
|
||||
ToolbarAddButton,
|
||||
} from '../PaginatedTable';
|
||||
import { getQSConfig, parseQueryString } from '../../util/qs';
|
||||
import useRequest, { useDeleteItems } from '../../util/useRequest';
|
||||
import DeleteRoleConfirmationModal from './DeleteRoleConfirmationModal';
|
||||
import ResourceAccessListItem from './ResourceAccessListItem';
|
||||
import ErrorDetail from '../ErrorDetail';
|
||||
|
||||
@ -1,13 +1,12 @@
|
||||
import React from 'react';
|
||||
import { act } from 'react-dom/test-utils';
|
||||
import { createMemoryHistory } from 'history';
|
||||
import { OrganizationsAPI, TeamsAPI, UsersAPI, RolesAPI } from 'api';
|
||||
import {
|
||||
mountWithContexts,
|
||||
waitForElement,
|
||||
} from '../../../testUtils/enzymeHelpers';
|
||||
|
||||
import { OrganizationsAPI, TeamsAPI, UsersAPI, RolesAPI } from '../../api';
|
||||
|
||||
import ResourceAccessList from './ResourceAccessList';
|
||||
|
||||
jest.mock('../../api');
|
||||
|
||||
@ -6,9 +6,9 @@ import { Chip } from '@patternfly/react-core';
|
||||
import { Tr, Td } from '@patternfly/react-table';
|
||||
import { Link } from 'react-router-dom';
|
||||
|
||||
import { AccessRecord } from 'types';
|
||||
import ChipGroup from '../ChipGroup';
|
||||
import { DetailList, Detail } from '../DetailList';
|
||||
import { AccessRecord } from '../../types';
|
||||
|
||||
function ResourceAccessListItem({ accessRecord, onRoleDelete }) {
|
||||
ResourceAccessListItem.propTypes = {
|
||||
|
||||
@ -10,13 +10,13 @@ import {
|
||||
useParams,
|
||||
} from 'react-router-dom';
|
||||
import { CaretLeftIcon } from '@patternfly/react-icons';
|
||||
import { SchedulesAPI } from 'api';
|
||||
import useRequest from 'util/useRequest';
|
||||
import RoutedTabs from '../RoutedTabs';
|
||||
import ContentError from '../ContentError';
|
||||
import ContentLoading from '../ContentLoading';
|
||||
import ScheduleDetail from './ScheduleDetail';
|
||||
import ScheduleEdit from './ScheduleEdit';
|
||||
import { SchedulesAPI } from '../../api';
|
||||
import useRequest from '../../util/useRequest';
|
||||
|
||||
function Schedule({
|
||||
setBreadcrumb,
|
||||
|
||||
Some files were not shown because too many files have changed in this diff Show More
Loading…
x
Reference in New Issue
Block a user