diff --git a/package-lock.json b/package-lock.json index da435a7fe0..aa7c84c363 100644 --- a/package-lock.json +++ b/package-lock.json @@ -37,6 +37,7 @@ "figlet": "^1.2.4", "file-loader": "^6.0.0", "find-up": "^4.1.0", + "floating-vue": "^1.0.0-beta.14", "fs-extra": "^9.0.1", "gh-pages": "^2.1.1", "highlight.js": "^10.4.1", @@ -1949,6 +1950,19 @@ "which": "bin/which" } }, + "node_modules/@floating-ui/core": { + "version": "0.3.1", + "resolved": "https://registry.npmjs.org/@floating-ui/core/-/core-0.3.1.tgz", + "integrity": "sha512-ensKY7Ub59u16qsVIFEo2hwTCqZ/r9oZZFh51ivcLGHfUwTn8l1Xzng8RJUe91H/UP8PeqeBronAGx0qmzwk2g==" + }, + "node_modules/@floating-ui/dom": { + "version": "0.1.10", + "resolved": "https://registry.npmjs.org/@floating-ui/dom/-/dom-0.1.10.tgz", + "integrity": "sha512-4kAVoogvQm2N0XE0G6APQJuCNuErjOfPW8Ux7DFxh8+AfugWflwVJ5LDlHOwrwut7z/30NUvdtHzQ3zSip4EzQ==", + "dependencies": { + "@floating-ui/core": "^0.3.0" + } + }, "node_modules/@fortawesome/fontawesome-free": { "version": "5.15.4", "resolved": "https://registry.npmjs.org/@fortawesome/fontawesome-free/-/fontawesome-free-5.15.4.tgz", @@ -11109,6 +11123,18 @@ "resolved": "https://registry.npmjs.org/flatted/-/flatted-3.1.1.tgz", "integrity": "sha512-zAoAQiudy+r5SvnSw3KJy5os/oRJYHzrzja/tBDqrZtNhUw8bt6y8OBzMWcjWr+8liV8Eb6yOhw8WZ7VFZ5ZzA==" }, + "node_modules/floating-vue": { + "version": "1.0.0-beta.14", + "resolved": "https://registry.npmjs.org/floating-vue/-/floating-vue-1.0.0-beta.14.tgz", + "integrity": "sha512-75ADBk17Ke5hU/bZ+Kq0BpdQl/nzfK1Fz4AUwqFhg0vP11I/g2yv2VU4k120qHNL5+i7OXhr66b+i4pqEsuiRg==", + "dependencies": { + "@floating-ui/dom": "^0.1.10", + "vue-resize": "^1.0.0" + }, + "peerDependencies": { + "vue": "^2.6.10" + } + }, "node_modules/flush-write-stream": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/flush-write-stream/-/flush-write-stream-1.1.1.tgz", @@ -25346,6 +25372,17 @@ "node": ">=4.0.0" } }, + "node_modules/vue-resize": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/vue-resize/-/vue-resize-1.0.1.tgz", + "integrity": "sha512-z5M7lJs0QluJnaoMFTIeGx6dIkYxOwHThlZDeQnWZBizKblb99GSejPnK37ZbNE/rVwDcYcHY+Io+AxdpY952w==", + "dependencies": { + "@babel/runtime": "^7.13.10" + }, + "peerDependencies": { + "vue": "^2.6.0" + } + }, "node_modules/vue-server-renderer": { "version": "2.6.14", "resolved": "https://registry.npmjs.org/vue-server-renderer/-/vue-server-renderer-2.6.14.tgz", @@ -28262,6 +28299,19 @@ } } }, + "@floating-ui/core": { + "version": "0.3.1", + "resolved": "https://registry.npmjs.org/@floating-ui/core/-/core-0.3.1.tgz", + "integrity": "sha512-ensKY7Ub59u16qsVIFEo2hwTCqZ/r9oZZFh51ivcLGHfUwTn8l1Xzng8RJUe91H/UP8PeqeBronAGx0qmzwk2g==" + }, + "@floating-ui/dom": { + "version": "0.1.10", + "resolved": "https://registry.npmjs.org/@floating-ui/dom/-/dom-0.1.10.tgz", + "integrity": "sha512-4kAVoogvQm2N0XE0G6APQJuCNuErjOfPW8Ux7DFxh8+AfugWflwVJ5LDlHOwrwut7z/30NUvdtHzQ3zSip4EzQ==", + "requires": { + "@floating-ui/core": "^0.3.0" + } + }, "@fortawesome/fontawesome-free": { "version": "5.15.4", "resolved": "https://registry.npmjs.org/@fortawesome/fontawesome-free/-/fontawesome-free-5.15.4.tgz", @@ -35763,6 +35813,15 @@ "resolved": "https://registry.npmjs.org/flatted/-/flatted-3.1.1.tgz", "integrity": "sha512-zAoAQiudy+r5SvnSw3KJy5os/oRJYHzrzja/tBDqrZtNhUw8bt6y8OBzMWcjWr+8liV8Eb6yOhw8WZ7VFZ5ZzA==" }, + "floating-vue": { + "version": "1.0.0-beta.14", + "resolved": "https://registry.npmjs.org/floating-vue/-/floating-vue-1.0.0-beta.14.tgz", + "integrity": "sha512-75ADBk17Ke5hU/bZ+Kq0BpdQl/nzfK1Fz4AUwqFhg0vP11I/g2yv2VU4k120qHNL5+i7OXhr66b+i4pqEsuiRg==", + "requires": { + "@floating-ui/dom": "^0.1.10", + "vue-resize": "^1.0.0" + } + }, "flush-write-stream": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/flush-write-stream/-/flush-write-stream-1.1.1.tgz", @@ -47084,6 +47143,14 @@ } } }, + "vue-resize": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/vue-resize/-/vue-resize-1.0.1.tgz", + "integrity": "sha512-z5M7lJs0QluJnaoMFTIeGx6dIkYxOwHThlZDeQnWZBizKblb99GSejPnK37ZbNE/rVwDcYcHY+Io+AxdpY952w==", + "requires": { + "@babel/runtime": "^7.13.10" + } + }, "vue-server-renderer": { "version": "2.6.14", "resolved": "https://registry.npmjs.org/vue-server-renderer/-/vue-server-renderer-2.6.14.tgz", diff --git a/packages/vue-components/README.md b/packages/vue-components/README.md index bb0f1daadb..b32eb9f7ad 100644 --- a/packages/vue-components/README.md +++ b/packages/vue-components/README.md @@ -12,8 +12,6 @@ Most of the styles are based on Bootstrap's markup and CSS, but no dependency on Many of the components under this folder were originally from [MarkBind/vue-strap](https://github.com/MarkBind/vue-strap), forked from [yuche/vue-strap](https://github.com/yuche/vue-strap), and modified to suit MarkBind's needs for educational and documentation websites. -The generated bundle also includes some of [BootstrapVue's](https://bootstrap-vue.org/) components. - Some custom components and directives are also added for MarkBind's use. ### MarkBind components newly created or revamped since moving here @@ -21,9 +19,9 @@ Some custom components and directives are also added for MarkBind's use. - Question.vue - QOption.vue - Quiz.vue -- Popover.vue (built on bootstrap-vue's popovers) -- Tooltip.vue (built on bootstrap-vue's tooltips) -- Trigger.vue (built on bootstrap-vue's popovers and tooltips) +- Popover.vue (built on floating-vue's [Menu](https://floating-vue.starpad.dev/guide/component.html#hover-menu) component) +- Tooltip.vue (built on floating-vue's [Tooltip](https://floating-vue.starpad.dev/guide/component.html#tooltip) component) +- Trigger.vue (built on vue-final-modal's [$vfm API](https://vue-final-modal.org/api#api) and Floating Vue's Menus and Tooltips) ### MarkBind components ported from [MarkBind/vue-strap](https://github.com/MarkBind/vue-strap): @@ -50,11 +48,6 @@ Some custom components and directives are also added for MarkBind's use. - Tabset.vue - Typeahead.vue -### BootstrapVue components included in the bundle - -- Popover.vue -- Tooltip.vue - ## Installation ### Browser globals diff --git a/packages/vue-components/package.json b/packages/vue-components/package.json index d36dbd6a9a..2ca6d01ed8 100644 --- a/packages/vue-components/package.json +++ b/packages/vue-components/package.json @@ -38,6 +38,7 @@ "bootstrap-vue": "^2.16.0", "css-loader": "^3.6.0", "eslint-plugin-vue": "^7.9.0", + "floating-vue": "^1.0.0-beta.14", "jest": "^27.5.1", "jest-serializer-vue": "^2.0.2", "portal-vue": "^2.1.7", diff --git a/packages/vue-components/src/Popover.vue b/packages/vue-components/src/Popover.vue index 370548280f..09abe9660c 100644 --- a/packages/vue-components/src/Popover.vue +++ b/packages/vue-components/src/Popover.vue @@ -4,43 +4,50 @@ data-mb-component-type="popover" tabindex="0" > - - - - -
+ +

+ +

+
- - - diff --git a/packages/vue-components/src/Tooltip.vue b/packages/vue-components/src/Tooltip.vue index f64b82510f..86e320ad0e 100644 --- a/packages/vue-components/src/Tooltip.vue +++ b/packages/vue-components/src/Tooltip.vue @@ -4,33 +4,36 @@ data-mb-component-type="tooltip" tabindex="0" > - + - - - - + + + + + diff --git a/packages/vue-components/src/Trigger.vue b/packages/vue-components/src/Trigger.vue index 91888c0530..e80ebd5d63 100644 --- a/packages/vue-components/src/Trigger.vue +++ b/packages/vue-components/src/Trigger.vue @@ -5,34 +5,51 @@ @[triggerEventType].stop="toggle()" > - -