From a1641a372b3066c97ee2deb326068d67cb705826 Mon Sep 17 00:00:00 2001 From: Eric Fennis Date: Mon, 28 Oct 2024 20:53:42 +0800 Subject: [PATCH] fix(shared): Add trim to `mergeClasses` (#2522) * Add trim to merge classes * Add trim to merge classes * Adds extra utils check * Update packages/shared/src/utils.ts Co-authored-by: Max Malm --------- Co-authored-by: Max Malm --- .github/workflows/lucide-preact.yml | 1 + .github/workflows/lucide-react-native.yml | 1 + .github/workflows/lucide-react.yml | 1 + .github/workflows/lucide-shared.yml | 24 +++++++++++++++++++++++ .github/workflows/lucide-solid.yml | 1 + .github/workflows/lucide-svelte.yml | 1 + .github/workflows/lucide-vue-next.yml | 1 + .github/workflows/lucide-vue.yml | 1 + packages/shared/src/utils.ts | 9 +++++++-- packages/shared/tests/utils.spec.tsx | 8 ++++++++ 10 files changed, 46 insertions(+), 2 deletions(-) create mode 100644 .github/workflows/lucide-shared.yml diff --git a/.github/workflows/lucide-preact.yml b/.github/workflows/lucide-preact.yml index f7b71c9c7..95da24757 100644 --- a/.github/workflows/lucide-preact.yml +++ b/.github/workflows/lucide-preact.yml @@ -4,6 +4,7 @@ on: pull_request: paths: - packages/lucide-preact/** + - packages/shared/** - tools/build-icons/** - tools/rollup-plugins/** - pnpm-lock.yaml diff --git a/.github/workflows/lucide-react-native.yml b/.github/workflows/lucide-react-native.yml index d0e774dfe..72806b730 100644 --- a/.github/workflows/lucide-react-native.yml +++ b/.github/workflows/lucide-react-native.yml @@ -4,6 +4,7 @@ on: pull_request: paths: - packages/lucide-react-native/** + - packages/shared/** - tools/build-icons/** - tools/rollup-plugins/** - pnpm-lock.yaml diff --git a/.github/workflows/lucide-react.yml b/.github/workflows/lucide-react.yml index eafc5cba3..cd25adc0d 100644 --- a/.github/workflows/lucide-react.yml +++ b/.github/workflows/lucide-react.yml @@ -4,6 +4,7 @@ on: pull_request: paths: - packages/lucide-react/** + - packages/shared/** - tools/build-icons/** - tools/rollup-plugins/** - scripts/generateNextJSAliases.mjs diff --git a/.github/workflows/lucide-shared.yml b/.github/workflows/lucide-shared.yml new file mode 100644 index 000000000..248ee8613 --- /dev/null +++ b/.github/workflows/lucide-shared.yml @@ -0,0 +1,24 @@ +name: Lucide Shared Checks + +on: + pull_request: + paths: + - packages/shared/** + - pnpm-lock.yaml + +jobs: + test: + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v3 + - uses: pnpm/action-setup@v2 + - uses: actions/setup-node@v3.8.1 + with: + node-version: 18 + cache: 'pnpm' + + - name: Install dependencies + run: pnpm install --frozen-lockfile + + - name: Test + run: pnpm --filter lucide-react test diff --git a/.github/workflows/lucide-solid.yml b/.github/workflows/lucide-solid.yml index 5c3cf4ea9..8abeb75df 100644 --- a/.github/workflows/lucide-solid.yml +++ b/.github/workflows/lucide-solid.yml @@ -4,6 +4,7 @@ on: pull_request: paths: - packages/lucide-solid/** + - packages/shared/** - tools/build-icons/** - tools/rollup-plugins/** - pnpm-lock.yaml diff --git a/.github/workflows/lucide-svelte.yml b/.github/workflows/lucide-svelte.yml index 0de5c294b..7603ce912 100644 --- a/.github/workflows/lucide-svelte.yml +++ b/.github/workflows/lucide-svelte.yml @@ -4,6 +4,7 @@ on: pull_request: paths: - packages/lucide-svelte/** + - packages/shared/** - tools/build-icons/** - tools/rollup-plugins/** - pnpm-lock.yaml diff --git a/.github/workflows/lucide-vue-next.yml b/.github/workflows/lucide-vue-next.yml index b9c13ea10..12c39f1a9 100644 --- a/.github/workflows/lucide-vue-next.yml +++ b/.github/workflows/lucide-vue-next.yml @@ -4,6 +4,7 @@ on: pull_request: paths: - packages/lucide-vue-next/** + - packages/shared/** - tools/build-icons/** - tools/rollup-plugins/** - pnpm-lock.yaml diff --git a/.github/workflows/lucide-vue.yml b/.github/workflows/lucide-vue.yml index c3ef4a643..37b67537f 100644 --- a/.github/workflows/lucide-vue.yml +++ b/.github/workflows/lucide-vue.yml @@ -4,6 +4,7 @@ on: pull_request: paths: - packages/lucide-vue/** + - packages/shared/** - tools/build-icons/** - tools/rollup-plugins/** - pnpm-lock.yaml diff --git a/packages/shared/src/utils.ts b/packages/shared/src/utils.ts index 6a0db486a..bb6fbe3df 100644 --- a/packages/shared/src/utils.ts +++ b/packages/shared/src/utils.ts @@ -41,6 +41,11 @@ export const toPascalCase = (string: T): CamelToPascal => { export const mergeClasses = (...classes: ClassType[]) => classes .filter((className, index, array) => { - return Boolean(className) && array.indexOf(className) === index; + return ( + Boolean(className) && + (className as string).trim() !== '' && + array.indexOf(className) === index + ); }) - .join(' '); + .join(' ') + .trim(); diff --git a/packages/shared/tests/utils.spec.tsx b/packages/shared/tests/utils.spec.tsx index ff0fa8d88..796a015d4 100644 --- a/packages/shared/tests/utils.spec.tsx +++ b/packages/shared/tests/utils.spec.tsx @@ -18,4 +18,12 @@ describe('mergeClasses', () => { const classes = mergeClasses('lucide', 'lucide-circle', 'lucide'); expect(classes).toBe('lucide lucide-circle'); }); + it('trims the string', async () => { + const classes = mergeClasses('lucide', 'lucide-circle', ' '); + expect(classes).toBe('lucide lucide-circle'); + }); + it('trims the sub strings', async () => { + const classes = mergeClasses('lucide', ' ', 'lucide-circle'); + expect(classes).toBe('lucide lucide-circle'); + }); });