@geoffcox/sterling-svelte 0.0.31 → 1.0.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 (215) hide show
  1. package/@types/clickOutside.d.ts +11 -7
  2. package/Button.svelte +11 -183
  3. package/Button.svelte.d.ts +2 -6
  4. package/Callout.svelte +107 -146
  5. package/Callout.svelte.d.ts +1 -1
  6. package/Checkbox.svelte +15 -177
  7. package/Checkbox.svelte.d.ts +2 -2
  8. package/ColorPicker.svelte +204 -223
  9. package/ColorPicker.svelte.d.ts +1 -2
  10. package/Dialog.svelte +91 -187
  11. package/Dialog.svelte.d.ts +3 -1
  12. package/Dropdown.svelte +52 -220
  13. package/Dropdown.svelte.d.ts +4 -8
  14. package/HexColorSliders.svelte +77 -145
  15. package/HexColorSliders.svelte.d.ts +28 -1
  16. package/HslColorSliders.svelte +99 -179
  17. package/HslColorSliders.svelte.d.ts +28 -1
  18. package/Input.svelte +27 -136
  19. package/Input.svelte.d.ts +2 -3
  20. package/Label.constants.d.ts +1 -0
  21. package/Label.constants.js +1 -0
  22. package/Label.svelte +96 -169
  23. package/Label.svelte.d.ts +6 -1
  24. package/Label.types.d.ts +3 -1
  25. package/Link.svelte +9 -106
  26. package/Link.svelte.d.ts +0 -1
  27. package/List.svelte +142 -230
  28. package/List.svelte.d.ts +2 -3
  29. package/List.types.d.ts +6 -1
  30. package/ListItem.svelte +25 -94
  31. package/ListItem.svelte.d.ts +2 -0
  32. package/Menu.svelte +48 -65
  33. package/Menu.svelte.d.ts +4 -1
  34. package/MenuBar.svelte +84 -86
  35. package/MenuBar.svelte.d.ts +4 -1
  36. package/MenuButton.svelte +66 -73
  37. package/MenuButton.svelte.d.ts +7 -3
  38. package/MenuItem.svelte +256 -288
  39. package/MenuItem.svelte.d.ts +2 -2
  40. package/MenuItemDisplay.svelte +12 -116
  41. package/MenuItemDisplay.svelte.d.ts +21 -7
  42. package/MenuSeparator.svelte +6 -45
  43. package/MenuSeparator.svelte.d.ts +8 -78
  44. package/Popover.constants.d.ts +1 -1
  45. package/Popover.constants.js +1 -1
  46. package/Popover.svelte +66 -80
  47. package/Popover.svelte.d.ts +5 -1
  48. package/Progress.svelte +28 -126
  49. package/Progress.svelte.d.ts +4 -3
  50. package/Radio.svelte +49 -192
  51. package/Radio.svelte.d.ts +2 -2
  52. package/RgbColorSliders.svelte +48 -137
  53. package/RgbColorSliders.svelte.d.ts +5 -5
  54. package/Select.svelte +122 -250
  55. package/Select.svelte.d.ts +6 -2
  56. package/Slider.svelte +90 -259
  57. package/Slider.svelte.d.ts +1 -2
  58. package/Switch.svelte +24 -259
  59. package/Switch.svelte.d.ts +3 -1
  60. package/Tab.svelte +27 -175
  61. package/Tab.svelte.d.ts +6 -4
  62. package/TabList.svelte +146 -171
  63. package/TabList.svelte.d.ts +3 -2
  64. package/TabList.types.d.ts +6 -1
  65. package/TextArea.svelte +32 -129
  66. package/TextArea.svelte.d.ts +1 -1
  67. package/Tooltip.svelte +46 -47
  68. package/Tooltip.svelte.d.ts +8 -3
  69. package/Tree.constants.d.ts +0 -1
  70. package/Tree.constants.js +0 -1
  71. package/Tree.svelte +35 -119
  72. package/Tree.svelte.d.ts +4 -4
  73. package/Tree.types.d.ts +1 -3
  74. package/TreeChevron.svelte +18 -98
  75. package/TreeChevron.svelte.d.ts +1 -0
  76. package/TreeItem.constants.d.ts +1 -0
  77. package/TreeItem.constants.js +1 -0
  78. package/TreeItem.svelte +251 -211
  79. package/TreeItem.svelte.d.ts +7 -3
  80. package/TreeItem.types.d.ts +1 -1
  81. package/TreeItemDisplay.svelte +20 -104
  82. package/TreeItemDisplay.svelte.d.ts +2 -2
  83. package/actions/applyLightDarkMode.d.ts +10 -0
  84. package/actions/applyLightDarkMode.js +36 -0
  85. package/actions/forwardEvents.js +3 -3
  86. package/css/Button.base.css +74 -0
  87. package/css/Button.colorful.css +17 -0
  88. package/css/Button.css +7 -0
  89. package/css/Button.secondary.colorful.css +15 -0
  90. package/css/Button.secondary.css +11 -0
  91. package/css/Button.shapes.css +14 -0
  92. package/css/Button.tool.colorful.css +13 -0
  93. package/css/Button.tool.css +18 -0
  94. package/css/Callout.base.css +43 -0
  95. package/css/Callout.colorful.css +5 -0
  96. package/css/Callout.css +2 -0
  97. package/css/Checkbox.base.css +145 -0
  98. package/css/Checkbox.colorful.css +17 -0
  99. package/css/Checkbox.css +2 -0
  100. package/css/ColorPicker.base.css +23 -0
  101. package/css/ColorPicker.css +1 -0
  102. package/css/Dialog.base.css +116 -0
  103. package/css/Dialog.css +1 -0
  104. package/css/Dropdown.base.css +147 -0
  105. package/css/Dropdown.colorful.css +23 -0
  106. package/css/Dropdown.css +2 -0
  107. package/css/HexColorSliders.base.css +106 -0
  108. package/css/HexColorSliders.css +1 -0
  109. package/css/HslColorSliders.base.css +124 -0
  110. package/css/HslColorSliders.css +1 -0
  111. package/css/Input.base.css +100 -0
  112. package/css/Input.colorful.css +22 -0
  113. package/css/Input.composed.css +8 -0
  114. package/css/Input.css +3 -0
  115. package/css/Label.base.css +119 -0
  116. package/css/Label.boxed.colorful.css +21 -0
  117. package/css/Label.boxed.css +31 -0
  118. package/css/Label.colorful.css +3 -0
  119. package/css/Label.css +4 -0
  120. package/css/Link.base.css +52 -0
  121. package/css/Link.colorful.css +15 -0
  122. package/css/Link.css +6 -0
  123. package/css/Link.ghost.colorful.css +7 -0
  124. package/css/Link.ghost.css +11 -0
  125. package/css/Link.undecorated.colorful.css +6 -0
  126. package/css/Link.undecorated.css +6 -0
  127. package/css/List.base.css +98 -0
  128. package/css/List.css +1 -0
  129. package/css/ListItem.base.css +59 -0
  130. package/css/ListItem.css +1 -0
  131. package/css/Menu.base.css +21 -0
  132. package/css/Menu.css +1 -0
  133. package/css/MenuBar.base.css +9 -0
  134. package/css/MenuBar.css +1 -0
  135. package/css/MenuButton.base.css +13 -0
  136. package/css/MenuButton.css +1 -0
  137. package/css/MenuItem.base.css +48 -0
  138. package/css/MenuItem.css +1 -0
  139. package/css/MenuItemDisplay.base.css +104 -0
  140. package/css/MenuItemDisplay.css +1 -0
  141. package/css/MenuSeparator.base.css +5 -0
  142. package/css/MenuSeparator.css +1 -0
  143. package/css/Popover copy.css +21 -0
  144. package/css/Popover.css +21 -0
  145. package/css/Progress.base.css +99 -0
  146. package/css/Progress.css +1 -0
  147. package/css/Radio.base.css +135 -0
  148. package/css/Radio.colorful.css +18 -0
  149. package/css/Radio.css +2 -0
  150. package/css/RgbColorSliders.base.css +94 -0
  151. package/css/RgbColorSliders.css +1 -0
  152. package/css/Select.base.css +127 -0
  153. package/css/Select.colorful.css +24 -0
  154. package/css/Select.composed.css +12 -0
  155. package/css/Select.css +3 -0
  156. package/css/Slider.base.css +182 -0
  157. package/css/Slider.colorful.css +11 -0
  158. package/css/Slider.composed.css +8 -0
  159. package/css/Slider.css +3 -0
  160. package/css/Switch.base.css +193 -0
  161. package/css/Switch.colorful.css +39 -0
  162. package/css/Switch.css +2 -0
  163. package/css/Tab.base.css +135 -0
  164. package/css/Tab.colorful.css +13 -0
  165. package/css/Tab.css +2 -0
  166. package/css/TabList.base.css +34 -0
  167. package/css/TabList.css +1 -0
  168. package/css/TextArea.base.css +85 -0
  169. package/css/TextArea.colorful.css +17 -0
  170. package/css/TextArea.composed.css +8 -0
  171. package/css/TextArea.css +3 -0
  172. package/css/Tooltip.base.css +6 -0
  173. package/css/Tooltip.css +1 -0
  174. package/css/Tree.base.css +74 -0
  175. package/css/Tree.composed.css +8 -0
  176. package/css/Tree.css +2 -0
  177. package/css/TreeChevron.base.css +86 -0
  178. package/css/TreeChevron.css +1 -0
  179. package/css/TreeItem.base.css +3 -0
  180. package/css/TreeItem.css +1 -0
  181. package/css/TreeItemDisplay.base.css +74 -0
  182. package/css/TreeItemDisplay.colorful.css +9 -0
  183. package/css/TreeItemDisplay.css +1 -0
  184. package/css/dark-mode.css +134 -0
  185. package/css/light-mode.css +134 -0
  186. package/css/sterling.css +37 -0
  187. package/index.d.ts +9 -13
  188. package/index.js +8 -12
  189. package/mediaQueries/prefersColorSchemeDark.d.ts +2 -0
  190. package/mediaQueries/prefersColorSchemeDark.js +10 -0
  191. package/{stores → mediaQueries}/prefersReducedMotion.d.ts +1 -0
  192. package/{stores → mediaQueries}/usingKeyboard.d.ts +1 -0
  193. package/package.json +121 -13
  194. package/Link.constants.d.ts +0 -1
  195. package/Link.constants.js +0 -1
  196. package/Link.types.d.ts +0 -4
  197. package/Link.types.js +0 -1
  198. package/theme/applyDarkTheme.d.ts +0 -7
  199. package/theme/applyDarkTheme.js +0 -11
  200. package/theme/applyLightTheme.d.ts +0 -7
  201. package/theme/applyLightTheme.js +0 -11
  202. package/theme/applyTheme.d.ts +0 -7
  203. package/theme/applyTheme.js +0 -20
  204. package/theme/colors.d.ts +0 -54
  205. package/theme/colors.js +0 -82
  206. package/theme/darkTheme.d.ts +0 -2
  207. package/theme/darkTheme.js +0 -142
  208. package/theme/lightTheme.d.ts +0 -2
  209. package/theme/lightTheme.js +0 -119
  210. package/theme/toggleDarkTheme.d.ts +0 -18
  211. package/theme/toggleDarkTheme.js +0 -53
  212. package/theme/types.d.ts +0 -21
  213. package/theme/types.js +0 -1
  214. /package/{stores → mediaQueries}/prefersReducedMotion.js +0 -0
  215. /package/{stores → mediaQueries}/usingKeyboard.js +0 -0
package/MenuButton.svelte CHANGED
@@ -1,87 +1,95 @@
1
- <script>import { createEventDispatcher, setContext, tick } from "svelte";
2
- import { writable } from "svelte/store";
3
- import Button from "./Button.svelte";
4
- import Menu from "./Menu.svelte";
5
- import { MENU_ITEM_CONTEXT_KEY } from "./MenuItem.constants";
6
- import { idGenerator } from "./idGenerator";
7
- import Popover from "./Popover.svelte";
8
- import { clickOutside } from "./actions/clickOutside";
1
+ <script>import { createEventDispatcher, setContext, tick } from 'svelte';
2
+ import { writable } from 'svelte/store';
3
+ import Button from './Button.svelte';
4
+ import Menu from './Menu.svelte';
5
+ import { MENU_ITEM_CONTEXT_KEY } from './MenuItem.constants';
6
+ import { idGenerator } from './idGenerator';
7
+ import Popover from './Popover.svelte';
8
+ import { clickOutside } from './actions/clickOutside';
9
+ // ----- Props ----- //
10
+ /** When true, the menu is open. */
9
11
  export let open = false;
12
+ /** The value uniquely identifying this menu button as the root of the menu hierarchy. */
10
13
  export let value;
11
- const instanceId = idGenerator.nextId("MenuButton");
14
+ /** Additional class names to apply. */
15
+ export let variant = '';
16
+ // ----- State ----- //
17
+ const instanceId = idGenerator.nextId('MenuButton');
12
18
  let buttonRef;
13
19
  let reference;
14
20
  let menuRef;
15
21
  let prevOpen = open;
16
- $:
17
- menuId = `${value}-menu-${instanceId}`;
18
- $:
19
- hasChildren = $$slots.items;
22
+ $: menuId = `${value}-menu-${instanceId}`;
23
+ $: hasChildren = $$slots.items;
20
24
  const openValues = writable([]);
21
25
  $: {
22
- open = $openValues.length > 0;
26
+ open = $openValues.length > 0;
23
27
  }
28
+ // ----- Events ----- //
24
29
  const dispatch = createEventDispatcher();
25
- const raiseClose = (value2) => {
26
- dispatch("close", { value: value2 });
30
+ const raiseClose = (value) => {
31
+ dispatch('close', { value });
27
32
  };
28
- const raiseOpen = (value2) => {
29
- dispatch("open", { value: value2 });
33
+ const raiseOpen = (value) => {
34
+ dispatch('open', { value });
30
35
  };
31
- const raiseSelect = (value2) => {
32
- dispatch("select", { value: value2 });
36
+ const raiseSelect = (value) => {
37
+ dispatch('select', { value });
33
38
  };
39
+ // ----- Methods ----- //
34
40
  export const click = () => {
35
- buttonRef?.click();
41
+ buttonRef?.click();
36
42
  };
37
43
  export const blur = () => {
38
- buttonRef?.blur();
44
+ buttonRef?.blur();
39
45
  };
40
46
  export const focus = (options) => {
41
- buttonRef?.focus(options);
47
+ buttonRef?.focus(options);
42
48
  };
49
+ // ----- Event Handlers ----- //
43
50
  const onClick = async () => {
44
- if (!open) {
45
- openValues.set(["menu-button"]);
46
- await tick();
47
- menuRef?.focusFirstMenuItem();
48
- } else {
49
- open = false;
50
- openValues.set([]);
51
- }
51
+ if (!open) {
52
+ openValues.set(['menu-button']);
53
+ await tick();
54
+ menuRef?.focusFirstMenuItem();
55
+ }
56
+ else {
57
+ open = false;
58
+ openValues.set([]);
59
+ }
52
60
  };
53
61
  $: {
54
- if (!open && open !== prevOpen) {
55
- focus();
56
- }
57
- prevOpen = open;
62
+ if (!open && open !== prevOpen) {
63
+ focus();
64
+ }
65
+ prevOpen = open;
58
66
  }
67
+ // ----- Event Handlers ----- //
59
68
  const closeAllMenus = () => {
60
- openValues.set([]);
69
+ openValues.set([]);
61
70
  };
62
71
  const onClickOutside = (event) => {
63
- const {
64
- detail: { mouseEvent }
65
- } = event;
66
- let element = mouseEvent.target;
67
- while (element) {
68
- if (element.getAttribute("data-root-value") === value) {
69
- return;
72
+ const { detail: { mouseEvent } } = event;
73
+ let element = mouseEvent.target;
74
+ while (element) {
75
+ if (element.getAttribute('data-root-value') === value) {
76
+ return;
77
+ }
78
+ element = element.parentElement;
70
79
  }
71
- element = element.parentElement;
72
- }
73
- closeAllMenus?.();
80
+ closeAllMenus?.();
74
81
  };
82
+ // ----- Set Context ----- //
75
83
  setContext(MENU_ITEM_CONTEXT_KEY, {
76
- depth: 1,
77
- openValues,
78
- rootValue: value,
79
- closeContainingMenu: () => {
80
- open = false;
81
- },
82
- onOpen: raiseOpen,
83
- onClose: raiseClose,
84
- onSelect: raiseSelect
84
+ depth: 1,
85
+ openValues,
86
+ rootValue: value,
87
+ closeContainingMenu: () => {
88
+ open = false;
89
+ },
90
+ onOpen: raiseOpen,
91
+ onClose: raiseClose,
92
+ onSelect: raiseSelect
85
93
  });
86
94
  </script>
87
95
 
@@ -97,6 +105,7 @@ setContext(MENU_ITEM_CONTEXT_KEY, {
97
105
  aria-owns={menuId}
98
106
  data-value={value}
99
107
  data-root-value={value}
108
+ variant={`sterling-menu-button ${variant}`}
100
109
  on:blur
101
110
  on:click
102
111
  on:click={onClick}
@@ -132,27 +141,11 @@ setContext(MENU_ITEM_CONTEXT_KEY, {
132
141
  {...$$restProps}
133
142
  >
134
143
  <div class="reference" bind:this={reference} use:clickOutside on:click_outside={onClickOutside}>
135
- <slot shape={$$restProps.shape} variant={$$restProps.variant} />
144
+ <slot {open} {value} {variant} />
136
145
  </div>
137
146
  <Popover {reference} {open}>
138
147
  <Menu bind:this={menuRef} id={menuId} {reference} {open}>
139
- <slot name="items" />
148
+ <slot name="items" {variant} />
140
149
  </Menu>
141
150
  </Popover>
142
151
  </Button>
143
-
144
- <style>
145
- .reference {
146
- align-content: center;
147
- align-items: center;
148
- box-sizing: border-box;
149
- display: inline-flex;
150
- flex-direction: row;
151
- justify-content: center;
152
- justify-items: center;
153
- column-gap: 0.25em;
154
- overflow: hidden;
155
- text-overflow: ellipsis;
156
- white-space: nowrap;
157
- }
158
- </style>
@@ -4,6 +4,7 @@ declare const __propDef: {
4
4
  [x: string]: any;
5
5
  open?: boolean | undefined;
6
6
  value: string;
7
+ variant?: string | undefined;
7
8
  click?: (() => void) | undefined;
8
9
  blur?: (() => void) | undefined;
9
10
  focus?: ((options?: FocusOptions) => void) | undefined;
@@ -48,10 +49,13 @@ declare const __propDef: {
48
49
  };
49
50
  slots: {
50
51
  default: {
51
- shape: any;
52
- variant: any;
52
+ open: boolean;
53
+ value: string;
54
+ variant: string;
55
+ };
56
+ items: {
57
+ variant: string;
53
58
  };
54
- items: {};
55
59
  };
56
60
  };
57
61
  export type MenuButtonProps = typeof __propDef.props;