| 
									
										
										
										
											2020-06-07 23:10:45 +02:00
										 |  |  | /*
 | 
					
						
							|  |  |  |  * Copyright (c) 2020, Andreas Kling <kling@serenityos.org> | 
					
						
							|  |  |  |  * | 
					
						
							| 
									
										
										
										
											2021-04-22 01:24:48 -07:00
										 |  |  |  * SPDX-License-Identifier: BSD-2-Clause | 
					
						
							| 
									
										
										
										
											2020-06-07 23:10:45 +02:00
										 |  |  |  */ | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | #pragma once
 | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2020-07-26 15:08:16 +02:00
										 |  |  | #include <LibWeb/HTML/HTMLElement.h>
 | 
					
						
							| 
									
										
										
										
											2021-05-02 17:43:42 +01:00
										 |  |  | #include <LibWeb/HTML/HTMLTableCaptionElement.h>
 | 
					
						
							| 
									
										
										
										
											2021-04-26 16:36:40 +01:00
										 |  |  | #include <LibWeb/HTML/HTMLTableRowElement.h>
 | 
					
						
							| 
									
										
										
										
											2021-05-02 18:03:47 +01:00
										 |  |  | #include <LibWeb/HTML/HTMLTableSectionElement.h>
 | 
					
						
							| 
									
										
										
										
											2022-09-25 17:03:42 +01:00
										 |  |  | #include <LibWeb/WebIDL/ExceptionOr.h>
 | 
					
						
							| 
									
										
										
										
											2020-06-07 23:10:45 +02:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2020-07-28 18:20:36 +02:00
										 |  |  | namespace Web::HTML { | 
					
						
							| 
									
										
										
										
											2020-06-07 23:10:45 +02:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2020-06-12 22:52:38 +02:00
										 |  |  | class HTMLTableElement final : public HTMLElement { | 
					
						
							| 
									
										
										
										
											2022-08-28 13:42:07 +02:00
										 |  |  |     WEB_PLATFORM_OBJECT(HTMLTableElement, HTMLElement); | 
					
						
							| 
									
										
										
										
											2020-07-27 05:04:26 +01:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2022-08-28 13:42:07 +02:00
										 |  |  | public: | 
					
						
							| 
									
										
										
										
											2020-06-07 23:10:45 +02:00
										 |  |  |     virtual ~HTMLTableElement() override; | 
					
						
							| 
									
										
										
										
											2020-06-12 22:52:38 +02:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2022-08-28 13:42:07 +02:00
										 |  |  |     JS::GCPtr<HTMLTableCaptionElement> caption(); | 
					
						
							| 
									
										
										
										
											2021-07-05 05:45:20 +01:00
										 |  |  |     void set_caption(HTMLTableCaptionElement*); | 
					
						
							| 
									
										
										
										
											2022-08-28 13:42:07 +02:00
										 |  |  |     JS::NonnullGCPtr<HTMLTableCaptionElement> create_caption(); | 
					
						
							| 
									
										
										
										
											2021-05-02 17:43:42 +01:00
										 |  |  |     void delete_caption(); | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2022-08-28 13:42:07 +02:00
										 |  |  |     JS::GCPtr<HTMLTableSectionElement> t_head(); | 
					
						
							| 
									
										
										
										
											2022-09-25 17:03:42 +01:00
										 |  |  |     WebIDL::ExceptionOr<void> set_t_head(HTMLTableSectionElement* thead); | 
					
						
							| 
									
										
										
										
											2022-08-28 13:42:07 +02:00
										 |  |  |     JS::NonnullGCPtr<HTMLTableSectionElement> create_t_head(); | 
					
						
							| 
									
										
										
										
											2021-05-02 18:03:47 +01:00
										 |  |  |     void delete_t_head(); | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2022-08-28 13:42:07 +02:00
										 |  |  |     JS::GCPtr<HTMLTableSectionElement> t_foot(); | 
					
						
							| 
									
										
										
										
											2022-09-25 17:03:42 +01:00
										 |  |  |     WebIDL::ExceptionOr<void> set_t_foot(HTMLTableSectionElement* tfoot); | 
					
						
							| 
									
										
										
										
											2022-08-28 13:42:07 +02:00
										 |  |  |     JS::NonnullGCPtr<HTMLTableSectionElement> create_t_foot(); | 
					
						
							| 
									
										
										
										
											2021-05-02 18:07:45 +01:00
										 |  |  |     void delete_t_foot(); | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2022-09-01 20:50:16 +02:00
										 |  |  |     JS::NonnullGCPtr<DOM::HTMLCollection> t_bodies(); | 
					
						
							| 
									
										
										
										
											2022-08-28 13:42:07 +02:00
										 |  |  |     JS::NonnullGCPtr<HTMLTableSectionElement> create_t_body(); | 
					
						
							| 
									
										
										
										
											2021-05-02 18:17:08 +01:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2022-09-01 20:50:16 +02:00
										 |  |  |     JS::NonnullGCPtr<DOM::HTMLCollection> rows(); | 
					
						
							| 
									
										
										
										
											2022-09-25 17:03:42 +01:00
										 |  |  |     WebIDL::ExceptionOr<JS::NonnullGCPtr<HTMLTableRowElement>> insert_row(long index); | 
					
						
							|  |  |  |     WebIDL::ExceptionOr<void> delete_row(long index); | 
					
						
							| 
									
										
										
										
											2021-04-26 16:36:40 +01:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2022-11-28 17:58:13 -06:00
										 |  |  |     // https://www.w3.org/TR/html-aria/#el-table
 | 
					
						
							| 
									
										
										
										
											2023-01-28 22:23:16 +00:00
										 |  |  |     virtual Optional<ARIA::Role> default_role() const override { return ARIA::Role::table; } | 
					
						
							| 
									
										
										
										
											2022-11-28 17:58:13 -06:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2020-06-12 22:52:38 +02:00
										 |  |  | private: | 
					
						
							| 
									
										
										
										
											2022-08-28 13:42:07 +02:00
										 |  |  |     HTMLTableElement(DOM::Document&, DOM::QualifiedName); | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2023-01-28 12:33:35 -05:00
										 |  |  |     virtual JS::ThrowCompletionOr<void> initialize(JS::Realm&) override; | 
					
						
							| 
									
										
										
										
											2022-11-24 19:04:47 +01:00
										 |  |  |     virtual void visit_edges(Cell::Visitor&) override; | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2020-07-26 20:01:35 +02:00
										 |  |  |     virtual void apply_presentational_hints(CSS::StyleProperties&) const override; | 
					
						
							| 
									
										
										
										
											2022-11-24 19:04:47 +01:00
										 |  |  | 
 | 
					
						
							|  |  |  |     JS::GCPtr<DOM::HTMLCollection> mutable m_rows; | 
					
						
							|  |  |  |     JS::GCPtr<DOM::HTMLCollection> mutable m_t_bodies; | 
					
						
							| 
									
										
										
										
											2020-06-07 23:10:45 +02:00
										 |  |  | }; | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | } |