diff --git a/.github/workflows/publishRelease.yml b/.github/workflows/publishRelease.yml index f325f34944..5c24f3784a 100644 --- a/.github/workflows/publishRelease.yml +++ b/.github/workflows/publishRelease.yml @@ -69,7 +69,7 @@ jobs: branch: 'merge-release-${{ env.NEW_TAG }}' labels: release candidate - name: Send message to Slack - uses: slackapi/slack-github-action@v1.25.0 + uses: slackapi/slack-github-action@v1.26.0 with: payload: | { diff --git a/.github/workflows/startRelease.yml b/.github/workflows/startRelease.yml index 108ed4db94..ffcc55b1cf 100644 --- a/.github/workflows/startRelease.yml +++ b/.github/workflows/startRelease.yml @@ -70,7 +70,7 @@ jobs: labels: ${{ env.ISSUE_LABELS }} - name: Send GitHub Action trigger data to Slack if: ${{ github.event.client_payload.channel_id != null }} - uses: slackapi/slack-github-action@v1.25.0 + uses: slackapi/slack-github-action@v1.26.0 with: channel-id: ${{ github.event.client_payload.channel_id }} payload: ${{ github.event.client_payload.say }} diff --git a/.node-version b/.node-version index bc78e9f269..87834047a6 100644 --- a/.node-version +++ b/.node-version @@ -1 +1 @@ -20.12.1 +20.12.2 diff --git a/package.json b/package.json index f1ccbd0636..430bcb4fa5 100644 --- a/package.json +++ b/package.json @@ -5,14 +5,14 @@ "author": "SmartHR-UI Team", "dependencies": { "@smarthr/wareki": "^1.2.0", - "css-loader": "^7.1.0", + "css-loader": "^7.1.1", "dayjs": "^1.11.10", "lodash.merge": "^4.6.2", "lodash.range": "^3.2.0", "polished": "^4.3.0", "postcss-loader": "^8.1.1", "react-draggable": "^4.4.6", - "react-icons": "^5.0.1", + "react-icons": "^5.1.0", "react-innertext": "^1.1.5", "react-transition-group": "^4.4.5", "style-loader": "^4.0.0", @@ -44,14 +44,14 @@ "@storybook/addon-styling-webpack": "^1.0.0", "@storybook/test-runner": "^0.17.0", "@storybook/theming": "^8.0.8", - "@swc/core": "^1.4.13", + "@swc/core": "^1.4.16", "@swc/jest": "^0.2.36", "@testing-library/react": "^15.0.2", "@types/jest": "^29.5.12", "@types/lodash.merge": "^4.6.9", "@types/lodash.range": "^3.2.9", "@types/node": "^20.12.7", - "@types/react": "^18.2.78", + "@types/react": "^18.2.79", "@types/react-dom": "^18.2.25", "@types/react-test-renderer": "^17.0.9", "@types/react-transition-group": "^4.4.10", @@ -59,8 +59,8 @@ "autoprefixer": "^10.4.19", "axe-playwright": "^2.0.1", "babel-loader": "^9.1.3", - "babel-plugin-polyfill-corejs2": "^0.4.10", - "babel-plugin-polyfill-regenerator": "^0.6.1", + "babel-plugin-polyfill-corejs2": "^0.4.11", + "babel-plugin-polyfill-regenerator": "^0.6.2", "chromatic": "^11.3.0", "ecma-version-validator-webpack-plugin": "^1.2.1", "eslint": "^8.57.0", @@ -81,8 +81,8 @@ "postcss-syntax": "^0.36.2", "prettier": "^3.2.5", "prettier-config-smarthr": "^1.0.0", - "prettier-plugin-tailwindcss": "^0.5.13", - "puppeteer": "^22.6.4", + "prettier-plugin-tailwindcss": "^0.5.14", + "puppeteer": "^22.6.5", "react": "^18.2.0", "react-docgen-typescript": "^2.2.2", "react-dom": "^18.2.0", diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 693042a347..e3c4ba5bad 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -16,8 +16,8 @@ dependencies: specifier: ^1.2.0 version: 1.2.0 css-loader: - specifier: ^7.1.0 - version: 7.1.0(webpack@5.91.0) + specifier: ^7.1.1 + version: 7.1.1(webpack@5.91.0) dayjs: specifier: ^1.11.10 version: 1.11.10 @@ -37,8 +37,8 @@ dependencies: specifier: ^4.4.6 version: 4.4.6(react-dom@18.2.0)(react@18.2.0) react-icons: - specifier: ^5.0.1 - version: 5.0.1(react@18.2.0) + specifier: ^5.1.0 + version: 5.1.0(react@18.2.0) react-innertext: specifier: ^1.1.5 version: 1.1.5(@types/react@18.2.55)(react@18.2.0) @@ -115,7 +115,7 @@ devDependencies: version: 8.0.8(react-dom@18.2.0)(react@18.2.0)(typescript@5.4.5) '@storybook/react-webpack5': specifier: ^8.0.8 - version: 8.0.8(@swc/core@1.4.13)(esbuild@0.18.16)(react-dom@18.2.0)(react@18.2.0)(typescript@5.4.5) + version: 8.0.8(@swc/core@1.4.16)(esbuild@0.18.16)(react-dom@18.2.0)(react@18.2.0)(typescript@5.4.5) '@storybook/source-loader': specifier: ^8.0.8 version: 8.0.8 @@ -129,11 +129,11 @@ devDependencies: specifier: ^8.0.8 version: 8.0.8(react-dom@18.2.0)(react@18.2.0) '@swc/core': - specifier: ^1.4.13 - version: 1.4.13 + specifier: ^1.4.16 + version: 1.4.16 '@swc/jest': specifier: ^0.2.36 - version: 0.2.36(@swc/core@1.4.13) + version: 0.2.36(@swc/core@1.4.16) '@testing-library/react': specifier: ^15.0.2 version: 15.0.2(react-dom@18.2.0)(react@18.2.0) @@ -174,11 +174,11 @@ devDependencies: specifier: ^9.1.3 version: 9.1.3(@babel/core@7.24.4)(webpack@5.91.0) babel-plugin-polyfill-corejs2: - specifier: ^0.4.10 - version: 0.4.10(@babel/core@7.24.4) + specifier: ^0.4.11 + version: 0.4.11(@babel/core@7.24.4) babel-plugin-polyfill-regenerator: - specifier: ^0.6.1 - version: 0.6.1(@babel/core@7.24.4) + specifier: ^0.6.2 + version: 0.6.2(@babel/core@7.24.4) chromatic: specifier: ^11.3.0 version: 11.3.0 @@ -240,11 +240,11 @@ devDependencies: specifier: ^1.0.0 version: 1.0.0 prettier-plugin-tailwindcss: - specifier: ^0.5.13 - version: 0.5.13(prettier@3.2.5) + specifier: ^0.5.14 + version: 0.5.14(prettier@3.2.5) puppeteer: - specifier: ^22.6.4 - version: 22.6.4(typescript@5.4.5) + specifier: ^22.6.5 + version: 22.6.5(typescript@5.4.5) react: specifier: ^18.2.0 version: 18.2.0 @@ -298,7 +298,7 @@ devDependencies: version: 9.5.1(typescript@5.4.5)(webpack@5.91.0) ts-node: specifier: ^10.9.2 - version: 10.9.2(@swc/core@1.4.13)(@types/node@20.12.7)(typescript@5.4.5) + version: 10.9.2(@swc/core@1.4.16)(@types/node@20.12.7)(typescript@5.4.5) ttypescript: specifier: ^1.5.15 version: 1.5.15(ts-node@10.9.2)(typescript@5.4.5) @@ -313,7 +313,7 @@ devDependencies: version: 7.2.0 webpack: specifier: ^5.91.0 - version: 5.91.0(@swc/core@1.4.13)(esbuild@0.18.16) + version: 5.91.0(@swc/core@1.4.16)(esbuild@0.18.16) packages: @@ -476,8 +476,8 @@ packages: - supports-color dev: true - /@babel/helper-define-polyfill-provider@0.6.1(@babel/core@7.24.4): - resolution: {integrity: sha512-o7SDgTJuvx5vLKD6SFvkydkSMBvahDKGiNJzG22IZYXhiqoe9efY7zocICBgzHV4IRg5wdgl2nEL/tulKIEIbA==} + /@babel/helper-define-polyfill-provider@0.6.2(@babel/core@7.24.4): + resolution: {integrity: sha512-LV76g+C502biUK6AyZ3LK10vDpDyCzZnhZFXkH1L75zHPj68+qc8Zfpx2th+gzwA2MzyK+1g/3EPl62yFnVttQ==} peerDependencies: '@babel/core': ^7.4.0 || ^8.0.0-0 <8.0.0 dependencies: @@ -1487,7 +1487,7 @@ packages: '@babel/core': 7.24.4 '@babel/helper-module-imports': 7.24.3 '@babel/helper-plugin-utils': 7.24.0 - babel-plugin-polyfill-corejs2: 0.4.10(@babel/core@7.24.4) + babel-plugin-polyfill-corejs2: 0.4.11(@babel/core@7.24.4) babel-plugin-polyfill-corejs3: 0.8.7(@babel/core@7.24.4) babel-plugin-polyfill-regenerator: 0.5.5(@babel/core@7.24.4) semver: 6.3.1 @@ -1685,9 +1685,9 @@ packages: '@babel/plugin-transform-unicode-regex': 7.24.1(@babel/core@7.24.4) '@babel/plugin-transform-unicode-sets-regex': 7.24.1(@babel/core@7.24.4) '@babel/preset-modules': 0.1.6-no-external-plugins(@babel/core@7.24.4) - babel-plugin-polyfill-corejs2: 0.4.10(@babel/core@7.24.4) + babel-plugin-polyfill-corejs2: 0.4.11(@babel/core@7.24.4) babel-plugin-polyfill-corejs3: 0.10.4(@babel/core@7.24.4) - babel-plugin-polyfill-regenerator: 0.6.1(@babel/core@7.24.4) + babel-plugin-polyfill-regenerator: 0.6.2(@babel/core@7.24.4) core-js-compat: 3.36.1 semver: 6.3.1 transitivePeerDependencies: @@ -2703,8 +2703,8 @@ packages: dev: true optional: true - /@puppeteer/browsers@2.2.1: - resolution: {integrity: sha512-QSXujx4d4ogDamQA8ckkkRieFzDgZEuZuGiey9G7CuDcbnX4iINKWxTPC5Br2AEzY9ICAvcndqgAUFMMKnS/Tw==} + /@puppeteer/browsers@2.2.2: + resolution: {integrity: sha512-hZ/JhxPIceWaGSEzUZp83/8M49CoxlkuThfTR7t4AoCu5+ZvJ3vktLm60Otww2TXeROB5igiZ8D9oPQh6ckBVg==} engines: {node: '>=18'} hasBin: true dependencies: @@ -3458,7 +3458,7 @@ packages: webpack: ^5.0.0 dependencies: '@storybook/node-logger': 8.0.8 - webpack: 5.91.0(@swc/core@1.4.13)(esbuild@0.18.16) + webpack: 5.91.0(@swc/core@1.4.16)(esbuild@0.18.16) dev: true /@storybook/addon-styling@1.3.7(@types/react-dom@18.2.25)(@types/react@18.2.55)(less@4.2.0)(postcss@8.4.38)(react-dom@18.2.0)(react@18.2.0)(typescript@5.4.5)(webpack@5.91.0): @@ -3505,7 +3505,7 @@ packages: resolve-url-loader: 5.0.0 sass-loader: 13.3.3(webpack@5.91.0) style-loader: 3.3.4(webpack@5.91.0) - webpack: 5.91.0(@swc/core@1.4.13)(esbuild@0.18.16) + webpack: 5.91.0(@swc/core@1.4.16)(esbuild@0.18.16) transitivePeerDependencies: - '@rspack/core' - '@types/react' @@ -3615,7 +3615,7 @@ packages: - supports-color dev: true - /@storybook/builder-webpack5@8.0.8(@swc/core@1.4.13)(esbuild@0.18.16)(typescript@5.4.5): + /@storybook/builder-webpack5@8.0.8(@swc/core@1.4.16)(esbuild@0.18.16)(typescript@5.4.5): resolution: {integrity: sha512-NG7XHNSZ0+1DtHYhE36vDtXlZHVUUjC0TqqYQ3+On6Ormih80MndbmPjL6XhfleES8YzG28MhNePdOY867rehg==} peerDependencies: typescript: '*' @@ -3648,13 +3648,13 @@ packages: process: 0.11.10 semver: 7.6.0 style-loader: 3.3.4(webpack@5.91.0) - terser-webpack-plugin: 5.3.10(@swc/core@1.4.13)(esbuild@0.18.16)(webpack@5.91.0) + terser-webpack-plugin: 5.3.10(@swc/core@1.4.16)(esbuild@0.18.16)(webpack@5.91.0) ts-dedent: 2.2.0 typescript: 5.4.5 url: 0.11.1 util: 0.12.5 util-deprecate: 1.0.2 - webpack: 5.91.0(@swc/core@1.4.13)(esbuild@0.18.16) + webpack: 5.91.0(@swc/core@1.4.16)(esbuild@0.18.16) webpack-dev-middleware: 6.1.2(webpack@5.91.0) webpack-hot-middleware: 2.25.1 webpack-virtual-modules: 0.5.0 @@ -4104,7 +4104,7 @@ packages: resolution: {integrity: sha512-ymps3MMTxtMWq0eDiXk1iO7iv0Eg0PuUvOpPPohEJauGzU9THv81xx01aaHKSprFFJYD2LMQr1aFuUplItO12g==} dev: true - /@storybook/preset-react-webpack@8.0.8(@swc/core@1.4.13)(esbuild@0.18.16)(react-dom@18.2.0)(react@18.2.0)(typescript@5.4.5): + /@storybook/preset-react-webpack@8.0.8(@swc/core@1.4.16)(esbuild@0.18.16)(react-dom@18.2.0)(react@18.2.0)(typescript@5.4.5): resolution: {integrity: sha512-ucdSQWE3VzleDprd5pmVbUbPPfkU9yLYvJ9pOO4XZngPY4fZdL3vWMsjhBL/PPs2tQ+pC3s6rWnrOqkSMmJ+7w==} engines: {node: '>=18.0.0'} peerDependencies: @@ -4132,7 +4132,7 @@ packages: semver: 7.6.0 tsconfig-paths: 4.2.0 typescript: 5.4.5 - webpack: 5.91.0(@swc/core@1.4.13)(esbuild@0.18.16) + webpack: 5.91.0(@swc/core@1.4.16)(esbuild@0.18.16) transitivePeerDependencies: - '@swc/core' - encoding @@ -4198,7 +4198,7 @@ packages: react-docgen-typescript: 2.2.2(typescript@5.4.5) tslib: 2.6.2 typescript: 5.4.5 - webpack: 5.91.0(@swc/core@1.4.13)(esbuild@0.18.16) + webpack: 5.91.0(@swc/core@1.4.16)(esbuild@0.18.16) transitivePeerDependencies: - supports-color dev: true @@ -4213,7 +4213,7 @@ packages: react-dom: 18.2.0(react@18.2.0) dev: true - /@storybook/react-webpack5@8.0.8(@swc/core@1.4.13)(esbuild@0.18.16)(react-dom@18.2.0)(react@18.2.0)(typescript@5.4.5): + /@storybook/react-webpack5@8.0.8(@swc/core@1.4.16)(esbuild@0.18.16)(react-dom@18.2.0)(react@18.2.0)(typescript@5.4.5): resolution: {integrity: sha512-7K2hsT2H9B746bxrcFzIfbbaRajWkeZfeL7W8coSODpTUjC78Dno2bZO5FE3O0HdnbhJe2jJhDpJKVhFR0MKiQ==} engines: {node: '>=18.0.0'} peerDependencies: @@ -4224,8 +4224,8 @@ packages: typescript: optional: true dependencies: - '@storybook/builder-webpack5': 8.0.8(@swc/core@1.4.13)(esbuild@0.18.16)(typescript@5.4.5) - '@storybook/preset-react-webpack': 8.0.8(@swc/core@1.4.13)(esbuild@0.18.16)(react-dom@18.2.0)(react@18.2.0)(typescript@5.4.5) + '@storybook/builder-webpack5': 8.0.8(@swc/core@1.4.16)(esbuild@0.18.16)(typescript@5.4.5) + '@storybook/preset-react-webpack': 8.0.8(@swc/core@1.4.16)(esbuild@0.18.16)(react-dom@18.2.0)(react@18.2.0)(typescript@5.4.5) '@storybook/react': 8.0.8(react-dom@18.2.0)(react@18.2.0)(typescript@5.4.5) '@types/node': 18.18.6 react: 18.2.0 @@ -4337,8 +4337,8 @@ packages: '@storybook/csf': 0.1.2 '@storybook/csf-tools': 8.0.8 '@storybook/preview-api': 8.0.8 - '@swc/core': 1.4.13 - '@swc/jest': 0.2.36(@swc/core@1.4.13) + '@swc/core': 1.4.16 + '@swc/jest': 0.2.36(@swc/core@1.4.16) expect-playwright: 0.8.0 jest: 29.7.0(@types/node@20.12.7)(ts-node@10.9.2) jest-circus: 29.7.0 @@ -4432,88 +4432,88 @@ packages: file-system-cache: 2.3.0 dev: true - /@swc/core-darwin-arm64@1.4.13: - resolution: {integrity: sha512-36P72FLpm5iq85IvoEjBvi22DiqkkEIanJ1M0E8bkxcFHUbjBrYfPY9T6cpPyK5oQqkaTBvNAc3j1BlVD6IH6w==} + /@swc/core-darwin-arm64@1.4.16: + resolution: {integrity: sha512-UOCcH1GvjRnnM/LWT6VCGpIk0OhHRq6v1U6QXuPt5wVsgXnXQwnf5k3sG5Cm56hQHDvhRPY6HCsHi/p0oek8oQ==} engines: {node: '>=10'} cpu: [arm64] os: [darwin] requiresBuild: true optional: true - /@swc/core-darwin-x64@1.4.13: - resolution: {integrity: sha512-ye7OgKpDdyA8AMIVVdmD1ICDaFXgoEXORnVO8bBHyul0WN71yUBZMX+YxEx2lpWtiftA2vY/1MAuOR80vHkBCw==} + /@swc/core-darwin-x64@1.4.16: + resolution: {integrity: sha512-t3bgqFoYLWvyVtVL6KkFNCINEoOrIlyggT/kJRgi1y0aXSr0oVgcrQ4ezJpdeahZZ4N+Q6vT3ffM30yIunELNA==} engines: {node: '>=10'} cpu: [x64] os: [darwin] requiresBuild: true optional: true - /@swc/core-linux-arm-gnueabihf@1.4.13: - resolution: {integrity: sha512-+x593Jlmu4c3lJtZUKRejWpV2MAij1Js5nmQLLdjo6ChR2D4B2rzj3iMiKn5gITew7fraF9t3fvXALdWh7HmUg==} + /@swc/core-linux-arm-gnueabihf@1.4.16: + resolution: {integrity: sha512-DvHuwvEF86YvSd0lwnzVcjOTZ0jcxewIbsN0vc/0fqm9qBdMMjr9ox6VCam1n3yYeRtj4VFgrjeNFksqbUejdQ==} engines: {node: '>=10'} cpu: [arm] os: [linux] requiresBuild: true optional: true - /@swc/core-linux-arm64-gnu@1.4.13: - resolution: {integrity: sha512-0x8OVw4dfyNerrs/9eZX9wNnmvwbwXSMCi+LbE6Xt1pXOIwvoLtFIXcV3NsrlkFboO3sr5UAQIwDxKqbIZA9pQ==} + /@swc/core-linux-arm64-gnu@1.4.16: + resolution: {integrity: sha512-9Uu5YlPbyCvbidjKtYEsPpyZlu16roOZ5c2tP1vHfnU9bgf5Tz5q5VovSduNxPHx+ed2iC1b1URODHvDzbbDuQ==} engines: {node: '>=10'} cpu: [arm64] os: [linux] requiresBuild: true optional: true - /@swc/core-linux-arm64-musl@1.4.13: - resolution: {integrity: sha512-Z9c4JiequtZvngPcxbCuAOkmWBxi2vInZbjjhD5I+Q9oiJdXUz1t2USGwsGPS41Xvk1BOA3ecK2Sn1ilY3titg==} + /@swc/core-linux-arm64-musl@1.4.16: + resolution: {integrity: sha512-/YZq/qB1CHpeoL0eMzyqK5/tYZn/rzKoCYDviFU4uduSUIJsDJQuQA/skdqUzqbheOXKAd4mnJ1hT04RbJ8FPQ==} engines: {node: '>=10'} cpu: [arm64] os: [linux] requiresBuild: true optional: true - /@swc/core-linux-x64-gnu@1.4.13: - resolution: {integrity: sha512-ChatHtk+vX0Ke5QG+jO+rIapw/KwZsi9MedCBHFXHH6iWF4z8d51cJeN68ykcn+vAXzjNeFNdlNy5Vbkd1zAqg==} + /@swc/core-linux-x64-gnu@1.4.16: + resolution: {integrity: sha512-UUjaW5VTngZYDcA8yQlrFmqs1tLi1TxbKlnaJwoNhel9zRQ0yG1YEVGrzTvv4YApSuIiDK18t+Ip927bwucuVQ==} engines: {node: '>=10'} cpu: [x64] os: [linux] requiresBuild: true optional: true - /@swc/core-linux-x64-musl@1.4.13: - resolution: {integrity: sha512-0Pz39YR530mXpsztwQkmEKdkkZy4fY4Smdh4pkm6Ly8Nndyo0te/l4bcAGqN24Jp7aVwF/QSy14SAtw4HRjU9g==} + /@swc/core-linux-x64-musl@1.4.16: + resolution: {integrity: sha512-aFhxPifevDTwEDKPi4eRYWzC0p/WYJeiFkkpNU5Uc7a7M5iMWPAbPFUbHesdlb9Jfqs5c07oyz86u+/HySBNPQ==} engines: {node: '>=10'} cpu: [x64] os: [linux] requiresBuild: true optional: true - /@swc/core-win32-arm64-msvc@1.4.13: - resolution: {integrity: sha512-LVZfhlD+jHcAbz5NN+gAJ1BEasB0WpcvUzcsJt0nQSRsojgzPzFjJ+fzEBnvT7SMtqKkrnVJ0OmDYeh88bDRpw==} + /@swc/core-win32-arm64-msvc@1.4.16: + resolution: {integrity: sha512-bTD43MbhIHL2s5QgCwyleaGwl96Gk/scF2TaVKdUe4QlJCDV/YK9h5oIBAp63ckHtE8GHlH4c8dZNBiAXn4Org==} engines: {node: '>=10'} cpu: [arm64] os: [win32] requiresBuild: true optional: true - /@swc/core-win32-ia32-msvc@1.4.13: - resolution: {integrity: sha512-78hxHWUvUZtWsnhcf8DKwhBcNFJw+j4y4fN2B9ioXmBWX2tIyw+BqUHOrismOtjPihaZmwe/Ok2e4qmkawE2fw==} + /@swc/core-win32-ia32-msvc@1.4.16: + resolution: {integrity: sha512-/lmZeAN/qV5XbK2SEvi8e2RkIg8FQNYiSA8y2/Zb4gTUMKVO5JMLH0BSWMiIKMstKDPDSxMWgwJaQHF8UMyPmQ==} engines: {node: '>=10'} cpu: [ia32] os: [win32] requiresBuild: true optional: true - /@swc/core-win32-x64-msvc@1.4.13: - resolution: {integrity: sha512-WSfy1u2Xde6jU7UpHIInCUMW98Zw9iZglddKUAvmr1obkZji5U6EX0Oca3asEJdZPFb+2lMLjt0Mh5a1YisROg==} + /@swc/core-win32-x64-msvc@1.4.16: + resolution: {integrity: sha512-BPAfFfODWXtUu6SwaTTftDHvcbDyWBSI/oanUeRbQR5vVWkXoQ3cxLTsDluc3H74IqXS5z1Uyoe0vNo2hB1opA==} engines: {node: '>=10'} cpu: [x64] os: [win32] requiresBuild: true optional: true - /@swc/core@1.4.13: - resolution: {integrity: sha512-rOtusBE+2gaeRkAJn5E4zp5yzZekZOypzSOz5ZG6P1hFbd+Cc26fWEdK6sUSnrkkvTd0Oj33KXLB/4UkbK/UHA==} + /@swc/core@1.4.16: + resolution: {integrity: sha512-Xaf+UBvW6JNuV131uvSNyMXHn+bh6LyKN4tbv7tOUFQpXyz/t9YWRE04emtlUW9Y0qrm/GKFCbY8n3z6BpZbTA==} engines: {node: '>=10'} requiresBuild: true peerDependencies: @@ -4525,28 +4525,28 @@ packages: '@swc/counter': 0.1.3 '@swc/types': 0.1.5 optionalDependencies: - '@swc/core-darwin-arm64': 1.4.13 - '@swc/core-darwin-x64': 1.4.13 - '@swc/core-linux-arm-gnueabihf': 1.4.13 - '@swc/core-linux-arm64-gnu': 1.4.13 - '@swc/core-linux-arm64-musl': 1.4.13 - '@swc/core-linux-x64-gnu': 1.4.13 - '@swc/core-linux-x64-musl': 1.4.13 - '@swc/core-win32-arm64-msvc': 1.4.13 - '@swc/core-win32-ia32-msvc': 1.4.13 - '@swc/core-win32-x64-msvc': 1.4.13 + '@swc/core-darwin-arm64': 1.4.16 + '@swc/core-darwin-x64': 1.4.16 + '@swc/core-linux-arm-gnueabihf': 1.4.16 + '@swc/core-linux-arm64-gnu': 1.4.16 + '@swc/core-linux-arm64-musl': 1.4.16 + '@swc/core-linux-x64-gnu': 1.4.16 + '@swc/core-linux-x64-musl': 1.4.16 + '@swc/core-win32-arm64-msvc': 1.4.16 + '@swc/core-win32-ia32-msvc': 1.4.16 + '@swc/core-win32-x64-msvc': 1.4.16 /@swc/counter@0.1.3: resolution: {integrity: sha512-e2BR4lsJkkRlKZ/qCHPw9ZaSxc0MVUd7gtbtaB7aMvHeJVYe8sOB8DBZkP2DtISHGSku9sCK6T6cnY0CtXrOCQ==} - /@swc/jest@0.2.36(@swc/core@1.4.13): + /@swc/jest@0.2.36(@swc/core@1.4.16): resolution: {integrity: sha512-8X80dp81ugxs4a11z1ka43FPhP+/e+mJNXJSxiNYk8gIX/jPBtY4gQTrKu/KIoco8bzKuPI5lUxjfLiGsfvnlw==} engines: {npm: '>= 7.0.0'} peerDependencies: '@swc/core': '*' dependencies: '@jest/create-cache-key-function': 29.7.0 - '@swc/core': 1.4.13 + '@swc/core': 1.4.16 '@swc/counter': 0.1.3 jsonc-parser: 3.2.0 dev: true @@ -5977,7 +5977,7 @@ packages: '@babel/core': 7.24.4 find-cache-dir: 4.0.0 schema-utils: 4.0.0 - webpack: 5.91.0(@swc/core@1.4.13)(esbuild@0.18.16) + webpack: 5.91.0(@swc/core@1.4.16)(esbuild@0.18.16) dev: true /babel-plugin-istanbul@6.1.1: @@ -6014,14 +6014,14 @@ packages: resolve: 1.22.8 dev: true - /babel-plugin-polyfill-corejs2@0.4.10(@babel/core@7.24.4): - resolution: {integrity: sha512-rpIuu//y5OX6jVU+a5BCn1R5RSZYWAl2Nar76iwaOdycqb6JPxediskWFMMl7stfwNJR4b7eiQvh5fB5TEQJTQ==} + /babel-plugin-polyfill-corejs2@0.4.11(@babel/core@7.24.4): + resolution: {integrity: sha512-sMEJ27L0gRHShOh5G54uAAPaiCOygY/5ratXuiyb2G46FmlSpc9eFCzYVyDiPxfNbwzA7mYahmjQc5q+CZQ09Q==} peerDependencies: '@babel/core': ^7.4.0 || ^8.0.0-0 <8.0.0 dependencies: '@babel/compat-data': 7.24.4 '@babel/core': 7.24.4 - '@babel/helper-define-polyfill-provider': 0.6.1(@babel/core@7.24.4) + '@babel/helper-define-polyfill-provider': 0.6.2(@babel/core@7.24.4) semver: 6.3.1 transitivePeerDependencies: - supports-color @@ -6033,7 +6033,7 @@ packages: '@babel/core': ^7.4.0 || ^8.0.0-0 <8.0.0 dependencies: '@babel/core': 7.24.4 - '@babel/helper-define-polyfill-provider': 0.6.1(@babel/core@7.24.4) + '@babel/helper-define-polyfill-provider': 0.6.2(@babel/core@7.24.4) core-js-compat: 3.36.1 transitivePeerDependencies: - supports-color @@ -6062,13 +6062,13 @@ packages: - supports-color dev: true - /babel-plugin-polyfill-regenerator@0.6.1(@babel/core@7.24.4): - resolution: {integrity: sha512-JfTApdE++cgcTWjsiCQlLyFBMbTUft9ja17saCc93lgV33h4tuCVj7tlvu//qpLwaG+3yEz7/KhahGrUMkVq9g==} + /babel-plugin-polyfill-regenerator@0.6.2(@babel/core@7.24.4): + resolution: {integrity: sha512-2R25rQZWP63nGwaAswvDazbPXfrM3HwVoBXK6HcqeKrSrL/JqcC/rDcf95l4r7LXLyxDXc8uQDa064GubtCABg==} peerDependencies: '@babel/core': ^7.4.0 || ^8.0.0-0 <8.0.0 dependencies: '@babel/core': 7.24.4 - '@babel/helper-define-polyfill-provider': 0.6.1(@babel/core@7.24.4) + '@babel/helper-define-polyfill-provider': 0.6.2(@babel/core@7.24.4) transitivePeerDependencies: - supports-color dev: true @@ -7155,11 +7155,11 @@ packages: postcss-modules-values: 4.0.0(postcss@8.4.38) postcss-value-parser: 4.2.0 semver: 7.6.0 - webpack: 5.91.0(@swc/core@1.4.13)(esbuild@0.18.16) + webpack: 5.91.0(@swc/core@1.4.16)(esbuild@0.18.16) dev: true - /css-loader@7.1.0(webpack@5.91.0): - resolution: {integrity: sha512-VFNj47MAG84MqYDdh9puJG0h98Xs7gEYaX0aeGkfjYqBLB0seOE325sVbqWwaNu3hMZwEP4bB+F4gvF+A63qMA==} + /css-loader@7.1.1(webpack@5.91.0): + resolution: {integrity: sha512-OxIR5P2mjO1PSXk44bWuQ8XtMK4dpEqpIyERCx3ewOo3I8EmbcxMPUc5ScLtQfgXtOojoMv57So4V/C02HQLsw==} engines: {node: '>= 18.12.0'} peerDependencies: '@rspack/core': 0.x || 1.x @@ -7178,7 +7178,7 @@ packages: postcss-modules-values: 4.0.0(postcss@8.4.38) postcss-value-parser: 4.2.0 semver: 7.6.0 - webpack: 5.91.0(@swc/core@1.4.13)(esbuild@0.18.16) + webpack: 5.91.0(@swc/core@1.4.16)(esbuild@0.18.16) dev: false /css-select@4.1.3: @@ -7785,7 +7785,7 @@ packages: webpack: ^4.40.0 || ^5.0.0 dependencies: acorn: 8.11.3 - webpack: 5.91.0(@swc/core@1.4.13)(esbuild@0.18.16) + webpack: 5.91.0(@swc/core@1.4.16)(esbuild@0.18.16) dev: true /ee-first@1.1.1: @@ -8895,7 +8895,7 @@ packages: semver: 7.6.0 tapable: 2.2.1 typescript: 5.4.5 - webpack: 5.91.0(@swc/core@1.4.13)(esbuild@0.18.16) + webpack: 5.91.0(@swc/core@1.4.16)(esbuild@0.18.16) dev: true /form-data@3.0.1: @@ -9561,7 +9561,7 @@ packages: lodash: 4.17.21 pretty-error: 4.0.0 tapable: 2.2.1 - webpack: 5.91.0(@swc/core@1.4.13)(esbuild@0.18.16) + webpack: 5.91.0(@swc/core@1.4.16)(esbuild@0.18.16) dev: true /htmlparser2@3.10.1: @@ -10464,7 +10464,7 @@ packages: pretty-format: 29.7.0 slash: 3.0.0 strip-json-comments: 3.1.1 - ts-node: 10.9.2(@swc/core@1.4.13)(@types/node@20.12.7)(typescript@5.4.5) + ts-node: 10.9.2(@swc/core@1.4.16)(@types/node@20.12.7)(typescript@5.4.5) transitivePeerDependencies: - babel-plugin-macros - supports-color @@ -11144,7 +11144,7 @@ packages: webpack: ^5.0.0 dependencies: less: 4.2.0 - webpack: 5.91.0(@swc/core@1.4.13)(esbuild@0.18.16) + webpack: 5.91.0(@swc/core@1.4.16)(esbuild@0.18.16) dev: true /less@4.2.0: @@ -12611,7 +12611,7 @@ packages: dependencies: lilconfig: 2.1.0 postcss: 8.4.38 - ts-node: 10.9.2(@swc/core@1.4.13)(@types/node@20.12.7)(typescript@5.4.5) + ts-node: 10.9.2(@swc/core@1.4.16)(@types/node@20.12.7)(typescript@5.4.5) yaml: 2.3.4 dev: false @@ -12626,7 +12626,7 @@ packages: jiti: 1.21.0 postcss: 8.4.38 semver: 7.6.0 - webpack: 5.91.0(@swc/core@1.4.13)(esbuild@0.18.16) + webpack: 5.91.0(@swc/core@1.4.16)(esbuild@0.18.16) transitivePeerDependencies: - typescript dev: true @@ -12648,7 +12648,7 @@ packages: jiti: 1.21.0 postcss: 8.4.38 semver: 7.6.0 - webpack: 5.91.0(@swc/core@1.4.13)(esbuild@0.18.16) + webpack: 5.91.0(@swc/core@1.4.16)(esbuild@0.18.16) transitivePeerDependencies: - typescript dev: false @@ -12774,8 +12774,8 @@ packages: resolution: {integrity: sha512-4sCh8QhwdDn46O+zEi83PXIVcpLIYHp5FPKCQ19VUJuhvkotDJd0mHlevlNIZ2OW8v+mK7HMZpAeaPiGhvjG4Q==} dev: true - /prettier-plugin-tailwindcss@0.5.13(prettier@3.2.5): - resolution: {integrity: sha512-2tPWHCFNC+WRjAC4SIWQNSOdcL1NNkydXim8w7TDqlZi+/ulZYz2OouAI6qMtkggnPt7lGamboj6LcTMwcCvoQ==} + /prettier-plugin-tailwindcss@0.5.14(prettier@3.2.5): + resolution: {integrity: sha512-Puaz+wPUAhFp8Lo9HuciYKM2Y2XExESjeT+9NQoVFXZsPPnc9VYss2SpxdQ6vbatmt8/4+SN0oe0I1cPDABg9Q==} engines: {node: '>=14.21.3'} peerDependencies: '@ianvs/prettier-plugin-sort-imports': '*' @@ -12979,11 +12979,11 @@ packages: resolution: {integrity: sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A==} engines: {node: '>=6'} - /puppeteer-core@22.6.4: - resolution: {integrity: sha512-QtfJwPmqQec3EHc6LqbEz03vSiuVAr9bYp0TV87dLoreev6ZevsXdLgOfQgoA3GocrsSe/eUf7NRPQ1lQfsc3w==} + /puppeteer-core@22.6.5: + resolution: {integrity: sha512-s0/5XkAWe0/dWISiljdrybjwDCHhgN31Nu/wznOZPKeikgcJtZtbvPKBz0t802XWqfSQnQDt3L6xiAE5JLlfuw==} engines: {node: '>=18'} dependencies: - '@puppeteer/browsers': 2.2.1 + '@puppeteer/browsers': 2.2.2 chromium-bidi: 0.5.17(devtools-protocol@0.0.1262051) debug: 4.3.4(supports-color@5.5.0) devtools-protocol: 0.0.1262051 @@ -12994,16 +12994,16 @@ packages: - utf-8-validate dev: true - /puppeteer@22.6.4(typescript@5.4.5): - resolution: {integrity: sha512-J9hXNwZmuqKDmNMj6kednZH8jzbdX9735NQfQJrq5LRD4nHisAMyW9pCD7glKi+iM7RV9JkesI1MYhdsN+0ZSQ==} + /puppeteer@22.6.5(typescript@5.4.5): + resolution: {integrity: sha512-YuoRKGj3MxHhUwrey7vmNvU4odGdUdNsj1ee8pfcqQlLWIXfMOXZCAXh8xdzpZESHH3tCGWp2xmPZE8E6iUEWg==} engines: {node: '>=18'} hasBin: true requiresBuild: true dependencies: - '@puppeteer/browsers': 2.2.1 + '@puppeteer/browsers': 2.2.2 cosmiconfig: 9.0.0(typescript@5.4.5) devtools-protocol: 0.0.1262051 - puppeteer-core: 22.6.4 + puppeteer-core: 22.6.5 transitivePeerDependencies: - bufferutil - supports-color @@ -13160,8 +13160,8 @@ packages: resolution: {integrity: sha512-ZKS7PGNFqqMd3PJ6+C2Jtz/o1iU9ggiy8Y8nUeksgVuvNISbmrQtJiZNvC/TjDsqD0QlU5Wkgs7i+w9+OjHhhQ==} dev: true - /react-icons@5.0.1(react@18.2.0): - resolution: {integrity: sha512-WqLZJ4bLzlhmsvme6iFdgO8gfZP17rfjYEJ2m9RsZjZ+cc4k1hTzknEz63YS1MeT50kVzoa1Nz36f4BEx+Wigw==} + /react-icons@5.1.0(react@18.2.0): + resolution: {integrity: sha512-D3zug1270S4hbSlIRJ0CUS97QE1yNNKDjzQe3HqY0aefp2CBn9VgzgES27sRR2gOvFK+0CNx/BW0ggOESp6fqQ==} peerDependencies: react: ^18.2.0 dependencies: @@ -13716,7 +13716,7 @@ packages: optional: true dependencies: neo-async: 2.6.2 - webpack: 5.91.0(@swc/core@1.4.13)(esbuild@0.18.16) + webpack: 5.91.0(@swc/core@1.4.16)(esbuild@0.18.16) dev: true /sax@1.3.0: @@ -14338,7 +14338,7 @@ packages: peerDependencies: webpack: ^5.0.0 dependencies: - webpack: 5.91.0(@swc/core@1.4.13)(esbuild@0.18.16) + webpack: 5.91.0(@swc/core@1.4.16)(esbuild@0.18.16) dev: true /style-loader@4.0.0(webpack@5.91.0): @@ -14347,7 +14347,7 @@ packages: peerDependencies: webpack: ^5.27.0 dependencies: - webpack: 5.91.0(@swc/core@1.4.13)(esbuild@0.18.16) + webpack: 5.91.0(@swc/core@1.4.16)(esbuild@0.18.16) dev: false /styled-components@5.3.11(react-dom@18.2.0)(react-is@18.2.0)(react@18.2.0): @@ -14665,7 +14665,7 @@ packages: unique-string: 2.0.0 dev: true - /terser-webpack-plugin@5.3.10(@swc/core@1.4.13)(esbuild@0.18.16)(webpack@5.91.0): + /terser-webpack-plugin@5.3.10(@swc/core@1.4.16)(esbuild@0.18.16)(webpack@5.91.0): resolution: {integrity: sha512-BKFPWlPDndPs+NGGCr1U59t0XScL5317Y0UReNrHaw9/FwhPENlq6bfgs+4yPfyP51vqC1bQ4rp1EfXW5ZSH9w==} engines: {node: '>= 10.13.0'} peerDependencies: @@ -14682,13 +14682,13 @@ packages: optional: true dependencies: '@jridgewell/trace-mapping': 0.3.25 - '@swc/core': 1.4.13 + '@swc/core': 1.4.16 esbuild: 0.18.16 jest-worker: 27.5.1 schema-utils: 3.3.0 serialize-javascript: 6.0.1 terser: 5.27.0 - webpack: 5.91.0(@swc/core@1.4.13)(esbuild@0.18.16) + webpack: 5.91.0(@swc/core@1.4.16)(esbuild@0.18.16) /terser@5.27.0: resolution: {integrity: sha512-bi1HRwVRskAjheeYl291n3JC4GgO/Ty4z1nVs5AAsmonJulGxpSektecnNedrwK9C7vpvVtcX3cw00VSLt7U2A==} @@ -14815,6 +14815,7 @@ packages: /testcafe-safe-storage@1.1.2: resolution: {integrity: sha512-6km7D26+KCQGeFlSQ9fVEU7tD8qdioSpqzxU8CCZkd2KzBS0jTFkqaJ54rPaLdd5+wdhgO3+as3LMm4F0EDeYA==} + deprecated: The testcafe-safe-storage package has reached end-of-life and will not receive further updates. dev: true /testcafe-selector-generator@0.1.0: @@ -15085,10 +15086,10 @@ packages: semver: 7.6.0 source-map: 0.7.4 typescript: 5.4.5 - webpack: 5.91.0(@swc/core@1.4.13)(esbuild@0.18.16) + webpack: 5.91.0(@swc/core@1.4.16)(esbuild@0.18.16) dev: true - /ts-node@10.9.2(@swc/core@1.4.13)(@types/node@20.12.7)(typescript@5.4.5): + /ts-node@10.9.2(@swc/core@1.4.16)(@types/node@20.12.7)(typescript@5.4.5): resolution: {integrity: sha512-f0FFpIdcHgn8zcPSbf1dRevwt047YMnaiJM3u2w2RewrB+fob/zePZcrOyQoLMMO7aBIddLcQIEK5dYjkLnGrQ==} hasBin: true peerDependencies: @@ -15103,7 +15104,7 @@ packages: optional: true dependencies: '@cspotcode/source-map-support': 0.8.1 - '@swc/core': 1.4.13 + '@swc/core': 1.4.16 '@tsconfig/node10': 1.0.8 '@tsconfig/node12': 1.0.9 '@tsconfig/node14': 1.0.1 @@ -15163,7 +15164,7 @@ packages: typescript: '>=3.2.2' dependencies: resolve: 1.22.8 - ts-node: 10.9.2(@swc/core@1.4.13)(@types/node@20.12.7)(typescript@5.4.5) + ts-node: 10.9.2(@swc/core@1.4.16)(@types/node@20.12.7)(typescript@5.4.5) typescript: 5.4.5 dev: true @@ -15674,7 +15675,7 @@ packages: mime-types: 2.1.35 range-parser: 1.2.1 schema-utils: 4.0.0 - webpack: 5.91.0(@swc/core@1.4.13)(esbuild@0.18.16) + webpack: 5.91.0(@swc/core@1.4.16)(esbuild@0.18.16) dev: true /webpack-hot-middleware@2.25.1: @@ -15694,7 +15695,7 @@ packages: resolution: {integrity: sha512-kyDivFZ7ZM0BVOUteVbDFhlRt7Ah/CSPwJdi8hBpkK7QLumUqdLtVfm/PX/hkcnrvr0i77fO5+TjZ94Pe+C9iw==} dev: true - /webpack@5.91.0(@swc/core@1.4.13)(esbuild@0.18.16): + /webpack@5.91.0(@swc/core@1.4.16)(esbuild@0.18.16): resolution: {integrity: sha512-rzVwlLeBWHJbmgTC/8TvAcu5vpJNII+MelQpylD4jNERPwpBJOE2lEcko1zJX3QJeLjTTAnQxn/OJ8bjDzVQaw==} engines: {node: '>=10.13.0'} hasBin: true @@ -15725,7 +15726,7 @@ packages: neo-async: 2.6.2 schema-utils: 3.3.0 tapable: 2.2.1 - terser-webpack-plugin: 5.3.10(@swc/core@1.4.13)(esbuild@0.18.16)(webpack@5.91.0) + terser-webpack-plugin: 5.3.10(@swc/core@1.4.16)(esbuild@0.18.16)(webpack@5.91.0) watchpack: 2.4.1 webpack-sources: 3.2.3 transitivePeerDependencies: diff --git a/src/components/AccordionPanel/AccordionPanel.stories.tsx b/src/components/AccordionPanel/AccordionPanel.stories.tsx index 8b91f7aa35..0ad5b3b490 100644 --- a/src/components/AccordionPanel/AccordionPanel.stories.tsx +++ b/src/components/AccordionPanel/AccordionPanel.stories.tsx @@ -5,7 +5,7 @@ import styled, { css } from 'styled-components' import { Base } from '../Base' import { Button } from '../Button' -import { FormGroup } from '../FormGroup' +import { FormControl } from '../FormControl' import { Input } from '../Input' import { AccordionPanel } from './AccordionPanel' @@ -35,14 +35,14 @@ const content = () => {
{lorem}
- + - +
- + - +
) diff --git a/src/components/Base/Base.stories.tsx b/src/components/Base/Base.stories.tsx index 42c389b1b1..92b6d678ff 100644 --- a/src/components/Base/Base.stories.tsx +++ b/src/components/Base/Base.stories.tsx @@ -3,6 +3,8 @@ import React from 'react' import styled from 'styled-components' import { useTheme } from '../../hooks/useTheme' +import { Heading } from '../Heading' +import { Section } from '../SectioningContent' import { Table, Td, Th } from '../Table' import { Text } from '../Text' @@ -92,6 +94,21 @@ export const BaseStory: StoryFn = () => { ))} +
SectioningContentをasに指定した場合の見出しレベル自動計算
+
+ +
  • +
    + 親見出し + + {/* FIXME: Baseに対するチェックは eslint-plugin-smarthr@v0.5.9以降で修正されるため下記コメントは削除する */} + {/* eslint-disable-next-line smarthr/a11y-heading-in-sectioning-content */} + 子見出し + +
    +
  • +
    +
    ) } diff --git a/src/components/Base/Base.tsx b/src/components/Base/Base.tsx index 11a63c8860..63d56f778f 100644 --- a/src/components/Base/Base.tsx +++ b/src/components/Base/Base.tsx @@ -1,6 +1,8 @@ import React, { ComponentPropsWithRef, PropsWithChildren, forwardRef, useMemo } from 'react' import { VariantProps, tv } from 'tailwind-variants' +import { useSectionWrapper } from '../SectioningContent/useSectioningWrapper' + import type { Gap } from '../../types' const base = tv({ @@ -137,6 +139,12 @@ export const Base = forwardRef( }) }, [className, layer, overflow, padding, radius]) - return + const Wrapper = useSectionWrapper(Component) + + return ( + + + + ) }, ) diff --git a/src/components/Base/BaseColumn/BaseColumn.stories.tsx b/src/components/Base/BaseColumn/BaseColumn.stories.tsx index 36b8a6ef5d..d9cc2832ed 100644 --- a/src/components/Base/BaseColumn/BaseColumn.stories.tsx +++ b/src/components/Base/BaseColumn/BaseColumn.stories.tsx @@ -1,7 +1,9 @@ import { StoryFn } from '@storybook/react' import React from 'react' +import { Heading } from '../../Heading' import { Stack } from '../../Layout' +import { Section } from '../../SectioningContent' import { BaseColumn } from './BaseColumn' @@ -23,5 +25,15 @@ export const All: StoryFn = () => ( padding を1.5文字分に、背景を ACTION_BACKGROUND に変更。 +
  • +
    + 見出しレベルの自動計算の確認 + + {/* FIXME: BaseColumnに対するチェックは eslint-plugin-smarthr@v0.5.9以降で修正されるため下記コメントは削除する */} + {/* eslint-disable-next-line smarthr/a11y-heading-in-sectioning-content */} + 小見出し + +
    +
  • ) diff --git a/src/components/Dialog/Dialog.stories.tsx b/src/components/Dialog/Dialog.stories.tsx index 62a33805f0..01f53c86b0 100644 --- a/src/components/Dialog/Dialog.stories.tsx +++ b/src/components/Dialog/Dialog.stories.tsx @@ -5,11 +5,11 @@ import styled from 'styled-components' import { Button } from '../Button' import { DatePicker } from '../DatePicker' +import { Fieldset } from '../Fieldset' import { FormControl } from '../FormControl' import { Heading } from '../Heading' import { Input } from '../Input' import { Cluster, Stack } from '../Layout' -import { Fieldset } from '../NewFieldset' import { RadioButton } from '../RadioButton' import { Section } from '../SectioningContent' import { Table, Td, TdCheckbox, Th, ThCheckbox } from '../Table' diff --git a/src/components/Dialog/DialogContentInner.tsx b/src/components/Dialog/DialogContentInner.tsx index 1793b316b8..3d6e02f14c 100644 --- a/src/components/Dialog/DialogContentInner.tsx +++ b/src/components/Dialog/DialogContentInner.tsx @@ -12,10 +12,10 @@ import { tv } from 'tailwind-variants' import { useHandleEscape } from '../../hooks/useHandleEscape' import { useTheme } from '../../hooks/useTailwindTheme' -import { BodyScrollSuppressor } from './BodyScrollSuppressor' import { DialogOverlap } from './DialogOverlap' import { DialogPositionProvider } from './DialogPositionProvider' import { FocusTrap } from './FocusTrap' +import { useBodyScrollLock } from './useBodyScrollLock' export type DialogContentInnerProps = PropsWithChildren<{ /** @@ -148,6 +148,8 @@ export const DialogContentInner: FC = ({ onClickOverlay && onClickOverlay() }, [isOpen, onClickOverlay]) + useBodyScrollLock(isOpen) + return ( @@ -165,8 +167,6 @@ export const DialogContentInner: FC = ({ > {children} - {/* Suppresses scrolling of body while modal is displayed */} - diff --git a/src/components/Dialog/BodyScrollSuppressor.tsx b/src/components/Dialog/useBodyScrollLock.ts similarity index 50% rename from src/components/Dialog/BodyScrollSuppressor.tsx rename to src/components/Dialog/useBodyScrollLock.ts index 5811c70d76..e216e06121 100644 --- a/src/components/Dialog/BodyScrollSuppressor.tsx +++ b/src/components/Dialog/useBodyScrollLock.ts @@ -1,7 +1,6 @@ -import React, { FC, useEffect, useState } from 'react' -import { createGlobalStyle, css } from 'styled-components' +import { useEffect, useState } from 'react' -export const BodyScrollSuppressor: FC = () => { +export const useBodyScrollLock = (isOpen: boolean) => { const [scrollBarWidth, setScrollBarWidth] = useState(null) const [paddingRight, setPaddingRight] = useState(null) @@ -17,21 +16,17 @@ export const BodyScrollSuppressor: FC = () => { setPaddingRight(scrollBarWidth + parseInt(originalPaddingRight, 10)) }, [scrollBarWidth]) - if (scrollBarWidth === null) { - return null - } - return -} + useEffect(() => { + if (!isOpen) return + + if (paddingRight !== null) { + document.body.style.paddingInlineEnd = `${paddingRight}px` + } + document.body.style.overflow = 'hidden' -const ScrollSuppressing = createGlobalStyle<{ - paddingRight: number | null -}>` - body { - overflow: hidden; - ${({ paddingRight }) => - paddingRight && - css` - padding-right: ${paddingRight}px !important; - `} - } -` + return () => { + document.body.style.paddingInlineEnd = '' + document.body.style.overflow = '' + } + }, [isOpen, paddingRight]) +} diff --git a/src/components/Dropdown/Dropdown.stories.tsx b/src/components/Dropdown/Dropdown.stories.tsx index 2b61f3795f..38a8cbd692 100644 --- a/src/components/Dropdown/Dropdown.stories.tsx +++ b/src/components/Dropdown/Dropdown.stories.tsx @@ -6,10 +6,10 @@ import styled, { css } from 'styled-components' import { Button } from '../Button' import { Dialog } from '../Dialog' +import { Fieldset } from '../Fieldset' import { FaCaretDownIcon } from '../Icon' import { Input } from '../Input' import { Cluster, Stack } from '../Layout' -import { Fieldset } from '../NewFieldset' import { RadioButton } from '../RadioButton' import { Text } from '../Text' diff --git a/src/components/Dropdown/FilterDropdown/FilterDropdown.stories.tsx b/src/components/Dropdown/FilterDropdown/FilterDropdown.stories.tsx index 720446cd54..09adc83da5 100644 --- a/src/components/Dropdown/FilterDropdown/FilterDropdown.stories.tsx +++ b/src/components/Dropdown/FilterDropdown/FilterDropdown.stories.tsx @@ -5,10 +5,10 @@ import styled from 'styled-components' import { Button } from '../../Button' import { MultiComboBox, SingleComboBox } from '../../ComboBox' +import { Fieldset } from '../../Fieldset' import { FormControl } from '../../FormControl' import { Input } from '../../Input' import { Cluster, Stack } from '../../Layout' -import { Fieldset } from '../../NewFieldset' import { RadioButton } from '../../RadioButton' import { FilterDropdown } from './FilterDropdown' diff --git a/src/components/Dropdown/SortDropdown/SortDropdown.tsx b/src/components/Dropdown/SortDropdown/SortDropdown.tsx index ea499732b8..ae2282ee85 100644 --- a/src/components/Dropdown/SortDropdown/SortDropdown.tsx +++ b/src/components/Dropdown/SortDropdown/SortDropdown.tsx @@ -2,9 +2,9 @@ import React, { ComponentProps, ComponentPropsWithRef } from 'react' import { type FC, type MouseEventHandler } from 'react' import { Button } from '../../Button' +import { Fieldset } from '../../Fieldset' import { FormControl } from '../../FormControl' import { Cluster, Stack } from '../../Layout' -import { Fieldset } from '../../NewFieldset' import { RadioButton } from '../../RadioButton' import { Select } from '../../Select' import { Dropdown } from '../Dropdown' diff --git a/src/components/FieldSet/FieldSet.stories.tsx b/src/components/FieldSet/FieldSet.stories.tsx deleted file mode 100644 index 0c31312880..0000000000 --- a/src/components/FieldSet/FieldSet.stories.tsx +++ /dev/null @@ -1,133 +0,0 @@ -import { action } from '@storybook/addon-actions' -import { StoryFn } from '@storybook/react' -import * as React from 'react' -import styled, { css } from 'styled-components' - -import { useTheme } from '../../hooks/useTheme' -import { FaExclamationCircleIcon } from '../Icon' - -import { FieldSet } from './FieldSet' - -export default { - title: 'Forms(フォーム)/FieldSet(非推奨)', - component: FieldSet, - parameters: { - withTheming: true, - }, -} - -export const All: StoryFn = () => { - const themes = useTheme() - - return ( - -
  • -
    -
  • -
  • -
    number} defaultValue={1} /> -
  • -
  • -
    -
  • -
  • -
    -
  • -
  • -
    -
  • -
  • -
    -
  • -
  • -
    -
  • -
  • -
    -
  • -
  • -
    -
  • -
  • -
    -
  • -
  • -
    -
  • -
  • -
    - - suffix text - - } - /> -
  • -
  • -
    - It is a field where tags can be freely inserted. -
    -
  • -
  • -
    Second error message., - ]} - helpMessage={ - <> - This is help message. -
    - This is help message. - - } - labelSuffix={ - - - suffix text - - } - required - > - It is a field where tags can be freely inserted. -
    -
  • -
    - ) -} -All.storyName = 'all' - -const List = styled.ul` - padding: 0 24px; - list-style: none; - - & > li:not(:first-child) { - margin-top: 16px; - } -` -const Suffix = styled.div` - display: flex; - align-items: center; - - > *:first-child { - margin-right: 4px; - } -` -const SuffixText = styled.p` - margin: 0; - font-size: ${({ theme }) => theme.fontSize.S}; -` -const CustomTag = styled.div( - ({ theme }) => css` - padding: 10px; - border: 1px solid ${theme.color.BORDER}; - border-radius: 5px; - `, -) diff --git a/src/components/FieldSet/FieldSet.tsx b/src/components/FieldSet/FieldSet.tsx deleted file mode 100644 index e9546e3e85..0000000000 --- a/src/components/FieldSet/FieldSet.tsx +++ /dev/null @@ -1,134 +0,0 @@ -import React, { FC, HTMLAttributes, ReactNode } from 'react' -import styled, { css } from 'styled-components' - -import { useId } from '../../hooks/useId' -import { Theme, useTheme } from '../../hooks/useTheme' -import { HeadingTypes } from '../Heading' -import { FaExclamationCircleIcon } from '../Icon' -import { Input } from '../Input' -import { Stack } from '../Layout/Stack' -import { StatusLabel } from '../StatusLabel' -import { Text } from '../Text' - -import { useClassNames } from './useClassNames' - -type Props = Omit, 'error'> & { - /** ラベル名 */ - label: ReactNode - /** ラベルのタイプ */ - labelType?: HeadingTypes - /** input 要素の下に表示するエラーメッセージ */ - errorMessage?: ReactNode | ReactNode[] - /** input 要素の下に表示するヘルプメッセージ */ - helpMessage?: ReactNode - /** ラベル部分の末尾に表示する内容 */ - labelSuffix?: ReactNode - /** コンポーネントに適用するクラス名 */ - className?: string -} -type ElementProps = Omit, keyof Props> - -/** - * @deprecated `Fieldset` コンポーネントは非推奨です。代わりに `FormControl` を使ってください。 - */ -export const FieldSet: FC = ({ - label, - labelType = 'subBlockTitle', - errorMessage, - helpMessage, - className = '', - labelSuffix, - children, - ...props -}) => { - const theme = useTheme() - const managedHtmlFor = useId() - const helpId = useId() - const classNames = useClassNames() - - return ( - - - <LabelText styleType={labelType} className={classNames.titleText}> - {label} - </LabelText> - - {props.required && ( - <StatusLabel type="red" className={classNames.label}> - 必須 - </StatusLabel> - )} - - {labelSuffix && labelSuffix} - - - {helpMessage && ( - - {helpMessage} - - )} - {errorMessage && ( - - {(Array.isArray(errorMessage) ? errorMessage : [errorMessage]).map((message, index) => ( - - - - ))} - - )} - - {children ? ( - children - ) : ( - // eslint-disable-next-line smarthr/a11y-input-has-name-attribute, smarthr/a11y-input-in-form-control - - )} - - ) -} - -const Wrapper = styled.div<{ $width: string | number }>` - ${({ $width }) => css` - display: inline-block; - width: ${typeof $width === 'number' ? `${$width}px` : $width}; - `} -` -const Title = styled.div<{ themes: Theme }>` - ${({ themes: { spacingByChar } }) => css` - display: flex; - align-items: center; - margin: 0 0 ${spacingByChar(0.5)}; - - > *:not(:first-child) { - margin-left: ${spacingByChar(0.5)}; - } - `} -` -const LabelText = styled(Text)` - display: inline-block; -` - -const HelpMessage = styled.p<{ themes: Theme }>` - ${({ themes: { spacingByChar } }) => css` - margin-bottom: ${spacingByChar(0.5)}; - `} -` -const StyledStack = styled(Stack)<{ $themes: Theme }>` - ${({ $themes: { spacingByChar } }) => css` - &&& { - margin-bottom: ${spacingByChar(0.5)}; - } - `} -` - -const ErrorMessage = styled.p<{ themes: Theme }>` - ${({ themes: { color } }) => css` - .smarthr-ui-FieldSet-errorText { - color: ${color.DANGER}; - } - `} -` diff --git a/src/components/FieldSet/index.ts b/src/components/FieldSet/index.ts deleted file mode 100644 index 59b4f03573..0000000000 --- a/src/components/FieldSet/index.ts +++ /dev/null @@ -1 +0,0 @@ -export * from './FieldSet' diff --git a/src/components/FieldSet/useClassNames.ts b/src/components/FieldSet/useClassNames.ts deleted file mode 100644 index 72ce4b1a70..0000000000 --- a/src/components/FieldSet/useClassNames.ts +++ /dev/null @@ -1,23 +0,0 @@ -import { useMemo } from 'react' - -import { useClassNameGenerator } from '../../hooks/useClassNameGenerator' - -import { FieldSet } from './FieldSet' - -export function useClassNames() { - const generate = useClassNameGenerator(FieldSet.displayName || 'FieldSet') - return useMemo( - () => ({ - wrapper: generate(), - title: generate('title'), - titleText: generate('titleText'), - label: generate('label'), - input: generate('input'), - error: generate('error'), - errorIcon: generate('errorIcon'), - errorText: generate('errorText'), - help: generate('help'), - }), - [generate], - ) -} diff --git a/src/components/NewFieldset/Fieldset.stories.tsx b/src/components/Fieldset/Fieldset.stories.tsx similarity index 100% rename from src/components/NewFieldset/Fieldset.stories.tsx rename to src/components/Fieldset/Fieldset.stories.tsx diff --git a/src/components/Fieldset/Fieldset.tsx b/src/components/Fieldset/Fieldset.tsx new file mode 100644 index 0000000000..fae6482036 --- /dev/null +++ b/src/components/Fieldset/Fieldset.tsx @@ -0,0 +1,7 @@ +import React, { ComponentProps } from 'react' + +import { ActualFormControl } from '../FormControl/FormControl' + +export const Fieldset: React.FC> = (props) => ( + +) diff --git a/src/components/NewFieldset/index.ts b/src/components/Fieldset/index.ts similarity index 100% rename from src/components/NewFieldset/index.ts rename to src/components/Fieldset/index.ts diff --git a/src/components/FormControl/FormControl.stories.tsx b/src/components/FormControl/FormControl.stories.tsx index 555abebc06..a47b4df48e 100644 --- a/src/components/FormControl/FormControl.stories.tsx +++ b/src/components/FormControl/FormControl.stories.tsx @@ -55,6 +55,16 @@ export const All: StoryFn = () => ( + + + 項目名非表示 + +
    + + + +
    +
    各種コントロールが紐づくこと diff --git a/src/components/FormControl/FormControl.tsx b/src/components/FormControl/FormControl.tsx index f6a9a12967..5e8ae2e8c6 100644 --- a/src/components/FormControl/FormControl.tsx +++ b/src/components/FormControl/FormControl.tsx @@ -1,9 +1,307 @@ -import React, { ComponentProps } from 'react' +import React, { + ComponentProps, + ComponentPropsWithoutRef, + PropsWithChildren, + ReactElement, + ReactNode, + useMemo, +} from 'react' +import { isStyledComponent } from 'styled-components' +import { tv } from 'tailwind-variants' -import { FormGroup } from '../FormGroup' +import { useId } from '../../hooks/useId' +import { MultiComboBox, SingleComboBox } from '../ComboBox' +import { DatePicker } from '../DatePicker' +import { DropZone } from '../DropZone' +import { HeadingTypes } from '../Heading' +import { FaCircleExclamationIcon } from '../Icon' +import { CurrencyInput, Input } from '../Input' +import { InputFile } from '../InputFile' +import { Cluster, Stack } from '../Layout' +import { Select } from '../Select' +import { StatusLabel } from '../StatusLabel' +import { Text } from '../Text' +import { Textarea } from '../Textarea' +import { visuallyHiddenText } from '../VisuallyHiddenText/VisuallyHiddenText' -type Props = Omit, 'as' | 'dangerouslyTitleHidden'> +import type { Gap } from '../../types' +type StatusLabelProps = ComponentProps -export const FormControl: React.FC = FormGroup -// 一部スタイリングが内部的に FormGroup という名前に依存しているため置き換え -FormControl.displayName = 'FormGroup' +type Props = PropsWithChildren<{ + /** グループのタイトル名 */ + title: ReactNode + /** タイトルの見出しのタイプ */ + titleType?: HeadingTypes + /** タイトルの見出しを視覚的に隠すかどうか */ + dangerouslyTitleHidden?: boolean + /** label 要素に適用する `htmlFor` 値 */ + htmlFor?: string + /** label 要素に適用する `id` 値 */ + labelId?: string + /** タイトル群と子要素の間の間隔調整用(基本的には不要) */ + innerMargin?: Gap + /** タイトルの隣に表示する `StatusLabel` の Props の配列 */ + statusLabelProps?: StatusLabelProps | StatusLabelProps[] + /** タイトルの下に表示するヘルプメッセージ */ + helpMessage?: ReactNode + /** タイトルの下に表示する入力例 */ + exampleMessage?: ReactNode + /** タイトルの下に表示するエラーメッセージ */ + errorMessages?: ReactNode | ReactNode[] + /** フォームコントロールの下に表示する補足メッセージ */ + supplementaryMessage?: ReactNode + /** `true` のとき、文字色を `TEXT_DISABLED` にする */ + disabled?: boolean + as?: string | React.ComponentType +}> +type ElementProps = Omit, keyof Props | 'aria-labelledby'> + +const formGroup = tv({ + slots: { + wrapper: [ + 'smarthr-ui-FormControl', + 'shr-mx-[unset] shr-border-none shr-p-[unset]', + 'disabled:shr-text-disabled', + '[&:disabled_.smarthr-ui-FormControl-label_>_span]:shr-text-disabled', + '[&:disabled_.smarthr-ui-FormControl-errorMessage]:shr-text-inherit', + '[&:disabled_.smarthr-ui-FormControl-supplementaryMessage]:shr-text-inherit', + '[&:disabled_.smarthr-ui-Input]:shr-border-default/50 [&:disabled_.smarthr-ui-Input]:shr-bg-white-darken', + ], + label: [ + 'smarthr-ui-FormControl-label', + // flex-item が stretch してクリッカブル領域が広がりすぎないようにする + 'shr-self-start', + 'shr-px-[unset]', + ], + errorIcon: ['smarthr-ui-FormControl-errorMessage', 'shr-text-danger'], + }, +}) + +const childrenWrapper = tv({ + variants: { + innerMargin: { + 0: '[&&&]:shr-mt-0', + 0.25: '[&&&]:shr-mt-0.25', + 0.5: '[&&&]:shr-mt-0.5', + 0.75: '[&&&]:shr-mt-0.75', + 1: '[&&&]:shr-mt-1', + 1.25: '[&&&]:shr-mt-1.25', + 1.5: '[&&&]:shr-mt-1.5', + 2: '[&&&]:shr-mt-2', + 2.5: '[&&&]:shr-mt-2.5', + 3: '[&&&]:shr-mt-3', + 3.5: '[&&&]:shr-mt-3.5', + 4: '[&&&]:shr-mt-4', + 8: '[&&&]:shr-mt-8', + X3S: '[&&&]:shr-mt-0.25', + XXS: '[&&&]:shr-mt-0.5', + XS: '[&&&]:shr-mt-1', + S: '[&&&]:shr-mt-1.5', + M: '[&&&]:shr-mt-2', + L: '[&&&]:shr-mt-2.5', + XL: '[&&&]:shr-mt-3', + XXL: '[&&&]:shr-mt-3.5', + X3L: '[&&&]:shr-mt-4', + } as { [key in Gap]: string }, + isRoleGroup: { + true: '', + false: '', + }, + }, + compoundVariants: [ + { + innerMargin: undefined, + isRoleGroup: true, + className: '[:not([hidden])_~_&&&]:shr-mt-1', + }, + { + innerMargin: undefined, + isRoleGroup: false, + className: '[:not([hidden])_~_&&&]:shr-mt-0.5', + }, + ], +}) + +export const ActualFormControl: React.FC = ({ + title, + titleType = 'blockTitle', + dangerouslyTitleHidden = false, + htmlFor, + labelId, + innerMargin, + statusLabelProps = [], + helpMessage, + exampleMessage, + errorMessages, + supplementaryMessage, + as = 'div', + className, + children, + ...props +}) => { + const managedHtmlFor = useId(htmlFor) + const managedLabelId = useId(labelId) + const isRoleGroup = as === 'fieldset' + const statusLabelList = Array.isArray(statusLabelProps) ? statusLabelProps : [statusLabelProps] + + const describedbyIds = useMemo( + () => + Object.entries({ helpMessage, exampleMessage, supplementaryMessage, errorMessages }) + .filter(({ 1: value }) => value) + .map(([key]) => `${managedHtmlFor}_${key}`) + .join(' '), + [helpMessage, exampleMessage, supplementaryMessage, errorMessages, managedHtmlFor], + ) + const actualErrorMessages = useMemo(() => { + if (!errorMessages) { + return [] + } + + return Array.isArray(errorMessages) ? errorMessages : [errorMessages] + }, [errorMessages]) + + const { wrapperStyle, labelStyle, errorIconStyle, childrenWrapperStyle } = useMemo(() => { + const { wrapper, label, errorIcon } = formGroup() + return { + wrapperStyle: wrapper({ className }), + labelStyle: label({ className: dangerouslyTitleHidden ? visuallyHiddenText() : '' }), + errorIconStyle: errorIcon(), + childrenWrapperStyle: childrenWrapper({ innerMargin, isRoleGroup }), + } + }, [className, dangerouslyTitleHidden, innerMargin, isRoleGroup]) + + return ( + + + + {helpMessage && ( +

    + {helpMessage} +

    + )} + {exampleMessage && ( + + {exampleMessage} + + )} + + {actualErrorMessages.length > 0 && ( + + {actualErrorMessages.map((message, index) => ( +

    + +

    + ))} +
    + )} + +
    + {addIdToFirstInput(children, managedHtmlFor, describedbyIds)} +
    + + {supplementaryMessage && ( + + {supplementaryMessage} + + )} +
    + ) +} + +const addIdToFirstInput = (children: ReactNode, managedHtmlFor: string, describedbyIds: string) => { + let foundFirstInput = false + + const addId = (targets: ReactNode): ReactNode[] | ReactNode => + React.Children.map(targets, (child) => { + if (foundFirstInput || !React.isValidElement(child)) { + return child + } + + const { type } = child + + if (isInputElement(type)) { + foundFirstInput = true + + const inputAttributes = { + id: managedHtmlFor, + ...(describedbyIds ? { 'aria-describedby': describedbyIds } : {}), + } + + return React.cloneElement(child as ReactElement, { + ...(isComboBoxElement(type) ? { inputAttributes } : inputAttributes), + }) + } + + return React.cloneElement(child, {}, addId(child.props.children)) + }) + + return addId(children) +} + +/** + * - CheckBox / RadioButton は内部に label を含むため対象外 + * - SearchInput は label を含むため対象外 + * - InputWithTooltip は領域が狭く FormControl を置けない場所での私用を想定しているため対象外 + * + * @param type + * @returns + */ +const isInputElement = (type: string | React.JSXElementConstructor) => { + const _type = isStyledComponent(type) ? type.target : type + return ( + _type === Input || + _type === CurrencyInput || + _type === Textarea || + _type === DatePicker || + _type === Select || + _type === SingleComboBox || + _type === MultiComboBox || + _type === InputFile || + _type === DropZone + ) +} + +const isComboBoxElement = (type: string | React.JSXElementConstructor) => { + const _type = isStyledComponent(type) ? type.target : type + return _type === SingleComboBox || _type === MultiComboBox +} + +export const FormControl: React.FC> = ActualFormControl diff --git a/src/components/FormGroup/FormGroup.stories.tsx b/src/components/FormGroup/FormGroup.stories.tsx deleted file mode 100644 index 588ca0c9f3..0000000000 --- a/src/components/FormGroup/FormGroup.stories.tsx +++ /dev/null @@ -1,22 +0,0 @@ -import { StoryFn } from '@storybook/react' -import React from 'react' - -import { CompactInformationPanel } from '../CompactInformationPanel' -import { TextLink } from '../TextLink' - -import { FormGroup } from './FormGroup' - -export default { - title: 'Forms(フォーム)/FormGroup(非推奨)', - component: FormGroup, -} - -export const All: StoryFn = () => ( - - FormGroupコンポーネントは非推奨です。 - FormControlか - Fieldset - コンポーネントを使用してください。 - -) -All.storyName = 'all' diff --git a/src/components/FormGroup/FormGroup.tsx b/src/components/FormGroup/FormGroup.tsx deleted file mode 100644 index 60d84e1581..0000000000 --- a/src/components/FormGroup/FormGroup.tsx +++ /dev/null @@ -1,308 +0,0 @@ -import React, { - ComponentProps, - ComponentPropsWithoutRef, - PropsWithChildren, - ReactElement, - ReactNode, - useMemo, -} from 'react' -import { isStyledComponent } from 'styled-components' -import { tv } from 'tailwind-variants' - -import { useId } from '../../hooks/useId' -import { MultiComboBox, SingleComboBox } from '../ComboBox' -import { DatePicker } from '../DatePicker' -import { DropZone } from '../DropZone' -import { HeadingTypes } from '../Heading' -import { FaCircleExclamationIcon } from '../Icon' -import { CurrencyInput, Input } from '../Input' -import { InputFile } from '../InputFile' -import { Cluster, Stack } from '../Layout' -import { Select } from '../Select' -import { StatusLabel } from '../StatusLabel' -import { Text } from '../Text' -import { Textarea } from '../Textarea' -import { visuallyHiddenText } from '../VisuallyHiddenText/VisuallyHiddenText' - -import type { Gap } from '../../types' -type StatusLabelProps = ComponentProps - -type Props = PropsWithChildren<{ - /** グループのタイトル名 */ - title: ReactNode - /** タイトルの見出しのタイプ */ - titleType?: HeadingTypes - /** タイトルの見出しを視覚的に隠すかどうか */ - dangerouslyTitleHidden?: boolean - /** label 要素に適用する `htmlFor` 値 */ - htmlFor?: string - /** label 要素に適用する `id` 値 */ - labelId?: string - /** タイトル群と子要素の間の間隔調整用(基本的には不要) */ - innerMargin?: Gap - /** タイトルの隣に表示する `StatusLabel` の Props の配列 */ - statusLabelProps?: StatusLabelProps | StatusLabelProps[] - /** タイトルの下に表示するヘルプメッセージ */ - helpMessage?: ReactNode - /** タイトルの下に表示する入力例 */ - exampleMessage?: ReactNode - /** タイトルの下に表示するエラーメッセージ */ - errorMessages?: ReactNode | ReactNode[] - /** フォームコントロールの下に表示する補足メッセージ */ - supplementaryMessage?: ReactNode - /** `true` のとき、文字色を `TEXT_DISABLED` にする */ - disabled?: boolean - as?: string | React.ComponentType -}> -type ElementProps = Omit, keyof Props | 'aria-labelledby'> - -const formGroup = tv({ - slots: { - wrapper: [ - 'smarthr-ui-FormGroup', - 'shr-mx-[unset] shr-border-none shr-p-[unset]', - 'disabled:shr-text-disabled', - '[&:disabled_.smarthr-ui-FormGroup-label_>_span]:shr-text-disabled', - '[&:disabled_.smarthr-ui-FormGroup-errorMessage]:shr-text-inherit', - '[&:disabled_.smarthr-ui-FormGroup-supplementaryMessage]:shr-text-inherit', - '[&:disabled_.smarthr-ui-Input]:shr-border-default/50 [&:disabled_.smarthr-ui-Input]:shr-bg-white-darken', - ], - label: [ - 'smarthr-ui-FormGroup-label', - // flex-item が stretch してクリッカブル領域が広がりすぎないようにする - 'shr-self-start', - 'shr-px-[unset]', - ], - errorIcon: ['smarthr-ui-FormGroup-errorMessage', 'shr-text-danger'], - }, -}) - -const childrenWrapper = tv({ - variants: { - innerMargin: { - 0: '[&&&]:shr-mt-0', - 0.25: '[&&&]:shr-mt-0.25', - 0.5: '[&&&]:shr-mt-0.5', - 0.75: '[&&&]:shr-mt-0.75', - 1: '[&&&]:shr-mt-1', - 1.25: '[&&&]:shr-mt-1.25', - 1.5: '[&&&]:shr-mt-1.5', - 2: '[&&&]:shr-mt-2', - 2.5: '[&&&]:shr-mt-2.5', - 3: '[&&&]:shr-mt-3', - 3.5: '[&&&]:shr-mt-3.5', - 4: '[&&&]:shr-mt-4', - 8: '[&&&]:shr-mt-8', - X3S: '[&&&]:shr-mt-0.25', - XXS: '[&&&]:shr-mt-0.5', - XS: '[&&&]:shr-mt-1', - S: '[&&&]:shr-mt-1.5', - M: '[&&&]:shr-mt-2', - L: '[&&&]:shr-mt-2.5', - XL: '[&&&]:shr-mt-3', - XXL: '[&&&]:shr-mt-3.5', - X3L: '[&&&]:shr-mt-4', - } as { [key in Gap]: string }, - isRoleGroup: { - true: '', - false: '', - }, - }, - compoundVariants: [ - { - innerMargin: undefined, - isRoleGroup: true, - className: '[&&&]:shr-mt-1', - }, - { - innerMargin: undefined, - isRoleGroup: false, - className: '[&&&]:shr-mt-0.5', - }, - ], -}) - -/** - * @deprecated `FormGroup` コンポーネントは非推奨です。代わりに `FormControl` や `Fieldset` を使ってください。 - */ -export const FormGroup: React.FC = ({ - title, - titleType = 'blockTitle', - dangerouslyTitleHidden = false, - htmlFor, - labelId, - innerMargin, - statusLabelProps = [], - helpMessage, - exampleMessage, - errorMessages, - supplementaryMessage, - as = 'div', - className, - children, - ...props -}) => { - const managedHtmlFor = useId(htmlFor) - const managedLabelId = useId(labelId) - const isRoleGroup = as === 'fieldset' - const statusLabelList = Array.isArray(statusLabelProps) ? statusLabelProps : [statusLabelProps] - - const describedbyIds = useMemo( - () => - Object.entries({ helpMessage, exampleMessage, supplementaryMessage, errorMessages }) - .filter(({ 1: value }) => value) - .map(([key]) => `${managedHtmlFor}_${key}`) - .join(' '), - [helpMessage, exampleMessage, supplementaryMessage, errorMessages, managedHtmlFor], - ) - const actualErrorMessages = useMemo(() => { - if (!errorMessages) { - return [] - } - - return Array.isArray(errorMessages) ? errorMessages : [errorMessages] - }, [errorMessages]) - - const { wrapperStyle, labelStyle, errorIconStyle, childrenWrapperStyle } = useMemo(() => { - const { wrapper, label, errorIcon } = formGroup() - return { - wrapperStyle: wrapper({ className }), - labelStyle: label({ className: dangerouslyTitleHidden ? visuallyHiddenText() : '' }), - errorIconStyle: errorIcon(), - childrenWrapperStyle: childrenWrapper({ innerMargin, isRoleGroup }), - } - }, [className, dangerouslyTitleHidden, innerMargin, isRoleGroup]) - - return ( - - - - {helpMessage && ( -

    - {helpMessage} -

    - )} - {exampleMessage && ( - - {exampleMessage} - - )} - - {actualErrorMessages.length > 0 && ( - - {actualErrorMessages.map((message, index) => ( -

    - -

    - ))} -
    - )} - -
    - {addIdToFirstInput(children, managedHtmlFor, describedbyIds)} -
    - - {supplementaryMessage && ( - - {supplementaryMessage} - - )} -
    - ) -} - -const addIdToFirstInput = (children: ReactNode, managedHtmlFor: string, describedbyIds: string) => { - let foundFirstInput = false - - const addId = (targets: ReactNode): ReactNode[] | ReactNode => - React.Children.map(targets, (child) => { - if (foundFirstInput || !React.isValidElement(child)) { - return child - } - - const { type } = child - - if (isInputElement(type)) { - foundFirstInput = true - - const inputAttributes = { - id: managedHtmlFor, - ...(describedbyIds ? { 'aria-describedby': describedbyIds } : {}), - } - - return React.cloneElement(child as ReactElement, { - ...(isComboBoxElement(type) ? { inputAttributes } : inputAttributes), - }) - } - - return React.cloneElement(child, {}, addId(child.props.children)) - }) - - return addId(children) -} - -/** - * - CheckBox / RadioButton は内部に label を含むため対象外 - * - SearchInput は label を含むため対象外 - * - InputWithTooltip は領域が狭く FormControl を置けない場所での私用を想定しているため対象外 - * - * @param type - * @returns - */ -const isInputElement = (type: string | React.JSXElementConstructor) => { - const _type = isStyledComponent(type) ? type.target : type - return ( - _type === Input || - _type === CurrencyInput || - _type === Textarea || - _type === DatePicker || - _type === Select || - _type === SingleComboBox || - _type === MultiComboBox || - _type === InputFile || - _type === DropZone - ) -} - -const isComboBoxElement = (type: string | React.JSXElementConstructor) => { - const _type = isStyledComponent(type) ? type.target : type - return _type === SingleComboBox || _type === MultiComboBox -} diff --git a/src/components/FormGroup/index.ts b/src/components/FormGroup/index.ts deleted file mode 100644 index 75ff71227d..0000000000 --- a/src/components/FormGroup/index.ts +++ /dev/null @@ -1 +0,0 @@ -export { FormGroup } from './FormGroup' diff --git a/src/components/Icon/Icon.tsx b/src/components/Icon/Icon.tsx index 93cd7c084e..96c301aa26 100644 --- a/src/components/Icon/Icon.tsx +++ b/src/components/Icon/Icon.tsx @@ -1,4 +1,5 @@ import { + FaAddressBook, FaAddressCard, FaAngleDown, FaAngleLeft, @@ -16,11 +17,13 @@ import { FaArrowUp19, FaArrowUpWideShort, FaArrowsRotate, + FaAsterisk, FaBabyCarriage, FaBan, FaBars, FaBarsStaggered, FaBell, + FaBellSlash, FaBolt, FaBook, FaBookOpen, @@ -33,6 +36,7 @@ import { FaCalendarDays, FaCalendarXmark, FaCaretDown, + FaCaretLeft, FaCaretRight, FaCaretUp, FaChartArea, @@ -55,6 +59,7 @@ import { FaCircleUser, FaCircleXmark, FaClipboard, + FaClipboardCheck, FaClipboardList, FaClock, FaClockRotateLeft, @@ -66,6 +71,8 @@ import { FaComments, FaCompress, FaCopy, + FaCube, + FaCubes, FaDatabase, FaDoorOpen, FaDownLeftAndUpRightToCenter, @@ -87,6 +94,7 @@ import { FaFont, FaGauge, FaGear, + FaGears, FaGlobe, FaGraduationCap, FaGrip, @@ -95,8 +103,11 @@ import { FaGripVertical, FaHourglassHalf, FaHouse, + FaIdBadge, + FaIdCard, FaImage, FaInbox, + FaIntercom, FaKey, FaLeftLong, FaLeftRight, @@ -104,17 +115,22 @@ import { FaLink, FaList, FaListOl, + FaListUl, FaLock, + FaLockOpen, FaMagnifyingGlass, FaMagnifyingGlassMinus, FaMagnifyingGlassPlus, + FaMessage, FaMinus, + FaMoneyCheckDollar, FaPaintbrush, FaPaperPlane, FaPaperclip, FaPen, FaPenToSquare, FaPencil, + FaPiggyBank, FaPlus, FaPowerOff, FaPrint, @@ -129,9 +145,13 @@ import { FaRotate, FaRotateLeft, FaShareNodes, + FaShieldHalved, + FaSliders, FaSort, FaSortDown, FaSortUp, + FaSquareCheck, + FaSquareMinus, FaSquarePlus, FaSquarePollVertical, FaStar, @@ -139,6 +159,7 @@ import { FaTable, FaTableList, FaTag, + FaTags, FaToolbox, FaTrash, FaTrashCan, @@ -152,14 +173,19 @@ import { FaUserCheck, FaUserClock, FaUserLarge, + FaUserPen, FaUserPlus, FaUsers, + FaWindowMaximize, + FaWindowMinimize, + FaWindowRestore, FaXmark, FaYenSign, } from 'react-icons/fa6' import { createIcon } from './generateIcon' +export const FaAddressBookIcon = /*#__PURE__*/ createIcon(FaAddressBook) export const FaAddressCardIcon = /*#__PURE__*/ createIcon(FaAddressCard) export const FaAngleDownIcon = /*#__PURE__*/ createIcon(FaAngleDown) export const FaAngleLeftIcon = /*#__PURE__*/ createIcon(FaAngleLeft) @@ -168,20 +194,22 @@ export const FaAngleUpIcon = /*#__PURE__*/ createIcon(FaAngleUp) export const FaAnglesLeftIcon = /*#__PURE__*/ createIcon(FaAnglesLeft) export const FaAnglesRightIcon = /*#__PURE__*/ createIcon(FaAnglesRight) export const FaArrowDownIcon = /*#__PURE__*/ createIcon(FaArrowDown) +export const FaArrowDownWideShortIcon = /*#__PURE__*/ createIcon(FaArrowDownWideShort) export const FaArrowLeftIcon = /*#__PURE__*/ createIcon(FaArrowLeft) export const FaArrowRightIcon = /*#__PURE__*/ createIcon(FaArrowRight) export const FaArrowRotateLeftIcon = /*#__PURE__*/ createIcon(FaArrowRotateLeft) export const FaArrowRotateRightIcon = /*#__PURE__*/ createIcon(FaArrowRotateRight) export const FaArrowUp19Icon = /*#__PURE__*/ createIcon(FaArrowUp19) -export const FaArrowUpWideShortIcon = /*#__PURE__*/ createIcon(FaArrowUpWideShort) -export const FaArrowDownWideShortIcon = /*#__PURE__*/ createIcon(FaArrowDownWideShort) export const FaArrowUpIcon = /*#__PURE__*/ createIcon(FaArrowUp) +export const FaArrowUpWideShortIcon = /*#__PURE__*/ createIcon(FaArrowUpWideShort) export const FaArrowsRotateIcon = /*#__PURE__*/ createIcon(FaArrowsRotate) +export const FaAsteriskIcon = /*#__PURE__*/ createIcon(FaAsterisk) export const FaBabyCarriageIcon = /*#__PURE__*/ createIcon(FaBabyCarriage) export const FaBanIcon = /*#__PURE__*/ createIcon(FaBan) export const FaBarsIcon = /*#__PURE__*/ createIcon(FaBars) export const FaBarsStaggeredIcon = /*#__PURE__*/ createIcon(FaBarsStaggered) export const FaBellIcon = /*#__PURE__*/ createIcon(FaBell) +export const FaBellSlashIcon = /*#__PURE__*/ createIcon(FaBellSlash) export const FaBoltIcon = /*#__PURE__*/ createIcon(FaBolt) export const FaBookIcon = /*#__PURE__*/ createIcon(FaBook) export const FaBookOpenIcon = /*#__PURE__*/ createIcon(FaBookOpen) @@ -194,6 +222,7 @@ export const FaCalendarCheckIcon = /*#__PURE__*/ createIcon(FaCalendarCheck) export const FaCalendarDaysIcon = /*#__PURE__*/ createIcon(FaCalendarDays) export const FaCalendarXmarkIcon = /*#__PURE__*/ createIcon(FaCalendarXmark) export const FaCaretDownIcon = /*#__PURE__*/ createIcon(FaCaretDown) +export const FaCaretLeftIcon = /*#__PURE__*/ createIcon(FaCaretLeft) export const FaCaretRightIcon = /*#__PURE__*/ createIcon(FaCaretRight) export const FaCaretUpIcon = /*#__PURE__*/ createIcon(FaCaretUp) export const FaChartAreaIcon = /*#__PURE__*/ createIcon(FaChartArea) @@ -215,6 +244,7 @@ export const FaCirclePlusIcon = /*#__PURE__*/ createIcon(FaCirclePlus) export const FaCircleQuestionIcon = /*#__PURE__*/ createIcon(FaCircleQuestion) export const FaCircleUserIcon = /*#__PURE__*/ createIcon(FaCircleUser) export const FaCircleXmarkIcon = /*#__PURE__*/ createIcon(FaCircleXmark) +export const FaClipboardCheckIcon = /*#__PURE__*/ createIcon(FaClipboardCheck) export const FaClipboardIcon = /*#__PURE__*/ createIcon(FaClipboard) export const FaClipboardListIcon = /*#__PURE__*/ createIcon(FaClipboardList) export const FaClockIcon = /*#__PURE__*/ createIcon(FaClock) @@ -227,6 +257,8 @@ export const FaCommentIcon = /*#__PURE__*/ createIcon(FaComment) export const FaCommentsIcon = /*#__PURE__*/ createIcon(FaComments) export const FaCompressIcon = /*#__PURE__*/ createIcon(FaCompress) export const FaCopyIcon = /*#__PURE__*/ createIcon(FaCopy) +export const FaCubeIcon = /*#__PURE__*/ createIcon(FaCube) +export const FaCubesIcon = /*#__PURE__*/ createIcon(FaCubes) export const FaDatabaseIcon = /*#__PURE__*/ createIcon(FaDatabase) export const FaDoorOpenIcon = /*#__PURE__*/ createIcon(FaDoorOpen) export const FaDownLeftAndUpRightToCenterIcon = /*#__PURE__*/ createIcon( @@ -250,6 +282,7 @@ export const FaFolderPlusIcon = /*#__PURE__*/ createIcon(FaFolderPlus) export const FaFontIcon = /*#__PURE__*/ createIcon(FaFont) export const FaGaugeIcon = /*#__PURE__*/ createIcon(FaGauge) export const FaGearIcon = /*#__PURE__*/ createIcon(FaGear) +export const FaGearsIcon = /*#__PURE__*/ createIcon(FaGears) export const FaGlobeIcon = /*#__PURE__*/ createIcon(FaGlobe) export const FaGraduationCapIcon = /*#__PURE__*/ createIcon(FaGraduationCap) export const FaGripIcon = /*#__PURE__*/ createIcon(FaGrip) @@ -258,8 +291,11 @@ export const FaGripLinesVerticalIcon = /*#__PURE__*/ createIcon(FaGripLinesVerti export const FaGripVerticalIcon = /*#__PURE__*/ createIcon(FaGripVertical) export const FaHourglassHalfIcon = /*#__PURE__*/ createIcon(FaHourglassHalf) export const FaHouseIcon = /*#__PURE__*/ createIcon(FaHouse) +export const FaIdBadgeIcon = /*#__PURE__*/ createIcon(FaIdBadge) +export const FaIdCardIcon = /*#__PURE__*/ createIcon(FaIdCard) export const FaImageIcon = /*#__PURE__*/ createIcon(FaImage) export const FaInboxIcon = /*#__PURE__*/ createIcon(FaInbox) +export const FaIntercomIcon = /*#__PURE__*/ createIcon(FaIntercom) export const FaKeyIcon = /*#__PURE__*/ createIcon(FaKey) export const FaLeftLongIcon = /*#__PURE__*/ createIcon(FaLeftLong) export const FaLeftRightIcon = /*#__PURE__*/ createIcon(FaLeftRight) @@ -267,17 +303,22 @@ export const FaLightbulbIcon = /*#__PURE__*/ createIcon(FaLightbulb) export const FaLinkIcon = /*#__PURE__*/ createIcon(FaLink) export const FaListIcon = /*#__PURE__*/ createIcon(FaList) export const FaListOlIcon = /*#__PURE__*/ createIcon(FaListOl) +export const FaListUlIcon = /*#__PURE__*/ createIcon(FaListUl) export const FaLockIcon = /*#__PURE__*/ createIcon(FaLock) +export const FaLockOpenIcon = /*#__PURE__*/ createIcon(FaLockOpen) export const FaMagnifyingGlassIcon = /*#__PURE__*/ createIcon(FaMagnifyingGlass) export const FaMagnifyingGlassMinusIcon = /*#__PURE__*/ createIcon(FaMagnifyingGlassMinus) export const FaMagnifyingGlassPlusIcon = /*#__PURE__*/ createIcon(FaMagnifyingGlassPlus) +export const FaMessageIcon = /*#__PURE__*/ createIcon(FaMessage) export const FaMinusIcon = /*#__PURE__*/ createIcon(FaMinus) +export const FaMoneyCheckDollarIcon = /*#__PURE__*/ createIcon(FaMoneyCheckDollar) export const FaPaintbrushIcon = /*#__PURE__*/ createIcon(FaPaintbrush) export const FaPaperPlaneIcon = /*#__PURE__*/ createIcon(FaPaperPlane) export const FaPaperclipIcon = /*#__PURE__*/ createIcon(FaPaperclip) export const FaPenIcon = /*#__PURE__*/ createIcon(FaPen) export const FaPenToSquareIcon = /*#__PURE__*/ createIcon(FaPenToSquare) export const FaPencilIcon = /*#__PURE__*/ createIcon(FaPencil) +export const FaPiggyBankIcon = /*#__PURE__*/ createIcon(FaPiggyBank) export const FaPlusIcon = /*#__PURE__*/ createIcon(FaPlus) export const FaPowerOffIcon = /*#__PURE__*/ createIcon(FaPowerOff) export const FaPrintIcon = /*#__PURE__*/ createIcon(FaPrint) @@ -292,9 +333,13 @@ export const FaRocketIcon = /*#__PURE__*/ createIcon(FaRocket) export const FaRotateIcon = /*#__PURE__*/ createIcon(FaRotate) export const FaRotateLeftIcon = /*#__PURE__*/ createIcon(FaRotateLeft) export const FaShareNodesIcon = /*#__PURE__*/ createIcon(FaShareNodes) +export const FaShieldHalvedIcon = /*#__PURE__*/ createIcon(FaShieldHalved) +export const FaSlidersIcon = /*#__PURE__*/ createIcon(FaSliders) export const FaSortDownIcon = /*#__PURE__*/ createIcon(FaSortDown) export const FaSortIcon = /*#__PURE__*/ createIcon(FaSort) export const FaSortUpIcon = /*#__PURE__*/ createIcon(FaSortUp) +export const FaSquareCheckIcon = /*#__PURE__*/ createIcon(FaSquareCheck) +export const FaSquareMinusIcon = /*#__PURE__*/ createIcon(FaSquareMinus) export const FaSquarePlusIcon = /*#__PURE__*/ createIcon(FaSquarePlus) export const FaSquarePollVerticalIcon = /*#__PURE__*/ createIcon(FaSquarePollVertical) export const FaStarIcon = /*#__PURE__*/ createIcon(FaStar) @@ -302,6 +347,7 @@ export const FaSuitcaseMedicalIcon = /*#__PURE__*/ createIcon(FaSuitcaseMedical) export const FaTableIcon = /*#__PURE__*/ createIcon(FaTable) export const FaTableListIcon = /*#__PURE__*/ createIcon(FaTableList) export const FaTagIcon = /*#__PURE__*/ createIcon(FaTag) +export const FaTagsIcon = /*#__PURE__*/ createIcon(FaTags) export const FaToolboxIcon = /*#__PURE__*/ createIcon(FaToolbox) export const FaTrashCanIcon = /*#__PURE__*/ createIcon(FaTrashCan) export const FaTrashIcon = /*#__PURE__*/ createIcon(FaTrash) @@ -317,8 +363,12 @@ export const FaUserCheckIcon = /*#__PURE__*/ createIcon(FaUserCheck) export const FaUserClockIcon = /*#__PURE__*/ createIcon(FaUserClock) export const FaUserIcon = /*#__PURE__*/ createIcon(FaUser) export const FaUserLargeIcon = /*#__PURE__*/ createIcon(FaUserLarge) +export const FaUserPenIcon = /*#__PURE__*/ createIcon(FaUserPen) export const FaUserPlusIcon = /*#__PURE__*/ createIcon(FaUserPlus) export const FaUsersIcon = /*#__PURE__*/ createIcon(FaUsers) +export const FaWindowMaximizeIcon = /*#__PURE__*/ createIcon(FaWindowMaximize) +export const FaWindowMinimizeIcon = /*#__PURE__*/ createIcon(FaWindowMinimize) +export const FaWindowRestoreIcon = /*#__PURE__*/ createIcon(FaWindowRestore) export const FaXmarkIcon = /*#__PURE__*/ createIcon(FaXmark) export const FaYenSignIcon = /*#__PURE__*/ createIcon(FaYenSign) diff --git a/src/components/Layout/Cluster/Cluster.stories.tsx b/src/components/Layout/Cluster/Cluster.stories.tsx index 3c15aafe90..29a1c21bc9 100644 --- a/src/components/Layout/Cluster/Cluster.stories.tsx +++ b/src/components/Layout/Cluster/Cluster.stories.tsx @@ -3,8 +3,8 @@ import React from 'react' import styled, { css } from 'styled-components' import { Base } from '../../Base' +import { Fieldset } from '../../Fieldset' import { Heading } from '../../Heading' -import { Fieldset } from '../../NewFieldset' import { RadioButton } from '../../RadioButton' import { StatusLabel } from '../../StatusLabel' import { Stack } from '../Stack' diff --git a/src/components/NewFieldset/Fieldset.tsx b/src/components/NewFieldset/Fieldset.tsx deleted file mode 100644 index 84f8665d5b..0000000000 --- a/src/components/NewFieldset/Fieldset.tsx +++ /dev/null @@ -1,7 +0,0 @@ -import React, { ComponentProps } from 'react' - -import { FormGroup } from '../FormGroup' - -export const Fieldset: React.FC> = (props) => ( - -) diff --git a/src/components/NotificationBar/NotificationBar.stories.tsx b/src/components/NotificationBar/NotificationBar.stories.tsx index aab12516f7..85233d397c 100644 --- a/src/components/NotificationBar/NotificationBar.stories.tsx +++ b/src/components/NotificationBar/NotificationBar.stories.tsx @@ -4,8 +4,8 @@ import styled, { css } from 'styled-components' import { Button } from '../Button' import { CheckBox } from '../CheckBox' +import { Fieldset } from '../Fieldset' import { Cluster, Stack } from '../Layout' -import { Fieldset } from '../NewFieldset' import { RadioButton } from '../RadioButton' import { Text } from '../Text' import { TextLink as shrTextLink } from '../TextLink' diff --git a/src/components/RadioButton/RadioButton.stories.tsx b/src/components/RadioButton/RadioButton.stories.tsx index 1b63d2ae5e..12bd381500 100644 --- a/src/components/RadioButton/RadioButton.stories.tsx +++ b/src/components/RadioButton/RadioButton.stories.tsx @@ -2,7 +2,7 @@ import { StoryFn } from '@storybook/react' import React, { ChangeEvent, useState } from 'react' import styled from 'styled-components' -import { Fieldset } from '../NewFieldset' +import { Fieldset } from '../Fieldset' import { RadioButton } from './RadioButton' diff --git a/src/components/RadioButton/VRTRadioButton.stories.tsx b/src/components/RadioButton/VRTRadioButton.stories.tsx index 6b58ac65bb..53a435096c 100644 --- a/src/components/RadioButton/VRTRadioButton.stories.tsx +++ b/src/components/RadioButton/VRTRadioButton.stories.tsx @@ -2,8 +2,8 @@ import { StoryFn } from '@storybook/react' import React, { ChangeEvent, useState } from 'react' import styled from 'styled-components' +import { Fieldset } from '../Fieldset' import { InformationPanel } from '../InformationPanel' -import { Fieldset } from '../NewFieldset' import { All } from './RadioButton.stories' diff --git a/src/components/RadioButtonPanel/RadioButtonPanel.stories.tsx b/src/components/RadioButtonPanel/RadioButtonPanel.stories.tsx index 676c862c93..3ca1fc0f18 100644 --- a/src/components/RadioButtonPanel/RadioButtonPanel.stories.tsx +++ b/src/components/RadioButtonPanel/RadioButtonPanel.stories.tsx @@ -1,8 +1,8 @@ import { StoryFn } from '@storybook/react' import React, { ChangeEvent, useState } from 'react' +import { Fieldset } from '../Fieldset' import { Cluster, Stack } from '../Layout' -import { Fieldset } from '../NewFieldset' import { StatusLabel } from '../StatusLabel' import { Text } from '../Text' diff --git a/src/components/SectioningContent/SectioningContent.tsx b/src/components/SectioningContent/SectioningContent.tsx index 5de00f1234..fc0d7b0cfc 100644 --- a/src/components/SectioningContent/SectioningContent.tsx +++ b/src/components/SectioningContent/SectioningContent.tsx @@ -25,6 +25,8 @@ export const Article: FC = (props) => export const Nav: FC = (props) => +/* HINT: smarthr-ui内では引き続き使うが、exportは削除する */ +/** @deprecated SectioningFragment は削除予定です */ export const SectioningFragment: FC> = ({ children, baseLevel, diff --git a/src/components/Table/BulkActionRow.tsx b/src/components/Table/BulkActionRow.tsx index 0d1133af37..9e2c162d26 100644 --- a/src/components/Table/BulkActionRow.tsx +++ b/src/components/Table/BulkActionRow.tsx @@ -6,7 +6,10 @@ import { useTableHeadCellCount } from './useTableHeadCellCount' const bulkActionRow = tv({ slots: { wrapper: 'smarthr-ui-BulkActionRow', - cell: 'shr-border-t-shorthand shr-bg-action-background shr-p-1 shr-text-base', + cell: [ + 'shr-bg-action-background shr-p-1 shr-text-base', + 'forced-colors:shr-border-t-shorthand', + ], }, }) diff --git a/src/index.ts b/src/index.ts index 208bf30d86..27a0189971 100644 --- a/src/index.ts +++ b/src/index.ts @@ -12,7 +12,6 @@ export { DropdownMenuButton, SortDropdown, } from './components/Dropdown' -export { FieldSet } from './components/FieldSet' export { FlashMessage, FlashMessageListProvider, @@ -86,9 +85,8 @@ export { ErrorScreen, MessageScreen } from './components/ErrorScreen' export { Calendar } from './components/Calendar' export { DatePicker } from './components/DatePicker' export { SegmentedControl, SegmentedControlOption } from './components/SegmentedControl' -export { FormGroup } from './components/FormGroup' export { FormControl } from './components/FormControl' -export { Fieldset } from './components/NewFieldset' +export { Fieldset } from './components/Fieldset' export { MultiComboBox, SingleComboBox } from './components/ComboBox' export { SideNav } from './components/SideNav' export { CompactInformationPanel } from './components/CompactInformationPanel'