Skip to content

Commit

Permalink
refactor(types): rename interfaces
Browse files Browse the repository at this point in the history
  • Loading branch information
plumdumpling committed Aug 8, 2023
1 parent 63a7a93 commit cd0884f
Show file tree
Hide file tree
Showing 9 changed files with 57 additions and 61 deletions.
32 changes: 16 additions & 16 deletions src/Geosuggest.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -9,32 +9,32 @@ import filterInputAttributes from './filter-input-attributes';

import Input from './input';
import SuggestList from './suggest-list';
import ISuggest from './types/suggest';
import IProps from './types/props';
import ILocation from './types/location';
import Suggest from './types/suggest';
import Props from './types/props';
import Location from './types/location';

// Escapes special characters in user input for regex
function escapeRegExp(str: string): string {
return str.replace(/[\-\[\]\/\{\}\(\)\*\+\?\.\\\^\$\|]/g, '\\$&');
}

interface IState {
interface State {
readonly isSuggestsHidden: boolean;
readonly isLoading: boolean;
readonly ignoreBlur: boolean;
readonly userInput: string;
readonly activeSuggest: null | ISuggest;
readonly suggests: ISuggest[];
readonly activeSuggest: null | Suggest;
readonly suggests: Suggest[];
}

/**
* Entry point for the Geosuggest component
*/
export default class GeoSuggest extends React.Component<IProps, IState> {
export default class GeoSuggest extends React.Component<Props, State> {
/**
* Default values for the properties
*/
static defaultProps: IProps = defaults;
static defaultProps: Props = defaults;

/**
* The Google Map instance
Expand Down Expand Up @@ -89,7 +89,7 @@ export default class GeoSuggest extends React.Component<IProps, IState> {
* The constructor. Sets the initial state.
*/
// eslint-disable-next-line max-statements
constructor(props: IProps) {
constructor(props: Props) {
super(props);

this.state = {
Expand Down Expand Up @@ -127,7 +127,7 @@ export default class GeoSuggest extends React.Component<IProps, IState> {
/**
* Change inputValue if prop changes
*/
componentDidUpdate(prevProps: IProps): void {
componentDidUpdate(prevProps: Props): void {
if (prevProps.initialValue !== this.props.initialValue) {
this.setState({userInput: this.props.initialValue || ''});
}
Expand Down Expand Up @@ -348,7 +348,7 @@ export default class GeoSuggest extends React.Component<IProps, IState> {
// eslint-disable-next-line @typescript-eslint/explicit-function-return-type, @typescript-eslint/no-empty-function
callback: () => void = () => {}
): void {
const suggests: ISuggest[] = [];
const suggests: Suggest[] = [];
const {userInput} = this.state;
const {skipSuggest, maxFixtures, fixtures} = this.props;
const regex = new RegExp(escapeRegExp(userInput), 'gim');
Expand Down Expand Up @@ -406,7 +406,7 @@ export default class GeoSuggest extends React.Component<IProps, IState> {
/**
* Return the new activeSuggest object after suggests have been updated
*/
updateActiveSuggest(suggests: ISuggest[] = []): ISuggest | null {
updateActiveSuggest(suggests: Suggest[] = []): Suggest | null {
let activeSuggest = this.state.activeSuggest;

if (activeSuggest) {
Expand Down Expand Up @@ -487,8 +487,8 @@ export default class GeoSuggest extends React.Component<IProps, IState> {
* When an item got selected
*/
// eslint-disable-next-line complexity
selectSuggest(suggestToSelect: ISuggest | null): void {
let suggest: ISuggest = suggestToSelect || {
selectSuggest(suggestToSelect: Suggest | null): void {
let suggest: Suggest = suggestToSelect || {
isFixture: true,
label: this.state.userInput,
placeId: this.state.userInput
Expand All @@ -513,7 +513,7 @@ export default class GeoSuggest extends React.Component<IProps, IState> {
if (suggest.location) {
this.setState({ignoreBlur: false});
if (this.props.onSuggestSelect) {
this.props.onSuggestSelect(suggest as ILocation);
this.props.onSuggestSelect(suggest as Location);
}
return;
}
Expand All @@ -524,7 +524,7 @@ export default class GeoSuggest extends React.Component<IProps, IState> {
/**
* Geocode a suggest
*/
geocodeSuggest(suggestToGeocode: ISuggest): void {
geocodeSuggest(suggestToGeocode: Suggest): void {
if (!this.geocoder) {
return;
}
Expand Down
4 changes: 2 additions & 2 deletions src/filter-input-attributes.ts
Original file line number Diff line number Diff line change
Expand Up @@ -69,14 +69,14 @@ const allowedAttributes: string[] = [

/* eslint-disable @typescript-eslint/no-explicit-any */

interface IProps {
interface Props {
[key: string]: any;
}

/**
* Filter the properties for only allowed input properties
*/
export default function (props: IProps): {[key: string]: any} {
export default function (props: Props): {[key: string]: any} {
const attributes: {[key: string]: any} = {};

Object.keys(props).forEach((attribute) => {
Expand Down
12 changes: 6 additions & 6 deletions src/input.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -2,9 +2,9 @@ import * as React from 'react';
import classnames from 'classnames';

import filterInputAttributes from './filter-input-attributes';
import ISuggest from './types/suggest';
import Suggest from './types/suggest';

interface IProps {
interface Props {
readonly value: string;
readonly className?: string;
readonly id?: string;
Expand All @@ -15,7 +15,7 @@ interface IProps {
readonly style?: any;
readonly autoComplete?: string;
readonly isSuggestsHidden: boolean;
readonly activeSuggest: ISuggest | null;
readonly activeSuggest: Suggest | null;
readonly listId: string;
readonly label?: string;
readonly inputType: string;
Expand All @@ -33,12 +33,12 @@ interface IProps {
/**
* The input field
*/
export default class Input extends React.PureComponent<IProps, unknown> {
export default class Input extends React.PureComponent<Props, unknown> {
/* eslint-disable @typescript-eslint/no-empty-function */
/**
* Default values for the properties
*/
static defaultProps: IProps = {
static defaultProps: Props = {
activeSuggest: null,
autoComplete: 'off',
className: '',
Expand Down Expand Up @@ -66,7 +66,7 @@ export default class Input extends React.PureComponent<IProps, unknown> {
/**
* The constructor.
*/
constructor(props: IProps) {
constructor(props: Props) {
super(props);

this.onChange = this.onChange.bind(this);
Expand Down
21 changes: 9 additions & 12 deletions src/suggest-item.tsx
Original file line number Diff line number Diff line change
@@ -1,20 +1,20 @@
import * as React from 'react';
import classnames from 'classnames';
import ISuggest from './types/suggest';
import Suggest from './types/suggest';

interface IProps {
interface Props {
readonly userInput: string;
readonly isActive: boolean;
readonly className: string;
readonly suggestItemClassName?: string;
readonly activeClassName?: string;
readonly suggest: ISuggest;
readonly suggest: Suggest;
readonly isHighlightMatch: boolean;
// eslint-disable-next-line @typescript-eslint/no-explicit-any
readonly style: any;
readonly onSelect: (suggest: ISuggest) => void;
readonly onSelect: (suggest: Suggest) => void;
readonly renderSuggestItem?: (
suggest: ISuggest,
suggest: Suggest,
userInput: string
) => JSX.Element | string;
readonly onMouseDown: (event: React.MouseEvent) => void;
Expand All @@ -24,7 +24,7 @@ interface IProps {
/**
* A single Geosuggest item in the list
*/
export default class SuggestItem extends React.PureComponent<IProps, unknown> {
export default class SuggestItem extends React.PureComponent<Props, unknown> {
/**
* The reference to the suggest element
*/
Expand All @@ -33,7 +33,7 @@ export default class SuggestItem extends React.PureComponent<IProps, unknown> {
/**
* The constructor.
*/
constructor(props: IProps) {
constructor(props: Props) {
super(props);

this.onClick = this.onClick.bind(this);
Expand All @@ -53,10 +53,7 @@ export default class SuggestItem extends React.PureComponent<IProps, unknown> {
/**
* Replace matched text with the same in bold
*/
formatMatchedText(
userInput: string,
suggest: ISuggest
): JSX.Element | string {
formatMatchedText(userInput: string, suggest: Suggest): JSX.Element | string {
if (!userInput || !suggest.matchedSubstrings) {
return suggest.label;
}
Expand Down Expand Up @@ -91,7 +88,7 @@ export default class SuggestItem extends React.PureComponent<IProps, unknown> {
/**
* Checking if item just became active and scrolling if needed.
*/
componentDidUpdate(prevProps: IProps): void {
componentDidUpdate(prevProps: Props): void {
if (!prevProps.isActive && this.props.isActive) {
this.scrollIfNeeded();
}
Expand Down
16 changes: 8 additions & 8 deletions src/suggest-list.tsx
Original file line number Diff line number Diff line change
@@ -1,16 +1,16 @@
import * as React from 'react';
import classnames from 'classnames';
import SuggestItem from './suggest-item';
import ISuggest from './types/suggest';
import Suggest from './types/suggest';

interface IProps {
interface Props {
readonly isHidden: boolean;
readonly suggests: ISuggest[];
readonly suggests: Suggest[];
readonly suggestsClassName?: string;
readonly hiddenClassName?: string;
readonly suggestItemClassName?: string;
readonly suggestItemActiveClassName?: string;
readonly activeSuggest: ISuggest | null;
readonly activeSuggest: Suggest | null;
// eslint-disable-next-line @typescript-eslint/no-explicit-any
readonly style: any;
// eslint-disable-next-line @typescript-eslint/no-explicit-any
Expand All @@ -21,18 +21,18 @@ interface IProps {
readonly listLabel: string;
readonly onSuggestNoResults: () => void;
readonly renderSuggestItem?: (
suggest: ISuggest,
suggest: Suggest,
userInput: string
) => JSX.Element | string;
readonly onSuggestSelect: (suggest: ISuggest) => void;
readonly onSuggestSelect: (suggest: Suggest) => void;
readonly onSuggestMouseDown: (event: React.MouseEvent) => void;
readonly onSuggestMouseOut: (event: React.MouseEvent) => void;
}

/**
* The list with suggestions.
*/
export default class SuggestList extends React.PureComponent<IProps, unknown> {
export default class SuggestList extends React.PureComponent<Props, unknown> {
/**
* Whether or not it is hidden
*/
Expand All @@ -43,7 +43,7 @@ export default class SuggestList extends React.PureComponent<IProps, unknown> {
/**
* There are new properties available for the list
*/
componentDidUpdate(prevProps: IProps): void {
componentDidUpdate(prevProps: Props): void {
if (prevProps.suggests !== this.props.suggests) {
if (this.props.suggests.length === 0) {
this.props.onSuggestNoResults();
Expand Down
2 changes: 1 addition & 1 deletion src/types/fixture.d.ts
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
/**
* The fixture interface
*/
export default interface IFixture {
export default interface Fixture {
readonly label: string;
readonly placeId?: string;
readonly location?: {
Expand Down
7 changes: 3 additions & 4 deletions src/types/location.d.ts
Original file line number Diff line number Diff line change
@@ -1,13 +1,12 @@
import ISuggest from './suggest';
import Suggest from './suggest';

/**
* The suggest interface
*/
type ILocation = ISuggest & {
export default interface Location extends Suggest {
readonly location: {
lat: number;
lng: number;
};
readonly gmaps?: google.maps.GeocoderResult | google.maps.places.PlaceResult;
};
export default ILocation;
}
22 changes: 11 additions & 11 deletions src/types/props.d.ts
Original file line number Diff line number Diff line change
@@ -1,12 +1,12 @@
import IFixture from './fixture';
import ISuggest from './suggest';
import ILocation from './location';
import Fixture from './fixture';
import Suggest from './suggest';
import Location from './location';

/**
* Prop Types
*/
export default interface IProps {
readonly fixtures?: IFixture[];
export default interface Props {
readonly fixtures?: Fixture[];
readonly maxFixtures?: number;
readonly initialValue?: string;
readonly placeholder?: string;
Expand All @@ -26,25 +26,25 @@ export default interface IProps {
readonly queryDelay?: number;
readonly googleMaps?: any;
readonly highlightMatch?: boolean;
readonly onSuggestSelect?: (suggest?: ILocation) => void;
readonly onSuggestSelect?: (suggest?: Location) => void;
readonly onFocus?: () => void;
readonly onBlur?: (userInput?: string) => void;
readonly onChange?: (value: string) => void;
readonly onKeyDown?: (event: React.KeyboardEvent) => void;
readonly onKeyPress?: (event: React.KeyboardEvent) => void;
readonly onUpdateSuggests?: (
suggests: ISuggest[],
activeSuggest: ISuggest | null
suggests: Suggest[],
activeSuggest: Suggest | null
) => void;
readonly onActivateSuggest?: (suggest: ISuggest | null) => void;
readonly onActivateSuggest?: (suggest: Suggest | null) => void;
readonly onSuggestNoResults?: (userInput: string) => void;
readonly skipSuggest?: (
suggest: IFixture | google.maps.places.AutocompletePrediction
suggest: Fixture | google.maps.places.AutocompletePrediction
) => boolean;
readonly getSuggestLabel?: (
suggest: google.maps.places.AutocompletePrediction
) => string;
readonly renderSuggestItem?: (suggest: ISuggest) => string | JSX.Element;
readonly renderSuggestItem?: (suggest: Suggest) => string | JSX.Element;
readonly autoActivateFirstSuggest?: boolean;
readonly style?: {
input?: any;
Expand Down
2 changes: 1 addition & 1 deletion src/types/suggest.d.ts
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
/**
* The suggest interface
*/
export default interface ISuggest {
export default interface Suggest {
readonly description?: string;
readonly label: string;
readonly placeId: string;
Expand Down

0 comments on commit cd0884f

Please sign in to comment.