@budibase/bbui 1.0.105-alpha.41 → 1.0.105-alpha.44

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.
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@budibase/bbui",
3
3
  "description": "A UI solution used in the different Budibase projects.",
4
- "version": "1.0.105-alpha.41",
4
+ "version": "1.0.105-alpha.44",
5
5
  "license": "MPL-2.0",
6
6
  "svelte": "src/index.js",
7
7
  "module": "dist/bbui.es.js",
@@ -38,7 +38,7 @@
38
38
  ],
39
39
  "dependencies": {
40
40
  "@adobe/spectrum-css-workflow-icons": "^1.2.1",
41
- "@budibase/string-templates": "^1.0.105-alpha.41",
41
+ "@budibase/string-templates": "^1.0.105-alpha.44",
42
42
  "@spectrum-css/actionbutton": "^1.0.1",
43
43
  "@spectrum-css/actiongroup": "^1.0.1",
44
44
  "@spectrum-css/avatar": "^3.0.2",
@@ -84,5 +84,5 @@
84
84
  "svelte-flatpickr": "^3.2.3",
85
85
  "svelte-portal": "^1.0.0"
86
86
  },
87
- "gitHead": "b5a5efbf595ab6052259366291a51fd33f02094d"
87
+ "gitHead": "ca260b68cc32135d03a3cc994d456bf5df95e414"
88
88
  }
@@ -6,6 +6,7 @@
6
6
  export let disabled = false
7
7
  export let align = "left"
8
8
  export let portalTarget
9
+ export let dataCy
9
10
 
10
11
  let anchor
11
12
  let dropdown
@@ -36,7 +37,7 @@
36
37
  <div use:getAnchor on:click={openMenu}>
37
38
  <slot name="control" />
38
39
  </div>
39
- <Popover bind:this={dropdown} {anchor} {align} {portalTarget}>
40
+ <Popover bind:this={dropdown} {anchor} {align} {portalTarget} {dataCy}>
40
41
  <Menu>
41
42
  <slot />
42
43
  </Menu>
@@ -3,6 +3,9 @@
3
3
  </script>
4
4
 
5
5
  <script>
6
+ import Tooltip from "../Tooltip/Tooltip.svelte"
7
+ import { fade } from "svelte/transition"
8
+
6
9
  export let direction = "n"
7
10
  export let name = "Add"
8
11
  export let hidden = false
@@ -10,30 +13,52 @@
10
13
  export let hoverable = false
11
14
  export let disabled = false
12
15
  export let color
16
+ export let tooltip
13
17
 
14
18
  $: rotation = getRotation(direction)
15
19
 
20
+ let showTooltip = false
21
+
16
22
  const getRotation = direction => {
17
23
  return directions.indexOf(direction) * 45
18
24
  }
19
25
  </script>
20
26
 
21
- <svg
22
- on:click
23
- class:hoverable
24
- class:disabled
25
- class="spectrum-Icon spectrum-Icon--size{size}"
26
- focusable="false"
27
- aria-hidden={hidden}
28
- aria-label={name}
29
- style={`transform: rotate(${rotation}deg); ${
30
- color ? `color: ${color};` : ""
31
- }`}
27
+ <div
28
+ class="icon"
29
+ on:mouseover={() => (showTooltip = true)}
30
+ on:focus={() => (showTooltip = true)}
31
+ on:mouseleave={() => (showTooltip = false)}
32
+ on:click={() => (showTooltip = false)}
32
33
  >
33
- <use xlink:href="#spectrum-icon-18-{name}" />
34
- </svg>
34
+ <svg
35
+ on:click
36
+ class:hoverable
37
+ class:disabled
38
+ class="spectrum-Icon spectrum-Icon--size{size}"
39
+ focusable="false"
40
+ aria-hidden={hidden}
41
+ aria-label={name}
42
+ style={`transform: rotate(${rotation}deg); ${
43
+ color ? `color: ${color};` : ""
44
+ }`}
45
+ >
46
+ <use style="pointer-events: none;" xlink:href="#spectrum-icon-18-{name}" />
47
+ </svg>
48
+ {#if tooltip && showTooltip}
49
+ <div class="tooltip" in:fade={{ duration: 130, delay: 250 }}>
50
+ <Tooltip textWrapping direction={"bottom"} text={tooltip} />
51
+ </div>
52
+ {/if}
53
+ </div>
35
54
 
36
55
  <style>
56
+ .icon {
57
+ position: relative;
58
+ display: grid;
59
+ place-items: center;
60
+ }
61
+
37
62
  svg.hoverable {
38
63
  pointer-events: all;
39
64
  transition: color var(--spectrum-global-animation-duration-100, 130ms);
@@ -47,4 +72,15 @@
47
72
  color: var(--spectrum-global-color-gray-500) !important;
48
73
  pointer-events: none !important;
49
74
  }
75
+
76
+ .tooltip {
77
+ position: absolute;
78
+ pointer-events: none;
79
+ left: 50%;
80
+ top: calc(100% + 4px);
81
+ width: 100vw;
82
+ max-width: 150px;
83
+ transform: translateX(-50%);
84
+ text-align: center;
85
+ }
50
86
  </style>
@@ -23,6 +23,7 @@
23
23
  export let secondaryButtonText = undefined
24
24
  export let secondaryAction = undefined
25
25
  export let secondaryButtonWarning = false
26
+ export let dataCy = null
26
27
 
27
28
  const { hide, cancel } = getContext(Context.Modal)
28
29
  let loading = false
@@ -63,21 +64,26 @@
63
64
  role="dialog"
64
65
  tabindex="-1"
65
66
  aria-modal="true"
67
+ data-cy={dataCy}
66
68
  >
67
69
  <div class="spectrum-Dialog-grid">
68
- {#if title}
70
+ {#if title || $$slots.header}
69
71
  <h1
70
72
  class="spectrum-Dialog-heading spectrum-Dialog-heading--noHeader"
71
73
  class:noDivider={!showDivider}
72
74
  class:header-spacing={$$slots.header}
73
75
  >
74
- {title}
75
- <slot name="header" />
76
+ {#if title}
77
+ {title}
78
+ {:else if $$slots.header}
79
+ <slot name="header" />
80
+ {/if}
76
81
  </h1>
77
82
  {#if showDivider}
78
83
  <Divider size="M" />
79
84
  {/if}
80
85
  {/if}
86
+
81
87
  <!-- TODO: Remove content-grid class once Layout components are in bbui -->
82
88
  <section class="spectrum-Dialog-content content-grid">
83
89
  <slot />
@@ -10,6 +10,17 @@
10
10
  export let anchor
11
11
  export let align = "right"
12
12
  export let portalTarget
13
+ export let dataCy
14
+
15
+ export let direction = "bottom"
16
+ export let showTip = false
17
+
18
+ let tipSvg =
19
+ '<svg xmlns="http://www.w3.org/svg/2000" width="23" height="12" class="spectrum-Popover-tip" > <path class="spectrum-Popover-tip-triangle" d="M 0.7071067811865476 0 L 11.414213562373096 10.707106781186548 L 22.121320343559645 0" /> </svg>'
20
+
21
+ $: tooltipClasses = showTip
22
+ ? `spectrum-Popover--withTip spectrum-Popover--${direction}`
23
+ : ""
13
24
 
14
25
  export const show = () => {
15
26
  dispatch("open")
@@ -37,9 +48,14 @@
37
48
  use:positionDropdown={{ anchor, align }}
38
49
  use:clickOutside={hide}
39
50
  on:keydown={handleEscape}
40
- class="spectrum-Popover is-open"
51
+ class={"spectrum-Popover is-open " + (tooltipClasses || "")}
41
52
  role="presentation"
53
+ data-cy={dataCy}
42
54
  >
55
+ {#if showTip}
56
+ {@html tipSvg}
57
+ {/if}
58
+
43
59
  <slot />
44
60
  </div>
45
61
  </Portal>
@@ -49,4 +65,13 @@
49
65
  .spectrum-Popover {
50
66
  min-width: var(--spectrum-global-dimension-size-2000) !important;
51
67
  }
68
+ .spectrum-Popover.is-open.spectrum-Popover--withTip {
69
+ margin-top: var(--spacing-xs);
70
+ margin-left: var(--spacing-xl);
71
+ }
72
+ :global(.spectrum-Popover--bottom .spectrum-Popover-tip),
73
+ :global(.spectrum-Popover--top .spectrum-Popover-tip) {
74
+ left: 90%;
75
+ margin-left: calc(var(--spectrum-global-dimension-size-150) * -1);
76
+ }
52
77
  </style>