Skip to content

Commit 49319e6

Browse files
committed
feat(form): Updated toggle inactive and active colors to be configurable
This also fixes the colors to better match the v1 behavior of having the unchecked/inactive state be the secondary color while only the checked/active state is the secondary theme color.
1 parent b6d2318 commit 49319e6

File tree

5 files changed

+237
-28
lines changed

5 files changed

+237
-28
lines changed

packages/documentation/src/constants/sassdoc/form.ts

Lines changed: 98 additions & 26 deletions
Original file line numberDiff line numberDiff line change
@@ -946,28 +946,43 @@ const sassdoc: PackageSassDoc = {
946946
name: "rmd-toggle-hidden",
947947
description:
948948
"Creates the styles for a form input that should be hidden from view. This should normally be applied to checkbox or radio input types.\n",
949-
source: "packages/form/src/toggle/_mixins.scss#L78-L91",
949+
source: "packages/form/src/toggle/_mixins.scss#L78-L97",
950950
usedBy: [{ name: "react-md-toggle", type: "mixin", packageName: "form" }],
951951
requires: [
952952
{ name: "rmd-input-hidden", type: "mixin", packageName: "form" },
953+
{
954+
name: "rmd-toggle-active-color",
955+
type: "variable",
956+
packageName: "form",
957+
},
958+
{
959+
name: "rmd-toggle-inactive-color",
960+
type: "variable",
961+
packageName: "form",
962+
},
953963
],
954964
packageName: "form",
955965
code: "@mixin rmd-toggle-hidden { … }",
956966
sourceCode:
957-
"@mixin rmd-toggle-hidden {\n @include rmd-input-hidden;\n\n &:checked + .rmd-toggle__icon::before {\n opacity: 0;\n }\n\n &:checked + .rmd-toggle__icon--indeterminate {\n &::before,\n &::after {\n opacity: 1;\n }\n }\n}\n",
967+
"@mixin rmd-toggle-hidden {\n @include rmd-input-hidden;\n\n @if $rmd-toggle-active-color != $rmd-toggle-inactive-color {\n &:checked + .rmd-toggle__icon {\n color: $rmd-toggle-active-color;\n }\n }\n\n &:checked + .rmd-toggle__icon::before {\n opacity: 0;\n }\n\n &:checked + .rmd-toggle__icon--indeterminate {\n &::before,\n &::after {\n opacity: 1;\n }\n }\n}\n",
958968
type: "mixin",
959969
},
960970
"rmd-toggle-icon": {
961971
name: "rmd-toggle-icon",
962972
description:
963973
"Creates the styles for the checkbox and radio input types' icon\n",
964-
source: "packages/form/src/toggle/_mixins.scss#L95-L161",
974+
source: "packages/form/src/toggle/_mixins.scss#L101-L167",
965975
usedBy: [{ name: "react-md-toggle", type: "mixin", packageName: "form" }],
966976
requires: [
967977
{ name: "rmd-icon-theme", type: "mixin", packageName: "icon" },
968-
{ name: "rmd-form-theme", type: "mixin", packageName: "form" },
969978
{ name: "rmd-transition", type: "mixin", packageName: "transition" },
979+
{ name: "rmd-form-theme", type: "mixin", packageName: "form" },
970980
{ name: "rmd-theme", type: "mixin", packageName: "theme" },
981+
{
982+
name: "rmd-toggle-inactive-color",
983+
type: "variable",
984+
packageName: "form",
985+
},
971986
{
972987
name: "rmd-transition-standard-time",
973988
type: "variable",
@@ -982,14 +997,14 @@ const sassdoc: PackageSassDoc = {
982997
packageName: "form",
983998
code: "@mixin rmd-toggle-icon { … }",
984999
sourceCode:
985-
'@mixin rmd-toggle-icon {\n @include rmd-icon-theme(height, size);\n @include rmd-icon-theme(width, size);\n @include rmd-form-theme(color, active-color);\n\n .rmd-icon {\n color: inherit;\n fill: currentColor;\n height: inherit;\n width: inherit;\n }\n\n align-items: center;\n display: inline-flex;\n justify-content: center;\n pointer-events: none;\n position: absolute;\n\n &--overlay {\n &::before {\n @include rmd-transition(standard);\n @include rmd-form-theme(bottom, toggle-inset);\n @include rmd-form-theme(left, toggle-inset);\n @include rmd-form-theme(right, toggle-inset);\n @include rmd-form-theme(top, toggle-inset);\n @include rmd-theme(background-color, background);\n\n content: "";\n opacity: 1;\n position: absolute;\n transition: opacity $rmd-transition-standard-time;\n z-index: 1;\n }\n }\n\n &--indeterminate::after {\n @include rmd-transition(standard);\n @include rmd-form-theme(background-color, active-color);\n @include rmd-form-theme(left, toggle-inset);\n @include rmd-form-theme(right, toggle-inset);\n @include rmd-form-theme(height, indeterminate-height);\n\n content: "";\n opacity: 0;\n position: absolute;\n top: 50%;\n transform: translateY(-50%);\n transition: opacity $rmd-transition-standard-time;\n z-index: 2;\n }\n\n &--circle::before {\n border-radius: $rmd-toggle-border-radius;\n }\n\n &--disabled {\n @include rmd-theme(color, text-disabled-on-background);\n }\n\n &--dense {\n @include rmd-form-theme(bottom, toggle-dense-inset);\n @include rmd-form-theme(left, toggle-dense-inset);\n @include rmd-form-theme(right, toggle-dense-inset);\n @include rmd-form-theme(top, toggle-dense-inset);\n @include rmd-form-theme(height, indeterminate-dense-height);\n }\n}\n',
1000+
'@mixin rmd-toggle-icon {\n @include rmd-icon-theme(height, size);\n @include rmd-icon-theme(width, size);\n\n .rmd-icon {\n color: inherit;\n fill: currentColor;\n height: inherit;\n width: inherit;\n }\n\n align-items: center;\n color: $rmd-toggle-inactive-color;\n display: inline-flex;\n justify-content: center;\n pointer-events: none;\n position: absolute;\n\n &--overlay {\n &::before {\n @include rmd-transition(standard);\n @include rmd-form-theme(bottom, toggle-inset);\n @include rmd-form-theme(left, toggle-inset);\n @include rmd-form-theme(right, toggle-inset);\n @include rmd-form-theme(top, toggle-inset);\n @include rmd-theme(background-color, background);\n\n content: "";\n opacity: 1;\n position: absolute;\n transition: opacity $rmd-transition-standard-time;\n z-index: 1;\n }\n }\n\n &--indeterminate::after {\n @include rmd-transition(standard);\n @include rmd-form-theme(background-color, active-color);\n @include rmd-form-theme(left, toggle-inset);\n @include rmd-form-theme(right, toggle-inset);\n @include rmd-form-theme(height, indeterminate-height);\n\n content: "";\n opacity: 0;\n position: absolute;\n top: 50%;\n transform: translateY(-50%);\n transition: opacity $rmd-transition-standard-time;\n z-index: 2;\n }\n\n &--circle::before {\n border-radius: $rmd-toggle-border-radius;\n }\n\n &--disabled {\n @include rmd-theme(color, text-disabled-on-background);\n }\n\n &--dense {\n @include rmd-form-theme(bottom, toggle-dense-inset);\n @include rmd-form-theme(left, toggle-dense-inset);\n @include rmd-form-theme(right, toggle-dense-inset);\n @include rmd-form-theme(top, toggle-dense-inset);\n @include rmd-form-theme(height, indeterminate-dense-height);\n }\n}\n',
9861001
type: "mixin",
9871002
},
9881003
"rmd-toggle-dense-theme": {
9891004
name: "rmd-toggle-dense-theme",
9901005
description:
9911006
"Updates the checkbox and radio components to have a dense theme by updating the toggle-inset css variable to be the dense version. This should generally be used within media queries.\n",
992-
source: "packages/form/src/toggle/_mixins.scss#L166-L172",
1007+
source: "packages/form/src/toggle/_mixins.scss#L172-L178",
9931008
usedBy: [
9941009
{ name: "rmd-utils-dense", type: "mixin", packageName: "utils" },
9951010
],
@@ -1010,7 +1025,7 @@ const sassdoc: PackageSassDoc = {
10101025
"rmd-switch": {
10111026
name: "rmd-switch",
10121027
description: "Creates the styles for the switch component\n",
1013-
source: "packages/form/src/toggle/_mixins.scss#L176-L196",
1028+
source: "packages/form/src/toggle/_mixins.scss#L182-L202",
10141029
usedBy: [{ name: "react-md-toggle", type: "mixin", packageName: "form" }],
10151030
requires: [
10161031
{ name: "rmd-transition", type: "mixin", packageName: "transition" },
@@ -1062,7 +1077,7 @@ const sassdoc: PackageSassDoc = {
10621077
"rmd-switch-input": {
10631078
name: "rmd-switch-input",
10641079
description: "\n",
1065-
source: "packages/form/src/toggle/_mixins.scss#L200-L247",
1080+
source: "packages/form/src/toggle/_mixins.scss#L206-L253",
10661081
usedBy: [{ name: "react-md-toggle", type: "mixin", packageName: "form" }],
10671082
requires: [
10681083
{ name: "rmd-input-hidden", type: "mixin", packageName: "form" },
@@ -1103,7 +1118,7 @@ const sassdoc: PackageSassDoc = {
11031118
"rmd-switch-ball": {
11041119
name: "rmd-switch-ball",
11051120
description: "",
1106-
source: "packages/form/src/toggle/_mixins.scss#L250-L295",
1121+
source: "packages/form/src/toggle/_mixins.scss#L256-L301",
11071122
usedBy: [{ name: "react-md-toggle", type: "mixin", packageName: "form" }],
11081123
requires: [
11091124
{
@@ -1160,7 +1175,7 @@ const sassdoc: PackageSassDoc = {
11601175
"rmd-switch-container": {
11611176
name: "rmd-switch-container",
11621177
description: "",
1163-
source: "packages/form/src/toggle/_mixins.scss#L298-L300",
1178+
source: "packages/form/src/toggle/_mixins.scss#L304-L306",
11641179
usedBy: [{ name: "react-md-toggle", type: "mixin", packageName: "form" }],
11651180
requires: [
11661181
{
@@ -1184,7 +1199,7 @@ const sassdoc: PackageSassDoc = {
11841199
name: "react-md-toggle",
11851200
description:
11861201
"Creates all the styles for the toggle components in the form package.\n",
1187-
source: "packages/form/src/toggle/_mixins.scss#L304-L343",
1202+
source: "packages/form/src/toggle/_mixins.scss#L310-L349",
11881203
usedBy: [{ name: "react-md-form", type: "mixin", packageName: "form" }],
11891204
requires: [
11901205
{ name: "rmd-toggle-container", type: "mixin", packageName: "form" },
@@ -2044,11 +2059,68 @@ const sassdoc: PackageSassDoc = {
20442059
value: "0.25rem",
20452060
overridable: true,
20462061
},
2062+
"rmd-toggle-inactive-color": {
2063+
name: "rmd-toggle-inactive-color",
2064+
description:
2065+
"The color to use for the checkbox and radio components while unchecked. If you want to be able to dynamically configure the active color, you can set this to a custom css variable string.",
2066+
source: "packages/form/src/toggle/_variables.scss#L44",
2067+
since: "2.2.0",
2068+
usedBy: [
2069+
{ name: "rmd-toggle-hidden", type: "mixin", packageName: "form" },
2070+
{ name: "rmd-toggle-icon", type: "mixin", packageName: "form" },
2071+
],
2072+
requires: [
2073+
{ name: "rmd-theme-var", type: "function", packageName: "theme" },
2074+
],
2075+
packageName: "form",
2076+
examples: [
2077+
{
2078+
code:
2079+
"$rmd-toggle-inactive-color: --toggle-inactive;\n$rmd-toggle-active-color: --toggle-active;\n\n:root {\n --toggle-active: #{rmd-theme-var(secondary)};\n --toggle-inactive: #{rmd-theme-var(text-secondary-on-background)};\n}\n\n.overriding {\n --toggle-active: #{$rmd-orange-700};\n --toggle-inactive: #{$rmd-orange-a-100};\n}\n",
2080+
compiled:
2081+
":root {\n --toggle-active: var(--rmd-theme-secondary, #f50057);\n --toggle-inactive: var(--rmd-theme-text-secondary-on-background, #757575);\n}\n\n.overriding {\n --toggle-active: #f57c00;\n --toggle-inactive: #ffd180;\n}\n",
2082+
type: "scss",
2083+
description: "As a Custom CSS Variable",
2084+
},
2085+
],
2086+
type: "Color|String",
2087+
value: "rmd-theme-var(text-secondary-on-background)",
2088+
compiled: "var(--rmd-theme-text-secondary-on-background, #757575)",
2089+
overridable: true,
2090+
},
2091+
"rmd-toggle-active-color": {
2092+
name: "rmd-toggle-active-color",
2093+
description:
2094+
"The color to use for the checkbox and radio components while checked. If you want to be able to dynamically configure the active color, you can set this to a custom css variable string.",
2095+
source: "packages/form/src/toggle/_variables.scss#L67",
2096+
since: "2.2.0",
2097+
usedBy: [
2098+
{ name: "rmd-toggle-hidden", type: "mixin", packageName: "form" },
2099+
],
2100+
requires: [
2101+
{ name: "rmd-theme-var", type: "function", packageName: "theme" },
2102+
],
2103+
packageName: "form",
2104+
examples: [
2105+
{
2106+
code:
2107+
"$rmd-toggle-inactive-color: --toggle-inactive;\n$rmd-toggle-active-color: --toggle-active;\n\n:root {\n --toggle-active: #{rmd-theme-var(secondary)};\n --toggle-inactive: #{rmd-theme-var(text-secondary-on-background)};\n}\n\n.overriding {\n --toggle-active: #{$rmd-orange-700};\n --toggle-inactive: #{$rmd-orange-a-100};\n}\n",
2108+
compiled:
2109+
":root {\n --toggle-active: var(--rmd-theme-secondary, #f50057);\n --toggle-inactive: var(--rmd-theme-text-secondary-on-background, #757575);\n}\n\n.overriding {\n --toggle-active: #f57c00;\n --toggle-inactive: #ffd180;\n}\n",
2110+
type: "scss",
2111+
description: "As a Custom CSS Variable",
2112+
},
2113+
],
2114+
type: "Color|String",
2115+
value: "rmd-theme-var(secondary)",
2116+
compiled: "var(--rmd-theme-secondary, #f50057)",
2117+
overridable: true,
2118+
},
20472119
"rmd-checkbox-indeterminate-height": {
20482120
name: "rmd-checkbox-indeterminate-height",
20492121
description:
20502122
"The height for the indeterminate checkbox's state line that covers the icon.\n",
2051-
source: "packages/form/src/toggle/_variables.scss#L26",
2123+
source: "packages/form/src/toggle/_variables.scss#L72",
20522124
packageName: "form",
20532125
type: "Number",
20542126
value: "0.15rem",
@@ -2058,7 +2130,7 @@ const sassdoc: PackageSassDoc = {
20582130
name: "rmd-checkbox-indeterminate-dense-height",
20592131
description:
20602132
"The height for the indeterminate checkbox's state line that covers the icon when the dense spec is enabled.\n",
2061-
source: "packages/form/src/toggle/_variables.scss#L31",
2133+
source: "packages/form/src/toggle/_variables.scss#L77",
20622134
packageName: "form",
20632135
type: "Number",
20642136
value: "0.125rem",
@@ -2068,7 +2140,7 @@ const sassdoc: PackageSassDoc = {
20682140
name: "rmd-switch-track-height",
20692141
description:
20702142
"The height for a switch's track. The track is the background that the ball animates left and right on.\n",
2071-
source: "packages/form/src/toggle/_variables.scss#L36",
2143+
source: "packages/form/src/toggle/_variables.scss#L82",
20722144
usedBy: [
20732145
{ name: "rmd-switch", type: "mixin", packageName: "form" },
20742146
{ name: "rmd-switch-ball", type: "mixin", packageName: "form" },
@@ -2082,7 +2154,7 @@ const sassdoc: PackageSassDoc = {
20822154
name: "rmd-switch-track-width",
20832155
description:
20842156
"The width for a switch's track. The track is the background that the ball animates left and right on.\n",
2085-
source: "packages/form/src/toggle/_variables.scss#L41",
2157+
source: "packages/form/src/toggle/_variables.scss#L87",
20862158
usedBy: [{ name: "rmd-switch", type: "mixin", packageName: "form" }],
20872159
packageName: "form",
20882160
type: "Number",
@@ -2093,7 +2165,7 @@ const sassdoc: PackageSassDoc = {
20932165
name: "rmd-switch-track-background-color",
20942166
description:
20952167
"The background color for a switch's track. This is the element that the ball animates left and right on.",
2096-
source: "packages/form/src/toggle/_variables.scss#L50-L54",
2168+
source: "packages/form/src/toggle/_variables.scss#L96-L100",
20972169
requires: [
20982170
{ name: "rmd-black-base", type: "variable", packageName: "theme" },
20992171
{
@@ -2118,7 +2190,7 @@ const sassdoc: PackageSassDoc = {
21182190
name: "rmd-switch-track-border-radius",
21192191
description:
21202192
"The border radius to apply to the switch's track. This is the element that the ball animates left and right on.\n",
2121-
source: "packages/form/src/toggle/_variables.scss#L59",
2193+
source: "packages/form/src/toggle/_variables.scss#L105",
21222194
usedBy: [{ name: "rmd-switch", type: "mixin", packageName: "form" }],
21232195
packageName: "form",
21242196
type: "Number",
@@ -2128,7 +2200,7 @@ const sassdoc: PackageSassDoc = {
21282200
"rmd-switch-ball-size": {
21292201
name: "rmd-switch-ball-size",
21302202
description: "The size of the switch's ball.\n",
2131-
source: "packages/form/src/toggle/_variables.scss#L63",
2203+
source: "packages/form/src/toggle/_variables.scss#L109",
21322204
usedBy: [
21332205
{ name: "rmd-switch", type: "mixin", packageName: "form" },
21342206
{ name: "rmd-switch-input", type: "mixin", packageName: "form" },
@@ -2142,7 +2214,7 @@ const sassdoc: PackageSassDoc = {
21422214
"rmd-switch-ball-border-radius": {
21432215
name: "rmd-switch-ball-border-radius",
21442216
description: "The border radius for the switch's ball.\n",
2145-
source: "packages/form/src/toggle/_variables.scss#L67",
2217+
source: "packages/form/src/toggle/_variables.scss#L113",
21462218
usedBy: [{ name: "rmd-switch-ball", type: "mixin", packageName: "form" }],
21472219
packageName: "form",
21482220
type: "Number",
@@ -2153,7 +2225,7 @@ const sassdoc: PackageSassDoc = {
21532225
name: "rmd-switch-ball-offset",
21542226
description:
21552227
"The amount of offset that should be applied to the ball relative to its track. This is really used so the ball can overlap the track a bit to look a bit nicer.\n",
2156-
source: "packages/form/src/toggle/_variables.scss#L72",
2228+
source: "packages/form/src/toggle/_variables.scss#L118",
21572229
usedBy: [
21582230
{ name: "rmd-switch-input", type: "mixin", packageName: "form" },
21592231
{ name: "rmd-switch-ball", type: "mixin", packageName: "form" },
@@ -2167,7 +2239,7 @@ const sassdoc: PackageSassDoc = {
21672239
name: "rmd-switch-container-vertical-padding",
21682240
description:
21692241
"The vertical padding for the switch container. This should generally be large enough so that the ball does not overlap any other elements.\n",
2170-
source: "packages/form/src/toggle/_variables.scss#L77",
2242+
source: "packages/form/src/toggle/_variables.scss#L123",
21712243
usedBy: [
21722244
{ name: "rmd-switch-container", type: "mixin", packageName: "form" },
21732245
],
@@ -2180,7 +2252,7 @@ const sassdoc: PackageSassDoc = {
21802252
name: "rmd-switch-container-horizontal-padding",
21812253
description:
21822254
"The horizontal padding for the switch container. This should generally be large enough so that the ball does not overlap the label or other elements.",
2183-
source: "packages/form/src/toggle/_variables.scss#L83",
2255+
source: "packages/form/src/toggle/_variables.scss#L129",
21842256
usedBy: [
21852257
{ name: "rmd-switch-container", type: "mixin", packageName: "form" },
21862258
],
@@ -2194,7 +2266,7 @@ const sassdoc: PackageSassDoc = {
21942266
name: "rmd-switch-ball-disabled-color",
21952267
description:
21962268
"The color to use for the switch's ball when it is toggled on and disabled.",
2197-
source: "packages/form/src/toggle/_variables.scss#L90-L96",
2269+
source: "packages/form/src/toggle/_variables.scss#L136-L142",
21982270
usedBy: [
21992271
{ name: "rmd-switch-input", type: "mixin", packageName: "form" },
22002272
],
@@ -2217,7 +2289,7 @@ const sassdoc: PackageSassDoc = {
22172289
name: "rmd-switch-progress-width",
22182290
description:
22192291
"The width of the circular progress bar. This will make the progress bar more prominent than the normal circular progress.\n",
2220-
source: "packages/form/src/toggle/_variables.scss#L101",
2292+
source: "packages/form/src/toggle/_variables.scss#L147",
22212293
usedBy: [{ name: "rmd-switch", type: "mixin", packageName: "form" }],
22222294
packageName: "form",
22232295
type: "Number",
@@ -2228,7 +2300,7 @@ const sassdoc: PackageSassDoc = {
22282300
name: "rmd-switch-progress-background-color",
22292301
description:
22302302
"The background color to use for the switch's ball while the the switch is loading.",
2231-
source: "packages/form/src/toggle/_variables.scss#L107",
2303+
source: "packages/form/src/toggle/_variables.scss#L153",
22322304
usedBy: [{ name: "react-md-toggle", type: "mixin", packageName: "form" }],
22332305
requires: [
22342306
{ name: "rmd-white-base", type: "variable", packageName: "theme" },
@@ -2243,7 +2315,7 @@ const sassdoc: PackageSassDoc = {
22432315
name: "rmd-switch-progress-padding",
22442316
description:
22452317
"The amount of padding to apply to the async switch's progress bar. This will make it so there is some space between the switch's ball and the progress bar.\n",
2246-
source: "packages/form/src/toggle/_variables.scss#L112",
2318+
source: "packages/form/src/toggle/_variables.scss#L158",
22472319
usedBy: [{ name: "react-md-toggle", type: "mixin", packageName: "form" }],
22482320
packageName: "form",
22492321
type: "Number",

0 commit comments

Comments
 (0)