|
@@ -1,4 +1,4 @@
|
|
|
-import { beVisible, haveFocus, html, notBeVisible, test } from '../../../utils'
|
|
|
+import { beVisible, haveClasses, haveFocus, html, notBeVisible, notHaveClasses, test } from '../../../utils'
|
|
|
|
|
|
test('can use tabs to toggle panels',
|
|
|
[html`
|
|
@@ -83,3 +83,65 @@ test('cant tab through tabs, can only use arrows',
|
|
|
get('[button-4]').should(haveFocus())
|
|
|
},
|
|
|
)
|
|
|
+
|
|
|
+test('can detect the selected tab & panel',
|
|
|
+ [html`
|
|
|
+ <div x-data x-tabs>
|
|
|
+ <div x-tabs:list>
|
|
|
+ <button x-tabs:tab button-1 :class="$tab.isSelected && 'active'">First</button>
|
|
|
+ <button x-tabs:tab button-2 :class="$tab.isSelected && 'active'">Second</button>
|
|
|
+ </div>
|
|
|
+
|
|
|
+ <div x-tabs:panels>
|
|
|
+ <div x-tabs:panel panel-1 :class="$panel.isSelected && 'active'">First Panel</div>
|
|
|
+ <div x-tabs:panel panel-2 :class="$panel.isSelected && 'active'">Second Panel</div>
|
|
|
+ </div>
|
|
|
+ </div>
|
|
|
+ `],
|
|
|
+ ({ get }) => {
|
|
|
+ get('[panel-1]').should(beVisible())
|
|
|
+ get('[panel-2]').should(notBeVisible())
|
|
|
+ get('[button-1]').should(haveClasses(['active']))
|
|
|
+ get('[panel-1]').should(haveClasses(['active']))
|
|
|
+ get('[button-2]').should(notHaveClasses(['active']))
|
|
|
+ get('[panel-2]').should(notHaveClasses(['active']))
|
|
|
+ get('[button-2]').click()
|
|
|
+ get('[button-1]').should(notHaveClasses(['active']))
|
|
|
+ get('[panel-1]').should(notHaveClasses(['active']))
|
|
|
+ get('[button-2]').should(haveClasses(['active']))
|
|
|
+ get('[panel-2]').should(haveClasses(['active']))
|
|
|
+ get('[panel-1]').should(notBeVisible())
|
|
|
+ get('[panel-2]').should(beVisible())
|
|
|
+ },
|
|
|
+)
|
|
|
+
|
|
|
+test.only('can disable a tab',
|
|
|
+ [html`
|
|
|
+ <div x-data x-tabs>
|
|
|
+ <div x-tabs:list>
|
|
|
+ <button x-tabs:tab button-1>First</button>
|
|
|
+ <button x-tabs:tab button-2 disabled :class="$tab.isDisabled && 'disabled'">Second</button>
|
|
|
+ <button x-tabs:tab button-3>Third</button>
|
|
|
+ </div>
|
|
|
+
|
|
|
+ <div x-tabs:panels>
|
|
|
+ <div x-tabs:panel panel-1>First Panel</div>
|
|
|
+ <div x-tabs:panel panel-2>Second Panel</div>
|
|
|
+ <div x-tabs:panel panel-3>Third Panel</div>
|
|
|
+ </div>
|
|
|
+ </div>
|
|
|
+ `],
|
|
|
+ ({ get }) => {
|
|
|
+ get('[button-2]').should(haveClasses(['disabled']))
|
|
|
+ get('[button-1]').click()
|
|
|
+ get('[button-1]').should(haveFocus())
|
|
|
+ get('[panel-1]').should(beVisible())
|
|
|
+ get('[panel-2]').should(notBeVisible())
|
|
|
+ get('[button-1]').type('{rightArrow}')
|
|
|
+ get('[panel-1]').should(notBeVisible())
|
|
|
+ get('[panel-3]').should(beVisible())
|
|
|
+ get('[button-1]').type('{rightArrow}')
|
|
|
+ get('[panel-3]').should(notBeVisible())
|
|
|
+ get('[panel-1]').should(beVisible())
|
|
|
+ },
|
|
|
+)
|