@geoffcox/sterling-svelte 2.0.0 → 2.0.2

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 (127) hide show
  1. package/package.json +21 -23
  2. package/.DS_Store +0 -0
  3. package/@types/clickOutside.d.ts +0 -15
  4. package/Button.svelte +0 -25
  5. package/Button.svelte.d.ts +0 -9
  6. package/Callout.svelte +0 -177
  7. package/Callout.svelte.d.ts +0 -15
  8. package/Callout.types.d.ts +0 -11
  9. package/Callout.types.js +0 -1
  10. package/Checkbox.svelte +0 -43
  11. package/Checkbox.svelte.d.ts +0 -10
  12. package/Dialog.svelte +0 -151
  13. package/Dialog.svelte.d.ts +0 -14
  14. package/Dropdown.svelte +0 -109
  15. package/Dropdown.svelte.d.ts +0 -18
  16. package/Input.svelte +0 -55
  17. package/Input.svelte.d.ts +0 -12
  18. package/Label.constants.d.ts +0 -2
  19. package/Label.constants.js +0 -2
  20. package/Label.svelte +0 -91
  21. package/Label.svelte.d.ts +0 -17
  22. package/Link.svelte +0 -25
  23. package/Link.svelte.d.ts +0 -12
  24. package/List.constants.d.ts +0 -1
  25. package/List.constants.js +0 -1
  26. package/List.svelte +0 -203
  27. package/List.svelte.d.ts +0 -20
  28. package/List.types.d.ts +0 -5
  29. package/List.types.js +0 -1
  30. package/ListItem.svelte +0 -49
  31. package/ListItem.svelte.d.ts +0 -13
  32. package/Menu.svelte +0 -83
  33. package/Menu.svelte.d.ts +0 -13
  34. package/MenuBar.constants.d.ts +0 -1
  35. package/MenuBar.constants.js +0 -1
  36. package/MenuBar.svelte +0 -113
  37. package/MenuBar.svelte.d.ts +0 -13
  38. package/MenuBar.types.d.ts +0 -4
  39. package/MenuBar.types.js +0 -1
  40. package/MenuButton.svelte +0 -116
  41. package/MenuButton.svelte.d.ts +0 -20
  42. package/MenuItem.constants.d.ts +0 -2
  43. package/MenuItem.constants.js +0 -2
  44. package/MenuItem.svelte +0 -342
  45. package/MenuItem.svelte.d.ts +0 -22
  46. package/MenuItem.types.d.ts +0 -20
  47. package/MenuItem.types.js +0 -1
  48. package/MenuItem.utils.d.ts +0 -7
  49. package/MenuItem.utils.js +0 -36
  50. package/MenuSeparator.svelte +0 -11
  51. package/MenuSeparator.svelte.d.ts +0 -6
  52. package/Popover.constants.d.ts +0 -1
  53. package/Popover.constants.js +0 -14
  54. package/Popover.svelte +0 -121
  55. package/Popover.svelte.d.ts +0 -15
  56. package/Popover.types.d.ts +0 -4
  57. package/Popover.types.js +0 -1
  58. package/Portal.constants.d.ts +0 -2
  59. package/Portal.constants.js +0 -2
  60. package/Portal.types.d.ts +0 -6
  61. package/Portal.types.js +0 -1
  62. package/Progress.constants.d.ts +0 -1
  63. package/Progress.constants.js +0 -1
  64. package/Progress.svelte +0 -36
  65. package/Progress.svelte.d.ts +0 -12
  66. package/Progress.types.d.ts +0 -4
  67. package/Progress.types.js +0 -1
  68. package/Radio.svelte +0 -53
  69. package/Radio.svelte.d.ts +0 -13
  70. package/Select.svelte +0 -196
  71. package/Select.svelte.d.ts +0 -20
  72. package/Slider.svelte +0 -133
  73. package/Slider.svelte.d.ts +0 -19
  74. package/Switch.svelte +0 -61
  75. package/Switch.svelte.d.ts +0 -21
  76. package/Tab.svelte +0 -51
  77. package/Tab.svelte.d.ts +0 -12
  78. package/TabList.constants.d.ts +0 -1
  79. package/TabList.constants.js +0 -1
  80. package/TabList.svelte +0 -202
  81. package/TabList.svelte.d.ts +0 -18
  82. package/TabList.types.d.ts +0 -5
  83. package/TabList.types.js +0 -1
  84. package/TextArea.constants.d.ts +0 -1
  85. package/TextArea.constants.js +0 -1
  86. package/TextArea.svelte +0 -74
  87. package/TextArea.svelte.d.ts +0 -19
  88. package/TextArea.types.d.ts +0 -4
  89. package/TextArea.types.js +0 -1
  90. package/Tooltip.svelte +0 -63
  91. package/Tooltip.svelte.d.ts +0 -10
  92. package/Tree.constants.d.ts +0 -1
  93. package/Tree.constants.js +0 -1
  94. package/Tree.svelte +0 -53
  95. package/Tree.svelte.d.ts +0 -15
  96. package/Tree.types.d.ts +0 -5
  97. package/Tree.types.js +0 -1
  98. package/TreeChevron.svelte +0 -27
  99. package/TreeChevron.svelte.d.ts +0 -9
  100. package/TreeItem.constants.d.ts +0 -1
  101. package/TreeItem.constants.js +0 -1
  102. package/TreeItem.svelte +0 -329
  103. package/TreeItem.svelte.d.ts +0 -22
  104. package/TreeItem.types.d.ts +0 -4
  105. package/TreeItem.types.js +0 -1
  106. package/actions/applyLightDarkMode.d.ts +0 -10
  107. package/actions/applyLightDarkMode.js +0 -36
  108. package/actions/clickOutside.d.ts +0 -15
  109. package/actions/clickOutside.js +0 -28
  110. package/actions/extraClass.d.ts +0 -8
  111. package/actions/extraClass.js +0 -14
  112. package/actions/forwardEvents.d.ts +0 -12
  113. package/actions/forwardEvents.js +0 -32
  114. package/actions/portal.d.ts +0 -8
  115. package/actions/portal.js +0 -19
  116. package/actions/trapKeyboardFocus.d.ts +0 -3
  117. package/actions/trapKeyboardFocus.js +0 -52
  118. package/idGenerator.d.ts +0 -4
  119. package/idGenerator.js +0 -10
  120. package/index.d.ts +0 -59
  121. package/index.js +0 -54
  122. package/mediaQueries/prefersColorSchemeDark.d.ts +0 -2
  123. package/mediaQueries/prefersColorSchemeDark.js +0 -14
  124. package/mediaQueries/prefersReducedMotion.d.ts +0 -2
  125. package/mediaQueries/prefersReducedMotion.js +0 -14
  126. package/mediaQueries/usingKeyboard.d.ts +0 -2
  127. package/mediaQueries/usingKeyboard.js +0 -17
package/Slider.svelte DELETED
@@ -1,133 +0,0 @@
1
- <svelte:options runes={true} />
2
-
3
- <script lang="ts">import { round } from 'lodash-es';
4
- let { class: _class, disabled, min = 0, max = 100, onChange, precision = 0, step = 1, value = $bindable(0), vertical, ...rest } = $props();
5
- let sliderRef;
6
- export const blur = () => {
7
- sliderRef?.blur();
8
- };
9
- export const click = () => {
10
- sliderRef?.click();
11
- };
12
- export const focus = (options) => {
13
- sliderRef?.focus();
14
- };
15
- let ratio = $derived((value - min) / (max - min));
16
- const setValue = (newValue) => {
17
- const clamped = Math.max(min, Math.min(max, newValue));
18
- value = precision !== undefined ? round(clamped, precision) : clamped;
19
- };
20
- // ensure min <= max
21
- $effect(() => {
22
- if (min > max) {
23
- min = max;
24
- }
25
- });
26
- $effect(() => {
27
- const clamped = Math.max(min, Math.min(max, value));
28
- const newValue = precision !== undefined ? round(clamped, precision) : clamped;
29
- if (value !== newValue) {
30
- value = newValue;
31
- }
32
- });
33
- const setValueByOffset = (offset) => {
34
- if (sliderSize > 0) {
35
- const positionRatio = Math.max(0, Math.min(1, offset / sliderSize));
36
- const newValue = min + positionRatio * (max - min);
37
- setValue(newValue);
38
- }
39
- };
40
- // Raise change event when value changes
41
- $effect(() => {
42
- onChange?.(value);
43
- });
44
- // ----- Size tracking ----- //
45
- let sliderWidth = $state(0);
46
- let sliderHeight = $state(0);
47
- let sliderSize = $derived(vertical ? sliderHeight : sliderWidth);
48
- let valueOffset = $derived(sliderSize * ratio);
49
- // ----- Event handlers ----- //
50
- const onPointerDown = (event) => {
51
- if (!disabled) {
52
- event.currentTarget.setPointerCapture(event.pointerId);
53
- if (vertical) {
54
- setValueByOffset(sliderRef.getBoundingClientRect().bottom - event.y);
55
- }
56
- else {
57
- setValueByOffset(event.x - sliderRef.getBoundingClientRect().left);
58
- }
59
- }
60
- rest?.onpointerdown?.(event);
61
- };
62
- const onPointerMove = (event) => {
63
- if (!disabled && event.currentTarget.hasPointerCapture(event.pointerId)) {
64
- if (vertical) {
65
- setValueByOffset(sliderRef.getBoundingClientRect().bottom - event.y);
66
- }
67
- else {
68
- setValueByOffset(event.x - sliderRef.getBoundingClientRect().left);
69
- }
70
- }
71
- rest?.onpointermove?.(event);
72
- };
73
- const onPointerUp = (event) => {
74
- if (!disabled) {
75
- event.currentTarget.releasePointerCapture(event.pointerId);
76
- }
77
- rest?.onpointerup?.(event);
78
- };
79
- const onKeyDown = (event) => {
80
- if (!disabled && !event.ctrlKey && !event.shiftKey && !event.altKey) {
81
- switch (event.code) {
82
- case 'ArrowDown':
83
- case 'ArrowLeft':
84
- setValue(value - step);
85
- event.preventDefault();
86
- event.stopPropagation();
87
- return;
88
- case 'ArrowRight':
89
- case 'ArrowUp':
90
- setValue(value + step);
91
- event.preventDefault();
92
- event.stopPropagation();
93
- return;
94
- }
95
- }
96
- rest?.onkeydown?.(event);
97
- };
98
- </script>
99
-
100
- <div
101
- aria-disabled={disabled}
102
- aria-valuemin={min}
103
- aria-valuenow={value}
104
- aria-valuemax={max}
105
- class={`sterling-slider ${_class}`}
106
- class:disabled
107
- class:horizontal={!vertical}
108
- class:vertical
109
- role="slider"
110
- tabindex={!disabled ? 0 : undefined}
111
- {...rest}
112
- onkeydown={onKeyDown}
113
- onpointerdown={onPointerDown}
114
- onpointermove={onPointerMove}
115
- onpointerup={onPointerUp}
116
- >
117
- <div
118
- class="container"
119
- bind:this={sliderRef}
120
- bind:clientWidth={sliderWidth}
121
- bind:clientHeight={sliderHeight}
122
- >
123
- <div class="track"></div>
124
- <div
125
- class="fill"
126
- style={vertical ? `height: ${valueOffset}px` : `width: ${valueOffset}px`}
127
- ></div>
128
- <div
129
- class="thumb"
130
- style={vertical ? `bottom: ${valueOffset}px` : `left: ${valueOffset}px`}
131
- ></div>
132
- </div>
133
- </div>
@@ -1,19 +0,0 @@
1
- /// <reference types="svelte" />
2
- import type { HTMLAttributes } from 'svelte/elements';
3
- type Props = HTMLAttributes<HTMLDivElement> & {
4
- disabled?: boolean | null;
5
- min?: number;
6
- max?: number;
7
- precision?: number;
8
- step?: number;
9
- value?: number;
10
- vertical?: boolean | null;
11
- onChange?: (value: number) => void;
12
- };
13
- declare const Slider: import("svelte").Component<Props, {
14
- blur: () => void;
15
- click: () => void;
16
- focus: (options?: FocusOptions) => void;
17
- }, "value">;
18
- type Slider = ReturnType<typeof Slider>;
19
- export default Slider;
package/Switch.svelte DELETED
@@ -1,61 +0,0 @@
1
- <svelte:options runes={true} />
2
-
3
- <script lang="ts">import { idGenerator } from './idGenerator';
4
- import { usingKeyboard } from './mediaQueries/usingKeyboard';
5
- let { checked = $bindable(false), class: _class, disabled, id, offLabel, onLabel, vertical, ...rest } = $props();
6
- const inputId = id || idGenerator.nextId('Switch');
7
- let inputRef;
8
- let switchWidth = $state(0);
9
- let switchHeight = $state(0);
10
- let thumbWidth = $state(0);
11
- let thumbHeight = $state(0);
12
- let switchSize = $derived(vertical ? switchHeight : switchWidth);
13
- let thumbSize = $derived(vertical ? thumbHeight : thumbWidth);
14
- let ratio = $derived(vertical ? (checked ? 0 : 1) : checked ? 1 : 0);
15
- let valueOffset = $derived((switchSize - thumbSize) * ratio);
16
- export const blur = () => {
17
- inputRef?.blur();
18
- };
19
- export const click = () => {
20
- inputRef?.click();
21
- };
22
- export const focus = (options) => {
23
- inputRef?.focus(options);
24
- };
25
- </script>
26
-
27
- <div
28
- class={`sterling-switch ${_class}`}
29
- class:checked
30
- class:disabled
31
- class:vertical
32
- class:using-keyboard={$usingKeyboard}
33
- >
34
- <input bind:this={inputRef} bind:checked {disabled} id={inputId} type="checkbox" {...rest} />
35
- {#if offLabel}
36
- <div class="off-label">
37
- {#if typeof offLabel === 'string'}
38
- {offLabel}
39
- {:else}
40
- {@render offLabel({ checked, disabled, inputId })}
41
- {/if}
42
- </div>
43
- {/if}
44
- <div class="toggle" bind:offsetWidth={switchWidth} bind:offsetHeight={switchHeight}>
45
- <div
46
- class="thumb"
47
- bind:offsetWidth={thumbWidth}
48
- bind:offsetHeight={thumbHeight}
49
- style={`--thumb-offset: ${valueOffset}px`}
50
- ></div>
51
- </div>
52
- {#if onLabel}
53
- <div class="on-label">
54
- {#if typeof onLabel === 'string'}
55
- {onLabel}
56
- {:else}
57
- {@render onLabel({ checked, disabled, inputId })}
58
- {/if}
59
- </div>
60
- {/if}
61
- </div>
@@ -1,21 +0,0 @@
1
- import type { HTMLInputAttributes } from 'svelte/elements';
2
- import type { Snippet } from 'svelte';
3
- type LabelSnippet = Snippet<[
4
- {
5
- checked: boolean | null | undefined;
6
- disabled: boolean | null | undefined;
7
- inputId: string;
8
- }
9
- ]>;
10
- type Props = HTMLInputAttributes & {
11
- offLabel?: string | LabelSnippet;
12
- onLabel?: string | LabelSnippet;
13
- vertical?: boolean | null | undefined;
14
- };
15
- declare const Switch: import("svelte").Component<Props, {
16
- blur: () => void;
17
- click: () => void;
18
- focus: (options?: FocusOptions) => void;
19
- }, "checked">;
20
- type Switch = ReturnType<typeof Switch>;
21
- export default Switch;
package/Tab.svelte DELETED
@@ -1,51 +0,0 @@
1
- <svelte:options runes={true} />
2
-
3
- <script lang="ts">import { getContext } from 'svelte';
4
- import { TAB_LIST_CONTEXT_KEY } from './TabList.constants';
5
- import { usingKeyboard } from './mediaQueries/usingKeyboard';
6
- let { children, class: _class, disabled = false, value, ...rest } = $props();
7
- let tabRef;
8
- const tabListContext = getContext(TAB_LIST_CONTEXT_KEY);
9
- let selected = $state(tabListContext.selectedValue === value);
10
- let _disabled = $derived(tabListContext.disabled || disabled);
11
- // Using $derived would be preferred, but this helps avoid
12
- // updates to every tab when selectedValue changes.
13
- // let selected = $derived(tabContext.selectedValue === value);
14
- $effect(() => {
15
- if (tabListContext.selectedValue === value && !selected) {
16
- selected = true;
17
- }
18
- else if (tabListContext.selectedValue !== value && selected) {
19
- selected = false;
20
- }
21
- });
22
- export const click = () => {
23
- tabRef?.click();
24
- };
25
- export const blur = () => {
26
- tabRef?.blur();
27
- };
28
- export const focus = (options) => {
29
- tabRef?.focus(options);
30
- };
31
- </script>
32
-
33
- <button
34
- bind:this={tabRef}
35
- aria-selected={selected}
36
- class={`sterling-tab ${_class}`}
37
- class:selected
38
- class:using-keyboard={$usingKeyboard}
39
- class:vertical={tabListContext.vertical}
40
- data-value={value}
41
- disabled={_disabled}
42
- role="tab"
43
- type="button"
44
- tabIndex={selected ? 0 : -1}
45
- {...rest}
46
- >
47
- <div class="content">
48
- {@render children?.()}
49
- </div>
50
- <div class="indicator"></div>
51
- </button>
package/Tab.svelte.d.ts DELETED
@@ -1,12 +0,0 @@
1
- /// <reference types="svelte" />
2
- import type { HTMLButtonAttributes } from 'svelte/elements';
3
- type Props = HTMLButtonAttributes & {
4
- value: string;
5
- };
6
- declare const Tab: import("svelte").Component<Props, {
7
- click: () => void;
8
- blur: () => void;
9
- focus: (options?: FocusOptions) => void;
10
- }, "">;
11
- type Tab = ReturnType<typeof Tab>;
12
- export default Tab;
@@ -1 +0,0 @@
1
- export declare const TAB_LIST_CONTEXT_KEY = "sterlingTabList";
@@ -1 +0,0 @@
1
- export const TAB_LIST_CONTEXT_KEY = 'sterlingTabList';
package/TabList.svelte DELETED
@@ -1,202 +0,0 @@
1
- <svelte:options runes={true} />
2
-
3
- <script lang="ts">import { setContext } from 'svelte';
4
- import { TAB_LIST_CONTEXT_KEY } from './TabList.constants';
5
- let { children, class: _class, disabled = false, onSelect, selectedValue = $bindable(), vertical = false, ...rest } = $props();
6
- let tabListRef;
7
- let lastSelectedTabRef;
8
- let tabListContext = {
9
- get disabled() {
10
- return disabled;
11
- },
12
- set disabled(value) {
13
- disabled = value;
14
- },
15
- get selectedValue() {
16
- return selectedValue;
17
- },
18
- set selectedValue(value) {
19
- selectedValue = value;
20
- },
21
- get vertical() {
22
- return vertical;
23
- },
24
- set vertical(value) {
25
- vertical = value;
26
- }
27
- };
28
- $effect(() => {
29
- tabListContext.disabled = disabled;
30
- });
31
- $effect(() => {
32
- tabListContext.selectedValue = selectedValue;
33
- });
34
- $effect(() => {
35
- tabListContext.vertical = vertical;
36
- });
37
- setContext(TAB_LIST_CONTEXT_KEY, tabListContext);
38
- $effect(() => {
39
- onSelect?.(selectedValue);
40
- });
41
- export const blur = () => {
42
- tabListRef?.blur();
43
- };
44
- export const focus = (options) => {
45
- let selectedItem = getSelectedTabElement();
46
- if (selectedValue && selectedItem) {
47
- selectTab(selectedValue, selectedItem);
48
- }
49
- else {
50
- selectFirstTab();
51
- }
52
- };
53
- const isElementTab = (candidate) => {
54
- return (candidate &&
55
- candidate.getAttribute('data-value') !== null &&
56
- candidate.getAttribute('data-value') !== undefined &&
57
- candidate.getAttribute('role') === 'tab');
58
- };
59
- const getSelectedTabElement = () => {
60
- if (isElementTab(lastSelectedTabRef) &&
61
- lastSelectedTabRef?.getAttribute('data-value') === selectedValue &&
62
- lastSelectedTabRef?.closest('[role="tablist"]') === tabListRef) {
63
- return lastSelectedTabRef;
64
- }
65
- else {
66
- return tabListRef?.querySelector('[data-value][aria-selected=true]');
67
- }
68
- };
69
- const selectTab = (value, element) => {
70
- selectedValue = value;
71
- lastSelectedTabRef = element;
72
- element.scrollIntoView({ block: 'nearest', inline: 'nearest' });
73
- element.focus();
74
- };
75
- export const selectFirstTab = () => {
76
- let candidate = tabListRef?.firstElementChild;
77
- while (candidate && !isElementTab(candidate)) {
78
- candidate = candidate.nextElementSibling;
79
- }
80
- let candidateValue = candidate?.getAttribute('data-value');
81
- if (candidateValue && candidate) {
82
- selectTab(candidateValue, candidate);
83
- return true;
84
- }
85
- return false;
86
- };
87
- export const selectPreviousTab = () => {
88
- let selectedTab = getSelectedTabElement();
89
- let candidate = selectedTab?.previousElementSibling;
90
- while (candidate && !isElementTab(candidate)) {
91
- candidate = candidate.previousElementSibling;
92
- }
93
- let candidateValue = candidate?.getAttribute('data-value');
94
- if (candidateValue && candidate) {
95
- selectTab(candidateValue, candidate);
96
- return true;
97
- }
98
- return false;
99
- };
100
- export const selectNextTab = () => {
101
- let selectedTab = getSelectedTabElement();
102
- let candidate = selectedTab?.nextElementSibling;
103
- while (candidate && !isElementTab(candidate)) {
104
- candidate = candidate.nextElementSibling;
105
- }
106
- let candidateValue = candidate?.getAttribute('data-value');
107
- if (candidateValue && candidate) {
108
- selectTab(candidateValue, candidate);
109
- return true;
110
- }
111
- return false;
112
- };
113
- export const selectLastTab = () => {
114
- let candidate = tabListRef?.lastElementChild;
115
- while (candidate && !isElementTab(candidate)) {
116
- candidate = candidate.previousElementSibling;
117
- }
118
- let candidateValue = candidate?.getAttribute('data-value');
119
- if (candidateValue && candidate) {
120
- selectTab(candidateValue, candidate);
121
- return true;
122
- }
123
- return false;
124
- };
125
- const onClick = (event) => {
126
- if (!disabled) {
127
- let candidate = event.target;
128
- let candidateValue = candidate?.getAttribute('data-value');
129
- if (candidateValue === undefined || candidateValue === null) {
130
- candidate = candidate?.closest('[role=tab]');
131
- candidateValue = candidate?.getAttribute('data-value');
132
- }
133
- if (candidateValue && candidate) {
134
- selectTab(candidateValue, candidate);
135
- }
136
- }
137
- rest.onclick?.(event);
138
- };
139
- const onKeydown = (event) => {
140
- // if using arrows, only move when there are no modifier keys
141
- if (!disabled && !event.ctrlKey && !event.shiftKey && !event.altKey && !event.metaKey) {
142
- switch (event.key) {
143
- case 'Home':
144
- selectFirstTab();
145
- event.preventDefault();
146
- event.stopPropagation();
147
- break;
148
- case 'End':
149
- selectLastTab();
150
- event.preventDefault();
151
- event.stopPropagation();
152
- break;
153
- case 'ArrowLeft':
154
- if (!vertical) {
155
- selectPreviousTab();
156
- }
157
- event.preventDefault();
158
- event.stopPropagation();
159
- break;
160
- case 'ArrowRight':
161
- if (!vertical) {
162
- selectNextTab();
163
- }
164
- event.preventDefault();
165
- event.stopPropagation();
166
- break;
167
- case 'ArrowUp':
168
- if (vertical) {
169
- selectPreviousTab();
170
- }
171
- event.preventDefault();
172
- event.stopPropagation();
173
- break;
174
- case 'ArrowDown':
175
- if (vertical) {
176
- selectNextTab();
177
- }
178
- event.preventDefault();
179
- event.stopPropagation();
180
- break;
181
- default:
182
- break;
183
- }
184
- }
185
- rest.onkeydown?.(event);
186
- };
187
- </script>
188
-
189
- <div
190
- aria-orientation={vertical ? 'vertical' : 'horizontal'}
191
- bind:this={tabListRef}
192
- class={`sterling-tab-list ${_class}`}
193
- class:disabled
194
- class:vertical
195
- role="tablist"
196
- tabindex="-1"
197
- onclick={onClick}
198
- onkeydown={onKeydown}
199
- {...rest}
200
- >
201
- {@render children?.()}
202
- </div>
@@ -1,18 +0,0 @@
1
- /// <reference types="svelte" />
2
- import type { HTMLAttributes } from 'svelte/elements';
3
- type Props = HTMLAttributes<HTMLDivElement> & {
4
- disabled?: boolean | null;
5
- selectedValue?: string;
6
- vertical?: boolean | null;
7
- onSelect?: (value?: string) => void;
8
- };
9
- declare const TabList: import("svelte").Component<Props, {
10
- blur: () => void;
11
- focus: (options?: FocusOptions) => void;
12
- selectFirstTab: () => boolean;
13
- selectPreviousTab: () => boolean;
14
- selectNextTab: () => boolean;
15
- selectLastTab: () => boolean;
16
- }, "selectedValue">;
17
- type TabList = ReturnType<typeof TabList>;
18
- export default TabList;
@@ -1,5 +0,0 @@
1
- export type TabListContext = {
2
- disabled?: boolean | null | undefined;
3
- selectedValue?: string | undefined;
4
- vertical?: boolean | null | undefined;
5
- };
package/TabList.types.js DELETED
@@ -1 +0,0 @@
1
- export {};
@@ -1 +0,0 @@
1
- export declare const TEXT_AREA_RESIZES: readonly ["none", "horizontal", "vertical", "both"];
@@ -1 +0,0 @@
1
- export const TEXT_AREA_RESIZES = ['none', 'horizontal', 'vertical', 'both'];
package/TextArea.svelte DELETED
@@ -1,74 +0,0 @@
1
- <svelte:options runes={true} />
2
-
3
- <script lang="ts">import { tick } from 'svelte';
4
- let { class: _class, disabled = false, value = $bindable(''), autoHeight = false, resize = $bindable('none'), style, ...rest } = $props();
5
- let textAreaRef;
6
- const correctResize = async () => {
7
- await tick();
8
- setTimeout(() => {
9
- if (autoHeight) {
10
- if (resize === 'both') {
11
- console.warn('The resize property cannot be set to "both" when autoHeight is true. The resize property will be set to "horizontal".');
12
- resize = 'horizontal';
13
- }
14
- if (resize === 'vertical') {
15
- console.warn('The resize property cannot be set to "vertical" when autoHeight is true. The resize property will be set to "none".');
16
- resize = 'none';
17
- }
18
- }
19
- }, 0);
20
- };
21
- const autoSetHeight = () => {
22
- if (autoHeight && textAreaRef) {
23
- // the style must be directly set to avoid re-rendering looping latency
24
- // setting to auto for a moment allows the textarea to shrink
25
- textAreaRef.style.height = 'auto';
26
- textAreaRef.style.height = `${textAreaRef.scrollHeight}px`;
27
- }
28
- };
29
- $effect(() => {
30
- autoHeight;
31
- resize;
32
- correctResize();
33
- autoSetHeight();
34
- });
35
- const onInput = (event) => {
36
- autoSetHeight();
37
- rest.oninput?.(event);
38
- };
39
- export const blur = () => {
40
- textAreaRef?.blur();
41
- };
42
- export const click = () => {
43
- textAreaRef?.click();
44
- };
45
- export const focus = (options) => {
46
- textAreaRef?.focus();
47
- };
48
- export const select = () => {
49
- textAreaRef?.select();
50
- };
51
- export const setSelectionRange = (start, end, direction) => {
52
- textAreaRef?.setSelectionRange(start, end, direction);
53
- };
54
- export const setRangeText = (replacement, start, end, selectionMode) => {
55
- if (start && end) {
56
- textAreaRef?.setRangeText(replacement, start, end, selectionMode);
57
- }
58
- else {
59
- textAreaRef?.setRangeText(replacement);
60
- }
61
- };
62
- </script>
63
-
64
- <div class={`sterling-text-area ${_class}`} class:disabled>
65
- <textarea
66
- bind:this={textAreaRef}
67
- bind:value
68
- {disabled}
69
- rows="1"
70
- {...rest}
71
- oninput={onInput}
72
- style={`--TextArea__resize: ${resize};${style}`}
73
- ></textarea>
74
- </div>
@@ -1,19 +0,0 @@
1
- /// <reference types="svelte" />
2
- import type { TextAreaResize } from './TextArea.types';
3
- import type { HTMLTextareaAttributes } from 'svelte/elements';
4
- type Props = HTMLTextareaAttributes & {
5
- autoHeight?: boolean | null | undefined;
6
- disabled?: boolean | null | undefined;
7
- value?: string;
8
- resize?: TextAreaResize;
9
- };
10
- declare const TextArea: import("svelte").Component<Props, {
11
- blur: () => void;
12
- click: () => void;
13
- focus: (options?: FocusOptions) => void;
14
- select: () => void;
15
- setSelectionRange: (start: number | null, end: number | null, direction?: 'forward' | 'backward' | 'none') => void;
16
- setRangeText: (replacement: string, start?: number, end?: number, selectionMode?: SelectionMode) => void;
17
- }, "value" | "resize">;
18
- type TextArea = ReturnType<typeof TextArea>;
19
- export default TextArea;
@@ -1,4 +0,0 @@
1
- import type { TEXT_AREA_RESIZES } from './TextArea.constants';
2
- type TextAreaResizeTuple = typeof TEXT_AREA_RESIZES;
3
- export type TextAreaResize = TextAreaResizeTuple[number];
4
- export {};
package/TextArea.types.js DELETED
@@ -1 +0,0 @@
1
- export {};