@geoffcox/sterling-svelte 0.0.16 → 0.0.17

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 (111) hide show
  1. package/{buttons/Button.svelte → Button.svelte} +27 -27
  2. package/{inputs/Checkbox.svelte → Checkbox.svelte} +15 -15
  3. package/{surfaces/Dialog.svelte → Dialog.svelte} +34 -21
  4. package/{inputs/Input.svelte → Input.svelte} +22 -22
  5. package/Label.svelte +52 -0
  6. package/Label.svelte.d.ts +42 -0
  7. package/List.constants.d.ts +1 -0
  8. package/List.constants.js +1 -0
  9. package/List.svelte +324 -0
  10. package/List.svelte.d.ts +69 -0
  11. package/List.types.d.ts +6 -0
  12. package/ListItem.svelte +90 -0
  13. package/ListItem.svelte.d.ts +51 -0
  14. package/{containers/Menu.svelte → Menu.svelte} +42 -27
  15. package/{containers/MenuBar.svelte → MenuBar.svelte} +13 -13
  16. package/{buttons/MenuButton.svelte → MenuButton.svelte} +17 -17
  17. package/{buttons/MenuButton.svelte.d.ts → MenuButton.svelte.d.ts} +1 -1
  18. package/{containers/MenuItem.svelte → MenuItem.svelte} +42 -54
  19. package/{containers/MenuItem.svelte.d.ts → MenuItem.svelte.d.ts} +2 -2
  20. package/{containers/MenuSeparator.svelte → MenuSeparator.svelte} +2 -2
  21. package/Menus.types.d.ts +22 -0
  22. package/{containers/Menus.utils.d.ts → Menus.utils.d.ts} +2 -2
  23. package/{containers/Menus.utils.js → Menus.utils.js} +6 -6
  24. package/{surfaces/Portal.svelte → Portal.svelte} +1 -1
  25. package/{display/Progress.svelte → Progress.svelte} +14 -14
  26. package/{inputs/Radio.svelte → Radio.svelte} +15 -15
  27. package/{inputs/Select.svelte → Select.svelte} +92 -98
  28. package/{inputs/Select.svelte.d.ts → Select.svelte.d.ts} +20 -25
  29. package/{inputs/Slider.svelte → Slider.svelte} +49 -24
  30. package/Slider.svelte.d.ts +53 -0
  31. package/{inputs/Switch.svelte → Switch.svelte} +38 -38
  32. package/Tab.svelte +181 -0
  33. package/{containers/Tab.svelte.d.ts → Tab.svelte.d.ts} +12 -15
  34. package/TabList.svelte +247 -0
  35. package/{containers/TabList.svelte.d.ts → TabList.svelte.d.ts} +21 -21
  36. package/TabList.types.d.ts +7 -0
  37. package/{inputs/TextArea.svelte → TextArea.svelte} +22 -22
  38. package/Tooltip.svelte +182 -0
  39. package/Tooltip.svelte.d.ts +24 -0
  40. package/Tooltip.types.d.ts +3 -0
  41. package/Tooltip.types.js +1 -0
  42. package/Tree.constants.d.ts +2 -0
  43. package/Tree.constants.js +2 -0
  44. package/Tree.svelte +142 -0
  45. package/Tree.svelte.d.ts +25 -0
  46. package/Tree.types.d.ts +28 -0
  47. package/Tree.types.js +1 -0
  48. package/{containers/TreeChevron.svelte → TreeChevron.svelte} +3 -3
  49. package/TreeItem.svelte +276 -0
  50. package/TreeItem.svelte.d.ts +65 -0
  51. package/{containers/TreeItem.svelte → TreeItemDisplay.svelte} +18 -18
  52. package/{containers/TreeItem.svelte.d.ts → TreeItemDisplay.svelte.d.ts} +11 -14
  53. package/{forwardEvents.js → actions/forwardEvents.js} +0 -2
  54. package/index.d.ts +42 -31
  55. package/index.js +39 -25
  56. package/package.json +44 -41
  57. package/theme/darkTheme.js +66 -74
  58. package/theme/lightTheme.js +66 -74
  59. package/containers/List.svelte +0 -249
  60. package/containers/List.svelte.d.ts +0 -68
  61. package/containers/ListItem.svelte +0 -48
  62. package/containers/ListItem.svelte.d.ts +0 -26
  63. package/containers/Menus.types.d.ts +0 -22
  64. package/containers/Tab.svelte +0 -327
  65. package/containers/TabList.svelte +0 -126
  66. package/containers/Tabs.types.d.ts +0 -12
  67. package/containers/Tree.constants.d.ts +0 -2
  68. package/containers/Tree.constants.js +0 -2
  69. package/containers/Tree.svelte +0 -222
  70. package/containers/Tree.svelte.d.ts +0 -50
  71. package/containers/Tree.types.d.ts +0 -47
  72. package/containers/TreeNode.svelte +0 -266
  73. package/containers/TreeNode.svelte.d.ts +0 -43
  74. package/display/Label.svelte +0 -27
  75. package/display/Label.svelte.d.ts +0 -20
  76. package/inputs/Slider.svelte.d.ts +0 -28
  77. package/surfaces/CloseX.svelte +0 -5
  78. package/surfaces/CloseX.svelte.d.ts +0 -23
  79. /package/{buttons/Button.svelte.d.ts → Button.svelte.d.ts} +0 -0
  80. /package/{buttons/Button.types.d.ts → Button.types.d.ts} +0 -0
  81. /package/{buttons/Button.types.js → Button.types.js} +0 -0
  82. /package/{inputs/Checkbox.svelte.d.ts → Checkbox.svelte.d.ts} +0 -0
  83. /package/{surfaces/Dialog.svelte.d.ts → Dialog.svelte.d.ts} +0 -0
  84. /package/{inputs/Input.svelte.d.ts → Input.svelte.d.ts} +0 -0
  85. /package/{containers/Menus.types.js → List.types.js} +0 -0
  86. /package/{containers/Menu.svelte.d.ts → Menu.svelte.d.ts} +0 -0
  87. /package/{containers/MenuBar.svelte.d.ts → MenuBar.svelte.d.ts} +0 -0
  88. /package/{containers/MenuItemDisplay.svelte → MenuItemDisplay.svelte} +0 -0
  89. /package/{containers/MenuItemDisplay.svelte.d.ts → MenuItemDisplay.svelte.d.ts} +0 -0
  90. /package/{containers/MenuSeparator.svelte.d.ts → MenuSeparator.svelte.d.ts} +0 -0
  91. /package/{containers/Menus.constants.d.ts → Menus.constants.d.ts} +0 -0
  92. /package/{containers/Menus.constants.js → Menus.constants.js} +0 -0
  93. /package/{containers/Tabs.types.js → Menus.types.js} +0 -0
  94. /package/{surfaces/Portal.svelte.d.ts → Portal.svelte.d.ts} +0 -0
  95. /package/{display/Progress.svelte.d.ts → Progress.svelte.d.ts} +0 -0
  96. /package/{display/Progress.types.d.ts → Progress.types.d.ts} +0 -0
  97. /package/{display/Progress.types.js → Progress.types.js} +0 -0
  98. /package/{inputs/Radio.svelte.d.ts → Radio.svelte.d.ts} +0 -0
  99. /package/{inputs/Switch.svelte.d.ts → Switch.svelte.d.ts} +0 -0
  100. /package/{containers/Tabs.constants.d.ts → TabList.constants.d.ts} +0 -0
  101. /package/{containers/Tabs.constants.js → TabList.constants.js} +0 -0
  102. /package/{containers/Tree.types.js → TabList.types.js} +0 -0
  103. /package/{inputs/TextArea.svelte.d.ts → TextArea.svelte.d.ts} +0 -0
  104. /package/{inputs/TextArea.types.d.ts → TextArea.types.d.ts} +0 -0
  105. /package/{inputs/TextArea.types.js → TextArea.types.js} +0 -0
  106. /package/{containers/TreeChevron.svelte.d.ts → TreeChevron.svelte.d.ts} +0 -0
  107. /package/{clickOutside.d.ts → actions/clickOutside.d.ts} +0 -0
  108. /package/{clickOutside.js → actions/clickOutside.js} +0 -0
  109. /package/{forwardEvents.d.ts → actions/forwardEvents.d.ts} +0 -0
  110. /package/{portal.d.ts → actions/portal.d.ts} +0 -0
  111. /package/{portal.js → actions/portal.js} +0 -0
@@ -1,249 +0,0 @@
1
- <script>import { createEventDispatcher } from "svelte";
2
- import { v4 as uuid } from "uuid";
3
- import Label from "../display/Label.svelte";
4
- import ListItem from "./ListItem.svelte";
5
- export let disabled = false;
6
- export let items = [];
7
- export let horizontal = false;
8
- export let selectedIndex = -1;
9
- export let selectedItem = void 0;
10
- export let composed = false;
11
- $: {
12
- selectedItem = items[selectedIndex];
13
- }
14
- const inputId = uuid();
15
- let listRef;
16
- let itemRefs = {};
17
- const dispatch = createEventDispatcher();
18
- const raiseItemSelected = (index) => {
19
- dispatch("itemSelected", { index, item: items[index] });
20
- };
21
- export const focusSelectedItem = () => {
22
- listRef.focus();
23
- const selectedRef = itemRefs[selectedIndex];
24
- selectedRef?.focus();
25
- selectedRef?.scrollIntoView({ behavior: "smooth", block: "nearest", inline: "nearest" });
26
- };
27
- $:
28
- canSelectPreviousItem = items.length > 0 && selectedIndex !== 0;
29
- $:
30
- canSelectNextItem = items.length > 0 && selectedIndex !== items.length - 1;
31
- export const selectPreviousItem = () => {
32
- if (canSelectPreviousItem) {
33
- selectedIndex = Math.max(0, selectedIndex - 1);
34
- }
35
- };
36
- export const selectNextItem = () => {
37
- if (canSelectNextItem) {
38
- selectedIndex = Math.min(items.length - 1, selectedIndex + 1);
39
- }
40
- };
41
- export const selectItem = (item) => {
42
- const index = items.indexOf(item);
43
- if (index !== -1) {
44
- selectedIndex = index;
45
- }
46
- };
47
- $: {
48
- raiseItemSelected(selectedIndex);
49
- }
50
- $: {
51
- const selectedRef = itemRefs[selectedIndex];
52
- selectedRef?.scrollIntoView({ behavior: "smooth", block: "nearest", inline: "nearest" });
53
- }
54
- const onItemClick = (index) => {
55
- if (!disabled) {
56
- selectedIndex = index;
57
- }
58
- };
59
- const onArrowSelectPrevious = (event) => {
60
- event.preventDefault();
61
- event.stopPropagation();
62
- selectPreviousItem();
63
- };
64
- const onArrowSelectNext = (event) => {
65
- event.preventDefault();
66
- event.stopPropagation();
67
- selectNextItem();
68
- };
69
- const onKeydown = (event) => {
70
- if (!disabled && !event.ctrlKey && !event.shiftKey && !event.altKey && !event.metaKey) {
71
- switch (event.key) {
72
- case "ArrowLeft":
73
- if (horizontal) {
74
- onArrowSelectPrevious(event);
75
- }
76
- break;
77
- case "ArrowRight":
78
- if (horizontal) {
79
- onArrowSelectNext(event);
80
- }
81
- break;
82
- case "ArrowUp":
83
- if (!horizontal) {
84
- onArrowSelectPrevious(event);
85
- }
86
- break;
87
- case "ArrowDown":
88
- if (!horizontal) {
89
- onArrowSelectNext(event);
90
- }
91
- break;
92
- default:
93
- break;
94
- }
95
- }
96
- };
97
- </script>
98
-
99
- <!--
100
- @component
101
- A list of items where a single item can be selected.
102
- -->
103
- <!-- svelte-ignore a11y-no-noninteractive-tabindex -->
104
- <div class="sterling-list" class:horizontal class:disabled class:composed tabindex={0}>
105
- {#if $$slots.label}
106
- <Label {disabled} for={inputId}>
107
- <slot name="label" />
108
- </Label>
109
- {/if}
110
- <div
111
- bind:this={listRef}
112
- class="list"
113
- class:disabled
114
- class:horizontal
115
- role="listbox"
116
- tabindex={!disabled ? 0 : undefined}
117
- on:blur
118
- on:click
119
- on:copy
120
- on:cut
121
- on:dblclick
122
- on:focus
123
- on:focusin
124
- on:focusout
125
- on:keydown
126
- on:keypress
127
- on:keyup
128
- on:mousedown
129
- on:mouseenter
130
- on:mouseleave
131
- on:mousemove
132
- on:mouseover
133
- on:mouseout
134
- on:mouseup
135
- on:scroll
136
- on:wheel
137
- on:paste
138
- on:keydown={onKeydown}
139
- {...$$restProps}
140
- >
141
- {#each items as item, index (item)}
142
- {@const selected = selectedIndex === index}
143
- <!-- svelte-ignore a11y-click-events-have-key-events -->
144
- <div
145
- bind:this={itemRefs[index]}
146
- aria-selected={disabled ? undefined : selected}
147
- class="list-item"
148
- data-index={index + 1}
149
- role="option"
150
- on:click={() => onItemClick(index)}
151
- >
152
- <slot name="item" {disabled} {index} {item} {selected}>
153
- <ListItem {disabled} {selected} {index} {item}>
154
- <slot {disabled} {index} {item} {selected}>
155
- {item}
156
- </slot>
157
- </ListItem>
158
- </slot>
159
- </div>
160
- {/each}
161
- </div>
162
- </div>
163
-
164
- <style>
165
- .sterling-list {
166
- background-color: var(--Common__background-color);
167
- border-color: var(--Common__border-color);
168
- border-radius: var(--Common__border-radius);
169
- border-style: var(--Common__border-style);
170
- border-width: var(--Common__border-width);
171
- box-sizing: border-box;
172
- color: var(--Common__color);
173
- display: grid;
174
- grid-template-columns: 1fr;
175
- grid-template-rows: auto 1fr;
176
- height: 100%;
177
- margin: 0;
178
- overflow: hidden;
179
- padding: 0;
180
- transition: background-color 250ms, color 250ms, border-color 250ms;
181
- }
182
-
183
- .sterling-list.horizontal {
184
- height: unset;
185
- width: 100%;
186
- }
187
-
188
- .sterling-list:hover {
189
- border-color: var(--Common__border-color--hover);
190
- color: var(--Common__color--hover);
191
- }
192
-
193
- .sterling-list:focus-within {
194
- border-color: var(--Common__border-color--focus);
195
- color: var(--Common__color--focus);
196
- outline-color: var(--Common__outline-color);
197
- outline-offset: var(--Common__outline-offset);
198
- outline-style: var(--Common__outline-style);
199
- outline-width: var(--Common__outline-width);
200
- }
201
-
202
- .sterling-list.disabled {
203
- background-color: var(--Common__background-color--disabled);
204
- border-color: var(---Common__border-color--disabled);
205
- color: var(--Common__color--disabled);
206
- cursor: not-allowed;
207
- }
208
-
209
- .sterling-list.composed,
210
- .sterling-list:hover.composed,
211
- .sterling-list:focus-visible.composed,
212
- .sterling-list.disabled.composed {
213
- background: none;
214
- border: none;
215
- outline: none;
216
- }
217
-
218
- .list {
219
- display: flex;
220
- flex-direction: column;
221
- flex-wrap: nowrap;
222
- grid-row: 2 / span 1;
223
- overflow-x: hidden;
224
- overflow-y: scroll;
225
- outline: none;
226
- position: relative;
227
- }
228
-
229
- .list.horizontal {
230
- flex-direction: row;
231
- overflow-x: scroll;
232
- overflow-y: hidden;
233
- }
234
-
235
- .sterling-list > :global(label) {
236
- font-size: 0.7em;
237
- margin: 0.5em 0.7em;
238
- }
239
-
240
- .sterling-list > :global(label):empty {
241
- margin: 0;
242
- }
243
-
244
- @media (prefers-reduced-motion) {
245
- .sterling-list {
246
- transition: none;
247
- }
248
- }
249
- </style>
@@ -1,68 +0,0 @@
1
- import { SvelteComponentTyped } from "svelte";
2
- declare class __sveltets_Render<T> {
3
- props(): {
4
- [x: string]: any;
5
- disabled?: boolean | undefined;
6
- items?: T[] | undefined;
7
- horizontal?: boolean | undefined;
8
- selectedIndex?: number | undefined;
9
- selectedItem?: T | undefined;
10
- composed?: boolean | undefined;
11
- focusSelectedItem?: (() => void) | undefined;
12
- selectPreviousItem?: (() => void) | undefined;
13
- selectNextItem?: (() => void) | undefined;
14
- selectItem?: ((item: T) => void) | undefined;
15
- };
16
- events(): {
17
- blur: FocusEvent;
18
- click: MouseEvent;
19
- copy: ClipboardEvent;
20
- cut: ClipboardEvent;
21
- dblclick: MouseEvent;
22
- focus: FocusEvent;
23
- focusin: FocusEvent;
24
- focusout: FocusEvent;
25
- keydown: KeyboardEvent;
26
- keypress: KeyboardEvent;
27
- keyup: KeyboardEvent;
28
- mousedown: MouseEvent;
29
- mouseenter: MouseEvent;
30
- mouseleave: MouseEvent;
31
- mousemove: MouseEvent;
32
- mouseover: MouseEvent;
33
- mouseout: MouseEvent;
34
- mouseup: MouseEvent;
35
- scroll: Event;
36
- wheel: WheelEvent;
37
- paste: ClipboardEvent;
38
- itemSelected: CustomEvent<any>;
39
- } & {
40
- [evt: string]: CustomEvent<any>;
41
- };
42
- slots(): {
43
- label: {};
44
- item: {
45
- disabled: boolean;
46
- index: any;
47
- item: T;
48
- selected: any;
49
- };
50
- default: {
51
- disabled: boolean;
52
- index: any;
53
- item: T;
54
- selected: any;
55
- };
56
- };
57
- }
58
- export type ListProps<T> = ReturnType<__sveltets_Render<T>['props']>;
59
- export type ListEvents<T> = ReturnType<__sveltets_Render<T>['events']>;
60
- export type ListSlots<T> = ReturnType<__sveltets_Render<T>['slots']>;
61
- /** A list of items where a single item can be selected. */
62
- export default class List<T> extends SvelteComponentTyped<ListProps<T>, ListEvents<T>, ListSlots<T>> {
63
- get focusSelectedItem(): () => void;
64
- get selectPreviousItem(): () => void;
65
- get selectNextItem(): () => void;
66
- get selectItem(): (item: T) => void;
67
- }
68
- export {};
@@ -1,48 +0,0 @@
1
- <script>export let disabled = false;
2
- export let selected = false;
3
- export let index = -1;
4
- export let item = void 0;
5
- </script>
6
-
7
- <div
8
- aria-selected={disabled ? undefined : selected}
9
- class="sterling-list-item"
10
- class:disabled
11
- class:selected
12
- >
13
- <slot {disabled} {selected} {index} {item} />
14
- </div>
15
-
16
- <style>
17
- .sterling-list-item {
18
- background-color: transparent;
19
- box-sizing: border-box;
20
- color: var(--Input__color);
21
- margin: 0;
22
- padding: 0.5em;
23
- outline: none;
24
- text-overflow: ellipsis;
25
- transition: background-color 250ms, color 250ms, border-color 250ms;
26
- white-space: nowrap;
27
- }
28
-
29
- .sterling-list-item:hover {
30
- background-color: var(--Button__background-color--hover);
31
- color: var(--Button__color--hover);
32
- }
33
-
34
- .sterling-list-item.selected {
35
- background-color: var(--Input__background-color--selected);
36
- color: var(--Input__color--selected);
37
- }
38
-
39
- .sterling-list-item.disabled {
40
- color: var(--Input__color--disabled);
41
- }
42
-
43
- @media (prefers-reduced-motion) {
44
- .sterling-list-item {
45
- transition: none;
46
- }
47
- }
48
- </style>
@@ -1,26 +0,0 @@
1
- import { SvelteComponentTyped } from "svelte";
2
- declare class __sveltets_Render<T> {
3
- props(): {
4
- disabled?: boolean | undefined;
5
- selected?: boolean | undefined;
6
- index?: number | undefined;
7
- item?: T | undefined;
8
- };
9
- events(): {} & {
10
- [evt: string]: CustomEvent<any>;
11
- };
12
- slots(): {
13
- default: {
14
- disabled: boolean;
15
- selected: boolean;
16
- index: number;
17
- item: T | undefined;
18
- };
19
- };
20
- }
21
- export type ListItemProps<T> = ReturnType<__sveltets_Render<T>['props']>;
22
- export type ListItemEvents<T> = ReturnType<__sveltets_Render<T>['events']>;
23
- export type ListItemSlots<T> = ReturnType<__sveltets_Render<T>['slots']>;
24
- export default class ListItem<T> extends SvelteComponentTyped<ListItemProps<T>, ListItemEvents<T>, ListItemSlots<T>> {
25
- }
26
- export {};
@@ -1,22 +0,0 @@
1
- export type MenuItemRegistration = {
2
- id: string;
3
- open: () => void;
4
- close: () => void;
5
- focus: () => void;
6
- };
7
- export type MenuBarContext = {
8
- openPreviousMenu?: (fromMenuItemId: string) => void;
9
- openNextMenu?: (fromMenuItemId: string) => void;
10
- };
11
- export type MenuItemContext = {
12
- rootMenuItemId?: string;
13
- depth?: number;
14
- register?: (menuItem: MenuItemRegistration) => void;
15
- unregister?: (menuItem: MenuItemRegistration) => void;
16
- focusPrevious?: (fromMenuItemId: string) => void;
17
- focusNext?: (fromMenuItemId: string) => void;
18
- closeMenu?: (recursive?: boolean) => void;
19
- onOpen?: (menuItemId: string) => void;
20
- onClose?: (menuItemId: string) => void;
21
- onSelect?: (menuItemId: string) => void;
22
- };