Skip to content

Commit b3c09b3

Browse files
committed
Refactor borderWidth utility to support mini-programs and enhance functionality
1 parent bc92cb0 commit b3c09b3

2 files changed

Lines changed: 130 additions & 19 deletions

File tree

src/corePlugins.js

Lines changed: 125 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -1650,25 +1650,131 @@ export let corePlugins = {
16501650
],
16511651
]),
16521652

1653-
borderWidth: createUtilityPlugin(
1654-
'borderWidth',
1655-
[
1656-
['border', [['@defaults border-width', {}], 'border-width']],
1657-
[
1658-
['border-x', [['@defaults border-width', {}], 'border-left-width', 'border-right-width']],
1659-
['border-y', [['@defaults border-width', {}], 'border-top-width', 'border-bottom-width']],
1660-
],
1661-
[
1662-
['border-s', [['@defaults border-width', {}], 'border-inline-start-width']],
1663-
['border-e', [['@defaults border-width', {}], 'border-inline-end-width']],
1664-
['border-t', [['@defaults border-width', {}], 'border-top-width']],
1665-
['border-r', [['@defaults border-width', {}], 'border-right-width']],
1666-
['border-b', [['@defaults border-width', {}], 'border-bottom-width']],
1667-
['border-l', [['@defaults border-width', {}], 'border-left-width']],
1668-
],
1669-
],
1670-
{ type: ['line-width', 'length'] }
1671-
),
1653+
borderWidth: ({ matchUtilities, theme }, { tailwindConfig }) => {
1654+
let transformValue = transformThemeValue('borderWidth')
1655+
let isMiniPrograms = tailwindConfig?.miniPrograms
1656+
1657+
matchUtilities(
1658+
{
1659+
border: (value) => {
1660+
let result = {
1661+
'@defaults border-width': {},
1662+
'border-width': transformValue(value),
1663+
}
1664+
if (isMiniPrograms) {
1665+
result['border-style'] = 'solid'
1666+
}
1667+
return result
1668+
},
1669+
},
1670+
{
1671+
type: ['line-width', 'length'],
1672+
values: theme('borderWidth'),
1673+
}
1674+
)
1675+
1676+
matchUtilities(
1677+
{
1678+
'border-x': (value) => {
1679+
let result = {
1680+
'@defaults border-width': {},
1681+
'border-left-width': transformValue(value),
1682+
'border-right-width': transformValue(value),
1683+
}
1684+
if (isMiniPrograms) {
1685+
result['border-left-style'] = 'solid'
1686+
result['border-right-style'] = 'solid'
1687+
}
1688+
return result
1689+
},
1690+
'border-y': (value) => {
1691+
let result = {
1692+
'@defaults border-width': {},
1693+
'border-top-width': transformValue(value),
1694+
'border-bottom-width': transformValue(value),
1695+
}
1696+
if (isMiniPrograms) {
1697+
result['border-top-style'] = 'solid'
1698+
result['border-bottom-style'] = 'solid'
1699+
}
1700+
return result
1701+
},
1702+
},
1703+
{
1704+
type: ['line-width', 'length'],
1705+
values: theme('borderWidth'),
1706+
}
1707+
)
1708+
1709+
matchUtilities(
1710+
{
1711+
'border-s': (value) => {
1712+
let result = {
1713+
'@defaults border-width': {},
1714+
'border-inline-start-width': transformValue(value),
1715+
}
1716+
if (isMiniPrograms) {
1717+
result['border-inline-start-style'] = 'solid'
1718+
}
1719+
return result
1720+
},
1721+
'border-e': (value) => {
1722+
let result = {
1723+
'@defaults border-width': {},
1724+
'border-inline-end-width': transformValue(value),
1725+
}
1726+
if (isMiniPrograms) {
1727+
result['border-inline-end-style'] = 'solid'
1728+
}
1729+
return result
1730+
},
1731+
'border-t': (value) => {
1732+
let result = {
1733+
'@defaults border-width': {},
1734+
'border-top-width': transformValue(value),
1735+
}
1736+
if (isMiniPrograms) {
1737+
result['border-top-style'] = 'solid'
1738+
}
1739+
return result
1740+
},
1741+
'border-r': (value) => {
1742+
let result = {
1743+
'@defaults border-width': {},
1744+
'border-right-width': transformValue(value),
1745+
}
1746+
if (isMiniPrograms) {
1747+
result['border-right-style'] = 'solid'
1748+
}
1749+
return result
1750+
},
1751+
'border-b': (value) => {
1752+
let result = {
1753+
'@defaults border-width': {},
1754+
'border-bottom-width': transformValue(value),
1755+
}
1756+
if (isMiniPrograms) {
1757+
result['border-bottom-style'] = 'solid'
1758+
}
1759+
return result
1760+
},
1761+
'border-l': (value) => {
1762+
let result = {
1763+
'@defaults border-width': {},
1764+
'border-left-width': transformValue(value),
1765+
}
1766+
if (isMiniPrograms) {
1767+
result['border-left-style'] = 'solid'
1768+
}
1769+
return result
1770+
},
1771+
},
1772+
{
1773+
type: ['line-width', 'length'],
1774+
values: theme('borderWidth'),
1775+
}
1776+
)
1777+
},
16721778

16731779
borderStyle: ({ addUtilities }) => {
16741780
addUtilities({

tests/mini-programs.test.js

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -82,6 +82,7 @@ test('Escape special characters', async () => {
8282
<div class="w-1/2"></div>
8383
<div class="space-x-3"></div>
8484
<div class="space-y-3"></div>
85+
<div class="border-b"></div>
8586
`,
8687
},
8788
],
@@ -109,6 +110,10 @@ test('Escape special characters', async () => {
109110
margin-top: calc(0.75rem * calc(1 - var(--tw-space-y-reverse)));
110111
margin-bottom: calc(0.75rem * var(--tw-space-y-reverse));
111112
}
113+
.border-b {
114+
border-bottom-width: 1px;
115+
border-bottom-style: solid;
116+
}
112117
.first_mt-_20rpx_:first-child {
113118
margin-top: 20rpx;
114119
}

0 commit comments

Comments
 (0)