Minor progress on fixing no-implicit any issues

This commit is contained in:
Torkel Ödegaard
2019-03-19 18:24:09 +01:00
parent a1a60ceae0
commit 42c87141a5
19 changed files with 75 additions and 92 deletions

View File

@@ -1,4 +1,4 @@
import React, { FC } from 'react';
import React, { FC, CSSProperties } from 'react';
import Transition, { ExitHandler } from 'react-transition-group/Transition';
interface Props {
@@ -10,12 +10,12 @@ interface Props {
}
export const FadeIn: FC<Props> = props => {
const defaultStyle = {
const defaultStyle: CSSProperties = {
transition: `opacity ${props.duration}ms linear`,
opacity: 0,
};
const transitionStyles = {
const transitionStyles: { [str: string]: CSSProperties } = {
exited: { opacity: 0, display: 'none' },
entering: { opacity: 0 },
entered: { opacity: 1 },

View File

@@ -1,4 +1,4 @@
import React from 'react';
import React, { CSSProperties, FC } from 'react';
import Transition from 'react-transition-group/Transition';
interface Style {
@@ -16,11 +16,18 @@ export const defaultStyle: Style = {
overflow: 'hidden',
};
export default ({ children, in: inProp, maxHeight = defaultMaxHeight, style = defaultStyle }) => {
export interface Props {
children: React.ReactNode;
in: boolean;
maxHeight?: number;
style?: CSSProperties;
}
export const SlideDown: FC<Props> = ({ children, in: inProp, maxHeight = defaultMaxHeight, style = defaultStyle }) => {
// There are 4 main states a Transition can be in:
// ENTERING, ENTERED, EXITING, EXITED
// https://reactcommunity.org/react-transition-group/
const transitionStyles = {
// https://reactcommunity.or[g/react-transition-group/
const transitionStyles: { [str: string]: CSSProperties } = {
exited: { maxHeight: 0 },
entering: { maxHeight: maxHeight },
entered: { maxHeight: 'unset', overflow: 'visible' },
@@ -34,6 +41,7 @@ export default ({ children, in: inProp, maxHeight = defaultMaxHeight, style = de
style={{
...style,
...transitionStyles[state],
inProp,
}}
>
{children}

View File

@@ -11,10 +11,10 @@ interface Props {
}
export class CopyToClipboard extends PureComponent<Props> {
clipboardjs: any;
clipboardjs: ClipboardJS;
myRef: any;
constructor(props) {
constructor(props: Props) {
super(props);
this.myRef = React.createRef();
}

View File

@@ -1,5 +1,5 @@
import React from 'react';
import renderer from 'react-test-renderer';
import { shallow } from 'enzyme';
import EmptyListCTA from './EmptyListCTA';
const model = {
@@ -16,7 +16,7 @@ const model = {
describe('EmptyListCTA', () => {
it('renders correctly', () => {
const tree = renderer.create(<EmptyListCTA model={model} />).toJSON();
const tree = shallow(<EmptyListCTA model={model} />);
expect(tree).toMatchSnapshot();
});
});

View File

@@ -1,5 +1,4 @@
import React, { PureComponent, createRef } from 'react';
// import JSONFormatterJS, { JSONFormatterConfiguration } from 'json-formatter-js';
import { JsonExplorer } from 'app/core/core'; // We have made some monkey-patching of json-formatter-js so we can't switch right now
interface Props {

View File

@@ -1,7 +1,8 @@
import _ from 'lodash';
import coreModule from '../../core_module';
import { ISCEService, IQService } from 'angular';
function typeaheadMatcher(this: any, item) {
function typeaheadMatcher(this: any, item: string) {
let str = this.query;
if (str === '') {
return true;
@@ -16,8 +17,8 @@ function typeaheadMatcher(this: any, item) {
}
export class FormDropdownCtrl {
inputElement: any;
linkElement: any;
inputElement: JQLite;
linkElement: JQLite;
model: any;
display: any;
text: any;
@@ -37,7 +38,13 @@ export class FormDropdownCtrl {
debounce: number;
/** @ngInject */
constructor(private $scope, $element, private $sce, private templateSrv, private $q) {
constructor(
private $scope: any,
$element: JQLite,
private $sce: ISCEService,
private templateSrv: any,
private $q: IQService
) {
this.inputElement = $element.find('input').first();
this.linkElement = $element.find('a').first();
this.linkMode = true;
@@ -99,7 +106,7 @@ export class FormDropdownCtrl {
}
}
getOptionsInternal(query) {
getOptionsInternal(query: string) {
const result = this.getOptions({ $query: query });
if (this.isPromiseLike(result)) {
return result;
@@ -107,7 +114,7 @@ export class FormDropdownCtrl {
return this.$q.when(result);
}
isPromiseLike(obj) {
isPromiseLike(obj: any) {
return obj && typeof obj.then === 'function';
}
@@ -117,7 +124,7 @@ export class FormDropdownCtrl {
} else {
// if we have text use it
if (this.lookupText) {
this.getOptionsInternal('').then(options => {
this.getOptionsInternal('').then((options: any) => {
const item = _.find(options, { value: this.model });
this.updateDisplay(item ? item.text : this.model);
});
@@ -127,12 +134,12 @@ export class FormDropdownCtrl {
}
}
typeaheadSource(query, callback) {
this.getOptionsInternal(query).then(options => {
typeaheadSource(query: string, callback: (res: any) => void) {
this.getOptionsInternal(query).then((options: any) => {
this.optionCache = options;
// extract texts
const optionTexts = _.map(options, op => {
const optionTexts = _.map(options, (op: any) => {
return _.escape(op.text);
});
@@ -147,7 +154,7 @@ export class FormDropdownCtrl {
});
}
typeaheadUpdater(text) {
typeaheadUpdater(text: string) {
if (text === this.text) {
clearTimeout(this.cancelBlur);
this.inputElement.focus();
@@ -159,7 +166,7 @@ export class FormDropdownCtrl {
return text;
}
switchToLink(fromClick) {
switchToLink(fromClick: boolean) {
if (this.linkMode && !fromClick) {
return;
}
@@ -178,7 +185,7 @@ export class FormDropdownCtrl {
this.cancelBlur = setTimeout(this.switchToLink.bind(this), 200);
}
updateValue(text) {
updateValue(text: string) {
text = _.unescape(text);
if (text === '' || this.text === text) {
@@ -214,7 +221,7 @@ export class FormDropdownCtrl {
});
}
updateDisplay(text) {
updateDisplay(text: string) {
this.text = text;
this.display = this.$sce.trustAsHtml(this.templateSrv.highlightVariablesAsHtml(text));
}

View File

@@ -232,7 +232,7 @@ export class JsonExplorer {
// some pretty handling of number arrays
if (this.isNumberArray()) {
this.json.forEach((val, index) => {
this.json.forEach((val: any, index: number) => {
if (index > 0) {
arrayWrapperSpan.appendChild(createElement('span', 'array-comma', ','));
}

View File

@@ -16,7 +16,7 @@ export class LayoutSelectorCtrl {
mode: string;
/** @ngInject */
constructor(private $rootScope) {
constructor(private $rootScope: any) {
this.mode = store.get('grafana.list.layout.mode') || 'grid';
}
@@ -46,18 +46,18 @@ export function layoutSelector() {
}
/** @ngInject */
export function layoutMode($rootScope) {
export function layoutMode($rootScope: any) {
return {
restrict: 'A',
scope: {},
link: (scope, elem) => {
link: (scope: any, elem: any) => {
const layout = store.get('grafana.list.layout.mode') || 'grid';
let className = 'card-list-layout-' + layout;
elem.addClass(className);
$rootScope.onAppEvent(
'layout-mode-changed',
(evt, newLayout) => {
(evt: any, newLayout: any) => {
elem.removeClass(className);
className = 'card-list-layout-' + newLayout;
elem.addClass(className);