Ben Kunkle
8a8a9a4f07
settings_ui: Add dynamic settings UI item ( #37331 )
...
Closes #ISSUE
Adds a first draft of a way for "Dynamic" settings items to be added,
where Dynamic means settings where multiple sets of options are possible
(i.e. discriminated union, rust enum, etc). The implementation is very
similar to that of `Group`, except that instead of rendering all of it's
descendants, it contains a function to determine _which_ descendant to
render, whether that be a single item or a nested group of items.
Currently this is done in a type-unsafe way with indices, a future
improvement could be to make the API more type safe, and easier to
manually implement correctly.
An example of a "Dynamic" setting is `theme`, where it can either be a
string of the desired theme name, or an object with `mode: "light" |
"dark" | "system"` as well as theme names for `light` and `dark`. In the
system implemented by this PR, this would become a dynamic settings UI
item, where option `0` is a single item, the theme name selector, and
option `1` is a group, containing items for the `mode`, and
`light`/`dark` options.
Release Notes:
- N/A *or* Added/Fixed/Improved ...
2025-09-01 17:53:43 -04:00
..
2025-09-01 18:57:15 +00:00
2025-08-25 16:04:44 -06:00
2025-08-20 14:07:37 +02:00
2025-08-20 14:07:37 +02:00
2025-08-26 13:55:09 +00:00
2025-09-01 18:57:15 +00:00
2025-09-01 18:57:15 +00:00
2025-08-30 03:03:47 +00:00
2025-09-01 18:57:15 +00:00
2025-08-25 17:21:20 +00:00
2025-08-28 12:00:44 +00:00
2025-08-19 21:26:17 +02:00
2025-08-13 13:25:52 -06:00
2025-08-20 12:20:13 +02:00
2025-08-27 23:24:19 +00:00
2025-08-28 13:32:30 -06:00
2025-08-27 23:24:19 +00:00
2025-08-31 19:52:43 -04:00
2025-08-29 16:56:10 -04:00
2025-08-29 16:56:10 -04:00
2025-08-29 17:18:52 -07:00
2025-08-20 12:20:13 +02:00
2025-07-22 11:55:24 -04:00
2025-08-29 18:13:06 -04:00
2025-08-27 23:24:19 +00:00
2025-08-22 03:48:47 -04:00
2025-08-29 16:56:10 -04:00
2025-08-20 12:20:13 +02:00
2025-09-01 08:33:59 +00:00
2025-08-29 16:56:10 -04:00
2025-08-22 11:45:47 -04:00
2025-08-07 01:28:41 +00:00
2025-08-11 15:34:34 +02:00
2025-08-29 17:08:42 +03:00
2025-08-29 16:56:10 -04:00
2025-08-26 00:27:52 +00:00
2025-08-20 12:20:13 +02:00
2025-08-22 13:16:42 +00:00
2025-08-31 18:51:17 -04:00
2025-08-21 19:59:42 -04:00
2025-08-19 21:26:17 +02:00
2025-08-29 16:56:10 -04:00
2025-08-28 07:53:32 +00:00
2025-08-26 00:27:52 +00:00
2025-08-20 12:20:13 +02:00
2025-08-28 14:40:43 +00:00
2025-09-01 10:49:09 +02:00
2025-08-29 17:08:42 +03:00
2025-08-27 03:24:50 +08:00
2025-08-22 11:45:47 -04:00
2025-08-22 11:45:47 -04:00
2025-09-01 20:00:01 +00:00
2025-08-20 20:14:30 +02:00
2025-08-19 20:33:44 +00:00
2025-08-20 12:05:58 +02:00
2025-08-16 19:00:31 +00:00
2025-08-29 17:18:52 -07:00
2025-08-20 12:20:13 +02:00
2025-08-26 15:30:26 +02:00
2025-08-21 19:59:42 -04:00
2025-08-29 16:56:10 -04:00
2025-08-19 21:26:17 +02:00
2025-08-28 13:32:30 -06:00
2025-08-19 13:27:24 +00:00
2025-08-06 10:53:20 +02:00
2025-08-20 20:14:30 +02:00
2025-08-29 16:56:10 -04:00
2025-08-29 16:56:10 -04:00
2025-08-29 16:56:10 -04:00
2025-08-28 12:00:44 +00:00
2025-09-01 15:33:11 -04:00
2025-08-29 16:56:10 -04:00
2025-08-21 17:19:57 +00:00
2025-08-19 13:27:24 +00:00
2025-08-20 12:20:13 +02:00
2025-08-28 07:53:32 +00:00
2025-08-29 16:56:10 -04:00
2025-08-24 11:01:42 +00:00
2025-08-18 21:54:35 +00:00
2025-08-19 20:33:44 +00:00
2025-08-29 16:56:10 -04:00
2025-08-29 16:56:10 -04:00
2025-08-29 16:56:10 -04:00
2025-08-18 21:54:35 +00:00
2025-08-27 12:53:07 +00:00
2025-08-31 18:51:17 -04:00
2025-08-19 13:27:24 +00:00
2025-08-29 12:23:45 +00:00
2025-08-29 17:08:42 +03:00
2025-08-21 15:56:16 +02:00
2025-07-25 09:36:43 -04:00
2025-08-29 17:08:42 +03:00
2025-08-26 12:55:40 -03:00
2025-08-31 11:43:24 +03:00
2025-08-20 12:20:13 +02:00
2025-08-28 12:00:44 +00:00
2025-08-24 09:59:32 +03:00
2025-07-17 14:25:55 +00:00
2025-08-19 20:33:44 +00:00
2025-08-19 13:27:24 +00:00
2025-08-06 10:44:15 -04:00
2025-08-26 00:27:52 +00:00
2025-08-28 12:00:44 +00:00
2025-08-28 12:00:44 +00:00
2025-08-29 16:56:10 -04:00
2025-08-20 12:20:13 +02:00
2025-08-29 17:18:52 -07:00
2025-08-20 12:20:13 +02:00
2025-08-19 21:26:17 +02:00
2025-08-29 17:18:52 -07:00
2025-08-29 16:56:10 -04:00
2025-08-29 14:07:27 -03:00
2025-08-20 12:20:13 +02:00
2025-08-28 14:40:43 +00:00
2025-08-29 17:18:52 -07:00
2025-08-19 13:27:24 +00:00
2025-08-29 17:18:52 -07:00
2025-08-29 17:08:42 +03:00
2025-08-29 16:56:10 -04:00
2025-08-20 12:05:58 +02:00
2025-08-19 13:27:24 +00:00
2025-08-20 12:20:13 +02:00
2025-08-21 06:48:04 +00:00
2025-08-28 03:51:22 +00:00
2025-08-29 03:50:24 +00:00
2025-08-20 12:20:13 +02:00
2025-08-19 13:27:24 +00:00
2025-09-01 17:53:43 -04:00
2025-08-20 12:20:13 +02:00
2025-09-01 17:53:43 -04:00
2025-09-01 17:53:43 -04:00
2025-08-19 21:26:17 +02:00
2025-08-19 21:26:17 +02:00
2025-08-19 13:27:24 +00:00
2025-08-26 00:27:52 +00:00
2025-08-20 12:20:13 +02:00
2025-08-19 20:33:44 +00:00
2025-08-18 21:54:35 +00:00
2025-08-19 21:26:17 +02:00
2025-08-29 16:17:22 -04:00
2025-08-19 21:26:17 +02:00
2025-08-19 20:33:44 +00:00
2025-08-21 19:59:42 -04:00
2025-08-28 21:07:02 +00:00
2025-08-28 14:40:43 +00:00
2025-08-20 14:35:59 +00:00
2025-08-19 21:26:17 +02:00
2025-08-15 15:37:52 -04:00
2025-08-29 16:56:10 -04:00
2025-09-01 11:21:55 +03:00
2025-08-19 21:26:17 +02:00
2025-08-29 16:56:10 -04:00
2025-08-20 12:20:13 +02:00
2025-08-08 15:34:36 -03:00
2025-08-31 18:24:00 -06:00
2025-08-21 09:37:45 +00:00
2025-08-28 08:40:43 +00:00
2025-08-20 12:20:13 +02:00
2025-07-30 23:03:53 +05:30
2025-08-28 13:32:30 -06:00
2025-08-15 13:54:24 +03:00
2025-08-29 16:56:10 -04:00
2025-08-29 16:56:10 -04:00
2025-08-25 14:28:11 -04:00
2025-08-20 12:20:13 +02:00
2025-08-19 20:33:44 +00:00
2025-08-30 13:13:23 +00:00
2025-08-29 16:56:10 -04:00
2025-08-26 21:08:45 +00:00
2025-09-01 08:33:59 +00:00
2025-08-26 16:59:12 -03:00
2025-08-31 07:23:21 +00:00
2025-08-20 12:20:13 +02:00
2025-08-20 12:20:13 +02:00
2025-08-29 16:56:10 -04:00