Incorporating a CSS Module into a conditional statement

Consider the following HTML structure

<div className={
   `${style.cell} 
      ${cell === Player.Black ? "black" : cell === Player.White ? "white" : ""}`} key={colIndex}/>

Along with the associated CSS styles

.cell {
  width: 30px;
  height: 30px;
  border: 1px solid #000;
  background-color: burlywood;
  cursor: pointer;
}
  
.black {
  background-color: #000;
  color: white;
  text-align: center;
  font-weight: bolder;
}
  
.white {
  background-color: #fff;
  color: black;
  text-align: center;
  font-weight: bolder;
}

Is there a way to reference the .cell.black and .cell.white classes within the conditional statement using style... like you would if className was

{`cell ${cell === Player.Black ? "black" : cell === Player.White ? "white" : ""}`}

even when they are not stored inside a module (e.g.

import style from './Game.module.css'
)?

Answer №1

If you're looking for options, take a look at the following examples:

<div className={`${cell === Player.Black? style.cell + " black" : cell === Player.White ? style.cell + " white" : style.cell}`} key={colIndex}/>

Alternatively, you could create a function to generate a CSS string like this:

const getCellStyle = () => { return

cell ${cell === Player.Black ? " black" : cell === Player.White ? " white" : ""}
}

<div className={getCellStyle} key={colIndex}/>

Answer №2

This successfully fulfilled my requirements while also maintaining the characteristics of .cell

className={`${style.cell} ${cell === Player.Black ? style.black: cell === Player.White ? style.white : ""}`}

Similar questions

If you have not found the answer to your question or you are interested in this topic, then look at other similar questions below or use the search

Enable the Angular button only when the radio button has been selected

Just starting out with Angular and I have a query. This is a scenario for my project at work. https://i.stack.imgur.com/R3SxA.png In this screenshot, I want to enable the "ajouter" button when at least one radio button is selected in the secure chest (s ...

Trouble with search box images on Internet Explorer causing confusion

Here is the searchbox image displayed: With this code and css styling: #searchcontainer { margin: 40px 0 0 0; } .search { float: right; margin: 0; padding: 0; height: 21px; width: 310px; } .search input, .search button { mar ...

Discovering ways to align specific attributes of objects or target specific components within arrays

I am trying to compare objects with specific properties or arrays with certain elements using the following code snippet: However, I encountered a compilation error. Can anyone help me troubleshoot this issue? type Pos = [number, number] type STAR = &quo ...

Ways to identify when a person has scrolled a specific distance

Is it possible to modify the appearance of my top navigation bar once the page has been scrolled a specific number of pixels? I assume this requires some sort of listener to track the amount of scrolling. I came across element.scrollTop, but it doesn' ...

Filtering data in an antd table by searching

Just starting out with React hooks, specifically using TypeScript, and I'm struggling to implement a search filter with two parameters. Currently, the search filter is only working with one parameter which is 'receiver?.name?'. However, I wo ...

"Customizing the template of the Angular Material 2 datepicker: A step-by-step

Looking to make changes to the templates of the angular 2 material date-picker? These templates are located within various internal components in @angular/material/esm5/datepicker.es5.js. One option is to directly modify the template in the node package, ...

Innovative react route

Currently, I am in the process of learning about dynamic react routes. In the code example I am working on, there are different buttons for each task. The goal is to render the WorkDetails component when a button is clicked. However, it seems to not be fun ...

Displaying selected list item while concealing the original

I have a dropdown menu with several options. What I am looking for is to have it so that when we click on the drop down, a list of choices appears. Then, when we select an option from the dropdown, the original selection should be replaced with the one th ...

I am experiencing issues with the social login feature in NextAuth after implementing autoprefixer

Does anyone understand the meaning of this error message and how to debug it? React dev tools don't seem to help as the states vanish when this message appears: Server Error TypeError: Cannot destructure property 'id' of 'undefined&apos ...

Easily automate button clicks on a new tab website

Seeking assistance below, following codes are sourced from "example.com" as assumed: <a href="http://www.example.org" target="vo1" onclick="gp(1)" rel="nofollow">Click Me</a> Upon clicking on ...

Issue with Typescript Conditional Type not being functional in a function parameter

For a specific use-case, I am looking to conditionally add a key to an interface. In attempting to achieve this, I used the following code: key: a extends b ? keyValue : never However, this approach breaks when a is generic and also necessitates explicit ...

Utilize npm to compile TypeScript files as part of the npm build script execution

I am in the process of creating a build script using only npm, without relying on grunt or gulp. Most aspects are functioning well except for concatenating typescript files. While I can compile individual typescript files successfully, I am faced with th ...

Enhance your website's user experience with jQuery by implementing smooth scrolling alongside

I have a fixed header at the top of my page. When it scrolls, I want to ensure that it does not cover or hide any of my content, especially the top portion of the section. // This code enables smooth scrolling (source: css-tricks) $('a[href*="#"]:no ...

What is the best way to retrieve access to my container/store from this main file?

As a beginner in React/Redux, I am facing an issue where everything works fine in Redux when testing it. However, I am struggling to integrate it into my actual application. I believe that I need to use connect(), but I am unsure of how or where to imple ...

Adding an id to a ul tag using JavaScript

I am trying to dynamically add an ID called "myMenu" using JavaScript to a ul element for a search filter. Unfortunately, I am unable to directly access the ul tag to change it, so I need to do it via JavaScript. As I am new to JavaScript, I am looking t ...

ERROR: Unable to call function getTime in Typescript

While working on my function in Typescript, I encountered an issue with two sets of data in the database - date and time, both expecting strings. When users select a date, I trigger a POST request to set the time for them. To handle this scenario, I creat ...

Having trouble with the WordPress style file not functioning properly

I'm currently facing an issue while trying to upload a CSS file and a JavaScript file to a custom theme on WordPress. When I open the webpage, nothing appears and there are no elements displayed. However, when I delete the functions.php file, the webp ...

Organizing Angular models and interfaces

The Angular styleguide provides best practices for using classes and interfaces in applications, but it does not offer guidance on organizing interfaces and model classes. One common question that arises is: what are the best practices for organizing file ...

Tips for keeping notification icons in the upper right corner of the box?

I am facing an issue with absolute positioning where the notification icons I've positioned to the top-right corner of a box are moving away when the screen size changes. Desired appearance of the image Actual appearance when screen size is adjusted ...

Guide on setting up a route in Next.js

Recently, I developed a simple feature that enables users to switch between languages on a webpage by adding the language code directly after the URL - i18n-next. Here's a snippet of how it functions: const [languages, ] = React.useState([{ langua ...