@geoffcox/sterling-svelte 0.0.14 → 0.0.16

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 (46) hide show
  1. package/@types/clickOutside.d.ts +9 -3
  2. package/buttons/Button.svelte +1 -1
  3. package/buttons/Button.svelte.d.ts +4 -1
  4. package/buttons/MenuButton.svelte +102 -0
  5. package/buttons/MenuButton.svelte.d.ts +54 -0
  6. package/clickOutside.js +3 -1
  7. package/containers/List.svelte +1 -1
  8. package/containers/Menu.svelte +100 -0
  9. package/containers/Menu.svelte.d.ts +20 -0
  10. package/containers/MenuBar.svelte +97 -0
  11. package/containers/MenuBar.svelte.d.ts +43 -0
  12. package/containers/MenuItem.svelte +350 -0
  13. package/containers/MenuItem.svelte.d.ts +61 -0
  14. package/containers/MenuItemDisplay.svelte +97 -0
  15. package/containers/MenuItemDisplay.svelte.d.ts +21 -0
  16. package/containers/MenuSeparator.svelte +42 -0
  17. package/containers/MenuSeparator.svelte.d.ts +76 -0
  18. package/containers/Menus.constants.d.ts +2 -0
  19. package/containers/Menus.constants.js +2 -0
  20. package/containers/Menus.types.d.ts +22 -0
  21. package/containers/Menus.types.js +1 -0
  22. package/containers/Menus.utils.d.ts +5 -0
  23. package/containers/Menus.utils.js +20 -0
  24. package/containers/Tab.svelte +327 -0
  25. package/containers/Tab.svelte.d.ts +55 -0
  26. package/containers/TabList.svelte +126 -0
  27. package/containers/TabList.svelte.d.ts +56 -0
  28. package/containers/Tabs.constants.d.ts +1 -0
  29. package/containers/Tabs.constants.js +1 -0
  30. package/containers/Tabs.types.d.ts +12 -0
  31. package/containers/Tabs.types.js +1 -0
  32. package/containers/TreeNode.svelte +0 -1
  33. package/forwardEvents.d.ts +12 -0
  34. package/forwardEvents.js +34 -0
  35. package/index.d.ts +12 -2
  36. package/index.js +9 -1
  37. package/inputs/Checkbox.svelte +2 -2
  38. package/inputs/Checkbox.svelte.d.ts +4 -1
  39. package/inputs/Input.svelte +1 -1
  40. package/inputs/Select.svelte +5 -5
  41. package/inputs/TextArea.svelte +2 -2
  42. package/package.json +18 -1
  43. package/portal.d.ts +8 -0
  44. package/portal.js +19 -0
  45. package/surfaces/Portal.svelte +14 -0
  46. package/surfaces/Portal.svelte.d.ts +21 -0
package/index.js CHANGED
@@ -7,19 +7,27 @@ export { lightTheme } from './theme/lightTheme';
7
7
  export { neutrals } from './theme/colors';
8
8
  export { toggleDarkTheme } from './theme/toggleDarkTheme';
9
9
  export { clickOutside } from './clickOutside';
10
+ export { menuBarContextKey, menuItemContextKey } from './containers/Menus.constants';
10
11
  import Button from './buttons/Button.svelte';
11
12
  import Checkbox from './inputs/Checkbox.svelte';
12
13
  import Dialog from './surfaces/Dialog.svelte';
13
14
  import Input from './inputs/Input.svelte';
14
15
  import Label from './display/Label.svelte';
15
16
  import List from './containers/List.svelte';
17
+ import Menu from './containers/Menu.svelte';
18
+ import MenuBar from './containers/MenuBar.svelte';
19
+ import MenuButton from './buttons/MenuButton.svelte';
20
+ import MenuItem from './containers/MenuItem.svelte';
21
+ import MenuSeparator from './containers/MenuSeparator.svelte';
16
22
  import Progress from './display/Progress.svelte';
17
23
  import Radio from './inputs/Radio.svelte';
18
24
  import Select from './inputs/Select.svelte';
19
25
  import Slider from './inputs/Slider.svelte';
20
26
  import Switch from './inputs/Switch.svelte';
27
+ import Tab from './containers/Tab.svelte';
28
+ import TabList from './containers/TabList.svelte';
21
29
  import TextArea from './inputs/TextArea.svelte';
22
30
  import Tree from './containers/Tree.svelte';
23
31
  import TreeChevron from './containers/TreeChevron.svelte';
24
32
  import TreeItem from './containers/TreeItem.svelte';
25
- export { Button, Checkbox, Dialog, Input, Label, List, Progress, Radio, Select, Slider, Switch, TextArea, Tree, TreeChevron, TreeItem };
33
+ export { Button, Checkbox, Dialog, Input, Label, List, Menu, MenuBar, MenuButton, MenuItem, MenuSeparator, Progress, Radio, Select, Slider, Switch, Tab, TabList, TextArea, Tree, TreeChevron, TreeItem };
@@ -43,7 +43,7 @@ const inputId = uuid();
43
43
  {#if $$slots.label}
44
44
  <div class="label">
45
45
  <Label {disabled} for={inputId}>
46
- <slot name="label" />
46
+ <slot name="label" {checked} {disabled} />
47
47
  </Label>
48
48
  </div>
49
49
  {/if}
@@ -136,7 +136,7 @@ const inputId = uuid();
136
136
  height: 14px;
137
137
  left: 50%;
138
138
  position: absolute;
139
- top: 50%;
139
+ top: 45%;
140
140
  transform: translate(-50%, -50%) rotate(45deg);
141
141
  transform-origin: center;
142
142
  transition: border-color 250ms;
@@ -30,7 +30,10 @@ declare const __propDef: {
30
30
  [evt: string]: CustomEvent<any>;
31
31
  };
32
32
  slots: {
33
- label: {};
33
+ label: {
34
+ checked: boolean;
35
+ disabled: boolean;
36
+ };
34
37
  };
35
38
  };
36
39
  export type CheckboxProps = typeof __propDef.props;
@@ -113,7 +113,7 @@ const inputId = uuid();
113
113
 
114
114
  .sterling-input > :global(label) {
115
115
  font-size: 0.7em;
116
- margin: 0.5em 0.7em;
116
+ margin: 0.5em 0 0 0.7em;
117
117
  }
118
118
 
119
119
  .sterling-input > :global(label):empty {
@@ -142,7 +142,6 @@ A single item that can be selected from a popup list of items.
142
142
  -->
143
143
  <div
144
144
  bind:this={selectRef}
145
- use:clickOutside
146
145
  aria-controls={popupId}
147
146
  aria-haspopup="listbox"
148
147
  aria-expanded={open}
@@ -150,8 +149,7 @@ A single item that can be selected from a popup list of items.
150
149
  class:disabled
151
150
  role="combobox"
152
151
  tabindex="0"
153
- on:click_outside={() => (open = false)}
154
- on:click={onSelectClick}
152
+ use:clickOutside
155
153
  on:blur
156
154
  on:click
157
155
  on:copy
@@ -160,7 +158,6 @@ A single item that can be selected from a popup list of items.
160
158
  on:focus
161
159
  on:focusin
162
160
  on:focusout
163
- on:keydown={onSelectKeydown}
164
161
  on:keydown
165
162
  on:keypress
166
163
  on:keyup
@@ -173,6 +170,9 @@ A single item that can be selected from a popup list of items.
173
170
  on:mouseup
174
171
  on:wheel
175
172
  on:paste
173
+ on:click={onSelectClick}
174
+ on:click_outside={() => (open = false)}
175
+ on:keydown={onSelectKeydown}
176
176
  {...$$restProps}
177
177
  >
178
178
  {#if $$slots.label}
@@ -276,7 +276,7 @@ A single item that can be selected from a popup list of items.
276
276
 
277
277
  .sterling-select > :global(label) {
278
278
  font-size: 0.7em;
279
- margin: 0.5em 0.7em;
279
+ margin: 0.5em 0 0 0.7em;
280
280
  }
281
281
 
282
282
  .sterling-select > :global(label):empty {
@@ -39,7 +39,6 @@ $:
39
39
  on:focus
40
40
  on:focusin
41
41
  on:focusout
42
- on:input={onInput}
43
42
  on:input
44
43
  on:invalid
45
44
  on:keydown
@@ -56,6 +55,7 @@ $:
56
55
  on:submit
57
56
  on:reset
58
57
  on:wheel
58
+ on:input={onInput}
59
59
  {disabled}
60
60
  rows="1"
61
61
  {...$$restProps}
@@ -138,7 +138,7 @@ $:
138
138
 
139
139
  .sterling-text-area > :global(label) {
140
140
  font-size: 0.7em;
141
- margin: 0.5em 0.7em;
141
+ margin: 0.5em 0 0 0.7em;
142
142
  }
143
143
 
144
144
  .sterling-text-area > :global(label):empty {
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@geoffcox/sterling-svelte",
3
- "version": "0.0.14",
3
+ "version": "0.0.16",
4
4
  "author": "Geoff Cox",
5
5
  "description": "A modern, accessible, and lightweight component library for Svelte.",
6
6
  "license": "MIT",
@@ -45,6 +45,7 @@
45
45
  "type": "module",
46
46
  "dependencies": {
47
47
  "@floating-ui/dom": "^1.1.0",
48
+ "keyborg": "^2.0.0",
48
49
  "lodash-es": "^4.17.21",
49
50
  "uuid": "^9.0.0"
50
51
  },
@@ -52,9 +53,22 @@
52
53
  "./package.json": "./package.json",
53
54
  "./buttons/Button.svelte": "./buttons/Button.svelte",
54
55
  "./buttons/Button.types": "./buttons/Button.types.js",
56
+ "./buttons/MenuButton.svelte": "./buttons/MenuButton.svelte",
55
57
  "./clickOutside": "./clickOutside.js",
56
58
  "./containers/List.svelte": "./containers/List.svelte",
57
59
  "./containers/ListItem.svelte": "./containers/ListItem.svelte",
60
+ "./containers/Menu.svelte": "./containers/Menu.svelte",
61
+ "./containers/MenuBar.svelte": "./containers/MenuBar.svelte",
62
+ "./containers/MenuItem.svelte": "./containers/MenuItem.svelte",
63
+ "./containers/MenuItemDisplay.svelte": "./containers/MenuItemDisplay.svelte",
64
+ "./containers/MenuSeparator.svelte": "./containers/MenuSeparator.svelte",
65
+ "./containers/Menus.constants": "./containers/Menus.constants.js",
66
+ "./containers/Menus.types": "./containers/Menus.types.js",
67
+ "./containers/Menus.utils": "./containers/Menus.utils.js",
68
+ "./containers/Tab.svelte": "./containers/Tab.svelte",
69
+ "./containers/TabList.svelte": "./containers/TabList.svelte",
70
+ "./containers/Tabs.constants": "./containers/Tabs.constants.js",
71
+ "./containers/Tabs.types": "./containers/Tabs.types.js",
58
72
  "./containers/Tree.constants": "./containers/Tree.constants.js",
59
73
  "./containers/Tree.svelte": "./containers/Tree.svelte",
60
74
  "./containers/Tree.types": "./containers/Tree.types.js",
@@ -64,6 +78,7 @@
64
78
  "./display/Label.svelte": "./display/Label.svelte",
65
79
  "./display/Progress.svelte": "./display/Progress.svelte",
66
80
  "./display/Progress.types": "./display/Progress.types.js",
81
+ "./forwardEvents": "./forwardEvents.js",
67
82
  ".": "./index.js",
68
83
  "./inputs/Checkbox.svelte": "./inputs/Checkbox.svelte",
69
84
  "./inputs/Input.svelte": "./inputs/Input.svelte",
@@ -73,8 +88,10 @@
73
88
  "./inputs/Switch.svelte": "./inputs/Switch.svelte",
74
89
  "./inputs/TextArea.svelte": "./inputs/TextArea.svelte",
75
90
  "./inputs/TextArea.types": "./inputs/TextArea.types.js",
91
+ "./portal": "./portal.js",
76
92
  "./surfaces/CloseX.svelte": "./surfaces/CloseX.svelte",
77
93
  "./surfaces/Dialog.svelte": "./surfaces/Dialog.svelte",
94
+ "./surfaces/Portal.svelte": "./surfaces/Portal.svelte",
78
95
  "./theme/applyDarkTheme": "./theme/applyDarkTheme.js",
79
96
  "./theme/applyLightTheme": "./theme/applyLightTheme.js",
80
97
  "./theme/applyTheme": "./theme/applyTheme.js",
package/portal.d.ts ADDED
@@ -0,0 +1,8 @@
1
+ export declare const portal: (node: HTMLElement, params: {
2
+ target: HTMLElement;
3
+ }) => {
4
+ update: (params: {
5
+ target: HTMLElement;
6
+ }) => void;
7
+ destroy(): void;
8
+ };
package/portal.js ADDED
@@ -0,0 +1,19 @@
1
+ export const portal = (node, params) => {
2
+ const child = node;
3
+ let portaled = false;
4
+ const createPortal = (node, params) => {
5
+ if (!portaled && params.target && node) {
6
+ params.target.appendChild(node);
7
+ portaled = true;
8
+ }
9
+ };
10
+ createPortal(child, params);
11
+ return {
12
+ update: (params) => createPortal(child, params),
13
+ destroy() {
14
+ if (portaled) {
15
+ child?.parentNode?.removeChild(child);
16
+ }
17
+ }
18
+ };
19
+ };
@@ -0,0 +1,14 @@
1
+ <script>import { portal } from "../portal";
2
+ export let target = document.body;
3
+ </script>
4
+
5
+ <div class="portal" use:portal={{ target }}>
6
+ <slot {...$$restProps} />
7
+ </div>
8
+
9
+ <style>
10
+ .portal {
11
+ position: relative;
12
+ overflow: visible;
13
+ }
14
+ </style>
@@ -0,0 +1,21 @@
1
+ import { SvelteComponentTyped } from "svelte";
2
+ declare const __propDef: {
3
+ props: {
4
+ [x: string]: any;
5
+ target?: HTMLElement | undefined;
6
+ };
7
+ events: {
8
+ [evt: string]: CustomEvent<any>;
9
+ };
10
+ slots: {
11
+ default: {
12
+ [x: string]: any;
13
+ };
14
+ };
15
+ };
16
+ export type PortalProps = typeof __propDef.props;
17
+ export type PortalEvents = typeof __propDef.events;
18
+ export type PortalSlots = typeof __propDef.slots;
19
+ export default class Portal extends SvelteComponentTyped<PortalProps, PortalEvents, PortalSlots> {
20
+ }
21
+ export {};