()
| 217 | } |
| 218 | |
| 219 | render() { |
| 220 | const { cssModule, slide, className, dark, fade } = this.props; |
| 221 | const attributes = omit(this.props, propsToOmit); |
| 222 | const outerClasses = mapToCssModules( |
| 223 | classNames( |
| 224 | className, |
| 225 | 'carousel', |
| 226 | fade && 'carousel-fade', |
| 227 | slide && 'slide', |
| 228 | dark && 'carousel-dark', |
| 229 | ), |
| 230 | cssModule, |
| 231 | ); |
| 232 | |
| 233 | const innerClasses = mapToCssModules( |
| 234 | classNames('carousel-inner'), |
| 235 | cssModule, |
| 236 | ); |
| 237 | |
| 238 | // filter out booleans, null, or undefined |
| 239 | const children = this.props.children.filter( |
| 240 | (child) => |
| 241 | child !== null && child !== undefined && typeof child !== 'boolean', |
| 242 | ); |
| 243 | |
| 244 | const slidesOnly = children.every((child) => child.type === CarouselItem); |
| 245 | |
| 246 | // Rendering only slides |
| 247 | if (slidesOnly) { |
| 248 | return ( |
| 249 | <div |
| 250 | {...attributes} |
| 251 | className={outerClasses} |
| 252 | onMouseEnter={this.hoverStart} |
| 253 | onMouseLeave={this.hoverEnd} |
| 254 | > |
| 255 | <CarouselContext.Provider value={this.getContextValue()}> |
| 256 | {this.renderItems(children, innerClasses)} |
| 257 | </CarouselContext.Provider> |
| 258 | </div> |
| 259 | ); |
| 260 | } |
| 261 | |
| 262 | // Rendering slides and controls |
| 263 | if (children[0] instanceof Array) { |
| 264 | const carouselItems = children[0]; |
| 265 | const controlLeft = children[1]; |
| 266 | const controlRight = children[2]; |
| 267 | |
| 268 | return ( |
| 269 | <div |
| 270 | {...attributes} |
| 271 | className={outerClasses} |
| 272 | onMouseEnter={this.hoverStart} |
| 273 | onMouseLeave={this.hoverEnd} |
| 274 | > |
| 275 | <CarouselContext.Provider value={this.getContextValue()}> |
| 276 | {this.renderItems(carouselItems, innerClasses)} |
nothing calls this directly
no test coverage detected