@budibase/bbui 3.36.3 → 3.36.4

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": "3.36.3",
4
+ "version": "3.36.4",
5
5
  "license": "MPL-2.0",
6
6
  "module": "dist/bbui.mjs",
7
7
  "exports": {
@@ -103,5 +103,5 @@
103
103
  }
104
104
  }
105
105
  },
106
- "gitHead": "6a1af9e82701e0341177e290c6bc695663e2d8e4"
106
+ "gitHead": "5e383bc443a2e84c6788f6b73f457f4a48e5cb2f"
107
107
  }
@@ -10,6 +10,7 @@
10
10
  export let text: string | undefined = undefined
11
11
  export let disabled = false
12
12
  export let readonly = false
13
+ export let quiet = false
13
14
  export let size: "S" | "M" | "L" | "XL" = "M"
14
15
  export let indeterminate = false
15
16
 
@@ -23,12 +24,14 @@
23
24
 
24
25
  <label
25
26
  class="spectrum-Checkbox {sizeClass}"
26
- class:spectrum-Checkbox--emphasized={!disabled}
27
+ class:spectrum-Checkbox--emphasized={!disabled && !quiet}
28
+ class:is-indeterminate={indeterminate}
27
29
  class:is-disabled={disabled}
28
30
  class:readonly
29
31
  >
30
32
  <input
31
- checked={value || indeterminate}
33
+ checked={value}
34
+ {indeterminate}
32
35
  {disabled}
33
36
  on:change={onChange}
34
37
  type="checkbox"
@@ -1,10 +1,13 @@
1
1
  <script lang="ts">
2
2
  import { createEventDispatcher, getContext } from "svelte"
3
3
  import { writable } from "svelte/store"
4
+ import Checkbox from "../Form/Core/Checkbox.svelte"
4
5
  import Icon from "../Icon/Icon.svelte"
5
6
  import type { TreeViewContext } from "./context"
6
7
 
7
8
  export let selected: boolean = false
9
+ export let showCheckbox: boolean = false
10
+ export let indeterminate: boolean = false
8
11
  export let disabled: boolean = false
9
12
  export let open: boolean = false
10
13
  export let href: string | null = null
@@ -18,10 +21,11 @@
18
21
  selectable: writable(false),
19
22
  quiet: writable(false),
20
23
  }
21
-
24
+ const selectableStore = treeViewContext.selectable
22
25
  const quietStore = treeViewContext.quiet
23
26
  const dispatch = createEventDispatcher<{ toggle: boolean; select: boolean }>()
24
27
 
28
+ $: isSelectable = !!$selectableStore
25
29
  $: isQuiet = !!$quietStore
26
30
  $: if (!hasChildren) {
27
31
  open = false
@@ -47,6 +51,10 @@
47
51
  dispatch("toggle", open)
48
52
  }
49
53
  }
54
+
55
+ const handleCheckboxChange = (event: CustomEvent<boolean>) => {
56
+ dispatch("select", event.detail)
57
+ }
50
58
  </script>
51
59
 
52
60
  <li
@@ -57,10 +65,23 @@
57
65
  >
58
66
  <a
59
67
  on:click
60
- class:spectrum-TreeView-itemLink--selectable={!disabled}
68
+ class:spectrum-TreeView-itemLink--selectable={isSelectable && !disabled}
61
69
  class="spectrum-TreeView-itemLink"
62
70
  {href}
63
71
  >
72
+ {#if showCheckbox}
73
+ <span class="checkbox-wrapper">
74
+ <Checkbox
75
+ value={selected}
76
+ {indeterminate}
77
+ size="S"
78
+ quiet={isQuiet}
79
+ {disabled}
80
+ on:change={handleCheckboxChange}
81
+ />
82
+ </span>
83
+ {/if}
84
+
64
85
  {#if hasChildren}
65
86
  <span
66
87
  class="spectrum-TreeView-itemIndicator"
@@ -96,6 +117,14 @@
96
117
  </li>
97
118
 
98
119
  <style>
120
+ .checkbox-wrapper {
121
+ display: flex;
122
+ align-items: center;
123
+ justify-content: center;
124
+ margin-inline-end: var(--spacing-s);
125
+ flex-shrink: 0;
126
+ }
127
+
99
128
  .item-post {
100
129
  margin-inline-start: auto;
101
130
  padding-inline-end: 8px;
@@ -106,6 +135,11 @@
106
135
  margin: 0;
107
136
  }
108
137
 
138
+ .checkbox-wrapper :global(.spectrum-Checkbox) {
139
+ margin: 0;
140
+ min-height: 0;
141
+ }
142
+
109
143
  .spectrum-TreeView-itemIndicator :global(i) {
110
144
  font-size: 12px;
111
145
  }
@@ -7,12 +7,15 @@
7
7
  export let quiet: boolean = false
8
8
  export let standalone: boolean = true
9
9
  export let width: string = "250px"
10
+ export let selectable: boolean = false
10
11
 
11
12
  const treeViewContext: TreeViewContext = {
13
+ selectable: writable(selectable),
12
14
  quiet: writable(quiet),
13
15
  }
14
16
  setContext("bbui-treeview", treeViewContext)
15
17
 
18
+ $: treeViewContext.selectable.set(selectable)
16
19
  $: treeViewContext.quiet.set(quiet)
17
20
  </script>
18
21
 
@@ -1,5 +1,6 @@
1
1
  import type { Writable } from "svelte/store"
2
2
 
3
3
  export interface TreeViewContext {
4
+ selectable: Writable<boolean>
4
5
  quiet: Writable<boolean>
5
6
  }