SelectItem.h 1.1 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455
  1. /*
  2. * Copyright (c) 2023, Bastiaan van der Plaat <bastiaan.v.d.plaat@gmail.com>
  3. *
  4. * SPDX-License-Identifier: BSD-2-Clause
  5. */
  6. #pragma once
  7. #include <AK/String.h>
  8. #include <LibIPC/Forward.h>
  9. #include <LibWeb/HTML/HTMLOptionElement.h>
  10. namespace Web::HTML {
  11. struct SelectItemOption {
  12. u32 id { 0 };
  13. bool selected { false };
  14. bool disabled { false };
  15. JS::GCPtr<HTMLOptionElement> option_element {};
  16. String label {};
  17. String value {};
  18. };
  19. struct SelectItemOptionGroup {
  20. String label = {};
  21. Vector<SelectItemOption> items = {};
  22. };
  23. struct SelectItemSeparator { };
  24. using SelectItem = Variant<SelectItemOption, SelectItemOptionGroup, SelectItemSeparator>;
  25. }
  26. namespace IPC {
  27. template<>
  28. ErrorOr<void> encode(Encoder&, Web::HTML::SelectItemOption const&);
  29. template<>
  30. ErrorOr<Web::HTML::SelectItemOption> decode(Decoder&);
  31. template<>
  32. ErrorOr<void> encode(Encoder&, Web::HTML::SelectItemOptionGroup const&);
  33. template<>
  34. ErrorOr<Web::HTML::SelectItemOptionGroup> decode(Decoder&);
  35. template<>
  36. ErrorOr<void> encode(Encoder&, Web::HTML::SelectItemSeparator const&);
  37. template<>
  38. ErrorOr<Web::HTML::SelectItemSeparator> decode(Decoder&);
  39. }