Skip to content

Commit 36c8ada

Browse files
committed
Define padding scales and default paddings
Make defaults match previously hard-coded paddings for different appearance options. REDMINE-21191
1 parent 1d0a739 commit 36c8ada

File tree

5 files changed

+209
-0
lines changed

5 files changed

+209
-0
lines changed

entry_types/scrolled/config/locales/de.yml

Lines changed: 22 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1309,6 +1309,28 @@ de:
13091309
add: Neues Element
13101310
unset: Nicht mehr als Hintergrund verwenden
13111311
scales:
1312+
sectionPaddingTop:
1313+
none: "-"
1314+
xxxs: XXXS
1315+
xxs: XXS
1316+
xs: XS
1317+
sm: S
1318+
md: M
1319+
lg: L
1320+
xl: XL
1321+
xxl: XXL
1322+
xxxl: XXXL
1323+
sectionPaddingBottom:
1324+
none: "-"
1325+
xxxs: XXXS
1326+
xxs: XXS
1327+
xs: XS
1328+
sm: S
1329+
md: M
1330+
lg: L
1331+
xl: XL
1332+
xxl: XXL
1333+
xxxl: XXXL
13121334
contentElementBoxBorderRadius:
13131335
none: Keine
13141336
content_element_text_inline_file_rights_attributes:

entry_types/scrolled/config/locales/en.yml

Lines changed: 22 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1293,6 +1293,28 @@ en:
12931293
add: New element
12941294
unset: No longer use as backdrop
12951295
scales:
1296+
sectionPaddingTop:
1297+
none: "-"
1298+
xxxs: XXXS
1299+
xxs: XXS
1300+
xs: XS
1301+
sm: S
1302+
md: M
1303+
lg: L
1304+
xl: XL
1305+
xxl: XXL
1306+
xxxl: XXXL
1307+
sectionPaddingBottom:
1308+
none: "-"
1309+
xxxs: XXXS
1310+
xxs: XXS
1311+
xs: XS
1312+
sm: S
1313+
md: M
1314+
lg: L
1315+
xl: XL
1316+
xxl: XXL
1317+
xxxl: XXXL
12961318
contentElementBoxBorderRadius:
12971319
none: None
12981320
content_element_text_inline_file_rights_attributes:

entry_types/scrolled/lib/pageflow_scrolled/plugin.rb

Lines changed: 40 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,46 @@ def configure(config)
77
end
88

99
config.for_entry_type(PageflowScrolled.entry_type) do |c|
10+
padding_scale = {
11+
'none' => '0px',
12+
'xxxs' => '1.375em',
13+
'xxs' => '3em',
14+
'xs' => '4.375em',
15+
'sm' => '6em',
16+
'md' => 'max(7em, 10svh)',
17+
'lg' => 'max(8em, 10svh)',
18+
'xl' => 'max(9em, 15svh)',
19+
'xxl' => 'max(10em, 20svh)',
20+
'xxxl' => 'max(11em, 30svh)'
21+
}
22+
23+
c.themes.register_default_options(
24+
ThemeOptionsDefaultScale.new(
25+
prefix: 'section_padding_top',
26+
values: padding_scale
27+
)
28+
)
29+
30+
c.themes.register_default_options(
31+
ThemeOptionsDefaultScale.new(
32+
prefix: 'section_padding_bottom',
33+
values: padding_scale
34+
)
35+
)
36+
37+
c.themes.register_default_options(
38+
properties: {
39+
root: {
40+
'section_default_padding_top' => '1.375em',
41+
'section_default_padding_bottom' => '4.375em'
42+
},
43+
cards_appearance_section: {
44+
'section_default_padding_top' => '3em',
45+
'section_default_padding_bottom' => '6em'
46+
}
47+
}
48+
)
49+
1050
c.file_types.register(Pageflow::BuiltInFileType.image)
1151
c.file_types.register(Pageflow::BuiltInFileType.video)
1252
c.file_types.register(Pageflow::BuiltInFileType.audio)
Lines changed: 35 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,35 @@
1+
module PageflowScrolled
2+
# Callable that ensures a scale with the given prefix is defined
3+
# in theme options. If the theme already defines any properties
4+
# with the prefix, the defaults are not added.
5+
#
6+
# @api private
7+
class ThemeOptionsDefaultScale
8+
def initialize(prefix:, values:)
9+
@prefix = prefix
10+
@values = values
11+
end
12+
13+
def call(options)
14+
return options if scale_defined?(options)
15+
16+
options.deep_merge(
17+
properties: {
18+
root: prefixed_values
19+
}
20+
)
21+
end
22+
23+
private
24+
25+
def scale_defined?(options)
26+
options.dig(:properties, :root)&.keys&.any? do |key|
27+
key.to_s.start_with?("#{@prefix}-")
28+
end
29+
end
30+
31+
def prefixed_values
32+
@values.transform_keys { |key| "#{@prefix}-#{key}" }
33+
end
34+
end
35+
end
Lines changed: 90 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,90 @@
1+
require 'spec_helper'
2+
3+
module PageflowScrolled
4+
RSpec.describe ThemeOptionsDefaultScale do
5+
it 'adds scale defaults if no scale properties defined' do
6+
transform = ThemeOptionsDefaultScale.new(
7+
prefix: 'section_padding_top',
8+
values: {'none' => '0', 'sm' => '1em'}
9+
)
10+
11+
result = transform.call({})
12+
13+
expect(result).to eq(
14+
properties: {
15+
root: {
16+
'section_padding_top-none' => '0',
17+
'section_padding_top-sm' => '1em'
18+
}
19+
}
20+
)
21+
end
22+
23+
it 'preserves existing theme options' do
24+
transform = ThemeOptionsDefaultScale.new(
25+
prefix: 'section_padding_top',
26+
values: {'none' => '0', 'sm' => '1em'}
27+
)
28+
29+
result = transform.call(colors: {accent: '#f00'})
30+
31+
expect(result).to eq(
32+
colors: {accent: '#f00'},
33+
properties: {
34+
root: {
35+
'section_padding_top-none' => '0',
36+
'section_padding_top-sm' => '1em'
37+
}
38+
}
39+
)
40+
end
41+
42+
it 'does not add defaults if theme defines any scale property' do
43+
transform = ThemeOptionsDefaultScale.new(
44+
prefix: 'section_padding_top',
45+
values: {'none' => '0', 'sm' => '1em', 'md' => '2em'}
46+
)
47+
48+
result = transform.call(
49+
properties: {
50+
root: {
51+
'section_padding_top-lg' => '5em'
52+
}
53+
}
54+
)
55+
56+
expect(result).to eq(
57+
properties: {
58+
root: {
59+
'section_padding_top-lg' => '5em'
60+
}
61+
}
62+
)
63+
end
64+
65+
it 'adds defaults for one scale even if other scale is defined' do
66+
transform = ThemeOptionsDefaultScale.new(
67+
prefix: 'section_padding_top',
68+
values: {'none' => '0', 'sm' => '1em'}
69+
)
70+
71+
result = transform.call(
72+
properties: {
73+
root: {
74+
'section_padding_bottom-lg' => '5em'
75+
}
76+
}
77+
)
78+
79+
expect(result).to eq(
80+
properties: {
81+
root: {
82+
'section_padding_bottom-lg' => '5em',
83+
'section_padding_top-none' => '0',
84+
'section_padding_top-sm' => '1em'
85+
}
86+
}
87+
)
88+
end
89+
end
90+
end

0 commit comments

Comments
 (0)