@gradio/tabs 0.5.0 → 0.5.1
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.
- package/CHANGELOG.md +6 -0
- package/Index.svelte +1 -1
- package/dist/Index.svelte.d.ts +1 -1
- package/dist/shared/Tabs.svelte +13 -7
- package/dist/shared/Tabs.svelte.d.ts +2 -2
- package/dist/shared/Walkthrough.svelte.d.ts +1 -1
- package/package.json +1 -1
- package/shared/Tabs.svelte +15 -9
- package/shared/Walkthrough.svelte +1 -1
package/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,11 @@
|
|
|
1
1
|
# @gradio/tabs
|
|
2
2
|
|
|
3
|
+
## 0.5.1
|
|
4
|
+
|
|
5
|
+
### Fixes
|
|
6
|
+
|
|
7
|
+
- [#11784](https://github.com/gradio-app/gradio/pull/11784) [`d9dd3f5`](https://github.com/gradio-app/gradio/commit/d9dd3f54b7fb34cf7118e549d39fc63937ca3489) - Add "hidden" option to component's `visible` kwarg to render but visually hide the component. Thanks @pngwn!
|
|
8
|
+
|
|
3
9
|
## 0.5.0
|
|
4
10
|
|
|
5
11
|
### Features
|
package/Index.svelte
CHANGED
package/dist/Index.svelte.d.ts
CHANGED
|
@@ -4,7 +4,7 @@ import type { Gradio, SelectData } from "@gradio/utils";
|
|
|
4
4
|
import { type Tab } from "./shared/Tabs.svelte";
|
|
5
5
|
declare const __propDef: {
|
|
6
6
|
props: {
|
|
7
|
-
visible?: boolean;
|
|
7
|
+
visible?: boolean | "hidden";
|
|
8
8
|
elem_id?: string;
|
|
9
9
|
elem_classes?: string[];
|
|
10
10
|
selected: number | string;
|
package/dist/shared/Tabs.svelte
CHANGED
|
@@ -36,7 +36,7 @@ onMount(() => {
|
|
|
36
36
|
setContext(TABS, {
|
|
37
37
|
register_tab: (tab, order) => {
|
|
38
38
|
tabs[order] = tab;
|
|
39
|
-
if ($selected_tab === false && tab.visible && tab.interactive) {
|
|
39
|
+
if ($selected_tab === false && tab.visible !== false && tab.interactive) {
|
|
40
40
|
$selected_tab = tab.id;
|
|
41
41
|
$selected_tab_index = order;
|
|
42
42
|
}
|
|
@@ -53,7 +53,7 @@ setContext(TABS, {
|
|
|
53
53
|
});
|
|
54
54
|
function change_tab(id) {
|
|
55
55
|
const tab_to_activate = tabs.find((t) => t?.id === id);
|
|
56
|
-
if (id !== void 0 && tab_to_activate && tab_to_activate.interactive && tab_to_activate.visible && $selected_tab !== tab_to_activate.id) {
|
|
56
|
+
if (id !== void 0 && tab_to_activate && tab_to_activate.interactive && tab_to_activate.visible !== false && $selected_tab !== tab_to_activate.id) {
|
|
57
57
|
selected = id;
|
|
58
58
|
$selected_tab = id;
|
|
59
59
|
$selected_tab_index = tabs.findIndex((t) => t?.id === id);
|
|
@@ -114,7 +114,8 @@ $: tab_scale = tabs[$selected_tab_index >= 0 ? $selected_tab_index : 0]?.scale;
|
|
|
114
114
|
|
|
115
115
|
<div
|
|
116
116
|
class="tabs {elem_classes.join(' ')}"
|
|
117
|
-
class:hide={
|
|
117
|
+
class:hide={visible === false}
|
|
118
|
+
class:hidden={visible === "hidden"}
|
|
118
119
|
id={elem_id}
|
|
119
120
|
style:flex-grow={tab_scale}
|
|
120
121
|
>
|
|
@@ -122,7 +123,7 @@ $: tab_scale = tabs[$selected_tab_index >= 0 ? $selected_tab_index : 0]?.scale;
|
|
|
122
123
|
<div class="tab-wrapper">
|
|
123
124
|
<div class="tab-container visually-hidden" aria-hidden="true">
|
|
124
125
|
{#each tabs as t, i}
|
|
125
|
-
{#if t?.visible}
|
|
126
|
+
{#if t && t?.visible !== false && t?.visible !== "hidden"}
|
|
126
127
|
<button bind:this={tab_els[t.id]}>
|
|
127
128
|
{t?.label}
|
|
128
129
|
</button>
|
|
@@ -131,7 +132,7 @@ $: tab_scale = tabs[$selected_tab_index >= 0 ? $selected_tab_index : 0]?.scale;
|
|
|
131
132
|
</div>
|
|
132
133
|
<div class="tab-container" bind:this={tab_nav_el} role="tablist">
|
|
133
134
|
{#each visible_tabs as t, i}
|
|
134
|
-
{#if t?.visible}
|
|
135
|
+
{#if t && t?.visible !== false}
|
|
135
136
|
<button
|
|
136
137
|
role="tab"
|
|
137
138
|
class:selected={t.id === $selected_tab}
|
|
@@ -155,7 +156,8 @@ $: tab_scale = tabs[$selected_tab_index >= 0 ? $selected_tab_index : 0]?.scale;
|
|
|
155
156
|
</div>
|
|
156
157
|
<span
|
|
157
158
|
class="overflow-menu"
|
|
158
|
-
class:hide={!is_overflowing ||
|
|
159
|
+
class:hide={!is_overflowing ||
|
|
160
|
+
!overflow_tabs.some((t) => t?.visible !== false)}
|
|
159
161
|
bind:this={overflow_menu}
|
|
160
162
|
>
|
|
161
163
|
<button
|
|
@@ -167,7 +169,7 @@ $: tab_scale = tabs[$selected_tab_index >= 0 ? $selected_tab_index : 0]?.scale;
|
|
|
167
169
|
</button>
|
|
168
170
|
<div class="overflow-dropdown" class:hide={!overflow_menu_open}>
|
|
169
171
|
{#each overflow_tabs as t}
|
|
170
|
-
{#if t?.visible}
|
|
172
|
+
{#if t?.visible !== false}
|
|
171
173
|
<button
|
|
172
174
|
on:click={() => change_tab(t?.id)}
|
|
173
175
|
class:selected={t?.id === $selected_tab}
|
|
@@ -195,6 +197,10 @@ $: tab_scale = tabs[$selected_tab_index >= 0 ? $selected_tab_index : 0]?.scale;
|
|
|
195
197
|
display: none;
|
|
196
198
|
}
|
|
197
199
|
|
|
200
|
+
.hidden {
|
|
201
|
+
display: none !important;
|
|
202
|
+
}
|
|
203
|
+
|
|
198
204
|
.tab-wrapper {
|
|
199
205
|
display: flex;
|
|
200
206
|
align-items: center;
|
|
@@ -4,14 +4,14 @@ export interface Tab {
|
|
|
4
4
|
label: string;
|
|
5
5
|
id: string | number;
|
|
6
6
|
elem_id: string | undefined;
|
|
7
|
-
visible: boolean;
|
|
7
|
+
visible: boolean | "hidden";
|
|
8
8
|
interactive: boolean;
|
|
9
9
|
scale: number | null;
|
|
10
10
|
}
|
|
11
11
|
import type { SelectData } from "@gradio/utils";
|
|
12
12
|
declare const __propDef: {
|
|
13
13
|
props: {
|
|
14
|
-
visible?: boolean;
|
|
14
|
+
visible?: boolean | "hidden";
|
|
15
15
|
elem_id?: string;
|
|
16
16
|
elem_classes?: string[];
|
|
17
17
|
selected: number | string;
|
package/package.json
CHANGED
package/shared/Tabs.svelte
CHANGED
|
@@ -5,7 +5,7 @@
|
|
|
5
5
|
label: string;
|
|
6
6
|
id: string | number;
|
|
7
7
|
elem_id: string | undefined;
|
|
8
|
-
visible: boolean;
|
|
8
|
+
visible: boolean | "hidden";
|
|
9
9
|
interactive: boolean;
|
|
10
10
|
scale: number | null;
|
|
11
11
|
}
|
|
@@ -17,7 +17,7 @@
|
|
|
17
17
|
import { writable } from "svelte/store";
|
|
18
18
|
import type { SelectData } from "@gradio/utils";
|
|
19
19
|
|
|
20
|
-
export let visible = true;
|
|
20
|
+
export let visible: boolean | "hidden" = true;
|
|
21
21
|
export let elem_id = "";
|
|
22
22
|
export let elem_classes: string[] = [];
|
|
23
23
|
export let selected: number | string;
|
|
@@ -60,7 +60,7 @@
|
|
|
60
60
|
register_tab: (tab: Tab, order: number) => {
|
|
61
61
|
tabs[order] = tab;
|
|
62
62
|
|
|
63
|
-
if ($selected_tab === false && tab.visible && tab.interactive) {
|
|
63
|
+
if ($selected_tab === false && tab.visible !== false && tab.interactive) {
|
|
64
64
|
$selected_tab = tab.id;
|
|
65
65
|
$selected_tab_index = order;
|
|
66
66
|
}
|
|
@@ -82,7 +82,7 @@
|
|
|
82
82
|
id !== undefined &&
|
|
83
83
|
tab_to_activate &&
|
|
84
84
|
tab_to_activate.interactive &&
|
|
85
|
-
tab_to_activate.visible &&
|
|
85
|
+
tab_to_activate.visible !== false &&
|
|
86
86
|
$selected_tab !== tab_to_activate.id
|
|
87
87
|
) {
|
|
88
88
|
selected = id;
|
|
@@ -168,7 +168,8 @@
|
|
|
168
168
|
|
|
169
169
|
<div
|
|
170
170
|
class="tabs {elem_classes.join(' ')}"
|
|
171
|
-
class:hide={
|
|
171
|
+
class:hide={visible === false}
|
|
172
|
+
class:hidden={visible === "hidden"}
|
|
172
173
|
id={elem_id}
|
|
173
174
|
style:flex-grow={tab_scale}
|
|
174
175
|
>
|
|
@@ -176,7 +177,7 @@
|
|
|
176
177
|
<div class="tab-wrapper">
|
|
177
178
|
<div class="tab-container visually-hidden" aria-hidden="true">
|
|
178
179
|
{#each tabs as t, i}
|
|
179
|
-
{#if t?.visible}
|
|
180
|
+
{#if t && t?.visible !== false && t?.visible !== "hidden"}
|
|
180
181
|
<button bind:this={tab_els[t.id]}>
|
|
181
182
|
{t?.label}
|
|
182
183
|
</button>
|
|
@@ -185,7 +186,7 @@
|
|
|
185
186
|
</div>
|
|
186
187
|
<div class="tab-container" bind:this={tab_nav_el} role="tablist">
|
|
187
188
|
{#each visible_tabs as t, i}
|
|
188
|
-
{#if t?.visible}
|
|
189
|
+
{#if t && t?.visible !== false}
|
|
189
190
|
<button
|
|
190
191
|
role="tab"
|
|
191
192
|
class:selected={t.id === $selected_tab}
|
|
@@ -209,7 +210,8 @@
|
|
|
209
210
|
</div>
|
|
210
211
|
<span
|
|
211
212
|
class="overflow-menu"
|
|
212
|
-
class:hide={!is_overflowing ||
|
|
213
|
+
class:hide={!is_overflowing ||
|
|
214
|
+
!overflow_tabs.some((t) => t?.visible !== false)}
|
|
213
215
|
bind:this={overflow_menu}
|
|
214
216
|
>
|
|
215
217
|
<button
|
|
@@ -221,7 +223,7 @@
|
|
|
221
223
|
</button>
|
|
222
224
|
<div class="overflow-dropdown" class:hide={!overflow_menu_open}>
|
|
223
225
|
{#each overflow_tabs as t}
|
|
224
|
-
{#if t?.visible}
|
|
226
|
+
{#if t?.visible !== false}
|
|
225
227
|
<button
|
|
226
228
|
on:click={() => change_tab(t?.id)}
|
|
227
229
|
class:selected={t?.id === $selected_tab}
|
|
@@ -249,6 +251,10 @@
|
|
|
249
251
|
display: none;
|
|
250
252
|
}
|
|
251
253
|
|
|
254
|
+
.hidden {
|
|
255
|
+
display: none !important;
|
|
256
|
+
}
|
|
257
|
+
|
|
252
258
|
.tab-wrapper {
|
|
253
259
|
display: flex;
|
|
254
260
|
align-items: center;
|
|
@@ -7,7 +7,7 @@
|
|
|
7
7
|
import { writable } from "svelte/store";
|
|
8
8
|
import type { SelectData } from "@gradio/utils";
|
|
9
9
|
|
|
10
|
-
export let visible = true;
|
|
10
|
+
export let visible: boolean | "hidden" = true;
|
|
11
11
|
export let elem_id = "";
|
|
12
12
|
export let elem_classes: string[] = [];
|
|
13
13
|
export let selected: number | string;
|