@geoffcox/sterling-svelte 0.0.16 → 0.0.18

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 (119) hide show
  1. package/{buttons/Button.svelte → Button.svelte} +27 -27
  2. package/{inputs/Checkbox.svelte → Checkbox.svelte} +26 -21
  3. package/{inputs/Checkbox.svelte.d.ts → Checkbox.svelte.d.ts} +2 -1
  4. package/{surfaces/Dialog.svelte → Dialog.svelte} +34 -21
  5. package/Field.svelte +257 -0
  6. package/Field.svelte.d.ts +63 -0
  7. package/Field.types.d.ts +1 -0
  8. package/Input.svelte +115 -0
  9. package/{inputs/Input.svelte.d.ts → Input.svelte.d.ts} +8 -3
  10. package/Label.svelte +51 -0
  11. package/Label.svelte.d.ts +41 -0
  12. package/List.constants.d.ts +1 -0
  13. package/List.constants.js +1 -0
  14. package/List.svelte +293 -0
  15. package/List.svelte.d.ts +63 -0
  16. package/List.types.d.ts +6 -0
  17. package/ListItem.svelte +89 -0
  18. package/ListItem.svelte.d.ts +51 -0
  19. package/{containers/Menu.svelte → Menu.svelte} +42 -27
  20. package/{containers/MenuBar.svelte → MenuBar.svelte} +13 -13
  21. package/{buttons/MenuButton.svelte → MenuButton.svelte} +17 -17
  22. package/{buttons/MenuButton.svelte.d.ts → MenuButton.svelte.d.ts} +1 -1
  23. package/{containers/MenuItem.svelte → MenuItem.svelte} +42 -54
  24. package/{containers/MenuItem.svelte.d.ts → MenuItem.svelte.d.ts} +2 -2
  25. package/{containers/MenuSeparator.svelte → MenuSeparator.svelte} +2 -2
  26. package/Menus.types.d.ts +22 -0
  27. package/{containers/Menus.utils.d.ts → Menus.utils.d.ts} +2 -2
  28. package/{containers/Menus.utils.js → Menus.utils.js} +6 -6
  29. package/{display/Progress.svelte → Progress.svelte} +28 -52
  30. package/{display/Progress.svelte.d.ts → Progress.svelte.d.ts} +1 -3
  31. package/Progress.types.d.ts +1 -0
  32. package/{inputs/Radio.svelte → Radio.svelte} +34 -29
  33. package/{inputs/Radio.svelte.d.ts → Radio.svelte.d.ts} +7 -2
  34. package/{inputs/Select.svelte → Select.svelte} +112 -130
  35. package/Select.svelte.d.ts +53 -0
  36. package/{inputs/Slider.svelte → Slider.svelte} +90 -86
  37. package/Slider.svelte.d.ts +51 -0
  38. package/{inputs/Switch.svelte → Switch.svelte} +43 -41
  39. package/Tab.svelte +181 -0
  40. package/{containers/Tab.svelte.d.ts → Tab.svelte.d.ts} +12 -15
  41. package/TabList.svelte +247 -0
  42. package/{containers/TabList.svelte.d.ts → TabList.svelte.d.ts} +21 -21
  43. package/TabList.types.d.ts +7 -0
  44. package/TextArea.svelte +113 -0
  45. package/{inputs/TextArea.svelte.d.ts → TextArea.svelte.d.ts} +3 -6
  46. package/TextArea.types.js +1 -0
  47. package/Tooltip.svelte +182 -0
  48. package/Tooltip.svelte.d.ts +24 -0
  49. package/Tooltip.types.d.ts +3 -0
  50. package/Tooltip.types.js +1 -0
  51. package/Tree.constants.d.ts +2 -0
  52. package/Tree.constants.js +2 -0
  53. package/Tree.svelte +114 -0
  54. package/Tree.svelte.d.ts +24 -0
  55. package/Tree.types.d.ts +28 -0
  56. package/Tree.types.js +1 -0
  57. package/{containers/TreeChevron.svelte → TreeChevron.svelte} +3 -3
  58. package/TreeItem.svelte +276 -0
  59. package/TreeItem.svelte.d.ts +65 -0
  60. package/{containers/TreeItem.svelte → TreeItemDisplay.svelte} +18 -18
  61. package/{containers/TreeItem.svelte.d.ts → TreeItemDisplay.svelte.d.ts} +11 -14
  62. package/{forwardEvents.js → actions/forwardEvents.js} +0 -2
  63. package/index.d.ts +44 -31
  64. package/index.js +40 -25
  65. package/package.json +45 -41
  66. package/theme/darkTheme.js +73 -74
  67. package/theme/lightTheme.js +76 -77
  68. package/containers/List.svelte +0 -249
  69. package/containers/List.svelte.d.ts +0 -68
  70. package/containers/ListItem.svelte +0 -48
  71. package/containers/ListItem.svelte.d.ts +0 -26
  72. package/containers/Menus.types.d.ts +0 -22
  73. package/containers/Tab.svelte +0 -327
  74. package/containers/TabList.svelte +0 -126
  75. package/containers/Tabs.types.d.ts +0 -12
  76. package/containers/Tree.constants.d.ts +0 -2
  77. package/containers/Tree.constants.js +0 -2
  78. package/containers/Tree.svelte +0 -222
  79. package/containers/Tree.svelte.d.ts +0 -50
  80. package/containers/Tree.types.d.ts +0 -47
  81. package/containers/TreeNode.svelte +0 -266
  82. package/containers/TreeNode.svelte.d.ts +0 -43
  83. package/display/Label.svelte +0 -27
  84. package/display/Label.svelte.d.ts +0 -20
  85. package/display/Progress.types.d.ts +0 -1
  86. package/inputs/Input.svelte +0 -129
  87. package/inputs/Select.svelte.d.ts +0 -62
  88. package/inputs/Slider.svelte.d.ts +0 -28
  89. package/inputs/TextArea.svelte +0 -154
  90. package/surfaces/CloseX.svelte +0 -5
  91. package/surfaces/CloseX.svelte.d.ts +0 -23
  92. package/surfaces/Portal.svelte +0 -14
  93. package/surfaces/Portal.svelte.d.ts +0 -21
  94. /package/{buttons/Button.svelte.d.ts → Button.svelte.d.ts} +0 -0
  95. /package/{buttons/Button.types.d.ts → Button.types.d.ts} +0 -0
  96. /package/{buttons/Button.types.js → Button.types.js} +0 -0
  97. /package/{surfaces/Dialog.svelte.d.ts → Dialog.svelte.d.ts} +0 -0
  98. /package/{containers/Menus.types.js → Field.types.js} +0 -0
  99. /package/{containers/Tabs.types.js → List.types.js} +0 -0
  100. /package/{containers/Menu.svelte.d.ts → Menu.svelte.d.ts} +0 -0
  101. /package/{containers/MenuBar.svelte.d.ts → MenuBar.svelte.d.ts} +0 -0
  102. /package/{containers/MenuItemDisplay.svelte → MenuItemDisplay.svelte} +0 -0
  103. /package/{containers/MenuItemDisplay.svelte.d.ts → MenuItemDisplay.svelte.d.ts} +0 -0
  104. /package/{containers/MenuSeparator.svelte.d.ts → MenuSeparator.svelte.d.ts} +0 -0
  105. /package/{containers/Menus.constants.d.ts → Menus.constants.d.ts} +0 -0
  106. /package/{containers/Menus.constants.js → Menus.constants.js} +0 -0
  107. /package/{containers/Tree.types.js → Menus.types.js} +0 -0
  108. /package/{display/Progress.types.js → Progress.types.js} +0 -0
  109. /package/{inputs/Switch.svelte.d.ts → Switch.svelte.d.ts} +0 -0
  110. /package/{containers/Tabs.constants.d.ts → TabList.constants.d.ts} +0 -0
  111. /package/{containers/Tabs.constants.js → TabList.constants.js} +0 -0
  112. /package/{inputs/TextArea.types.js → TabList.types.js} +0 -0
  113. /package/{inputs/TextArea.types.d.ts → TextArea.types.d.ts} +0 -0
  114. /package/{containers/TreeChevron.svelte.d.ts → TreeChevron.svelte.d.ts} +0 -0
  115. /package/{clickOutside.d.ts → actions/clickOutside.d.ts} +0 -0
  116. /package/{clickOutside.js → actions/clickOutside.js} +0 -0
  117. /package/{forwardEvents.d.ts → actions/forwardEvents.d.ts} +0 -0
  118. /package/{portal.d.ts → actions/portal.d.ts} +0 -0
  119. /package/{portal.js → actions/portal.js} +0 -0
package/Tab.svelte ADDED
@@ -0,0 +1,181 @@
1
+ <script>import { getContext } from "svelte";
2
+ import { tabListContextKey } from "./TabList.constants";
3
+ export let disabled = false;
4
+ export let selected = false;
5
+ export let text = void 0;
6
+ export let value;
7
+ let tabRef;
8
+ const {
9
+ disabled: tabListDisabled,
10
+ selectedValue,
11
+ usingKeyboard,
12
+ vertical
13
+ } = getContext(tabListContextKey);
14
+ $:
15
+ _disabled = $tabListDisabled || disabled;
16
+ $: {
17
+ selected = $selectedValue === value;
18
+ }
19
+ $: {
20
+ if (selected) {
21
+ selectedValue.set(value);
22
+ }
23
+ }
24
+ </script>
25
+
26
+ <button
27
+ bind:this={tabRef}
28
+ aria-selected={selected}
29
+ class="sterling-tab"
30
+ disabled={_disabled}
31
+ class:selected
32
+ class:using-keyboard={$usingKeyboard}
33
+ class:vertical={$vertical}
34
+ data-value={value}
35
+ role="tab"
36
+ type="button"
37
+ tabIndex={selected ? 0 : -1}
38
+ on:blur
39
+ on:click
40
+ on:dblclick
41
+ on:focus
42
+ on:focusin
43
+ on:focusout
44
+ on:keydown
45
+ on:keypress
46
+ on:keyup
47
+ on:mousedown
48
+ on:mouseenter
49
+ on:mouseleave
50
+ on:mousemove
51
+ on:mouseover
52
+ on:mouseout
53
+ on:mouseup
54
+ on:pointercancel
55
+ on:pointerdown
56
+ on:pointerenter
57
+ on:pointerleave
58
+ on:pointermove
59
+ on:pointerover
60
+ on:pointerout
61
+ on:pointerup
62
+ on:wheel
63
+ >
64
+ <div class="content">
65
+ <slot disabled={_disabled} {selected} {value} {text}>
66
+ <div class="text">
67
+ {text || value}
68
+ </div>
69
+ </slot>
70
+ </div>
71
+ <div class="indicator" />
72
+ </button>
73
+
74
+ <style>
75
+ .sterling-tab {
76
+ align-content: center;
77
+ align-items: center;
78
+ background-color: var(--stsv-Common__background-color);
79
+ border-color: transparent;
80
+ border-radius: var(--stsv-Button__border-radius);
81
+ border-style: var(--stsv-Common__border-style);
82
+ border-width: 0;
83
+ box-sizing: border-box;
84
+ color: var(--stsv-Common__color);
85
+ cursor: pointer;
86
+ display: grid;
87
+ font: inherit;
88
+ overflow: hidden;
89
+ padding: 0.5em 1em 0.25em 1em;
90
+ text-decoration: none;
91
+ text-overflow: ellipsis;
92
+ transition: background-color 250ms, color 250ms, border-color 250ms;
93
+ white-space: nowrap;
94
+ }
95
+
96
+ .sterling-tab:not(.vertical) {
97
+ grid-template-columns: 1fr;
98
+ grid-template-rows: 1fr 1em;
99
+ justify-content: center;
100
+ justify-items: center;
101
+ row-gap: 0.15em;
102
+ }
103
+
104
+ .sterling-tab.vertical {
105
+ grid-template-columns: auto 1em;
106
+ grid-template-rows: 1fr;
107
+ align-content: center;
108
+ align-items: center;
109
+ justify-content: flex-end;
110
+ justify-items: flex-end;
111
+ column-gap: 0.15em;
112
+ }
113
+
114
+ .sterling-tab:hover {
115
+ background-color: var(--stsv-Common__background-color--hover);
116
+ color: var(--stsv-Common__color--hover);
117
+ }
118
+
119
+ .sterling-tab:active {
120
+ background-color: var(--stsv-Common__background-color--active);
121
+ color: var(--stsv-Common__color--active);
122
+ }
123
+
124
+ .sterling-tab.using-keyboard:focus-visible {
125
+ outline-color: var(--stsv-Common__outline-color);
126
+ outline-offset: var(--stsv-Common__outline-offset);
127
+ outline-style: var(--stsv-Common__outline-style);
128
+ outline-width: var(--stsv-Common__outline-width);
129
+ }
130
+
131
+ .sterling-tab:disabled {
132
+ color: var(--stsv-Common__color--disabled);
133
+ cursor: not-allowed;
134
+ }
135
+
136
+ .content {
137
+ padding: 0 0.2em;
138
+ }
139
+
140
+ .sterling-tab.vertical .content .text {
141
+ padding-top: 0.25em;
142
+ }
143
+
144
+ .indicator {
145
+ background-color: transparent;
146
+ border-radius: 10000px;
147
+ transition: background-color 250ms;
148
+ }
149
+
150
+ .sterling-tab:not(.vertical) .indicator {
151
+ justify-self: stretch;
152
+ height: 0.4em;
153
+ }
154
+
155
+ .sterling-tab.vertical .indicator {
156
+ align-self: stretch;
157
+ width: 0.4em;
158
+ }
159
+
160
+ .sterling-tab:hover .indicator {
161
+ background-color: var(--stsv-Display__color--faint);
162
+ }
163
+
164
+ .sterling-tab:active .indicator {
165
+ background-color: var(--stsv-Button__border-color--hover);
166
+ }
167
+
168
+ .sterling-tab:disabled .indicator,
169
+ .sterling-tab:disabled:hover .indicator,
170
+ .sterling-tab:disabled:active .indicator {
171
+ background-color: transparent;
172
+ }
173
+
174
+ .sterling-tab.selected .indicator {
175
+ background-color: var(--stsv-Input__color);
176
+ }
177
+
178
+ .sterling-tab.selected:disabled .indicator {
179
+ background-color: var(--stsv-Common__color--disabled);
180
+ }
181
+ </style>
@@ -1,14 +1,12 @@
1
1
  import { SvelteComponentTyped } from "svelte";
2
- import type { TabData } from './Tabs.types';
3
- declare class __sveltets_Render<T> {
4
- props(): {
5
- data?: TabData<T> | undefined;
2
+ declare const __propDef: {
3
+ props: {
6
4
  disabled?: boolean | undefined;
7
- tabId?: string | undefined;
8
- text?: string | undefined;
9
5
  selected?: boolean | undefined;
6
+ text?: string | undefined;
7
+ value: string;
10
8
  };
11
- events(): {
9
+ events: {
12
10
  blur: FocusEvent;
13
11
  click: MouseEvent;
14
12
  dblclick: MouseEvent;
@@ -37,19 +35,18 @@ declare class __sveltets_Render<T> {
37
35
  } & {
38
36
  [evt: string]: CustomEvent<any>;
39
37
  };
40
- slots(): {
38
+ slots: {
41
39
  default: {
42
- data: TabData<T> | undefined;
43
40
  disabled: boolean;
44
41
  selected: boolean;
45
- tabId: string | undefined;
42
+ value: string;
46
43
  text: string | undefined;
47
44
  };
48
45
  };
49
- }
50
- export type TabProps<T> = ReturnType<__sveltets_Render<T>['props']>;
51
- export type TabEvents<T> = ReturnType<__sveltets_Render<T>['events']>;
52
- export type TabSlots<T> = ReturnType<__sveltets_Render<T>['slots']>;
53
- export default class Tab<T> extends SvelteComponentTyped<TabProps<T>, TabEvents<T>, TabSlots<T>> {
46
+ };
47
+ export type TabProps = typeof __propDef.props;
48
+ export type TabEvents = typeof __propDef.events;
49
+ export type TabSlots = typeof __propDef.slots;
50
+ export default class Tab extends SvelteComponentTyped<TabProps, TabEvents, TabSlots> {
54
51
  }
55
52
  export {};
package/TabList.svelte ADDED
@@ -0,0 +1,247 @@
1
+ <script>import { createKeyborg } from "keyborg";
2
+ import { createEventDispatcher, onMount, setContext } from "svelte";
3
+ import { writable } from "svelte/store";
4
+ import { tabListContextKey } from "./TabList.constants";
5
+ export let disabled = false;
6
+ export let vertical = false;
7
+ export let selectedValue = void 0;
8
+ let keyborg = createKeyborg(window);
9
+ let usingKeyboard = keyborg.isNavigatingWithKeyboard();
10
+ const keyborgHandler = (value) => {
11
+ usingKeyboard = value;
12
+ };
13
+ let tabListRef;
14
+ let lastSelectedTabRef;
15
+ const disabledStore = writable(disabled);
16
+ const selectedValueStore = writable(selectedValue);
17
+ const usingKeyboardStore = writable(usingKeyboard);
18
+ const verticalStore = writable(vertical);
19
+ $:
20
+ disabledStore.set(disabled);
21
+ $:
22
+ selectedValueStore.set(selectedValue);
23
+ $: {
24
+ selectedValue = $selectedValueStore;
25
+ }
26
+ $:
27
+ usingKeyboardStore.set(usingKeyboard);
28
+ $:
29
+ verticalStore.set(vertical);
30
+ const dispatch = createEventDispatcher();
31
+ const raiseSelect = (value) => {
32
+ dispatch("select", { value });
33
+ };
34
+ $: {
35
+ raiseSelect(selectedValue);
36
+ }
37
+ const isElementTab = (candidate) => {
38
+ return candidate && candidate.getAttribute("data-value") !== null && candidate.getAttribute("data-value") !== void 0 && candidate.getAttribute("role") === "tab";
39
+ };
40
+ const getSelectedTabElement = () => {
41
+ if (isElementTab(lastSelectedTabRef) && lastSelectedTabRef?.getAttribute("data-value") === selectedValue && lastSelectedTabRef?.closest('[role="tablist"]') === tabListRef) {
42
+ return lastSelectedTabRef;
43
+ } else {
44
+ return tabListRef?.querySelector("[data-value][aria-selected=true]");
45
+ }
46
+ };
47
+ const selectTab = (value, element) => {
48
+ selectedValueStore.set(value);
49
+ lastSelectedTabRef = element;
50
+ element.scrollIntoView({ block: "nearest", inline: "nearest" });
51
+ element.focus();
52
+ };
53
+ export const selectFirstTab = () => {
54
+ let candidate = tabListRef?.firstElementChild;
55
+ while (candidate && !isElementTab(candidate)) {
56
+ candidate = candidate.nextElementSibling;
57
+ }
58
+ let candidateValue = candidate?.getAttribute("data-value");
59
+ if (candidateValue && candidate) {
60
+ selectTab(candidateValue, candidate);
61
+ return true;
62
+ }
63
+ return false;
64
+ };
65
+ export const selectPreviousTab = () => {
66
+ let selectedItem = getSelectedTabElement();
67
+ let candidate = selectedItem?.previousElementSibling;
68
+ while (candidate && !isElementTab(candidate)) {
69
+ candidate = candidate.previousElementSibling;
70
+ }
71
+ let candidateValue = candidate?.getAttribute("data-value");
72
+ if (candidateValue && candidate) {
73
+ selectTab(candidateValue, candidate);
74
+ return true;
75
+ }
76
+ return false;
77
+ };
78
+ export const selectNextTab = () => {
79
+ let selectedItem = getSelectedTabElement();
80
+ let candidate = selectedItem?.nextElementSibling;
81
+ while (candidate && !isElementTab(candidate)) {
82
+ candidate = candidate.nextElementSibling;
83
+ }
84
+ let candidateValue = candidate?.getAttribute("data-value");
85
+ if (candidateValue && candidate) {
86
+ selectTab(candidateValue, candidate);
87
+ return true;
88
+ }
89
+ return false;
90
+ };
91
+ export const selectLastTab = () => {
92
+ let candidate = tabListRef?.lastElementChild;
93
+ while (candidate && !isElementTab(candidate)) {
94
+ candidate = candidate.previousElementSibling;
95
+ }
96
+ let candidateValue = candidate?.getAttribute("data-value");
97
+ if (candidateValue && candidate) {
98
+ selectTab(candidateValue, candidate);
99
+ return true;
100
+ }
101
+ return false;
102
+ };
103
+ onMount(() => {
104
+ keyborg.subscribe(keyborgHandler);
105
+ return () => {
106
+ keyborg.unsubscribe(keyborgHandler);
107
+ };
108
+ });
109
+ const onClick = (event) => {
110
+ if (!disabled) {
111
+ let candidate = event.target;
112
+ let candidateValue = candidate?.getAttribute("data-value");
113
+ if (candidateValue === void 0 || candidateValue === null) {
114
+ candidate = candidate?.closest("[role=tab]");
115
+ candidateValue = candidate?.getAttribute("data-value");
116
+ }
117
+ if (candidateValue && candidate) {
118
+ selectTab(candidateValue, candidate);
119
+ }
120
+ }
121
+ };
122
+ const onKeydown = (event) => {
123
+ console.log("tabList onKeydown", event);
124
+ if (!disabled && !event.ctrlKey && !event.shiftKey && !event.altKey && !event.metaKey) {
125
+ switch (event.key) {
126
+ case "Home":
127
+ selectFirstTab();
128
+ event.preventDefault();
129
+ event.stopPropagation();
130
+ return false;
131
+ case "End":
132
+ selectLastTab();
133
+ event.preventDefault();
134
+ event.stopPropagation();
135
+ return false;
136
+ case "ArrowLeft":
137
+ if (!vertical) {
138
+ selectPreviousTab();
139
+ }
140
+ event.preventDefault();
141
+ event.stopPropagation();
142
+ return false;
143
+ case "ArrowRight":
144
+ if (!vertical) {
145
+ selectNextTab();
146
+ }
147
+ event.preventDefault();
148
+ event.stopPropagation();
149
+ return false;
150
+ case "ArrowUp":
151
+ if (vertical) {
152
+ selectPreviousTab();
153
+ }
154
+ event.preventDefault();
155
+ event.stopPropagation();
156
+ return false;
157
+ case "ArrowDown":
158
+ if (vertical) {
159
+ selectNextTab();
160
+ }
161
+ event.preventDefault();
162
+ event.stopPropagation();
163
+ return false;
164
+ default:
165
+ break;
166
+ }
167
+ }
168
+ };
169
+ setContext(tabListContextKey, {
170
+ disabled: disabledStore,
171
+ selectedValue: selectedValueStore,
172
+ usingKeyboard: usingKeyboardStore,
173
+ vertical: verticalStore
174
+ });
175
+ </script>
176
+
177
+ <div
178
+ aria-orientation={vertical ? 'vertical' : 'horizontal'}
179
+ bind:this={tabListRef}
180
+ class="sterling-tab-list"
181
+ role="tablist"
182
+ class:vertical
183
+ class:disabled
184
+ on:blur
185
+ on:click
186
+ on:click={onClick}
187
+ on:copy
188
+ on:cut
189
+ on:dblclick
190
+ on:focus
191
+ on:focusin
192
+ on:focusout
193
+ on:keydown
194
+ on:keydown={onKeydown}
195
+ on:keypress
196
+ on:keyup
197
+ on:mousedown
198
+ on:mouseenter
199
+ on:mouseleave
200
+ on:mousemove
201
+ on:mouseover
202
+ on:mouseout
203
+ on:mouseup
204
+ on:scroll
205
+ on:wheel
206
+ on:paste
207
+ {...$$restProps}
208
+ >
209
+ <slot {disabled} {selectedValue} {vertical} />
210
+ </div>
211
+
212
+ <style>
213
+ .sterling-tab-list {
214
+ box-sizing: border-box;
215
+ display: grid;
216
+ margin: 0;
217
+ padding: calc(2 * var(--stsv-Common__outline-width));
218
+ }
219
+
220
+ .sterling-tab-list:not(.vertical) {
221
+ column-gap: 0.5em;
222
+ grid-auto-flow: column;
223
+ grid-template-columns: repeat(auto-fill, auto);
224
+ grid-template-rows: 1fr;
225
+ overflow-x: scroll;
226
+ overflow-y: hidden;
227
+ }
228
+
229
+ .sterling-tab-list.vertical {
230
+ grid-auto-flow: row;
231
+ grid-template-rows: auto;
232
+ grid-template-columns: 1fr;
233
+ overflow-x: hidden;
234
+ overflow-y: scroll;
235
+ row-gap: 0.5em;
236
+ }
237
+
238
+ .sterling-tab-list:hover {
239
+ color: var(--stsv-Common__color--hover);
240
+ }
241
+
242
+ @media (prefers-reduced-motion) {
243
+ .sterling-tab-list {
244
+ transition: none;
245
+ }
246
+ }
247
+ </style>
@@ -1,16 +1,16 @@
1
1
  import { SvelteComponentTyped } from "svelte";
2
- import type { TabData } from './Tabs.types';
3
- declare class __sveltets_Render<T> {
4
- props(): {
2
+ declare const __propDef: {
3
+ props: {
5
4
  [x: string]: any;
6
5
  disabled?: boolean | undefined;
7
- tabs?: TabData<T>[] | undefined;
8
6
  vertical?: boolean | undefined;
9
- selectedTabId?: string | undefined;
10
- selectionFollowsFocus?: boolean | undefined;
11
- selectedTab?: TabData<T> | undefined;
7
+ selectedValue?: string | undefined;
8
+ selectFirstTab?: (() => boolean) | undefined;
9
+ selectPreviousTab?: (() => boolean) | undefined;
10
+ selectNextTab?: (() => boolean) | undefined;
11
+ selectLastTab?: (() => boolean) | undefined;
12
12
  };
13
- events(): {
13
+ events: {
14
14
  blur: FocusEvent;
15
15
  click: MouseEvent;
16
16
  copy: ClipboardEvent;
@@ -36,21 +36,21 @@ declare class __sveltets_Render<T> {
36
36
  } & {
37
37
  [evt: string]: CustomEvent<any>;
38
38
  };
39
- slots(): {
40
- tabContent: {
41
- data: any;
39
+ slots: {
40
+ default: {
42
41
  disabled: boolean;
43
- selected: any;
44
- tabId: any;
45
- text: any;
42
+ selectedValue: string | undefined;
43
+ vertical: boolean;
46
44
  };
47
- default: {};
48
45
  };
49
- }
50
- export type TabListProps<T> = ReturnType<__sveltets_Render<T>['props']>;
51
- export type TabListEvents<T> = ReturnType<__sveltets_Render<T>['events']>;
52
- export type TabListSlots<T> = ReturnType<__sveltets_Render<T>['slots']>;
53
- /** A list of items where a single item can be selected. */
54
- export default class TabList<T> extends SvelteComponentTyped<TabListProps<T>, TabListEvents<T>, TabListSlots<T>> {
46
+ };
47
+ export type TabListProps = typeof __propDef.props;
48
+ export type TabListEvents = typeof __propDef.events;
49
+ export type TabListSlots = typeof __propDef.slots;
50
+ export default class TabList extends SvelteComponentTyped<TabListProps, TabListEvents, TabListSlots> {
51
+ get selectFirstTab(): () => boolean;
52
+ get selectPreviousTab(): () => boolean;
53
+ get selectNextTab(): () => boolean;
54
+ get selectLastTab(): () => boolean;
55
55
  }
56
56
  export {};
@@ -0,0 +1,7 @@
1
+ import type { Readable, Writable } from 'svelte/store';
2
+ export type TabListContext = {
3
+ disabled: Readable<boolean>;
4
+ selectedValue: Writable<string | undefined>;
5
+ usingKeyboard: Readable<boolean>;
6
+ vertical: Readable<boolean>;
7
+ };
@@ -0,0 +1,113 @@
1
+ <script>export let autoHeight = false;
2
+ export let resize = "none";
3
+ export let value;
4
+ let textAreaRef;
5
+ const autoSetHeight = () => {
6
+ if (autoHeight && textAreaRef) {
7
+ textAreaRef.style.height = "auto";
8
+ textAreaRef.style.height = `${textAreaRef.scrollHeight}px`;
9
+ }
10
+ };
11
+ const onInput = () => {
12
+ autoSetHeight();
13
+ };
14
+ $:
15
+ autoHeight, autoSetHeight();
16
+ </script>
17
+
18
+ <textarea
19
+ bind:this={textAreaRef}
20
+ class="sterling-text-area"
21
+ rows="1"
22
+ style={`--TextArea__resize: ${resize};`}
23
+ bind:value
24
+ on:blur
25
+ on:click
26
+ on:change
27
+ on:copy
28
+ on:cut
29
+ on:paste
30
+ on:dblclick
31
+ on:focus
32
+ on:focusin
33
+ on:focusout
34
+ on:input
35
+ on:invalid
36
+ on:keydown
37
+ on:keypress
38
+ on:keyup
39
+ on:mousedown
40
+ on:mouseenter
41
+ on:mouseleave
42
+ on:mousemove
43
+ on:mouseover
44
+ on:mouseout
45
+ on:mouseup
46
+ on:select
47
+ on:submit
48
+ on:reset
49
+ on:wheel
50
+ on:input={onInput}
51
+ {...$$restProps}
52
+ />
53
+
54
+ <style>
55
+ .sterling-text-area {
56
+ background-color: var(--stsv-Input__background-color);
57
+ border-color: var(--stsv-Input__border-color);
58
+ border-radius: var(--stsv-Input__border-radius);
59
+ border-style: var(--stsv-Input__border-style);
60
+ border-width: var(--stsv-Input__border-width);
61
+ box-sizing: border-box;
62
+ color: var(--stsv-Input__color);
63
+ font: inherit;
64
+ line-height: inherit;
65
+ height: 100%;
66
+ outline: none;
67
+ padding: 0.5em;
68
+ margin: 0;
69
+ min-height: 3em;
70
+ overflow: hidden;
71
+ resize: var(--TextArea__resize, none);
72
+ transition: background-color 250ms, color 250ms, border-color 250ms;
73
+ width: 100%;
74
+ }
75
+
76
+ .sterling-text-area:hover {
77
+ background-color: var(--stsv-Input__background-color--hover);
78
+ border-color: var(--stsv-Input__border-color--hover);
79
+ color: var(--stsv-Input__color--hover);
80
+ }
81
+
82
+ .sterling-text-area:focus {
83
+ background-color: var(--stsv-Input__background-color--focus);
84
+ border-color: var(--stsv-Input__border-color--focus);
85
+ color: var(--stsv-Input__color--focus);
86
+ outline-color: var(--stsv-Common__outline-color);
87
+ outline-offset: var(--stsv-Common__outline-offset);
88
+ outline-style: var(--stsv-Common__outline-style);
89
+ outline-width: var(--stsv-Common__outline-width);
90
+ }
91
+
92
+ .sterling-text-area:disabled {
93
+ background-color: var(--stsv-Common__background-color--disabled);
94
+ border-color: var(--stsv--Common__border-color--disabled);
95
+ color: var(--stsv-Common__color--disabled);
96
+ cursor: not-allowed;
97
+ }
98
+
99
+ .sterling-text-area::placeholder {
100
+ color: var(--stsv-Display__color--faint);
101
+ transition: background-color 250ms, color 250ms, border-color 250ms;
102
+ }
103
+
104
+ .sterling-text-area:disabled::placeholder {
105
+ color: var(--stsv-Display__color--disabled);
106
+ }
107
+
108
+ @media (prefers-reduced-motion) {
109
+ .sterling-text-area {
110
+ transition: none;
111
+ }
112
+ }
113
+ </style>
@@ -3,10 +3,9 @@ import type { TextAreaResize } from './TextArea.types';
3
3
  declare const __propDef: {
4
4
  props: {
5
5
  [x: string]: any;
6
- value: string;
7
- resize?: TextAreaResize | undefined;
8
- disabled?: boolean | undefined;
9
6
  autoHeight?: boolean | undefined;
7
+ resize?: TextAreaResize | undefined;
8
+ value: string;
10
9
  };
11
10
  events: {
12
11
  blur: FocusEvent;
@@ -38,9 +37,7 @@ declare const __propDef: {
38
37
  } & {
39
38
  [evt: string]: CustomEvent<any>;
40
39
  };
41
- slots: {
42
- label: {};
43
- };
40
+ slots: {};
44
41
  };
45
42
  export type TextAreaProps = typeof __propDef.props;
46
43
  export type TextAreaEvents = typeof __propDef.events;
@@ -0,0 +1 @@
1
+ export {};