import * as React from "react";
import {
SearchkitComponent,
SearchkitComponentProps,
ReactComponentType
} from "../../../../core"
const defaults = require("lodash/defaults")
const get = require("lodash/get")
const identity = require("lodash/identity")
export interface HitsStatsDisplayProps {
bemBlocks:{container:Function}
resultsFoundLabel: string
timeTaken:string
hitsCount:string|number
translate:Function
}
const HitsStatsDisplay = (props:HitsStatsDisplayProps) => {
const {resultsFoundLabel, bemBlocks} = props
return (
)
}
export interface HitsStatsProps extends SearchkitComponentProps {
component?: ReactComponentType
countFormatter?:(count:number)=> number | string
}
export class HitsStats extends SearchkitComponent {
static translations:any = {
"hitstats.results_found":"{hitCount} results found in {timeTaken}ms"
}
translations = HitsStats.translations
static propTypes = defaults({
translations:SearchkitComponent.translationsPropType(
HitsStats.translations
),
countFormatter:React.PropTypes.func
}, SearchkitComponent.propTypes)
static defaultProps = {
component: HitsStatsDisplay,
countFormatter:identity
}
defineBEMBlocks() {
return {
container: (this.props.mod || "sk-hits-stats")
}
}
render() {
const timeTaken = this.searchkit.getTime()
const {countFormatter} = this.props
const hitsCount = countFormatter(this.searchkit.getHitsCount())
const props:HitsStatsDisplayProps = {
bemBlocks:this.bemBlocks,
translate:this.translate,
timeTaken: timeTaken,
hitsCount: hitsCount,
resultsFoundLabel: this.translate("hitstats.results_found", {
timeTaken:timeTaken,
hitCount:hitsCount
})
}
return React.createElement(this.props.component, props)
}
}