From 7c13372db531cf02ce46d555df70f2f9ace77791 Mon Sep 17 00:00:00 2001 From: sarahghp Date: Mon, 1 Apr 2019 15:54:49 -0400 Subject: [PATCH 1/2] Add basic Tooltip on Truncate pages --- .../examples/basic.example.vue | 15 ++++ .../tooltip_on_truncate/examples/index.js | 15 ++++ .../tooltip_on_truncate.documentation.js | 8 +++ .../tooltip_on_truncate.md | 43 +++++++++++ .../tooltip_on_truncate.vue | 69 ++++++++++++++++++ documentation/components_documentation.js | 3 + index.js | 1 + stories/base/tooltip_on_truncate.js | 71 +++++++++++++++++++ 8 files changed, 225 insertions(+) create mode 100644 components/base/tooltip_on_truncate/examples/basic.example.vue create mode 100644 components/base/tooltip_on_truncate/examples/index.js create mode 100644 components/base/tooltip_on_truncate/tooltip_on_truncate.documentation.js create mode 100644 components/base/tooltip_on_truncate/tooltip_on_truncate.md create mode 100644 components/base/tooltip_on_truncate/tooltip_on_truncate.vue create mode 100644 stories/base/tooltip_on_truncate.js diff --git a/components/base/tooltip_on_truncate/examples/basic.example.vue b/components/base/tooltip_on_truncate/examples/basic.example.vue new file mode 100644 index 0000000000..88f5843e56 --- /dev/null +++ b/components/base/tooltip_on_truncate/examples/basic.example.vue @@ -0,0 +1,15 @@ + diff --git a/components/base/tooltip_on_truncate/examples/index.js b/components/base/tooltip_on_truncate/examples/index.js new file mode 100644 index 0000000000..ca49548837 --- /dev/null +++ b/components/base/tooltip_on_truncate/examples/index.js @@ -0,0 +1,15 @@ +import GlTruncatedTooltip from './basic.example.vue'; + +export default [ + { + name: 'Component', + items: [ + { + id: 'tooltip-truncate-default', + name: 'BASIC TRUNCATION', + description: 'Default Truncated Tooltip Component', + component: GlTruncatedTooltip, + }, + ], + }, +]; diff --git a/components/base/tooltip_on_truncate/tooltip_on_truncate.documentation.js b/components/base/tooltip_on_truncate/tooltip_on_truncate.documentation.js new file mode 100644 index 0000000000..95d591e98b --- /dev/null +++ b/components/base/tooltip_on_truncate/tooltip_on_truncate.documentation.js @@ -0,0 +1,8 @@ +import * as description from './tooltip_on_truncate.md'; +import examples from './examples'; + +export default { + description, + examples, + bootstrapComponent: 'b-tooltip', +}; diff --git a/components/base/tooltip_on_truncate/tooltip_on_truncate.md b/components/base/tooltip_on_truncate/tooltip_on_truncate.md new file mode 100644 index 0000000000..a84bad5876 --- /dev/null +++ b/components/base/tooltip_on_truncate/tooltip_on_truncate.md @@ -0,0 +1,43 @@ +## Usage + +HELLO I AM THE TRUNCATED TOOLTIP + +Using the tooltip component is recommended if you have HTML content. +It is also currently required if the tooltip content needs to change while it's visible (see [this upstream issue]). +In all other cases, please use the directive. + +[this upstream issue]: https://github.com/bootstrap-vue/bootstrap-vue/issues/2142 + +**Using the component** +~~~js + + ... + + + + some tooltip text + +~~~ + +**Using the directive** +~~~js + + ... + +~~~ + +## Directive attributes + +`v-gl-tooltip` directive uses the same attributes as [`v-b-tooltip`]. + +## Under the hood +Tooltip uses [``] and [`v-b-tooltip`] internally. + +The container in the examples is not needed in CE/EE, but at the moment we scope the styles for design.gitlab.com for the usage of application.css. + +[``]: https://bootstrap-vue.js.org/docs/components/tooltip + +[`v-b-tooltip`]: https://bootstrap-vue.js.org/docs/directives/tooltip diff --git a/components/base/tooltip_on_truncate/tooltip_on_truncate.vue b/components/base/tooltip_on_truncate/tooltip_on_truncate.vue new file mode 100644 index 0000000000..71027a248f --- /dev/null +++ b/components/base/tooltip_on_truncate/tooltip_on_truncate.vue @@ -0,0 +1,69 @@ + + + diff --git a/documentation/components_documentation.js b/documentation/components_documentation.js index 98a17b79eb..1a237736c0 100644 --- a/documentation/components_documentation.js +++ b/documentation/components_documentation.js @@ -35,6 +35,9 @@ export { export { default as GlTooltipDocumentation, } from '../components/base/tooltip/tooltip.documentation'; +export { + default as GlTooltipOnTruncateDocumentation, +} from '../components/base/tooltip_on_truncate/tooltip_on_truncate.documentation'; export { default as GlDashboardSkeletonDocumentation, } from '../components/regions/dashboard_skeleton/dashboard_skeleton.documentation'; diff --git a/index.js b/index.js index 74b3b79071..e94845a4ff 100644 --- a/index.js +++ b/index.js @@ -11,6 +11,7 @@ export { export { default as GlBadge } from './components/base/badge/badge.vue'; export { default as GlButton } from './components/base/button/button.vue'; export { default as GlTooltip } from './components/base/tooltip/tooltip.vue'; +export { default as GlTooltipOnTruncate } from './components/base/tooltip_on_truncate/tooltip_on_truncate.vue'; export { default as GlDashboardSkeleton, } from './components/regions/dashboard_skeleton/dashboard_skeleton.vue'; diff --git a/stories/base/tooltip_on_truncate.js b/stories/base/tooltip_on_truncate.js new file mode 100644 index 0000000000..3e85365099 --- /dev/null +++ b/stories/base/tooltip_on_truncate.js @@ -0,0 +1,71 @@ +import { withKnobs, select } from '@storybook/addon-knobs'; +import documentedStoriesOf from '../utils/documented_stories'; +import readme from '../../components/base/tooltip/tooltip.md'; +import { tooltipPlacements } from '../utils/constants'; +import { GlTooltip, GlTooltipDirective } from '../../index'; + +const directives = { + GlTooltipDirective, +}; + +const components = { + GlTooltip, +}; + +function makeTooltip(modifier = '') { + return () => ({ + directives, + template: ` +
+ +
+ `, + mounted() { + this.$el.querySelector('button').focus(); + }, + }); +} + +function generateProps({ placement = tooltipPlacements.top } = {}) { + return { + placement: { + type: String, + default: select('placement', tooltipPlacements, placement), + }, + }; +} + +function generateTooltip() { + return () => ({ + props: generateProps(), + components, + template: ` +
+ + + Hello World! + +
+ `, + mounted() { + this.$nextTick(() => this.$el.querySelector('button').focus()); + }, + }); +} + +documentedStoriesOf('base|tooltip_on_truncate', readme) + .addDecorator(withKnobs) + .add('defaults to top', makeTooltip()) + .add('to the right', makeTooltip('.right')) + .add('to the bottom', makeTooltip('.bottom')) + .add('to the left', makeTooltip('.left')) + .add('with HTML content', generateTooltip()); -- GitLab From d825abb68220ce21edd7be7ac66ee07827afc25e Mon Sep 17 00:00:00 2001 From: Sarah Groff Hennigh-Palermo Date: Tue, 2 Apr 2019 19:07:02 +0000 Subject: [PATCH 2/2] Apply suggestion to components/base/tooltip_on_truncate/tooltip_on_truncate.vue --- components/base/tooltip_on_truncate/tooltip_on_truncate.vue | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/components/base/tooltip_on_truncate/tooltip_on_truncate.vue b/components/base/tooltip_on_truncate/tooltip_on_truncate.vue index 71027a248f..d2be5a3e4a 100644 --- a/components/base/tooltip_on_truncate/tooltip_on_truncate.vue +++ b/components/base/tooltip_on_truncate/tooltip_on_truncate.vue @@ -1,5 +1,5 @@