1
Fork 0
mirror of https://github.com/RGBCube/serenity synced 2025-05-31 09:48:11 +00:00
serenity/Userland/Libraries/LibWeb/DOM
Andreas Kling 7d24c13d8b LibWeb: Make input element placeholders look better
We now create a flex container inside the input element's UA shadow tree
and add the placeholder and non-placeholder text as flex items (wrapped
in elements whose style we can manipulate).

This fixes the visual glitch where the placeholder would appear below
the bounding box of the input element. It also allows us to align the
text vertically inside the input element (like we're supposed to).

In order to achieve this, I had to make two small architectural changes
to layout tree building:

- Elements can now report that they represent a given pseudo element.
  This allows us to instantiate the ::placeholder pseudo element as an
  actual DOM element inside the input element's UA shadow tree.

- We no longer create a separate layout node for the shadow root itself.
  Instead, children of the shadow root are treated as if they were
  children of the DOM element itself for the purpose of layout tree
  building.
2023-05-25 14:42:24 +02:00
..
AbortController.cpp LibWeb: Make factory method of DOM::AbortSignal fallible 2023-02-18 00:52:47 +01:00
AbortController.h LibWeb: Make factory method of DOM::AbortController fallible 2023-02-18 00:52:47 +01:00
AbortController.idl LibWeb: Add imports to all IDL files that depend on others 2022-02-16 22:48:32 +03:30
AbortSignal.cpp LibWeb: Port {Mouse,UI,Wheel,}Event to new String 2023-04-07 22:41:01 +02:00
AbortSignal.h LibWeb: Make factory method of DOM::AbortSignal fallible 2023-02-18 00:52:47 +01:00
AbortSignal.idl LibWeb: Replace ad-hoc EventHandler type with callback function typedef 2022-03-31 01:10:47 +02:00
AbstractRange.cpp LibJS+Everywhere: Allow Cell::initialize overrides to throw OOM errors 2023-01-29 00:02:45 +00:00
AbstractRange.h LibJS+Everywhere: Allow Cell::initialize overrides to throw OOM errors 2023-01-29 00:02:45 +00:00
AbstractRange.idl LibWeb: Remove the NoInstanceWrapper extended IDL attribute 2022-09-06 00:27:09 +02:00
AccessibilityTreeNode.cpp LibJS+LibWeb: Add missing visit calls in visit_edges implementations 2023-04-30 06:04:33 +02:00
AccessibilityTreeNode.h LibJS+LibWeb: Wrap raw JS::Cell*/& fields in GCPtr/NonnullGCPtr 2023-03-15 08:48:49 +01:00
Attr.cpp LibWeb: Don't create mutation record node lists if nobody is interested 2023-05-23 06:31:37 +02:00
Attr.h LibWeb: Introduce CustomElementRegistry and creating custom elements 2023-04-06 11:36:56 +02:00
Attr.idl LibWeb: Rename Attribute to Attr 2022-09-18 02:08:01 +02:00
CDATASection.cpp LibJS+Everywhere: Allow Cell::initialize overrides to throw OOM errors 2023-01-29 00:02:45 +00:00
CDATASection.h LibJS+Everywhere: Allow Cell::initialize overrides to throw OOM errors 2023-01-29 00:02:45 +00:00
CDATASection.idl LibWeb: Add CDATASection 2022-06-27 22:53:04 +01:00
CharacterData.cpp LibWeb: Don't create mutation record node lists if nobody is interested 2023-05-23 06:31:37 +02:00
CharacterData.h LibJS+Everywhere: Allow Cell::initialize overrides to throw OOM errors 2023-01-29 00:02:45 +00:00
CharacterData.idl LibWeb: Add Exposed attribute and IDL spec links where missing 2022-10-09 10:14:57 +02:00
ChildNode.h LibWeb: Fix a few const-ness issues 2023-03-06 13:05:43 +00:00
ChildNode.idl LibWeb: Resolve circular IDL imports 2022-07-30 13:20:47 +02:00
Comment.cpp LibWeb: Set Comment's prototype 2023-04-14 12:30:43 +02:00
Comment.h LibWeb: Set Comment's prototype 2023-04-14 12:30:43 +02:00
Comment.idl LibWeb: Add Exposed attribute and IDL spec links where missing 2022-10-09 10:14:57 +02:00
CustomEvent.cpp LibWeb: Port {Mouse,UI,Wheel,}Event to new String 2023-04-07 22:41:01 +02:00
CustomEvent.h LibWeb: Port CustomEvent to new String 2023-04-07 22:41:01 +02:00
CustomEvent.idl LibWeb: Port CustomEvent to new String 2023-04-07 22:41:01 +02:00
Document.cpp Userland: Remove remaining users of Duration::now_realtime() 2023-05-24 23:18:07 +02:00
Document.h Userland: Remove remaining users of Duration::now_realtime() 2023-05-24 23:18:07 +02:00
Document.idl LibWeb: Add a bunch of missing CEReactions 2023-04-06 11:36:56 +02:00
DocumentFragment.cpp LibWeb: Make factory method of DOM::DocumentFragment fallible 2023-02-18 00:52:47 +01:00
DocumentFragment.h LibWeb: Make factory method of DOM::DocumentFragment fallible 2023-02-18 00:52:47 +01:00
DocumentFragment.idl LibWeb: Add Exposed attribute and IDL spec links where missing 2022-10-09 10:14:57 +02:00
DocumentLoadEventDelayer.cpp LibWeb+LibJS: Make the EventTarget hierarchy (incl. DOM) GC-allocated 2022-09-06 00:27:09 +02:00
DocumentLoadEventDelayer.h LibWeb+LibJS: Make the EventTarget hierarchy (incl. DOM) GC-allocated 2022-09-06 00:27:09 +02:00
DocumentLoading.cpp LibWeb: Make processBodyError take an optional exception 2023-05-15 16:28:16 +02:00
DocumentLoading.h LibWeb: Implement "attempt to populate the history entry's document" 2023-05-03 09:39:49 +02:00
DocumentObserver.cpp LibWeb: Add an interface to be notified of Document state changes 2023-05-04 16:48:10 +02:00
DocumentObserver.h LibWeb: Add an interface to be notified of Document state changes 2023-05-04 16:48:10 +02:00
DocumentType.cpp LibWeb: Make factory method of DOM::DocumentType fallible 2023-02-18 00:52:47 +01:00
DocumentType.h LibWeb: Make factory method of DOM::DocumentType fallible 2023-02-18 00:52:47 +01:00
DocumentType.idl LibWeb: Add Exposed attribute and IDL spec links where missing 2022-10-09 10:14:57 +02:00
DOMEventListener.cpp LibJS+LibWeb: Normalize calls to Base::visit_edges in GC objects 2023-04-30 06:04:33 +02:00
DOMEventListener.h LibJS+LibWeb: Normalize calls to Base::visit_edges in GC objects 2023-04-30 06:04:33 +02:00
DOMImplementation.cpp LibWeb: Introduce CustomElementRegistry and creating custom elements 2023-04-06 11:36:56 +02:00
DOMImplementation.h LibJS+LibWeb: Wrap raw JS::Cell*/& fields in GCPtr/NonnullGCPtr 2023-03-15 08:48:49 +01:00
DOMImplementation.idl LibWeb: Add Exposed attribute and IDL spec links where missing 2022-10-09 10:14:57 +02:00
DOMTokenList.cpp LibWeb: Fix a few const-ness issues 2023-03-06 13:05:43 +00:00
DOMTokenList.h LibWeb: Fix a few const-ness issues 2023-03-06 13:05:43 +00:00
DOMTokenList.idl LibWeb: Add Exposed attribute and IDL spec links where missing 2022-10-09 10:14:57 +02:00
Element.cpp LibWeb: Implement scroll_{width, height} 2023-05-24 17:18:30 +02:00
Element.h LibWeb: Make input element placeholders look better 2023-05-25 14:42:24 +02:00
Element.idl LibWeb: Add a bunch of missing CEReactions 2023-04-06 11:36:56 +02:00
ElementFactory.cpp LibWeb: Add an initial implementation of SVG <radialGradient> 2023-05-04 16:50:01 +02:00
ElementFactory.h LibWeb: Introduce CustomElementRegistry and creating custom elements 2023-04-06 11:36:56 +02:00
Event.cpp LibWeb: Port {Mouse,UI,Wheel,}Event to new String 2023-04-07 22:41:01 +02:00
Event.h LibWeb: Port {Mouse,UI,Wheel,}Event to new String 2023-04-07 22:41:01 +02:00
Event.idl LibWeb: Port {Mouse,UI,Wheel,}Event to new String 2023-04-07 22:41:01 +02:00
EventDispatcher.cpp LibWeb: Port DOMEventListener to new FlyString 2023-04-09 17:27:27 +02:00
EventDispatcher.h LibWeb+LibJS: Make the EventTarget hierarchy (incl. DOM) GC-allocated 2022-09-06 00:27:09 +02:00
EventHandler.idl LibWeb: Implement WindowEventHandlers 2022-06-29 21:21:50 +01:00
EventTarget.cpp LibWeb: Implement the EventTarget constructor 2023-05-04 16:12:40 +02:00
EventTarget.h LibWeb: Implement the EventTarget constructor 2023-05-04 16:12:40 +02:00
EventTarget.idl LibWeb: Implement the EventTarget constructor 2023-05-04 16:12:40 +02:00
HTMLCollection.cpp LibWeb: Make HTMLCollection faster when it only cares about children 2023-05-23 14:38:45 +02:00
HTMLCollection.h LibWeb: Make HTMLCollection faster when it only cares about children 2023-05-23 14:38:45 +02:00
HTMLCollection.idl LibWeb: Add imports to all IDL files that depend on others 2022-02-16 22:48:32 +03:30
IDLEventListener.cpp LibJS: Make intrinsics getters return NonnullGCPtr 2023-04-13 14:29:42 +02:00
IDLEventListener.h LibWeb: Make factory methods of IDLEventListener and NodeFilter fallible 2023-02-22 09:55:33 +01:00
InnerHTML.idl LibWeb: Resolve circular IDL imports 2022-07-30 13:20:47 +02:00
LiveNodeList.cpp LibWeb: Make LiveNodeList faster when it only cares about children 2023-05-23 14:38:45 +02:00
LiveNodeList.h LibWeb: Make LiveNodeList faster when it only cares about children 2023-05-23 14:38:45 +02:00
MutationObserver.cpp LibJS+LibWeb: Wrap raw JS::Cell*/& fields in GCPtr/NonnullGCPtr 2023-03-15 08:48:49 +01:00
MutationObserver.h Everywhere: Remove NonnullRefPtr.h includes 2023-03-06 23:46:35 +01:00
MutationObserver.idl LibWeb: Introduce Mutation{Record,Observer} and observer microtasks 2022-07-11 22:35:08 +02:00
MutationRecord.cpp LibWeb: Port MutationRecord types to FlyString 2023-03-18 19:50:45 +01:00
MutationRecord.h LibWeb: Port MutationRecord types to FlyString 2023-03-18 19:50:45 +01:00
MutationRecord.idl LibWeb: Introduce Mutation{Record,Observer} and observer microtasks 2022-07-11 22:35:08 +02:00
MutationType.cpp LibWeb: Port MutationRecord types to FlyString 2023-03-18 19:50:45 +01:00
MutationType.h LibWeb: Port MutationRecord types to FlyString 2023-03-18 19:50:45 +01:00
NamedNodeMap.cpp LibWeb: Implement Element.setAttributeNode{,NS}() 2023-03-10 14:56:29 +01:00
NamedNodeMap.h LibWeb: Implement Element.setAttributeNode{,NS}() 2023-03-10 14:56:29 +01:00
NamedNodeMap.idl LibWeb: Add NamedNodeMap::setNamedItemNS() method 2022-12-17 18:27:57 +01:00
Node.cpp LibWeb: Avoid full tree traversal in Node::compare_document_position() 2023-05-24 08:20:45 +02:00
Node.h LibWeb: Add fast way to check if a DOM node is an SVG element 2023-05-24 06:43:21 +02:00
Node.idl LibWeb: Add a bunch of missing CEReactions 2023-04-06 11:36:56 +02:00
NodeFilter.cpp LibJS: Make intrinsics getters return NonnullGCPtr 2023-04-13 14:29:42 +02:00
NodeFilter.h LibJS+LibWeb: Wrap raw JS::Cell*/& fields in GCPtr/NonnullGCPtr 2023-03-15 08:48:49 +01:00
NodeFilter.idl LibWeb: Expose NodeFilter on the Window object 2022-10-28 16:17:08 +01:00
NodeIterator.cpp LibWeb: Make factory method of DOM::NodeIterator fallible 2023-02-18 00:52:47 +01:00
NodeIterator.h LibWeb: Make factory method of DOM::NodeIterator fallible 2023-02-18 00:52:47 +01:00
NodeIterator.idl LibWeb: Remove the NoInstanceWrapper extended IDL attribute 2022-09-06 00:27:09 +02:00
NodeList.cpp LibWeb: Restore proper functionality of legacy platform objects 2023-02-28 12:36:14 +01:00
NodeList.h LibWeb: Restore proper functionality of legacy platform objects 2023-02-28 12:36:14 +01:00
NodeList.idl LibWeb: Add imports to all IDL files that depend on others 2022-02-16 22:48:32 +03:30
NodeOperations.cpp LibJS+Everywhere: Propagate Cell::initialize errors from Heap::allocate 2023-01-29 00:02:45 +00:00
NodeOperations.h AK+Everywhere: Rename String to DeprecatedString 2022-12-06 08:54:33 +01:00
NonDocumentTypeChildNode.h Everywhere: Run clang-format 2022-04-01 21:24:45 +01:00
NonElementParentNode.h LibWeb: Fix a few const-ness issues 2023-03-06 13:05:43 +00:00
ParentNode.cpp LibWeb: Make HTMLCollection faster when it only cares about children 2023-05-23 14:38:45 +02:00
ParentNode.h AK+Everywhere: Rename FlyString to DeprecatedFlyString 2023-01-09 23:00:24 +00:00
ParentNode.idl LibWeb: Resolve circular IDL imports 2022-07-30 13:20:47 +02:00
Position.cpp LibWeb: Skip over grapheme clusters on left/right arrow key presses 2023-03-01 14:24:01 +00:00
Position.h LibWeb: Convert Web::DOM::Position::to_deprecated_string to String 2023-03-01 14:24:01 +00:00
ProcessingInstruction.cpp LibJS+Everywhere: Allow Cell::initialize overrides to throw OOM errors 2023-01-29 00:02:45 +00:00
ProcessingInstruction.h LibJS+Everywhere: Allow Cell::initialize overrides to throw OOM errors 2023-01-29 00:02:45 +00:00
ProcessingInstruction.idl LibWeb: Add Exposed attribute and IDL spec links where missing 2022-10-09 10:14:57 +02:00
QualifiedName.cpp LibWeb: Introduce CustomElementRegistry and creating custom elements 2023-04-06 11:36:56 +02:00
QualifiedName.h LibWeb: Introduce CustomElementRegistry and creating custom elements 2023-04-06 11:36:56 +02:00
Range.cpp LibWeb: Implement Range.createContextualFragment() 2023-03-10 14:58:55 +01:00
Range.h LibWeb: Implement Range.createContextualFragment() 2023-03-10 14:58:55 +01:00
Range.idl LibWeb: Implement Range.createContextualFragment() 2023-03-10 14:58:55 +01:00
ShadowRoot.cpp LibWeb: Allow to set a root mode value when constructing a ShadowRoot 2023-02-02 14:43:29 +01:00
ShadowRoot.h LibWeb: Introduce CustomElementRegistry and creating custom elements 2023-04-06 11:36:56 +02:00
ShadowRoot.idl LibWeb: Make ShadowRoot.mode return ShadowRootMode instead of String 2023-02-02 14:43:29 +01:00
StaticNodeList.cpp LibJS+LibWeb: Wrap raw JS::Cell*/& fields in GCPtr/NonnullGCPtr 2023-03-15 08:48:49 +01:00
StaticNodeList.h LibJS+LibWeb: Wrap raw JS::Cell*/& fields in GCPtr/NonnullGCPtr 2023-03-15 08:48:49 +01:00
StaticRange.cpp LibWeb: Return JS::NonnullGCPtr<StaticRange> instead of StaticRange* 2023-02-18 00:52:47 +01:00
StaticRange.h LibWeb: Return JS::NonnullGCPtr<StaticRange> instead of StaticRange* 2023-02-18 00:52:47 +01:00
StaticRange.idl LibWeb: Remove the NoInstanceWrapper extended IDL attribute 2022-09-06 00:27:09 +02:00
Text.cpp LibWeb: Make factory method of DOM::Text fallible 2023-02-18 00:52:47 +01:00
Text.h LibWeb: Make factory method of DOM::Text fallible 2023-02-18 00:52:47 +01:00
Text.idl LibWeb: Add Exposed attribute and IDL spec links where missing 2022-10-09 10:14:57 +02:00
TreeWalker.cpp LibWeb: Make factory method of DOM::TreeWalker fallible 2023-02-18 00:52:47 +01:00
TreeWalker.h LibWeb: Make factory method of DOM::TreeWalker fallible 2023-02-18 00:52:47 +01:00
TreeWalker.idl LibWeb: Remove the NoInstanceWrapper extended IDL attribute 2022-09-06 00:27:09 +02:00
XMLDocument.cpp LibWeb: Add XMLDocument stub 2023-04-21 07:59:50 +02:00
XMLDocument.h LibWeb: Add XMLDocument stub 2023-04-21 07:59:50 +02:00
XMLDocument.idl LibWeb: Add XMLDocument stub 2023-04-21 07:59:50 +02:00