@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 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
@@ -10,7 +10,7 @@
10
10
 
11
11
  const dispatch = createEventDispatcher();
12
12
 
13
- export let visible = true;
13
+ export let visible: boolean | "hidden" = true;
14
14
  export let elem_id = "";
15
15
  export let elem_classes: string[] = [];
16
16
  export let selected: number | string;
@@ -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;
@@ -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={!visible}
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 || !overflow_tabs.some((t) => t?.visible)}
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;
@@ -3,7 +3,7 @@ import { type Tab } from "./Tabs.svelte";
3
3
  import type { SelectData } from "@gradio/utils";
4
4
  declare const __propDef: {
5
5
  props: {
6
- visible?: boolean;
6
+ visible?: boolean | "hidden";
7
7
  elem_id?: string;
8
8
  elem_classes?: string[];
9
9
  selected: number | string;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@gradio/tabs",
3
- "version": "0.5.0",
3
+ "version": "0.5.1",
4
4
  "description": "Gradio UI packages",
5
5
  "type": "module",
6
6
  "author": "",
@@ -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={!visible}
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 || !overflow_tabs.some((t) => t?.visible)}
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;