@geoffcox/sterling-svelte 0.0.25 → 0.0.27

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 (86) hide show
  1. package/Button.svelte +79 -24
  2. package/Button.svelte.d.ts +1 -0
  3. package/Checkbox.svelte +44 -19
  4. package/Checkbox.svelte.d.ts +1 -0
  5. package/ColorPicker.constants.d.ts +1 -0
  6. package/ColorPicker.constants.js +1 -0
  7. package/ColorPicker.svelte +226 -0
  8. package/ColorPicker.svelte.d.ts +22 -0
  9. package/ColorPicker.types.d.ts +4 -0
  10. package/ColorPicker.types.js +1 -0
  11. package/Dialog.svelte +10 -10
  12. package/Dropdown.svelte +88 -47
  13. package/Dropdown.svelte.d.ts +4 -0
  14. package/Field.svelte +34 -46
  15. package/HexColorSliders.svelte +150 -0
  16. package/HexColorSliders.svelte.d.ts +22 -0
  17. package/HslColorSliders.svelte +187 -0
  18. package/HslColorSliders.svelte.d.ts +22 -0
  19. package/Input.svelte +49 -21
  20. package/Input.svelte.d.ts +2 -1
  21. package/Label.svelte +3 -3
  22. package/Link.svelte +63 -17
  23. package/Link.svelte.d.ts +1 -0
  24. package/List.svelte +31 -30
  25. package/List.svelte.d.ts +1 -0
  26. package/List.types.d.ts +4 -3
  27. package/ListItem.svelte +29 -10
  28. package/ListItem.svelte.d.ts +1 -1
  29. package/Menu.svelte +92 -121
  30. package/Menu.svelte.d.ts +8 -2
  31. package/MenuBar.svelte +77 -32
  32. package/MenuBar.types.d.ts +2 -2
  33. package/MenuButton.svelte +48 -28
  34. package/MenuItem.constants.d.ts +1 -0
  35. package/MenuItem.constants.js +1 -0
  36. package/MenuItem.svelte +202 -139
  37. package/MenuItem.svelte.d.ts +7 -3
  38. package/MenuItem.types.d.ts +14 -5
  39. package/MenuItem.utils.d.ts +2 -0
  40. package/MenuItem.utils.js +16 -0
  41. package/MenuItemDisplay.svelte +9 -2
  42. package/MenuItemDisplay.svelte.d.ts +1 -0
  43. package/MenuSeparator.svelte +3 -3
  44. package/Popover.svelte +68 -64
  45. package/Popover.svelte.d.ts +4 -2
  46. package/Progress.svelte +14 -14
  47. package/Radio.svelte +42 -16
  48. package/Radio.svelte.d.ts +1 -0
  49. package/RgbColorSliders.svelte +161 -0
  50. package/RgbColorSliders.svelte.d.ts +22 -0
  51. package/Select.svelte +50 -32
  52. package/Slider.svelte +108 -118
  53. package/Slider.svelte.d.ts +1 -0
  54. package/Switch.svelte +97 -34
  55. package/Switch.svelte.d.ts +1 -0
  56. package/Tab.svelte +53 -30
  57. package/TabList.svelte +23 -28
  58. package/TabList.svelte.d.ts +1 -0
  59. package/TabList.types.d.ts +1 -1
  60. package/TextArea.svelte +45 -20
  61. package/TextArea.svelte.d.ts +3 -2
  62. package/Tooltip.svelte +12 -11
  63. package/Tree.svelte +37 -35
  64. package/Tree.svelte.d.ts +2 -0
  65. package/Tree.types.d.ts +1 -0
  66. package/TreeChevron.svelte +1 -1
  67. package/TreeItem.svelte +47 -10
  68. package/TreeItem.svelte.d.ts +2 -0
  69. package/TreeItemDisplay.svelte +26 -8
  70. package/TreeItemDisplay.svelte.d.ts +2 -0
  71. package/actions/clickOutside.js +1 -1
  72. package/actions/trapKeyboardFocus.d.ts +3 -0
  73. package/actions/trapKeyboardFocus.js +52 -0
  74. package/floating-ui.types.d.ts +2 -0
  75. package/index.d.ts +10 -5
  76. package/index.js +8 -3
  77. package/package.json +12 -1
  78. package/stores/prefersReducedMotion.d.ts +1 -0
  79. package/stores/prefersReducedMotion.js +10 -0
  80. package/stores/usingKeyboard.d.ts +1 -0
  81. package/stores/usingKeyboard.js +13 -0
  82. package/theme/applyTheme.js +3 -2
  83. package/theme/colors.d.ts +1 -0
  84. package/theme/colors.js +28 -13
  85. package/theme/darkTheme.js +130 -87
  86. package/theme/lightTheme.js +107 -87
package/Tab.svelte CHANGED
@@ -1,14 +1,15 @@
1
1
  <script>import { getContext } from "svelte";
2
2
  import { TAB_LIST_CONTEXT_KEY } from "./TabList.constants";
3
+ import { usingKeyboard } from "./stores/usingKeyboard";
3
4
  export let disabled = false;
4
5
  export let selected = false;
5
6
  export let text = void 0;
6
7
  export let value;
7
8
  let tabRef;
8
9
  const {
10
+ colorful,
9
11
  disabled: tabListDisabled,
10
12
  selectedValue,
11
- usingKeyboard,
12
13
  vertical
13
14
  } = getContext(TAB_LIST_CONTEXT_KEY);
14
15
  $:
@@ -36,6 +37,7 @@ export const focus = (options) => {
36
37
  bind:this={tabRef}
37
38
  aria-selected={selected}
38
39
  class="sterling-tab"
40
+ class:colorful={$colorful}
39
41
  disabled={_disabled}
40
42
  class:selected
41
43
  class:using-keyboard={$usingKeyboard}
@@ -74,7 +76,7 @@ export const focus = (options) => {
74
76
  on:pointerover
75
77
  on:pointerout
76
78
  on:pointerup
77
- on:wheel
79
+ on:wheel|passive
78
80
  >
79
81
  <div class="content">
80
82
  <slot disabled={_disabled} {selected} {value} {text}>
@@ -90,13 +92,13 @@ export const focus = (options) => {
90
92
  .sterling-tab {
91
93
  align-content: center;
92
94
  align-items: center;
93
- background-color: var(--stsv-Common__background-color);
95
+ background-color: var(--stsv-common__background-color);
94
96
  border-color: transparent;
95
- border-radius: var(--stsv-Button__border-radius);
96
- border-style: var(--stsv-Common__border-style);
97
+ border-radius: var(--stsv-button__border-radius);
98
+ border-style: var(--stsv-common__border-style);
97
99
  border-width: 0;
98
100
  box-sizing: border-box;
99
- color: var(--stsv-Common__color);
101
+ color: var(--stsv-common__color);
100
102
  cursor: pointer;
101
103
  display: grid;
102
104
  font: inherit;
@@ -127,30 +129,28 @@ export const focus = (options) => {
127
129
  column-gap: 0.15em;
128
130
  }
129
131
 
130
- .sterling-tab:hover {
131
- background-color: var(--stsv-Common__background-color--hover);
132
- color: var(--stsv-Common__color--hover);
133
- }
134
-
135
- .sterling-tab:active {
136
- background-color: var(--stsv-Common__background-color--active);
137
- color: var(--stsv-Common__color--active);
138
- }
139
-
140
132
  .sterling-tab.using-keyboard:focus-visible {
141
- outline-color: var(--stsv-Common__outline-color);
142
- outline-offset: var(--stsv-Common__outline-offset);
143
- outline-style: var(--stsv-Common__outline-style);
144
- outline-width: var(--stsv-Common__outline-width);
133
+ outline-color: var(--stsv-common__outline-color);
134
+ outline-offset: var(--stsv-common__outline-offset);
135
+ outline-style: var(--stsv-common__outline-style);
136
+ outline-width: var(--stsv-common__outline-width);
145
137
  }
146
138
 
139
+ /* ----- disabled -----*/
140
+
147
141
  .sterling-tab:disabled {
148
142
  cursor: not-allowed;
149
143
  outline: none;
150
144
  }
151
145
 
152
146
  .sterling-tab::after {
153
- background: var(--stsv-Disabled__background);
147
+ background: repeating-linear-gradient(
148
+ 45deg,
149
+ var(--stsv-common__background-color1--disabled),
150
+ var(--stsv-common__background-color1--disabled) 3px,
151
+ var(--stsv-common__background-color2--disabled) 3px,
152
+ var(--stsv-common__background-color2--disabled) 6px
153
+ );
154
154
  bottom: 0;
155
155
  content: '';
156
156
  left: 0;
@@ -166,6 +166,8 @@ export const focus = (options) => {
166
166
  opacity: 1;
167
167
  }
168
168
 
169
+ /* ----- content -----*/
170
+
169
171
  .content {
170
172
  padding: 0 0.2em;
171
173
  }
@@ -174,6 +176,8 @@ export const focus = (options) => {
174
176
  padding-top: 0.25em;
175
177
  }
176
178
 
179
+ /* ----- indicator -----*/
180
+
177
181
  .indicator {
178
182
  background-color: transparent;
179
183
  border-radius: 10000px;
@@ -190,24 +194,43 @@ export const focus = (options) => {
190
194
  width: 0.4em;
191
195
  }
192
196
 
193
- .sterling-tab:hover .indicator {
194
- background-color: var(--stsv-Display__color--faint);
197
+ .sterling-tab:not(.selected):not(:active):hover .indicator {
198
+ background-color: var(--stsv-input__border-color--hover);
199
+ opacity: 0.3;
195
200
  }
196
201
 
197
202
  .sterling-tab:active .indicator {
198
- background-color: var(--stsv-Button__border-color--hover);
203
+ background-color: var(--stsv-input__border-color--selected);
199
204
  }
200
205
 
201
- .sterling-tab:disabled .indicator,
202
- .sterling-tab:disabled:hover .indicator,
203
- .sterling-tab:disabled:active .indicator {
204
- background-color: transparent;
206
+ .sterling-tab.selected .indicator {
207
+ background-color: var(--stsv-input__border-color--selected);
205
208
  }
206
209
 
207
- .sterling-tab.selected .indicator {
208
- background-color: var(--stsv-Input__color);
210
+ /* ----- indicator colorful -----*/
211
+
212
+ .sterling-tab.colorful:not(.selected):not(:active):hover .indicator {
213
+ background-color: var(--stsv-input--colorful__border-color--hover);
214
+ }
215
+
216
+ .sterling-tab.colorful:active .indicator {
217
+ background-color: var(--stsv-input--colorful__border-color--selected);
218
+ }
219
+
220
+ .sterling-tab.colorful.selected .indicator {
221
+ background-color: var(--stsv-input--colorful__border-color--selected);
209
222
  }
210
223
 
224
+ /* ----- indicator disabled -----*/
225
+
226
+ .sterling-tab:disabled:not(.selected) .indicator,
227
+ .sterling-tab:disabled:not(.selected):hover .indicator,
228
+ .sterling-tab:disabled:not(.selected):active .indicator {
229
+ background-color: transparent;
230
+ }
231
+
232
+ /* ----- reduced motion -----*/
233
+
211
234
  @media (prefers-reduced-motion) {
212
235
  .sterling-tab,
213
236
  .sterling-tab::after,
package/TabList.svelte CHANGED
@@ -1,21 +1,19 @@
1
- <script>import { createKeyborg } from "keyborg";
2
- import { createEventDispatcher, onMount, setContext } from "svelte";
1
+ <script>import { createEventDispatcher, setContext } from "svelte";
3
2
  import { writable } from "svelte/store";
4
3
  import { TAB_LIST_CONTEXT_KEY } from "./TabList.constants";
4
+ import { usingKeyboard } from "./stores/usingKeyboard";
5
+ export let colorful = false;
5
6
  export let disabled = false;
6
7
  export let vertical = false;
7
8
  export let selectedValue = void 0;
8
- let keyborg = createKeyborg(window);
9
- let usingKeyboard = keyborg.isNavigatingWithKeyboard();
10
- const keyborgHandler = (value) => {
11
- usingKeyboard = value;
12
- };
13
9
  let tabListRef;
14
10
  let lastSelectedTabRef;
11
+ const colorfulStore = writable(colorful);
15
12
  const disabledStore = writable(disabled);
16
13
  const selectedValueStore = writable(selectedValue);
17
- const usingKeyboardStore = writable(usingKeyboard);
18
14
  const verticalStore = writable(vertical);
15
+ $:
16
+ colorfulStore.set(colorful);
19
17
  $:
20
18
  disabledStore.set(disabled);
21
19
  $:
@@ -23,8 +21,6 @@ $:
23
21
  $: {
24
22
  selectedValue = $selectedValueStore;
25
23
  }
26
- $:
27
- usingKeyboardStore.set(usingKeyboard);
28
24
  $:
29
25
  verticalStore.set(vertical);
30
26
  const dispatch = createEventDispatcher();
@@ -38,7 +34,12 @@ export const blur = () => {
38
34
  tabListRef?.blur();
39
35
  };
40
36
  export const focus = (options) => {
41
- tabListRef?.focus(options);
37
+ let selectedItem = getSelectedTabElement();
38
+ if (selectedValue && selectedItem) {
39
+ selectTab(selectedValue, selectedItem);
40
+ } else {
41
+ selectFirstTab();
42
+ }
42
43
  };
43
44
  const isElementTab = (candidate) => {
44
45
  return candidate && candidate.getAttribute("data-value") !== null && candidate.getAttribute("data-value") !== void 0 && candidate.getAttribute("role") === "tab";
@@ -69,8 +70,8 @@ export const selectFirstTab = () => {
69
70
  return false;
70
71
  };
71
72
  export const selectPreviousTab = () => {
72
- let selectedItem = getSelectedTabElement();
73
- let candidate = selectedItem?.previousElementSibling;
73
+ let selectedTab = getSelectedTabElement();
74
+ let candidate = selectedTab?.previousElementSibling;
74
75
  while (candidate && !isElementTab(candidate)) {
75
76
  candidate = candidate.previousElementSibling;
76
77
  }
@@ -82,8 +83,8 @@ export const selectPreviousTab = () => {
82
83
  return false;
83
84
  };
84
85
  export const selectNextTab = () => {
85
- let selectedItem = getSelectedTabElement();
86
- let candidate = selectedItem?.nextElementSibling;
86
+ let selectedTab = getSelectedTabElement();
87
+ let candidate = selectedTab?.nextElementSibling;
87
88
  while (candidate && !isElementTab(candidate)) {
88
89
  candidate = candidate.nextElementSibling;
89
90
  }
@@ -106,12 +107,6 @@ export const selectLastTab = () => {
106
107
  }
107
108
  return false;
108
109
  };
109
- onMount(() => {
110
- keyborg.subscribe(keyborgHandler);
111
- return () => {
112
- keyborg.unsubscribe(keyborgHandler);
113
- };
114
- });
115
110
  const onClick = (event) => {
116
111
  if (!disabled) {
117
112
  let candidate = event.target;
@@ -126,7 +121,6 @@ const onClick = (event) => {
126
121
  }
127
122
  };
128
123
  const onKeydown = (event) => {
129
- console.log("tabList onKeydown", event);
130
124
  if (!disabled && !event.ctrlKey && !event.shiftKey && !event.altKey && !event.metaKey) {
131
125
  switch (event.key) {
132
126
  case "Home":
@@ -173,9 +167,9 @@ const onKeydown = (event) => {
173
167
  }
174
168
  };
175
169
  setContext(TAB_LIST_CONTEXT_KEY, {
170
+ colorful: colorfulStore,
176
171
  disabled: disabledStore,
177
172
  selectedValue: selectedValueStore,
178
- usingKeyboard: usingKeyboardStore,
179
173
  vertical: verticalStore
180
174
  });
181
175
  </script>
@@ -184,9 +178,10 @@ setContext(TAB_LIST_CONTEXT_KEY, {
184
178
  aria-orientation={vertical ? 'vertical' : 'horizontal'}
185
179
  bind:this={tabListRef}
186
180
  class="sterling-tab-list"
187
- role="tablist"
188
- class:vertical
181
+ class:colorful
189
182
  class:disabled
183
+ class:vertical
184
+ role="tablist"
190
185
  on:blur
191
186
  on:click
192
187
  on:click={onClick}
@@ -214,7 +209,7 @@ setContext(TAB_LIST_CONTEXT_KEY, {
214
209
  on:mouseout
215
210
  on:mouseup
216
211
  on:scroll
217
- on:wheel
212
+ on:wheel|passive
218
213
  on:paste
219
214
  {...$$restProps}
220
215
  >
@@ -226,7 +221,7 @@ setContext(TAB_LIST_CONTEXT_KEY, {
226
221
  box-sizing: border-box;
227
222
  display: grid;
228
223
  margin: 0;
229
- padding: calc(2 * var(--stsv-Common__outline-width));
224
+ padding: calc(2 * var(--stsv-common__outline-width));
230
225
  }
231
226
 
232
227
  .sterling-tab-list:not(.vertical) {
@@ -248,7 +243,7 @@ setContext(TAB_LIST_CONTEXT_KEY, {
248
243
  }
249
244
 
250
245
  .sterling-tab-list:hover {
251
- color: var(--stsv-Common__color--hover);
246
+ color: var(--stsv-common__color--hover);
252
247
  }
253
248
 
254
249
  @media (prefers-reduced-motion) {
@@ -2,6 +2,7 @@ import { SvelteComponentTyped } from "svelte";
2
2
  declare const __propDef: {
3
3
  props: {
4
4
  [x: string]: any;
5
+ colorful?: boolean | undefined;
5
6
  disabled?: boolean | undefined;
6
7
  vertical?: boolean | undefined;
7
8
  selectedValue?: string | undefined;
@@ -1,7 +1,7 @@
1
1
  import type { Readable, Writable } from 'svelte/store';
2
2
  export type TabListContext = {
3
+ colorful: Readable<boolean>;
3
4
  disabled: Readable<boolean>;
4
5
  selectedValue: Writable<string | undefined>;
5
- usingKeyboard: Readable<boolean>;
6
6
  vertical: Readable<boolean>;
7
7
  };
package/TextArea.svelte CHANGED
@@ -1,5 +1,6 @@
1
1
  <script>import { onMount } from "svelte";
2
2
  export let autoHeight = false;
3
+ export let colorful = false;
3
4
  export let disabled = false;
4
5
  export let resize = "none";
5
6
  export let value = "";
@@ -42,7 +43,7 @@ export const setRangeText = (replacement, start, end, selectionMode) => {
42
43
  };
43
44
  </script>
44
45
 
45
- <div class="sterling-text-area" class:disabled>
46
+ <div class="sterling-text-area" class:colorful class:disabled>
46
47
  <textarea
47
48
  bind:this={textAreaRef}
48
49
  bind:value
@@ -81,7 +82,7 @@ export const setRangeText = (replacement, start, end, selectionMode) => {
81
82
  on:select
82
83
  on:submit
83
84
  on:reset
84
- on:wheel
85
+ on:wheel|passive
85
86
  on:input={onInput}
86
87
  {...$$restProps}
87
88
  />
@@ -95,13 +96,13 @@ export const setRangeText = (replacement, start, end, selectionMode) => {
95
96
  }
96
97
 
97
98
  textarea {
98
- background-color: var(--stsv-Input__background-color);
99
- border-color: var(--stsv-Input__border-color);
100
- border-radius: var(--stsv-Input__border-radius);
101
- border-style: var(--stsv-Input__border-style);
102
- border-width: var(--stsv-Input__border-width);
99
+ background-color: var(--stsv-input__background-color);
100
+ border-color: var(--stsv-input__border-color);
101
+ border-radius: var(--stsv-input__border-radius);
102
+ border-style: var(--stsv-input__border-style);
103
+ border-width: var(--stsv-input__border-width);
103
104
  box-sizing: border-box;
104
- color: var(--stsv-Input__color);
105
+ color: var(--stsv-input__color);
105
106
  display: block;
106
107
  font: inherit;
107
108
  line-height: inherit;
@@ -117,19 +118,37 @@ export const setRangeText = (replacement, start, end, selectionMode) => {
117
118
  }
118
119
 
119
120
  textarea:hover {
120
- background-color: var(--stsv-Input__background-color--hover);
121
- border-color: var(--stsv-Input__border-color--hover);
122
- color: var(--stsv-Input__color--hover);
121
+ background-color: var(--stsv-input__background-color--hover);
122
+ border-color: var(--stsv-input__border-color--hover);
123
+ color: var(--stsv-input__color--hover);
123
124
  }
124
125
 
125
126
  textarea:focus {
126
- background-color: var(--stsv-Input__background-color--focus);
127
- border-color: var(--stsv-Input__border-color--focus);
128
- color: var(--stsv-Input__color--focus);
129
- outline-color: var(--stsv-Common__outline-color);
130
- outline-offset: var(--stsv-Common__outline-offset);
131
- outline-style: var(--stsv-Common__outline-style);
132
- outline-width: var(--stsv-Common__outline-width);
127
+ background-color: var(--stsv-input__background-color--focus);
128
+ border-color: var(--stsv-input__border-color--focus);
129
+ color: var(--stsv-input__color--focus);
130
+ outline-color: var(--stsv-common__outline-color);
131
+ outline-offset: var(--stsv-common__outline-offset);
132
+ outline-style: var(--stsv-common__outline-style);
133
+ outline-width: var(--stsv-common__outline-width);
134
+ }
135
+
136
+ .sterling-text-area.colorful textarea {
137
+ background-color: var(--stsv-input--colorful__background-color);
138
+ border-color: var(--stsv-input--colorful__border-color);
139
+ color: var(--stsv-input--colorful__color);
140
+ }
141
+
142
+ .sterling-text-area.colorful textarea:hover {
143
+ background-color: var(--stsv-input--colorful__background-color--hover);
144
+ border-color: var(--stsv-input--colorful__border-color--hover);
145
+ color: var(--stsv-input--colorful__color--hover);
146
+ }
147
+
148
+ .sterling-text-area.colorful textarea:focus {
149
+ background-color: var(--stsv-input--colorful__background-color--focus);
150
+ border-color: var(--stsv-input--colorful__border-color--focus);
151
+ color: var(--stsv-input--colorful__color--focus);
133
152
  }
134
153
 
135
154
  .sterling-text-area:disabled {
@@ -138,7 +157,13 @@ export const setRangeText = (replacement, start, end, selectionMode) => {
138
157
  }
139
158
 
140
159
  .sterling-text-area::after {
141
- background: var(--stsv-Disabled__background);
160
+ background: repeating-linear-gradient(
161
+ 45deg,
162
+ var(--stsv-common__background-color1--disabled),
163
+ var(--stsv-common__background-color1--disabled) 3px,
164
+ var(--stsv-common__background-color2--disabled) 3px,
165
+ var(--stsv-common__background-color2--disabled) 6px
166
+ );
142
167
  bottom: 0;
143
168
  content: '';
144
169
  left: 0;
@@ -155,7 +180,7 @@ export const setRangeText = (replacement, start, end, selectionMode) => {
155
180
  }
156
181
 
157
182
  textarea::placeholder {
158
- color: var(--stsv-Display__color--faint);
183
+ color: var(--stsv-common__color--subtle);
159
184
  transition: background-color 250ms, color 250ms, border-color 250ms;
160
185
  }
161
186
 
@@ -3,8 +3,9 @@ declare const __propDef: {
3
3
  props: {
4
4
  [x: string]: any;
5
5
  autoHeight?: boolean | undefined;
6
+ colorful?: boolean | undefined;
6
7
  disabled?: boolean | undefined;
7
- resize?: "none" | "horizontal" | "vertical" | "both" | undefined;
8
+ resize?: "none" | "vertical" | "horizontal" | "both" | undefined;
8
9
  value?: string | undefined;
9
10
  blur?: (() => void) | undefined;
10
11
  click?: (() => void) | undefined;
@@ -60,7 +61,7 @@ export default class TextArea extends SvelteComponentTyped<TextAreaProps, TextAr
60
61
  get click(): () => void;
61
62
  get focus(): (options?: FocusOptions | undefined) => void;
62
63
  get select(): () => void;
63
- get setSelectionRange(): (start: number | null, end: number | null, direction?: "none" | "forward" | "backward" | undefined) => void;
64
+ get setSelectionRange(): (start: number | null, end: number | null, direction?: "forward" | "backward" | "none" | undefined) => void;
64
65
  get setRangeText(): (replacement: string, start?: number | undefined, end?: number | undefined, selectionMode?: SelectionMode | undefined) => void;
65
66
  }
66
67
  export {};
package/Tooltip.svelte CHANGED
@@ -114,6 +114,7 @@ const autoShowUpdate = () => {
114
114
  cleanupAutoShowUpdate = () => {
115
115
  };
116
116
  const element = reference;
117
+ open = false;
117
118
  if (element) {
118
119
  switch (showOn) {
119
120
  case "click":
@@ -171,12 +172,12 @@ onMount(() => {
171
172
  }
172
173
 
173
174
  .sterling-tooltip {
174
- background-color: var(--stsv-Common__background-color);
175
- border-color: var(--stsv-Common__border-color);
176
- border-radius: var(--stsv-Common__border-radius);
177
- border-style: var(--stsv-Common__border-style);
178
- border-width: var(--stsv-Common__border-width);
179
- color: var(--stsv-Common__color);
175
+ background-color: var(--stsv-common__background-color);
176
+ border-color: var(--stsv-common__border-color);
177
+ border-radius: var(--stsv-common__border-radius);
178
+ border-style: var(--stsv-common__border-style);
179
+ border-width: var(--stsv-common__border-width);
180
+ color: var(--stsv-common__color);
180
181
  position: absolute;
181
182
  overflow: visible;
182
183
  box-shadow: rgba(0, 0, 0, 0.4) 2px 2px 4px -1px;
@@ -187,11 +188,11 @@ onMount(() => {
187
188
  position: absolute;
188
189
  width: 10px;
189
190
  height: 10px;
190
- background-color: var(--stsv-Common__background-color);
191
- border-color: var(--stsv-Common__border-color);
192
- border-radius: var(--stsv-Common__border-radius);
193
- border-style: var(--stsv-Common__border-style);
194
- border-width: var(--stsv-Common__border-width);
191
+ background-color: var(--stsv-common__background-color);
192
+ border-color: var(--stsv-common__border-color);
193
+ border-radius: var(--stsv-common__border-radius);
194
+ border-style: var(--stsv-common__border-style);
195
+ border-width: var(--stsv-common__border-width);
195
196
  clip-path: polygon(0% 1%, 100% 1%, 100% 100%, 0% 1%);
196
197
  }
197
198
  </style>
package/Tree.svelte CHANGED
@@ -1,15 +1,17 @@
1
- <script>import { createKeyborg } from "keyborg";
2
- import { createEventDispatcher, onMount, setContext } from "svelte";
1
+ <script>import { createEventDispatcher, setContext } from "svelte";
3
2
  import { writable } from "svelte/store";
4
3
  import { TREE_CONTEXT_KEY } from "./Tree.constants";
4
+ import { usingKeyboard } from "./stores/usingKeyboard";
5
+ export let colorful = false;
5
6
  export let composed = false;
6
7
  export let disabled = false;
7
8
  export let selectedValue = void 0;
8
9
  export let expandedValues = [];
9
10
  let treeRef;
10
- const selectedValueStore = writable(selectedValue);
11
- const expandedValuesStore = writable(expandedValues);
11
+ const colorfulStore = writable(colorful);
12
12
  const disabledStore = writable(disabled);
13
+ const expandedValuesStore = writable(expandedValues);
14
+ const selectedValueStore = writable(selectedValue);
13
15
  export const blur = () => {
14
16
  treeRef?.blur();
15
17
  };
@@ -23,11 +25,6 @@ const raiseExpandCollapse = (expandedValues2) => {
23
25
  const raiseSelect = (selectedValue2) => {
24
26
  dispatch("select", { selectedValue: selectedValue2 });
25
27
  };
26
- let keyborg = createKeyborg(window);
27
- let usingKeyboard = keyborg.isNavigatingWithKeyboard();
28
- const keyborgHandler = (value) => {
29
- usingKeyboard = value;
30
- };
31
28
  $: {
32
29
  selectedValueStore.set(selectedValue);
33
30
  }
@@ -42,19 +39,17 @@ $: {
42
39
  expandedValues = $expandedValuesStore;
43
40
  raiseExpandCollapse($expandedValuesStore);
44
41
  }
42
+ $: {
43
+ colorfulStore.set(colorful);
44
+ }
45
45
  $: {
46
46
  disabledStore.set(disabled);
47
47
  }
48
- onMount(() => {
49
- keyborg.subscribe(keyborgHandler);
50
- return () => {
51
- keyborg.unsubscribe(keyborgHandler);
52
- };
53
- });
54
48
  setContext(TREE_CONTEXT_KEY, {
49
+ colorful: colorfulStore,
50
+ disabled: disabledStore,
55
51
  expandedValues: expandedValuesStore,
56
- selectedValue: selectedValueStore,
57
- disabled: disabledStore
52
+ selectedValue: selectedValueStore
58
53
  });
59
54
  </script>
60
55
 
@@ -63,9 +58,10 @@ setContext(TREE_CONTEXT_KEY, {
63
58
  bind:this={treeRef}
64
59
  aria-disabled={disabled}
65
60
  class="sterling-tree"
61
+ class:colorful
66
62
  class:composed
67
63
  class:disabled
68
- class:using-keyboard={usingKeyboard}
64
+ class:using-keyboard={$usingKeyboard}
69
65
  role="tree"
70
66
  on:blur
71
67
  on:click
@@ -97,23 +93,23 @@ setContext(TREE_CONTEXT_KEY, {
97
93
  on:pointerover
98
94
  on:pointerout
99
95
  on:pointerup
100
- on:wheel
96
+ on:wheel|passive
101
97
  {...$$restProps}
102
98
  >
103
99
  <div class="container">
104
- <slot {composed} {disabled} />
100
+ <slot {colorful} {composed} {disabled} />
105
101
  </div>
106
102
  </div>
107
103
 
108
104
  <style>
109
105
  .sterling-tree {
110
- background-color: var(--stsv-Common__background-color);
111
- border-color: var(--stsv-Common__border-color);
112
- border-radius: var(--stsv-Common__border-radius);
113
- border-style: var(--stsv-Common__border-style);
114
- border-width: var(--stsv-Common__border-width);
106
+ background-color: var(--stsv-common__background-color);
107
+ border-color: var(--stsv-common__border-color);
108
+ border-radius: var(--stsv-common__border-radius);
109
+ border-style: var(--stsv-common__border-style);
110
+ border-width: var(--stsv-common__border-width);
115
111
  box-sizing: border-box;
116
- color: var(--stsv-Common__color);
112
+ color: var(--stsv-common__color);
117
113
  height: 100%;
118
114
  overflow-x: hidden;
119
115
  overflow-y: auto;
@@ -122,17 +118,17 @@ setContext(TREE_CONTEXT_KEY, {
122
118
  }
123
119
 
124
120
  .sterling-tree:hover {
125
- border-color: var(--stsv-Common__border-color--hover);
126
- color: var(--stsv-Common__color--hover);
121
+ border-color: var(--stsv-input__border-color--hover);
122
+ color: var(--stsv-input__color--hover);
127
123
  }
128
124
 
129
125
  .sterling-tree.using-keyboard:focus-within {
130
- border-color: var(--stsv-Button__border-color--focus);
131
- color: var(--stsv-Common__color--focus);
132
- outline-color: var(--stsv-Common__outline-color);
133
- outline-offset: var(--stsv-Common__outline-offset);
134
- outline-style: var(--stsv-Common__outline-style);
135
- outline-width: var(--stsv-Common__outline-width);
126
+ border-color: var(--stsv-button__border-color--focus);
127
+ color: var(--stsv-input__color--focus);
128
+ outline-color: var(--stsv-common__outline-color);
129
+ outline-offset: var(--stsv-common__outline-offset);
130
+ outline-style: var(--stsv-common__outline-style);
131
+ outline-width: var(--stsv-common__outline-width);
136
132
  }
137
133
 
138
134
  .sterling-tree.composed,
@@ -158,7 +154,13 @@ setContext(TREE_CONTEXT_KEY, {
158
154
  }
159
155
 
160
156
  .container::after {
161
- background: var(--stsv-Disabled__background);
157
+ background: repeating-linear-gradient(
158
+ 45deg,
159
+ var(--stsv-common__background-color1--disabled),
160
+ var(--stsv-common__background-color1--disabled) 3px,
161
+ var(--stsv-common__background-color2--disabled) 3px,
162
+ var(--stsv-common__background-color2--disabled) 6px
163
+ );
162
164
  bottom: 0;
163
165
  content: '';
164
166
  left: 0;
package/Tree.svelte.d.ts CHANGED
@@ -2,6 +2,7 @@ import { SvelteComponentTyped } from "svelte";
2
2
  declare const __propDef: {
3
3
  props: {
4
4
  [x: string]: any;
5
+ colorful?: boolean | undefined;
5
6
  composed?: boolean | undefined;
6
7
  disabled?: boolean | undefined;
7
8
  selectedValue?: string | undefined;
@@ -48,6 +49,7 @@ declare const __propDef: {
48
49
  };
49
50
  slots: {
50
51
  default: {
52
+ colorful: boolean;
51
53
  composed: boolean;
52
54
  disabled: boolean;
53
55
  };
package/Tree.types.d.ts CHANGED
@@ -3,6 +3,7 @@ import type { Readable, Writable } from 'svelte/store';
3
3
  * Context for a Tree and its tree items.
4
4
  */
5
5
  export type TreeContext = {
6
+ colorful: Readable<boolean>;
6
7
  /** If the tree is disabled */
7
8
  disabled: Readable<boolean>;
8
9
  /**
@@ -52,7 +52,7 @@ $: {
52
52
  on:pointerover
53
53
  on:pointerout
54
54
  on:pointerup
55
- on:wheel
55
+ on:wheel|passive
56
56
  {...$$restProps}
57
57
  />
58
58