From 18cbafe29451c2a7cab7caabf1dac9a859970c21 Mon Sep 17 00:00:00 2001 From: Stefan Bilharz Date: Tue, 20 Jan 2026 22:04:34 +0100 Subject: [PATCH] CSS-27 Implement user_select --- spec/user_select_spec.cr | 53 ++++++++++++++++++++++++++++++++++++ src/css/enums/user_select.cr | 7 +++++ src/stylesheet.cr | 2 +- 3 files changed, 61 insertions(+), 1 deletion(-) create mode 100644 spec/user_select_spec.cr create mode 100644 src/css/enums/user_select.cr diff --git a/spec/user_select_spec.cr b/spec/user_select_spec.cr new file mode 100644 index 0000000..c251a99 --- /dev/null +++ b/spec/user_select_spec.cr @@ -0,0 +1,53 @@ +require "./spec_helper" + +module CSS::UserSelectSpec + class Style < CSS::Stylesheet + rule p do + user_select :auto + end + + rule span do + user_select :text + end + + rule div do + user_select :none + end + + rule section do + user_select :contain + end + + rule article do + user_select :all + end + end + + describe "Style.to_s" do + it "renders supported user-select values" do + expected = <<-CSS + p { + user-select: auto; + } + + span { + user-select: text; + } + + div { + user-select: none; + } + + section { + user-select: contain; + } + + article { + user-select: all; + } + CSS + + Style.to_s.should eq(expected) + end + end +end diff --git a/src/css/enums/user_select.cr b/src/css/enums/user_select.cr new file mode 100644 index 0000000..2fbb0a8 --- /dev/null +++ b/src/css/enums/user_select.cr @@ -0,0 +1,7 @@ +css_enum UserSelect do + Auto + Text + None + Contain + All +end diff --git a/src/stylesheet.cr b/src/stylesheet.cr index 315145d..7d617da 100644 --- a/src/stylesheet.cr +++ b/src/stylesheet.cr @@ -1304,7 +1304,7 @@ module CSS prop transition_timing_function, String prop translate, String prop unicode_bidi, String - prop user_select, String + prop user_select, CSS::Enums::UserSelect prop vector_effect, String prop vertical_align, CSS::LengthPercentage | CSS::Enums::VerticalAlign prop view_transition_class, String