Skip to content

Commit 8702f92

Browse files
authored
Merge pull request #4 from coolusaHD/main
Added the ability to assign an `id` to the underlying button
2 parents f69298a + c2a258d commit 8702f92

5 files changed

Lines changed: 20 additions & 13 deletions

File tree

assets/index.cjs.js

Lines changed: 10 additions & 10 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

package.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
{
22
"name": "react-dark-mode-toggle-2",
3-
"version": "2.0.7",
3+
"version": "2.0.8",
44
"description": "An updated, cute dark mode toggle button for React.",
55
"module": "dist/index.es.js",
66
"types": "dist/index.d.ts",

src/dev.tsx

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -79,6 +79,7 @@ function LocalDevelopment() {
7979
onClick={onToggleClick}
8080
aria-hidden="true"
8181
style={{ display: isLottiePlayerMounted ? "block" : "none" }}
82+
id="dark-mode-toggle"
8283
>
8384
<LottiePlayerLight
8485
loop={false}

src/index.stories.tsx

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -26,6 +26,7 @@ const Template: Storybook.Story<Omit<DarkModeToggle.Props, "onChange">> = (props
2626
<DarkModeToggle
2727
{...props}
2828
isDarkMode={isDarkMode}
29+
id="dark-mode-toggle"
2930
onChange={(isDarkMode) => {
3031
action("onChange")({ isDarkMode });
3132
console.log("onChange called:", { isDarkMode });

src/index.tsx

Lines changed: 7 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -22,14 +22,17 @@ export declare namespace DarkModeToggle {
2222

2323
/** Optional className prop for the <button/> element (default = "") */
2424
readonly className?: string;
25+
26+
/** Allow optional id prop */
27+
readonly id?: string;
2528
};
2629
}
2730

2831
const lightToDarkSegment: AnimationSegment = [5, 50];
2932
const darkToLightSegment: AnimationSegment = [50, 95];
3033

3134
export const DarkModeToggle = React.memo<DarkModeToggle.Props>(
32-
({ isDarkMode, onChange, size = 85, speed = 1.3, className = "" }) => {
35+
({ isDarkMode, onChange, size = 85, speed = 1.3, className = "", id = "" }) => {
3336
const [sizeValue, sizeUnit] = parseUnit(size);
3437
const [segments, setSegments] = React.useState<AnimationSegment>([0, 0]);
3538
const [goTo] = React.useState(isDarkMode ? darkToLightSegment[0] : lightToDarkSegment[0]);
@@ -55,6 +58,7 @@ export const DarkModeToggle = React.memo<DarkModeToggle.Props>(
5558
onClick={onToggleClick}
5659
aria-hidden="true"
5760
className={cx(buttonStyles(sizeValue, sizeUnit), className)}
61+
id={id}
5862
>
5963
<LottiePlayerLight
6064
className={playerStyles(isLottiePlayerMounted, sizeValue, sizeUnit)}
@@ -79,7 +83,8 @@ function arePropsEqual(prevProps: DarkModeToggle.Props, nextProps: DarkModeToggl
7983
prevProps.size === nextProps.size &&
8084
prevProps.isDarkMode === nextProps.isDarkMode &&
8185
prevProps.speed === nextProps.speed &&
82-
prevProps.className === nextProps.className
86+
prevProps.className === nextProps.className &&
87+
prevProps.id === nextProps.id
8388
);
8489
}
8590

0 commit comments

Comments
 (0)