Browse Source

Maintenance: Mobile - Fix ltr/rtl eslint error when there is already a counterpart class

Vladimir Sheremet 1 year ago
parent
commit
b585d587fa

+ 3 - 1
.eslint-plugin-zammad/lib/rules/zammad-tailwind-ltr.js

@@ -42,9 +42,11 @@ const parsePossibleClassString = (classesList) => {
     const match = className.match(new RegExp(`^(${baseClass})-([^\n]+)`))
     if (!match) return
     const [, prefix, value] = match
+    const counterpart = `${counterparts[prefix]}-${value}` // pl-2 pr-2 is the same with or without ltr/rtl
+    if (classes.includes(counterpart)) return
     errors.push({
       remove: className,
-      add: [`rtl:${counterparts[prefix]}-${value}`, `ltr:${className}`],
+      add: [`rtl:${counterpart}`, `ltr:${className}`],
     })
   })
 

+ 22 - 12
.eslint-plugin-zammad/tests/lib/rules/zammad-tailwind-ltr.js

@@ -38,6 +38,22 @@ ruleTester.run('zammad-tailwind-ltr', rule, {
       filename: 'test.ts',
       code: `{ name: 'ltr:pl-2 rtl:pr-2' }`,
     },
+    {
+      filename: 'test.js',
+      code: `'pl-2 pr-2'`,
+    },
+    {
+      filename: 'test.js',
+      code: `{ name: 'pl-2 pr-2' }`,
+    },
+    {
+      filename: 'test.js',
+      code: `{ name: 'left-0 right-0' }`,
+    },
+    {
+      filename: 'test.js',
+      code: `'left-0 right-0'`,
+    },
   ],
   invalid: [
     {
@@ -100,18 +116,6 @@ ruleTester.run('zammad-tailwind-ltr', rule, {
       output: `{ name: 'rtl:pl-2 ltr:pr-2' }`,
       errors: [{ message: error }],
     },
-    {
-      filename: 'test.js',
-      code: `'pl-2 pr-2'`,
-      output: `'rtl:pr-2 ltr:pl-2 rtl:pl-2 ltr:pr-2'`,
-      errors: [{ message: error }],
-    },
-    {
-      filename: 'test.js',
-      code: `{ name: 'pl-2 pr-2' }`,
-      output: `{ name: 'rtl:pr-2 ltr:pl-2 rtl:pl-2 ltr:pr-2' }`,
-      errors: [{ message: error }],
-    },
     {
       filename: 'test.js',
       code: `{ name: 'rtl:pl-2 pr-2' }`,
@@ -166,5 +170,11 @@ ruleTester.run('zammad-tailwind-ltr', rule, {
       output: `'rtl:!translate-x-2 ltr:!-translate-x-2'`,
       errors: [{ message: error }],
     },
+    {
+      filename: 'test.js',
+      code: `'left-0 right-1'`,
+      output: `'rtl:right-0 ltr:left-0 rtl:left-1 ltr:right-1'`,
+      errors: [{ message: error }],
+    },
   ],
 })