- From: Jason Williams via GitHub <sysbot+gh@w3.org>
- Date: Thu, 30 Nov 2023 18:38:28 +0000
- To: public-css-archive@w3.org
The overall API shape looks good to me, moving this to a web preferences API that can operate per-origin seems to solve many more problems that have been mentioned above. It does feel like the right place to solve this problem. Some observations. ## Fetching computed value? It looks like this API is strictly for overrides so those wanting to offer a toggle would still need to do an initial check with `matchMedia` to get the current value. Like below: ```js let currentValue = null; // We don't know what the initial value is so lets get it. if (window.matchMedia && window.matchMedia('(prefers-color-scheme: dark)').matches) { currentValue = 'dark' } button.onClick(() => { const newVal = (currentValue === 'dark') ? 'light' : 'dark'; navigator.preferences.colorScheme.requestOverride(newVal) .then(() => { // The preference override was successful. }) .catch((error) => { // The preference override request was rejected. }); }) ``` Something like this might be better ```js button.onClick(() => { const newVal = (navigator.preferences.colorScheme.value === 'dark') ? 'light' : 'dark'; navigator.preferences.colorScheme.requestOverride(newVal) .then(() => { // The preference override was successful. }) .catch((error) => { // The preference override request was rejected. }); }) ``` It doesn't feel the most ergonomic. I wonder if the API provides the computed value we could skip the first step entirely. Looks like this is covered in: https://github.com/WICG/web-preferences-api/issues/7 Although I don't fully understand how the API shape https://github.com/WICG/web-preferences-api/issues/7#issuecomment-1721930664 solves this so it would be good to see an example. ## Should the fulfilled promise return the set value? For those who are using a toggle, I wonder if the fulfilled promise should return the value that is now set, ergonomically this would make it easy for website authors to pass that value to their `currentSet` state. ## iFrames I guess there's questions on how to deal with iframes (if we even need to). But that's being discussed here: https://github.com/WICG/web-preferences-api/issues/8 I guess now that this has moved into a potential browser API and into the WICG, I guess its no longer a CSS WG matter, unless any here feel against the direction this is in. If people are happy with the control of this being in Web Preferences, then @tabatkins I would be interested in your thoughts on where https://github.com/WICG/web-preferences-apigoes in terms of reviewal, does this go into the Web Apps working group? -- GitHub Notification of comment by jasonwilliams Please view or discuss this issue at https://github.com/w3c/csswg-drafts/issues/6517#issuecomment-1834350317 using your GitHub account -- Sent via github-notify-ml as configured in https://github.com/w3c/github-notify-ml-config
Received on Thursday, 30 November 2023 18:38:31 UTC