From 42bcf197bc8b3117e40d8f61300a97332e4963ba Mon Sep 17 00:00:00 2001 From: Dave Nicolson Date: Fri, 18 Jul 2025 15:40:22 +0200 Subject: [PATCH] feat(Parser): Add `ToggleFormField` node (#902) * Add ToggleFormField node * chore: clean up & lint --------- Co-authored-by: Luan --- src/parser/classes/ToggleFormField.ts | 24 ++++++++++++++++++++++++ src/parser/nodes.ts | 1 + 2 files changed, 25 insertions(+) create mode 100644 src/parser/classes/ToggleFormField.ts diff --git a/src/parser/classes/ToggleFormField.ts b/src/parser/classes/ToggleFormField.ts new file mode 100644 index 00000000..7131242b --- /dev/null +++ b/src/parser/classes/ToggleFormField.ts @@ -0,0 +1,24 @@ +import { type RawNode } from '../index.js'; +import { YTNode } from '../helpers.js'; +import NavigationEndpoint from './NavigationEndpoint.js'; + +export default class ToggleFormField extends YTNode { + static type = 'ToggleFormField'; + + public label: Text; + public toggled: boolean; + public toggle_on_action?: NavigationEndpoint; + public toggle_off_action?: NavigationEndpoint; + + constructor(data: RawNode) { + super(); + this.label = new Text(data.label); + this.toggled = data.toggled; + + if ('toggleOnAction' in data) + this.toggle_on_action = new NavigationEndpoint(data.toggleOnAction); + + if ('toggleOffAction' in data) + this.toggle_off_action = new NavigationEndpoint(data.toggleOffAction); + } +} \ No newline at end of file diff --git a/src/parser/nodes.ts b/src/parser/nodes.ts index 69fa4161..1c297fd2 100644 --- a/src/parser/nodes.ts +++ b/src/parser/nodes.ts @@ -488,6 +488,7 @@ export { default as TimedMarkerDecoration } from './classes/TimedMarkerDecoratio export { default as TitleAndButtonListHeader } from './classes/TitleAndButtonListHeader.js'; export { default as ToggleButton } from './classes/ToggleButton.js'; export { default as ToggleButtonView } from './classes/ToggleButtonView.js'; +export { default as ToggleFormField } from './classes/ToggleFormField.js'; export { default as ToggleMenuServiceItem } from './classes/ToggleMenuServiceItem.js'; export { default as Tooltip } from './classes/Tooltip.js'; export { default as TopicChannelDetails } from './classes/TopicChannelDetails.js';