Fix bug with switches not correctly handling input.

This commit is contained in:
Gareth Latty
2021-10-04 16:27:50 +01:00
parent d7aec8bcad
commit 6d9e185a7e
8 changed files with 3310 additions and 4096 deletions
+2886 -3595
View File
File diff suppressed because it is too large Load Diff
+20 -20
View File
@@ -21,27 +21,27 @@
],
"dependencies": {
"@fortawesome/fontawesome-free": "^5.15.1",
"@material/card": "^12.0.0",
"@material/mwc-button": "^0.23.0",
"@material/mwc-fab": "^0.23.0",
"@material/mwc-icon-button": "^0.23.0",
"@material/mwc-linear-progress": "^0.23.0",
"@material/mwc-menu": "^0.23.0",
"@material/mwc-select": "^0.23.0",
"@material/mwc-slider": "^0.23.0",
"@material/mwc-switch": "^0.23.0",
"@material/mwc-tab": "^0.23.0",
"@material/mwc-tab-bar": "^0.23.0",
"@material/mwc-textarea": "^0.23.0",
"@material/mwc-textfield": "^0.23.0",
"@material/card": "^13.0.0",
"@material/mwc-button": "^0.25.1",
"@material/mwc-fab": "^0.25.1",
"@material/mwc-icon-button": "^0.25.1",
"@material/mwc-linear-progress": "^0.25.1",
"@material/mwc-menu": "^0.25.1",
"@material/mwc-select": "^0.25.1",
"@material/mwc-slider": "^0.25.1",
"@material/mwc-switch": "^0.25.1",
"@material/mwc-tab": "^0.25.1",
"@material/mwc-tab-bar": "^0.25.1",
"@material/mwc-textarea": "^0.25.1",
"@material/mwc-textfield": "^0.25.1",
"@polymer/paper-tooltip": "^3.0.1",
"@webcomponents/webcomponentsjs": "^2.5.0",
"canvas-confetti": "^1.3.2"
},
"devDependencies": {
"@types/canvas-confetti": "^1.3.0",
"@types/chrome": "^0.0.157",
"@types/chromecast-caf-receiver": "^6.0.5",
"@types/chrome": "^0.0.158",
"@types/chromecast-caf-receiver": "^6.0.6",
"@types/chromecast-caf-sender": "^1.0.3",
"app-manifest-loader": "^2.4.1",
"chromecast-device-emulator": "^1.2.7",
@@ -64,15 +64,15 @@
"prettier": "2.4.1",
"prettier-plugin-elm": "^0.8.0",
"resolve-url-loader": "^4.0.0",
"sass": "^1.32.0",
"sass": "^1.42.1",
"sass-loader": "^12.1.0",
"style-loader": "^3.2.1",
"style-loader": "^3.3.0",
"terser-webpack-plugin": "^5.0.3",
"ts-loader": "^9.2.2",
"ts-loader": "^9.2.6",
"tsickle-loader": "^0.5.0",
"typescript": "^4.1.3",
"webpack": "^5.11.1",
"webpack": "^5.56.1",
"webpack-cli": "^4.3.1",
"webpack-dev-server": "^4.2.1"
"webpack-dev-server": "^4.3.0"
}
}
@@ -48,7 +48,7 @@ maybe default base noOp update model value args =
{ shared, readOnly } =
args
( checked, disabled ) =
( selected, disabled ) =
case value of
Just v ->
( v /= Nothing, False )
@@ -57,12 +57,20 @@ maybe default base noOp update model value args =
( False, True )
in
Switch.view
[ checked |> HtmlA.selected
[ selected |> HtmlA.selected
, if readOnly || disabled then
HtmlA.disabled True
else
HtmlE.onCheck (\c -> default |> Maybe.justIf c |> update)
let
newValue =
if selected then
Nothing
else
Just default
in
newValue |> update |> HtmlE.onClick
]
:: base noOp (Just >> update) model (value |> Maybe.andThen identity) args
@@ -75,6 +83,9 @@ bool label _ update _ value { shared, readOnly } =
labelClick =
value |> Maybe.andThen (Maybe.justIf (not disabled)) |> Maybe.map (not >> update >> HtmlE.onClick)
selected =
value |> Maybe.withDefault False
in
[ Html.label
(List.filterMap identity
@@ -83,12 +94,12 @@ bool label _ update _ value { shared, readOnly } =
]
)
[ Switch.view
[ value |> Maybe.withDefault False |> HtmlA.selected
[ selected |> HtmlA.selected
, if disabled then
HtmlA.disabled True
else
HtmlE.onCheckNoPropagation update
selected |> not |> update |> HtmlE.onClickNoPropagation
]
, label |> Lang.html shared
]
+7 -5
View File
@@ -324,14 +324,16 @@ autoAdvanceRound wrap shared =
let
settings =
shared.settings.settings
currentValue = settings.autoAdvance |> Maybe.withDefault False
in
Form.section shared
"auto-advance"
(Html.div
[ HtmlA.class "multipart" ]
[ Switch.view
[ HtmlE.onCheck (ToggleAutoAdvance >> wrap)
, HtmlA.selected (settings.autoAdvance |> Maybe.withDefault False)
[ HtmlE.onClick (currentValue |> not |> ToggleAutoAdvance >> wrap)
, HtmlA.selected (currentValue)
, HtmlA.id "auto-advance-enable"
]
, Html.label [ HtmlA.for "auto-advance-enable" ]
@@ -379,7 +381,7 @@ speechVoiceSelector wrap shared =
[ Html.div
[ HtmlA.class "multipart" ]
[ Switch.view
[ HtmlE.onCheck (ToggleSpeech >> wrap)
[ HtmlE.onClick (enabled |> not |> ToggleSpeech >> wrap)
, HtmlA.disabled isDisabled
, HtmlA.selected enabled
, HtmlA.id "speech-enable"
@@ -481,7 +483,7 @@ notificationsSwitch wrap shared =
[ Html.div
[ HtmlA.class "multipart" ]
[ Switch.view
[ HtmlE.onCheck (ToggleNotifications >> wrap)
[ HtmlE.onClick (enabled |> not |> ToggleNotifications >> wrap)
, HtmlA.disabled unsupported
, HtmlA.selected enabled
, HtmlA.id "notifications-enable"
@@ -499,7 +501,7 @@ notificationsSwitch wrap shared =
(Html.div
[ HtmlA.class "multipart" ]
[ Switch.view
[ HtmlE.onCheck (ToggleOnlyWhenHidden >> wrap)
[ HtmlE.onClick (settings.requireNotVisible |> not |> ToggleOnlyWhenHidden >> wrap)
, HtmlA.disabled visibilityDisabled
, HtmlA.selected settings.requireNotVisible
, HtmlA.id "only-when-hidden-toggle"
@@ -5,6 +5,7 @@ module MassiveDecks.Util.Maybe exposing
, isNothing
, justIf
, toList
, flip
, transformWith
, validate
)
@@ -98,3 +99,15 @@ isNothing =
isJust : Maybe a -> Bool
isJust =
(/=) Nothing
{-| If the given maybe holds a value, return nothing, otherwise return Just the default value.
-}
flip : a -> Maybe a -> Maybe a
flip default value =
case value of
Just _ ->
Nothing
Nothing ->
Just default
+11 -2
View File
@@ -3,7 +3,11 @@ variable "VERSION" {
}
variable "VCS_REF" {
default = "dev"
default = ""
}
variable "BUILD_DATE" {
default = ""
}
function "splitSemVer" {
@@ -37,7 +41,7 @@ function "repos" {
function "generateTags" {
params = [repos, versionTags, commitHash, component]
result = flatten([
for repo in repos: [ for tag in flatten([commitHash, versionTags, "latest"]) : "${repo}${component}:${tag}" ]
for repo in repos: [ for tag in flatten(["${commitHash}-dev", versionTags, "latest"]) : "${repo}${component}:${tag}" ]
])
}
@@ -46,6 +50,11 @@ target "build" {
platforms = ["linux/amd64", "linux/arm64"]
output = ["type=registry"]
pull = true
args = {
VERSION = VERSION != "" ? VERSION : "${VCS_REF}-dev"
VCS_REF = VCS_REF
BUILD_DATE = BUILD_DATE
}
}
target "server" {
+356 -468
View File
File diff suppressed because it is too large Load Diff
+1 -1
View File
@@ -28,7 +28,7 @@
"dependencies": {
"ajv": "^8.6.3",
"ajv-formats": "^2.1.1",
"axios": "^0.21.1",
"axios": "^0.22.0",
"body-parser": "^1.19.0",
"express": "^4.17.1",
"express-async-errors": "^3.1.1",