From b42cef5b03e08ebef29a21da2acf2769c299734c Mon Sep 17 00:00:00 2001 From: Stefan Bilharz Date: Mon, 19 Jan 2026 22:18:04 +0100 Subject: [PATCH] CSS-26 Implement pointer_events --- spec/pointer_events_spec.cr | 29 +++++++++++++++++++++++++++++ src/css/enums/pointer_events.cr | 30 ++++++++++++++++++++++++++++++ src/stylesheet.cr | 2 +- 3 files changed, 60 insertions(+), 1 deletion(-) create mode 100644 spec/pointer_events_spec.cr create mode 100644 src/css/enums/pointer_events.cr diff --git a/spec/pointer_events_spec.cr b/spec/pointer_events_spec.cr new file mode 100644 index 0000000..287de78 --- /dev/null +++ b/spec/pointer_events_spec.cr @@ -0,0 +1,29 @@ +require "./spec_helper" + +class PointerEventsStyle < CSS::Stylesheet + rule svg do + pointer_events :auto + pointer_events :none + pointer_events :visible_painted + pointer_events :visible_fill + pointer_events :visible_stroke + pointer_events :bounding_box + end +end + +describe "PointerEventsStyle.to_s" do + it "should return the correct CSS" do + expected = <<-CSS + svg { + pointer-events: auto; + pointer-events: none; + pointer-events: visiblePainted; + pointer-events: visibleFill; + pointer-events: visibleStroke; + pointer-events: bounding-box; + } + CSS + + PointerEventsStyle.to_s.should eq(expected) + end +end diff --git a/src/css/enums/pointer_events.cr b/src/css/enums/pointer_events.cr new file mode 100644 index 0000000..9ebb638 --- /dev/null +++ b/src/css/enums/pointer_events.cr @@ -0,0 +1,30 @@ +module CSS::Enums + enum PointerEvents + Auto + BoundingBox + VisiblePainted + VisibleFill + VisibleStroke + Visible + Painted + Fill + Stroke + All + None + + def to_css_value + case self + when BoundingBox + "bounding-box" + when VisiblePainted + "visiblePainted" + when VisibleFill + "visibleFill" + when VisibleStroke + "visibleStroke" + else + to_s.downcase + end + end + end +end diff --git a/src/stylesheet.cr b/src/stylesheet.cr index 63b659a..315145d 100644 --- a/src/stylesheet.cr +++ b/src/stylesheet.cr @@ -1187,7 +1187,7 @@ module CSS prop place_content, String prop place_items, String prop place_self, String - prop pointer_events, String + prop pointer_events, CSS::Enums::PointerEvents prop position, CSS::Enums::Position prop print_color_adjust, String prop quotes, String