katalyst-tables 3.6.2 → 3.8.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (46) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG.md +33 -0
  3. data/app/assets/builds/katalyst/tables.min.js.map +1 -1
  4. data/app/assets/images/katalyst/tables/icons/sort-asc.svg +3 -0
  5. data/app/assets/images/katalyst/tables/icons/sort-desc.svg +3 -0
  6. data/app/assets/stylesheets/katalyst/_tables.scss +3 -0
  7. data/app/assets/stylesheets/katalyst/tables/query.css +142 -0
  8. data/app/assets/stylesheets/katalyst/tables/{_summary.scss → summary.css} +1 -1
  9. data/app/assets/stylesheets/katalyst/tables/table.css +164 -0
  10. data/app/assets/stylesheets/katalyst/tables.css +3 -0
  11. data/app/components/concerns/katalyst/tables/orderable.rb +1 -1
  12. data/app/components/concerns/katalyst/tables/sortable.rb +1 -1
  13. data/app/components/katalyst/summary_table_component.rb +4 -2
  14. data/app/components/katalyst/table_component.rb +5 -1
  15. data/app/components/katalyst/tables/cells/boolean_component.rb +1 -1
  16. data/app/components/katalyst/tables/cells/currency_component.rb +1 -1
  17. data/app/components/katalyst/tables/cells/date_component.rb +1 -1
  18. data/app/components/katalyst/tables/cells/date_time_component.rb +1 -1
  19. data/app/components/katalyst/tables/cells/enum_component.rb +1 -1
  20. data/app/components/katalyst/tables/cells/number_component.rb +1 -1
  21. data/app/components/katalyst/tables/cells/ordinal_component.rb +3 -3
  22. data/app/components/katalyst/tables/cells/rich_text_component.rb +1 -1
  23. data/app/components/katalyst/tables/cells/select_component.rb +4 -4
  24. data/app/components/katalyst/tables/query/input_component.html.erb +1 -1
  25. data/app/components/katalyst/tables/query/modal_component.html.erb +1 -1
  26. data/app/components/katalyst/tables/query_component.rb +2 -1
  27. data/app/models/katalyst/tables/suggestions/constant_value.rb +1 -3
  28. data/app/models/katalyst/tables/suggestions/database_value.rb +1 -5
  29. data/lib/katalyst/tables/collection/type/boolean.rb +2 -4
  30. data/lib/katalyst/tables/collection/type/date.rb +6 -8
  31. data/lib/katalyst/tables/collection/type/enum.rb +10 -2
  32. data/lib/katalyst/tables/collection/type/string.rb +24 -5
  33. data/lib/katalyst/tables/collection/type/value.rb +33 -28
  34. metadata +10 -19
  35. data/app/assets/stylesheets/katalyst/tables/_index.scss +0 -3
  36. data/app/assets/stylesheets/katalyst/tables/_ordinal.scss +0 -38
  37. data/app/assets/stylesheets/katalyst/tables/_query.scss +0 -142
  38. data/app/assets/stylesheets/katalyst/tables/_select.scss +0 -7
  39. data/app/assets/stylesheets/katalyst/tables/_table.scss +0 -128
  40. data/app/assets/stylesheets/katalyst/tables/typed-columns/_boolean.scss +0 -4
  41. data/app/assets/stylesheets/katalyst/tables/typed-columns/_currency.scss +0 -8
  42. data/app/assets/stylesheets/katalyst/tables/typed-columns/_date.scss +0 -4
  43. data/app/assets/stylesheets/katalyst/tables/typed-columns/_datetime.scss +0 -4
  44. data/app/assets/stylesheets/katalyst/tables/typed-columns/_enum.scss +0 -19
  45. data/app/assets/stylesheets/katalyst/tables/typed-columns/_index.scss +0 -6
  46. data/app/assets/stylesheets/katalyst/tables/typed-columns/_number.scss +0 -8
@@ -0,0 +1,3 @@
1
+ @import url("tables/query.css");
2
+ @import url("tables/table.css");
3
+ @import url("tables/summary.css");
@@ -55,7 +55,7 @@ module Katalyst
55
55
  action: %W[mousedown->#{LIST_CONTROLLER}#mousedown
56
56
  turbo:before-morph-element->#{LIST_CONTROLLER}#beforeMorphElement:self],
57
57
  "#{LIST_CONTROLLER}-#{FORM_CONTROLLER}-outlet" => "##{Orderable.default_form_id(collection)}",
58
- "#{LIST_CONTROLLER}-#{ITEM_CONTROLLER}-outlet" => "td.ordinal",
58
+ "#{LIST_CONTROLLER}-#{ITEM_CONTROLLER}-outlet" => "td[data-cell-type=ordinal]",
59
59
  },
60
60
  )
61
61
  end
@@ -58,7 +58,7 @@ module Katalyst
58
58
  end
59
59
 
60
60
  def default_html_attributes
61
- { data: { turbo_action: "replace" } }
61
+ { class: "sortable", data: { turbo_action: "replace" } }
62
62
  end
63
63
  end
64
64
  end
@@ -21,8 +21,6 @@ module Katalyst
21
21
  super(collection: [model], **)
22
22
 
23
23
  @summary_rows = []
24
-
25
- update_html_attributes(class: "summary-table")
26
24
  end
27
25
 
28
26
  def with_cell(cell, &)
@@ -40,5 +38,9 @@ module Katalyst
40
38
  @index += 1
41
39
  end
42
40
  end
41
+
42
+ def default_html_attributes
43
+ { class: "katalyst--summary-table" }
44
+ end
43
45
  end
44
46
  end
@@ -230,7 +230,7 @@ module Katalyst
230
230
  # @example Render a generic text column for any value that supports `to_s`
231
231
  # <% row.enum :status %>
232
232
  # <%# label => <th>Status</th> %>
233
- # <%# data => <td class="type-enum"><span data-enum="status" data-value="published">Published</span></td> %>
233
+ # <%# data => <td data-cell-type="enum"><span data-enum="status" data-value="published">Published</span></td> %>
234
234
  def enum(column, label: nil, heading: false, **, &)
235
235
  with_cell(Tables::Cells::EnumComponent.new(
236
236
  collection:, row:, column:, record:, label:, heading:, **,
@@ -317,6 +317,10 @@ module Katalyst
317
317
 
318
318
  private
319
319
 
320
+ def default_html_attributes
321
+ { class: "katalyst--table" }
322
+ end
323
+
320
324
  # Extension point for subclasses and extensions to customize header row rendering.
321
325
  def add_header_row_callback(&block)
322
326
  @header_row_callbacks << block
@@ -12,7 +12,7 @@ module Katalyst
12
12
  private
13
13
 
14
14
  def default_html_attributes
15
- { class: "type-boolean" }
15
+ { data: { cell_type: "boolean" } }
16
16
  end
17
17
  end
18
18
  end
@@ -40,7 +40,7 @@ module Katalyst
40
40
  private
41
41
 
42
42
  def default_html_attributes
43
- { class: "type-currency" }
43
+ { data: { cell_type: "currency" } }
44
44
  end
45
45
  end
46
46
  end
@@ -26,7 +26,7 @@ module Katalyst
26
26
 
27
27
  def default_html_attributes
28
28
  {
29
- class: "type-date",
29
+ data: { cell_type: "date" },
30
30
  title: (absolute_time if row.body? && @relative && value.present? && days_ago_in_words(value).present?),
31
31
  }
32
32
  end
@@ -28,7 +28,7 @@ module Katalyst
28
28
 
29
29
  def default_html_attributes
30
30
  {
31
- class: "type-datetime",
31
+ data: { cell_type: "datetime" },
32
32
  title: (absolute_time if row.body? && @relative && today?),
33
33
  }
34
34
  end
@@ -15,7 +15,7 @@ module Katalyst
15
15
  private
16
16
 
17
17
  def default_html_attributes
18
- { class: "type-enum" }
18
+ { data: { cell_type: "enum" } }
19
19
  end
20
20
  end
21
21
  end
@@ -44,7 +44,7 @@ module Katalyst
44
44
  private
45
45
 
46
46
  def default_html_attributes
47
- { class: "type-number" }
47
+ { data: { cell_type: "number" } }
48
48
  end
49
49
  end
50
50
  end
@@ -18,11 +18,11 @@ module Katalyst
18
18
 
19
19
  def default_html_attributes
20
20
  if @row.header?
21
- { class: "ordinal" }
21
+ { data: { cell_type: "ordinal" } }
22
22
  else
23
23
  {
24
- class: "ordinal",
25
- data: {
24
+ data: {
25
+ cell_type: "ordinal",
26
26
  controller: Orderable::ITEM_CONTROLLER,
27
27
  "#{Orderable::ITEM_CONTROLLER}-params-value": params.to_json,
28
28
  },
@@ -11,7 +11,7 @@ module Katalyst
11
11
 
12
12
  def default_html_attributes
13
13
  {
14
- class: "type-rich-text",
14
+ data: { cell_type: "rich-text" },
15
15
  title: (value.to_plain_text unless row.header?),
16
16
  }
17
17
  end
@@ -24,16 +24,16 @@ module Katalyst
24
24
  def default_html_attributes
25
25
  if @row.header?
26
26
  {
27
- class: "selection",
28
- data: {
27
+ data: {
28
+ cell_type: "selection",
29
29
  "#{Selectable::TABLE_CONTROLLER}-target" => "header",
30
30
  action: "change->#{Selectable::TABLE_CONTROLLER}#toggleHeader",
31
31
  },
32
32
  }
33
33
  else
34
34
  {
35
- class: "selection",
36
- data: {
35
+ data: {
36
+ cell_type: "selection",
37
37
  controller: Selectable::ITEM_CONTROLLER,
38
38
  action: "change->#{Selectable::ITEM_CONTROLLER}#change",
39
39
  "#{Selectable::ITEM_CONTROLLER}-params-value" => @params.to_json,
@@ -15,5 +15,5 @@
15
15
  ) %>
16
16
  <div aria-hidden="true" class="highlight" data-tables--query-input-target="highlight"><%= form.object.query %></div>
17
17
  <%= form.hidden_field(:p) %>
18
- <%= form.button("Apply", type: :submit, name: nil, tabindex: -1) %>
18
+ <%= form.button("Apply", type: :submit, name: nil, tabindex: -1, class: "button") %>
19
19
  <% end %>
@@ -9,7 +9,7 @@
9
9
  <div class="content">
10
10
  <% if suggestions? %>
11
11
  <h4 id="suggestions-title"><%= t(".suggestions_title") %></h4>
12
- <ul id="suggestions" role="listbox" aria-labelledby="suggestions-title">
12
+ <ul id="suggestions" class="suggestions" role="listbox" aria-labelledby="suggestions-title">
13
13
  <% suggestions.each do |suggestion| %>
14
14
  <%= render suggestion %>
15
15
  <% end %>
@@ -80,7 +80,8 @@ module Katalyst
80
80
 
81
81
  def default_html_attributes
82
82
  {
83
- data: {
83
+ class: "katalyst--tables--query",
84
+ data: {
84
85
  controller: "tables--query",
85
86
  turbo_action: :replace,
86
87
  action: %w[
@@ -6,12 +6,10 @@ module Katalyst
6
6
  class ConstantValue < Base
7
7
  delegate :to_param, to: :@attribute_type
8
8
 
9
- def initialize(name:, type:, model:, column:, value:)
9
+ def initialize(name:, type:, value:)
10
10
  super(value)
11
11
 
12
12
  @attribute_type = type
13
- @model = model
14
- @column = column
15
13
  @name = name
16
14
  end
17
15
 
@@ -4,16 +4,12 @@ module Katalyst
4
4
  module Tables
5
5
  module Suggestions
6
6
  class DatabaseValue < Base
7
- attr_reader :model, :column
8
-
9
7
  delegate :to_param, to: :@attribute_type
10
8
 
11
- def initialize(name:, type:, model:, column:, value:)
9
+ def initialize(name:, type:, value:)
12
10
  super(value)
13
11
 
14
12
  @attribute_type = type
15
- @model = model
16
- @column = column
17
13
  @name = name
18
14
  end
19
15
 
@@ -22,16 +22,14 @@ module Katalyst
22
22
  end
23
23
  end
24
24
 
25
- def suggestions(scope, attribute)
26
- _, model, column = model_and_column_for(scope, attribute)
27
-
25
+ def suggestions(_scope, attribute)
28
26
  values = %w[true false]
29
27
 
30
28
  if attribute.value_before_type_cast.present?
31
29
  values = values.select { |value| value.include?(attribute.value_before_type_cast) }
32
30
  end
33
31
 
34
- values.map { |v| constant_suggestion(attribute:, model:, column:, value: deserialize(v)) }
32
+ values.map { |v| constant_suggestion(attribute:, value: deserialize(v)) }
35
33
  end
36
34
  end
37
35
  end
@@ -7,6 +7,8 @@ module Katalyst
7
7
  class Date < Value
8
8
  include Helpers::Range
9
9
 
10
+ ISO_DATE = /\A(?<year>\d{4})-(?<month>\d\d)-(?<day>\d\d)\z/
11
+
10
12
  define_range_patterns /\d{4}-\d\d-\d\d/
11
13
 
12
14
  def type
@@ -23,21 +25,17 @@ module Katalyst
23
25
  end
24
26
 
25
27
  def suggestions(scope, attribute)
26
- _, model, column = model_and_column_for(scope, attribute)
27
-
28
28
  [
29
29
  *super(scope, attribute, limit: 6, order: :desc),
30
- database_suggestion(attribute:, model:, column:, value: ::Date.current.beginning_of_week..),
31
- database_suggestion(attribute:, model:, column:, value: ::Date.current.beginning_of_month..),
32
- database_suggestion(attribute:, model:, column:, value: 1.month.ago.all_month),
33
- database_suggestion(attribute:, model:, column:, value: 1.year.ago.all_year),
30
+ database_suggestion(attribute:, value: ::Date.current.beginning_of_week..),
31
+ database_suggestion(attribute:, value: ::Date.current.beginning_of_month..),
32
+ database_suggestion(attribute:, value: 1.month.ago.all_month),
33
+ database_suggestion(attribute:, value: 1.year.ago.all_year),
34
34
  ]
35
35
  end
36
36
 
37
37
  private
38
38
 
39
- ISO_DATE = /\A(?<year>\d{4})-(?<month>\d\d)-(?<day>\d\d)\z/
40
-
41
39
  def cast_value(value)
42
40
  return value unless value.is_a?(::String)
43
41
 
@@ -16,7 +16,15 @@ module Katalyst
16
16
  end
17
17
 
18
18
  def suggestions(scope, attribute)
19
- _, model, column = model_and_column_for(scope, attribute)
19
+ model = scope.model
20
+ column = attribute.name
21
+
22
+ if attribute.name.include?(".")
23
+ table_name, column = attribute.name.split(".")
24
+ model = scope.model.reflections[table_name].klass
25
+
26
+ raise(ArgumentError, "Unknown association '#{table_name}' for #{scope.model}") unless model
27
+ end
20
28
 
21
29
  raise ArgumentError, "Unknown enum #{column} for #{model}" unless model.defined_enums.has_key?(column)
22
30
 
@@ -26,7 +34,7 @@ module Katalyst
26
34
  values = values.select { |key| key.include?(attribute.value_before_type_cast) }
27
35
  end
28
36
 
29
- values.map { |value| constant_suggestion(attribute:, model:, column:, value:) }
37
+ values.map { |value| constant_suggestion(attribute:, value:) }
30
38
  end
31
39
 
32
40
  private
@@ -5,8 +5,6 @@ module Katalyst
5
5
  module Collection
6
6
  module Type
7
7
  class String < Value
8
- include ActiveRecord::Sanitization::ClassMethods
9
-
10
8
  attr_reader :exact
11
9
  alias_method :exact?, :exact
12
10
 
@@ -21,11 +19,32 @@ module Katalyst
21
19
 
22
20
  private
23
21
 
24
- def filter_condition(model, column, value)
25
- if exact? || scope
22
+ class Match
23
+ include ActiveRecord::Sanitization::ClassMethods
24
+
25
+ attr_reader :value
26
+
27
+ def initialize(value)
28
+ @value = value
29
+ end
30
+
31
+ def to_sql
32
+ "%#{sanitize_sql_like(value)}%"
33
+ end
34
+ end
35
+
36
+ class MatchHandler
37
+ def call(attribute, value)
38
+ attribute.matches(value.to_sql)
39
+ end
40
+ end
41
+
42
+ def apply_filter(scope, model, attribute, value)
43
+ if exact?
26
44
  super
27
45
  else
28
- model.where(model.arel_table[column].matches("%#{sanitize_sql_like(value)}%"))
46
+ model.predicate_builder.register_handler(Match, MatchHandler.new)
47
+ scope.where(attribute.name => Match.new(value))
29
48
  end
30
49
  end
31
50
  end
@@ -33,10 +33,18 @@ module Katalyst
33
33
  def filter(scope, attribute, value: filter_value(attribute))
34
34
  return scope unless filter?(attribute, value)
35
35
 
36
- scope, model, column = model_and_column_for(scope, attribute)
37
- condition = filter_condition(model, column, value)
36
+ if self.scope.present?
37
+ scope.public_send(self.scope, value)
38
+ elsif attribute.name.include?(".")
39
+ table_name, = attribute.name.split(".")
40
+ association = scope.model.reflections[table_name]
38
41
 
39
- scope.merge(condition)
42
+ raise(ArgumentError, "Unknown association '#{table_name}' for #{scope.model}") unless association
43
+
44
+ apply_filter(scope.joins(table_name.to_sym), association.klass, attribute, value)
45
+ else
46
+ apply_filter(scope, scope.model, attribute, value)
47
+ end
40
48
  end
41
49
 
42
50
  def to_param(value)
@@ -44,54 +52,51 @@ module Katalyst
44
52
  end
45
53
 
46
54
  def suggestions(scope, attribute, limit: 10, order: :asc)
47
- scope, model, column = model_and_column_for(scope, attribute)
55
+ model = scope.model
56
+ column = attribute.name
57
+
58
+ if attribute.name.include?(".")
59
+ table_name, column = attribute.name.split(".")
60
+ model = scope.model.reflections[table_name].klass
61
+
62
+ raise(ArgumentError, "Unknown association '#{table_name}' for #{scope.model}") unless model
63
+
64
+ scope = scope.joins(table_name.to_sym)
65
+ end
48
66
 
49
67
  unless model.attribute_types.has_key?(column)
50
68
  raise(ArgumentError, "Unknown column '#{column}' for #{model}. " \
51
69
  "Consider defining '#{attribute.name.parameterize.underscore}_suggestions'")
52
70
  end
53
71
 
54
- arel_column = model.arel_table[column]
55
-
56
72
  filter(scope, attribute)
57
- .group(arel_column)
73
+ .group(attribute.name)
58
74
  .distinct
59
75
  .limit(limit)
60
- .reorder(arel_column => order)
61
- .pluck(arel_column)
62
- .map { |v| database_suggestion(attribute:, model:, column:, value: deserialize(v)) }
76
+ .reorder(attribute.name => order)
77
+ .pluck(attribute.name)
78
+ .map { |v| database_suggestion(attribute:, value: deserialize(v)) }
63
79
  end
64
80
 
65
81
  private
66
82
 
67
- def constant_suggestion(attribute:, model:, column:, value:)
68
- Tables::Suggestions::ConstantValue.new(name: attribute.name, type: attribute.type, model:, column:, value:)
83
+ def constant_suggestion(attribute:, value:)
84
+ Tables::Suggestions::ConstantValue.new(name: attribute.name, type: attribute.type, value:)
69
85
  end
70
86
 
71
- def database_suggestion(attribute:, model:, column:, value:)
72
- Tables::Suggestions::DatabaseValue.new(name: attribute.name, type: attribute.type, model:, column:, value:)
87
+ def database_suggestion(attribute:, value:)
88
+ Tables::Suggestions::DatabaseValue.new(name: attribute.name, type: attribute.type, value:)
73
89
  end
74
90
 
75
91
  def filter_value(attribute)
76
92
  attribute.value
77
93
  end
78
94
 
79
- def filter_condition(model, column, value)
95
+ def apply_filter(scope, _model, attribute, value)
80
96
  if value.nil?
81
- model.none
82
- elsif scope
83
- model.public_send(scope, value)
84
- else
85
- model.where(column => serialize(value))
86
- end
87
- end
88
-
89
- def model_and_column_for(scope, attribute)
90
- if attribute.name.include?(".")
91
- table, column = attribute.name.split(".")
92
- [scope.joins(table.to_sym), scope.model.reflections[table].klass, column]
97
+ scope.none
93
98
  else
94
- [scope, scope.model, attribute.name]
99
+ scope.where(attribute.name => serialize(value))
95
100
  end
96
101
  end
97
102
  end
metadata CHANGED
@@ -1,14 +1,13 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: katalyst-tables
3
3
  version: !ruby/object:Gem::Version
4
- version: 3.6.2
4
+ version: 3.8.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Katalyst Interactive
8
- autorequire:
9
8
  bindir: bin
10
9
  cert_chain: []
11
- date: 2024-11-06 00:00:00.000000000 Z
10
+ date: 2025-03-12 00:00:00.000000000 Z
12
11
  dependencies:
13
12
  - !ruby/object:Gem::Dependency
14
13
  name: katalyst-html-attributes
@@ -54,19 +53,13 @@ files:
54
53
  - app/assets/builds/katalyst/tables.min.js
55
54
  - app/assets/builds/katalyst/tables.min.js.map
56
55
  - app/assets/config/katalyst-tables.js
57
- - app/assets/stylesheets/katalyst/tables/_index.scss
58
- - app/assets/stylesheets/katalyst/tables/_ordinal.scss
59
- - app/assets/stylesheets/katalyst/tables/_query.scss
60
- - app/assets/stylesheets/katalyst/tables/_select.scss
61
- - app/assets/stylesheets/katalyst/tables/_summary.scss
62
- - app/assets/stylesheets/katalyst/tables/_table.scss
63
- - app/assets/stylesheets/katalyst/tables/typed-columns/_boolean.scss
64
- - app/assets/stylesheets/katalyst/tables/typed-columns/_currency.scss
65
- - app/assets/stylesheets/katalyst/tables/typed-columns/_date.scss
66
- - app/assets/stylesheets/katalyst/tables/typed-columns/_datetime.scss
67
- - app/assets/stylesheets/katalyst/tables/typed-columns/_enum.scss
68
- - app/assets/stylesheets/katalyst/tables/typed-columns/_index.scss
69
- - app/assets/stylesheets/katalyst/tables/typed-columns/_number.scss
56
+ - app/assets/images/katalyst/tables/icons/sort-asc.svg
57
+ - app/assets/images/katalyst/tables/icons/sort-desc.svg
58
+ - app/assets/stylesheets/katalyst/_tables.scss
59
+ - app/assets/stylesheets/katalyst/tables.css
60
+ - app/assets/stylesheets/katalyst/tables/query.css
61
+ - app/assets/stylesheets/katalyst/tables/summary.css
62
+ - app/assets/stylesheets/katalyst/tables/table.css
70
63
  - app/components/concerns/katalyst/tables/has_table_content.rb
71
64
  - app/components/concerns/katalyst/tables/identifiable.rb
72
65
  - app/components/concerns/katalyst/tables/orderable.rb
@@ -175,7 +168,6 @@ metadata:
175
168
  homepage_uri: https://github.com/katalyst/tables
176
169
  source_code_uri: https://github.com/katalyst/tables
177
170
  changelog_uri: https://github.com/katalyst/tables/blobs/main/CHANGELOG.md
178
- post_install_message:
179
171
  rdoc_options: []
180
172
  require_paths:
181
173
  - lib
@@ -190,8 +182,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
190
182
  - !ruby/object:Gem::Version
191
183
  version: '0'
192
184
  requirements: []
193
- rubygems_version: 3.5.16
194
- signing_key:
185
+ rubygems_version: 3.6.2
195
186
  specification_version: 4
196
187
  summary: HTML table generator for Rails views
197
188
  test_files: []
@@ -1,3 +0,0 @@
1
- @use "query";
2
- @use "table";
3
- @use "summary";
@@ -1,38 +0,0 @@
1
- $width: 2rem !default;
2
- $time: 125ms !default;
3
-
4
- table {
5
- tr {
6
- transition:
7
- top $time ease-in-out,
8
- transform $time ease-in-out;
9
- }
10
-
11
- tr[dragging] {
12
- transition: transform $time ease-in-out;
13
- filter: drop-shadow(0 0 0.5rem var(--row-border-color));
14
- transform: scale(1.01);
15
- td {
16
- box-shadow: none;
17
- }
18
- }
19
-
20
- th.ordinal {
21
- width: $width;
22
- padding-left: 0;
23
- a {
24
- width: $width;
25
- height: 3rem;
26
- }
27
- a::after {
28
- margin-left: 0.4rem;
29
- }
30
- }
31
-
32
- td.ordinal {
33
- width: $width;
34
- padding-left: 0;
35
- cursor: grab;
36
- text-align: center;
37
- }
38
- }