From 7716f678dccc7a00c8b449b9b0f08d8715402f13 Mon Sep 17 00:00:00 2001 From: ichim-david Date: Mon, 15 Nov 2021 12:59:05 +0200 Subject: [PATCH 01/56] #2818 folder contents dropdown changes (#2819) * Refs #2818 change the following to the Contents.jsx component: - import ContentsBreadcrumbs from @volto/components just like we do with the other internal components of Contents, this way we can customize Contents.jsx if needed without having to change the import path of ContentsBreadcrumbs. - For the Breadcrumbs dropdown and the Contents table header dropdowns we now force the dropdowns to load from the bottom. This way we can avoid these popups from loading from above the ... which resulted in clipped content with the default Volto header section. - added simple dropdown hover css behavior from SemanticUI within contents.less without .simple class in order to allow an item dropdown to still open child menus automatically when hovering over the dropdown items. * Refs #2818 added missing display tag and updated test snapshot --- CHANGELOG.md | 6 ++++++ src/components/index.js | 1 + src/components/manage/Contents/Contents.jsx | 18 ++++++++++-------- .../__snapshots__/Contents.test.jsx.snap | 10 ++++++++-- theme/themes/pastanaga/extras/contents.less | 12 ++++++++++++ 5 files changed, 37 insertions(+), 10 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index e201027be6..20a333ba88 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -8,6 +8,12 @@ ### Bugfix +- Folder contents table header and breadcrumbs dropdown now appear only from the + bottom, fixing an issue where the breadcrumb dropdown content was clipped + by the header area @ichim-david +- Folder contents sort dropdown is now also simple as the other dropdowns + ensuring we have the same behavior between adjecent dropdown @ichim-david + ### Internal ## 14.0.0-alpha.32 (2021-11-09) diff --git a/src/components/index.js b/src/components/index.js index 63fbc73efa..cfe3392ef5 100644 --- a/src/components/index.js +++ b/src/components/index.js @@ -114,6 +114,7 @@ export BlocksToolbar from '@plone/volto/components/manage/Form/BlocksToolbar'; export Field from '@plone/volto/components/manage/Form/Field'; export SearchTags from '@plone/volto/components/theme/Search/SearchTags'; export CommentEditModal from '@plone/volto/components/theme/Comments/CommentEditModal'; +export ContentsBreadcrumbs from '@plone/volto/components/manage/Contents/ContentsBreadcrumbs'; export ContentsIndexHeader from '@plone/volto/components/manage/Contents/ContentsIndexHeader'; export ContentsItem from '@plone/volto/components/manage/Contents/ContentsItem'; export ContentsUploadModal from '@plone/volto/components/manage/Contents/ContentsUploadModal'; diff --git a/src/components/manage/Contents/Contents.jsx b/src/components/manage/Contents/Contents.jsx index dd1434cdbc..2a53229267 100644 --- a/src/components/manage/Contents/Contents.jsx +++ b/src/components/manage/Contents/Contents.jsx @@ -52,6 +52,7 @@ import { } from '@plone/volto/actions'; import Indexes, { defaultIndexes } from '@plone/volto/constants/Indexes'; import { + ContentsBreadcrumbs, ContentsIndexHeader, ContentsItem, ContentsRenameModal, @@ -66,7 +67,6 @@ import { Unauthorized, } from '@plone/volto/components'; -import ContentsBreadcrumbs from './ContentsBreadcrumbs'; import { Helmet, getBaseUrl } from '@plone/volto/helpers'; import { injectLazyLibs } from '@plone/volto/helpers/Loadable/Loadable'; @@ -1431,6 +1431,7 @@ class Contents extends Component { } @@ -1495,7 +1496,13 @@ class Contents extends Component { } - className="sort-icon" - aria-label={this.props.intl.formatMessage( - messages.sort, - )} - icon={null} - simple > +
.menu > .item:hover > .menu, + .ui.dropdown > .menu > .item:active > .menu { + top: 0 !important; + left: 100% !important; + display: block; + overflow: visible; + width: auto; + height: auto; + opacity: 1; + } .ui.dropdown .menu > .item { display: flex; From fb70f316b2789ee42d4d42564c931f57c586f550 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?V=C3=ADctor=20Fern=C3=A1ndez=20de=20Alba?= Date: Mon, 15 Nov 2021 12:12:17 +0100 Subject: [PATCH 02/56] Upgrade stylelint to v14 (#2829) * Upgrade stylelint to v14 * Add proper generator config and deps. Fix husky scripts too --- CHANGELOG.md | 2 + package.json | 24 +- .../generators/app/templates/package.json.tpl | 16 +- yarn.lock | 537 +++++++++--------- 4 files changed, 294 insertions(+), 285 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 20a333ba88..75009b0401 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -16,6 +16,8 @@ ### Internal +- Upgrade stylelint to v14 (vscode-stylelint requires it now) @sneridagh + ## 14.0.0-alpha.32 (2021-11-09) ### Breaking diff --git a/package.json b/package.json index 621d422a21..eadae47c3d 100644 --- a/package.json +++ b/package.json @@ -42,7 +42,7 @@ "prettier": "./node_modules/.bin/prettier --single-quote --check 'src/**/*.{js,jsx,ts,tsx,json}'", "prettier:fix": "./node_modules/.bin/prettier --single-quote --write 'src/**/*.{js,jsx,ts,tsx,json}'", "stylelint": "./node_modules/.bin/stylelint 'theme/**/*.{css,less}' 'src/**/*.{css,less}'", - "stylelint:overrides": "./node_modules/.bin/stylelint --syntax less 'theme/**/*.overrides' 'src/**/*.overrides'", + "stylelint:overrides": "./node_modules/.bin/stylelint 'theme/**/*.overrides' 'src/**/*.overrides'", "stylelint:fix": "yarn stylelint --fix && yarn stylelint:overrides --fix", "lint": "./node_modules/eslint/bin/eslint.js --max-warnings=0 'src/**/*.{js,jsx,json}'", "lint:fix": "./node_modules/eslint/bin/eslint.js --fix 'src/**/*.{js,jsx,json}'", @@ -159,6 +159,20 @@ "plugins": [ "stylelint-prettier" ], + "overrides": [ + { + "files": [ + "**/*.less" + ], + "customSyntax": "postcss-less" + }, + { + "files": [ + "**/*.overrides" + ], + "customSyntax": "postcss-less" + } + ], "rules": { "prettier/prettier": true, "rule-empty-line-before": [ @@ -223,10 +237,10 @@ "npx stylelint --fix" ], "theme/**/*.overrides": [ - "npx stylelint --fix --syntax less" + "npx stylelint --fix" ], "src/**/*.overrides": [ - "npx stylelint --fix --syntax less" + "npx stylelint --fix" ] }, "engines": { @@ -317,7 +331,9 @@ "mini-css-extract-plugin": "0.9.0", "moment": "2.24.0", "pofile": "1.0.10", + "postcss": "8.3.11", "postcss-flexbugs-fixes": "4.2.1", + "postcss-less": "5.0.0", "postcss-loader": "3.0.0", "postcss-overrides": "3.1.4", "prettier": "2.0.5", @@ -372,7 +388,7 @@ "semver": "5.6.0", "serialize-javascript": "3.1.0", "start-server-and-test": "1.10.6", - "stylelint": "13.3.3", + "stylelint": "14.0.1", "stylelint-config-idiomatic-order": "8.1.0", "stylelint-config-prettier": "8.0.1", "stylelint-prettier": "1.1.2", diff --git a/packages/generator-volto/generators/app/templates/package.json.tpl b/packages/generator-volto/generators/app/templates/package.json.tpl index 63d8e13ada..7a71b29e03 100644 --- a/packages/generator-volto/generators/app/templates/package.json.tpl +++ b/packages/generator-volto/generators/app/templates/package.json.tpl @@ -80,6 +80,20 @@ "plugins": [ "stylelint-prettier" ], + "overrides": [ + { + "files": [ + "**/*.less" + ], + "customSyntax": "postcss-less" + }, + { + "files": [ + "**/*.overrides" + ], + "customSyntax": "postcss-less" + } + ], "rules": { "prettier/prettier": true, "rule-empty-line-before": [ @@ -110,7 +124,7 @@ "devDependencies": { "eslint-plugin-prettier": "3.1.3", "prettier": "2.0.5", - "stylelint": "13.3.3", + "stylelint": "14.0.1", "stylelint-config-idiomatic-order": "8.1.0", "stylelint-config-prettier": "8.0.1", "stylelint-prettier": "1.1.2" diff --git a/yarn.lock b/yarn.lock index 6f90269dae..4c69e84da6 100644 --- a/yarn.lock +++ b/yarn.lock @@ -72,7 +72,7 @@ semver "^5.4.1" source-map "^0.5.0" -"@babel/core@>=7.9.0", "@babel/core@^7.1.0", "@babel/core@^7.12.10", "@babel/core@^7.7.2", "@babel/core@^7.7.5": +"@babel/core@^7.1.0", "@babel/core@^7.12.10", "@babel/core@^7.7.2", "@babel/core@^7.7.5": version "7.14.6" resolved "https://registry.yarnpkg.com/@babel/core/-/core-7.14.6.tgz#e0814ec1a950032ff16c13a2721de39a8416fcab" integrity sha512-gJnOEWSqTk96qG5BoIrl5bVtc23DCycmIePPYnamY9RboYdI4nFy5vAQMSl81O5K/W0sLDWfGysnOECC+KUUCA== @@ -2903,21 +2903,6 @@ resolve-from "^5.0.0" store2 "^2.12.0" -"@stylelint/postcss-css-in-js@^0.37.1": - version "0.37.1" - resolved "https://registry.yarnpkg.com/@stylelint/postcss-css-in-js/-/postcss-css-in-js-0.37.1.tgz#41e5e7660f73d88227610e18c6ebb262d56ac125" - integrity sha512-UMf2Rni3JGKi3ZwYRGMYJ5ipOA5ENJSKMtYA/pE1ZLURwdh7B5+z2r73RmWvub+N0UuH1Lo+TGfCgYwPvqpXNw== - dependencies: - "@babel/core" ">=7.9.0" - -"@stylelint/postcss-markdown@^0.36.1": - version "0.36.1" - resolved "https://registry.yarnpkg.com/@stylelint/postcss-markdown/-/postcss-markdown-0.36.1.tgz#829b87e6c0f108014533d9d7b987dc9efb6632e8" - integrity sha512-iDxMBWk9nB2BPi1VFQ+Dc5+XpvODBHw2n3tYpaBZuEAFQlbtF9If0Qh5LTTwSi/XwdbJ2jt+0dis3i8omyggpw== - dependencies: - remark "^12.0.0" - unist-util-find-all-after "^3.0.1" - "@szmarczak/http-timer@^1.1.2": version "1.1.2" resolved "https://registry.yarnpkg.com/@szmarczak/http-timer/-/http-timer-1.1.2.tgz#b1665e2c461a2cd92f4c1bbf50d5454de0d4b421" @@ -3768,6 +3753,16 @@ ajv@^6.12.4, ajv@^6.12.5: json-schema-traverse "^0.4.1" uri-js "^4.2.2" +ajv@^8.0.1: + version "8.7.1" + resolved "https://registry.yarnpkg.com/ajv/-/ajv-8.7.1.tgz#52be6f1736b076074798124293618f132ad07a7e" + integrity sha512-gPpOObTO1QjbnN1sVMjJcp1TF9nggMfO4MBR5uQl6ZVTOaEPq5i4oq/6R9q2alMMPB3eg53wFv1RuJBLuxf3Hw== + dependencies: + fast-deep-equal "^3.1.1" + json-schema-traverse "^1.0.0" + require-from-string "^2.0.2" + uri-js "^4.2.2" + alphanum-sort@^1.0.0: version "1.0.2" resolved "https://registry.yarnpkg.com/alphanum-sort/-/alphanum-sort-1.0.2.tgz#97a1119649b211ad33691d9f9f486a8ec9fbe0a3" @@ -3822,6 +3817,11 @@ ansi-regex@^5.0.0: resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-5.0.0.tgz#388539f55179bf39339c81af30a654d69f87cb75" integrity sha512-bY6fj56OUQ0hU1KjFNDQuJFezqKdrAyFdIevADiqrWHwSlbmBNMHp5ak2f40Pm8JTFyM2mqxkG6ngkHO11f/lg== +ansi-regex@^5.0.1: + version "5.0.1" + resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-5.0.1.tgz#082cb2c89c9fe8659a311a53bd6a4dc5301db304" + integrity sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ== + ansi-styles@^2.2.1: version "2.2.1" resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-2.2.1.tgz#b432dd3358b634cf75e1e4664368240533c1ddbe" @@ -4176,7 +4176,7 @@ autobind-decorator@^2.1.0: resolved "https://registry.yarnpkg.com/autobind-decorator/-/autobind-decorator-2.4.0.tgz#ea9e1c98708cf3b5b356f7cf9f10f265ff18239c" integrity sha512-OGYhWUO72V6DafbF8PM8rm3EPbfuyMZcJhtm5/n26IDwO18pohE4eNazLoCGhPiXOCD0gEGmrbU3849QvM8bbw== -autoprefixer@9.7.6, autoprefixer@^9.7.6: +autoprefixer@9.7.6: version "9.7.6" resolved "https://registry.yarnpkg.com/autoprefixer/-/autoprefixer-9.7.6.tgz#63ac5bbc0ce7934e6997207d5bb00d68fa8293a4" integrity sha512-F7cYpbN7uVVhACZTeeIeealwdGM6wMtfWARVLTy5xmKtgVdBNJvbDRoCK3YO1orcs7gv/KwYlb3iXwu9Ug9BkQ== @@ -4696,6 +4696,11 @@ balanced-match@^1.0.0: resolved "https://registry.yarnpkg.com/balanced-match/-/balanced-match-1.0.0.tgz#89b4d199ab2bee49de164ea02b89ce462d71b767" integrity sha1-ibTRmasr7kneFk6gK4nORi1xt2c= +balanced-match@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/balanced-match/-/balanced-match-2.0.0.tgz#dc70f920d78db8b858535795867bf48f820633d9" + integrity sha512-1ugUSr8BHXRnK23KfuYS+gVMC3LB8QGH9W1iGtDPsNWoQbgtXSExkBu2aDR4epiGWZOjZsj6lDl/N/AqqTC3UA== + base64-js@^1.0.2: version "1.3.1" resolved "https://registry.yarnpkg.com/base64-js/-/base64-js-1.3.1.tgz#58ece8cb75dd07e71ed08c736abc5fac4dbf8df1" @@ -5370,11 +5375,6 @@ change-emitter@^0.1.2: resolved "https://registry.yarnpkg.com/change-emitter/-/change-emitter-0.1.6.tgz#e8b2fe3d7f1ab7d69a32199aff91ea6931409515" integrity sha1-6LL+PX8at9aaMhma/5HqaTFAlRU= -character-entities-html4@^1.0.0: - version "1.1.3" - resolved "https://registry.yarnpkg.com/character-entities-html4/-/character-entities-html4-1.1.3.tgz#5ce6e01618e47048ac22f34f7f39db5c6fd679ef" - integrity sha512-SwnyZ7jQBCRHELk9zf2CN5AnGEc2nA+uKMZLHvcqhpPprjkYhiLn0DywMHgN5ttFZuITMATbh68M6VIVKwJbcg== - character-entities-legacy@^1.0.0: version "1.1.4" resolved "https://registry.yarnpkg.com/character-entities-legacy/-/character-entities-legacy-1.1.4.tgz#94bc1845dce70a5bb9d2ecc748725661293d8fc1" @@ -6100,6 +6100,17 @@ cosmiconfig@^6.0.0: path-type "^4.0.0" yaml "^1.7.2" +cosmiconfig@^7.0.1: + version "7.0.1" + resolved "https://registry.yarnpkg.com/cosmiconfig/-/cosmiconfig-7.0.1.tgz#714d756522cace867867ccb4474c5d01bbae5d6d" + integrity sha512-a1YWNUV2HwGimB7dU2s1wUMurNKjpx60HxBB6xUM8Re+2s1g1IIfJvFR0/iCF+XHdE0GMTKTuLR32UQff4TEyQ== + dependencies: + "@types/parse-json" "^4.0.0" + import-fresh "^3.2.1" + parse-json "^5.0.0" + path-type "^4.0.0" + yaml "^1.10.0" + coveralls@3.0.2: version "3.0.2" resolved "https://registry.yarnpkg.com/coveralls/-/coveralls-3.0.2.tgz#f5a0bcd90ca4e64e088b710fa8dda640aea4884f" @@ -6638,7 +6649,7 @@ debug@4.2.0: dependencies: ms "2.1.2" -debug@4.3.2: +debug@4.3.2, debug@^4.3.2: version "4.3.2" resolved "https://registry.yarnpkg.com/debug/-/debug-4.3.2.tgz#f0a49c18ac8779e31d4a0c6029dfb76873c7428b" integrity sha512-mOp8wKcvj7XxC78zLgw/ZA+6TSgkoE2C/ienthhRD298T7UNwAg9diBpLRxC0mOezLl4B0xV7M0cCO6P/O0Xhw== @@ -8229,6 +8240,17 @@ fast-glob@^3.1.1: micromatch "^4.0.2" picomatch "^2.2.1" +fast-glob@^3.2.7: + version "3.2.7" + resolved "https://registry.yarnpkg.com/fast-glob/-/fast-glob-3.2.7.tgz#fd6cb7a2d7e9aa7a7846111e85a196d6b2f766a1" + integrity sha512-rYGMRwip6lUMvYD3BTScMwT1HtAs2d71SMv66Vrxs0IekGZEjhM0pcMfjQPnknBt2zeCwQMEupiN02ZP4DiT1Q== + dependencies: + "@nodelib/fs.stat" "^2.0.2" + "@nodelib/fs.walk" "^1.2.3" + glob-parent "^5.1.2" + merge2 "^1.3.0" + micromatch "^4.0.4" + fast-json-parse@^1.0.3: version "1.0.3" resolved "https://registry.yarnpkg.com/fast-json-parse/-/fast-json-parse-1.0.3.tgz#43e5c61ee4efa9265633046b770fb682a7577c4d" @@ -8244,6 +8266,11 @@ fast-levenshtein@~2.0.6: resolved "https://registry.yarnpkg.com/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz#3d8a5c66883a16a30ca8643e851f19baa7797917" integrity sha1-PYpcZog6FqMMqGQ+hR8Zuqd5eRc= +fastest-levenshtein@^1.0.12: + version "1.0.12" + resolved "https://registry.yarnpkg.com/fastest-levenshtein/-/fastest-levenshtein-1.0.12.tgz#9990f7d3a88cc5a9ffd1f1745745251700d497e2" + integrity sha512-On2N+BpYJ15xIC974QNVuYGMOlEVt4s0EOI3wwMqOmK1fdDY+FN/zltPV8vosq4ad4c/gJ1KHScUn/6AWIgiow== + fastq@^1.6.0: version "1.6.0" resolved "https://registry.yarnpkg.com/fastq/-/fastq-1.6.0.tgz#4ec8a38f4ac25f21492673adb7eae9cfef47d1c2" @@ -8333,6 +8360,13 @@ file-entry-cache@^5.0.1: dependencies: flat-cache "^2.0.1" +file-entry-cache@^6.0.1: + version "6.0.1" + resolved "https://registry.yarnpkg.com/file-entry-cache/-/file-entry-cache-6.0.1.tgz#211b2dd9659cb0394b073e7323ac3c933d522027" + integrity sha512-7Gps/XWymbLk2QLYK4NzpMOrYjMhdIxXuIvy2QBsLE6ljuodKvdkWs/cpyJJ3CVIVpH0Oi1Hvg1ovbMzLdFBBg== + dependencies: + flat-cache "^3.0.4" + file-loader@^4.3.0: version "4.3.0" resolved "https://registry.yarnpkg.com/file-loader/-/file-loader-4.3.0.tgz#780f040f729b3d18019f20605f723e844b8a58af" @@ -8921,10 +8955,10 @@ get-stdin@^6.0.0: resolved "https://registry.yarnpkg.com/get-stdin/-/get-stdin-6.0.0.tgz#9e09bf712b360ab9225e812048f71fde9c89657b" integrity sha512-jp4tHawyV7+fkkSKyvjuLZswblUtz+SQKzSWnBbii16BuZksJlU1wuBYXY75r+duh/llF1ur6oNwi+2ZzjKZ7g== -get-stdin@^7.0.0: - version "7.0.0" - resolved "https://registry.yarnpkg.com/get-stdin/-/get-stdin-7.0.0.tgz#8d5de98f15171a125c5e516643c7a6d0ea8a96f6" - integrity sha512-zRKcywvrXlXsA0v0i9Io4KDRaAw7+a1ZpjRwl9Wox8PFlVCCHra7E9c4kqXCoCM9nR5tBkaTTZRBoCm60bFqTQ== +get-stdin@^8.0.0: + version "8.0.0" + resolved "https://registry.yarnpkg.com/get-stdin/-/get-stdin-8.0.0.tgz#cbad6a73feb75f6eeb22ba9e01f89aa28aa97a53" + integrity sha512-sY22aA6xchAzprjyqmSEQv4UbAAzRN0L2dQB0NlN5acTTK9Don6nhoc3eAbUnpZiCANAMfd/+40kVdKfFygohg== get-stream@^4.0.0, get-stream@^4.1.0: version "4.1.0" @@ -9011,7 +9045,7 @@ glob-parent@^5.0.0, glob-parent@^5.1.0, glob-parent@~5.1.0: dependencies: is-glob "^4.0.1" -glob-parent@~5.1.2: +glob-parent@^5.1.2, glob-parent@~5.1.2: version "5.1.2" resolved "https://registry.yarnpkg.com/glob-parent/-/glob-parent-5.1.2.tgz#869832c58034fe68a4093c17dc15e8340d8401c4" integrity sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow== @@ -9137,19 +9171,7 @@ globby@8.0.2: pify "^3.0.0" slash "^1.0.0" -globby@^11.0.0: - version "11.0.0" - resolved "https://registry.yarnpkg.com/globby/-/globby-11.0.0.tgz#56fd0e9f0d4f8fb0c456f1ab0dee96e1380bc154" - integrity sha512-iuehFnR3xu5wBBtm4xi0dMe92Ob87ufyu/dHwpDYfbcpYpIbrO5OnS8M1vWvrBhSGEJ3/Ecj7gnX76P8YxpPEg== - dependencies: - array-union "^2.1.0" - dir-glob "^3.0.1" - fast-glob "^3.1.1" - ignore "^5.1.4" - merge2 "^1.3.0" - slash "^3.0.0" - -globby@^11.0.2: +globby@^11.0.2, globby@^11.0.4: version "11.0.4" resolved "https://registry.yarnpkg.com/globby/-/globby-11.0.4.tgz#2cbaff77c2f2a62e71e9b2813a67b97a3a3001a5" integrity sha512-9O4MVG9ioZJ08ffbcyVYyLOJLk5JQ688pJ4eMGLpdWLHq/Wr1D9BlriLQyL0E+jbkuePVZXYFj47QM/v093wHg== @@ -9203,13 +9225,6 @@ globjoin@^0.1.4: resolved "https://registry.yarnpkg.com/globjoin/-/globjoin-0.1.4.tgz#2f4494ac8919e3767c5cbb691e9f463324285d43" integrity sha1-L0SUrIkZ43Z8XLtpHp9GMyQoXUM= -gonzales-pe@^4.3.0: - version "4.3.0" - resolved "https://registry.yarnpkg.com/gonzales-pe/-/gonzales-pe-4.3.0.tgz#fe9dec5f3c557eead09ff868c65826be54d067b3" - integrity sha512-otgSPpUmdWJ43VXyiNgEYE4luzHCL2pz4wQ0OnDluC6Eg4Ko3Vexy/SrSynglw/eR+OhkzmqFCZa/OFa/RgAOQ== - dependencies: - minimist "^1.2.5" - good-listener@^1.2.2: version "1.2.2" resolved "https://registry.yarnpkg.com/good-listener/-/good-listener-1.2.2.tgz#d53b30cdf9313dffb7dc9a0d477096aa6d145c50" @@ -9564,6 +9579,13 @@ hosted-git-info@^2.1.4: resolved "https://registry.yarnpkg.com/hosted-git-info/-/hosted-git-info-2.8.9.tgz#dffc0bf9a21c02209090f2aa69429e1414daf3f9" integrity sha512-mxIDAb9Lsm6DoOJ7xH+5+X4y1LU/4Hi50L9C5sIswK3JzULS4bwk1FvjdBgvYR4bzT4tuUQiC15FE2f5HbLvYw== +hosted-git-info@^4.0.1: + version "4.0.2" + resolved "https://registry.yarnpkg.com/hosted-git-info/-/hosted-git-info-4.0.2.tgz#5e425507eede4fea846b7262f0838456c4209961" + integrity sha512-c9OGXbZ3guC/xOlCg1Ci/VgWlwsqDv1yMQL1CWqXDL0hDjXuNcq0zuR4xqPSuasI3kqFDhqSyTjREz5gzq0fXg== + dependencies: + lru-cache "^6.0.0" + hpack.js@^2.1.6: version "2.1.6" resolved "https://registry.yarnpkg.com/hpack.js/-/hpack.js-2.1.6.tgz#87774c0949e513f42e84575b3c45681fade2a0b2" @@ -9666,7 +9688,7 @@ html-webpack-plugin@^4.0.4: tapable "^1.1.3" util.promisify "1.0.0" -htmlparser2@^3.10.0, htmlparser2@^3.3.0: +htmlparser2@^3.3.0: version "3.10.1" resolved "https://registry.yarnpkg.com/htmlparser2/-/htmlparser2-3.10.1.tgz#bd679dc3f59897b6a34bb10749c855bb53a9392f" integrity sha512-IgieNijUMbkDovyoKObU1DUhm1iwNYE/fuifEoEHfd1oZKZDaONBSkal7Y01shxsM49R4XaMdGez3WnF9UfiCQ== @@ -9860,6 +9882,11 @@ ignore@^5.1.4: resolved "https://registry.yarnpkg.com/ignore/-/ignore-5.1.4.tgz#84b7b3dbe64552b6ef0eca99f6743dbec6d97adf" integrity sha512-MzbUSahkTW1u7JpKKjY7LCARd1fU5W2rLdxlM4kdkayuCwZImjkpluF9CM1aLewYJguPDqewLam18Y6AU69A8A== +ignore@^5.1.8: + version "5.1.9" + resolved "https://registry.yarnpkg.com/ignore/-/ignore-5.1.9.tgz#9ec1a5cbe8e1446ec60d4420060d43aa6e7382fb" + integrity sha512-2zeMQpbKz5dhZ9IwL0gbxSW5w0NK/MSAMtNuhgIHEPmaU3vPdKPL0UdvUCXs5SS4JAwsBxysK5sFMW8ocFiVjQ== + image-size@~0.5.0: version "0.5.5" resolved "https://registry.yarnpkg.com/image-size/-/image-size-0.5.5.tgz#09dfd4ab9d20e29eb1c3e80b8990378df9e3cb9c" @@ -10175,11 +10202,6 @@ is-alphabetical@1.0.4, is-alphabetical@^1.0.0: resolved "https://registry.yarnpkg.com/is-alphabetical/-/is-alphabetical-1.0.4.tgz#9e7d6b94916be22153745d184c298cbf986a686d" integrity sha512-DwzsA04LQ10FHTZuL0/grVDk4rFoVH1pjAToYwBrHSxcrBIGQuXrQMtD5U1b0U2XVgKZCTLLP8u2Qxqhy3l2Vg== -is-alphanumeric@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/is-alphanumeric/-/is-alphanumeric-1.0.0.tgz#4a9cef71daf4c001c1d81d63d140cf53fd6889f4" - integrity sha1-Spzvcdr0wAHB2B1j0UDPU/1oifQ= - is-alphanumerical@^1.0.0: version "1.0.4" resolved "https://registry.yarnpkg.com/is-alphanumerical/-/is-alphanumerical-1.0.4.tgz#7eb9a2431f855f6b1ef1a78e326df515696c4dbf" @@ -10277,6 +10299,13 @@ is-core-module@^2.2.0: dependencies: has "^1.0.3" +is-core-module@^2.5.0: + version "2.8.0" + resolved "https://registry.yarnpkg.com/is-core-module/-/is-core-module-2.8.0.tgz#0321336c3d0925e497fd97f5d95cb114a5ccd548" + integrity sha512-vd15qHsaqrRL7dtH6QNuy0ndJmRDrS9HAM1CAiSifNUFv4x1a0CCVsj18hJ1mShxIG6T2i1sO78MkP56r0nYRw== + dependencies: + has "^1.0.3" + is-data-descriptor@^0.1.4: version "0.1.4" resolved "https://registry.yarnpkg.com/is-data-descriptor/-/is-data-descriptor-0.1.4.tgz#0b5ee648388e2c860282e793f1856fec3f301b56" @@ -10296,7 +10325,7 @@ is-date-object@^1.0.1: resolved "https://registry.yarnpkg.com/is-date-object/-/is-date-object-1.0.2.tgz#bda736f2cd8fd06d32844e7743bfa7494c3bfd7e" integrity sha512-USlDT524woQ08aoZFzh3/Z6ch9Y/EWXEHQ/AaRN0SkKq4t2Jw2R2339tSXmwuVoY7LLlBCbOIlx2myP/L5zk0g== -is-decimal@^1.0.0, is-decimal@^1.0.2: +is-decimal@^1.0.0: version "1.0.4" resolved "https://registry.yarnpkg.com/is-decimal/-/is-decimal-1.0.4.tgz#65a3a5958a1c5b63a706e1b333d7cd9f630d3fa5" integrity sha512-RGdriMmQQvZ2aqaQq3awNA6dCGtKpiDFcOzrTWrDAT2MiWrKQVPmxLGHl7Y2nNu6led0kEyoX0enY0qXYsv9zw== @@ -10581,6 +10610,11 @@ is-plain-object@^3.0.0: dependencies: isobject "^4.0.0" +is-plain-object@^5.0.0: + version "5.0.0" + resolved "https://registry.yarnpkg.com/is-plain-object/-/is-plain-object-5.0.0.tgz#4427f50ab3429e9025ea7d52e9043a9ef4159344" + integrity sha512-VRSzKkbMm5jMDoKLbltAkFQ5Qr7VDiTFGXxYFXXowVj387GeGNOCsOH6Msy00SGZ3Fp84b1Naa1psqgcCIEP5Q== + is-posix-bracket@^0.1.0: version "0.1.1" resolved "https://registry.yarnpkg.com/is-posix-bracket/-/is-posix-bracket-0.1.1.tgz#3334dc79774368e92f016e6fbc0a88f5cd6e6bc4" @@ -11500,6 +11534,11 @@ json-schema-traverse@^0.4.1: resolved "https://registry.yarnpkg.com/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz#69f6a87d9513ab8bb8fe63bdb0979c448e684660" integrity sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg== +json-schema-traverse@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz#ae7bcb3656ab77a73ba5c49bf654f38e6b6860e2" + integrity sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug== + json-schema@0.2.3: version "0.2.3" resolved "https://registry.yarnpkg.com/json-schema/-/json-schema-0.2.3.tgz#b480c892e59a2f05954ce727bd3f2a4e882f9e13" @@ -11689,7 +11728,7 @@ kind-of@^5.0.0: resolved "https://registry.yarnpkg.com/kind-of/-/kind-of-5.1.0.tgz#729c91e2d857b7a419a1f9aa65685c4c33f5845d" integrity sha512-NGEErnH6F2vUuXDh+OlbcKW7/wOcfdRHaZ7VWtqCztfHri/++YKmP51OdWeGPuqCOba6kk2OTe5d02VmTB80Pw== -kind-of@^6.0.0, kind-of@^6.0.2: +kind-of@^6.0.0, kind-of@^6.0.2, kind-of@^6.0.3: version "6.0.3" resolved "https://registry.yarnpkg.com/kind-of/-/kind-of-6.0.3.tgz#07c05034a6c349fa06e24fa35aa76db4580ce4dd" integrity sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw== @@ -11711,10 +11750,10 @@ klona@^2.0.4: resolved "https://registry.yarnpkg.com/klona/-/klona-2.0.4.tgz#7bb1e3affb0cb8624547ef7e8f6708ea2e39dfc0" integrity sha512-ZRbnvdg/NxqzC7L9Uyqzf4psi1OM4Cuc+sJAkQPjO6XkQIJTNbfK2Rsmbw8fx1p2mkZdp2FZYo2+LwXYY/uwIA== -known-css-properties@^0.18.0: - version "0.18.0" - resolved "https://registry.yarnpkg.com/known-css-properties/-/known-css-properties-0.18.0.tgz#d6e00b56ee1d5b0d171fd86df1583cfb012c521f" - integrity sha512-69AgJ1rQa7VvUsd2kpvVq+VeObDuo3zrj0CzM5Slmf6yduQFAI2kXPDQJR2IE/u6MSAUOJrwSzjg5vlz8qcMiw== +known-css-properties@^0.23.0: + version "0.23.0" + resolved "https://registry.yarnpkg.com/known-css-properties/-/known-css-properties-0.23.0.tgz#e643e1bab2b1f8ba292eea9557121cc02e9846a0" + integrity sha512-h9ivI88e1lFNmTT4HovBN33Ysn0OIJG7IPG2mkpx2uniQXFWqo35QdiX7w0TovlUFXfW8aPFblP5/q0jlOr2sA== last-call-webpack-plugin@^3.0.0: version "3.0.0" @@ -12110,6 +12149,11 @@ lodash.throttle@^4.1.1: resolved "https://registry.yarnpkg.com/lodash.throttle/-/lodash.throttle-4.1.1.tgz#c23e91b710242ac70c37f1e1cda9274cc39bf2f4" integrity sha1-wj6RtxAkKscMN/HhzaknTMOb8vQ= +lodash.truncate@^4.4.2: + version "4.4.2" + resolved "https://registry.yarnpkg.com/lodash.truncate/-/lodash.truncate-4.4.2.tgz#5a350da0b1113b837ecfffd5812cbe58d6eae193" + integrity sha1-WjUNoLERO4N+z//VgSy+WNbq4ZM= + lodash.uniq@4.5.0, lodash.uniq@^4.5.0: version "4.5.0" resolved "https://registry.yarnpkg.com/lodash.uniq/-/lodash.uniq-4.5.0.tgz#d0225373aeb652adc1bc82e4945339a842754773" @@ -12142,13 +12186,6 @@ log-symbols@^1.0.2: dependencies: chalk "^1.0.0" -log-symbols@^2.2.0: - version "2.2.0" - resolved "https://registry.yarnpkg.com/log-symbols/-/log-symbols-2.2.0.tgz#5740e1c5d6f0dfda4ad9323b5332107ef6b4c40a" - integrity sha512-VeIAFslyIerEJLXHziedo2basKbMKtTw3vfn5IzG0XTjhAVEJyNHnL2p7vc+wBDSdQuUpNw3M2u6xb9QsAY5Eg== - dependencies: - chalk "^2.0.1" - log-symbols@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/log-symbols/-/log-symbols-3.0.0.tgz#f3a08516a5dea893336a7dee14d18a1cfdab77c4" @@ -12194,11 +12231,6 @@ lolex@^5.0.0: dependencies: "@sinonjs/commons" "^1.7.0" -longest-streak@^2.0.1: - version "2.0.3" - resolved "https://registry.yarnpkg.com/longest-streak/-/longest-streak-2.0.3.tgz#3de7a3f47ee18e9074ded8575b5c091f5d0a4105" - integrity sha512-9lz5IVdpwsKLMzQi0MQ+oD9EA0mIGcWYP7jXMTZVXP8D42PwuAk+M/HBFYQoxt1G5OR8m7aSIgb1UymfWGBWEw== - loose-envify@^1.0.0, loose-envify@^1.1.0, loose-envify@^1.2.0, loose-envify@^1.3.1, loose-envify@^1.4.0: version "1.4.0" resolved "https://registry.yarnpkg.com/loose-envify/-/loose-envify-1.4.0.tgz#71ee51fa7be4caec1a63839f7e682d8132d30caf" @@ -12346,13 +12378,6 @@ markdown-escapes@^1.0.0: resolved "https://registry.yarnpkg.com/markdown-escapes/-/markdown-escapes-1.0.3.tgz#6155e10416efaafab665d466ce598216375195f5" integrity sha512-XUi5HJhhV5R74k8/0H2oCbCiYf/u4cO/rX8tnGkRvrqhsr5BRNU6Mg0yt/8UIx1iIS8220BNJsDb7XnILhLepw== -markdown-table@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/markdown-table/-/markdown-table-2.0.0.tgz#194a90ced26d31fe753d8b9434430214c011865b" - integrity sha512-Ezda85ToJUBhM6WGaG6veasyym+Tbs3cMAw/ZhOPqXiYsr0jgocBV3j3nx+4lk47plLlIqjwuTm/ywVI+zjJ/A== - dependencies: - repeat-string "^1.0.0" - markdown-to-jsx@^6.11.4: version "6.11.4" resolved "https://registry.yarnpkg.com/markdown-to-jsx/-/markdown-to-jsx-6.11.4.tgz#b4528b1ab668aef7fe61c1535c27e837819392c5" @@ -12392,13 +12417,6 @@ mdast-squeeze-paragraphs@^4.0.0: dependencies: unist-util-remove "^2.0.0" -mdast-util-compact@^2.0.0: - version "2.0.1" - resolved "https://registry.yarnpkg.com/mdast-util-compact/-/mdast-util-compact-2.0.1.tgz#cabc69a2f43103628326f35b1acf735d55c99490" - integrity sha512-7GlnT24gEwDrdAwEHrU4Vv5lLWrEer4KOkAiKT9nYstsTad7Oc1TwqT2zIMKRdZF7cTuaf+GA1E4Kv7jJh8mPA== - dependencies: - unist-util-visit "^2.0.0" - mdast-util-definitions@^4.0.0: version "4.0.0" resolved "https://registry.yarnpkg.com/mdast-util-definitions/-/mdast-util-definitions-4.0.0.tgz#c5c1a84db799173b4dcf7643cda999e440c24db2" @@ -12498,22 +12516,23 @@ memory-fs@^0.5.0: errno "^0.1.3" readable-stream "^2.0.1" -meow@^6.1.0: - version "6.1.1" - resolved "https://registry.yarnpkg.com/meow/-/meow-6.1.1.tgz#1ad64c4b76b2a24dfb2f635fddcadf320d251467" - integrity sha512-3YffViIt2QWgTy6Pale5QpopX/IvU3LPL03jOTqp6pGj3VjesdO/U8CuHMKpnQr4shCNCM5fd5XFFvIIl6JBHg== +meow@^9.0.0: + version "9.0.0" + resolved "https://registry.yarnpkg.com/meow/-/meow-9.0.0.tgz#cd9510bc5cac9dee7d03c73ee1f9ad959f4ea364" + integrity sha512-+obSblOQmRhcyBt62furQqRAQpNyWXo8BuQ5bN7dG8wmwQ+vwHKp/rCFD4CrTP8CsDQD1sjoZ94K417XEUk8IQ== dependencies: "@types/minimist" "^1.2.0" camelcase-keys "^6.2.2" + decamelize "^1.2.0" decamelize-keys "^1.1.0" hard-rejection "^2.1.0" - minimist-options "^4.0.2" - normalize-package-data "^2.5.0" + minimist-options "4.1.0" + normalize-package-data "^3.0.0" read-pkg-up "^7.0.1" redent "^3.0.0" trim-newlines "^3.0.0" - type-fest "^0.13.1" - yargs-parser "^18.1.3" + type-fest "^0.18.0" + yargs-parser "^20.2.3" merge-descriptors@1.0.1: version "1.0.1" @@ -12591,6 +12610,14 @@ micromatch@^4.0.2: braces "^3.0.1" picomatch "^2.0.5" +micromatch@^4.0.4: + version "4.0.4" + resolved "https://registry.yarnpkg.com/micromatch/-/micromatch-4.0.4.tgz#896d519dfe9db25fce94ceb7a500919bf881ebf9" + integrity sha512-pRmzw/XUcwXGpD9aI9q/0XOwLNygjETJ8y0ao0wdqprrzDa4YnxLcz7fQRZr8voh8V10kGhABbNcHVk5wHgWwg== + dependencies: + braces "^3.0.1" + picomatch "^2.2.3" + miller-rabin@^4.0.0: version "4.0.1" resolved "https://registry.yarnpkg.com/miller-rabin/-/miller-rabin-4.0.1.tgz#f080351c865b0dc562a8462966daa53543c78a4d" @@ -12688,13 +12715,14 @@ minimatch@3.0.4, minimatch@^3.0.2, minimatch@^3.0.4: dependencies: brace-expansion "^1.1.7" -minimist-options@^4.0.2: - version "4.0.2" - resolved "https://registry.yarnpkg.com/minimist-options/-/minimist-options-4.0.2.tgz#29c4021373ded40d546186725e57761e4b1984a7" - integrity sha512-seq4hpWkYSUh1y7NXxzucwAN9yVlBc3Upgdjz8vLCP97jG8kaOmzYrVH/m7tQ1NYD1wdtZbSLfdy4zFmRWuc/w== +minimist-options@4.1.0: + version "4.1.0" + resolved "https://registry.yarnpkg.com/minimist-options/-/minimist-options-4.1.0.tgz#c0655713c53a8a2ebd77ffa247d342c40f010619" + integrity sha512-Q4r8ghd80yhO/0j1O3B2BjweX3fiHg9cdOwjJd2J76Q135c+NDxGCqdYKQ1SKBuFfgWbAUzBfvYjPUEeNgqN1A== dependencies: arrify "^1.0.1" is-plain-obj "^1.1.0" + kind-of "^6.0.3" minimist@^1.1.1, minimist@^1.2.0, minimist@^1.2.5: version "1.2.5" @@ -12856,6 +12884,11 @@ nan@^2.12.1: resolved "https://registry.yarnpkg.com/nan/-/nan-2.14.1.tgz#d7be34dfa3105b91494c3147089315eff8874b01" integrity sha512-isWHgVjnFjh2x2yuJ/tj3JbwoHu3UC2dX5G/88Cm24yB6YopVgxvBObDY7n5xW6ExmFhJpSEQqFPvq9zaXc8Jw== +nanoid@^3.1.30: + version "3.1.30" + resolved "https://registry.yarnpkg.com/nanoid/-/nanoid-3.1.30.tgz#63f93cc548d2a113dc5dfbc63bfa09e2b9b64362" + integrity sha512-zJpuPDwOv8D2zq2WRoMe1HsfZthVewpel9CAvTfc/2mBD1uUT/agc5f7GHGWXlYkFvi1mVxe4IjvP2HNrop7nQ== + nanomatch@^1.2.9: version "1.2.13" resolved "https://registry.yarnpkg.com/nanomatch/-/nanomatch-1.2.13.tgz#b87a8aa4fc0de8fe6be88895b38983ff265bd119" @@ -13018,6 +13051,16 @@ normalize-package-data@^2.3.2, normalize-package-data@^2.5.0: semver "2 || 3 || 4 || 5" validate-npm-package-license "^3.0.1" +normalize-package-data@^3.0.0: + version "3.0.3" + resolved "https://registry.yarnpkg.com/normalize-package-data/-/normalize-package-data-3.0.3.tgz#dbcc3e2da59509a0983422884cd172eefdfa525e" + integrity sha512-p2W1sgqij3zMMyRC067Dg16bfzVH+w7hyegmpIvZ4JNjqtGOVAIvLmjBx3yP7YTe9vKJgkoNOPjwQGogDoMXFA== + dependencies: + hosted-git-info "^4.0.1" + is-core-module "^2.5.0" + semver "^7.3.4" + validate-npm-package-license "^3.0.1" + normalize-path@^2.0.1, normalize-path@^2.1.1: version "2.1.1" resolved "https://registry.yarnpkg.com/normalize-path/-/normalize-path-2.1.1.tgz#1ab28b556e198363a8c1a6f7e6fa20137fe6aed9" @@ -13894,11 +13937,21 @@ performance-now@^2.1.0: resolved "https://registry.yarnpkg.com/performance-now/-/performance-now-2.1.0.tgz#6309f4e0e5fa913ec1c69307ae364b4b377c9e7b" integrity sha1-Ywn04OX6kT7BxpMHrjZLSzd8nns= +picocolors@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/picocolors/-/picocolors-1.0.0.tgz#cb5bdc74ff3f51892236eaf79d68bc44564ab81c" + integrity sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ== + picomatch@^2.0.4, picomatch@^2.0.5, picomatch@^2.2.1: version "2.2.2" resolved "https://registry.yarnpkg.com/picomatch/-/picomatch-2.2.2.tgz#21f333e9b6b8eaff02468f5146ea406d345f4dad" integrity sha512-q0M/9eZHzmr0AulXyPwNfZjtwZ/RBZlbN3K3CErVrk50T2ASYI7Bye0EvekFY3IP1Nt2DHu0re+V2ZHIpMkuWg== +picomatch@^2.2.3: + version "2.3.0" + resolved "https://registry.yarnpkg.com/picomatch/-/picomatch-2.3.0.tgz#f1f061de8f6a4bf022892e2d128234fb98302972" + integrity sha512-lY1Q/PiJGC2zOv/z391WOTD+Z02bCgsFfvxoXXf6h7kv9o+WmsmzYqrAwY63sNgOxE4xEdq0WyUnXfKeBrSvYw== + pify@^2.0.0, pify@^2.2.0: version "2.3.0" resolved "https://registry.yarnpkg.com/pify/-/pify-2.3.0.tgz#ed141a6ac043a849ea588498e7dca8b15330e90c" @@ -14206,13 +14259,6 @@ postcss-gap-properties@^2.0.0: dependencies: postcss "^7.0.2" -postcss-html@^0.36.0: - version "0.36.0" - resolved "https://registry.yarnpkg.com/postcss-html/-/postcss-html-0.36.0.tgz#b40913f94eaacc2453fd30a1327ad6ee1f88b204" - integrity sha512-HeiOxGcuwID0AFsNAL0ox3mW6MHH5cstWN1Z3Y+n6H+g12ih7LHdYxWwEA/QmrebctLjo79xz9ouK3MroHwOJw== - dependencies: - htmlparser2 "^3.10.0" - postcss-image-set-function@^3.0.1: version "3.0.1" resolved "https://registry.yarnpkg.com/postcss-image-set-function/-/postcss-image-set-function-3.0.1.tgz#28920a2f29945bed4c3198d7df6496d410d3f288" @@ -14238,12 +14284,10 @@ postcss-lab-function@^2.0.1: postcss "^7.0.2" postcss-values-parser "^2.0.0" -postcss-less@^3.1.4: - version "3.1.4" - resolved "https://registry.yarnpkg.com/postcss-less/-/postcss-less-3.1.4.tgz#369f58642b5928ef898ffbc1a6e93c958304c5ad" - integrity sha512-7TvleQWNM2QLcHqvudt3VYjULVB49uiW6XzEUFmvwHzvsOEF5MwBrIXZDJQvJNFGjJQTzSzZnDoCJ8h/ljyGXA== - dependencies: - postcss "^7.0.14" +postcss-less@5.0.0: + version "5.0.0" + resolved "https://registry.yarnpkg.com/postcss-less/-/postcss-less-5.0.0.tgz#3fa361ed8e52a9c3e6e4fdb9bb95fd9032f3c62b" + integrity sha512-djK6NlApALJeBnNx7CzLatq64eMF3BCyzBH+faYPxrvNHHM/YCimJ6XQkgWgtim2G89EzdQG4Ed0lGNCXPfD7A== postcss-load-config@^2.0.0: version "2.1.0" @@ -14592,16 +14636,6 @@ postcss-replace-overflow-wrap@^3.0.0: dependencies: postcss "^7.0.2" -postcss-reporter@^6.0.1: - version "6.0.1" - resolved "https://registry.yarnpkg.com/postcss-reporter/-/postcss-reporter-6.0.1.tgz#7c055120060a97c8837b4e48215661aafb74245f" - integrity sha512-LpmQjfRWyabc+fRygxZjpRxfhRf9u/fdlKf4VHG4TSPbV2XNsuISzYW1KL+1aQzx53CAppa1bKG4APIB/DOXXw== - dependencies: - chalk "^2.4.1" - lodash "^4.17.11" - log-symbols "^2.2.0" - postcss "^7.0.7" - postcss-resolve-nested-selector@^0.1.1: version "0.1.1" resolved "https://registry.yarnpkg.com/postcss-resolve-nested-selector/-/postcss-resolve-nested-selector-0.1.1.tgz#29ccbc7c37dedfac304e9fff0bf1596b3f6a0e4e" @@ -14614,20 +14648,10 @@ postcss-safe-parser@^4.0.2: dependencies: postcss "^7.0.26" -postcss-sass@^0.4.4: - version "0.4.4" - resolved "https://registry.yarnpkg.com/postcss-sass/-/postcss-sass-0.4.4.tgz#91f0f3447b45ce373227a98b61f8d8f0785285a3" - integrity sha512-BYxnVYx4mQooOhr+zer0qWbSPYnarAy8ZT7hAQtbxtgVf8gy+LSLT/hHGe35h14/pZDTw1DsxdbrwxBN++H+fg== - dependencies: - gonzales-pe "^4.3.0" - postcss "^7.0.21" - -postcss-scss@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/postcss-scss/-/postcss-scss-2.0.0.tgz#248b0a28af77ea7b32b1011aba0f738bda27dea1" - integrity sha512-um9zdGKaDZirMm+kZFKKVsnKPF7zF7qBAtIfTSnZXD1jZ0JNZIxdB6TxQOjCnlSzLRInVl2v3YdBh/M881C4ug== - dependencies: - postcss "^7.0.0" +postcss-safe-parser@^6.0.0: + version "6.0.0" + resolved "https://registry.yarnpkg.com/postcss-safe-parser/-/postcss-safe-parser-6.0.0.tgz#bb4c29894171a94bc5c996b9a30317ef402adaa1" + integrity sha512-FARHN8pwH+WiS2OPCxJI8FuRJpTVnn6ZNFiqAM2aeW2LwTHWWmWgIyKC6cUo0L8aeKiF/14MNvnpls6R2PBeMQ== postcss-selector-matches@^4.0.0: version "4.0.0" @@ -14672,6 +14696,14 @@ postcss-selector-parser@^6.0.0, postcss-selector-parser@^6.0.2: indexes-of "^1.0.1" uniq "^1.0.1" +postcss-selector-parser@^6.0.6: + version "6.0.6" + resolved "https://registry.yarnpkg.com/postcss-selector-parser/-/postcss-selector-parser-6.0.6.tgz#2c5bba8174ac2f6981ab631a42ab0ee54af332ea" + integrity sha512-9LXrvaaX3+mcv5xkg5kFwqSzSH1JIObIx51PrndZwlmznwXRfxMddDvo9gve3gVR8ZTKgoFDdWkbRFmEhT4PMg== + dependencies: + cssesc "^3.0.0" + util-deprecate "^1.0.2" + postcss-sorting@^5.0.1: version "5.0.1" resolved "https://registry.yarnpkg.com/postcss-sorting/-/postcss-sorting-5.0.1.tgz#10d5d0059eea8334dacc820c0121864035bc3f11" @@ -14690,11 +14722,6 @@ postcss-svgo@^4.0.2: postcss-value-parser "^3.0.0" svgo "^1.0.0" -postcss-syntax@^0.36.2: - version "0.36.2" - resolved "https://registry.yarnpkg.com/postcss-syntax/-/postcss-syntax-0.36.2.tgz#f08578c7d95834574e5593a82dfbfa8afae3b51c" - integrity sha512-nBRg/i7E3SOHWxF3PpF5WnJM/jQ1YpY9000OaVXlAQj6Zp/kIqJxEDWIZ67tAd7NLuk7zqN4yqe9nc0oNAOs1w== - postcss-unique-selectors@^4.0.1: version "4.0.1" resolved "https://registry.yarnpkg.com/postcss-unique-selectors/-/postcss-unique-selectors-4.0.1.tgz#9446911f3289bfd64c6d680f073c03b1f9ee4bac" @@ -14723,7 +14750,16 @@ postcss-values-parser@^2.0.0, postcss-values-parser@^2.0.1: indexes-of "^1.0.1" uniq "^1.0.1" -postcss@^7.0.0, postcss@^7.0.1, postcss@^7.0.14, postcss@^7.0.16, postcss@^7.0.17, postcss@^7.0.2, postcss@^7.0.21, postcss@^7.0.26, postcss@^7.0.27, postcss@^7.0.32, postcss@^7.0.36, postcss@^7.0.5, postcss@^7.0.6, postcss@^7.0.7: +postcss@8.3.11, postcss@^8.3.11: + version "8.3.11" + resolved "https://registry.yarnpkg.com/postcss/-/postcss-8.3.11.tgz#c3beca7ea811cd5e1c4a3ec6d2e7599ef1f8f858" + integrity sha512-hCmlUAIlUiav8Xdqw3Io4LcpA1DOt7h3LSTAC4G6JGHFFaWzI6qvFt9oilvl8BmkbBRX1IhM90ZAmpk68zccQA== + dependencies: + nanoid "^3.1.30" + picocolors "^1.0.0" + source-map-js "^0.6.2" + +postcss@^7.0.0, postcss@^7.0.1, postcss@^7.0.14, postcss@^7.0.16, postcss@^7.0.17, postcss@^7.0.2, postcss@^7.0.26, postcss@^7.0.27, postcss@^7.0.32, postcss@^7.0.36, postcss@^7.0.5, postcss@^7.0.6: version "7.0.36" resolved "https://registry.yarnpkg.com/postcss/-/postcss-7.0.36.tgz#056f8cffa939662a8f5905950c07d5285644dfcb" integrity sha512-BebJSIUMwJHRH0HAQoxN4u1CN86glsrwsW0q7T+/m44eXOUAxSNdHRkNZPYz5vVUbg17hFgOQDE7fZk7li3pZw== @@ -16366,28 +16402,6 @@ remark-parse@8.0.3: vfile-location "^3.0.0" xtend "^4.0.1" -remark-parse@^8.0.0: - version "8.0.2" - resolved "https://registry.yarnpkg.com/remark-parse/-/remark-parse-8.0.2.tgz#5999bc0b9c2e3edc038800a64ff103d0890b318b" - integrity sha512-eMI6kMRjsAGpMXXBAywJwiwAse+KNpmt+BK55Oofy4KvBZEqUDj6mWbGLJZrujoPIPPxDXzn3T9baRlpsm2jnQ== - dependencies: - ccount "^1.0.0" - collapse-white-space "^1.0.2" - is-alphabetical "^1.0.0" - is-decimal "^1.0.0" - is-whitespace-character "^1.0.0" - is-word-character "^1.0.0" - markdown-escapes "^1.0.0" - parse-entities "^2.0.0" - repeat-string "^1.5.4" - state-toggle "^1.0.0" - trim "0.0.1" - trim-trailing-lines "^1.0.0" - unherit "^1.0.4" - unist-util-remove-position "^2.0.0" - vfile-location "^3.0.0" - xtend "^4.0.1" - remark-slug@^6.0.0: version "6.0.0" resolved "https://registry.yarnpkg.com/remark-slug/-/remark-slug-6.0.0.tgz#2b54a14a7b50407a5e462ac2f376022cce263e2c" @@ -16404,35 +16418,6 @@ remark-squeeze-paragraphs@4.0.0: dependencies: mdast-squeeze-paragraphs "^4.0.0" -remark-stringify@^8.0.0: - version "8.0.0" - resolved "https://registry.yarnpkg.com/remark-stringify/-/remark-stringify-8.0.0.tgz#33423ab8bf3076fb197f4cf582aaaf866b531625" - integrity sha512-cABVYVloFH+2ZI5bdqzoOmemcz/ZuhQSH6W6ZNYnLojAUUn3xtX7u+6BpnYp35qHoGr2NFBsERV14t4vCIeW8w== - dependencies: - ccount "^1.0.0" - is-alphanumeric "^1.0.0" - is-decimal "^1.0.0" - is-whitespace-character "^1.0.0" - longest-streak "^2.0.1" - markdown-escapes "^1.0.0" - markdown-table "^2.0.0" - mdast-util-compact "^2.0.0" - parse-entities "^2.0.0" - repeat-string "^1.5.4" - state-toggle "^1.0.0" - stringify-entities "^3.0.0" - unherit "^1.0.4" - xtend "^4.0.1" - -remark@^12.0.0: - version "12.0.0" - resolved "https://registry.yarnpkg.com/remark/-/remark-12.0.0.tgz#d1c145c07341c9232f93b2f8539d56da15a2548c" - integrity sha512-oX4lMIS0csgk8AEbzY0h2jdR0ngiCHOpwwpxjmRa5TqAkeknY+tkhjRJGZqnCmvyuWh55/0SW5WY3R3nn3PH9A== - dependencies: - remark-parse "^8.0.0" - remark-stringify "^8.0.0" - unified "^9.0.0" - remove-trailing-separator@^1.0.1: version "1.1.0" resolved "https://registry.yarnpkg.com/remove-trailing-separator/-/remove-trailing-separator-1.1.0.tgz#c24bce2a283adad5bc3f58e0d48249b92379d8ef" @@ -16454,7 +16439,7 @@ repeat-element@^1.1.2: resolved "https://registry.yarnpkg.com/repeat-element/-/repeat-element-1.1.3.tgz#782e0d825c0c5a3bb39731f84efee6b742e6b1ce" integrity sha512-ahGq0ZnV5m5XtZLMb+vP76kcAM5nkLqk0lpqAuojSKGgQtn4eRi4ZZGm2olo2zKFH+sMsWaqOCW1dqAnOru72g== -repeat-string@^1.0.0, repeat-string@^1.5.2, repeat-string@^1.5.4, repeat-string@^1.6.1: +repeat-string@^1.5.2, repeat-string@^1.5.4, repeat-string@^1.6.1: version "1.6.1" resolved "https://registry.yarnpkg.com/repeat-string/-/repeat-string-1.6.1.tgz#8dcae470e1c88abc2d600fff4a776286da75e637" integrity sha1-jcrkcOHIirwtYA//Sndihtp15jc= @@ -16567,6 +16552,11 @@ require-directory@^2.1.1: resolved "https://registry.yarnpkg.com/require-directory/-/require-directory-2.1.1.tgz#8c64ad5fd30dab1c976e2344ffe7f792a6a6df42" integrity sha1-jGStX9MNqxyXbiNE/+f3kqam30I= +require-from-string@^2.0.2: + version "2.0.2" + resolved "https://registry.yarnpkg.com/require-from-string/-/require-from-string-2.0.2.tgz#89a7fdd938261267318eafe14f9c32e598c36909" + integrity sha512-Xf0nWe6RseziFMu+Ap9biiUbmplq6S9/p+7w7YXP/JBHhrUDDUhwa+vANyubuqfZWTveU//DYVGsDG7RKL/vEw== + require-main-filename@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/require-main-filename/-/require-main-filename-1.0.1.tgz#97f717b69d48784f5f526a6c5aa8ffdda055a4d1" @@ -17343,6 +17333,11 @@ source-list-map@^2.0.0: resolved "https://registry.yarnpkg.com/source-list-map/-/source-list-map-2.0.1.tgz#3993bd873bfc48479cca9ea3a547835c7c154b34" integrity sha512-qnQ7gVMxGNxsiL4lEuJwe/To8UnK7fAnmbGEEH8RpLouuKbeEm0lhbQVFIrNSuB+G7tVrAlVsZgETT5nljf+Iw== +source-map-js@^0.6.2: + version "0.6.2" + resolved "https://registry.yarnpkg.com/source-map-js/-/source-map-js-0.6.2.tgz#0bb5de631b41cfbda6cfba8bd05a80efdfd2385e" + integrity sha512-/3GptzWzu0+0MBQFrDKzw/DvvMTUORvgY6k6jd/VS6iCR4RDTKWH6v6WPwQoUO8667uQEf9Oe38DxAYWY5F/Ug== + source-map-resolve@^0.5.0: version "0.5.3" resolved "https://registry.yarnpkg.com/source-map-resolve/-/source-map-resolve-0.5.3.tgz#190866bece7553e1f8f267a2ee82c606b5509a1a" @@ -17708,6 +17703,15 @@ string-width@^4.0.0, string-width@^4.1.0, string-width@^4.2.0: is-fullwidth-code-point "^3.0.0" strip-ansi "^6.0.0" +string-width@^4.2.3: + version "4.2.3" + resolved "https://registry.yarnpkg.com/string-width/-/string-width-4.2.3.tgz#269c7117d27b05ad2e536830a8ec895ef9c6d010" + integrity sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g== + dependencies: + emoji-regex "^8.0.0" + is-fullwidth-code-point "^3.0.0" + strip-ansi "^6.0.1" + "string.prototype.matchall@^4.0.0 || ^3.0.1": version "4.0.3" resolved "https://registry.yarnpkg.com/string.prototype.matchall/-/string.prototype.matchall-4.0.3.tgz#24243399bc31b0a49d19e2b74171a15653ec996a" @@ -17799,17 +17803,6 @@ string_decoder@~1.1.1: dependencies: safe-buffer "~5.1.0" -stringify-entities@^3.0.0: - version "3.0.1" - resolved "https://registry.yarnpkg.com/stringify-entities/-/stringify-entities-3.0.1.tgz#32154b91286ab0869ab2c07696223bd23b6dbfc0" - integrity sha512-Lsk3ISA2++eJYqBMPKcr/8eby1I6L0gP0NlxF8Zja6c05yr/yCYyb2c9PwXjd08Ib3If1vn1rbs1H5ZtVuOfvQ== - dependencies: - character-entities-html4 "^1.0.0" - character-entities-legacy "^1.0.0" - is-alphanumerical "^1.0.0" - is-decimal "^1.0.2" - is-hexadecimal "^1.0.0" - stringify-object@^3.3.0: version "3.3.0" resolved "https://registry.yarnpkg.com/stringify-object/-/stringify-object-3.3.0.tgz#703065aefca19300d3ce88af4f5b3956d7556629" @@ -17847,6 +17840,13 @@ strip-ansi@^5.0.0, strip-ansi@^5.1.0, strip-ansi@^5.2.0: dependencies: ansi-regex "^4.1.0" +strip-ansi@^6.0.1: + version "6.0.1" + resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-6.0.1.tgz#9e26c63d30f53443e9489495b2105d37b67a85d9" + integrity sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A== + dependencies: + ansi-regex "^5.0.1" + strip-bom@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/strip-bom/-/strip-bom-2.0.0.tgz#6219a85616520491f35788bdbf1447a99c7e6b0e" @@ -17951,58 +17951,48 @@ stylelint-prettier@1.1.2: dependencies: prettier-linter-helpers "^1.0.0" -stylelint@13.3.3: - version "13.3.3" - resolved "https://registry.yarnpkg.com/stylelint/-/stylelint-13.3.3.tgz#e267a628ebfc1adad6f5a1fe818724c34171402b" - integrity sha512-j8Oio2T1YNiJc6iXDaPYd74Jg4zOa1bByNm/g9/Nvnq4tDPsIjMi46jhRZyPPktGPwjJ5FwcmCqIRlH6PVP8mA== +stylelint@14.0.1: + version "14.0.1" + resolved "https://registry.yarnpkg.com/stylelint/-/stylelint-14.0.1.tgz#88e6c8bd3be61e666225ddb871826321f16661f6" + integrity sha512-ZcAkmFLVCultmwkQUjxKzxW/o5+CzNmDk6TPJj/d4Y7ipTGGrewIWmNm+InjdSr04PR5/yynsAJeYJY/wisdMg== dependencies: - "@stylelint/postcss-css-in-js" "^0.37.1" - "@stylelint/postcss-markdown" "^0.36.1" - autoprefixer "^9.7.6" - balanced-match "^1.0.0" - chalk "^4.0.0" - cosmiconfig "^6.0.0" - debug "^4.1.1" + balanced-match "^2.0.0" + cosmiconfig "^7.0.1" + debug "^4.3.2" execall "^2.0.0" - file-entry-cache "^5.0.1" - get-stdin "^7.0.0" + fast-glob "^3.2.7" + fastest-levenshtein "^1.0.12" + file-entry-cache "^6.0.1" + get-stdin "^8.0.0" global-modules "^2.0.0" - globby "^11.0.0" + globby "^11.0.4" globjoin "^0.1.4" html-tags "^3.1.0" - ignore "^5.1.4" + ignore "^5.1.8" import-lazy "^4.0.0" imurmurhash "^0.1.4" - known-css-properties "^0.18.0" - leven "^3.1.0" - lodash "^4.17.15" - log-symbols "^3.0.0" + is-plain-object "^5.0.0" + known-css-properties "^0.23.0" mathml-tag-names "^2.1.3" - meow "^6.1.0" - micromatch "^4.0.2" + meow "^9.0.0" + micromatch "^4.0.4" + normalize-path "^3.0.0" normalize-selector "^0.2.0" - postcss "^7.0.27" - postcss-html "^0.36.0" - postcss-less "^3.1.4" + picocolors "^1.0.0" + postcss "^8.3.11" postcss-media-query-parser "^0.2.3" - postcss-reporter "^6.0.1" postcss-resolve-nested-selector "^0.1.1" - postcss-safe-parser "^4.0.2" - postcss-sass "^0.4.4" - postcss-scss "^2.0.0" - postcss-selector-parser "^6.0.2" - postcss-syntax "^0.36.2" - postcss-value-parser "^4.0.3" + postcss-safe-parser "^6.0.0" + postcss-selector-parser "^6.0.6" + postcss-value-parser "^4.1.0" resolve-from "^5.0.0" - slash "^3.0.0" specificity "^0.4.1" - string-width "^4.2.0" - strip-ansi "^6.0.0" + string-width "^4.2.3" + strip-ansi "^6.0.1" style-search "^0.1.0" - sugarss "^2.0.0" svg-tags "^1.0.0" - table "^5.4.6" - v8-compile-cache "^2.1.0" + table "^6.7.2" + v8-compile-cache "^2.3.0" write-file-atomic "^3.0.3" stylis@^4.0.3: @@ -18010,13 +18000,6 @@ stylis@^4.0.3: resolved "https://registry.yarnpkg.com/stylis/-/stylis-4.0.6.tgz#0d8b97b6bc4748bea46f68602b6df27641b3c548" integrity sha512-1igcUEmYFBEO14uQHAJhCUelTR5jPztfdVKrYxRnDa5D5Dn3w0NxXupJNPr/VV/yRfZYEAco8sTIRZzH3sRYKg== -sugarss@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/sugarss/-/sugarss-2.0.0.tgz#ddd76e0124b297d40bf3cca31c8b22ecb43bc61d" - integrity sha512-WfxjozUk0UVA4jm+U1d736AUpzSrNsQcIbyOkoE364GrtWmIrFdk5lksEupgWMD4VaT/0kVx1dobpiDumSgmJQ== - dependencies: - postcss "^7.0.2" - superagent@3.8.2: version "3.8.2" resolved "https://registry.yarnpkg.com/superagent/-/superagent-3.8.2.tgz#e4a11b9d047f7d3efeb3bbe536d9ec0021d16403" @@ -18128,7 +18111,7 @@ synthetic-dom@^1.4.0: resolved "https://registry.yarnpkg.com/synthetic-dom/-/synthetic-dom-1.4.0.tgz#d988d7a4652458e2fc8706a875417af913e4dd34" integrity sha512-mHv51ZsmZ+ShT/4s5kg+MGUIhY7Ltq4v03xpN1c8T1Krb5pScsh/lzEjyhrVD0soVDbThbd2e+4dD9vnDG4rhg== -table@^5.2.3, table@^5.4.6: +table@^5.2.3: version "5.4.6" resolved "https://registry.yarnpkg.com/table/-/table-5.4.6.tgz#1292d19500ce3f86053b05f0e8e7e4a3bb21079e" integrity sha512-wmEc8m4fjnob4gt5riFRtTu/6+4rSe12TpAELNSqHMfF3IqnA+CH37USM6/YR3qRZv7e56kAEAtd6nKZaxe0Ug== @@ -18138,6 +18121,17 @@ table@^5.2.3, table@^5.4.6: slice-ansi "^2.1.0" string-width "^3.0.0" +table@^6.7.2: + version "6.7.3" + resolved "https://registry.yarnpkg.com/table/-/table-6.7.3.tgz#255388439715a738391bd2ee4cbca89a4d05a9b7" + integrity sha512-5DkIxeA7XERBqMwJq0aHZOdMadBx4e6eDoFRuyT5VR82J0Ycg2DwM6GfA/EQAhJ+toRTaS1lIdSQCqgrmhPnlw== + dependencies: + ajv "^8.0.1" + lodash.truncate "^4.4.2" + slice-ansi "^4.0.0" + string-width "^4.2.3" + strip-ansi "^6.0.1" + tapable@^1.0.0, tapable@^1.1.3: version "1.1.3" resolved "https://registry.yarnpkg.com/tapable/-/tapable-1.1.3.tgz#a1fccc06b58db61fd7a45da2da44f5f3a3e67ba2" @@ -18588,10 +18582,10 @@ type-fest@^0.11.0: resolved "https://registry.yarnpkg.com/type-fest/-/type-fest-0.11.0.tgz#97abf0872310fed88a5c466b25681576145e33f1" integrity sha512-OdjXJxnCN1AvyLSzeKIgXTXxV+99ZuXl3Hpo9XpJAv9MBcHrrJOQ5kV7ypXOuQie+AmWG25hLbiKdwYTifzcfQ== -type-fest@^0.13.1: - version "0.13.1" - resolved "https://registry.yarnpkg.com/type-fest/-/type-fest-0.13.1.tgz#0172cb5bce80b0bd542ea348db50c7e21834d934" - integrity sha512-34R7HTnG0XIJcBSn5XhDd7nNFPRcXYRZrBB2O2jdKqYODldSzBAqzsWoZYYvduky73toYS/ESqxPvkDf/F0XMg== +type-fest@^0.18.0: + version "0.18.1" + resolved "https://registry.yarnpkg.com/type-fest/-/type-fest-0.18.1.tgz#db4bc151a4a2cf4eebf9add5db75508db6cc841f" + integrity sha512-OIAYXk8+ISY+qTOwkHtKqzAuxchoMiD9Udx+FSGQDuiRR+PJKJHc2NJAXlbhkGwTt/4/nKZxELY1w3ReWOL8mw== type-fest@^0.6.0: version "0.6.0" @@ -18713,18 +18707,6 @@ unified@9.2.0: trough "^1.0.0" vfile "^4.0.0" -unified@^9.0.0: - version "9.0.0" - resolved "https://registry.yarnpkg.com/unified/-/unified-9.0.0.tgz#12b099f97ee8b36792dbad13d278ee2f696eed1d" - integrity sha512-ssFo33gljU3PdlWLjNp15Inqb77d6JnJSfyplGJPT/a+fNRNyCBeveBAYJdO5khKdF6WVHa/yYCC7Xl6BDwZUQ== - dependencies: - bail "^1.0.0" - extend "^3.0.0" - is-buffer "^2.0.0" - is-plain-obj "^2.0.0" - trough "^1.0.0" - vfile "^4.0.0" - union-class-names@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/union-class-names/-/union-class-names-1.0.0.tgz#9259608adacc39094a2b0cfe16c78e6200617847" @@ -18776,13 +18758,6 @@ unist-builder@2.0.3, unist-builder@^2.0.0: resolved "https://registry.yarnpkg.com/unist-builder/-/unist-builder-2.0.3.tgz#77648711b5d86af0942f334397a33c5e91516436" integrity sha512-f98yt5pnlMWlzP539tPc4grGMsFaQQlP/vM396b00jngsiINumNmsY8rkXjfoi1c6QaM8nQ3vaGDuoKWbe/1Uw== -unist-util-find-all-after@^3.0.1: - version "3.0.1" - resolved "https://registry.yarnpkg.com/unist-util-find-all-after/-/unist-util-find-all-after-3.0.1.tgz#95cc62f48812d879b4685a0512bf1b838da50e9a" - integrity sha512-0GICgc++sRJesLwEYDjFVJPJttBpVQaTNgc6Jw0Jhzvfs+jtKePEMu+uD+PqkRUrAvGQqwhpDwLGWo1PK8PDEw== - dependencies: - unist-util-is "^4.0.0" - unist-util-generated@^1.0.0: version "1.1.6" resolved "https://registry.yarnpkg.com/unist-util-generated/-/unist-util-generated-1.1.6.tgz#5ab51f689e2992a472beb1b35f2ce7ff2f324d4b" @@ -19088,11 +19063,16 @@ uuid@^7.0.2: resolved "https://registry.yarnpkg.com/uuid/-/uuid-7.0.3.tgz#c5c9f2c8cf25dc0a372c4df1441c41f5bd0c680b" integrity sha512-DPSke0pXhTZgoF/d+WSt2QaKMCFSfx7QegxEWT+JOuHF5aWrKEn0G+ztjuJg/gG8/ItK+rbPCD/yNv8yyih6Cg== -v8-compile-cache@^2.0.3, v8-compile-cache@^2.1.0: +v8-compile-cache@^2.0.3: version "2.1.0" resolved "https://registry.yarnpkg.com/v8-compile-cache/-/v8-compile-cache-2.1.0.tgz#e14de37b31a6d194f5690d67efc4e7f6fc6ab30e" integrity sha512-usZBT3PW+LOjM25wbqIlZwPeJV+3OSz3M1k1Ws8snlW39dZyYL9lOGC5FgPVHfk0jKmjiDV8Z0mIbVQPiwFs7g== +v8-compile-cache@^2.3.0: + version "2.3.0" + resolved "https://registry.yarnpkg.com/v8-compile-cache/-/v8-compile-cache-2.3.0.tgz#2de19618c66dc247dcfb6f99338035d8245a2cee" + integrity sha512-l8lCEmLcLYZh4nbunNZvQCJc5pv7+RCwa8q/LdUx8u7lsWvPDKmpodJAJNwkAhJC//dFY48KuIEmjtd4RViDrA== + validate-npm-package-license@^3.0.1: version "3.0.4" resolved "https://registry.yarnpkg.com/validate-npm-package-license/-/validate-npm-package-license-3.0.4.tgz#fc91f6b9c7ba15c857f4cb2c5defeec39d4f410a" @@ -19823,13 +19803,10 @@ yargs-parser@^13.1.2: camelcase "^5.0.0" decamelize "^1.2.0" -yargs-parser@^18.1.3: - version "18.1.3" - resolved "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-18.1.3.tgz#be68c4975c6b2abf469236b0c870362fab09a7b0" - integrity sha512-o50j0JeToy/4K6OZcaQmW6lyXXKhq7csREXcDwk2omFPJEwUNOVtJKvmDr9EI1fAJZUyZcRF7kxGBWmRXudrCQ== - dependencies: - camelcase "^5.0.0" - decamelize "^1.2.0" +yargs-parser@^20.2.3: + version "20.2.9" + resolved "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-20.2.9.tgz#2eb7dc3b0289718fc295f362753845c41a0c94ee" + integrity sha512-y11nGElTIV+CT3Zv9t7VKl+Q3hTQoT9a1Qzezhhl6Rp21gJ/IVTW7Z3y9EWXhuUBC2Shnf+DX0antecpAwSP8w== yargs@12.0.5: version "12.0.5" From a96ac7e594cbd344f3d26f8ce2a717a696907afc Mon Sep 17 00:00:00 2001 From: Tiberiu Ichim Date: Wed, 17 Nov 2021 18:03:08 +0200 Subject: [PATCH 03/56] Add changelog --- CHANGELOG.md | 11 +++++++++-- 1 file changed, 9 insertions(+), 2 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 75009b0401..3d4d6de83f 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -4,14 +4,21 @@ ### Breaking +- The block settings schema, which used to sit in `config.blocks.blocksConfig..schema` + has been moved to `config.blocks.blocksConfig..layoutSettingsSchema`. + ### Feature +- Blocks can now declare, in their block configuration registry, + a `blockSchema` with a schema factory. This schema will also be used to + extract a default block value. + ### Bugfix - Folder contents table header and breadcrumbs dropdown now appear only from the - bottom, fixing an issue where the breadcrumb dropdown content was clipped + bottom, fixing an issue where the breadcrumb dropdown content was clipped by the header area @ichim-david -- Folder contents sort dropdown is now also simple as the other dropdowns +- Folder contents sort dropdown is now also simple as the other dropdowns ensuring we have the same behavior between adjecent dropdown @ichim-david ### Internal From f67368259c7d9afc179e2ed47aeefad75ad095f7 Mon Sep 17 00:00:00 2001 From: Giulia Ghisini <51911425+giuliaghisini@users.noreply.github.com> Date: Wed, 17 Nov 2021 18:45:18 +0100 Subject: [PATCH 04/56] fixed downloadableObjects default value (#2822) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * fixed downloadableObjects default value * Update index.js * Update index.js Co-authored-by: Víctor Fernández de Alba --- CHANGELOG.md | 3 ++- src/config/index.js | 2 +- 2 files changed, 3 insertions(+), 2 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 3d4d6de83f..e34aa50f68 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -15,6 +15,7 @@ ### Bugfix +- Fix downloadableObjects default value @giuliaghisini - Folder contents table header and breadcrumbs dropdown now appear only from the bottom, fixing an issue where the breadcrumb dropdown content was clipped by the header area @ichim-david @@ -47,7 +48,7 @@ - Fix the selection of Maps Block @iRohitSingh - UniversalLink: handle direct download for content-type File if user is not logged. @giuliaghisini - Fixed ObjectBrowserWidget when is multiple or maximumSelectionSize is not set @giuliaghisini -- Fix full-width image overlaps the drag handle @iRohitSingh +- Fix full-width image overlaps the drag handle @iRohitSingh - Fix move item to top of the folder when clicking on move to top action button @iRohitSingh ### Internal diff --git a/src/config/index.js b/src/config/index.js index 1e752665cb..a0aa3cf546 100644 --- a/src/config/index.js +++ b/src/config/index.js @@ -105,7 +105,7 @@ let config = { ToHTMLRenderers, ToHTMLOptions, imageObjects: ['Image'], - downloadableObjects: ['Link'], + downloadableObjects: ['File'], //list of content-types for which the direct download of the file will be carried out if the user is not authenticated listingPreviewImageField: 'image', // deprecated from Volto 14 onwards customStyleMap: null, notSupportedBrowsers: ['ie'], From 8943b5918e1182eb7048911591173363f539d342 Mon Sep 17 00:00:00 2001 From: Tiberiu Ichim Date: Thu, 18 Nov 2021 16:00:28 +0200 Subject: [PATCH 05/56] Revert "Add changelog" This reverts commit a96ac7e594cbd344f3d26f8ce2a717a696907afc. --- CHANGELOG.md | 11 ++--------- 1 file changed, 2 insertions(+), 9 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index e34aa50f68..05b7de7609 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -4,22 +4,15 @@ ### Breaking -- The block settings schema, which used to sit in `config.blocks.blocksConfig..schema` - has been moved to `config.blocks.blocksConfig..layoutSettingsSchema`. - ### Feature -- Blocks can now declare, in their block configuration registry, - a `blockSchema` with a schema factory. This schema will also be used to - extract a default block value. - ### Bugfix - Fix downloadableObjects default value @giuliaghisini - Folder contents table header and breadcrumbs dropdown now appear only from the - bottom, fixing an issue where the breadcrumb dropdown content was clipped + bottom, fixing an issue where the breadcrumb dropdown content was clipped by the header area @ichim-david -- Folder contents sort dropdown is now also simple as the other dropdowns +- Folder contents sort dropdown is now also simple as the other dropdowns ensuring we have the same behavior between adjecent dropdown @ichim-david ### Internal From 3fde00f1322e22c449ff269b853bc3ea70fe5486 Mon Sep 17 00:00:00 2001 From: Tiberiu Ichim Date: Thu, 18 Nov 2021 18:32:47 +0200 Subject: [PATCH 06/56] Fix docs for block extensions (#2841) * Fix docs for block extensions * Add changelog entry --- CHANGELOG.md | 1 + docs/source/blocks/extensions.md | 10 +++++----- 2 files changed, 6 insertions(+), 5 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 05b7de7609..2d9753b085 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -14,6 +14,7 @@ by the header area @ichim-david - Folder contents sort dropdown is now also simple as the other dropdowns ensuring we have the same behavior between adjecent dropdown @ichim-david +- Fix documention on block extensions, replace `render` with `template` to match Listing block @tiberiuichim ### Internal diff --git a/docs/source/blocks/extensions.md b/docs/source/blocks/extensions.md index d2c4daa4d0..dd31591733 100644 --- a/docs/source/blocks/extensions.md +++ b/docs/source/blocks/extensions.md @@ -50,12 +50,12 @@ export default (config) => { id: 'default', title: 'Default', isDefault: true, - render: SimpleTeaserView + template: SimpleTeaserView }, { id: 'card', label: 'Card', - render: CardTeaserView, + template: CardTeaserView, schemaEnhancer: ({schema, formData, intl}) => { schema.properties.cardSize = '...'; // fill in your implementation return schema; @@ -110,17 +110,17 @@ export default (config) => { id: 'default', title: 'Default', isDefault: true, - render: DefaultColumnRenderer + template: DefaultColumnRenderer }, { id: 'number', title: 'Number', - render: NumberColumnRenderer, + template: NumberColumnRenderer, }, { id: 'colored', title: 'Colored', - renderer: ColoredColumnRenderer, + template: ColoredColumnRenderer, schemaEnhancer: ({formData, schema, intl}) => { schema.properties.color = { widget: 'color', From 00877f16be3aacd252efecdd948a24d03487deae Mon Sep 17 00:00:00 2001 From: Victor Fernandez de Alba Date: Sat, 20 Nov 2021 10:26:48 +0100 Subject: [PATCH 07/56] Prepare for release --- CHANGELOG.md | 8 ++------ 1 file changed, 2 insertions(+), 6 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 2d9753b085..3a7d0c944e 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -2,17 +2,13 @@ ## 14.0.0 (unreleased) -### Breaking - -### Feature - ### Bugfix - Fix downloadableObjects default value @giuliaghisini - Folder contents table header and breadcrumbs dropdown now appear only from the - bottom, fixing an issue where the breadcrumb dropdown content was clipped + bottom, fixing an issue where the breadcrumb dropdown content was clipped by the header area @ichim-david -- Folder contents sort dropdown is now also simple as the other dropdowns +- Folder contents sort dropdown is now also simple as the other dropdowns ensuring we have the same behavior between adjecent dropdown @ichim-david - Fix documention on block extensions, replace `render` with `template` to match Listing block @tiberiuichim From 121dd91ddf58f52ca5ab66e3e4aeb7a5fd8625ae Mon Sep 17 00:00:00 2001 From: Victor Fernandez de Alba Date: Sat, 20 Nov 2021 10:27:30 +0100 Subject: [PATCH 08/56] Release 14.0.0-alpha.33 --- CHANGELOG.md | 2 +- package.json | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 3a7d0c944e..ed2294c52d 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,6 +1,6 @@ # Change Log -## 14.0.0 (unreleased) +## 14.0.0-alpha.33 (2021-11-20) ### Bugfix diff --git a/package.json b/package.json index eadae47c3d..c7a24fe9b0 100644 --- a/package.json +++ b/package.json @@ -9,7 +9,7 @@ } ], "license": "MIT", - "version": "14.0.0-alpha.32", + "version": "14.0.0-alpha.33", "repository": { "type": "git", "url": "git@github.com:plone/volto.git" From 520162e3ef04451a7bfde6cd986e3af1bd19d1db Mon Sep 17 00:00:00 2001 From: Victor Fernandez de Alba Date: Sat, 20 Nov 2021 10:27:37 +0100 Subject: [PATCH 09/56] Back to development --- CHANGELOG.md | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index ed2294c52d..64d50aef52 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,5 +1,15 @@ # Change Log +## 14.0.0 (unreleased) + +### Breaking + +### Feature + +### Bugfix + +### Internal + ## 14.0.0-alpha.33 (2021-11-20) ### Bugfix From 1e48bbe435580f0aca0b1e09d48f6f9d7408528a Mon Sep 17 00:00:00 2001 From: Tiberiu Ichim Date: Sat, 20 Nov 2021 11:28:04 +0200 Subject: [PATCH 10/56] Inject block data defaults from BlocksForm and RenderBlocks (#2833) * Inject block data defaults from BlocksForm and RenderBlocks * Move application of applyBlockDefaults to Block/Edit.jsx * Add test for applyBlockDefaults --- CHANGELOG.md | 3 ++ src/components/manage/Blocks/Block/Edit.jsx | 7 ++- .../manage/Blocks/HeroImageLeft/schema.js | 2 +- .../manage/Blocks/Listing/schema.js | 2 + src/components/theme/View/RenderBlocks.jsx | 12 ++++- src/config/Blocks.jsx | 8 ++++ src/helpers/Blocks/Blocks.js | 39 ++++++++++++++-- src/helpers/Blocks/Blocks.test.js | 46 +++++++++++++++++++ src/helpers/Extensions/withBlockExtensions.js | 44 +++++++++++++++++- src/helpers/index.js | 1 + 10 files changed, 155 insertions(+), 9 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 64d50aef52..8bcf4d3ebd 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -6,6 +6,9 @@ ### Feature +- Apply form defaults from RenderBlocks and block Edit using a new helper, `applyBlockDefaults` @tiberiuichim +- Now each block config object can declare a schema factory (a function that can produce a schema) and this will be used to derive the default data for the block @tiberiuichim + ### Bugfix ### Internal diff --git a/src/components/manage/Blocks/Block/Edit.jsx b/src/components/manage/Blocks/Block/Edit.jsx index d976a561b6..34e53604ea 100644 --- a/src/components/manage/Blocks/Block/Edit.jsx +++ b/src/components/manage/Blocks/Block/Edit.jsx @@ -12,6 +12,7 @@ import cx from 'classnames'; import { setSidebarTab } from '@plone/volto/actions'; import config from '@plone/volto/registry'; import withObjectBrowser from '@plone/volto/components/manage/Sidebar/ObjectBrowser'; +import { applyBlockDefaults } from '@plone/volto/helpers'; import { SidebarPortal, @@ -165,7 +166,11 @@ export class Edit extends Component { /* eslint-disable jsx-a11y/no-noninteractive-tabindex */ tabIndex={!blockHasOwnFocusManagement ? -1 : null} > - + {this.props.manage && ( { +const schemaHero = ({ intl }) => { return { title: 'Block settings', required: [], diff --git a/src/components/manage/Blocks/Listing/schema.js b/src/components/manage/Blocks/Listing/schema.js index 76fd2331f9..b9d165e5fd 100644 --- a/src/components/manage/Blocks/Listing/schema.js +++ b/src/components/manage/Blocks/Listing/schema.js @@ -65,3 +65,5 @@ export const schemaListing = (props) => { required: [], }; }; + +export default schemaListing; diff --git a/src/components/theme/View/RenderBlocks.jsx b/src/components/theme/View/RenderBlocks.jsx index 47aa087308..8894177531 100644 --- a/src/components/theme/View/RenderBlocks.jsx +++ b/src/components/theme/View/RenderBlocks.jsx @@ -1,5 +1,5 @@ import React from 'react'; -import { getBaseUrl } from '@plone/volto/helpers'; +import { getBaseUrl, applyBlockDefaults } from '@plone/volto/helpers'; import { defineMessages, injectIntl } from 'react-intl'; import { map } from 'lodash'; import { @@ -28,13 +28,21 @@ const RenderBlocks = (props) => { {map(content[blocksLayoutFieldname].items, (block) => { const Block = blocksConfig[content[blocksFieldname]?.[block]?.['@type']]?.view; + + const blockData = applyBlockDefaults({ + data: content[blocksFieldname][block], + intl, + metadata, + properties: content, + }); + return Block ? ( diff --git a/src/config/Blocks.jsx b/src/config/Blocks.jsx index b7f10a341f..c803ab6b7b 100644 --- a/src/config/Blocks.jsx +++ b/src/config/Blocks.jsx @@ -59,6 +59,11 @@ import { } from '@plone/volto/components/manage/Blocks/Search/components'; import getListingBlockAsyncData from '@plone/volto/components/manage/Blocks/Listing/getAsyncData'; +// block sidebar schemas (not the Dexterity Layout block settings schemas) +import HeroImageLeftBlockSchema from '@plone/volto/components/manage/Blocks/HeroImageLeft/schema'; +import ListingBlockSchema from '@plone/volto/components/manage/Blocks/Listing/schema'; +import SearchBlockSchema from '@plone/volto/components/manage/Blocks/Search/schema'; + defineMessages({ title: { id: 'title', @@ -253,6 +258,7 @@ const blocksConfig = { view: ViewListingBlock, edit: EditListingBlock, schema: BlockSettingsSchema, + blockSchema: ListingBlockSchema, restricted: false, mostUsed: true, sidebarTab: 1, @@ -321,6 +327,7 @@ const blocksConfig = { view: ViewHeroImageLeftBlock, edit: EditHeroImageLeftBlock, schema: BlockSettingsSchema, + blockSchema: HeroImageLeftBlockSchema, restricted: false, mostUsed: false, blockHasOwnFocusManagement: true, @@ -387,6 +394,7 @@ const blocksConfig = { group: 'common', view: SearchBlockView, edit: SearchBlockEdit, + blockSchema: SearchBlockSchema, restricted: false, mostUsed: false, sidebarTab: 1, diff --git a/src/helpers/Blocks/Blocks.js b/src/helpers/Blocks/Blocks.js index 054bc1f934..158b003bf2 100644 --- a/src/helpers/Blocks/Blocks.js +++ b/src/helpers/Blocks/Blocks.js @@ -323,7 +323,7 @@ export function previousBlockId(formData, currentBlock) { * Generate empty block form * @function emptyBlocksForm * @param {Object} formData Form data - * @return {Object} Emptry blocks form with one defaultBlockType block + * @return {Object} Empty blocks form with one defaultBlockType block */ export function emptyBlocksForm() { const { settings } = config; @@ -340,6 +340,9 @@ export function emptyBlocksForm() { /** * Recursively discover blocks in data and call the provided callback + * @function visitBlocks + * @param {Object} content A content data structure (an object with blocks and blocks_layout) + * @param {Function} callback A function to call on each discovered block */ export function visitBlocks(content, callback) { const queue = getBlocks(content); @@ -351,11 +354,41 @@ export function visitBlocks(content, callback) { // { data: {blocks, blocks_layout}} if (Object.keys(blockdata || {}).indexOf('blocks') > -1) { queue.push(...getBlocks(blockdata)); - // getBlocks(blockdata).forEach((tuple) => queue.push(tuple)); } if (Object.keys(blockdata?.data || {}).indexOf('blocks') > -1) { queue.push(...getBlocks(blockdata.data)); - // getBlocks(blockdata.data).forEach((tuple) => queue.push(tuple)); } } } + +/** + * Apply the block's default (as defined in schema) to the block data. + * @function applyBlockDefaults + * @param {Object} params An object with data, intl and anything else + * @return {Object} Derived data, with the defaults extracted from the schema + */ +export function applyBlockDefaults({ data, intl, ...rest }, blocksConfig) { + const block_type = data['@type']; + const { blockSchema } = + (blocksConfig || config.blocks.blocksConfig)[block_type] || {}; + if (!blockSchema) return data; + + const schema = + typeof blockSchema === 'function' + ? blockSchema({ data, intl, ...rest }) + : blockSchema; + + const derivedData = { + ...Object.keys(schema.properties).reduce((accumulator, currentField) => { + return schema.properties[currentField].default + ? { + ...accumulator, + [currentField]: schema.properties[currentField].default, + } + : accumulator; + }, {}), + ...data, + }; + + return derivedData; +} diff --git a/src/helpers/Blocks/Blocks.test.js b/src/helpers/Blocks/Blocks.test.js index 973b246d39..9ad159d676 100644 --- a/src/helpers/Blocks/Blocks.test.js +++ b/src/helpers/Blocks/Blocks.test.js @@ -14,6 +14,7 @@ import { nextBlockId, previousBlockId, visitBlocks, + applyBlockDefaults, } from './Blocks'; import config from '@plone/volto/registry'; @@ -31,6 +32,26 @@ config.blocks.blocksConfig.text = { (data.text?.blocks?.length === 1 && data.text.blocks[0].text === ''); return !isEmpty; }, + blockSchema: ({ data }) => ({ + fieldsets: [ + { + id: 'default', + fields: ['title', 'description', 'nonDefault'], + title: 'Default', + }, + ], + properties: { + title: { + default: 'Default title', + }, + description: { + default: 'Default description', + }, + nonDefault: { + title: 'Non default', + }, + }, + }), }; config.settings.defaultBlockType = 'text'; @@ -361,4 +382,29 @@ describe('Blocks', () => { expect(a.length).toBe(13); }); }); + + describe('applyBlockDefaults', () => { + it('Sets data according to schema default values', () => { + const data = { + '@type': 'text', + description: 'already filled', + }; + expect(applyBlockDefaults({ data })).toEqual({ + '@type': 'text', + title: 'Default title', + description: 'already filled', + }); + }); + + it('Does not do anything if there is no schema for block', () => { + const data = { + '@type': 'missing', + description: 'already filled', + }; + expect(applyBlockDefaults({ data })).toEqual({ + '@type': 'missing', + description: 'already filled', + }); + }); + }); }); diff --git a/src/helpers/Extensions/withBlockExtensions.js b/src/helpers/Extensions/withBlockExtensions.js index d54c4be72e..a3397c58a3 100644 --- a/src/helpers/Extensions/withBlockExtensions.js +++ b/src/helpers/Extensions/withBlockExtensions.js @@ -17,8 +17,40 @@ export function resolveExtension(name, extensions, data) { return index !== -1 ? extensions[index] : undefined; } -export default (WrappedComponent) => (props) => { - const { data } = props; +/** + * A block can declare extensions and variations like: + * + * { + * variations: [ + * { + * id: "summary", + * isDefault: true, + * template: Something + * } + * ], + * extensions: { + * 'extensionA': { + * items: [ + * // something similar to variations + * ] + * } + * } + * } + * + * Exactly what an extension and what a variation represent is only up to the + * block. A block should incorporate these extension mechanisms and it should + * define what information is needed from them. + * + * resolveBlockExtensions will return an object with + * `{ extensions, resolvedExtensions}`, where: + * + * - extensions is the blocksConfig extensions object for that block + * - resolvedExtensions is an object with + * `{ variation, , }` and each of these + * fields hold the coresponding definition object from the block's + * configuration. + */ +export function resolveBlockExtensions(data) { const block_type = data['@type']; const { extensions = {}, variations = [] } = config.blocks.blocksConfig[ block_type @@ -43,6 +75,12 @@ export default (WrappedComponent) => (props) => { resolvedExtensions.variation = variation; } + return { extensions, resolvedExtensions }; +} + +const withBlockExtensions = (WrappedComponent) => (props) => { + const { data } = props; + const { extensions, resolvedExtensions } = resolveBlockExtensions(data); return ( (props) => { /> ); }; + +export default withBlockExtensions; diff --git a/src/helpers/index.js b/src/helpers/index.js index 1c18917ff3..4992886d00 100644 --- a/src/helpers/index.js +++ b/src/helpers/index.js @@ -49,6 +49,7 @@ export { mutateBlock, nextBlockId, previousBlockId, + applyBlockDefaults, } from '@plone/volto/helpers/Blocks/Blocks'; export BodyClass from '@plone/volto/helpers/BodyClass/BodyClass'; export ScrollToTop from '@plone/volto/helpers/ScrollToTop/ScrollToTop'; From 10ed001e8203b3e800052581aad02b797996c635 Mon Sep 17 00:00:00 2001 From: Victor Fernandez de Alba Date: Sat, 20 Nov 2021 10:35:35 +0100 Subject: [PATCH 11/56] Prepare for release --- CHANGELOG.md | 6 ------ 1 file changed, 6 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 8bcf4d3ebd..fd4c56200e 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -2,17 +2,11 @@ ## 14.0.0 (unreleased) -### Breaking - ### Feature - Apply form defaults from RenderBlocks and block Edit using a new helper, `applyBlockDefaults` @tiberiuichim - Now each block config object can declare a schema factory (a function that can produce a schema) and this will be used to derive the default data for the block @tiberiuichim -### Bugfix - -### Internal - ## 14.0.0-alpha.33 (2021-11-20) ### Bugfix From b09100dce6e7c87ef478ddc7af404cffa4347674 Mon Sep 17 00:00:00 2001 From: Victor Fernandez de Alba Date: Sat, 20 Nov 2021 10:36:09 +0100 Subject: [PATCH 12/56] Release 14.0.0-alpha.34 --- CHANGELOG.md | 2 +- package.json | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index fd4c56200e..310630642f 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,6 +1,6 @@ # Change Log -## 14.0.0 (unreleased) +## 14.0.0-alpha.34 (2021-11-20) ### Feature diff --git a/package.json b/package.json index c7a24fe9b0..222dc8d6ac 100644 --- a/package.json +++ b/package.json @@ -9,7 +9,7 @@ } ], "license": "MIT", - "version": "14.0.0-alpha.33", + "version": "14.0.0-alpha.34", "repository": { "type": "git", "url": "git@github.com:plone/volto.git" From 918911df3d8bdaad59492c764af44fbfa2df78ed Mon Sep 17 00:00:00 2001 From: Victor Fernandez de Alba Date: Sat, 20 Nov 2021 10:36:17 +0100 Subject: [PATCH 13/56] Back to development --- CHANGELOG.md | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index 310630642f..b74259789b 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,5 +1,15 @@ # Change Log +## 14.0.0 (unreleased) + +### Breaking + +### Feature + +### Bugfix + +### Internal + ## 14.0.0-alpha.34 (2021-11-20) ### Feature From dbf177d81720e9aca5d17cf21a46ffadfa690de1 Mon Sep 17 00:00:00 2001 From: Tiberiu Ichim Date: Sat, 20 Nov 2021 11:37:34 +0200 Subject: [PATCH 14/56] Add two new Volto websites (#2844) * Add two new Volto websites * Add changelog --- CHANGELOG.md | 1 + README.md | 5 ++++- 2 files changed, 5 insertions(+), 1 deletion(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index b74259789b..b63c79f52f 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -32,6 +32,7 @@ ### Internal - Upgrade stylelint to v14 (vscode-stylelint requires it now) @sneridagh +- Add 2 new Volto websites by Eau de web for EEA @tiberiuichim ## 14.0.0-alpha.32 (2021-11-09) diff --git a/README.md b/README.md index 005b937aa4..60b550679b 100644 --- a/README.md +++ b/README.md @@ -138,7 +138,10 @@ Volto is actively developed since 2017 and used in production since 2018 on the - [Biblioteche Pianura Est](https://bibest.it) (Website of the Associated libraries of eastern plain. Developed by [RedTurtle](https://redturtle.it), 2021) - [Camera di Commercio di Reggio Emilia](https://www.re.camcom.gov.it/) (Website Chamber of Commerce of Reggio Emilia. Developed by [RedTurtle](https://redturtle.it), 2021) - [RawMaterial](https://rawmaterial.it/en) (Company's website. Developed by [RawMaterial](https://rawmaterial.it/en), 2021) -- Please create a new [issue](https://github.com/plone/volto/issues/new) or [pull request](https://github.com/plone/volto/pulls) to add your Volto-site here! +- [WISE-Freshwater](https://water.europa.eu/freshwater) (WISE-Freshwater, the Freshwater Information System for Europe. Developed by [Eau de web](https://eaudeweb.ro) for the European Environmental Agency, 2021) +- [EEA-IMSv4](https://www.eea.europa.eu/ims) (EEA Indicator Management System v4. Developed by [Eau de web](https://eaudeweb.ro) for the European Environmental Agency, 2021) + +Please create a new [issue](https://github.com/plone/volto/issues/new) or [pull request](https://github.com/plone/volto/pulls) to add your Volto-site here! ## Documentation From bba0552826546a2607e3bc57d4f18830c5f09cf1 Mon Sep 17 00:00:00 2001 From: Steve Piercy Date: Sat, 20 Nov 2021 01:38:04 -0800 Subject: [PATCH 15/56] Add links to trainings and PloneConf 2020, 2021 YouTube playlists (#2846) It appears that there are no talks posted yet for 2021. I am too lazy to dig into 2020. This at least improves it. --- docs/source/getting-started/others.md | 17 +++++++++++++++++ 1 file changed, 17 insertions(+) diff --git a/docs/source/getting-started/others.md b/docs/source/getting-started/others.md index 8138f2769c..94b7b12aad 100644 --- a/docs/source/getting-started/others.md +++ b/docs/source/getting-started/others.md @@ -1,9 +1,26 @@ # Other learning resources +## Plone Trainings + On the [Plone Trainings Website](https://training.plone.org) you'll find Volto-dedicated open training materials plus React and other Javascript-centered trainings. +- [Volto](https://training.plone.org/5/volto/index.html) +- [Volto Hands-On](https://training.plone.org/5/voltohandson/index.html) +- [Volto Add-ons Development](https://training.plone.org/5/voltoaddons/index.html) +- [Plone Deployment](https://training.plone.org/5/plone-deployment/index.html) +- [React](https://training.plone.org/5/react/index.html) +- [JavaScript For Plone Developers](https://training.plone.org/5/javascript/index.html) + +## PloneConf 2021 + +[Playlist on YouTube](https://www.youtube.com/playlist?list=PLGN9BI-OAQkQDLQinBwdEXpebDTQCwdGi) + +## PloneConf 2020 + +[Playlist on YouTube](https://www.youtube.com/playlist?list=PLGN9BI-OAQkTJPayNdKIZ8lLDm5RVOLV3) + ## PloneConf 2019 PloneConf 2019 had several Volto-relevant presentations. From 560fd7f37a21a963b41e65c0fa7ff553c5a118a7 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?V=C3=ADctor=20Fern=C3=A1ndez=20de=20Alba?= Date: Wed, 24 Nov 2021 17:07:06 +0100 Subject: [PATCH 16/56] Upgrade p.restapi to 8.15.2 (#2856) --- CHANGELOG.md | 2 ++ Makefile | 6 +++--- api/buildout.cfg | 2 +- 3 files changed, 6 insertions(+), 4 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index b63c79f52f..76f848a3ec 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -10,6 +10,8 @@ ### Internal +- Upgrade p.restapi to 8.15.2 @sneridagh + ## 14.0.0-alpha.34 (2021-11-20) ### Feature diff --git a/Makefile b/Makefile index a47684340a..4da389531a 100644 --- a/Makefile +++ b/Makefile @@ -120,15 +120,15 @@ stop-backend-docker-guillotina: .PHONY: test-acceptance-server test-acceptance-server: - docker run -i --rm -e ZSERVER_HOST=0.0.0.0 -e ZSERVER_PORT=55001 -p 55001:55001 -e VERSIONS="plone.restapi=8.13.0 plone.rest=2.0.0a1" -e APPLY_PROFILES=plone.app.contenttypes:plone-content,plone.restapi:default,plone.volto:default-homepage -e CONFIGURE_PACKAGES=plone.app.contenttypes,plone.restapi,plone.volto,plone.volto.cors -e ADDONS='plone.app.robotframework plone.app.contenttypes plone.restapi plone.volto' plone ./bin/robot-server plone.app.robotframework.testing.PLONE_ROBOT_TESTING + docker run -i --rm -e ZSERVER_HOST=0.0.0.0 -e ZSERVER_PORT=55001 -p 55001:55001 -e VERSIONS="plone.restapi=8.15.2 plone.rest=2.0.0a1" -e APPLY_PROFILES=plone.app.contenttypes:plone-content,plone.restapi:default,plone.volto:default-homepage -e CONFIGURE_PACKAGES=plone.app.contenttypes,plone.restapi,plone.volto,plone.volto.cors -e ADDONS='plone.app.robotframework plone.app.contenttypes plone.restapi plone.volto' plone ./bin/robot-server plone.app.robotframework.testing.PLONE_ROBOT_TESTING .PHONY: test-acceptance-server-multilingual test-acceptance-server-multilingual: - docker run -i --rm -e ZSERVER_HOST=0.0.0.0 -e ZSERVER_PORT=55001 -p 55001:55001 -e VERSIONS="plone.restapi=8.13.0 plone.rest=2.0.0a1" -e APPLY_PROFILES=plone.app.contenttypes:plone-content,plone.restapi:default,plone.volto:multilingual -e CONFIGURE_PACKAGES=plone.app.contenttypes,plone.restapi,plone.volto,plone.volto.cors -e ADDONS='plone.app.robotframework plone.app.contenttypes plone.restapi plone.volto' plone ./bin/robot-server plone.app.robotframework.testing.PLONE_ROBOT_TESTING + docker run -i --rm -e ZSERVER_HOST=0.0.0.0 -e ZSERVER_PORT=55001 -p 55001:55001 -e VERSIONS="plone.restapi=8.15.2 plone.rest=2.0.0a1" -e APPLY_PROFILES=plone.app.contenttypes:plone-content,plone.restapi:default,plone.volto:multilingual -e CONFIGURE_PACKAGES=plone.app.contenttypes,plone.restapi,plone.volto,plone.volto.cors -e ADDONS='plone.app.robotframework plone.app.contenttypes plone.restapi plone.volto' plone ./bin/robot-server plone.app.robotframework.testing.PLONE_ROBOT_TESTING .PHONY: test-acceptance-server-workingcopy test-acceptance-server-workingcopy: - docker run -i --rm -e ZSERVER_HOST=0.0.0.0 -e ZSERVER_PORT=55001 -p 55001:55001 -e VERSIONS="plone.restapi=8.13.0 plone.app.iterate=4.0.2 plone.rest=2.0.0a1" -e APPLY_PROFILES=plone.app.contenttypes:plone-content,plone.restapi:default,plone.app.iterate:default,plone.volto:default-homepage -e CONFIGURE_PACKAGES=plone.app.contenttypes,plone.restapi,plone.volto,plone.volto.cors -e ADDONS='plone.app.robotframework plone.app.contenttypes plone.restapi plone.app.iterate plone.volto' plone ./bin/robot-server plone.app.robotframework.testing.PLONE_ROBOT_TESTING + docker run -i --rm -e ZSERVER_HOST=0.0.0.0 -e ZSERVER_PORT=55001 -p 55001:55001 -e VERSIONS="plone.restapi=8.15.2 plone.app.iterate=4.0.2 plone.rest=2.0.0a1" -e APPLY_PROFILES=plone.app.contenttypes:plone-content,plone.restapi:default,plone.app.iterate:default,plone.volto:default-homepage -e CONFIGURE_PACKAGES=plone.app.contenttypes,plone.restapi,plone.volto,plone.volto.cors -e ADDONS='plone.app.robotframework plone.app.contenttypes plone.restapi plone.app.iterate plone.volto' plone ./bin/robot-server plone.app.robotframework.testing.PLONE_ROBOT_TESTING # ZSERVER_PORT=55001 CONFIGURE_PACKAGES=plone.app.contenttypes,plone.restapi,plone.app.iterate,plone.volto,plone.volto.cors APPLY_PROFILES=plone.app.contenttypes:plone-content,plone.restapi:default,plone.app.iterate:default,plone.volto:default-homepage ./api/bin/robot-server plone.app.robotframework.testing.PLONE_ROBOT_TESTING .PHONY: test-acceptance-server-old diff --git a/api/buildout.cfg b/api/buildout.cfg index 1a1fd904ad..575b22194e 100644 --- a/api/buildout.cfg +++ b/api/buildout.cfg @@ -73,7 +73,7 @@ eggs = ${instance:eggs} [versions] setuptools = zc.buildout = -plone.restapi = 8.13.0 +plone.restapi = 8.15.2 plone.rest = 2.0.0a1 # p.a.iterate 4 adds support for working copy support From b96916142f7a72758f6e38ca50893440a5319dd1 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=C3=89rico=20Andrei?= Date: Wed, 24 Nov 2021 17:07:19 +0100 Subject: [PATCH 17/56] Get Add/Edit schema contextually (#2855) --- CHANGELOG.md | 2 ++ src/actions/schema/schema.js | 6 ++++-- src/actions/schema/schema.test.js | 10 ++++++++++ src/components/manage/Add/Add.jsx | 2 +- src/components/manage/Edit/Edit.jsx | 5 ++++- 5 files changed, 21 insertions(+), 4 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 76f848a3ec..5a562bcb0f 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -8,6 +8,8 @@ ### Bugfix +- Get Add/Edit schema contextually #2852 @ericof + ### Internal - Upgrade p.restapi to 8.15.2 @sneridagh diff --git a/src/actions/schema/schema.js b/src/actions/schema/schema.js index 1d3417f886..2ef8bd434e 100644 --- a/src/actions/schema/schema.js +++ b/src/actions/schema/schema.js @@ -14,14 +14,16 @@ import { * Get schema function. * @function getSchema * @param {string} type Content type. + * @param {string} url Content url. * @returns {Object} Get schema action. */ -export function getSchema(type) { +export function getSchema(type, url) { + url = typeof url !== 'undefined' ? url : ''; return { type: GET_SCHEMA, request: { op: 'get', - path: `/@types/${type}`, + path: `${url}/@types/${type}`, }, }; } diff --git a/src/actions/schema/schema.test.js b/src/actions/schema/schema.test.js index 770b68ef0d..5e8ae37ac0 100644 --- a/src/actions/schema/schema.test.js +++ b/src/actions/schema/schema.test.js @@ -11,5 +11,15 @@ describe('Schema action', () => { expect(action.request.op).toEqual('get'); expect(action.request.path).toEqual(`/@types/${type}`); }); + + it('should create an action to get the schema if url is passed', () => { + const type = 'Document'; + const url = '/path/to/folder'; + const action = getSchema(type, url); + + expect(action.type).toEqual(GET_SCHEMA); + expect(action.request.op).toEqual('get'); + expect(action.request.path).toEqual(`${url}/@types/${type}`); + }); }); }); diff --git a/src/components/manage/Add/Add.jsx b/src/components/manage/Add/Add.jsx index 86f8e499a1..232780f1ae 100644 --- a/src/components/manage/Add/Add.jsx +++ b/src/components/manage/Add/Add.jsx @@ -149,7 +149,7 @@ class Add extends Component { * @returns {undefined} */ componentDidMount() { - this.props.getSchema(this.props.type); + this.props.getSchema(this.props.type, getBaseUrl(this.props.pathname)); this.setState({ isClient: true }); } diff --git a/src/components/manage/Edit/Edit.jsx b/src/components/manage/Edit/Edit.jsx index 7de4b1cfdf..1cd01f7ece 100644 --- a/src/components/manage/Edit/Edit.jsx +++ b/src/components/manage/Edit/Edit.jsx @@ -136,7 +136,10 @@ class Edit extends Component { */ componentDidMount() { if (this.props.getRequest.loaded && this.props.content?.['@type']) { - this.props.getSchema(this.props.content['@type']); + this.props.getSchema( + this.props.content['@type'], + getBaseUrl(this.props.pathname), + ); } this.setState({ isClient: true, From 40e5c58eeef05a4f69f4d2047b60fc8e41de58df Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=C3=89rico=20Andrei?= Date: Wed, 24 Nov 2021 19:07:31 +0100 Subject: [PATCH 18/56] Fix external link not supported by Navigation component (#2854) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Co-authored-by: Víctor Fernández de Alba --- CHANGELOG.md | 1 + src/components/theme/Navigation/NavItem.jsx | 36 ++++++++++++ src/components/theme/Navigation/NavItems.jsx | 17 +----- .../theme/Navigation/Navigation.test.jsx | 26 +++++++++ .../__snapshots__/Navigation.test.jsx.snap | 55 +++++++++++++++++++ 5 files changed, 120 insertions(+), 15 deletions(-) create mode 100644 src/components/theme/Navigation/NavItem.jsx diff --git a/CHANGELOG.md b/CHANGELOG.md index 5a562bcb0f..5c20634203 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -8,6 +8,7 @@ ### Bugfix +- Fix external link not supported by Navigation component #2853. @ericof - Get Add/Edit schema contextually #2852 @ericof ### Internal diff --git a/src/components/theme/Navigation/NavItem.jsx b/src/components/theme/Navigation/NavItem.jsx new file mode 100644 index 0000000000..05160f12dc --- /dev/null +++ b/src/components/theme/Navigation/NavItem.jsx @@ -0,0 +1,36 @@ +import React from 'react'; +import { NavLink } from 'react-router-dom'; +import { isInternalURL } from '@plone/volto/helpers'; +import config from '@plone/volto/registry'; + +const NavItem = ({ item, lang }) => { + const { settings } = config; + if (isInternalURL(item.url)) { + return ( + + {item.title} + + ); + } else { + return ( + + {item.title} + + ); + } +}; + +export default NavItem; diff --git a/src/components/theme/Navigation/NavItems.jsx b/src/components/theme/Navigation/NavItems.jsx index 48839e91f6..ced0e90441 100644 --- a/src/components/theme/Navigation/NavItems.jsx +++ b/src/components/theme/Navigation/NavItems.jsx @@ -1,24 +1,11 @@ import React from 'react'; -import { NavLink } from 'react-router-dom'; -import config from '@plone/volto/registry'; +import NavItem from './NavItem'; const NavItems = ({ items, lang }) => { - const { settings } = config; - return ( <> {items.map((item) => ( - - {item.title} - + ))} ); diff --git a/src/components/theme/Navigation/Navigation.test.jsx b/src/components/theme/Navigation/Navigation.test.jsx index 209ec4f188..68d0bc0136 100644 --- a/src/components/theme/Navigation/Navigation.test.jsx +++ b/src/components/theme/Navigation/Navigation.test.jsx @@ -115,4 +115,30 @@ describe('Navigation', () => { const json = component.toJSON(); expect(json).toMatchSnapshot(); }); + + it('renders a navigation component including external links', () => { + const store = mockStore({ + navigation: { + items: [ + { title: 'Blog', url: '/blog' }, + { title: 'Users', url: '/users' }, + { title: 'Store', url: 'https://store.plone.org' }, + ], + }, + userSession: { token: '1234' }, + intl: { + locale: 'en', + messages: {}, + }, + }); + const component = renderer.create( + + + + + , + ); + const json = component.toJSON(); + expect(json).toMatchSnapshot(); + }); }); diff --git a/src/components/theme/Navigation/__snapshots__/Navigation.test.jsx.snap b/src/components/theme/Navigation/__snapshots__/Navigation.test.jsx.snap index 964c40f1a7..5913fac16e 100644 --- a/src/components/theme/Navigation/__snapshots__/Navigation.test.jsx.snap +++ b/src/components/theme/Navigation/__snapshots__/Navigation.test.jsx.snap @@ -1,5 +1,60 @@ // Jest Snapshot v1, https://goo.gl/fbAQLP +exports[`Navigation renders a navigation component including external links 1`] = ` +
+ +
+ + +`; + exports[`Navigation renders a navigation component with an active item 1`] = `