File tree 2 files changed +36
-15
lines changed
2 files changed +36
-15
lines changed Original file line number Diff line number Diff line change 68
68
}
69
69
}
70
70
71
+ $: if (tabs .length ) {
72
+ // Manually get the accessor so it is reactive.
73
+ const accessor =
74
+ tabs[0 ] instanceof Object
75
+ ? tabAccessorWeakMap .get (tabs[0 ])
76
+ : tabAccessorMap[tabs[0 ]];
77
+
78
+ if (accessor) {
79
+ accessor .forceAccessible (activeIndex === - 1 );
80
+ }
81
+ }
82
+
71
83
$: if (instance) {
72
84
instance .setUseAutomaticActivation (useAutomaticActivation);
73
85
}
142
154
function addAccessor (tabId , accessor ) {
143
155
if (tabId instanceof Object ) {
144
156
tabAccessorWeakMap .set (tabId, accessor);
157
+ tabAccessorWeakMap = tabAccessorWeakMap;
145
158
} else {
146
159
tabAccessorMap[tabId] = accessor;
160
+ tabAccessorMap = tabAccessorMap;
147
161
}
148
162
}
149
163
150
164
function removeAccessor (tabId ) {
151
165
if (tabId instanceof Object ) {
152
166
tabAccessorWeakMap .delete (tabId);
167
+ tabAccessorWeakMap = tabAccessorWeakMap;
153
168
} else {
154
169
delete tabAccessorMap[tabId];
170
+ tabAccessorMap = tabAccessorMap;
155
171
}
156
172
}
157
173
Original file line number Diff line number Diff line change 25
25
})}
26
26
role =" tab"
27
27
aria-selected ={active ? ' true' : ' false' }
28
- tabindex ={active ? ' 0' : ' -1' }
28
+ tabindex ={active || forceAccessible ? ' 0' : ' -1' }
29
29
{href }
30
30
on:click ={instance && instance .handleClick ()}
31
31
{...internalAttrs }
109
109
let internalAttrs = {};
110
110
let focusOnActivate = getContext (' SMUI:tab:focusOnActivate' );
111
111
let active = tabId === getContext (' SMUI:tab:initialActive' );
112
- let accessor = {
113
- tabId,
114
- get element () {
115
- return getElement ();
116
- },
117
- get active () {
118
- return active;
119
- },
120
- computeIndicatorClientRect : () => tabIndicator .computeContentClientRect (),
121
- computeDimensions : () => instance .computeDimensions (),
122
- focus,
123
- activate,
124
- deactivate,
125
- };
112
+ let forceAccessible = false ;
126
113
127
114
export let component = href == null ? Button : A ;
128
115
157
144
focus,
158
145
});
159
146
147
+ const accessor = {
148
+ tabId,
149
+ get element () {
150
+ return getElement ();
151
+ },
152
+ get active () {
153
+ return active;
154
+ },
155
+ forceAccessible (accessible ) {
156
+ forceAccessible = accessible;
157
+ },
158
+ computeIndicatorClientRect : () => tabIndicator .computeContentClientRect (),
159
+ computeDimensions : () => instance .computeDimensions (),
160
+ focus,
161
+ activate,
162
+ deactivate,
163
+ };
164
+
160
165
dispatch (getElement (), ' SMUI:tab:mount' , accessor);
161
166
162
167
instance .init ();
You can’t perform that action at this time.
0 commit comments