diff --git a/.circleci/config.yml b/.circleci/config.yml index aeb23948fd6..4e82f32b0b7 100644 --- a/.circleci/config.yml +++ b/.circleci/config.yml @@ -104,7 +104,7 @@ jobs: - run: tox -e test_galaxy_packages js_lint: docker: - - image: cimg/node:14.15 + - image: cimg/node:16.13.2 <<: *set_workdir steps: - *restore_yarn_cache diff --git a/client/.eslintignore b/client/.eslintignore deleted file mode 100644 index bacad2ec6e2..00000000000 --- a/client/.eslintignore +++ /dev/null @@ -1,5 +0,0 @@ -src/qunit -src/mocha -src/libs -src/nls -src/legacy diff --git a/client/.eslintrc.js b/client/.eslintrc.json similarity index 55% rename from client/.eslintrc.js rename to client/.eslintrc.json index b061f993130..7f177bcbd46 100644 --- a/client/.eslintrc.js +++ b/client/.eslintrc.json @@ -1,38 +1,36 @@ -module.exports = { - extends: [ +{ + "extends": [ "eslint:recommended", - "plugin:vue/strongly-recommended", + "plugin:vue/strongly-recommended" //"airbnb-base", eventually ], - env: { - browser: true, - commonjs: true, - es6: true, - node: true, - jest: true, + "env": { + "browser": true, + "commonjs": true, + "es6": true, + "node": true, + "jest": true }, - parserOptions: { - parser: "babel-eslint", - sourceType: "module", + "parserOptions": { + "parser": "@babel/eslint-parser", + "sourceType": "module" }, - rules: { + "rules": { // Standard rules "no-console": "off", - "no-unused-vars": ["error", { args: "none" }], + "no-unused-vars": ["error", { "args": "none" }], "prefer-const": "error", "one-var": ["error", "never"], "curly": "error", "vue/valid-v-slot": "error", - "vue/v-slot-style": ["error", { atComponent: "v-slot", default: "v-slot", named: "longform" }], - - // Now in strongly-recommended, enforce instead of warn. - "vue/attribute-hyphenation": "error", + "vue/v-slot-style": ["error", { "atComponent": "v-slot", "default": "v-slot", "named": "longform" }], // Vue TODO (enable these) "vue/require-default-prop": "warn", "vue/require-prop-types": "warn", "vue/prop-name-casing": "warn", + "vue/multi-word-component-names": "warn", // Prettier compromises/workarounds -- mostly #wontfix? "vue/html-indent": "off", @@ -41,6 +39,7 @@ module.exports = { "vue/singleline-html-element-content-newline": "off", "vue/multiline-html-element-content-newline": "off", "vue/html-closing-bracket-newline": "off", - "vue/html-closing-bracket-spacing": "off", + "vue/html-closing-bracket-spacing": "off" }, -}; + "ignorePatterns": ["src/qunit", "src/mocha", "src/libs", "src/nls", "src/legacy"] +} diff --git a/client/.node_version b/client/.node_version index c1074247761..23d9c36a118 100644 --- a/client/.node_version +++ b/client/.node_version @@ -1 +1 @@ -14.15.0 +16.13.2 diff --git a/client/docs/README.md b/client/docs/README.md deleted file mode 100644 index b57412ac27e..00000000000 --- a/client/docs/README.md +++ /dev/null @@ -1,5 +0,0 @@ -The \*.md files in this directory are rendered as a style guide generated when -running ```yarn run styleguide```. - -For more details see [Vue -Styleguidist](https://github.com/vue-styleguidist/vue-styleguidist). diff --git a/client/docs/src/component-design/avoid-using-global-Galaxy.md b/client/docs/avoid-using-global-Galaxy.md similarity index 100% rename from client/docs/src/component-design/avoid-using-global-Galaxy.md rename to client/docs/avoid-using-global-Galaxy.md diff --git a/client/docs/src/component-design/never-use-jquery.md b/client/docs/never-use-jquery.md similarity index 100% rename from client/docs/src/component-design/never-use-jquery.md rename to client/docs/never-use-jquery.md diff --git a/client/docs/src/component-design/providers-and-renderers.md b/client/docs/providers-and-renderers.md similarity index 100% rename from client/docs/src/component-design/providers-and-renderers.md rename to client/docs/providers-and-renderers.md diff --git a/client/docs/src/component-design/readme.md b/client/docs/readme.md similarity index 100% rename from client/docs/src/component-design/readme.md rename to client/docs/readme.md diff --git a/client/docs/root.js b/client/docs/root.js deleted file mode 100644 index 7e02f3f2ecc..00000000000 --- a/client/docs/root.js +++ /dev/null @@ -1,15 +0,0 @@ -/** - * Component root for rendering inside the styleguide, injects vuex store and other common elements - * into each component example section. - */ - -import store from "../src/store"; - -export default (previewComponent) => { - return { - store, - render(h) { - return h(previewComponent); - }, - }; -}; diff --git a/client/docs/sections.js b/client/docs/sections.js deleted file mode 100644 index 0b86475259a..00000000000 --- a/client/docs/sections.js +++ /dev/null @@ -1,142 +0,0 @@ -/** - * Functions for generating the sections for the style guide. Has the old style doc glob and a - * recursive tree-walker that looks through the components folder and tries to arrange found - * markdown docs in a tree. - */ - -const path = require("path"); -const fs = require("fs"); -const glob = require("glob"); -const { humanize, titleize } = require("underscore.string"); - -/** - * Gets the table of contents sections for documentation in the components folder. - * - * @param {string} rootPath absolute path to components folder - * @return {Object} Rootnode, section map, childMap - */ -function getDocSections(rootPath, options = {}) { - const { ignore = [], docSelector = "*.@(vue|md)" } = options; - - const sections = new Map(); // absolute section directory path -> section object - const childToParent = new Map(); // absolute child path -> absolute parent path - - // create root node - const rootNode = newSection(rootPath, ignore); - sections.set(rootPath, rootNode); - childToParent.set(rootPath, null); - - // get all matching doc files - const selector = path.join(rootPath, "**", docSelector); - const allFiles = glob.sync(selector, { ignore }); - - allFiles.forEach((file) => { - const p = path.parse(file); - - // intermediate dir names between this dir and root - const relPath = path.relative(rootPath, p.dir); - const midFolders = relPath.split(path.sep); - - // build intermediate parent sections in the event that this is deeply-nested - while (midFolders.length) { - const sectionPath = path.join(rootPath, ...midFolders); - if (!sections.has(sectionPath)) { - // create new section - const section = newSection(sectionPath, ignore); - sections.set(sectionPath, section); - // register relationship for tree-build later - const parentPath = path.join(sectionPath, ".."); - childToParent.set(sectionPath, parentPath); - } - midFolders.pop(); - } - - // if it's a MD file, add to parent as a subsection - const section = sections.get(p.dir); - if (section && isSubsection(section, file)) { - section.children.add({ - name: titleize(humanize(p.name)), - content: file, - }); - } - }); - - // assemble recursive section tree under rootNode - buildSectionTree(sections, childToParent); - - // rootNode is the main result, returning the maps so the user has the option to manipulate the - // tree before handing it over to the styleguide configs - return { sections, childToParent, rootNode }; -} - -function isSubsection(section, file) { - const p = path.parse(file); - - // it's not a subsection if it's not a markdown file - if (p.ext !== ".md") return false; - - // it's not a subsection if it's the same file as the section content - if (file === section.content) return false; - - // it's not a subsection if it's an example for an existing component - const matchingComponentPath = path.join(p.dir, `${p.name}.vue`); - const componentExists = fs.existsSync(matchingComponentPath); - if (componentExists) return false; - - return true; -} - -/** - * Creates a new section in the TOC from passed path. - * - * @param {string} dir absolute directory path - * @return {Object} section object - */ -function newSection(dir, ignore = []) { - const section = { - name: titleize(humanize(path.basename(dir))), - components: () => glob.sync(path.join(dir, "*.vue"), { ignore }), - children: new Set(), - sectionDepth: 1, - }; - - // summary doc is readme/docs/index.md - const summarySelector = path.join(dir, "@(readme|docs|index).md"); - const summaryDocs = glob.sync(summarySelector, { ignore, nocase: true }); - if (summaryDocs.length) { - section.content = summaryDocs[0]; - } - - return section; -} - -/** - * Turns the pair of maps into a nested object for use in the styleguide config script. Operates on - * sections array by reference. - * - * @param {Map} sections Map of path -> section object - * @param {Map} childToParent Map of childPath -> parentPath - */ -function buildSectionTree(sections, childToParent) { - // add each child to its parent - for (const [childPath, parentPath] of childToParent) { - const child = sections.get(childPath); - const parent = sections.get(parentPath); - if (child && parent && parent.children) { - parent.children.add(child); - } - } - // convert child Sets to arrays now that de-dupe not required - for (const section of sections.values()) { - section.sections = Array.from(section.children).sort((a, b) => a.name.localeCompare(b.name)); - delete section.children; - } -} - -module.exports = { - // public function - getDocSections, - // exporting these in case user wants to tweak the result tree and rebuild it - buildSectionTree, - newSection, -}; diff --git a/client/docs/src/styles/bootstrap.md b/client/docs/src/styles/bootstrap.md deleted file mode 100644 index 30ad491c74d..00000000000 --- a/client/docs/src/styles/bootstrap.md +++ /dev/null @@ -1,379 +0,0 @@ -## Buttons - -Regular buttons - -```vue -
- - - - - - - -
-``` - -Disabled - -```vue -
- - - - - - - -
-``` - -```vue -
- - - - - - -
-``` - -```vue -
- -
- - -
-
-``` - -```vue -
- -
- - -
-
-``` - -```vue -
- -
- - -
-
-``` - -```vue -
- -
- - -
-
-``` - -```vue -
- - - -
-``` - -## Alerts - -```vue -
- -

Warning!

-

Best check yo self, you're not looking too good. Nulla vitae elit libero, a pharetra augue. Praesent commodo cursus magna, vel scelerisque nisl consectetur et.

-
-``` - -```vue -
- - Oh snap! Change a few things up and try submitting again. -
-``` - -```vue -
- - Well done! You successfully read this important alert message. -
-``` - -```vue -
- - Heads up! This alert needs your attention, but it's not super important. -
-``` - -## Badges - -```vue -
- Primary - Secondary - Success - Warning - Danger - Info -
-``` - -```vue -
- -
-``` - -## Tables - -```vue -
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
#Column headingColumn headingColumn heading
1Column contentColumn contentColumn content
2Column contentColumn contentColumn content
3Column contentColumn contentColumn content
4Column contentColumn contentColumn content
5Column contentColumn contentColumn content
6Column contentColumn contentColumn content
7Column contentColumn contentColumn content
-
-``` - -## Cards - -```vue -
-
-
-
-
Header
-
-

Primary card title

-

Some quick example text to build on the card title and make up the bulk of the card's content.

-
-
-
-
Header
-
-

Secondary card title

-

Some quick example text to build on the card title and make up the bulk of the card's content.

-
-
-
-
Header
-
-

Success card title

-

Some quick example text to build on the card title and make up the bulk of the card's content.

-
-
-
-
Header
-
-

Danger card title

-

Some quick example text to build on the card title and make up the bulk of the card's content.

-
-
-
-
Header
-
-

Warning card title

-

Some quick example text to build on the card title and make up the bulk of the card's content.

-
-
-
-
Header
-
-

Info card title

-

Some quick example text to build on the card title and make up the bulk of the card's content.

-
-
-
-
Header
-
-

Light card title

-

Some quick example text to build on the card title and make up the bulk of the card's content.

-
-
-
-
Header
-
-

Dark card title

-

Some quick example text to build on the card title and make up the bulk of the card's content.

-
-
-
-
-
-
-
-
Header
-
-

Primary card title

-

Some quick example text to build on the card title and make up the bulk of the card's content.

-
-
-
-
Header
-
-

Secondary card title

-

Some quick example text to build on the card title and make up the bulk of the card's content.

-
-
-
-
Header
-
-

Success card title

-

Some quick example text to build on the card title and make up the bulk of the card's content.

-
-
-
-
Header
-
-

Danger card title

-

Some quick example text to build on the card title and make up the bulk of the card's content.

-
-
-
-
Header
-
-

Warning card title

-

Some quick example text to build on the card title and make up the bulk of the card's content.

-
-
-
-
Header
-
-

Info card title

-

Some quick example text to build on the card title and make up the bulk of the card's content.

-
-
-
-
Header
-
-

Light card title

-

Some quick example text to build on the card title and make up the bulk of the card's content.

-
-
-
-
Header
-
-

Dark card title

-

Some quick example text to build on the card title and make up the bulk of the card's content.

-
-
-
-
- -
-
-
-

Card header

-
-
Special title treatment
-
Support card subtitle
-
- Card image -
-

Some quick example text to build on the card title and make up the bulk of the card's content.

-
-
    -
  • Cras justo odio
  • -
  • Dapibus ac facilisis in
  • -
  • Vestibulum at eros
  • -
- - -
-
-
-

Card title

-
Card subtitle
-

Some quick example text to build on the card title and make up the bulk of the card's content.

- Card link - Another link -
-
-
-
-
-``` diff --git a/client/docs/src/styles/galaxy-styles/buttons.md b/client/docs/src/styles/galaxy-styles/buttons.md deleted file mode 100644 index 30675603809..00000000000 --- a/client/docs/src/styles/galaxy-styles/buttons.md +++ /dev/null @@ -1,49 +0,0 @@ -## Buttons - -```vue - -``` - -```vue -An anchor with .action-button -``` - -All the crazy permutations of menu button... - -```vue -An anchor with .menu-button -``` - -```vue -An anchor with .menu-button.popup -``` - -```vue - - An anchor with .menu-button.popup.split - -``` - -## Radio Buttons - -As generated by mvc.ui.ui-options - -```vue -
- - - -
-``` - -## Pagination - -```vue - -``` diff --git a/client/docs/src/styles/galaxy-styles/forms.md b/client/docs/src/styles/galaxy-styles/forms.md deleted file mode 100644 index 662f096689b..00000000000 --- a/client/docs/src/styles/galaxy-styles/forms.md +++ /dev/null @@ -1,55 +0,0 @@ -## Forms - -Manually crafted "tool" form class, this is broken in the BS4 branch I think. - -```vue -
-
-
- - -
-
- -
-
-
-``` - -Portlet variant generated by mvc.form.form-view - -```vue -
-
-
-
- - Portlet Title
-
-
-
-
-
-
-
-
- - Text Field 1 -
-
- - - -
- -
-
- -
Password
-
-
-
-``` diff --git a/client/docs/src/styles/galaxy-styles/masthead.md b/client/docs/src/styles/galaxy-styles/masthead.md deleted file mode 100644 index 164ed6e5060..00000000000 --- a/client/docs/src/styles/galaxy-styles/masthead.md +++ /dev/null @@ -1,69 +0,0 @@ -## Masthead - -As generated by layout.masthead.js - -Default height: - -```vue - -``` - -Override height with "height: 80px;" - -```vue - -``` - -Override height with "height: 4rem;" - -```vue - -``` diff --git a/client/docs/src/styles/galaxy-styles/menus.md b/client/docs/src/styles/galaxy-styles/menus.md deleted file mode 100644 index 12763f91d02..00000000000 --- a/client/docs/src/styles/galaxy-styles/menus.md +++ /dev/null @@ -1,19 +0,0 @@ -## Popup menus - -These are the classes for the menu itself, normally floating, so placed inside -a relative element. - -```vue -
-
- -
-
-``` diff --git a/client/docs/src/styles/galaxy-styles/messages.md b/client/docs/src/styles/galaxy-styles/messages.md deleted file mode 100644 index 51397a8403c..00000000000 --- a/client/docs/src/styles/galaxy-styles/messages.md +++ /dev/null @@ -1,33 +0,0 @@ -### Panel Messages - -Messages that appear across the top of the panel view below the masthead. - -```vue -
-
-
I'm a panel-{{type}}-message
-
-
-``` - -### Large Messages - -Used for providing feedback inline. - -```vue -
-
-
I'm a {{type}}messagelarge
-
-
-``` - -### Small Messages - -```vue -
-
-
I'm a {{type}}message
-
-
-``` diff --git a/client/docs/src/styles/galaxy-styles/panels.md b/client/docs/src/styles/galaxy-styles/panels.md deleted file mode 100644 index 373f457bcdb..00000000000 --- a/client/docs/src/styles/galaxy-styles/panels.md +++ /dev/null @@ -1,20 +0,0 @@ -## Panel (toolMenuContainer) - -```vue -
-
-
-
- Header -
-
-
-
- one
- two
- three
-
-
-
-
-``` diff --git a/client/docs/src/styles/galaxy-styles/tables.md b/client/docs/src/styles/galaxy-styles/tables.md deleted file mode 100644 index 66a2ffd3f94..00000000000 --- a/client/docs/src/styles/galaxy-styles/tables.md +++ /dev/null @@ -1,14 +0,0 @@ -## Tables - -Tables using the .grid class - -```vue - - - - - - - -
OneTwo
Value 1Value 2
-``` diff --git a/client/docs/src/styles/galaxy-styles/tabs.md b/client/docs/src/styles/galaxy-styles/tabs.md deleted file mode 100644 index d8f19e05504..00000000000 --- a/client/docs/src/styles/galaxy-styles/tabs.md +++ /dev/null @@ -1,32 +0,0 @@ -## Tabs - -Tabs as generated by mvc.ui.ui-tabs - -```vue - -``` diff --git a/client/docs/test/sample-docs/a-file.md b/client/docs/test/sample-docs/a-file.md deleted file mode 100644 index bd8d6998af4..00000000000 --- a/client/docs/test/sample-docs/a-file.md +++ /dev/null @@ -1 +0,0 @@ -# testdocs/a-file.md \ No newline at end of file diff --git a/client/docs/test/sample-docs/another-file.md b/client/docs/test/sample-docs/another-file.md deleted file mode 100644 index c8d2be4519d..00000000000 --- a/client/docs/test/sample-docs/another-file.md +++ /dev/null @@ -1 +0,0 @@ -# testdocs/another-file.md \ No newline at end of file diff --git a/client/docs/test/sample-docs/component-example/SomeComponent.md b/client/docs/test/sample-docs/component-example/SomeComponent.md deleted file mode 100644 index e69de29bb2d..00000000000 diff --git a/client/docs/test/sample-docs/component-example/SomeComponent.vue b/client/docs/test/sample-docs/component-example/SomeComponent.vue deleted file mode 100644 index ef519b76833..00000000000 --- a/client/docs/test/sample-docs/component-example/SomeComponent.vue +++ /dev/null @@ -1,3 +0,0 @@ - \ No newline at end of file diff --git a/client/docs/test/sample-docs/contains-ommitted-file/ignored-file.md b/client/docs/test/sample-docs/contains-ommitted-file/ignored-file.md deleted file mode 100644 index 18c16545f98..00000000000 --- a/client/docs/test/sample-docs/contains-ommitted-file/ignored-file.md +++ /dev/null @@ -1 +0,0 @@ -# ignored-file.md \ No newline at end of file diff --git a/client/docs/test/sample-docs/contains-ommitted-file/some-loose-file.md b/client/docs/test/sample-docs/contains-ommitted-file/some-loose-file.md deleted file mode 100644 index 7cc5029a826..00000000000 --- a/client/docs/test/sample-docs/contains-ommitted-file/some-loose-file.md +++ /dev/null @@ -1 +0,0 @@ -# some-loose-file.md \ No newline at end of file diff --git a/client/docs/test/sample-docs/has-readme/loose.md b/client/docs/test/sample-docs/has-readme/loose.md deleted file mode 100644 index 70ef94ec877..00000000000 --- a/client/docs/test/sample-docs/has-readme/loose.md +++ /dev/null @@ -1 +0,0 @@ -# loose file \ No newline at end of file diff --git a/client/docs/test/sample-docs/has-readme/readme.md b/client/docs/test/sample-docs/has-readme/readme.md deleted file mode 100644 index eb8b03babff..00000000000 --- a/client/docs/test/sample-docs/has-readme/readme.md +++ /dev/null @@ -1 +0,0 @@ -# testdocs/abc/readme.md \ No newline at end of file diff --git a/client/docs/test/sample-docs/ignored/foo.md b/client/docs/test/sample-docs/ignored/foo.md deleted file mode 100644 index ad96c729e02..00000000000 --- a/client/docs/test/sample-docs/ignored/foo.md +++ /dev/null @@ -1 +0,0 @@ -# foo \ No newline at end of file diff --git a/client/docs/test/sample-docs/nested-folders/another-nested-folder/should-exist.md b/client/docs/test/sample-docs/nested-folders/another-nested-folder/should-exist.md deleted file mode 100644 index e69de29bb2d..00000000000 diff --git a/client/docs/test/sample-docs/no-summary-file/another-loose-file.md b/client/docs/test/sample-docs/no-summary-file/another-loose-file.md deleted file mode 100644 index 5be0105b76e..00000000000 --- a/client/docs/test/sample-docs/no-summary-file/another-loose-file.md +++ /dev/null @@ -1 +0,0 @@ -# another loose file \ No newline at end of file diff --git a/client/docs/test/sample-docs/no-summary-file/loose.md b/client/docs/test/sample-docs/no-summary-file/loose.md deleted file mode 100644 index 8306ab6295b..00000000000 --- a/client/docs/test/sample-docs/no-summary-file/loose.md +++ /dev/null @@ -1 +0,0 @@ -# Loose file \ No newline at end of file diff --git a/client/docs/test/sections.test.js b/client/docs/test/sections.test.js deleted file mode 100644 index d079ffe3162..00000000000 --- a/client/docs/test/sections.test.js +++ /dev/null @@ -1,62 +0,0 @@ -/** - * Tests the functions which build the sections for the styleguide. - */ - -const path = require("path"); -const { getDocSections } = require("../sections"); - -const getSectionByName = (sections, name) => sections.find((o) => o.name == name); - -describe("getDocSections", () => { - const ignore = [ - // ignoring a whole directory - "**/ignored/*", - // ignoring a file - "**/ignore*", - ]; - const testDocRoot = path.join(__dirname, "sample-docs"); - const { rootNode } = getDocSections(testDocRoot, { ignore }); - - test("section generation", () => { - expect(rootNode.name).toEqual("Sample Docs"); - expect(rootNode.sections.length).toEqual(7); - expect(rootNode.content).toBeUndefined(); - }); - - test("nested subsection should appear even if no docs in intermediate folders", () => { - const deepSection = getSectionByName(rootNode.sections, "Nested Folders"); - expect(deepSection.sections.length).toEqual(1); - }); - - test("subdirectory with readme should register as summary", () => { - const subsection = getSectionByName(rootNode.sections, "Has Readme"); - - // readme interpreted as content file and not as loose section - // one other loose file - expect(subsection.content).toContain("readme.md"); - expect(subsection.sections.length).toEqual(1); - }); - - test("subdirectory with no readme file", () => { - const subsection = getSectionByName(rootNode.sections, "No Summary File"); - - // should just see 2 folders no summary - expect(subsection.content).toBeUndefined(); - expect(subsection.sections.length).toEqual(2); - }); - - test("subdirectory with ignored file", () => { - const subsection = getSectionByName(rootNode.sections, "Contains Ommitted File"); - expect(subsection.sections.length).toEqual(1); - }); - - test("ignored subdirectory", () => { - const ignoredSection = getSectionByName(rootNode.sections, "Ignored"); - expect(ignoredSection).toBeUndefined(); - }); - - test("should not create a section for a component example file", () => { - const section = getSectionByName(rootNode.sections, "Component Example"); - expect(section.sections.length).toEqual(0); - }); -}); diff --git a/client/docs/src/component-design/unit-testing/debugging-unit-tests.md b/client/docs/unit-testing/debugging-unit-tests.md similarity index 100% rename from client/docs/src/component-design/unit-testing/debugging-unit-tests.md rename to client/docs/unit-testing/debugging-unit-tests.md diff --git a/client/docs/src/component-design/unit-testing/readme.md b/client/docs/unit-testing/readme.md similarity index 100% rename from client/docs/src/component-design/unit-testing/readme.md rename to client/docs/unit-testing/readme.md diff --git a/client/docs/src/component-design/unit-testing/strategies.md b/client/docs/unit-testing/strategies.md similarity index 100% rename from client/docs/src/component-design/unit-testing/strategies.md rename to client/docs/unit-testing/strategies.md diff --git a/client/docs/src/component-design/unit-testing/writing-tests.md b/client/docs/unit-testing/writing-tests.md similarity index 100% rename from client/docs/src/component-design/unit-testing/writing-tests.md rename to client/docs/unit-testing/writing-tests.md diff --git a/client/package.json b/client/package.json index faedd886b87..f03123c8ffb 100644 --- a/client/package.json +++ b/client/package.json @@ -11,8 +11,7 @@ }, "license": "AFL-3.0", "resolutions": { - "**/chokidar": "3.5.2", - "**/ua-parser-js": "0.7.30" + "**/chokidar": "3.5.3" }, "dependencies": { "@fortawesome/fontawesome-free": "^5.15.4", @@ -20,21 +19,22 @@ "@fortawesome/free-brands-svg-icons": "^5.15.4", "@fortawesome/free-regular-svg-icons": "^5.15.4", "@fortawesome/free-solid-svg-icons": "^5.15.4", - "@fortawesome/vue-fontawesome": "^2.0.2", + "@fortawesome/vue-fontawesome": "^2.0.6", "@galaxyproject/bootstrap-tour": "^0.12.1", "@handsontable/vue": "^2.0.0-beta1", - "@hirez_io/observer-spy": "^2.1.0", + "@hirez_io/observer-spy": "^2.1.2", "@johmun/vue-tags-input": "^2.1.0", - "@sentry/browser": "^5.20.1", - "axios": "^0.21.1", + "@sentry/browser": "^6.17.4", + "assert": "^2.0.0", + "axios": "^0.25.0", "babel-runtime": "^6.26.0", "backbone": "1.4.0", - "bootstrap": "4.5.0", + "bootstrap": "4.6", "bootstrap-vue": "^2.21.2", - "citation-js": "^0.5.1", - "core-js": "^3.19.1", + "citation-js": "^0.5.5", + "core-js": "^3.21.0", "d3": "3", - "date-fns": "^2.24.0", + "date-fns": "^2.28.0", "decode-uri-component": "^0.2.0", "deep-diff": "^1.0.2", "deep-equal": "^2.0.5", @@ -44,18 +44,19 @@ "flush-promises": "^1.0.2", "glob": "^7.2.0", "handsontable": "^2.0.0", - "imask": "^6.2.2", + "imask": "^6.4.0", "in-viewport": "^3.6.0", "is-promise": "^4.0.0", "isotope-layout": "^3.0.6", - "iter-tools": "7.1.4", + "iter-tools": "7.2.0", "jquery": "2", "jquery-migrate": "~1.4", "jquery-mousewheel": "^3.1.13", - "jquery-ui": "^1.12.1", + "jquery-ui": "^1.13.1", "jquery.cookie": "^1.4.1", - "jspdf": "^2.4.0", - "linkifyjs": "^2.1.9", + "jspdf": "^2.5.1", + "linkify-html": "^3.0.5", + "linkifyjs": "^3.0.5", "markdown-it": "^12.3.2", "markdown-it-regexp": "^0.4.0", "moment": "2.29.1", @@ -68,36 +69,38 @@ "pouchdb-find": "^7.2.2", "pouchdb-upsert": "^2.2.0", "pretty-bytes": "^5.6.0", - "proper-skip-list": "^4.0.2", + "proper-skip-list": "^4.1.0", "pyre-to-regexp": "^0.0.5", + "querystring-es3": "^0.2.1", "regenerator-runtime": "^0.13.9", "regression": "^2.0.1", "requirejs": "2.3.6", - "rxjs": "^7.4.0", - "rxjs-spy": "^8.0.0", + "rxjs": "^7.5.2", + "rxjs-spy": "^8.0.2", "rxjs-spy-devtools-plugin": "^0.0.4", - "slugify": "^1.6.0", + "slugify": "^1.6.5", "snake-case": "^3.0.4", "splitpanes": "2.3.8", "stream-browserify": "^3.0.0", - "threads": "^1.6.5", + "threads": "^1.7.0", "timers-browserify": "^2.0.12", "toastr": "^2.1.4", "tus-js-client": "^2.3.0", - "underscore": "^1.10.2", - "underscore.string": "^3.3.5", + "underscore": "^1.13.2", + "underscore.string": "^3.3.6", + "util": "^0.12.4", "vue": "^2.6.14", "vue-infinite-scroll": "^2.0.2", - "vue-multiselect": "^2.1.0", + "vue-multiselect": "^2.1.6", "vue-observe-visibility": "^1.0.0", "vue-prismjs": "^1.2.0", - "vue-router": "^3.5.2", + "vue-router": "^3.5.3", "vue-rx": "^6.2.0", "vue-scrollto": "^2.20.0", "vuedraggable": "2.24.3", "vueisotope": "^3.1.2", - "vuex": "^3.4.0", - "vuex-cache": "^3.2.0", + "vuex": "^3.6.2", + "vuex-cache": "^3.4.0", "vuex-persist": "^3.1.3", "vuex-persistedstate": "^4.1.0", "xml-beautifier": "^0.5.0" @@ -117,76 +120,72 @@ "save-build-hash": "(git rev-parse HEAD 2>/dev/null || echo '') >../static/client_build_hash.txt", "prettier": "prettier --write 'src/style/scss/**/*.scss' 'src/**/{*.js,*.vue}' '!src/libs/**'", "prettier-check": "prettier --check 'src/style/scss/**/*.scss' 'src/**/{*.js,*.vue}' '!src/libs/**'", - "styleguide": "vue-styleguidist server", - "styleguide:build": "vue-styleguidist build", "test": "yarn run qunit && yarn run jest", "jest": "jest --config tests/jest/jest.config.js", "jest-watch": "jest --config tests/jest/jest.config.js --watch", "qunit": "karma start tests/karma/karma.config.qunit.js", - "eslint": "eslint -c .eslintrc.js src --ext .js,.vue" + "eslint": "eslint -c .eslintrc.json src --ext .js,.vue" }, "devDependencies": { - "@babel/core": "^7.15.8", - "@babel/helper-validator-identifier": "^7.15.7", + "@babel/core": "^7.17.0", + "@babel/eslint-parser": "^7.17.0", + "@babel/helper-validator-identifier": "^7.16.7", "@babel/plugin-syntax-dynamic-import": "^7.8.3", - "@babel/plugin-transform-runtime": "^7.15.8", - "@babel/preset-env": "^7.15.8", + "@babel/plugin-transform-runtime": "^7.17.0", + "@babel/preset-env": "^7.16.11", "@cerner/duplicate-package-checker-webpack-plugin": "^2.1.0", - "@testing-library/jest-dom": "^5.14.1", - "@vue/test-utils": "^1.2.2", - "@vue/vue2-jest": "^27.0.0-alpha.2", + "@testing-library/jest-dom": "^5.16.2", + "@vue/test-utils": "^1.3.0", + "@vue/vue2-jest": "^27.0.0-alpha.4", "amdi18n-loader": "^0.9.3", - "autoprefixer": "^10.3.5", + "autoprefixer": "^10.4.2", "axios-mock-adapter": "^1.20.0", "babel-core": "^7.0.0-bridge.0", - "babel-eslint": "^10.1.0", - "babel-jest": "^27.2.5", - "babel-loader": "^8.2.2", + "babel-jest": "^27.4.6", + "babel-loader": "^8.2.3", "babel-plugin-transform-inline-environment-variables": "^0.4.3", "babel-plugin-transform-vue-template": "^0.4.2", "buffer": "^6.0.3", - "chai": "^4.2.0", - "chokidar": "^3.5.2", - "css-loader": "^6.3.0", - "css-minimizer-webpack-plugin": "^3.0.2", + "chai": "^4.3.6", + "css-loader": "^6.6.0", + "css-minimizer-webpack-plugin": "^3.4.1", "del": "^6.0.0", - "eslint": "^7.32.0", - "eslint-plugin-vue": "^7.18.0", - "expose-loader": "^3.0.0", + "eslint": "^8.8.0", + "eslint-plugin-vue": "^8.4.1", + "expose-loader": "^3.1.0", "gulp": "^4.0.2", "ignore-loader": "^0.1.2", - "imports-loader": "^3.0.0", - "jest": "^27.2.5", + "imports-loader": "^3.1.1", + "jest": "^27.4.7", "jest-raw-loader": "^1.0.1", - "jest-transform-yaml": "0.1.2", + "jest-transform-yaml": "1.0.0", "json-loader": "^0.5.7", - "karma": "^6.3.4", + "karma": "^6.3.13", "karma-chrome-launcher": "^3.1.0", "karma-polyfill": "^1.1.0", - "karma-qunit": "^4.1.1", + "karma-qunit": "^4.1.2", "karma-webpack": "^5.0.0", - "mini-css-extract-plugin": "^2.4.2", - "postcss-loader": "^6.1.1", - "prettier": "^2.4.1", + "mini-css-extract-plugin": "^2.5.3", + "postcss-loader": "^6.2.1", + "prettier": "^2.5.1", "process": "^0.11.10", "qunit": "^2.17.2", "raw-loader": "^4.0.2", - "sass": "^1.42.1", - "sass-loader": "^12.1.0", - "sinon": "^11.1.2", + "sass": "^1.49.7", + "sass-loader": "^12.4.0", + "sinon": "^13.0.1", "store": "^2.0.12", - "style-loader": "^3.3.0", + "style-loader": "^3.3.1", "uuid": "^8.3.2", "vue-loader": "^15.9.8", - "vue-styleguidist": "^4.41.2", "vue-template-compiler": "^2.6.14", - "webpack": "^5.58.0", - "webpack-cli": "^4.9.0", - "webpack-dev-server": "^4.2.1", + "webpack": "^5.68.0", + "webpack-cli": "^4.9.2", + "webpack-dev-server": "^4.7.4", "webpack-merge": "^5.8.0", "yaml-loader": "^0.6.0" }, "peerDependencies": { - "postcss": "^8.2.8" + "postcss": "^8.4.6" } } diff --git a/client/src/components/Collections/PairedListCollectionCreator.vue b/client/src/components/Collections/PairedListCollectionCreator.vue index 5bd7d66d3af..36238198529 100644 --- a/client/src/components/Collections/PairedListCollectionCreator.vue +++ b/client/src/components/Collections/PairedListCollectionCreator.vue @@ -248,13 +248,7 @@
+ class="unpaired-filter forward-unpaired-filter float-left search-input search-query input-group">
+ class="unpaired-filter reverse-unpaired-filter float-left search-input search-query input-group">
@@ -12,7 +12,7 @@