Skip to content

Commit e89f36d

Browse files
Adding support for max/min-inline/block-size on logical (#859)
1 parent 5c7e4d7 commit e89f36d

12 files changed

+32
-3
lines changed

plugins/postcss-logical/CHANGELOG.md

+4
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,9 @@
11
# Changes to PostCSS Logical Properties
22

3+
### Unreleased (minor)
4+
5+
- Adding support for `max-block-size`, `min-block-size`, `max-inline-size` and `min-inline-size`.
6+
37
### 6.0.1 (January 28, 2023)
48

59
- Improve `types` declaration in `package.json`

plugins/postcss-logical/README.md

+4
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,7 @@
77
```pcss
88
.element {
99
block-size: 100px;
10+
max-inline-size: 400px;
1011
inline-size: 200px;
1112
padding-block: 10px 20px;
1213
margin-inline: auto;
@@ -18,6 +19,7 @@
1819
1920
.element {
2021
height: 100px;
22+
max-width: 400px;
2123
width: 200px;
2224
padding-top: 10px;
2325
padding-bottom: 20px;
@@ -78,6 +80,7 @@ postcssLogical({
7880
```pcss
7981
.element {
8082
block-size: 100px;
83+
max-inline-size: 400px;
8184
inline-size: 200px;
8285
padding-block: 10px 20px;
8386
margin-inline: auto;
@@ -89,6 +92,7 @@ postcssLogical({
8992
9093
.element {
9194
width: 100px;
95+
max-height: 400px;
9296
height: 200px;
9397
padding-right: 10px;
9498
padding-left: 20px;

plugins/postcss-logical/dist/index.cjs

+1-1
Large diffs are not rendered by default.

plugins/postcss-logical/dist/index.mjs

+1-1
Large diffs are not rendered by default.

plugins/postcss-logical/src/index.ts

+4
Original file line numberDiff line numberDiff line change
@@ -103,6 +103,10 @@ const creator: PluginCreator<pluginOptions> = (opts?: pluginOptions) => {
103103
// 4.1 Block Size and Inline Size
104104
'block-size': makeTransform(transformLogicalSize(directionConfig)),
105105
'inline-size': makeTransform(transformLogicalSize(directionConfig)),
106+
'min-block-size': makeTransform(transformLogicalSize(directionConfig)),
107+
'max-block-size': makeTransform(transformLogicalSize(directionConfig)),
108+
'min-inline-size': makeTransform(transformLogicalSize(directionConfig)),
109+
'max-inline-size': makeTransform(transformLogicalSize(directionConfig)),
106110
// 4.2 Margins
107111
'margin-block-start': makeTransform(
108112
transformSide('margin', blockStart),

plugins/postcss-logical/src/lib/transform-logical-size.ts

+3-1
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,9 @@ export function transformLogicalSize(
99
const { value } = declaration;
1010
const inlineProp = directionConfig.inlineIsHorizontal ? 'width' : 'height';
1111
const blockProp = directionConfig.inlineIsHorizontal ? 'height' : 'width';
12-
const prop = declaration.prop === 'block-size' ? blockProp : inlineProp;
12+
const prop = declaration.prop.toLowerCase()
13+
.replace('inline-size', inlineProp)
14+
.replace('block-size', blockProp);
1315

1416
cloneDeclaration(
1517
declaration,

plugins/postcss-logical/test/examples/example.chinese.expect.css

+1
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
.element {
22
width: 100px;
3+
max-height: 400px;
34
height: 200px;
45
padding-right: 10px;
56
padding-left: 20px;

plugins/postcss-logical/test/examples/example.css

+1
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
.element {
22
block-size: 100px;
3+
max-inline-size: 400px;
34
inline-size: 200px;
45
padding-block: 10px 20px;
56
margin-inline: auto;

plugins/postcss-logical/test/examples/example.expect.css

+1
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
.element {
22
height: 100px;
3+
max-width: 400px;
34
width: 200px;
45
padding-top: 10px;
56
padding-bottom: 20px;
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,8 @@
11
.foo {
22
width: 1px;
33
height: 2px;
4+
min-width: 3px;
5+
max-width: 4px;
6+
min-height: 5px;
7+
max-height: 6px;
48
}
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,8 @@
11
.foo {
22
block-size: 1px;
33
inline-size: 2px;
4+
min-block-size: 3px;
5+
max-block-size: 4px;
6+
min-inline-size: 5px;
7+
max-inline-size: 6px;
48
}
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,8 @@
11
.foo {
22
height: 1px;
33
width: 2px;
4+
min-height: 3px;
5+
max-height: 4px;
6+
min-width: 5px;
7+
max-width: 6px;
48
}

0 commit comments

Comments
 (0)