@gitlab/ui 111.8.1 → 111.9.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (30) hide show
  1. package/CHANGELOG.md +7 -0
  2. package/dist/components/base/breadcrumb/breadcrumb.js +1 -1
  3. package/dist/components/base/daterange_picker/daterange_picker.js +1 -1
  4. package/dist/components/base/filtered_search/filtered_search.js +1 -1
  5. package/dist/components/base/search_box_by_click/search_box_by_click.js +1 -1
  6. package/dist/components/base/sorting/sorting.js +1 -1
  7. package/dist/components/base/tooltip/tooltip.js +4 -2
  8. package/dist/components/shared_components/clear_icon_button/clear_icon_button.js +1 -1
  9. package/dist/components/utilities/truncate/truncate.js +1 -1
  10. package/dist/directives/tooltip/container.js +7 -0
  11. package/dist/directives/tooltip/tooltip.js +18 -0
  12. package/dist/index.js +2 -1
  13. package/dist/tokens/tokens_story.js +1 -1
  14. package/dist/tokens/tokens_table.js +1 -1
  15. package/package.json +1 -1
  16. package/src/components/base/breadcrumb/breadcrumb.vue +1 -1
  17. package/src/components/base/daterange_picker/daterange_picker.vue +1 -1
  18. package/src/components/base/filtered_search/filtered_search.vue +1 -1
  19. package/src/components/base/search_box_by_click/search_box_by_click.vue +1 -1
  20. package/src/components/base/sorting/sorting.vue +1 -1
  21. package/src/components/base/tooltip/tooltip.vue +3 -0
  22. package/src/components/shared_components/clear_icon_button/clear_icon_button.vue +1 -1
  23. package/src/components/utilities/truncate/truncate.vue +1 -1
  24. package/src/directives/tooltip/container.js +7 -0
  25. package/src/directives/tooltip/tooltip.js +22 -0
  26. package/src/index.js +2 -1
  27. package/src/tokens/tokens_story.vue +1 -1
  28. package/src/tokens/tokens_table.vue +1 -1
  29. package/dist/directives/tooltip.js +0 -1
  30. package/src/directives/tooltip.js +0 -1
package/CHANGELOG.md CHANGED
@@ -1,3 +1,10 @@
1
+ # [111.9.0](https://gitlab.com/gitlab-org/gitlab-ui/compare/v111.8.1...v111.9.0) (2025-03-27)
2
+
3
+
4
+ ### Features
5
+
6
+ * **GlTooltip:** add custom global container selector ([691e2b0](https://gitlab.com/gitlab-org/gitlab-ui/commit/691e2b0a7dda4135f2c8b0a665952edb51ec046e))
7
+
1
8
  ## [111.8.1](https://gitlab.com/gitlab-org/gitlab-ui/compare/v111.8.0...v111.8.1) (2025-03-27)
2
9
 
3
10
 
@@ -2,7 +2,7 @@ import debounce from 'lodash/debounce';
2
2
  import { translate } from '../../../utils/i18n';
3
3
  import GlAvatar from '../avatar/avatar';
4
4
  import GlDisclosureDropdown from '../new_dropdowns/disclosure/disclosure_dropdown';
5
- import { GlTooltipDirective } from '../../../directives/tooltip';
5
+ import { GlTooltipDirective } from '../../../directives/tooltip/tooltip';
6
6
  import { breadCrumbSizeOptions } from '../../../utils/constants';
7
7
  import GlBreadcrumbItem from './breadcrumb_item';
8
8
  import __vue_normalize__ from 'vue-runtime-helpers/dist/normalize-component.js';
@@ -1,5 +1,5 @@
1
1
  import uniqueId from 'lodash/uniqueId';
2
- import { GlTooltipDirective } from '../../../directives/tooltip';
2
+ import { GlTooltipDirective } from '../../../directives/tooltip/tooltip';
3
3
  import { getDateInPast, getDateInFuture, getDayDifference } from '../../../utils/datetime_utility';
4
4
  import GlDatepicker from '../datepicker/datepicker';
5
5
  import GlIcon from '../icon/icon';
@@ -1,7 +1,7 @@
1
1
  import isEqual from 'lodash/isEqual';
2
2
  import cloneDeep from 'lodash/cloneDeep';
3
3
  import { PortalTarget } from 'portal-vue';
4
- import { GlTooltipDirective } from '../../../directives/tooltip';
4
+ import { GlTooltipDirective } from '../../../directives/tooltip/tooltip';
5
5
  import GlIcon from '../icon/icon';
6
6
  import GlSearchBoxByClick from '../search_box_by_click/search_box_by_click';
7
7
  import GlFilteredSearchTerm from './filtered_search_term';
@@ -1,4 +1,4 @@
1
- import { GlTooltipDirective } from '../../../directives/tooltip';
1
+ import { GlTooltipDirective } from '../../../directives/tooltip/tooltip';
2
2
  import GlClearIconButton from '../../shared_components/clear_icon_button/clear_icon_button';
3
3
  import GlButton from '../button/button';
4
4
  import GlDisclosureDropdown from '../new_dropdowns/disclosure/disclosure_dropdown';
@@ -1,4 +1,4 @@
1
- import { GlTooltipDirective } from '../../../directives/tooltip';
1
+ import { GlTooltipDirective } from '../../../directives/tooltip/tooltip';
2
2
  import GlButton from '../button/button';
3
3
  import GlButtonGroup from '../button_group/button_group';
4
4
  import GlCollapsibleListbox from '../new_dropdowns/listbox/listbox';
@@ -1,6 +1,7 @@
1
1
  import { BTooltip } from '../../../vendor/bootstrap-vue/src/components/tooltip/tooltip';
2
2
  import { tooltipDelay } from '../../../utils/constants';
3
3
  import tooltipMixin from '../../mixins/tooltip_mixin';
4
+ import { getGlTooltipDefaultContainer } from '../../../directives/tooltip/container';
4
5
  import __vue_normalize__ from 'vue-runtime-helpers/dist/normalize-component.js';
5
6
 
6
7
  //
@@ -13,14 +14,15 @@ var script = {
13
14
  },
14
15
  mixins: [tooltipMixin(tooltipRefName)],
15
16
  inheritAttrs: false,
16
- tooltipRefName
17
+ tooltipRefName,
18
+ getGlTooltipDefaultContainer
17
19
  };
18
20
 
19
21
  /* script */
20
22
  const __vue_script__ = script;
21
23
 
22
24
  /* template */
23
- var __vue_render__ = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('b-tooltip',_vm._g(_vm._b({ref:_vm.$options.tooltipRefName,attrs:{"delay":_vm.$options.tooltipDelay}},'b-tooltip',_vm.$attrs,false),_vm.$listeners),[_vm._t("default")],2)};
25
+ var __vue_render__ = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('b-tooltip',_vm._g(_vm._b({ref:_vm.$options.tooltipRefName,attrs:{"container":_vm.$attrs.container || _vm.$options.getGlTooltipDefaultContainer(),"delay":_vm.$options.tooltipDelay}},'b-tooltip',_vm.$attrs,false),_vm.$listeners),[_vm._t("default")],2)};
24
26
  var __vue_staticRenderFns__ = [];
25
27
 
26
28
  /* style */
@@ -1,4 +1,4 @@
1
- import { GlTooltipDirective } from '../../../directives/tooltip';
1
+ import { GlTooltipDirective } from '../../../directives/tooltip/tooltip';
2
2
  import GlButton from '../../base/button/button';
3
3
  import { translate } from '../../../utils/i18n';
4
4
  import __vue_normalize__ from 'vue-runtime-helpers/dist/normalize-component.js';
@@ -1,4 +1,4 @@
1
- import { GlTooltipDirective } from '../../../directives/tooltip';
1
+ import { GlTooltipDirective } from '../../../directives/tooltip/tooltip';
2
2
  import { GlResizeObserverDirective } from '../../../directives/resize_observer/resize_observer';
3
3
  import { POSITION, ZERO_WIDTH_SPACE } from './constants';
4
4
  import __vue_normalize__ from 'vue-runtime-helpers/dist/normalize-component.js';
@@ -0,0 +1,7 @@
1
+ let containerSelector;
2
+ const setGlTooltipDefaultContainer = selector => {
3
+ containerSelector = selector;
4
+ };
5
+ const getGlTooltipDefaultContainer = () => containerSelector;
6
+
7
+ export { getGlTooltipDefaultContainer, setGlTooltipDefaultContainer };
@@ -0,0 +1,18 @@
1
+ import { VBTooltip } from '../../vendor/bootstrap-vue/src/directives/tooltip';
2
+ import { getGlTooltipDefaultContainer } from './container';
3
+
4
+ const patchHook = hook => (el, bindings, vnode) => {
5
+ hook(el, {
6
+ ...bindings,
7
+ arg: bindings.arg || getGlTooltipDefaultContainer()
8
+ }, vnode);
9
+ };
10
+ const bind = patchHook(VBTooltip.bind);
11
+ const componentUpdated = patchHook(VBTooltip.componentUpdated);
12
+ const GlTooltipDirective = {
13
+ ...VBTooltip,
14
+ bind,
15
+ componentUpdated
16
+ };
17
+
18
+ export { GlTooltipDirective };
package/dist/index.js CHANGED
@@ -104,7 +104,8 @@ export { default as GlSprintf } from './components/utilities/sprintf/sprintf';
104
104
  export { default as GlTruncate } from './components/utilities/truncate/truncate';
105
105
  export { default as GlTruncateText } from './components/utilities/truncate_text/truncate_text';
106
106
  export { GlModalDirective } from './directives/modal';
107
- export { GlTooltipDirective } from './directives/tooltip';
107
+ export { GlTooltipDirective } from './directives/tooltip/tooltip';
108
+ export { setGlTooltipDefaultContainer } from './directives/tooltip/container';
108
109
  export { GlResizeObserverDirective } from './directives/resize_observer/resize_observer';
109
110
  export { GlCollapseToggleDirective } from './directives/collapse_toggle';
110
111
  export { SafeLinkDirective as GlSafeLinkDirective } from './directives/safe_link/safe_link';
@@ -1,5 +1,5 @@
1
1
  import { colorFromBackground } from '../utils/utils';
2
- import { GlTooltipDirective } from '../directives/tooltip';
2
+ import { GlTooltipDirective } from '../directives/tooltip/tooltip';
3
3
  import GlBadge from '../components/base/badge/badge';
4
4
  import GlColorContrast from '../internal/color_contrast/color_contrast';
5
5
  import __vue_normalize__ from 'vue-runtime-helpers/dist/normalize-component.js';
@@ -6,7 +6,7 @@ import GlSearchBoxByType from '../components/base/search_box_by_type/search_box_
6
6
  import GlLink from '../components/base/link/link';
7
7
  import GlTable from '../components/base/table/table';
8
8
  import GlPagination from '../components/base/pagination/pagination';
9
- import { GlTooltipDirective } from '../directives/tooltip';
9
+ import { GlTooltipDirective } from '../directives/tooltip/tooltip';
10
10
  import TOKENS_DEFAULT from './build/json/tokens.json';
11
11
  import TOKENS_DARK from './build/json/tokens.dark.json';
12
12
  import __vue_normalize__ from 'vue-runtime-helpers/dist/normalize-component.js';
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@gitlab/ui",
3
- "version": "111.8.1",
3
+ "version": "111.9.0",
4
4
  "description": "GitLab UI Components",
5
5
  "license": "MIT",
6
6
  "main": "dist/index.js",
@@ -4,7 +4,7 @@ import debounce from 'lodash/debounce';
4
4
  import { translate } from '../../../utils/i18n';
5
5
  import GlAvatar from '../avatar/avatar.vue';
6
6
  import GlDisclosureDropdown from '../new_dropdowns/disclosure/disclosure_dropdown.vue';
7
- import { GlTooltipDirective } from '../../../directives/tooltip';
7
+ import { GlTooltipDirective } from '../../../directives/tooltip/tooltip';
8
8
  import { breadCrumbSizeOptions } from '../../../utils/constants';
9
9
  import GlBreadcrumbItem from './breadcrumb_item.vue';
10
10
 
@@ -1,6 +1,6 @@
1
1
  <script>
2
2
  import uniqueId from 'lodash/uniqueId';
3
- import { GlTooltipDirective } from '../../../directives/tooltip';
3
+ import { GlTooltipDirective } from '../../../directives/tooltip/tooltip';
4
4
  import { getDayDifference, getDateInPast, getDateInFuture } from '../../../utils/datetime_utility';
5
5
  import GlDatepicker from '../datepicker/datepicker.vue';
6
6
  import GlIcon from '../icon/icon.vue';
@@ -2,7 +2,7 @@
2
2
  import isEqual from 'lodash/isEqual';
3
3
  import cloneDeep from 'lodash/cloneDeep';
4
4
  import { PortalTarget } from 'portal-vue';
5
- import { GlTooltipDirective } from '../../../directives/tooltip';
5
+ import { GlTooltipDirective } from '../../../directives/tooltip/tooltip';
6
6
  import GlIcon from '../icon/icon.vue';
7
7
  import GlSearchBoxByClick from '../search_box_by_click/search_box_by_click.vue';
8
8
  import GlFilteredSearchTerm from './filtered_search_term.vue';
@@ -1,5 +1,5 @@
1
1
  <script>
2
- import { GlTooltipDirective } from '../../../directives/tooltip';
2
+ import { GlTooltipDirective } from '../../../directives/tooltip/tooltip';
3
3
  import GlClearIconButton from '../../shared_components/clear_icon_button/clear_icon_button.vue';
4
4
  import GlButton from '../button/button.vue';
5
5
  import GlDisclosureDropdown from '../new_dropdowns/disclosure/disclosure_dropdown.vue';
@@ -1,5 +1,5 @@
1
1
  <script>
2
- import { GlTooltipDirective } from '../../../directives/tooltip';
2
+ import { GlTooltipDirective } from '../../../directives/tooltip/tooltip';
3
3
  import GlButton from '../button/button.vue';
4
4
  import GlButtonGroup from '../button_group/button_group.vue';
5
5
  import GlCollapsibleListbox from '../new_dropdowns/listbox/listbox.vue';
@@ -3,6 +3,7 @@
3
3
  import { BTooltip } from '../../../vendor/bootstrap-vue/src/components/tooltip/tooltip';
4
4
  import { tooltipDelay } from '../../../utils/constants';
5
5
  import tooltipMixin from '../../mixins/tooltip_mixin';
6
+ import { getGlTooltipDefaultContainer } from '../../../directives/tooltip/container';
6
7
 
7
8
  const tooltipRefName = 'bvTooltip';
8
9
 
@@ -15,6 +16,7 @@ export default {
15
16
  mixins: [tooltipMixin(tooltipRefName)],
16
17
  inheritAttrs: false,
17
18
  tooltipRefName,
19
+ getGlTooltipDefaultContainer,
18
20
  };
19
21
  </script>
20
22
 
@@ -22,6 +24,7 @@ export default {
22
24
  <b-tooltip
23
25
  :ref="$options.tooltipRefName"
24
26
  v-bind="$attrs"
27
+ :container="$attrs.container || $options.getGlTooltipDefaultContainer()"
25
28
  :delay="$options.tooltipDelay"
26
29
  v-on="$listeners"
27
30
  >
@@ -1,5 +1,5 @@
1
1
  <script>
2
- import { GlTooltipDirective } from '../../../directives/tooltip';
2
+ import { GlTooltipDirective } from '../../../directives/tooltip/tooltip';
3
3
  import GlButton from '../../base/button/button.vue';
4
4
  import { translate } from '../../../utils/i18n';
5
5
 
@@ -1,6 +1,6 @@
1
1
  <!-- eslint-disable vue/multi-word-component-names -->
2
2
  <script>
3
- import { GlTooltipDirective } from '../../../directives/tooltip';
3
+ import { GlTooltipDirective } from '../../../directives/tooltip/tooltip';
4
4
  import { GlResizeObserverDirective } from '../../../directives/resize_observer/resize_observer';
5
5
  import { POSITION, ZERO_WIDTH_SPACE } from './constants';
6
6
 
@@ -0,0 +1,7 @@
1
+ let containerSelector;
2
+
3
+ export const setGlTooltipDefaultContainer = (selector) => {
4
+ containerSelector = selector;
5
+ };
6
+
7
+ export const getGlTooltipDefaultContainer = () => containerSelector;
@@ -0,0 +1,22 @@
1
+ import { VBTooltip } from '../../vendor/bootstrap-vue/src/directives/tooltip';
2
+ import { getGlTooltipDefaultContainer } from './container';
3
+
4
+ const patchHook = (hook) => (el, bindings, vnode) => {
5
+ hook(
6
+ el,
7
+ {
8
+ ...bindings,
9
+ arg: bindings.arg || getGlTooltipDefaultContainer(),
10
+ },
11
+ vnode
12
+ );
13
+ };
14
+
15
+ const bind = patchHook(VBTooltip.bind);
16
+ const componentUpdated = patchHook(VBTooltip.componentUpdated);
17
+
18
+ export const GlTooltipDirective = {
19
+ ...VBTooltip,
20
+ bind,
21
+ componentUpdated,
22
+ };
package/src/index.js CHANGED
@@ -120,7 +120,8 @@ export { default as GlTruncateText } from './components/utilities/truncate_text/
120
120
 
121
121
  // Directives
122
122
  export { GlModalDirective } from './directives/modal';
123
- export { GlTooltipDirective } from './directives/tooltip';
123
+ export { GlTooltipDirective } from './directives/tooltip/tooltip';
124
+ export { setGlTooltipDefaultContainer } from './directives/tooltip/container';
124
125
  export { GlResizeObserverDirective } from './directives/resize_observer/resize_observer';
125
126
  export { GlCollapseToggleDirective } from './directives/collapse_toggle';
126
127
  export { SafeLinkDirective as GlSafeLinkDirective } from './directives/safe_link/safe_link';
@@ -1,6 +1,6 @@
1
1
  <script>
2
2
  import { colorFromBackground } from '../utils/utils';
3
- import { GlTooltipDirective } from '../directives/tooltip';
3
+ import { GlTooltipDirective } from '../directives/tooltip/tooltip';
4
4
  import GlBadge from '../components/base/badge/badge.vue';
5
5
  import GlColorContrast from '../internal/color_contrast/color_contrast.vue';
6
6
 
@@ -7,7 +7,7 @@ import GlSearchBoxByType from '../components/base/search_box_by_type/search_box_
7
7
  import GlLink from '../components/base/link/link.vue';
8
8
  import GlTable from '../components/base/table/table.vue';
9
9
  import GlPagination from '../components/base/pagination/pagination.vue';
10
- import { GlTooltipDirective } from '../directives/tooltip';
10
+ import { GlTooltipDirective } from '../directives/tooltip/tooltip';
11
11
  import TOKENS_DEFAULT from './build/json/tokens.json';
12
12
  import TOKENS_DARK from './build/json/tokens.dark.json';
13
13
 
@@ -1 +0,0 @@
1
- export { VBTooltip as GlTooltipDirective } from '../vendor/bootstrap-vue/src/directives/tooltip/tooltip';
@@ -1 +0,0 @@
1
- export { VBTooltip as GlTooltipDirective } from '../vendor/bootstrap-vue/src/directives/tooltip/tooltip';