mirror of
https://github.com/RGBCube/serenity
synced 2025-05-31 12:28:12 +00:00
LibWeb: Implement Flex and FlexStyleValue types
This commit is contained in:
parent
f1d7ea67c0
commit
b0317bb3a1
15 changed files with 258 additions and 6 deletions
|
@ -45,6 +45,7 @@
|
|||
#include <LibWeb/CSS/StyleValues/EasingStyleValue.h>
|
||||
#include <LibWeb/CSS/StyleValues/EdgeStyleValue.h>
|
||||
#include <LibWeb/CSS/StyleValues/FilterValueListStyleValue.h>
|
||||
#include <LibWeb/CSS/StyleValues/FlexStyleValue.h>
|
||||
#include <LibWeb/CSS/StyleValues/FrequencyStyleValue.h>
|
||||
#include <LibWeb/CSS/StyleValues/GridAutoFlowStyleValue.h>
|
||||
#include <LibWeb/CSS/StyleValues/GridTemplateAreaStyleValue.h>
|
||||
|
@ -1757,6 +1758,9 @@ Optional<Dimension> Parser::parse_dimension(ComponentValue const& component_valu
|
|||
if (auto angle_type = Angle::unit_from_name(unit_string); angle_type.has_value())
|
||||
return Angle { numeric_value, angle_type.release_value() };
|
||||
|
||||
if (auto flex_type = Flex::unit_from_name(unit_string); flex_type.has_value())
|
||||
return Flex { numeric_value, flex_type.release_value() };
|
||||
|
||||
if (auto frequency_type = Frequency::unit_from_name(unit_string); frequency_type.has_value())
|
||||
return Frequency { numeric_value, frequency_type.release_value() };
|
||||
|
||||
|
@ -6194,6 +6198,7 @@ Optional<Parser::PropertyAndValue> Parser::parse_css_value_for_properties(Readon
|
|||
}
|
||||
|
||||
bool property_accepts_dimension = any_property_accepts_type(property_ids, ValueType::Angle).has_value()
|
||||
|| any_property_accepts_type(property_ids, ValueType::Flex).has_value()
|
||||
|| any_property_accepts_type(property_ids, ValueType::Frequency).has_value()
|
||||
|| any_property_accepts_type(property_ids, ValueType::Length).has_value()
|
||||
|| any_property_accepts_type(property_ids, ValueType::Percentage).has_value()
|
||||
|
@ -6231,6 +6236,13 @@ Optional<Parser::PropertyAndValue> Parser::parse_css_value_for_properties(Readon
|
|||
return PropertyAndValue { *property, AngleStyleValue::create(angle) };
|
||||
}
|
||||
}
|
||||
if (dimension.is_flex()) {
|
||||
auto flex = dimension.flex();
|
||||
if (auto property = any_property_accepts_type(property_ids, ValueType::Flex); property.has_value() && property_accepts_flex(*property, flex)) {
|
||||
transaction.commit();
|
||||
return PropertyAndValue { *property, FlexStyleValue::create(flex) };
|
||||
}
|
||||
}
|
||||
if (dimension.is_frequency()) {
|
||||
auto frequency = dimension.frequency();
|
||||
if (auto property = any_property_accepts_type(property_ids, ValueType::Frequency); property.has_value() && property_accepts_frequency(*property, frequency)) {
|
||||
|
@ -6281,6 +6293,9 @@ Optional<Parser::PropertyAndValue> Parser::parse_css_value_for_properties(Readon
|
|||
} else if (calculated.resolves_to_angle_percentage()) {
|
||||
if (auto property = any_property_accepts_type_percentage(property_ids, ValueType::Angle); property.has_value())
|
||||
return PropertyAndValue { *property, calculated };
|
||||
} else if (calculated.resolves_to_flex()) {
|
||||
if (auto property = any_property_accepts_type(property_ids, ValueType::Flex); property.has_value())
|
||||
return PropertyAndValue { *property, calculated };
|
||||
} else if (calculated.resolves_to_frequency()) {
|
||||
if (auto property = any_property_accepts_type(property_ids, ValueType::Frequency); property.has_value())
|
||||
return PropertyAndValue { *property, calculated };
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue