diff --git a/.yarn/cache/@carbon-icon-helpers-npm-10.45.1-3f2ee2290e-69da5ae85b.zip b/.yarn/cache/@carbon-icon-helpers-npm-10.45.1-3f2ee2290e-69da5ae85b.zip new file mode 100644 index 00000000000..1496960232d Binary files /dev/null and b/.yarn/cache/@carbon-icon-helpers-npm-10.45.1-3f2ee2290e-69da5ae85b.zip differ diff --git a/.yarn/cache/@carbon-icons-react-npm-11.34.1-a163c9191f-970581fdae.zip b/.yarn/cache/@carbon-icons-react-npm-11.34.1-a163c9191f-970581fdae.zip new file mode 100644 index 00000000000..611b47dcfff Binary files /dev/null and b/.yarn/cache/@carbon-icons-react-npm-11.34.1-a163c9191f-970581fdae.zip differ diff --git a/.yarn/cache/@csstools-css-parser-algorithms-npm-2.5.0-b22abafd96-f03938d623.zip b/.yarn/cache/@csstools-css-parser-algorithms-npm-2.5.0-b22abafd96-f03938d623.zip new file mode 100644 index 00000000000..cf8740d23f8 Binary files /dev/null and b/.yarn/cache/@csstools-css-parser-algorithms-npm-2.5.0-b22abafd96-f03938d623.zip differ diff --git a/.yarn/cache/@csstools-css-parser-algorithms-npm-2.6.0-cd4ceccf65-f8131e6c0e.zip b/.yarn/cache/@csstools-css-parser-algorithms-npm-2.6.0-cd4ceccf65-f8131e6c0e.zip deleted file mode 100644 index e1994afb613..00000000000 Binary files a/.yarn/cache/@csstools-css-parser-algorithms-npm-2.6.0-cd4ceccf65-f8131e6c0e.zip and /dev/null differ diff --git a/.yarn/cache/@csstools-media-query-list-parser-npm-2.1.8-c8eeacd0a4-256e85390f.zip b/.yarn/cache/@csstools-media-query-list-parser-npm-2.1.7-a8daa0487d-f16b1ee45c.zip similarity index 91% rename from .yarn/cache/@csstools-media-query-list-parser-npm-2.1.8-c8eeacd0a4-256e85390f.zip rename to .yarn/cache/@csstools-media-query-list-parser-npm-2.1.7-a8daa0487d-f16b1ee45c.zip index d5821f7d81f..bd02815b0a4 100644 Binary files a/.yarn/cache/@csstools-media-query-list-parser-npm-2.1.8-c8eeacd0a4-256e85390f.zip and b/.yarn/cache/@csstools-media-query-list-parser-npm-2.1.7-a8daa0487d-f16b1ee45c.zip differ diff --git a/.yarn/cache/@csstools-selector-specificity-npm-3.0.1-bd7a5961fc-e4b5aac3bd.zip b/.yarn/cache/@csstools-selector-specificity-npm-3.0.1-bd7a5961fc-e4b5aac3bd.zip new file mode 100644 index 00000000000..1c2cf06e53f Binary files /dev/null and b/.yarn/cache/@csstools-selector-specificity-npm-3.0.1-bd7a5961fc-e4b5aac3bd.zip differ diff --git a/.yarn/cache/@csstools-selector-specificity-npm-3.0.2-27c149e4d0-af3cc9282b.zip b/.yarn/cache/@csstools-selector-specificity-npm-3.0.2-27c149e4d0-af3cc9282b.zip deleted file mode 100644 index fc188e1ee37..00000000000 Binary files a/.yarn/cache/@csstools-selector-specificity-npm-3.0.2-27c149e4d0-af3cc9282b.zip and /dev/null differ diff --git a/.yarn/cache/@eslint-js-npm-8.57.0-00ead3710a-3c501ce8a9.zip b/.yarn/cache/@eslint-js-npm-8.56.0-b1de08cbff-97a4b5ccf7.zip similarity index 88% rename from .yarn/cache/@eslint-js-npm-8.57.0-00ead3710a-3c501ce8a9.zip rename to .yarn/cache/@eslint-js-npm-8.56.0-b1de08cbff-97a4b5ccf7.zip index 5e36262e091..a47dc831f06 100644 Binary files a/.yarn/cache/@eslint-js-npm-8.57.0-00ead3710a-3c501ce8a9.zip and b/.yarn/cache/@eslint-js-npm-8.56.0-b1de08cbff-97a4b5ccf7.zip differ diff --git a/.yarn/cache/@jridgewell-gen-mapping-npm-0.3.3-1815eba94c-072ace159c.zip b/.yarn/cache/@jridgewell-gen-mapping-npm-0.3.3-1815eba94c-072ace159c.zip new file mode 100644 index 00000000000..18c70c20a89 Binary files /dev/null and b/.yarn/cache/@jridgewell-gen-mapping-npm-0.3.3-1815eba94c-072ace159c.zip differ diff --git a/.yarn/cache/@jridgewell-gen-mapping-npm-0.3.4-874921f557-c111a3d52f.zip b/.yarn/cache/@jridgewell-gen-mapping-npm-0.3.4-874921f557-c111a3d52f.zip deleted file mode 100644 index b50014241dd..00000000000 Binary files a/.yarn/cache/@jridgewell-gen-mapping-npm-0.3.4-874921f557-c111a3d52f.zip and /dev/null differ diff --git a/.yarn/cache/@jridgewell-trace-mapping-npm-0.3.22-0baba2f798-48d3e3db00.zip b/.yarn/cache/@jridgewell-trace-mapping-npm-0.3.22-0baba2f798-48d3e3db00.zip new file mode 100644 index 00000000000..2daf2c79718 Binary files /dev/null and b/.yarn/cache/@jridgewell-trace-mapping-npm-0.3.22-0baba2f798-48d3e3db00.zip differ diff --git a/.yarn/cache/@jridgewell-trace-mapping-npm-0.3.23-1097836461-eb8d167f8a.zip b/.yarn/cache/@jridgewell-trace-mapping-npm-0.3.23-1097836461-eb8d167f8a.zip deleted file mode 100644 index 61d2ea57af3..00000000000 Binary files a/.yarn/cache/@jridgewell-trace-mapping-npm-0.3.23-1097836461-eb8d167f8a.zip and /dev/null differ diff --git a/.yarn/cache/@npmcli-query-npm-3.0.1-06ff1d4acc-8e5ac95fc1.zip b/.yarn/cache/@npmcli-query-npm-3.0.1-06ff1d4acc-8e5ac95fc1.zip new file mode 100644 index 00000000000..45d37243ab9 Binary files /dev/null and b/.yarn/cache/@npmcli-query-npm-3.0.1-06ff1d4acc-8e5ac95fc1.zip differ diff --git a/.yarn/cache/@npmcli-query-npm-3.1.0-88f6486c5b-fa79ae3179.zip b/.yarn/cache/@npmcli-query-npm-3.1.0-88f6486c5b-fa79ae3179.zip deleted file mode 100644 index 5bcc6812553..00000000000 Binary files a/.yarn/cache/@npmcli-query-npm-3.1.0-88f6486c5b-fa79ae3179.zip and /dev/null differ diff --git a/.yarn/cache/@types-chai-npm-4.3.11-db685c5f0e-c83a003596.zip b/.yarn/cache/@types-chai-npm-4.3.11-db685c5f0e-c83a003596.zip new file mode 100644 index 00000000000..56c291e39ad Binary files /dev/null and b/.yarn/cache/@types-chai-npm-4.3.11-db685c5f0e-c83a003596.zip differ diff --git a/.yarn/cache/@types-chai-npm-4.3.12-d1d9ff65ee-cf46515104.zip b/.yarn/cache/@types-chai-npm-4.3.12-d1d9ff65ee-cf46515104.zip deleted file mode 100644 index 3c5d4dce30e..00000000000 Binary files a/.yarn/cache/@types-chai-npm-4.3.12-d1d9ff65ee-cf46515104.zip and /dev/null differ diff --git a/.yarn/cache/@types-eslint-npm-8.56.3-ce183c9933-b5a006c24b.zip b/.yarn/cache/@types-eslint-npm-8.56.2-af13c76cd1-9e4805e770.zip similarity index 60% rename from .yarn/cache/@types-eslint-npm-8.56.3-ce183c9933-b5a006c24b.zip rename to .yarn/cache/@types-eslint-npm-8.56.2-af13c76cd1-9e4805e770.zip index c56dd5b3967..64b1a78dbd9 100644 Binary files a/.yarn/cache/@types-eslint-npm-8.56.3-ce183c9933-b5a006c24b.zip and b/.yarn/cache/@types-eslint-npm-8.56.2-af13c76cd1-9e4805e770.zip differ diff --git a/.yarn/cache/@types-node-npm-16.18.83-7bf4ee6434-ba44ec8b11.zip b/.yarn/cache/@types-node-npm-16.18.82-bed8d90c35-baf1f8bb6f.zip similarity index 94% rename from .yarn/cache/@types-node-npm-16.18.83-7bf4ee6434-ba44ec8b11.zip rename to .yarn/cache/@types-node-npm-16.18.82-bed8d90c35-baf1f8bb6f.zip index 3f13d416fbc..9eaa98fdfbb 100644 Binary files a/.yarn/cache/@types-node-npm-16.18.83-7bf4ee6434-ba44ec8b11.zip and b/.yarn/cache/@types-node-npm-16.18.82-bed8d90c35-baf1f8bb6f.zip differ diff --git a/.yarn/cache/@types-node-npm-18.19.18-99c464dfbd-5006bbfdd0.zip b/.yarn/cache/@types-node-npm-18.19.17-7a4d79694c-7bef9d7322.zip similarity index 94% rename from .yarn/cache/@types-node-npm-18.19.18-99c464dfbd-5006bbfdd0.zip rename to .yarn/cache/@types-node-npm-18.19.17-7a4d79694c-7bef9d7322.zip index 702155f1e27..cfba19dea75 100644 Binary files a/.yarn/cache/@types-node-npm-18.19.18-99c464dfbd-5006bbfdd0.zip and b/.yarn/cache/@types-node-npm-18.19.17-7a4d79694c-7bef9d7322.zip differ diff --git a/.yarn/cache/@types-node-npm-20.11.20-0036cdf1c0-ff449bdc94.zip b/.yarn/cache/@types-node-npm-20.11.19-5d4958999b-c7f4705d6c.zip similarity index 94% rename from .yarn/cache/@types-node-npm-20.11.20-0036cdf1c0-ff449bdc94.zip rename to .yarn/cache/@types-node-npm-20.11.19-5d4958999b-c7f4705d6c.zip index b04e68db079..da018b670da 100644 Binary files a/.yarn/cache/@types-node-npm-20.11.20-0036cdf1c0-ff449bdc94.zip and b/.yarn/cache/@types-node-npm-20.11.19-5d4958999b-c7f4705d6c.zip differ diff --git a/.yarn/cache/@types-react-npm-18.2.56-733723db25-de0df184f2.zip b/.yarn/cache/@types-react-npm-18.2.56-733723db25-de0df184f2.zip new file mode 100644 index 00000000000..50c80228d1f Binary files /dev/null and b/.yarn/cache/@types-react-npm-18.2.56-733723db25-de0df184f2.zip differ diff --git a/.yarn/cache/@types-react-npm-18.2.58-96575e4fe5-ec5e1a7d8a.zip b/.yarn/cache/@types-react-npm-18.2.58-96575e4fe5-ec5e1a7d8a.zip deleted file mode 100644 index 69e62489e54..00000000000 Binary files a/.yarn/cache/@types-react-npm-18.2.58-96575e4fe5-ec5e1a7d8a.zip and /dev/null differ diff --git a/.yarn/cache/@types-semver-npm-7.5.8-26073743d7-3496808818.zip b/.yarn/cache/@types-semver-npm-7.5.7-0758e3566d-535d88ec57.zip similarity index 68% rename from .yarn/cache/@types-semver-npm-7.5.8-26073743d7-3496808818.zip rename to .yarn/cache/@types-semver-npm-7.5.7-0758e3566d-535d88ec57.zip index 159fae7cde5..cdb7f31ff2b 100644 Binary files a/.yarn/cache/@types-semver-npm-7.5.8-26073743d7-3496808818.zip and b/.yarn/cache/@types-semver-npm-7.5.7-0758e3566d-535d88ec57.zip differ diff --git a/.yarn/cache/browserstack-cypress-cli-npm-1.28.2-d497f8106f-66c3f5190d.zip b/.yarn/cache/browserstack-cypress-cli-npm-1.28.1-8303b3b272-977000ab59.zip similarity index 96% rename from .yarn/cache/browserstack-cypress-cli-npm-1.28.2-d497f8106f-66c3f5190d.zip rename to .yarn/cache/browserstack-cypress-cli-npm-1.28.1-8303b3b272-977000ab59.zip index b771d15f036..afdb0292f58 100644 Binary files a/.yarn/cache/browserstack-cypress-cli-npm-1.28.2-d497f8106f-66c3f5190d.zip and b/.yarn/cache/browserstack-cypress-cli-npm-1.28.1-8303b3b272-977000ab59.zip differ diff --git a/.yarn/cache/caniuse-lite-npm-1.0.30001588-4c3a70951f-09150ef2da.zip b/.yarn/cache/caniuse-lite-npm-1.0.30001588-4c3a70951f-09150ef2da.zip new file mode 100644 index 00000000000..cf9f79985e6 Binary files /dev/null and b/.yarn/cache/caniuse-lite-npm-1.0.30001588-4c3a70951f-09150ef2da.zip differ diff --git a/.yarn/cache/caniuse-lite-npm-1.0.30001589-1a81155fd5-5e1d2eb7c3.zip b/.yarn/cache/caniuse-lite-npm-1.0.30001589-1a81155fd5-5e1d2eb7c3.zip deleted file mode 100644 index 4da4d603ce0..00000000000 Binary files a/.yarn/cache/caniuse-lite-npm-1.0.30001589-1a81155fd5-5e1d2eb7c3.zip and /dev/null differ diff --git a/.yarn/cache/electron-to-chromium-npm-1.4.673-5b3ec80e64-e9e82bec56.zip b/.yarn/cache/electron-to-chromium-npm-1.4.673-5b3ec80e64-e9e82bec56.zip new file mode 100644 index 00000000000..cd0f08e07b7 Binary files /dev/null and b/.yarn/cache/electron-to-chromium-npm-1.4.673-5b3ec80e64-e9e82bec56.zip differ diff --git a/.yarn/cache/electron-to-chromium-npm-1.4.681-dd0fc7593f-92baee495b.zip b/.yarn/cache/electron-to-chromium-npm-1.4.681-dd0fc7593f-92baee495b.zip deleted file mode 100644 index 600e4b9ef9e..00000000000 Binary files a/.yarn/cache/electron-to-chromium-npm-1.4.681-dd0fc7593f-92baee495b.zip and /dev/null differ diff --git a/.yarn/cache/es-set-tostringtag-npm-2.0.2-dae5ec6c58-afcec3a4c9.zip b/.yarn/cache/es-set-tostringtag-npm-2.0.2-dae5ec6c58-afcec3a4c9.zip new file mode 100644 index 00000000000..c611db75c02 Binary files /dev/null and b/.yarn/cache/es-set-tostringtag-npm-2.0.2-dae5ec6c58-afcec3a4c9.zip differ diff --git a/.yarn/cache/es-set-tostringtag-npm-2.0.3-8a191fed13-7227fa48a4.zip b/.yarn/cache/es-set-tostringtag-npm-2.0.3-8a191fed13-7227fa48a4.zip deleted file mode 100644 index 43cd0ecd8b6..00000000000 Binary files a/.yarn/cache/es-set-tostringtag-npm-2.0.3-8a191fed13-7227fa48a4.zip and /dev/null differ diff --git a/.yarn/cache/es5-ext-npm-0.10.63-6a78b50e16-69e373ffcf.zip b/.yarn/cache/es5-ext-npm-0.10.62-f20aca46cb-3f6a3bcdb7.zip similarity index 79% rename from .yarn/cache/es5-ext-npm-0.10.63-6a78b50e16-69e373ffcf.zip rename to .yarn/cache/es5-ext-npm-0.10.62-f20aca46cb-3f6a3bcdb7.zip index ef599b9655e..6c8d1fa98fa 100644 Binary files a/.yarn/cache/es5-ext-npm-0.10.63-6a78b50e16-69e373ffcf.zip and b/.yarn/cache/es5-ext-npm-0.10.62-f20aca46cb-3f6a3bcdb7.zip differ diff --git a/.yarn/cache/eslint-npm-8.57.0-4286e12a3a-00496e218b.zip b/.yarn/cache/eslint-npm-8.56.0-6eec398a41-ef6193c6e4.zip similarity index 91% rename from .yarn/cache/eslint-npm-8.57.0-4286e12a3a-00496e218b.zip rename to .yarn/cache/eslint-npm-8.56.0-6eec398a41-ef6193c6e4.zip index 154ee0dd512..67141b768ec 100644 Binary files a/.yarn/cache/eslint-npm-8.57.0-4286e12a3a-00496e218b.zip and b/.yarn/cache/eslint-npm-8.56.0-6eec398a41-ef6193c6e4.zip differ diff --git a/.yarn/cache/eslint-plugin-jsdoc-npm-48.2.0-93d7c5f3c6-4a616f6d88.zip b/.yarn/cache/eslint-plugin-jsdoc-npm-48.1.0-bd34225dba-ae81ac8321.zip similarity index 95% rename from .yarn/cache/eslint-plugin-jsdoc-npm-48.2.0-93d7c5f3c6-4a616f6d88.zip rename to .yarn/cache/eslint-plugin-jsdoc-npm-48.1.0-bd34225dba-ae81ac8321.zip index 8475994d806..7c747cb4061 100644 Binary files a/.yarn/cache/eslint-plugin-jsdoc-npm-48.2.0-93d7c5f3c6-4a616f6d88.zip and b/.yarn/cache/eslint-plugin-jsdoc-npm-48.1.0-bd34225dba-ae81ac8321.zip differ diff --git a/.yarn/cache/esniff-npm-2.0.1-26cea8766c-f6a2abd2f8.zip b/.yarn/cache/esniff-npm-2.0.1-26cea8766c-f6a2abd2f8.zip deleted file mode 100644 index 1b38f628128..00000000000 Binary files a/.yarn/cache/esniff-npm-2.0.1-26cea8766c-f6a2abd2f8.zip and /dev/null differ diff --git a/.yarn/cache/flatted-npm-3.2.9-0462256d3c-dc2b89e46a.zip b/.yarn/cache/flatted-npm-3.2.9-0462256d3c-dc2b89e46a.zip new file mode 100644 index 00000000000..4fd521e4e65 Binary files /dev/null and b/.yarn/cache/flatted-npm-3.2.9-0462256d3c-dc2b89e46a.zip differ diff --git a/.yarn/cache/flatted-npm-3.3.1-458870f59b-7b8376061d.zip b/.yarn/cache/flatted-npm-3.3.1-458870f59b-7b8376061d.zip deleted file mode 100644 index 0dc832903d1..00000000000 Binary files a/.yarn/cache/flatted-npm-3.3.1-458870f59b-7b8376061d.zip and /dev/null differ diff --git a/.yarn/cache/focus-lock-npm-1.3.3-8741c571ae-8760cec07f.zip b/.yarn/cache/focus-lock-npm-1.3.1-b2e5233287-68b2c9c745.zip similarity index 79% rename from .yarn/cache/focus-lock-npm-1.3.3-8741c571ae-8760cec07f.zip rename to .yarn/cache/focus-lock-npm-1.3.1-b2e5233287-68b2c9c745.zip index 5d34ebbed6d..795bbb92486 100644 Binary files a/.yarn/cache/focus-lock-npm-1.3.3-8741c571ae-8760cec07f.zip and b/.yarn/cache/focus-lock-npm-1.3.1-b2e5233287-68b2c9c745.zip differ diff --git a/.yarn/cache/ip-npm-2.0.0-204facb3cc-1270b11e53.zip b/.yarn/cache/ip-npm-2.0.0-204facb3cc-1270b11e53.zip new file mode 100644 index 00000000000..c751a851ab9 Binary files /dev/null and b/.yarn/cache/ip-npm-2.0.0-204facb3cc-1270b11e53.zip differ diff --git a/.yarn/cache/ip-npm-2.0.1-ee48691f03-d6dd154e1b.zip b/.yarn/cache/ip-npm-2.0.1-ee48691f03-d6dd154e1b.zip deleted file mode 100644 index 5764c675cc9..00000000000 Binary files a/.yarn/cache/ip-npm-2.0.1-ee48691f03-d6dd154e1b.zip and /dev/null differ diff --git a/.yarn/cache/is-negative-zero-npm-2.0.2-0adac91f15-edbec1a9e6.zip b/.yarn/cache/is-negative-zero-npm-2.0.2-0adac91f15-edbec1a9e6.zip new file mode 100644 index 00000000000..d7c31fff381 Binary files /dev/null and b/.yarn/cache/is-negative-zero-npm-2.0.2-0adac91f15-edbec1a9e6.zip differ diff --git a/.yarn/cache/is-negative-zero-npm-2.0.3-d06b09e322-8fe5cffd8d.zip b/.yarn/cache/is-negative-zero-npm-2.0.3-d06b09e322-8fe5cffd8d.zip deleted file mode 100644 index 4d055b36edd..00000000000 Binary files a/.yarn/cache/is-negative-zero-npm-2.0.3-d06b09e322-8fe5cffd8d.zip and /dev/null differ diff --git a/.yarn/cache/is-shared-array-buffer-npm-1.0.2-32e4181fcd-23d82259d6.zip b/.yarn/cache/is-shared-array-buffer-npm-1.0.2-32e4181fcd-23d82259d6.zip new file mode 100644 index 00000000000..190d00758e0 Binary files /dev/null and b/.yarn/cache/is-shared-array-buffer-npm-1.0.2-32e4181fcd-23d82259d6.zip differ diff --git a/.yarn/cache/is-shared-array-buffer-npm-1.0.3-3b3b3142a6-bc5402900d.zip b/.yarn/cache/is-shared-array-buffer-npm-1.0.3-3b3b3142a6-bc5402900d.zip deleted file mode 100644 index d4372dd3d9b..00000000000 Binary files a/.yarn/cache/is-shared-array-buffer-npm-1.0.3-3b3b3142a6-bc5402900d.zip and /dev/null differ diff --git a/.yarn/cache/istanbul-reports-npm-3.1.6-66918eb97f-135c178e50.zip b/.yarn/cache/istanbul-reports-npm-3.1.6-66918eb97f-135c178e50.zip new file mode 100644 index 00000000000..49153e1825a Binary files /dev/null and b/.yarn/cache/istanbul-reports-npm-3.1.6-66918eb97f-135c178e50.zip differ diff --git a/.yarn/cache/istanbul-reports-npm-3.1.7-356486c0f4-f1faaa4684.zip b/.yarn/cache/istanbul-reports-npm-3.1.7-356486c0f4-f1faaa4684.zip deleted file mode 100644 index 878079f5cd3..00000000000 Binary files a/.yarn/cache/istanbul-reports-npm-3.1.7-356486c0f4-f1faaa4684.zip and /dev/null differ diff --git a/.yarn/cache/joi-npm-17.12.2-a5561bea50-4225738280.zip b/.yarn/cache/joi-npm-17.12.1-025a6cdac4-6c48ed73e0.zip similarity index 93% rename from .yarn/cache/joi-npm-17.12.2-a5561bea50-4225738280.zip rename to .yarn/cache/joi-npm-17.12.1-025a6cdac4-6c48ed73e0.zip index 212c47fb042..7091092cb65 100644 Binary files a/.yarn/cache/joi-npm-17.12.2-a5561bea50-4225738280.zip and b/.yarn/cache/joi-npm-17.12.1-025a6cdac4-6c48ed73e0.zip differ diff --git a/.yarn/cache/karma-npm-6.4.3-c1db2b322c-7fc194f5d4.zip b/.yarn/cache/karma-npm-6.4.2-b40bdb3129-4289783fdc.zip similarity index 72% rename from .yarn/cache/karma-npm-6.4.3-c1db2b322c-7fc194f5d4.zip rename to .yarn/cache/karma-npm-6.4.2-b40bdb3129-4289783fdc.zip index 601d8fc02b8..15100acd4c7 100644 Binary files a/.yarn/cache/karma-npm-6.4.3-c1db2b322c-7fc194f5d4.zip and b/.yarn/cache/karma-npm-6.4.2-b40bdb3129-4289783fdc.zip differ diff --git a/.yarn/cache/npm-run-path-npm-5.2.0-f449a9c258-c5325e0160.zip b/.yarn/cache/npm-run-path-npm-5.2.0-f449a9c258-c5325e0160.zip new file mode 100644 index 00000000000..b4e610d64cc Binary files /dev/null and b/.yarn/cache/npm-run-path-npm-5.2.0-f449a9c258-c5325e0160.zip differ diff --git a/.yarn/cache/npm-run-path-npm-5.3.0-193efca236-ae8e7a89da.zip b/.yarn/cache/npm-run-path-npm-5.3.0-193efca236-ae8e7a89da.zip deleted file mode 100644 index 997c8b8874e..00000000000 Binary files a/.yarn/cache/npm-run-path-npm-5.3.0-193efca236-ae8e7a89da.zip and /dev/null differ diff --git a/.yarn/cache/react-focus-lock-npm-2.11.1-a572f4aece-b7d01554ce.zip b/.yarn/cache/react-focus-lock-npm-2.11.0-cf10df60d2-016d6fa548.zip similarity index 95% rename from .yarn/cache/react-focus-lock-npm-2.11.1-a572f4aece-b7d01554ce.zip rename to .yarn/cache/react-focus-lock-npm-2.11.0-cf10df60d2-016d6fa548.zip index 1f0564c6ed2..ce94967f7df 100644 Binary files a/.yarn/cache/react-focus-lock-npm-2.11.1-a572f4aece-b7d01554ce.zip and b/.yarn/cache/react-focus-lock-npm-2.11.0-cf10df60d2-016d6fa548.zip differ diff --git a/.yarn/cache/sass-npm-1.71.0-38088726c4-5616f0ef0d.zip b/.yarn/cache/sass-npm-1.71.0-38088726c4-5616f0ef0d.zip new file mode 100644 index 00000000000..da9785ec6a7 Binary files /dev/null and b/.yarn/cache/sass-npm-1.71.0-38088726c4-5616f0ef0d.zip differ diff --git a/.yarn/cache/sass-npm-1.71.1-3aced13991-51e3c667e2.zip b/.yarn/cache/sass-npm-1.71.1-3aced13991-51e3c667e2.zip deleted file mode 100644 index 4f9a288e36c..00000000000 Binary files a/.yarn/cache/sass-npm-1.71.1-3aced13991-51e3c667e2.zip and /dev/null differ diff --git a/.yarn/cache/set-function-name-npm-2.0.1-a9f970eea0-4975d17d90.zip b/.yarn/cache/set-function-name-npm-2.0.1-a9f970eea0-4975d17d90.zip new file mode 100644 index 00000000000..f18d53b5996 Binary files /dev/null and b/.yarn/cache/set-function-name-npm-2.0.1-a9f970eea0-4975d17d90.zip differ diff --git a/.yarn/cache/set-function-name-npm-2.0.2-3d9a2d8899-c7614154a5.zip b/.yarn/cache/set-function-name-npm-2.0.2-3d9a2d8899-c7614154a5.zip deleted file mode 100644 index 7a64e14695f..00000000000 Binary files a/.yarn/cache/set-function-name-npm-2.0.2-3d9a2d8899-c7614154a5.zip and /dev/null differ diff --git a/.yarn/cache/socket.io-adapter-npm-2.5.2-3456682203-08b052d6b4.zip b/.yarn/cache/socket.io-adapter-npm-2.5.2-3456682203-08b052d6b4.zip new file mode 100644 index 00000000000..36542935060 Binary files /dev/null and b/.yarn/cache/socket.io-adapter-npm-2.5.2-3456682203-08b052d6b4.zip differ diff --git a/.yarn/cache/socket.io-adapter-npm-2.5.4-36f9ea4c66-48f35ce91e.zip b/.yarn/cache/socket.io-adapter-npm-2.5.4-36f9ea4c66-48f35ce91e.zip deleted file mode 100644 index 378e23879cd..00000000000 Binary files a/.yarn/cache/socket.io-adapter-npm-2.5.4-36f9ea4c66-48f35ce91e.zip and /dev/null differ diff --git a/.yarn/cache/socks-npm-2.8.1-3b253d7256-a3cc38e071.zip b/.yarn/cache/socks-npm-2.8.0-9be534eccc-ed0224ce2c.zip similarity index 93% rename from .yarn/cache/socks-npm-2.8.1-3b253d7256-a3cc38e071.zip rename to .yarn/cache/socks-npm-2.8.0-9be534eccc-ed0224ce2c.zip index 51db3dcc498..68bf0105680 100644 Binary files a/.yarn/cache/socks-npm-2.8.1-3b253d7256-a3cc38e071.zip and b/.yarn/cache/socks-npm-2.8.0-9be534eccc-ed0224ce2c.zip differ diff --git a/.yarn/cache/stylelint-use-logical-npm-2.1.0-3c4853dd7e-91109a2d65.zip b/.yarn/cache/stylelint-use-logical-npm-2.1.0-3c4853dd7e-91109a2d65.zip new file mode 100644 index 00000000000..aa7840fada5 Binary files /dev/null and b/.yarn/cache/stylelint-use-logical-npm-2.1.0-3c4853dd7e-91109a2d65.zip differ diff --git a/.yarn/cache/stylelint-use-logical-npm-2.1.1-1b99cfeebd-b3e253fc21.zip b/.yarn/cache/stylelint-use-logical-npm-2.1.1-1b99cfeebd-b3e253fc21.zip deleted file mode 100644 index 634eeec510f..00000000000 Binary files a/.yarn/cache/stylelint-use-logical-npm-2.1.1-1b99cfeebd-b3e253fc21.zip and /dev/null differ diff --git a/.yarn/cache/terser-npm-5.28.1-72da2587ce-922159f036.zip b/.yarn/cache/terser-npm-5.27.1-04445d9384-4b5c8c6554.zip similarity index 67% rename from .yarn/cache/terser-npm-5.28.1-72da2587ce-922159f036.zip rename to .yarn/cache/terser-npm-5.27.1-04445d9384-4b5c8c6554.zip index 3b8124e852f..5ada120a07f 100644 Binary files a/.yarn/cache/terser-npm-5.28.1-72da2587ce-922159f036.zip and b/.yarn/cache/terser-npm-5.27.1-04445d9384-4b5c8c6554.zip differ diff --git a/.yarn/cache/type-fest-npm-4.10.3-ce4f9a2088-ab86ee1624.zip b/.yarn/cache/type-fest-npm-4.10.2-71667dd36f-2b1ad1270d.zip similarity index 90% rename from .yarn/cache/type-fest-npm-4.10.3-ce4f9a2088-ab86ee1624.zip rename to .yarn/cache/type-fest-npm-4.10.2-71667dd36f-2b1ad1270d.zip index 9946a9c08dc..b80926a6e97 100644 Binary files a/.yarn/cache/type-fest-npm-4.10.3-ce4f9a2088-ab86ee1624.zip and b/.yarn/cache/type-fest-npm-4.10.2-71667dd36f-2b1ad1270d.zip differ diff --git a/.yarn/cache/typed-array-buffer-npm-1.0.1-812b8a9be7-1d65e46b2b.zip b/.yarn/cache/typed-array-buffer-npm-1.0.1-812b8a9be7-1d65e46b2b.zip new file mode 100644 index 00000000000..35bebd4a31a Binary files /dev/null and b/.yarn/cache/typed-array-buffer-npm-1.0.1-812b8a9be7-1d65e46b2b.zip differ diff --git a/.yarn/cache/typed-array-buffer-npm-1.0.2-31e458f38d-02ffc185d2.zip b/.yarn/cache/typed-array-buffer-npm-1.0.2-31e458f38d-02ffc185d2.zip deleted file mode 100644 index 8d9408043ed..00000000000 Binary files a/.yarn/cache/typed-array-buffer-npm-1.0.2-31e458f38d-02ffc185d2.zip and /dev/null differ diff --git a/.yarn/cache/typed-array-byte-length-npm-1.0.0-94d79975ca-6f376bf5d9.zip b/.yarn/cache/typed-array-byte-length-npm-1.0.0-94d79975ca-6f376bf5d9.zip new file mode 100644 index 00000000000..1197d55f45e Binary files /dev/null and b/.yarn/cache/typed-array-byte-length-npm-1.0.0-94d79975ca-6f376bf5d9.zip differ diff --git a/.yarn/cache/typed-array-byte-length-npm-1.0.1-9ab0891fb8-e4a3832973.zip b/.yarn/cache/typed-array-byte-length-npm-1.0.1-9ab0891fb8-e4a3832973.zip deleted file mode 100644 index 9843e08c03b..00000000000 Binary files a/.yarn/cache/typed-array-byte-length-npm-1.0.1-9ab0891fb8-e4a3832973.zip and /dev/null differ diff --git a/.yarn/cache/typed-array-byte-offset-npm-1.0.1-ed5a6be310-b174c0bac2.zip b/.yarn/cache/typed-array-byte-offset-npm-1.0.1-ed5a6be310-b174c0bac2.zip new file mode 100644 index 00000000000..8bfa36d0f73 Binary files /dev/null and b/.yarn/cache/typed-array-byte-offset-npm-1.0.1-ed5a6be310-b174c0bac2.zip differ diff --git a/.yarn/cache/typed-array-byte-offset-npm-1.0.2-14b64ee0e1-ac26d720eb.zip b/.yarn/cache/typed-array-byte-offset-npm-1.0.2-14b64ee0e1-ac26d720eb.zip deleted file mode 100644 index 9ed84411279..00000000000 Binary files a/.yarn/cache/typed-array-byte-offset-npm-1.0.2-14b64ee0e1-ac26d720eb.zip and /dev/null differ diff --git a/.yarn/cache/typed-array-length-npm-1.0.4-92771b81fc-0444658acc.zip b/.yarn/cache/typed-array-length-npm-1.0.4-92771b81fc-0444658acc.zip new file mode 100644 index 00000000000..5f4dc17c344 Binary files /dev/null and b/.yarn/cache/typed-array-length-npm-1.0.4-92771b81fc-0444658acc.zip differ diff --git a/.yarn/cache/typed-array-length-npm-1.0.5-fc569a83ad-f9a0da99c4.zip b/.yarn/cache/typed-array-length-npm-1.0.5-fc569a83ad-f9a0da99c4.zip deleted file mode 100644 index f39ae85948c..00000000000 Binary files a/.yarn/cache/typed-array-length-npm-1.0.5-fc569a83ad-f9a0da99c4.zip and /dev/null differ diff --git a/.yarn/cache/webpack-npm-5.90.3-2a12e60d26-48c9696eca.zip b/.yarn/cache/webpack-npm-5.90.2-85c9166311-4eaeed1255.zip similarity index 80% rename from .yarn/cache/webpack-npm-5.90.3-2a12e60d26-48c9696eca.zip rename to .yarn/cache/webpack-npm-5.90.2-85c9166311-4eaeed1255.zip index 022369b0edc..bbf7d46ca58 100644 Binary files a/.yarn/cache/webpack-npm-5.90.3-2a12e60d26-48c9696eca.zip and b/.yarn/cache/webpack-npm-5.90.2-85c9166311-4eaeed1255.zip differ diff --git a/packages/carbon-web-components/package.json b/packages/carbon-web-components/package.json index b07ba2cf46f..4f93ed93212 100644 --- a/packages/carbon-web-components/package.json +++ b/packages/carbon-web-components/package.json @@ -70,7 +70,7 @@ ], "dependencies": { "@babel/runtime": "^7.16.3", - "@carbon/ibm-products-styles": "^2.24.0", + "@carbon/ibm-products-styles": "^2.27.1", "@carbon/styles": "1.51.0", "@floating-ui/dom": "^1.6.3", "@ibm/telemetry-js": "^1.2.1", diff --git a/packages/carbon-web-components/src/components/button/button-set-base.ts b/packages/carbon-web-components/src/components/button/button-set-base.ts new file mode 100644 index 00000000000..4f8ed26f0c5 --- /dev/null +++ b/packages/carbon-web-components/src/components/button/button-set-base.ts @@ -0,0 +1,34 @@ +/** + * @license + * + * Copyright IBM Corp. 2020, 2024 + * + * This source code is licensed under the Apache-2.0 license found in the + * LICENSE file in the root directory of this source tree. + */ + +import { LitElement, html } from 'lit'; +import { customElement } from 'lit/decorators.js'; +import styles from './button.scss'; +import { prefix } from '../../globals/settings'; + +/** + * Button set without button checks + * + * @element cds-button-set-base + */ +@customElement(`${prefix}-button-set-base`) +class CDSButtonSetBase extends LitElement { + render() { + return html``; + } + + connectedCallback() { + super.connectedCallback(); + this.setAttribute('role', 'list'); + } + + static styles = styles; // `styles` here is a `CSSResult` generated by custom WebPack loader +} +/* @__GENERATE_REACT_CUSTOM_ELEMENT_TYPE__ */ +export default CDSButtonSetBase; diff --git a/packages/carbon-web-components/src/components/button/button-set.ts b/packages/carbon-web-components/src/components/button/button-set.ts index 3c5b562df9e..cb20a8e2202 100644 --- a/packages/carbon-web-components/src/components/button/button-set.ts +++ b/packages/carbon-web-components/src/components/button/button-set.ts @@ -7,11 +7,12 @@ * LICENSE file in the root directory of this source tree. */ -import { LitElement, html } from 'lit'; +import { html } from 'lit'; import { customElement } from 'lit/decorators.js'; import { BUTTON_KIND } from './defs'; import styles from './button.scss'; import { prefix } from '../../globals/settings'; +import CDSButtonSetBase from './button-set-base'; /** * Button set. @@ -19,7 +20,7 @@ import { prefix } from '../../globals/settings'; * @element cds-button-set */ @customElement(`${prefix}-button-set`) -class CDSButtonSet extends LitElement { +class CDSButtonSet extends CDSButtonSetBase { /** * Handler for @slotchange, set the first cds-button to kind secondary and primary for the remaining ones * @@ -55,12 +56,6 @@ class CDSButtonSet extends LitElement { render() { return html` `; } - - connectedCallback() { - super.connectedCallback(); - this.setAttribute('role', 'list'); - } - /** * A selector that will return the child items. */ diff --git a/packages/carbon-web-components/src/components/side-panel/side-panel-button-set.ts b/packages/carbon-web-components/src/components/side-panel/side-panel-button-set.ts deleted file mode 100644 index da67aa063e6..00000000000 --- a/packages/carbon-web-components/src/components/side-panel/side-panel-button-set.ts +++ /dev/null @@ -1,28 +0,0 @@ -/** - * @license - * - * Copyright IBM Corp. 2020, 2024 - * - * This source code is licensed under the Apache-2.0 license found in the - * LICENSE file in the root directory of this source tree. - */ - -import { customElement } from 'lit/decorators.js'; -import { prefix } from '../../globals/settings'; -import CDSButtonSet from '../button/button-set'; - -/** - * Button set. - * - * @element cds-side-panel-button-set - */ -@customElement(`${prefix}-side-panel-button-set`) -class CDSSidePanelButtonSet extends CDSButtonSet { - _handleSlotChange() { - // do not re-order button set - return; - } -} - -/* @__GENERATE_REACT_CUSTOM_ELEMENT_TYPE__ */ -export default CDSSidePanelButtonSet; diff --git a/packages/carbon-web-components/src/components/side-panel/side-panel-story.ts b/packages/carbon-web-components/src/components/side-panel/side-panel-story.ts index ce924b80c30..ffe7521a6c1 100644 --- a/packages/carbon-web-components/src/components/side-panel/side-panel-story.ts +++ b/packages/carbon-web-components/src/components/side-panel/side-panel-story.ts @@ -10,12 +10,11 @@ import { TemplateResult, html } from 'lit'; import { boolean, select, text } from '@storybook/addon-knobs'; import '../button/button'; -import { SIDE_PANEL_SIZE } from './side-panel'; +import { SIDE_PANEL_SIZE, SIDE_PANEL_PLACEMENT } from './side-panel'; import './index'; import '../text-input/index'; import '../textarea/index'; import storyDocs from './side-panel-story.mdx'; -import { SIDE_PANEL_PLACEMENT } from './defs'; import Settings from '@carbon/icons/lib/settings/16'; import Trashcan from '@carbon/icons/lib/trash-can/16'; import { prefix } from '../../globals/settings'; @@ -197,6 +196,7 @@ const actionItems = { 'Two buttons with danger': 3, 'Three buttons with ghost': 4, 'Three buttons with danger': 5, + 'Too many buttons': 6, }; // TODO: There are problems switching this @@ -243,6 +243,22 @@ const getActionItems = (index) => { Primary`; + case 6: + return html`Danger + Tertiary + Secondary + Primary`; default: return null; } @@ -340,7 +356,6 @@ const DefaultTemplate = (argsIn) => { selector-page-content=${args.selectorPageContent} size=${args.size} ?slide-in=${args.slideIn} - slug=${args.slug} title=${args.title} @cds-side-panel-navigate-back=${prevStep}> diff --git a/packages/carbon-web-components/src/components/side-panel/side-panel.scss b/packages/carbon-web-components/src/components/side-panel/side-panel.scss index 8d56df90168..49716b5f9ae 100644 --- a/packages/carbon-web-components/src/components/side-panel/side-panel.scss +++ b/packages/carbon-web-components/src/components/side-panel/side-panel.scss @@ -14,6 +14,7 @@ $css--plex: true !default; @use '@carbon/styles/scss/spacing' as *; @use '@carbon/styles/scss/theme' as *; @use '@carbon/styles/scss/utilities/ai-gradient' as *; +@use '@carbon/styles/scss/utilities/convert' as *; @use 'sass:map'; $pkg-prefix: 'cds'; @@ -97,6 +98,10 @@ $block-class-action-set: #{$pkg-prefix}--action-set; @extend .#{$block-class}--#{$size}; } } + + &[condensed-actions] { + @extend .#{$block-class}--condensed-actions; + } } #{$prefix}-layer { @@ -208,6 +213,12 @@ $block-class-action-set: #{$pkg-prefix}--action-set; max-inline-size: none; } + ::slotted(#{$prefix}-button[hidden]) { + @extend .#{$prefix}--visually-hidden; + + display: none; + } + // -1 in @container query is for 1px left border @container (width <= #{map.get(spv.$side-panel-sizes, lg)}) { /* stylelint-disable-next-line selector-type-no-unknown */ diff --git a/packages/carbon-web-components/src/components/side-panel/side-panel.ts b/packages/carbon-web-components/src/components/side-panel/side-panel.ts index 6adf5965b2b..05f05439d4b 100644 --- a/packages/carbon-web-components/src/components/side-panel/side-panel.ts +++ b/packages/carbon-web-components/src/components/side-panel/side-panel.ts @@ -8,7 +8,12 @@ */ import { LitElement, html } from 'lit'; -import { property, query, state } from 'lit/decorators.js'; +import { + property, + query, + queryAssignedElements, + state, +} from 'lit/decorators.js'; import { prefix } from '../../globals/settings'; import HostListener from '../../globals/decorators/host-listener'; import HostListenerMixin from '../../globals/mixins/host-listener'; @@ -22,9 +27,9 @@ import { moderate02 } from '@carbon/motion'; import '../button/index'; import '../layer/index'; import Handle from '../../globals/internal/handle'; -import './side-panel-button-set'; +import '../button/button-set-base'; -export { SIDE_PANEL_SIZE }; +export { SIDE_PANEL_SIZE, SIDE_PANEL_PLACEMENT }; // eslint-disable-next-line no-bitwise const PRECEDING = @@ -139,6 +144,9 @@ class CDSSidePanel extends HostListenerMixin(LitElement) { @query(`.${blockClass}__inner-content`) private _innerContent!: HTMLElement; + @queryAssignedElements({ slot: 'actions', selector: `${prefix}-button` }) + private _actions!: Array; + @state() _doAnimateTitle = true; @@ -174,7 +182,6 @@ class CDSSidePanel extends HostListenerMixin(LitElement) { // @ts-ignore: The decorator refers to this method but TS thinks this method is not referred to private _handleBlur = async ({ target, relatedTarget }: FocusEvent) => { const { - // condensedActions, open, _startSentinelNode: startSentinelNode, _endSentinelNode: endSentinelNode, @@ -358,7 +365,7 @@ class CDSSidePanel extends HostListenerMixin(LitElement) { }; private _checkUpdateIconButtonSizes = () => { - const slug = this.querySelector('cds-slug'); + const slug = this.querySelector(`${prefix}-slug`); const otherButtons = this?.shadowRoot?.querySelectorAll( '#nav-back-button, #close-button' ); @@ -366,7 +373,9 @@ class CDSSidePanel extends HostListenerMixin(LitElement) { let iconButtonSize = 'sm'; if (slug || otherButtons?.length) { - const actions = this?.querySelectorAll?.('cds-button[slot="actions"]'); + const actions = this?.querySelectorAll?.( + `${prefix}-button[slot='actions']` + ); if (actions?.length && /l/.test(this.size)) { iconButtonSize = 'md'; @@ -386,14 +395,14 @@ class CDSSidePanel extends HostListenerMixin(LitElement) { private _handleSlugChange(e: Event) { this._checkUpdateIconButtonSizes(); - const childItems = (e.target as HTMLSlotElement).assignedNodes(); + const childItems = (e.target as HTMLSlotElement).assignedElements(); this._hasSlug = childItems.length > 0; } private _handleSubtitleChange(e: Event) { const target = e.target as HTMLSlotElement; - const subtitle = target?.assignedNodes(); + const subtitle = target?.assignedElements(); this._hasSubtitle = subtitle.length > 0; } @@ -413,6 +422,18 @@ class CDSSidePanel extends HostListenerMixin(LitElement) { } } + private _checkUpdateActionSizes = () => { + if (this._actions) { + for (let i = 0; i < this._actions.length; i++) { + this._actions[i].setAttribute( + 'size', + this.condensedActions ? 'lg' : 'xl' + ); + } + } + }; + + private _maxActions = 3; private _handleActionsChange(e: Event) { const target = e.target as HTMLSlotElement; const actions = target?.assignedElements(); @@ -421,26 +442,28 @@ class CDSSidePanel extends HostListenerMixin(LitElement) { this._checkUpdateIconButtonSizes(); const actionsCount = actions?.length ?? 0; - if (actionsCount > 3) { - this._actionsCount = 3; - console.warn(`Too many side-panel actions, max 3.`); + if (actionsCount > this._maxActions) { + this._actionsCount = this._maxActions; + if (process.env.NODE_ENV === 'development') { + console.error(`Too many side-panel actions, max ${this._maxActions}.`); + } } else { this._actionsCount = actionsCount; } - for (let i = 0; i < actionsCount; i++) { - if (i > 3) { + for (let i = 0; i < actions?.length; i++) { + if (i + 1 > this._maxActions) { // hide excessive side panel actions - actions[i].setAttribute('hidden', ''); + actions[i].setAttribute('hidden', 'true'); actions[i].setAttribute( - 'data-actions-limit-3-exceeded', + `data-actions-limit-${this._maxActions}-exceeded`, `${actions.length}` ); } else { - actions[i].setAttribute('size', this.condensedActions ? 'lg' : 'xl'); actions[i].classList.add(`${blockClassActionSet}__action-button`); } } + this._checkUpdateActionSizes(); } private _checkSetDoAnimateTitle = () => { @@ -788,14 +811,14 @@ class CDSSidePanel extends HostListenerMixin(LitElement) { ` : html` ${headerTemplate} ${mainTemplate}`} - - + 💡 Check our +> [CodeSandbox](https://codesandbox.io/s/github/carbon-design-system/carbon-for-ibm-dotcom/tree/feat/main/packages/carbon-web-components/examples/codesandbox/basic/components/tearsheet) +> example implementation. + +[![Edit carbon-web-components](https://codesandbox.io/static/img/play-codesandbox.svg)](https://codesandbox.io/s/github/carbon-design-system/carbon-for-ibm-dotcom/tree/feat/main/packages/carbon-web-components/examples/codesandbox/basic/components/tearsheet) + +Tearsheets keep users in-context of a page while performing tasks like navigating, editing, viewing details, or configuring something new. + +## Getting started + +Here's a quick example to get you started. + +### JS (via import) + +```javascript +import '@carbon/web-components/es/components/tearsheet/index.js'; +// The following are used for slotted fields +import '@carbon/web-components/es/components/text-input/index.js'; +import '@carbon/web-components/es/components/textarea/index.js'; +import '@carbon/web-components/es/components/button/index.js'; +``` + + + + +### HTML + +```html + + +
Tearsheet content
+
+ + +
+
+ + +
+
+ + + +
+ + +
Subtitle text which can provide more detail on the content being displayed.
+ + + Copy + + ${Settings({ slot: 'icon' })} + + + ${Trashcan({ slot: 'icon' })} + + + + Ghost + +
+``` + +## `` attributes, properties and events + +Note: For `boolean` attributes, `true` means simply setting the attribute (e.g. +``) and `false` means not setting the attribute (e.g. +`` without `open` attribute). + + diff --git a/packages/carbon-web-components/src/components/tearsheet/tearsheet-story.ts b/packages/carbon-web-components/src/components/tearsheet/tearsheet-story.ts new file mode 100644 index 00000000000..0e3f1ce4142 --- /dev/null +++ b/packages/carbon-web-components/src/components/tearsheet/tearsheet-story.ts @@ -0,0 +1,505 @@ +/** + * @license + * + * Copyright IBM Corp. 2023, 2024 + * + * This source code is licensed under the Apache-2.0 license found in the + * LICENSE file in the root directory of this source tree. + */ + +import { TemplateResult, html } from 'lit'; +import { boolean, select, text } from '@storybook/addon-knobs'; +import '../button/button'; +import { + TEARSHEET_INFLUENCER_PLACEMENT, + TEARSHEET_INFLUENCER_WIDTH, + TEARSHEET_WIDTH, +} from './tearsheet'; +import './index'; +import '../text-input/index'; +import '../textarea/index'; +import storyDocs from './tearsheet-story.mdx'; +import { prefix } from '../../globals/settings'; + +import styles from './story-styles.scss'; +import { BUTTON_KIND } from '../button/button'; +const toggleButton = () => { + document.querySelector(`${prefix}-tearsheet`)?.toggleAttribute('open'); +}; + +const widths = { + // 'default (narrow)': null, + [`Narrow (${TEARSHEET_WIDTH.NARROW})`]: TEARSHEET_WIDTH.NARROW, + [`Wide (${TEARSHEET_WIDTH.WIDE})`]: TEARSHEET_WIDTH.WIDE, +}; + +const influencerWidths = { + // 'default (narrow)': null, + [`Narrow (${TEARSHEET_INFLUENCER_WIDTH.NARROW})`]: + TEARSHEET_INFLUENCER_WIDTH.NARROW, + [`Wide (${TEARSHEET_INFLUENCER_WIDTH.WIDE})`]: + TEARSHEET_INFLUENCER_WIDTH.WIDE, +}; + +const influencerPlacements = { + // 'default (right)': null, + [`Left (${TEARSHEET_INFLUENCER_PLACEMENT.LEFT})`]: + TEARSHEET_INFLUENCER_PLACEMENT.LEFT, + [`right (${TEARSHEET_INFLUENCER_PLACEMENT.RIGHT})`]: + TEARSHEET_INFLUENCER_PLACEMENT.RIGHT, +}; + +const influencers = { + 'No influencer': 0, + 'Simple influencer': 1, + 'Progress influencer': 2, +}; + +const getInfluencer = (index) => { + switch (index) { + case 1: + return html`
+ Influencer +
`; + case 2: + return html` + + + + + + `; + default: + return null; + } +}; + +const contents = { + Empty: 0, + 'Brief content': 1, + 'Longer content': 2, +}; + +const storyPrefix = 'tearsheet-stories'; + +const getContent = (index) => { + switch (index) { + case 1: + return html` + +
+
Section
+ + +
+ `; + case 2: + return html` +
+
Section
+
+ + +
+
+ + +
+
+ + + +
+
`; + default: + return null; + } +}; + +const labels = { + 'No label': 0, + 'Shorter label': 1, + 'Longer label': 2, +}; + +const getLabel = (index) => { + switch (index) { + case 1: + return html`Optional label for context`; + case 2: + return html`A longer label giving a bit more context + `; + default: + return null; + } +}; + +const headerActions = { + 'No header actions': 0, + 'Drop down': 1, + Buttons: 2, +}; + +const getActionToolbarItems = (index) => { + switch (index) { + case 1: + return html` + ${['option 1', 'option 2', 'option 3', 'option 4'].map( + (option) => html` ${option}` + )} + `; + case 2: + return html` + + Secondary + + + Primary + + `; + default: + return null; + } +}; + +const actionItems = { + 'No actions': 0, + 'One button': 1, + 'Two buttons with ghost': 2, + 'Two buttons with danger': 3, + 'Three buttons with ghost': 4, + 'Three buttons with danger': 5, + 'Four buttons with ghost': 6, + 'Four buttons with danger': 7, + 'Too many buttons': 8, +}; + +const toActions = (kinds: BUTTON_KIND[]) => { + return kinds?.map((kind) => { + return html` + ${kind.charAt(0).toUpperCase() + kind.slice(1)} + `; + }); +}; + +// TODO: There are problems switching this +const getActionItems = (index) => { + switch (index) { + case 1: + return toActions([BUTTON_KIND.PRIMARY]); + case 2: + return toActions([BUTTON_KIND.GHOST, BUTTON_KIND.PRIMARY]); + case 3: + return toActions([BUTTON_KIND.DANGER, BUTTON_KIND.PRIMARY]); + case 4: + return toActions([ + BUTTON_KIND.GHOST, + BUTTON_KIND.SECONDARY, + BUTTON_KIND.PRIMARY, + ]); + case 5: + return toActions([ + BUTTON_KIND.DANGER, + BUTTON_KIND.SECONDARY, + BUTTON_KIND.PRIMARY, + ]); + case 6: + return toActions([ + BUTTON_KIND.GHOST, + BUTTON_KIND.TERTIARY, + BUTTON_KIND.SECONDARY, + BUTTON_KIND.PRIMARY, + ]); + case 7: + return toActions([ + BUTTON_KIND.DANGER, + BUTTON_KIND.TERTIARY, + BUTTON_KIND.SECONDARY, + BUTTON_KIND.PRIMARY, + ]); + case 8: + return toActions([ + BUTTON_KIND.GHOST, + BUTTON_KIND.DANGER, + BUTTON_KIND.TERTIARY, + BUTTON_KIND.SECONDARY, + BUTTON_KIND.PRIMARY, + ]); + default: + return null; + } +}; + +const navigation = { + 'No navigation': 0, + 'With navigation': 1, +}; + +const getNavigation = (index) => { + switch (index) { + case 1: + return html`
+ + Tab 1 + Tab 2 + Tab 3 + Tab 4 + +
`; + default: + return null; + } +}; + +const slugs = { + 'No Slug': 0, + 'With Slug': 1, +}; + +const getSlug = (index) => { + switch (index) { + case 1: + return html` +
+

AI Explained

+

84%

+

Confidence score

+

+ Lorem ipsum dolor sit amet, di os consectetur adipiscing elit, sed + do eiusmod tempor incididunt ut fsil labore et dolore magna aliqua. +

+
+

Model type

+

Foundation model

+
+
`; + default: + return null; + } +}; + +export default { + title: 'Experimental/Tearsheet', + decorators: [(story) => html` ${story()} `], + parameters: { + ...storyDocs.parameters, + }, +}; + +const DefaultTemplate = (argsIn) => { + const args = { + actionItems: getActionItems(select('Slot (actions)', actionItems, 4)), + headerActions: getActionToolbarItems( + select('Slot (header-toolbar)', headerActions, 0) + ), + content: getContent(select('Slot (default), panel contents', contents, 2)), + label: getLabel(select('label', labels, 1)), + open: boolean('open', false), + influencerWidth: select( + 'influencer-width', + influencerWidths, + TEARSHEET_INFLUENCER_WIDTH.NARROW + ), + influencerPlacement: select( + 'influencer-placement', + influencerPlacements, + TEARSHEET_INFLUENCER_PLACEMENT.LEFT + ), + + influencer: getInfluencer(select('influencer (slot)', influencers, 0)), + + preventCloseOnClickOutside: boolean( + 'prevent-close-on-click-outside', + false + ), + selectorInitialFocus: text('selector-initial-focus', ''), + width: select('width', widths, TEARSHEET_WIDTH.WIDE), + slug: getSlug(select('slug (AI slug)', slugs, 0)), + description: text( + 'description', + 'Description used to describe the flow if need be.' + ), + title: text( + 'title', + 'Title used to designate the overarching flow of the tearsheet.' + ), + headerNavigation: getNavigation(select('header-navigation', navigation, 0)), + + ...(argsIn?.['cds-tearsheet'] ?? {}), + }; + + return html` +
+
+
+ Toggle tearsheet +
+
+ + + ${args.content} + + + ${args.label} + + + ${args.title ? html`${args.title}` : ''} + + + ${args.description + ? html`${args.description}` + : ''} + + + ${args.headerActions} + + + ${args.actionItems} + + + ${args.slug} + + + ${args.headerNavigation} + + + ${args.influencer} + + `; +}; + +type TemplateType = { + (args: any): TemplateResult<1>; + parameters: { knobs: { [key: string]: any } }; +}; + +export const Default = DefaultTemplate.bind({}) as TemplateType; +Default.parameters = { + ...storyDocs.parameters, + knobs: { + 'cds-tearsheet': () => ({}), + }, +}; + +export const WithNavigation = DefaultTemplate.bind({}) as TemplateType; +WithNavigation.parameters = { + ...storyDocs.parameters, + knobs: { + 'cds-tearsheet': () => ({ + headerNavigation: getNavigation( + select('header-navigation', navigation, 1) + ), + }), + }, +}; + +export const WithInfluencer = DefaultTemplate.bind({}) as TemplateType; +WithInfluencer.parameters = { + ...storyDocs.parameters, + knobs: { + 'cds-tearsheet': () => ({ + influencer: getInfluencer(select('influencer (slot)', influencers, 2)), + }), + }, +}; + +export const WithAllHeaderItemsAndInfluencer = DefaultTemplate.bind( + {} +) as TemplateType; +WithAllHeaderItemsAndInfluencer.parameters = { + ...storyDocs.parameters, + knobs: { + 'cds-tearsheet': () => ({ + headerActions: getActionToolbarItems( + select('Slot (header-toolbar)', headerActions, 2) + ), + influencer: getInfluencer(select('influencer (slot)', influencers, 2)), + }), + }, +}; + +export const Narrow = DefaultTemplate.bind({}) as TemplateType; +Narrow.parameters = { + ...storyDocs.parameters, + knobs: { + 'cds-tearsheet': () => ({ + label: getLabel(select('label', labels, 0)), + width: select('width', widths, TEARSHEET_WIDTH.NARROW), + }), + }, +}; + +export const NarrowWithAllHeaderItems = DefaultTemplate.bind( + {} +) as TemplateType; +NarrowWithAllHeaderItems.parameters = { + ...storyDocs.parameters, + knobs: { + 'cds-tearsheet': () => ({ + width: select('width', widths, TEARSHEET_WIDTH.NARROW), + }), + }, +}; diff --git a/packages/carbon-web-components/src/components/tearsheet/tearsheet.scss b/packages/carbon-web-components/src/components/tearsheet/tearsheet.scss new file mode 100644 index 00000000000..2678430d85a --- /dev/null +++ b/packages/carbon-web-components/src/components/tearsheet/tearsheet.scss @@ -0,0 +1,238 @@ +/* +* Copyright IBM Corp. 2023, 2024 +* +* This source code is licensed under the Apache-2.0 license found in the +* LICENSE file in the root directory of this source tree. +*/ + +$css--plex: true !default; + +/* Other Carbon settings. */ +@use '@carbon/styles/scss/reset'; +@use '@carbon/styles/scss/breakpoint' as *; +@use '@carbon/styles/scss/config' as *; +@use '@carbon/styles/scss/motion' as *; +@use '@carbon/styles/scss/spacing' as *; +@use '@carbon/styles/scss/theme' as *; +@use '@carbon/styles/scss/type'; +@use '@carbon/styles/scss/utilities'; +@use '@carbon/styles/scss/utilities/ai-gradient' as *; +@use '@carbon/styles/scss/components/modal' as *; +@use '@carbon/styles/scss/utilities/convert' as *; +@use 'sass:map'; + +$pkg-prefix: 'cds'; + +@use '@carbon/ibm-products-styles/scss/config' with ( + $pkg-prefix: #{$pkg-prefix} +); +@use '@carbon/ibm-products-styles/scss/components/ActionSet/index' as *; +@use '@carbon/ibm-products-styles/scss/components/Tearsheet/index' as *; + +$block-class: #{$pkg-prefix}--tearsheet; +$block-class-action-set: #{$pkg-prefix}--action-set; +$motion-duration: $duration-moderate-02; + +:host(#{$prefix}-tearsheet) { + --content-padding: #{$spacing-05}; + + @extend .#{$prefix}--modal; + @extend .#{$prefix}--tearsheet; + + &[open] { + z-index: utilities.z('modal'); + align-items: flex-end; + opacity: 1; + // stylelint-disable-next-line carbon/motion-duration-use, carbon/motion-easing-use + transition: visibility 0s linear, + background-color $motion-duration motion(entrance, expressive), + opacity $motion-duration motion(entrance, expressive); + visibility: inherit; + + .#{$prefix}--tearsheet__container { + transform: translate3d(0, 0, 0); + transition: transform $duration-moderate-02 motion(entrance, expressive); + } + + @media (prefers-reduced-motion: reduce) { + transition: none; + } + } + + [hidden] { + @extend .#{$prefix}--visually-hidden; + } + + .#{$block-class}__header, + .#{$block-class}__content, + .#{$block-class}__influencer { + padding: var(--content-padding); + } + + &[slug] { + background-color: $ai-overlay; + + .#{$block-class}__content { + @include utilities.callout-gradient('default', 0); + + box-shadow: inset 0 -80px 70px -65px $ai-inner-shadow; + } + + /* stylelint-disable-next-line selector-type-no-unknown */ + [has-actions] ::slotted(#{$prefix}-slug) { + inset-inline-end: 0; + } + } + + &[width='narrow'] { + .#{$block-class}__header { + margin: 0; + background-color: $layer; + border-block-end: 1px solid $border-subtle-01; + } + + .#{$block-class}__header-description { + margin-block-start: $spacing-03; + max-inline-size: 80%; + } + + .#{$block-class}__main { + background-color: $layer; + } + } + + &[width='wide'] { + --content-padding: #{$spacing-06 $spacing-07}; + + .#{$block-class}__header { + margin: 0; + background-color: $layer; + border-block-end: 1px solid $border-subtle-01; + } + + .#{$block-class}__header[has-navigation] { + padding-block-end: 0; + } + + .#{$block-class}__container { + inline-size: 100%; + + @include breakpoint(md) { + inline-size: calc(100% - (2 * #{$spacing-10})); + } + } + + .#{$prefix}--modal-header__heading.#{$block-class}__heading { + @include type.type-style('heading-04'); + } + + .#{$block-class}__header[has-close-icon], + .#{$block-class}__header[has-slug] { + padding-inline-end: $spacing-11; + } + + .#{$block-class}__header[has-close-icon][has-slug] { + padding-inline-end: calc(#{$spacing-11 + $spacing-09}); + } + + .#{$block-class}__header-navigation { + margin-inline-start: calc(-1 * #{$spacing-05}); + max-block-size: $spacing-08; /* #{$prefix}-tabs too tall */ + } + + .#{$block-class}__content { + // Revert background color overridden by Carbon's modal - https://github.com/carbon-design-system/carbon/blob/main/packages/styles/scss/components/modal/_modal.scss#L54 + .#{$prefix}--pagination, + .#{$prefix}--pagination__control-buttons, + .#{$prefix}--text-input, + .#{$prefix}--text-area, + .#{$prefix}--search-input, + .#{$prefix}--select-input, + .#{$prefix}--dropdown, + .#{$prefix}--dropdown-list, + .#{$prefix}--number input[type='number'], + .#{$prefix}--date-picker__input { + background-color: $field; + } + + .#{$prefix}--select--inline .#{$prefix}--select-input { + background-color: transparent; + } + + // and restore the 'light' prop in case light fields are wanted + .#{$prefix}--text-input--light, + .#{$prefix}--text-area--light, + .#{$prefix}--search--light .#{$prefix}--search-input, + .#{$prefix}--select--light .#{$prefix}--select-input, + .#{$prefix}--dropdown--light, + .#{$prefix}--dropdown--light .#{$prefix}--dropdown-list, + /* stylelint-disable-next-line prettier/prettier */ + .#{$prefix}--number--light input[type='number'], + .#{$prefix}--date-picker--light + .#{$prefix}--date-picker__input { + background-color: $field-02; + } + } + + .#{$pkg-prefix}--action-set + .#{$pkg-prefix}--action-set__action-button.#{$pkg-prefix}--action-set__action-button--expressive { + block-size: $spacing-11; + } + } + + .#{$block-class}__buttons { + @extend .#{$block-class}__button-container; + @extend .#{$block-class-action-set}; + + display: flex; + background: $background; + inline-size: 100%; + + &[hidden] { + @extend .#{$prefix}--visually-hidden; + + display: none; + } + + /* stylelint-disable-next-line selector-type-no-unknown */ + ::slotted(#{$prefix}-button) { + @extend .#{$block-class-action-set}__action-button; + + flex: 0 1 25%; + block-size: $spacing-11; + max-inline-size: to-rem(232px); + } + + /* stylelint-disable-next-line selector-type-no-unknown */ + ::slotted(#{$prefix}-button[kind='ghost']) { + flex: 1 1 25%; + max-inline-size: none; + } + + ::slotted(#{$prefix}-button[hidden]) { + @extend .#{$prefix}--visually-hidden; + + display: none; + } + } + + [width='narrow'] .#{$block-class}__buttons { + /* stylelint-disable selector-type-no-unknown */ + &[actions-multiple='single'] ::slotted(#{$prefix}-button), + &[actions-multiple='double'] ::slotted(#{$prefix}-button) { + /* stylelint-enable selector-type-no-unknown */ + // double and single on lg use 50% + flex: 0 1 50%; + max-inline-size: none; + } + + /* stylelint-disable-next-line selector-type-no-unknown */ + ::slotted(#{$prefix}-button) { + block-size: $spacing-10; + } + } + + .#{$block-class}__influencer[wide] { + @extend .#{$block-class}__influencer--wide; + } +} diff --git a/packages/carbon-web-components/src/components/tearsheet/tearsheet.ts b/packages/carbon-web-components/src/components/tearsheet/tearsheet.ts new file mode 100644 index 00000000000..0f68c80c98a --- /dev/null +++ b/packages/carbon-web-components/src/components/tearsheet/tearsheet.ts @@ -0,0 +1,684 @@ +/** + * @license + * + * Copyright IBM Corp. 2023, 2024 + * + * This source code is licensed under the Apache-2.0 license found in the + * LICENSE file in the root directory of this source tree. + */ + +import { LitElement, html } from 'lit'; +import { + property, + query, + queryAssignedElements, + state, +} from 'lit/decorators.js'; +import { prefix } from '../../globals/settings'; +import HostListener from '../../globals/decorators/host-listener'; +import HostListenerMixin from '../../globals/mixins/host-listener'; +import styles from './tearsheet.scss'; +import { selectorTabbable } from '../../globals/settings'; +import { carbonElement as customElement } from '../../globals/decorators/carbon-element'; +import '../button/index'; +import '../layer/index'; +import '../button/button-set-base'; +import { + TEARSHEET_INFLUENCER_PLACEMENT, + TEARSHEET_INFLUENCER_WIDTH, + TEARSHEET_WIDTH, +} from './defs'; + +export { + TEARSHEET_INFLUENCER_PLACEMENT, + TEARSHEET_INFLUENCER_WIDTH, + TEARSHEET_WIDTH, +}; + +// eslint-disable-next-line no-bitwise +const PRECEDING = + Node.DOCUMENT_POSITION_PRECEDING | Node.DOCUMENT_POSITION_CONTAINS; +// eslint-disable-next-line no-bitwise +const FOLLOWING = + Node.DOCUMENT_POSITION_FOLLOWING | Node.DOCUMENT_POSITION_CONTAINED_BY; + +const blockClass = `${prefix}--tearsheet`; +const blockClassModalHeader = `${prefix}--modal-header`; +const blockClassActionSet = `${prefix}--action-set`; + +/** + * Tries to focus on the given elements and bails out if one of them is successful. + * + * @param elems The elements. + * @param reverse `true` to go through the list in reverse order. + * @returns `true` if one of the attempts is successful, `false` otherwise. + */ +function tryFocusElems(elems: NodeListOf, reverse: boolean) { + if (!reverse) { + for (let i = 0; i < elems.length; ++i) { + const elem = elems[i]; + elem.focus(); + if (elem.ownerDocument!.activeElement === elem) { + return true; + } + } + } else { + for (let i = elems.length - 1; i >= 0; --i) { + const elem = elems[i]; + elem.focus(); + if (elem.ownerDocument!.activeElement === elem) { + return true; + } + } + } + return false; +} + +/** + * Tearsheet. + * + * @element cds-tearsheet + * @csspart dialog The dialog. + * @fires cds-tearsheet-beingclosed + * The custom event fired before this tearsheet is being closed upon a user gesture. + * Cancellation of this event stops the user-initiated action of closing this tearsheet. + * @fires cds-tearsheet-closed - The custom event fired after this tearsheet is closed upon a user gesture. + */ +@customElement(`${prefix}-tearsheet`) +class CDSTearsheet extends HostListenerMixin(LitElement) { + /** + * The element that had focus before this tearsheet gets open. + */ + private _launcher: Element | null = null; + + /** + * Node to track focus going outside of tearsheet content. + */ + @query('#start-sentinel') + private _startSentinelNode!: HTMLAnchorElement; + + /** + * Node to track focus going outside of tearsheet content. + */ + @query('#end-sentinel') + private _endSentinelNode!: HTMLAnchorElement; + + /** + * Node to track tearsheet. + */ + @query(`.${blockClass}__container`) + private _tearsheet!: HTMLDivElement; + + @queryAssignedElements({ slot: 'actions', selector: `${prefix}-button` }) + private _actions!: Array; + + @state() + _actionsCount = 0; + + @state() + _hasHeaderActions = false; + + @state() + _hasLabel = false; + + @state() + _hasSlug = false; + + @state() + _hasTitle = false; + + @state() + _hasDescription = false; + + @state() + _hasInfluencerLeft = false; + + @state() + _hasInfluencerRight = false; + + @state() + _isOpen = false; + + @state() + _hasHeaderNavigation = false; + + /** + * Handles `click` event on this element. + * + * @param event The event. + */ + @HostListener('click') + // @ts-ignore: The decorator refers to this method but TS thinks this method is not referred to + private _handleClick = (event: MouseEvent) => { + if ( + event.composedPath().indexOf(this.shadowRoot!) < 0 && + !this.preventCloseOnClickOutside + ) { + this._handleUserInitiatedClose(event.target); + } + }; + + /** + * Handles `blur` event on this element. + * + * @param event The event. + * @param event.target The event target. + * @param event.relatedTarget The event relatedTarget. + */ + @HostListener('shadowRoot:focusout') + // @ts-ignore: The decorator refers to this method but TS thinks this method is not referred to + private _handleBlur = async ({ target, relatedTarget }: FocusEvent) => { + const { + // condensedActions, + open, + _startSentinelNode: startSentinelNode, + _endSentinelNode: endSentinelNode, + } = this; + + const oldContains = target !== this && this.contains(target as Node); + const currentContains = + relatedTarget !== this && + (this.contains(relatedTarget as Node) || + (this.shadowRoot?.contains(relatedTarget as Node) && + relatedTarget !== (startSentinelNode as Node) && + relatedTarget !== (endSentinelNode as Node))); + + // Performs focus wrapping if _all_ of the following is met: + // * This tearsheet is open + // * The viewport still has focus + // * Tearsheet body used to have focus but no longer has focus + const { selectorTabbable: selectorTabbableForTearsheet } = this + .constructor as typeof CDSTearsheet; + + if (open && relatedTarget && oldContains && !currentContains) { + const comparisonResult = (target as Node).compareDocumentPosition( + relatedTarget as Node + ); + // eslint-disable-next-line no-bitwise + if (relatedTarget === startSentinelNode || comparisonResult & PRECEDING) { + await (this.constructor as typeof CDSTearsheet)._delay(); + if ( + !tryFocusElems( + this.querySelectorAll(selectorTabbableForTearsheet), + true + ) && + relatedTarget !== this + ) { + this.focus(); + } + } + // eslint-disable-next-line no-bitwise + else if ( + relatedTarget === endSentinelNode || + comparisonResult & FOLLOWING + ) { + await (this.constructor as typeof CDSTearsheet)._delay(); + if ( + !tryFocusElems( + this.querySelectorAll(selectorTabbableForTearsheet), + true + ) + ) { + this.focus(); + } + } + } + }; + + @HostListener('document:keydown') + // @ts-ignore: The decorator refers to this method but TS thinks this method is not referred to + private _handleKeydown = ({ key, target }: KeyboardEvent) => { + if (key === 'Esc' || key === 'Escape') { + this._handleUserInitiatedClose(target); + } + }; + + private _checkSetHasSlot(e: Event) { + const t = e.target as HTMLSlotElement; + const dataPostfix = t.getAttribute('data-postfix'); + const postfix = dataPostfix ? `-${dataPostfix}` : ''; + + // snake `ab-cd-ef` to _has camel case _hasAbCdEf + const hasName = `_has-${t.name}${postfix}`.replace(/-./g, (c) => + c[1].toUpperCase() + ); + this[hasName] = (t?.assignedElements()?.length ?? 0) > 0; + } + + /** + * Handles `click` event on the modal container. + * + * @param event The event. + */ + private _handleClickContainer(event: MouseEvent) { + if ( + (event.target as Element).matches( + (this.constructor as typeof CDSTearsheet).selectorCloseButton + ) + ) { + this._handleUserInitiatedClose(event.target); + } + } + + /** + * Handles user-initiated close request of this tearsheet. + * + * @param triggeredBy The element that triggered this close request. + */ + private _handleUserInitiatedClose(triggeredBy: EventTarget | null) { + if (this.open) { + const init = { + bubbles: true, + cancelable: true, + composed: true, + detail: { + triggeredBy, + }, + }; + if ( + this.dispatchEvent( + new CustomEvent( + (this.constructor as typeof CDSTearsheet).eventBeforeClose, + init + ) + ) + ) { + this.open = false; + this.dispatchEvent( + new CustomEvent( + (this.constructor as typeof CDSTearsheet).eventClose, + init + ) + ); + } + } + } + + private _handleSlugChange(e: Event) { + const childItems = (e.target as HTMLSlotElement).assignedElements(); + + this._hasSlug = childItems.length > 0; + if (this._hasSlug) { + childItems[0].setAttribute('size', 'lg'); + this.setAttribute('slug', ''); + } else { + this.removeAttribute('slug'); + } + } + + /** + * Optional aria label for the tearsheet + */ + @property({ reflect: true, attribute: 'aria-label' }) + ariaLabel = ''; + + /** + * Sets the close button icon description + */ + @property({ reflect: true, attribute: 'close-icon-description' }) + closeIconDescription = 'Close'; + + /** + * Enable a close icon ('x') in the header area of the tearsheet. By default, + * (when this prop is omitted, or undefined or null) a tearsheet does not + * display a close icon if there are navigation actions ("transactional + * tearsheet") and displays one if there are no navigation actions ("passive + * tearsheet"), and that behavior can be overridden if required by setting + * this prop to either true or false. + */ + + @property({ reflect: true, type: Boolean, attribute: 'has-close-icon' }) + hasCloseIcon = false; + + /** + * The placement of the influencer section, 'left' or 'right'. + */ + @property({ reflect: true, attribute: 'influencer-placement' }) + influencerPlacement = TEARSHEET_INFLUENCER_PLACEMENT.RIGHT; + + /** + * The width of the influencer section, 'narrow' or 'wide'. + */ + @property({ reflect: true, attribute: 'influencer-width' }) + influencerWidth = TEARSHEET_INFLUENCER_WIDTH.NARROW; + + /** + * `true` if the tearsheet should be open. + */ + @property({ type: Boolean, reflect: true }) + open = false; + + /** + * Prevent closing on click outside of tearsheet + */ + @property({ type: Boolean, attribute: 'prevent-close-on-click-outside' }) + preventCloseOnClickOutside = false; + + /** + * The initial location of focus in the side panel + */ + @property({ + reflect: true, + attribute: 'selector-initial-focus', + type: String, + }) + selectorInitialFocus; + + /** + * The width of the influencer section, 'narrow' or 'wide'. + */ + @property({ reflect: true, attribute: 'width' }) + width = TEARSHEET_WIDTH.NARROW; + + private _checkUpdateActionSizes = () => { + if (this._actions) { + for (let i = 0; i < this._actions.length; i++) { + this._actions[i].setAttribute( + 'size', + this.width === 'wide' ? '2xl' : 'xl' + ); + } + } + }; + + private _maxActions = 4; + private _handleActionsChange(e: Event) { + const target = e.target as HTMLSlotElement; + const actions = target?.assignedElements(); + const actionsCount = actions?.length ?? 0; + + if (actionsCount > this._maxActions) { + this._actionsCount = this._maxActions; + console.error(`Too many tearsheet actions, max ${this._maxActions}.`); + } else { + this._actionsCount = actionsCount; + } + + for (let i = 0; i < actions?.length; i++) { + if (i + 1 > this._maxActions) { + // hide excessive tearsheet actions + actions[i].setAttribute('hidden', 'true'); + actions[i].setAttribute( + `data-actions-limit-${this._maxActions}-exceeded`, + `${actions.length}` + ); + } else { + actions[i].classList.add(`${blockClassActionSet}__action-button`); + } + } + this._checkUpdateActionSizes(); + } + + actionsMultiple = ['', 'single', 'double', 'triple'][this._actionsCount]; + + render() { + const { + closeIconDescription, + influencerPlacement, + influencerWidth, + open, + width, + } = this; + + const actionsMultiple = ['', 'single', 'double', 'triple'][ + this._actionsCount + ]; + + const headerFieldsTemplate = html`
+

+ +

+

+ +

+
+ +
+
`; + + const headerActionsTemplate = html`
+ +
`; + + const headerTemplate = html` 0} + ?has-slug=${this?._hasSlug} + width=${width}> + ${this.width === TEARSHEET_WIDTH.WIDE + ? html`${headerFieldsTemplate}${headerActionsTemplate}` + : html`
${headerFieldsTemplate}${headerActionsTemplate}
`} + +
+ +
+ + ${this.hasCloseIcon || this?._actionsCount === 0 + ? html`` + : ''} +
`; + + return html` +
+ + + `; + } + + _checkSetOpen = () => { + const { _tearsheet: tearsheet } = this; + if (tearsheet && this._isOpen) { + // wait until the tearsheet has transitioned off the screen to remove + tearsheet.addEventListener('transitionend', () => { + this._isOpen = false; + }); + } else { + // allow the html to render before animating in the tearsheet + window.requestAnimationFrame(() => { + this._isOpen = this.open; + }); + } + }; + + async updated(changedProperties) { + if (changedProperties.has('width')) { + this._checkUpdateActionSizes(); + } + + if ( + process.env.NODE_ENV === 'development' && + (changedProperties.has('width') || + changedProperties.has('_hasHeaderNavigation') || + changedProperties.has('_hasInfluencerLeft') || + changedProperties.has('_hasInfluencerRight') || + changedProperties.has('_hasHeaderActions')) + ) { + if (this.width === 'narrow') { + if (this._hasHeaderNavigation) { + console.error( + `Header navigation is not permitted in narrow Tearsheet.` + ); + } + if (this._hasInfluencerLeft || this._hasInfluencerRight) { + console.error(`Influencer is not permitted in narrow Tearsheet.`); + } + if (this._hasHeaderActions) { + console.error( + `Header actions are not permitted in narrow Tearsheet.` + ); + } + } + } + + if (changedProperties.has('open')) { + this._checkSetOpen(); + if (this.open) { + this._launcher = this.ownerDocument!.activeElement; + const focusNode = + this.selectorInitialFocus && + this.querySelector(this.selectorInitialFocus); + + await (this.constructor as typeof CDSTearsheet)._delay(); + if (focusNode) { + // For cases where a `carbon-web-components` component (e.g. ``) being `primaryFocusNode`, + // where its first update/render cycle that makes it focusable happens after ``'s first update/render cycle + (focusNode as HTMLElement).focus(); + } else if ( + !tryFocusElems( + this.querySelectorAll( + (this.constructor as typeof CDSTearsheet).selectorTabbable + ), + true + ) + ) { + this.focus(); + } + } else if ( + this._launcher && + typeof (this._launcher as HTMLElement).focus === 'function' + ) { + (this._launcher as HTMLElement).focus(); + this._launcher = null; + } + } + } + + /** + * @param ms The number of milliseconds. + * @returns A promise that is resolves after the given milliseconds. + */ + private static _delay(ms = 0) { + return new Promise((resolve) => { + setTimeout(resolve, ms); + }); + } + + /** + * A selector selecting buttons that should close this modal. + */ + static get selectorCloseButton() { + return `[data-modal-close],${prefix}-modal-close-button`; + } + + /** + * A selector selecting tabbable nodes. + */ + static get selectorTabbable() { + return selectorTabbable; + } + + /** + * The name of the custom event fired before this tearsheet is being closed upon a user gesture. + * Cancellation of this event stops the user-initiated action of closing this tearsheet. + */ + static get eventBeforeClose() { + return `${prefix}-tearsheet-beingclosed`; + } + + /** + * The name of the custom event fired after this tearsheet is closed upon a user gesture. + */ + static get eventClose() { + return `${prefix}-tearsheet-closed`; + } + + /** + * The name of the custom event fired on clicking the navigate back button + */ + static get eventNavigateBack() { + return `${prefix}-tearsheet-header-navigate-back`; + } + + static styles = styles; // `styles` here is a `CSSResult` generated by custom WebPack loader +} + +export default CDSTearsheet; diff --git a/yarn.lock b/yarn.lock index 33e0dd955ca..ba9ef4b31d2 100644 --- a/yarn.lock +++ b/yarn.lock @@ -3112,7 +3112,7 @@ __metadata: languageName: node linkType: hard -"@carbon/ibm-products-styles@npm:^2.24.0": +"@carbon/ibm-products-styles@npm:^2.27.1": version: 2.27.1 resolution: "@carbon/ibm-products-styles@npm:2.27.1" peerDependencies: @@ -3477,7 +3477,14 @@ __metadata: languageName: node linkType: hard -"@carbon/icons-react@npm:11.36.0, @carbon/icons-react@npm:^11.33.0, @carbon/icons-react@npm:^11.36.0": +"@carbon/icon-helpers@npm:^10.45.0": + version: 10.45.1 + resolution: "@carbon/icon-helpers@npm:10.45.1" + checksum: 10/69da5ae85b586c5bb754f1db90069fb48f556c9f5023318a25572faa07e6dca0f07aaec237eaec883029bb75819b64c30bf4716339cdbab590ca0ee648ef67bc + languageName: node + linkType: hard + +"@carbon/icons-react@npm:11.36.0, @carbon/icons-react@npm:^11.36.0": version: 11.36.0 resolution: "@carbon/icons-react@npm:11.36.0" dependencies: @@ -3490,6 +3497,19 @@ __metadata: languageName: node linkType: hard +"@carbon/icons-react@npm:^11.33.0": + version: 11.34.1 + resolution: "@carbon/icons-react@npm:11.34.1" + dependencies: + "@carbon/icon-helpers": "npm:^10.45.0" + "@carbon/telemetry": "npm:0.1.0" + prop-types: "npm:^15.7.2" + peerDependencies: + react: ">=16" + checksum: 10/970581fdaee75b626416a18728c0362cb29a8719288cd2e01203672fa17c64265a67257f3e8b7d7e941c633c1b690db616d31930fbdaff83f00b3284aaa6b93e + languageName: node + linkType: hard + "@carbon/icons@npm:11.36.0": version: 11.36.0 resolution: "@carbon/icons@npm:11.36.0" @@ -3663,7 +3683,7 @@ __metadata: "@babel/runtime": "npm:^7.16.3" "@babel/template": "npm:~7.12.0" "@babel/traverse": "npm:~7.23.7" - "@carbon/ibm-products-styles": "npm:^2.24.0" + "@carbon/ibm-products-styles": "npm:^2.27.1" "@carbon/icon-helpers": "npm:10.46.0" "@carbon/icons": "npm:11.36.0" "@carbon/styles": "npm:1.51.0" @@ -4017,11 +4037,11 @@ __metadata: linkType: hard "@csstools/css-parser-algorithms@npm:^2.3.1": - version: 2.6.0 - resolution: "@csstools/css-parser-algorithms@npm:2.6.0" + version: 2.5.0 + resolution: "@csstools/css-parser-algorithms@npm:2.5.0" peerDependencies: "@csstools/css-tokenizer": ^2.2.3 - checksum: 10/f8131e6c0e87879c9c6c608e809fba2e2a2e4e7f958c362f3b3e59f0856bbc1d95ba766782e708009af69ddc1470773ae59f0e1246ba8baa7a0c209a75b0e8b5 + checksum: 10/f03938d623adcd75a365decd4aaa419b2cbc01d71be67093de3fe7f5c89a6811228f9e1327b8b605f814f278c6c2d1ac45b99b102b947106a56d862b463618e3 languageName: node linkType: hard @@ -4033,21 +4053,21 @@ __metadata: linkType: hard "@csstools/media-query-list-parser@npm:^2.1.4": - version: 2.1.8 - resolution: "@csstools/media-query-list-parser@npm:2.1.8" + version: 2.1.7 + resolution: "@csstools/media-query-list-parser@npm:2.1.7" peerDependencies: - "@csstools/css-parser-algorithms": ^2.6.0 + "@csstools/css-parser-algorithms": ^2.5.0 "@csstools/css-tokenizer": ^2.2.3 - checksum: 10/256e85390fa39b40103c68a7d731b2b1631020ed8b513bf19d8bc17a998d7a16fc165dcb11e34ce197f16ed78f0cfad3ed7c454b3deedd9850f0e304d7387f37 + checksum: 10/f16b1ee45c8d11fb93da2fabd15e73ccdb96f4fed0d2e7f3460a17c9837e7daa8303ea9fc39eb332cbaf4dece0c8c432277f736c901e51375f53423e995aa25c languageName: node linkType: hard "@csstools/selector-specificity@npm:^3.0.0": - version: 3.0.2 - resolution: "@csstools/selector-specificity@npm:3.0.2" + version: 3.0.1 + resolution: "@csstools/selector-specificity@npm:3.0.1" peerDependencies: postcss-selector-parser: ^6.0.13 - checksum: 10/af3cc9282b600170b7de0fed2106830ab353359bd11f66cf71259419c9bddf8f0773c3a6e513cd9f66fd7e4920a1786a7c288723cbb3ae207974c1e7de26293e + checksum: 10/e4b5aac3bd3ca1f824cb9578f52b16046a519aa8050ce291da37e611976a83cd3b2b2f908d2678dd4cbbe00bbde8ec28c34fffc40dbbf9a13608dfcaf382ee80 languageName: node linkType: hard @@ -4278,10 +4298,10 @@ __metadata: languageName: node linkType: hard -"@eslint/js@npm:8.57.0": - version: 8.57.0 - resolution: "@eslint/js@npm:8.57.0" - checksum: 10/3c501ce8a997cf6cbbaf4ed358af5492875e3550c19b9621413b82caa9ae5382c584b0efa79835639e6e0ddaa568caf3499318e5bdab68643ef4199dce5eb0a0 +"@eslint/js@npm:8.56.0": + version: 8.56.0 + resolution: "@eslint/js@npm:8.56.0" + checksum: 10/97a4b5ccf7e24f4d205a1fb0f21cdcd610348ecf685f6798a48dd41ba443f2c1eedd3050ff5a0b8f30b8cf6501ab512aa9b76e531db15e59c9ebaa41f3162e37 languageName: node linkType: hard @@ -4406,7 +4426,7 @@ __metadata: languageName: node linkType: hard -"@humanwhocodes/config-array@npm:^0.11.14": +"@humanwhocodes/config-array@npm:^0.11.13": version: 0.11.14 resolution: "@humanwhocodes/config-array@npm:0.11.14" dependencies: @@ -4974,13 +4994,13 @@ __metadata: linkType: hard "@jridgewell/gen-mapping@npm:^0.3.0, @jridgewell/gen-mapping@npm:^0.3.2": - version: 0.3.4 - resolution: "@jridgewell/gen-mapping@npm:0.3.4" + version: 0.3.3 + resolution: "@jridgewell/gen-mapping@npm:0.3.3" dependencies: "@jridgewell/set-array": "npm:^1.0.1" "@jridgewell/sourcemap-codec": "npm:^1.4.10" "@jridgewell/trace-mapping": "npm:^0.3.9" - checksum: 10/c111a3d52fffd63a719035f9a453e0a9b4ba403a559b2f170f81e385ba5ed9cd4549575e166b20d3534e2aad9ea8473b8b17cee11b1c6595323be90d4e4c50d1 + checksum: 10/072ace159c39ab85944bdabe017c3de15c5e046a4a4a772045b00ff05e2ebdcfa3840b88ae27e897d473eb4d4845b37be3c78e28910c779f5aeeeae2fb7f0cc2 languageName: node linkType: hard @@ -5026,12 +5046,12 @@ __metadata: linkType: hard "@jridgewell/trace-mapping@npm:^0.3.12, @jridgewell/trace-mapping@npm:^0.3.17, @jridgewell/trace-mapping@npm:^0.3.20, @jridgewell/trace-mapping@npm:^0.3.9": - version: 0.3.23 - resolution: "@jridgewell/trace-mapping@npm:0.3.23" + version: 0.3.22 + resolution: "@jridgewell/trace-mapping@npm:0.3.22" dependencies: "@jridgewell/resolve-uri": "npm:^3.1.0" "@jridgewell/sourcemap-codec": "npm:^1.4.14" - checksum: 10/eb8d167f8aeb3ac55e7726eda1bb6240787987fd66d480edbe15fc98ad594ec10cb584289f649e2074b9e117862c82efdec07db13850f3dc4cb242258bb2b67d + checksum: 10/48d3e3db00dbecb211613649a1849876ba5544a3f41cf5e6b99ea1130272d6cf18591b5b67389bce20f1c871b4ede5900c3b6446a7aab6d0a3b2fe806a834db7 languageName: node linkType: hard @@ -5486,11 +5506,11 @@ __metadata: linkType: hard "@npmcli/query@npm:^3.0.0": - version: 3.1.0 - resolution: "@npmcli/query@npm:3.1.0" + version: 3.0.1 + resolution: "@npmcli/query@npm:3.0.1" dependencies: postcss-selector-parser: "npm:^6.0.10" - checksum: 10/fa79ae317934c95d14b89cb149cb8eb0b2a4e611acf0661681cfa964bf9af6740f60efe095c8bb7e880398e0955666408cc8a3ffede90e87922cb81cce1efcdb + checksum: 10/8e5ac95fc145101fc33288d434c5d50d19fb31b1068140fae8777fd76f407ab9e54feb7c7e8465d367cc25c2a06da6172c81476095fb6ef8781e1d28d1c82e25 languageName: node linkType: hard @@ -7771,9 +7791,9 @@ __metadata: linkType: hard "@types/chai@npm:^4.2.11": - version: 4.3.12 - resolution: "@types/chai@npm:4.3.12" - checksum: 10/cf465151048f438b11e562ac431842f440b50817e74516f1fb349860a0db4fcdd665197f9fbee4387250d8d077496a1167fe2c75af88372bac6d8f093ee07b3a + version: 4.3.11 + resolution: "@types/chai@npm:4.3.11" + checksum: 10/c83a00359684bf06114d5ad0ffa62c78b2fbfe09a985eda56e55cd3c191fe176052aef6e297a8c8a3608efb8ea7a44598cf7e0ae1a3a9311af892417e95b0b28 languageName: node linkType: hard @@ -7848,12 +7868,12 @@ __metadata: linkType: hard "@types/eslint@npm:*": - version: 8.56.3 - resolution: "@types/eslint@npm:8.56.3" + version: 8.56.2 + resolution: "@types/eslint@npm:8.56.2" dependencies: "@types/estree": "npm:*" "@types/json-schema": "npm:*" - checksum: 10/b5a006c24b5d3a2dba5acc12f21f96c960836beb08544cfedbbbd5b7770b6c951b41204d676b73d7d9065bef3435e5b4cb3796c57f66df21c12fd86018993a16 + checksum: 10/9e4805e770ea90a561e1f69e5edce28b8f66e92e290705100e853c7c252cf87bef654168d0d47fc60c0effbe4517dd7a8d2fa6d3f04c7f831367d568009fd368 languageName: node linkType: hard @@ -8159,18 +8179,18 @@ __metadata: linkType: hard "@types/node@npm:*, @types/node@npm:>=10.0.0, @types/node@npm:>=12": - version: 20.11.20 - resolution: "@types/node@npm:20.11.20" + version: 20.11.19 + resolution: "@types/node@npm:20.11.19" dependencies: undici-types: "npm:~5.26.4" - checksum: 10/ff449bdc94810dadb54e0f77dd587c6505ef79ffa5a208c16eb29b223365b188f4c935a3abaf0906a01d05257c3da1f72465594a841d35bcf7b6deac7a6938fb + checksum: 10/c7f4705d6c84aa21679ad180c33c13ca9567f650e66e14bcee77c7c43d14619c7cd3b4d7b2458947143030b7b1930180efa6d12d999b45366abff9fed7a17472 languageName: node linkType: hard "@types/node@npm:^14.0.10 || ^16.0.0, @types/node@npm:^14.14.20 || ^16.0.0, @types/node@npm:^16.4.7": - version: 16.18.83 - resolution: "@types/node@npm:16.18.83" - checksum: 10/ba44ec8b118bb3f7935b6b313453e6f1cf3c105974108b4dd4d59ef848a6bd650f4ea5d91a8d9eeef0cc90ea9704ff7cb46c24137fd8142a7b2f4814e1611a9d + version: 16.18.82 + resolution: "@types/node@npm:16.18.82" + checksum: 10/baf1f8bb6f743c7d7bf3da24ccb9cd21676a74a7a03726344fd212db4cff376077cd31df8eeab3d4d4d741d2d3ee0bf2a8cb3f9cf89cca4e4b9e27e53ef1283e languageName: node linkType: hard @@ -8182,11 +8202,11 @@ __metadata: linkType: hard "@types/node@npm:^18.11.9": - version: 18.19.18 - resolution: "@types/node@npm:18.19.18" + version: 18.19.17 + resolution: "@types/node@npm:18.19.17" dependencies: undici-types: "npm:~5.26.4" - checksum: 10/5006bbfdd0ce3e9d4bae725681c965a30a4af6f69b8a8d7adcd1acf343a0d547942c4d66156c0db3ff198e4564d7528dd0d0feb3c223980dac8ccc63f0ee4a98 + checksum: 10/7bef9d73227c6c47f0b616ff47df8390d03c6ea2ea4b60b272f336b58c928dbd02cc1f3e399e68660d37ee41836db91358b816575286a3b3114e4384bbd076e3 languageName: node linkType: hard @@ -8316,13 +8336,13 @@ __metadata: linkType: hard "@types/react@npm:*": - version: 18.2.58 - resolution: "@types/react@npm:18.2.58" + version: 18.2.56 + resolution: "@types/react@npm:18.2.56" dependencies: "@types/prop-types": "npm:*" "@types/scheduler": "npm:*" csstype: "npm:^3.0.2" - checksum: 10/ec5e1a7d8acc55551efec7a3d63441d24c7e94b66bf8039944541a8408048668e51b7b4b0b6e8303cdea271b7c6da242cdc7bb8ca501eedf822956edbdbfc67e + checksum: 10/de0df184f2b80e8724d79eead47f23e43e91a68c0712a5d989db3f1242f2c24179cf8e26520b5a141396b55f4928ce9a6c3a3a121a98eca8e82973920209f06c languageName: node linkType: hard @@ -8359,9 +8379,9 @@ __metadata: linkType: hard "@types/semver@npm:^7.3.12": - version: 7.5.8 - resolution: "@types/semver@npm:7.5.8" - checksum: 10/3496808818ddb36deabfe4974fd343a78101fa242c4690044ccdc3b95dcf8785b494f5d628f2f47f38a702f8db9c53c67f47d7818f2be1b79f2efb09692e1178 + version: 7.5.7 + resolution: "@types/semver@npm:7.5.7" + checksum: 10/535d88ec577fe59e38211881f79a1e2ba391e9e1516f8fff74e7196a5ba54315bace9c67a4616c334c830c89027d70a9f473a4ceb634526086a9da39180f2f9a languageName: node linkType: hard @@ -10319,7 +10339,7 @@ __metadata: languageName: node linkType: hard -"available-typed-arrays@npm:^1.0.6, available-typed-arrays@npm:^1.0.7": +"available-typed-arrays@npm:^1.0.6": version: 1.0.7 resolution: "available-typed-arrays@npm:1.0.7" dependencies: @@ -11520,8 +11540,8 @@ __metadata: linkType: hard "browserstack-cypress-cli@npm:^1.11.1": - version: 1.28.2 - resolution: "browserstack-cypress-cli@npm:1.28.2" + version: 1.28.1 + resolution: "browserstack-cypress-cli@npm:1.28.1" dependencies: archiver: "npm:5.3.0" async: "npm:3.2.3" @@ -11548,7 +11568,7 @@ __metadata: yargs: "npm:14.2.3" bin: browserstack-cypress: bin/runner.js - checksum: 10/66c3f5190d310f935f6e4db2405938ffa74a6207d7cf20b3bbcf78e52e2d1236a85d52f01652a24d6a2aab9568f7a727c23d80a572e4887af84bfe862b8a8c53 + checksum: 10/977000ab593b1592a679a8fc04601397ef2dbb933a488342976ecfdb3e3efddccf760230c3acc33f9cf3883b244e3bb5aa7b8a90c7e1103f092266ef27827c01 languageName: node linkType: hard @@ -12064,9 +12084,9 @@ __metadata: linkType: hard "caniuse-lite@npm:^1.0.0, caniuse-lite@npm:^1.0.30000844, caniuse-lite@npm:^1.0.30001109, caniuse-lite@npm:^1.0.30001487, caniuse-lite@npm:^1.0.30001587": - version: 1.0.30001589 - resolution: "caniuse-lite@npm:1.0.30001589" - checksum: 10/5e1d2eb7c32d48c52204227bc1377f0f4c758ef889c53b9b479e28470e7f82eb1db5853e7754be9600ee662ae32a1d58e8bef0fde6edab06322ddbabfd9d212f + version: 1.0.30001588 + resolution: "caniuse-lite@npm:1.0.30001588" + checksum: 10/09150ef2daa65c75cb2681832d5bc203760a02d9f71eb033dc0401fbfdbe026d3a84e54a8d2085f730a4f51eb074028b89013dd033841e1a0eb3c7323a50ed45 languageName: node linkType: hard @@ -14274,7 +14294,7 @@ __metadata: languageName: node linkType: hard -"debug@npm:4, debug@npm:4.3.4, debug@npm:^4.0.0, debug@npm:^4.1.0, debug@npm:^4.1.1, debug@npm:^4.3.1, debug@npm:^4.3.2, debug@npm:^4.3.3, debug@npm:^4.3.4, debug@npm:~4.3.1, debug@npm:~4.3.2, debug@npm:~4.3.4": +"debug@npm:4, debug@npm:4.3.4, debug@npm:^4.0.0, debug@npm:^4.1.0, debug@npm:^4.1.1, debug@npm:^4.3.1, debug@npm:^4.3.2, debug@npm:^4.3.3, debug@npm:^4.3.4, debug@npm:~4.3.1, debug@npm:~4.3.2": version: 4.3.4 resolution: "debug@npm:4.3.4" dependencies: @@ -14545,7 +14565,7 @@ __metadata: languageName: node linkType: hard -"define-data-property@npm:^1.0.1, define-data-property@npm:^1.1.2, define-data-property@npm:^1.1.4": +"define-data-property@npm:^1.0.1, define-data-property@npm:^1.1.2": version: 1.1.4 resolution: "define-data-property@npm:1.1.4" dependencies: @@ -15270,9 +15290,9 @@ __metadata: linkType: hard "electron-to-chromium@npm:^1.3.47, electron-to-chromium@npm:^1.4.668": - version: 1.4.681 - resolution: "electron-to-chromium@npm:1.4.681" - checksum: 10/92baee495b426a112836c6986736c448ff1178efeaf81e5d58cdd0520716aee5942ff60110c0a6e31e41b81ca320a13759a182597178c90c98daa04d5595d40c + version: 1.4.673 + resolution: "electron-to-chromium@npm:1.4.673" + checksum: 10/e9e82bec564f4398040a3ce5a8e344dfebac624e458545c7d9317bb54d65f7000648e552acebc1951cda4562e5d9cebcb7d9e76a376c8ad1e04f7860230935fa languageName: node linkType: hard @@ -15724,13 +15744,13 @@ __metadata: linkType: hard "es-set-tostringtag@npm:^2.0.2": - version: 2.0.3 - resolution: "es-set-tostringtag@npm:2.0.3" + version: 2.0.2 + resolution: "es-set-tostringtag@npm:2.0.2" dependencies: - get-intrinsic: "npm:^1.2.4" - has-tostringtag: "npm:^1.0.2" - hasown: "npm:^2.0.1" - checksum: 10/7227fa48a41c0ce83e0377b11130d324ac797390688135b8da5c28994c0165be8b252e15cd1de41e1325e5a5412511586960213e88f9ab4a5e7d028895db5129 + get-intrinsic: "npm:^1.2.2" + has-tostringtag: "npm:^1.0.0" + hasown: "npm:^2.0.0" + checksum: 10/afcec3a4c9890ae14d7ec606204858441c801ff84f312538e1d1ccf1e5493c8b17bd672235df785f803756472cb4f2d49b87bde5237aef33411e74c22f194e07 languageName: node linkType: hard @@ -15754,15 +15774,14 @@ __metadata: languageName: node linkType: hard -"es5-ext@npm:^0.10.35, es5-ext@npm:^0.10.46, es5-ext@npm:^0.10.50, es5-ext@npm:^0.10.53, es5-ext@npm:^0.10.62, es5-ext@npm:~0.10.14, es5-ext@npm:~0.10.2, es5-ext@npm:~0.10.46": - version: 0.10.63 - resolution: "es5-ext@npm:0.10.63" +"es5-ext@npm:^0.10.35, es5-ext@npm:^0.10.46, es5-ext@npm:^0.10.50, es5-ext@npm:^0.10.53, es5-ext@npm:~0.10.14, es5-ext@npm:~0.10.2, es5-ext@npm:~0.10.46": + version: 0.10.62 + resolution: "es5-ext@npm:0.10.62" dependencies: es6-iterator: "npm:^2.0.3" es6-symbol: "npm:^3.1.3" - esniff: "npm:^2.0.1" next-tick: "npm:^1.1.0" - checksum: 10/69e373ffcf4664f12697adfab4a043a5cd93386c5e9d9b3eda4bd59f3591c7bebba3647475a3c9ccb1b48ec941b93c9507bf54727f0311a65e7220bc895eade9 + checksum: 10/3f6a3bcdb7ff82aaf65265799729828023c687a2645da04005b8f1dc6676a0c41fd06571b2517f89dcf143e0268d3d9ef0fdfd536ab74580083204c688d6fb45 languageName: node linkType: hard @@ -16064,8 +16083,8 @@ __metadata: linkType: hard "eslint-plugin-jsdoc@npm:^48.0.0": - version: 48.2.0 - resolution: "eslint-plugin-jsdoc@npm:48.2.0" + version: 48.1.0 + resolution: "eslint-plugin-jsdoc@npm:48.1.0" dependencies: "@es-joy/jsdoccomment": "npm:~0.42.0" are-docs-informative: "npm:^0.0.2" @@ -16078,7 +16097,7 @@ __metadata: spdx-expression-parse: "npm:^4.0.0" peerDependencies: eslint: ^7.0.0 || ^8.0.0 || ^9.0.0 - checksum: 10/4a616f6d888311f63ccf0f4c697714c66978bb3717cb5a6a5af410615d9b28ff4febe3241939135a75636f2a4e95229563acbb7761db39e4ff7e7b23c2129262 + checksum: 10/ae81ac8321f35fb1e598e44964f29ea1b22b1138c128ee4808947b71138d2a9ceffcf909a1e84de4920e3d04aca028277044bc4b552d23bed1b30b12bb0e2cba languageName: node linkType: hard @@ -16260,14 +16279,14 @@ __metadata: linkType: hard "eslint@npm:^8.53.0": - version: 8.57.0 - resolution: "eslint@npm:8.57.0" + version: 8.56.0 + resolution: "eslint@npm:8.56.0" dependencies: "@eslint-community/eslint-utils": "npm:^4.2.0" "@eslint-community/regexpp": "npm:^4.6.1" "@eslint/eslintrc": "npm:^2.1.4" - "@eslint/js": "npm:8.57.0" - "@humanwhocodes/config-array": "npm:^0.11.14" + "@eslint/js": "npm:8.56.0" + "@humanwhocodes/config-array": "npm:^0.11.13" "@humanwhocodes/module-importer": "npm:^1.0.1" "@nodelib/fs.walk": "npm:^1.2.8" "@ungap/structured-clone": "npm:^1.2.0" @@ -16303,19 +16322,7 @@ __metadata: text-table: "npm:^0.2.0" bin: eslint: bin/eslint.js - checksum: 10/00496e218b23747a7a9817bf58b522276d0dc1f2e546dceb4eea49f9871574088f72f1f069a6b560ef537efa3a75261b8ef70e51ef19033da1cc4c86a755ef15 - languageName: node - linkType: hard - -"esniff@npm:^2.0.1": - version: 2.0.1 - resolution: "esniff@npm:2.0.1" - dependencies: - d: "npm:^1.0.1" - es5-ext: "npm:^0.10.62" - event-emitter: "npm:^0.3.5" - type: "npm:^2.7.2" - checksum: 10/f6a2abd2f8c5fe57c5fcf53e5407c278023313d0f6c3a92688e7122ab9ac233029fd424508a196ae5bc561aa1f67d23f4e2435b1a0d378030f476596129056ac + checksum: 10/ef6193c6e4cef20774b985a5cc2fd4bf6d3c4decd423117cbc4a0196617861745db291217ad3c537bc3a160650cca965bc818f55e1f3e446af1fcb293f9940a5 languageName: node linkType: hard @@ -17430,9 +17437,9 @@ __metadata: linkType: hard "flatted@npm:^3.2.7, flatted@npm:^3.2.9": - version: 3.3.1 - resolution: "flatted@npm:3.3.1" - checksum: 10/7b8376061d5be6e0d3658bbab8bde587647f68797cf6bfeae9dea0e5137d9f27547ab92aaff3512dd9d1299086a6d61be98e9d48a56d17531b634f77faadbc49 + version: 3.2.9 + resolution: "flatted@npm:3.2.9" + checksum: 10/dc2b89e46a2ebde487199de5a4fcb79e8c46f984043fea5c41dbf4661eb881fefac1c939b5bdcd8a09d7f960ec364f516970c7ec44e58ff451239c07fd3d419b languageName: node linkType: hard @@ -17446,12 +17453,12 @@ __metadata: languageName: node linkType: hard -"focus-lock@npm:^1.3.2": - version: 1.3.3 - resolution: "focus-lock@npm:1.3.3" +"focus-lock@npm:^1.2.0": + version: 1.3.1 + resolution: "focus-lock@npm:1.3.1" dependencies: tslib: "npm:^2.0.3" - checksum: 10/8760cec07f263ba24277302c5f10a1cfc93660ec7deda2cde59814af8def83618c347942a6b244c00cfaf36595af052d19a6f4c41699778edf2bd65c25f74bac + checksum: 10/68b2c9c745bf7a5adeb00114ffe85a4ac9fe861a48b85591b86a67a19f73fa00c4d5e0e5e81690f7f3797018d551f6ee1de0ff291781cd0b19ddd9061ba027ad languageName: node linkType: hard @@ -19049,7 +19056,7 @@ __metadata: languageName: node linkType: hard -"has-proto@npm:^1.0.1, has-proto@npm:^1.0.3": +"has-proto@npm:^1.0.1": version: 1.0.3 resolution: "has-proto@npm:1.0.3" checksum: 10/0b67c2c94e3bea37db3e412e3c41f79d59259875e636ba471e94c009cdfb1fa82bf045deeffafc7dbb9c148e36cae6b467055aaa5d9fad4316e11b41e3ba551a @@ -19063,7 +19070,7 @@ __metadata: languageName: node linkType: hard -"has-tostringtag@npm:^1.0.0, has-tostringtag@npm:^1.0.1, has-tostringtag@npm:^1.0.2": +"has-tostringtag@npm:^1.0.0, has-tostringtag@npm:^1.0.1": version: 1.0.2 resolution: "has-tostringtag@npm:1.0.2" dependencies: @@ -20189,9 +20196,9 @@ __metadata: linkType: hard "ip@npm:^2.0.0": - version: 2.0.1 - resolution: "ip@npm:2.0.1" - checksum: 10/d6dd154e1bc5e8725adfdd6fb92218635b9cbe6d873d051bd63b178f009777f751a5eea4c67021723a7056325fc3052f8b6599af0a2d56f042c93e684b4a0349 + version: 2.0.0 + resolution: "ip@npm:2.0.0" + checksum: 10/1270b11e534a466fb4cf4426cbcc3a907c429389f7f4e4e3b288b42823562e88d6a509ceda8141a507de147ca506141f745005c0aa144569d94cf24a54eb52bc languageName: node linkType: hard @@ -20663,9 +20670,9 @@ __metadata: linkType: hard "is-negative-zero@npm:^2.0.2": - version: 2.0.3 - resolution: "is-negative-zero@npm:2.0.3" - checksum: 10/8fe5cffd8d4fb2ec7b49d657e1691889778d037494c6f40f4d1a524cadd658b4b53ad7b6b73a59bcb4b143ae9a3d15829af864b2c0f9d65ac1e678c4c80f17e5 + version: 2.0.2 + resolution: "is-negative-zero@npm:2.0.2" + checksum: 10/edbec1a9e6454d68bf595a114c3a72343d2d0be7761d8173dae46c0b73d05bb8fe9398c85d121e7794a66467d2f40b4a610b0be84cd804262d234fc634c86131 languageName: node linkType: hard @@ -20851,11 +20858,11 @@ __metadata: linkType: hard "is-shared-array-buffer@npm:^1.0.2": - version: 1.0.3 - resolution: "is-shared-array-buffer@npm:1.0.3" + version: 1.0.2 + resolution: "is-shared-array-buffer@npm:1.0.2" dependencies: - call-bind: "npm:^1.0.7" - checksum: 10/bc5402900dc62b96ebb2548bf5b0a0bcfacc2db122236fe3ab3b3e3c884293a0d5eb777e73f059bcbf8dc8563bb65eae972fee0fb97e38a9ae27c8678f62bcfe + call-bind: "npm:^1.0.2" + checksum: 10/23d82259d6cd6dbb7c4ff3e4efeff0c30dbc6b7f88698498c17f9821cb3278d17d2b6303a5341cbd638ab925a28f3f086a6c79b3df70ac986cc526c725d43b4f languageName: node linkType: hard @@ -20930,7 +20937,7 @@ __metadata: languageName: node linkType: hard -"is-typed-array@npm:^1.1.13": +"is-typed-array@npm:^1.1.10, is-typed-array@npm:^1.1.13, is-typed-array@npm:^1.1.9": version: 1.1.13 resolution: "is-typed-array@npm:1.1.13" dependencies: @@ -21343,12 +21350,12 @@ __metadata: linkType: hard "istanbul-reports@npm:^3.0.2, istanbul-reports@npm:^3.1.4": - version: 3.1.7 - resolution: "istanbul-reports@npm:3.1.7" + version: 3.1.6 + resolution: "istanbul-reports@npm:3.1.6" dependencies: html-escaper: "npm:^2.0.0" istanbul-lib-report: "npm:^3.0.0" - checksum: 10/f1faaa4684efaf57d64087776018d7426312a59aa6eeb4e0e3a777347d23cd286ad18f427e98f0e3dee666103d7404c9d7abc5f240406a912fa16bd6695437fa + checksum: 10/135c178e509b21af5c446a6951fc01c331331bb0fdb1ed1dd7f68a8c875603c2e2ee5c82801db5feb868e5cc35e9babe2d972d322afc50f6de6cce6431b9b2ff languageName: node linkType: hard @@ -22591,15 +22598,15 @@ __metadata: linkType: hard "joi@npm:^17.6.0": - version: 17.12.2 - resolution: "joi@npm:17.12.2" + version: 17.12.1 + resolution: "joi@npm:17.12.1" dependencies: "@hapi/hoek": "npm:^9.3.0" "@hapi/topo": "npm:^5.1.0" "@sideway/address": "npm:^4.1.5" "@sideway/formula": "npm:^3.0.1" "@sideway/pinpoint": "npm:^2.0.0" - checksum: 10/42257382802f622a4152cc4dbf5bca226a312a8315bf826262f5643d8e450d2f2d9c753abfef247b8c3121423639a02945b322ccac5abde17402dedcb26b9365 + checksum: 10/6c48ed73e091d6328d9062aa9647b83e971004f2ab7a58a0e8bdee68cd4295e4141981a79461f85bd70333a77d6865fc2420bf9b392e2287384008f4f781ea71 languageName: node linkType: hard @@ -23254,8 +23261,8 @@ __metadata: linkType: hard "karma@npm:^6.0.0": - version: 6.4.3 - resolution: "karma@npm:6.4.3" + version: 6.4.2 + resolution: "karma@npm:6.4.2" dependencies: "@colors/colors": "npm:1.5.0" body-parser: "npm:^1.19.0" @@ -23276,14 +23283,14 @@ __metadata: qjobs: "npm:^1.2.0" range-parser: "npm:^1.2.1" rimraf: "npm:^3.0.2" - socket.io: "npm:^4.7.2" + socket.io: "npm:^4.4.1" source-map: "npm:^0.6.1" tmp: "npm:^0.2.1" ua-parser-js: "npm:^0.7.30" yargs: "npm:^16.1.1" bin: karma: bin/karma - checksum: 10/7fc194f5d4b0dae27e97375d0e005a7b74a6bee3c6ad676c3e21ec7c6309f32202d62cf0f0645ea99aa5adea455d79afe1d32e8aa28ac3c09609f16d0e2120ca + checksum: 10/4289783fdc188929aaae27f97c26b14992b391027703d4fc3d53034fcedd385e1fdb66af61daca8364e151407527f197923076845f0a4988db20ed78c5533845 languageName: node linkType: hard @@ -26249,11 +26256,11 @@ __metadata: linkType: hard "npm-run-path@npm:^5.1.0": - version: 5.3.0 - resolution: "npm-run-path@npm:5.3.0" + version: 5.2.0 + resolution: "npm-run-path@npm:5.2.0" dependencies: path-key: "npm:^4.0.0" - checksum: 10/ae8e7a89da9594fb9c308f6555c73f618152340dcaae423e5fb3620026fefbec463618a8b761920382d666fa7a2d8d240b6fe320e8a6cdd54dc3687e2b659d25 + checksum: 10/c5325e016014e715689c4014f7e0be16cc4cbf529f32a1723e511bc4689b5f823b704d2bca61ac152ce2bda65e0205dc8b3ba0ec0f5e4c3e162d302f6f5b9efb languageName: node linkType: hard @@ -29205,11 +29212,11 @@ __metadata: linkType: hard "react-focus-lock@npm:^2.1.0": - version: 2.11.1 - resolution: "react-focus-lock@npm:2.11.1" + version: 2.11.0 + resolution: "react-focus-lock@npm:2.11.0" dependencies: "@babel/runtime": "npm:^7.0.0" - focus-lock: "npm:^1.3.2" + focus-lock: "npm:^1.2.0" prop-types: "npm:^15.6.2" react-clientside-effect: "npm:^1.2.6" use-callback-ref: "npm:^1.3.0" @@ -29220,7 +29227,7 @@ __metadata: peerDependenciesMeta: "@types/react": optional: true - checksum: 10/b7d01554cea4b783ee348bafe225d293bb64e239e1952e33d1fca0e9c25e5e214a55016171c485283af119e18790419ba093d5d6ffbeb1c8d2d63f12e48a4989 + checksum: 10/016d6fa5485b742bd9487f087a0c1596ddfd91a9d5c2b3674de5c91c384d4c40bcdce404930b1345fbb0558ee63d1d7787bd5c5186281add4b28bc616dee970a languageName: node linkType: hard @@ -31068,15 +31075,15 @@ __metadata: linkType: hard "sass@npm:^1.19.0, sass@npm:~1.71.0": - version: 1.71.1 - resolution: "sass@npm:1.71.1" + version: 1.71.0 + resolution: "sass@npm:1.71.0" dependencies: chokidar: "npm:>=3.0.0 <4.0.0" immutable: "npm:^4.0.0" source-map-js: "npm:>=0.6.2 <2.0.0" bin: sass: sass.js - checksum: 10/51e3c667e262a80db9c80f31109dabd8d5b9a6f79e8e8aa627d83564607036ee0b13b1921d14fd317437d8cf7030d7c8cf1c3b7e11b1f4537a4a4029f6cb63a3 + checksum: 10/5616f0ef0d764d0a6242155edd02773300e0d9ac1c0b542781ae934095f3b2f73312707f95edc08c34ae88bad633bb55c8cc67ad390bef40e04eb84ae9b028cd languageName: node linkType: hard @@ -31450,14 +31457,13 @@ __metadata: linkType: hard "set-function-name@npm:^2.0.0, set-function-name@npm:^2.0.1": - version: 2.0.2 - resolution: "set-function-name@npm:2.0.2" + version: 2.0.1 + resolution: "set-function-name@npm:2.0.1" dependencies: - define-data-property: "npm:^1.1.4" - es-errors: "npm:^1.3.0" + define-data-property: "npm:^1.0.1" functions-have-names: "npm:^1.2.3" - has-property-descriptors: "npm:^1.0.2" - checksum: 10/c7614154a53ebf8c0428a6c40a3b0b47dac30587c1a19703d1b75f003803f73cdfa6a93474a9ba678fa565ef5fbddc2fae79bca03b7d22ab5fd5163dbe571a74 + has-property-descriptors: "npm:^1.0.0" + checksum: 10/4975d17d90c40168eee2c7c9c59d023429f0a1690a89d75656306481ece0c3c1fb1ebcc0150ea546d1913e35fbd037bace91372c69e543e51fc5d1f31a9fa126 languageName: node linkType: hard @@ -31822,12 +31828,11 @@ __metadata: linkType: hard "socket.io-adapter@npm:~2.5.2": - version: 2.5.4 - resolution: "socket.io-adapter@npm:2.5.4" + version: 2.5.2 + resolution: "socket.io-adapter@npm:2.5.2" dependencies: - debug: "npm:~4.3.4" ws: "npm:~8.11.0" - checksum: 10/48f35ce91e7225565c17f55c2ed9ab4f39e06705e8278cd85e447cbb0e45fd4a16020cd5e1a170e75e06161bcd277b3a02a9305048f76704d10ee61eacba1154 + checksum: 10/08b052d6b487399cdf753ef5cf6941c6da2b8927994580b65dac0918a3a3ab6a6b7906871adc09d53837beb13244e8897bfa670f558c7231ac87ebe995dbc55e languageName: node linkType: hard @@ -31841,7 +31846,7 @@ __metadata: languageName: node linkType: hard -"socket.io@npm:^4.4.1, socket.io@npm:^4.7.2": +"socket.io@npm:^4.4.1": version: 4.7.4 resolution: "socket.io@npm:4.7.4" dependencies: @@ -31890,12 +31895,12 @@ __metadata: linkType: hard "socks@npm:^2.6.2, socks@npm:^2.7.1": - version: 2.8.1 - resolution: "socks@npm:2.8.1" + version: 2.8.0 + resolution: "socks@npm:2.8.0" dependencies: ip-address: "npm:^9.0.5" smart-buffer: "npm:^4.2.0" - checksum: 10/a3cc38e0716ab53a2db3fa00c703ca682ad54dbbc9ed4c7461624a999be6fa7cdc79fc904c411618e698d5eff55a55aa6d9329169a7db11636d0200814a2b5aa + checksum: 10/ed0224ce2c7daaa7690cb87cf53d9703ffc4e983aca221f6f5b46767b232658df49494fd86acd0bf97ada6de05248ea8ea625c2343d48155d8463fc40d4a340f languageName: node linkType: hard @@ -32968,11 +32973,11 @@ __metadata: linkType: hard "stylelint-use-logical@npm:^2.1.0": - version: 2.1.1 - resolution: "stylelint-use-logical@npm:2.1.1" + version: 2.1.0 + resolution: "stylelint-use-logical@npm:2.1.0" peerDependencies: - stylelint: ">= 11 < 17" - checksum: 10/b3e253fc211ec7d87d3ed2920bb8e9c99ff21454fc0304d1050d3c78e5f61232ad4fe7e418b09a99f9a7da9aceb0ad72a125bb6c90da734d361c8859a7e3b67d + stylelint: ">= 11 < 16" + checksum: 10/91109a2d65ba801354cae79045f73e09365a20d547fe2e75db8a0c3f3e66a5d0ea3feb6033431be2cfa9f6f31cdc5bee1ce99786b3be974f21b2a187a7fd154e languageName: node linkType: hard @@ -33462,8 +33467,8 @@ __metadata: linkType: hard "terser@npm:^5.0.0, terser@npm:^5.17.4, terser@npm:^5.26.0, terser@npm:^5.3.4": - version: 5.28.1 - resolution: "terser@npm:5.28.1" + version: 5.27.1 + resolution: "terser@npm:5.27.1" dependencies: "@jridgewell/source-map": "npm:^0.3.3" acorn: "npm:^8.8.2" @@ -33471,7 +33476,7 @@ __metadata: source-map-support: "npm:~0.5.20" bin: terser: bin/terser - checksum: 10/922159f036a89a7d01b8b67e0eacb4425c20cf19067d2e82c1523153ed3bf66c36b945fd16c610b7ea41fedb867b189d2a350415fb566f4668a1701ab768728e + checksum: 10/4b5c8c65548071ae09dc1d9fd64616262876229897eaac9f95cf2e44908a1f4a25d7837c2a38caef1a523cf1cf67d254e74a846e9a854d289c0ad3664d581c3c languageName: node linkType: hard @@ -34211,9 +34216,9 @@ __metadata: linkType: hard "type-fest@npm:^4.6.0, type-fest@npm:^4.7.1": - version: 4.10.3 - resolution: "type-fest@npm:4.10.3" - checksum: 10/ab86ee1624efbb29be138f5582654b32bd0f0c55cdef9bab0eca76933936313933058de7ddc9e6b741aa2ee686f15b1c4451e777e2db93eff44ee69770c84046 + version: 4.10.2 + resolution: "type-fest@npm:4.10.2" + checksum: 10/2b1ad1270d9fabeeb506ba831d513caeb05bfc852e5e012511d785ce9dc68d773fe0a42bddf857a362c7f3406244809c5b8a698b743bb7617d4a8c470672087f languageName: node linkType: hard @@ -34242,54 +34247,50 @@ __metadata: linkType: hard "typed-array-buffer@npm:^1.0.1": - version: 1.0.2 - resolution: "typed-array-buffer@npm:1.0.2" + version: 1.0.1 + resolution: "typed-array-buffer@npm:1.0.1" dependencies: - call-bind: "npm:^1.0.7" + call-bind: "npm:^1.0.6" es-errors: "npm:^1.3.0" is-typed-array: "npm:^1.1.13" - checksum: 10/02ffc185d29c6df07968272b15d5319a1610817916ec8d4cd670ded5d1efe72901541ff2202fcc622730d8a549c76e198a2f74e312eabbfb712ed907d45cbb0b + checksum: 10/1d65e46b2b9b7ec2a30df39b9ddf32e55ad08d6119aec33975506a3dba56057796bdc3c64dbeb7fdb61bf340a75e279dfd55b48ce8f3b874f01731e1da6833d2 languageName: node linkType: hard "typed-array-byte-length@npm:^1.0.0": - version: 1.0.1 - resolution: "typed-array-byte-length@npm:1.0.1" + version: 1.0.0 + resolution: "typed-array-byte-length@npm:1.0.0" dependencies: - call-bind: "npm:^1.0.7" + call-bind: "npm:^1.0.2" for-each: "npm:^0.3.3" - gopd: "npm:^1.0.1" - has-proto: "npm:^1.0.3" - is-typed-array: "npm:^1.1.13" - checksum: 10/e4a38329736fe6a73b52a09222d4a9e8de14caaa4ff6ad8e55217f6705b017d9815b7284c85065b3b8a7704e226ccff1372a72b78c2a5b6b71b7bf662308c903 + has-proto: "npm:^1.0.1" + is-typed-array: "npm:^1.1.10" + checksum: 10/6f376bf5d988f00f98ccee41fd551cafc389095a2a307c18fab30f29da7d1464fc3697139cf254cda98b4128bbcb114f4b557bbabdc6d9c2e5039c515b31decf languageName: node linkType: hard "typed-array-byte-offset@npm:^1.0.0": - version: 1.0.2 - resolution: "typed-array-byte-offset@npm:1.0.2" + version: 1.0.1 + resolution: "typed-array-byte-offset@npm:1.0.1" dependencies: - available-typed-arrays: "npm:^1.0.7" + available-typed-arrays: "npm:^1.0.6" call-bind: "npm:^1.0.7" for-each: "npm:^0.3.3" gopd: "npm:^1.0.1" - has-proto: "npm:^1.0.3" + has-proto: "npm:^1.0.1" is-typed-array: "npm:^1.1.13" - checksum: 10/ac26d720ebb2aacbc45e231347c359e6649f52e0cfe0e76e62005912f8030d68e4cb7b725b1754e8fdd48e433cb68df5a8620a3e420ad1457d666e8b29bf9150 + checksum: 10/b174c0bac20bcd8787d2f5ccd7bd8f5e5a128e060ffe0909ffe27d65e486de50a3552248a307a45e5c9c593fd8ec97f5acdf119c3e13806f11943b7a2ce555be languageName: node linkType: hard "typed-array-length@npm:^1.0.4": - version: 1.0.5 - resolution: "typed-array-length@npm:1.0.5" + version: 1.0.4 + resolution: "typed-array-length@npm:1.0.4" dependencies: - call-bind: "npm:^1.0.7" + call-bind: "npm:^1.0.2" for-each: "npm:^0.3.3" - gopd: "npm:^1.0.1" - has-proto: "npm:^1.0.3" - is-typed-array: "npm:^1.1.13" - possible-typed-array-names: "npm:^1.0.0" - checksum: 10/f9a0da99c41880b44e2c5e5d0d01515c2a6e0f54b10c594151804f013272d837df3b67ea84d7304ecfbab2c10d99c3372168bf3a4bd295abf13ac5a72f93054a + is-typed-array: "npm:^1.1.9" + checksum: 10/0444658acc110b233176cb0b7689dcb828b0cfa099ab1d377da430e8553b6fdcdce882360b7ffe9ae085b6330e1d39383d7b2c61574d6cd8eef651d3e4a87822 languageName: node linkType: hard @@ -35787,8 +35788,8 @@ __metadata: linkType: hard "webpack@npm:>=4.43.0 <6.0.0": - version: 5.90.3 - resolution: "webpack@npm:5.90.3" + version: 5.90.2 + resolution: "webpack@npm:5.90.2" dependencies: "@types/eslint-scope": "npm:^3.7.3" "@types/estree": "npm:^1.0.5" @@ -35819,7 +35820,7 @@ __metadata: optional: true bin: webpack: bin/webpack.js - checksum: 10/48c9696eca950bfa7c943a24b8235fdf0575acd73a8eb1661f8189d3d1f431362f3a0e158e2941a7e4f0852ea6e32d7d4e89283149247e4389a8aad0fe6c247e + checksum: 10/4eaeed1255c9c7738921c4ce4facdb3b78dbfcb3441496942f6d160a41fbcebd24fb2c6dbb64739b357c5ff78e5a298f6c82eca482438b95130a3ba4e16d084a languageName: node linkType: hard