mirror of
https://github.com/grafana/grafana.git
synced 2025-08-02 03:12:13 +08:00

* i18n: removes useTranslate hook * chore: fix duplicate imports * chore: fix import sorting and hook dependencies
35 lines
1.1 KiB
TypeScript
35 lines
1.1 KiB
TypeScript
import { useState } from 'react';
|
|
import * as React from 'react';
|
|
|
|
import { t } from '@grafana/i18n';
|
|
import { Collapse, Space } from '@grafana/ui';
|
|
|
|
import { selectors } from '../../e2e/selectors';
|
|
import { AzureMonitorResource } from '../../types';
|
|
|
|
export interface ResourcePickerProps<T> {
|
|
resources: T[];
|
|
onChange: (resources: T[]) => void;
|
|
renderAdvanced: (resources: T[], onChange: (resources: T[]) => void) => React.ReactNode;
|
|
}
|
|
|
|
const AdvancedMulti = ({ resources, onChange, renderAdvanced }: ResourcePickerProps<string | AzureMonitorResource>) => {
|
|
const [isAdvancedOpen, setIsAdvancedOpen] = useState(!!resources.length && JSON.stringify(resources).includes('$'));
|
|
|
|
return (
|
|
<div data-testid={selectors.components.queryEditor.resourcePicker.advanced.collapse}>
|
|
<Collapse
|
|
collapsible
|
|
label={t('components.advanced-multi.label-advanced', 'Advanced')}
|
|
isOpen={isAdvancedOpen}
|
|
onToggle={() => setIsAdvancedOpen(!isAdvancedOpen)}
|
|
>
|
|
{renderAdvanced(resources, onChange)}
|
|
<Space v={2} />
|
|
</Collapse>
|
|
</div>
|
|
);
|
|
};
|
|
|
|
export default AdvancedMulti;
|