@shoper/phoenix_design_system 0.19.3-1 → 0.19.3-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.
- package/build/cjs/packages/phoenix/src/components/tabs/tab/tab.js +74 -0
- package/build/cjs/packages/phoenix/src/components/tabs/tab/tab.js.map +1 -0
- package/build/cjs/packages/phoenix/src/components/tabs/tab/tab_constants.js +12 -0
- package/build/cjs/packages/phoenix/src/components/tabs/tab/tab_constants.js.map +1 -0
- package/build/cjs/packages/phoenix/src/components/tabs/tab_panel.js +36 -0
- package/build/cjs/packages/phoenix/src/components/tabs/tab_panel.js.map +1 -0
- package/build/cjs/packages/phoenix/src/components/tabs/tabs.js +103 -0
- package/build/cjs/packages/phoenix/src/components/tabs/tabs.js.map +1 -0
- package/build/cjs/packages/phoenix/src/components/tabs/tabs_constants.js +10 -0
- package/build/cjs/packages/phoenix/src/components/tabs/tabs_constants.js.map +1 -0
- package/build/cjs/packages/phoenix/src/index.js +23 -0
- package/build/cjs/packages/phoenix/src/index.js.map +1 -1
- package/build/cjs/packages/utilities/build/esm/ui_dom_utils.js +24 -0
- package/build/cjs/packages/utilities/build/esm/ui_dom_utils.js.map +1 -0
- package/build/esm/packages/phoenix/src/components/tabs/tab/tab.js +69 -67
- package/build/esm/packages/phoenix/src/components/tabs/tab/tab.js.map +1 -1
- package/build/esm/packages/phoenix/src/components/tabs/tab/tab_constants.js +7 -5
- package/build/esm/packages/phoenix/src/components/tabs/tab/tab_constants.js.map +1 -1
- package/build/esm/packages/phoenix/src/components/tabs/tab_panel.js +31 -30
- package/build/esm/packages/phoenix/src/components/tabs/tab_panel.js.map +1 -1
- package/build/esm/packages/phoenix/src/components/tabs/tabs.js +98 -100
- package/build/esm/packages/phoenix/src/components/tabs/tabs.js.map +1 -1
- package/build/esm/packages/phoenix/src/components/tabs/tabs_constants.js +5 -3
- package/build/esm/packages/phoenix/src/components/tabs/tabs_constants.js.map +1 -1
- package/build/esm/packages/phoenix/src/index.d.ts +4 -0
- package/build/esm/packages/phoenix/src/index.js +4 -0
- package/build/esm/packages/phoenix/src/index.js.map +1 -1
- package/build/esm/packages/utilities/build/esm/ui_dom_utils.js +20 -0
- package/build/esm/packages/utilities/build/esm/ui_dom_utils.js.map +1 -0
- package/package.json +1 -1
|
@@ -0,0 +1,74 @@
|
|
|
1
|
+
'use strict';
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, '__esModule', { value: true });
|
|
4
|
+
|
|
5
|
+
var tslib_es6 = require('../../../../../../external/tslib/tslib.es6.js');
|
|
6
|
+
var decorators = require('lit/decorators');
|
|
7
|
+
var ui_dom_utils = require('../../../../../utilities/build/esm/ui_dom_utils.js');
|
|
8
|
+
var phoenix_light_lit_element = require('../../../core/phoenix_light_lit_element/phoenix_light_lit_element.js');
|
|
9
|
+
var phoenix_custom_element = require('../../../core/decorators/phoenix_custom_element.js');
|
|
10
|
+
var btn_controller = require('../../../controllers/btn_controller.js');
|
|
11
|
+
var tab_constants = require('./tab_constants.js');
|
|
12
|
+
|
|
13
|
+
exports.Tab = class Tab extends phoenix_light_lit_element.PhoenixLightLitElement {
|
|
14
|
+
constructor() {
|
|
15
|
+
super(...arguments);
|
|
16
|
+
this._handleTabClicked = () => {
|
|
17
|
+
if (this.disabled)
|
|
18
|
+
return;
|
|
19
|
+
this._dispatchSelectedEvent();
|
|
20
|
+
};
|
|
21
|
+
this._dispatchSelectedEvent = () => {
|
|
22
|
+
this.dispatchEvent(new CustomEvent(tab_constants.TAB_EVENT_NAMES.selected, {
|
|
23
|
+
detail: {
|
|
24
|
+
$el: this
|
|
25
|
+
},
|
|
26
|
+
bubbles: true
|
|
27
|
+
}));
|
|
28
|
+
};
|
|
29
|
+
}
|
|
30
|
+
get selected() {
|
|
31
|
+
return this.hasAttribute(tab_constants.TAB_SELECTED_ATTRIBUTE_NAME);
|
|
32
|
+
}
|
|
33
|
+
set selected(selected) {
|
|
34
|
+
selected ? this.setAttribute(tab_constants.TAB_SELECTED_ATTRIBUTE_NAME, '') : this.removeAttribute(tab_constants.TAB_SELECTED_ATTRIBUTE_NAME);
|
|
35
|
+
this.setAttribute('aria-selected', String(selected));
|
|
36
|
+
selected ? ui_dom_utils.UiDomUtils.makeNavigable(this) : ui_dom_utils.UiDomUtils.makeUnnavigable(this);
|
|
37
|
+
}
|
|
38
|
+
attributeChangedCallback(name, value, newValue) {
|
|
39
|
+
super.attributeChangedCallback(name, value, newValue);
|
|
40
|
+
switch (name) {
|
|
41
|
+
case tab_constants.TAB_SELECTED_ATTRIBUTE_NAME: {
|
|
42
|
+
this.selected = Boolean(newValue);
|
|
43
|
+
break;
|
|
44
|
+
}
|
|
45
|
+
}
|
|
46
|
+
}
|
|
47
|
+
connectedCallback() {
|
|
48
|
+
super.connectedCallback();
|
|
49
|
+
this._btnController = new btn_controller.BtnController(this, this._dispatchSelectedEvent);
|
|
50
|
+
this._setupAttributes();
|
|
51
|
+
this._bindEvents();
|
|
52
|
+
this.tabIndex = this.selected ? 0 : -1;
|
|
53
|
+
}
|
|
54
|
+
_setupAttributes() {
|
|
55
|
+
this.setAttribute('role', 'tab');
|
|
56
|
+
this.setAttribute('aria-controls', this.panelName);
|
|
57
|
+
this.setAttribute('aria-selected', String(this.selected));
|
|
58
|
+
}
|
|
59
|
+
_bindEvents() {
|
|
60
|
+
this.addEventListener('click', this._handleTabClicked);
|
|
61
|
+
}
|
|
62
|
+
};
|
|
63
|
+
tslib_es6.__decorate([
|
|
64
|
+
decorators.property({ type: String, reflect: true, attribute: 'panel-name' }),
|
|
65
|
+
tslib_es6.__metadata("design:type", String)
|
|
66
|
+
], exports.Tab.prototype, "panelName", void 0);
|
|
67
|
+
tslib_es6.__decorate([
|
|
68
|
+
decorators.property({ type: Boolean, reflect: true }),
|
|
69
|
+
tslib_es6.__metadata("design:type", Boolean)
|
|
70
|
+
], exports.Tab.prototype, "disabled", void 0);
|
|
71
|
+
exports.Tab = tslib_es6.__decorate([
|
|
72
|
+
phoenix_custom_element.phoenixCustomElement('h-tab')
|
|
73
|
+
], exports.Tab);
|
|
74
|
+
//# sourceMappingURL=tab.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":null,"sources":[null],"sourcesContent":[null],"names":[],"mappings":"AAAA;AACA;AACA;AACA;AACA,wBAAwB,+CAAmD;AAC3E;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;"}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
'use strict';
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, '__esModule', { value: true });
|
|
4
|
+
|
|
5
|
+
const TAB_EVENT_NAMES = {
|
|
6
|
+
selected: 'selected'
|
|
7
|
+
};
|
|
8
|
+
const TAB_SELECTED_ATTRIBUTE_NAME = 'selected';
|
|
9
|
+
|
|
10
|
+
exports.TAB_EVENT_NAMES = TAB_EVENT_NAMES;
|
|
11
|
+
exports.TAB_SELECTED_ATTRIBUTE_NAME = TAB_SELECTED_ATTRIBUTE_NAME;
|
|
12
|
+
//# sourceMappingURL=tab_constants.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":null,"sources":[null],"sourcesContent":[null],"names":[],"mappings":"AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;"}
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
'use strict';
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, '__esModule', { value: true });
|
|
4
|
+
|
|
5
|
+
var tslib_es6 = require('../../../../../external/tslib/tslib.es6.js');
|
|
6
|
+
var decorators = require('lit/decorators');
|
|
7
|
+
var phoenix_light_lit_element = require('../../core/phoenix_light_lit_element/phoenix_light_lit_element.js');
|
|
8
|
+
var phoenix_custom_element = require('../../core/decorators/phoenix_custom_element.js');
|
|
9
|
+
var visibility_controller = require('../../controllers/visibility_controller/visibility_controller.js');
|
|
10
|
+
|
|
11
|
+
exports.TabPanel = class TabPanel extends phoenix_light_lit_element.PhoenixLightLitElement {
|
|
12
|
+
constructor() {
|
|
13
|
+
super();
|
|
14
|
+
this.hidden = true;
|
|
15
|
+
this._visibilityController = new visibility_controller.VisibilityController(this);
|
|
16
|
+
}
|
|
17
|
+
show() {
|
|
18
|
+
this._visibilityController.show();
|
|
19
|
+
}
|
|
20
|
+
hide() {
|
|
21
|
+
this._visibilityController.hide();
|
|
22
|
+
}
|
|
23
|
+
};
|
|
24
|
+
tslib_es6.__decorate([
|
|
25
|
+
decorators.property({ type: String, reflect: true }),
|
|
26
|
+
tslib_es6.__metadata("design:type", String)
|
|
27
|
+
], exports.TabPanel.prototype, "name", void 0);
|
|
28
|
+
tslib_es6.__decorate([
|
|
29
|
+
decorators.property({ type: Boolean, reflect: true }),
|
|
30
|
+
tslib_es6.__metadata("design:type", Object)
|
|
31
|
+
], exports.TabPanel.prototype, "hidden", void 0);
|
|
32
|
+
exports.TabPanel = tslib_es6.__decorate([
|
|
33
|
+
phoenix_custom_element.phoenixCustomElement('h-tab-panel'),
|
|
34
|
+
tslib_es6.__metadata("design:paramtypes", [])
|
|
35
|
+
], exports.TabPanel);
|
|
36
|
+
//# sourceMappingURL=tab_panel.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":null,"sources":[null],"sourcesContent":[null],"names":[],"mappings":"AAAA;AACA;AACA;AACA;AACA,wBAAwB,4CAAgD;AACxE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;"}
|
|
@@ -0,0 +1,103 @@
|
|
|
1
|
+
'use strict';
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, '__esModule', { value: true });
|
|
4
|
+
|
|
5
|
+
var phoenix_light_lit_elements_constants = require('../../core/phoenix_light_lit_element/phoenix_light_lit_elements_constants.js');
|
|
6
|
+
var tslib_es6 = require('../../../../../external/tslib/tslib.es6.js');
|
|
7
|
+
var decorators = require('lit/decorators');
|
|
8
|
+
var ui_dom_utils = require('../../../../utilities/build/esm/ui_dom_utils.js');
|
|
9
|
+
var phoenix_light_lit_element = require('../../core/phoenix_light_lit_element/phoenix_light_lit_element.js');
|
|
10
|
+
var phoenix_custom_element = require('../../core/decorators/phoenix_custom_element.js');
|
|
11
|
+
var keystrokes_controller = require('../../controllers/keystrokes_controller/keystrokes_controller.js');
|
|
12
|
+
var tab_constants = require('./tab/tab_constants.js');
|
|
13
|
+
var tab = require('./tab/tab.js');
|
|
14
|
+
var tabs_constants = require('./tabs_constants.js');
|
|
15
|
+
|
|
16
|
+
exports.Tabs = class Tabs extends phoenix_light_lit_element.PhoenixLightLitElement {
|
|
17
|
+
constructor() {
|
|
18
|
+
super(...arguments);
|
|
19
|
+
this._handleArrowNavigation = ({ key }) => {
|
|
20
|
+
const currentTabIndex = this._getFocusedTabIndex();
|
|
21
|
+
if (currentTabIndex === undefined)
|
|
22
|
+
return;
|
|
23
|
+
const newTabIndex = key === 'ArrowLeft' ? this._getPrevTabIndex(currentTabIndex) : this._getNextTabIndex(currentTabIndex);
|
|
24
|
+
if (newTabIndex === undefined)
|
|
25
|
+
return;
|
|
26
|
+
ui_dom_utils.UiDomUtils.makeUnnavigable(this._$tabs[currentTabIndex]);
|
|
27
|
+
ui_dom_utils.UiDomUtils.makeNavigable(this._$tabs[newTabIndex]);
|
|
28
|
+
this._$tabs[newTabIndex].focus();
|
|
29
|
+
};
|
|
30
|
+
this._handleTabSelected = (event) => {
|
|
31
|
+
const $newlySelectedTab = event.detail.$el;
|
|
32
|
+
this.switchPanel($newlySelectedTab.panelName);
|
|
33
|
+
if (this._$selectedTab)
|
|
34
|
+
this._$selectedTab.selected = false;
|
|
35
|
+
$newlySelectedTab.selected = true;
|
|
36
|
+
this._dispatchChangedEvent(this._$selectedTab, $newlySelectedTab);
|
|
37
|
+
this._$selectedTab = $newlySelectedTab;
|
|
38
|
+
};
|
|
39
|
+
this._handleTabConnected = (event) => {
|
|
40
|
+
const $connectedTab = event.detail.$el;
|
|
41
|
+
if (!$connectedTab.selected)
|
|
42
|
+
return;
|
|
43
|
+
this._$selectedTab = event.detail.$el;
|
|
44
|
+
this.switchPanel(this._$selectedTab.panelName);
|
|
45
|
+
};
|
|
46
|
+
}
|
|
47
|
+
connectedCallback() {
|
|
48
|
+
super.connectedCallback();
|
|
49
|
+
this._setupEvents();
|
|
50
|
+
this.setAttribute('role', 'tablist');
|
|
51
|
+
this._$tabs = [...this.querySelectorAll('h-tab')];
|
|
52
|
+
new keystrokes_controller.KeystrokesController({
|
|
53
|
+
host: this,
|
|
54
|
+
keys: ['ArrowRight', 'ArrowLeft'],
|
|
55
|
+
callback: this._handleArrowNavigation
|
|
56
|
+
});
|
|
57
|
+
}
|
|
58
|
+
_getFocusedTabIndex() {
|
|
59
|
+
const focusedElement = document.activeElement;
|
|
60
|
+
if ((focusedElement === null || focusedElement === void 0 ? void 0 : focusedElement.tagName) !== 'H-TAB')
|
|
61
|
+
return;
|
|
62
|
+
return this._$tabs.findIndex(($tab) => $tab === focusedElement);
|
|
63
|
+
}
|
|
64
|
+
_getNextTabIndex(currentTabIndex) {
|
|
65
|
+
if (currentTabIndex >= this._$tabs.length - 1)
|
|
66
|
+
return;
|
|
67
|
+
return currentTabIndex + 1;
|
|
68
|
+
}
|
|
69
|
+
_getPrevTabIndex(currentTabIndex) {
|
|
70
|
+
if (currentTabIndex <= 0)
|
|
71
|
+
return;
|
|
72
|
+
return currentTabIndex - 1;
|
|
73
|
+
}
|
|
74
|
+
_setupEvents() {
|
|
75
|
+
this.addEventListener(tab_constants.TAB_EVENT_NAMES.selected, this._handleTabSelected);
|
|
76
|
+
this.addEventListener(phoenix_light_lit_elements_constants.PHOENIX_LIGHT_LIT_ELEMENTS_EVENT_NAMES.connected, this._handleTabConnected);
|
|
77
|
+
}
|
|
78
|
+
switchPanel(newPanelName) {
|
|
79
|
+
const $currentPanel = document.querySelectorAll(`[name="${this._$selectedTab.panelName}"]`);
|
|
80
|
+
const $newPanel = document.querySelectorAll(`[name="${newPanelName}"]`);
|
|
81
|
+
if ($currentPanel)
|
|
82
|
+
$currentPanel.forEach(($panel) => $panel.hide());
|
|
83
|
+
if ($newPanel)
|
|
84
|
+
$newPanel.forEach(($panel) => $panel.show());
|
|
85
|
+
}
|
|
86
|
+
_dispatchChangedEvent($previousTab, $newTab) {
|
|
87
|
+
this.dispatchEvent(new CustomEvent(tabs_constants.TABS_EVENT_NAMES.changed, {
|
|
88
|
+
detail: {
|
|
89
|
+
$previousTab,
|
|
90
|
+
$newTab
|
|
91
|
+
},
|
|
92
|
+
bubbles: true
|
|
93
|
+
}));
|
|
94
|
+
}
|
|
95
|
+
};
|
|
96
|
+
tslib_es6.__decorate([
|
|
97
|
+
decorators.state(),
|
|
98
|
+
tslib_es6.__metadata("design:type", tab.Tab)
|
|
99
|
+
], exports.Tabs.prototype, "_$selectedTab", void 0);
|
|
100
|
+
exports.Tabs = tslib_es6.__decorate([
|
|
101
|
+
phoenix_custom_element.phoenixCustomElement('h-tabs')
|
|
102
|
+
], exports.Tabs);
|
|
103
|
+
//# sourceMappingURL=tabs.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":null,"sources":[null],"sourcesContent":[null],"names":[],"mappings":"AAAA;AACA;AACA;AACA;AACA;AACA,wBAAwB,4CAAgD;AACxE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":null,"sources":[null],"sourcesContent":[null],"names":[],"mappings":"AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;"}
|
|
@@ -62,6 +62,10 @@ var click_outside_controller_messages = require('./controllers/click_outside_con
|
|
|
62
62
|
var backdrop = require('./components/backdrop/backdrop.js');
|
|
63
63
|
var visibility_controller = require('./controllers/visibility_controller/visibility_controller.js');
|
|
64
64
|
var slider = require('./components/slider/slider.js');
|
|
65
|
+
var tab = require('./components/tabs/tab/tab.js');
|
|
66
|
+
var tab_panel = require('./components/tabs/tab_panel.js');
|
|
67
|
+
var tabs_constants = require('./components/tabs/tabs_constants.js');
|
|
68
|
+
var tabs = require('./components/tabs/tabs.js');
|
|
65
69
|
|
|
66
70
|
|
|
67
71
|
|
|
@@ -344,4 +348,23 @@ Object.defineProperty(exports, 'HSlider', {
|
|
|
344
348
|
return slider.HSlider;
|
|
345
349
|
}
|
|
346
350
|
});
|
|
351
|
+
Object.defineProperty(exports, 'Tab', {
|
|
352
|
+
enumerable: true,
|
|
353
|
+
get: function () {
|
|
354
|
+
return tab.Tab;
|
|
355
|
+
}
|
|
356
|
+
});
|
|
357
|
+
Object.defineProperty(exports, 'TabPanel', {
|
|
358
|
+
enumerable: true,
|
|
359
|
+
get: function () {
|
|
360
|
+
return tab_panel.TabPanel;
|
|
361
|
+
}
|
|
362
|
+
});
|
|
363
|
+
exports.TABS_EVENT_NAMES = tabs_constants.TABS_EVENT_NAMES;
|
|
364
|
+
Object.defineProperty(exports, 'Tabs', {
|
|
365
|
+
enumerable: true,
|
|
366
|
+
get: function () {
|
|
367
|
+
return tabs.Tabs;
|
|
368
|
+
}
|
|
369
|
+
});
|
|
347
370
|
//# sourceMappingURL=index.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":null,"sources":[null],"sourcesContent":[null],"names":[],"mappings":"AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;"}
|
|
1
|
+
{"version":3,"file":null,"sources":[null],"sourcesContent":[null],"names":[],"mappings":"AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;"}
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
'use strict';
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, '__esModule', { value: true });
|
|
4
|
+
|
|
5
|
+
class UiDomUtils {
|
|
6
|
+
static show($el) {
|
|
7
|
+
$el.removeAttribute('hidden');
|
|
8
|
+
}
|
|
9
|
+
static hide($el) {
|
|
10
|
+
$el.setAttribute('hidden', '');
|
|
11
|
+
}
|
|
12
|
+
static empty($el) {
|
|
13
|
+
$el.innerHTML = '';
|
|
14
|
+
}
|
|
15
|
+
static makeUnnavigable($el) {
|
|
16
|
+
$el.setAttribute('tabindex', '-1');
|
|
17
|
+
}
|
|
18
|
+
static makeNavigable($el) {
|
|
19
|
+
$el.setAttribute('tabindex', '0');
|
|
20
|
+
}
|
|
21
|
+
}
|
|
22
|
+
|
|
23
|
+
exports.UiDomUtils = UiDomUtils;
|
|
24
|
+
//# sourceMappingURL=ui_dom_utils.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":null,"sources":[null],"sourcesContent":[null],"names":[],"mappings":"AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;"}
|
|
@@ -1,70 +1,72 @@
|
|
|
1
|
-
import { __decorate, __metadata } from
|
|
2
|
-
import { phoenixCustomElement } from '@phoenixRoot/core/decorators/phoenix_custom_element';
|
|
3
|
-
import { PhoenixLightLitElement } from '@phoenixRoot/core/phoenix_light_lit_element/phoenix_light_lit_element';
|
|
4
|
-
import { BtnController } from '@phoenixRoot/controllers/btn_controller';
|
|
1
|
+
import { __decorate, __metadata } from '../../../../../../external/tslib/tslib.es6.js';
|
|
5
2
|
import { property } from 'lit/decorators';
|
|
6
|
-
import {
|
|
7
|
-
import {
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
this.
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
this.
|
|
51
|
-
this.
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
this.
|
|
56
|
-
|
|
57
|
-
}
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
__decorate([
|
|
63
|
-
property({ type:
|
|
64
|
-
__metadata("design:type",
|
|
65
|
-
], Tab.prototype, "
|
|
66
|
-
|
|
67
|
-
|
|
3
|
+
import { UiDomUtils } from '../../../../../utilities/build/esm/ui_dom_utils.js';
|
|
4
|
+
import { PhoenixLightLitElement } from '../../../core/phoenix_light_lit_element/phoenix_light_lit_element.js';
|
|
5
|
+
import { phoenixCustomElement } from '../../../core/decorators/phoenix_custom_element.js';
|
|
6
|
+
import { BtnController } from '../../../controllers/btn_controller.js';
|
|
7
|
+
import { TAB_EVENT_NAMES, TAB_SELECTED_ATTRIBUTE_NAME } from './tab_constants.js';
|
|
8
|
+
|
|
9
|
+
let Tab = class Tab extends PhoenixLightLitElement {
|
|
10
|
+
constructor() {
|
|
11
|
+
super(...arguments);
|
|
12
|
+
this._handleTabClicked = () => {
|
|
13
|
+
if (this.disabled)
|
|
14
|
+
return;
|
|
15
|
+
this._dispatchSelectedEvent();
|
|
16
|
+
};
|
|
17
|
+
this._dispatchSelectedEvent = () => {
|
|
18
|
+
this.dispatchEvent(new CustomEvent(TAB_EVENT_NAMES.selected, {
|
|
19
|
+
detail: {
|
|
20
|
+
$el: this
|
|
21
|
+
},
|
|
22
|
+
bubbles: true
|
|
23
|
+
}));
|
|
24
|
+
};
|
|
25
|
+
}
|
|
26
|
+
get selected() {
|
|
27
|
+
return this.hasAttribute(TAB_SELECTED_ATTRIBUTE_NAME);
|
|
28
|
+
}
|
|
29
|
+
set selected(selected) {
|
|
30
|
+
selected ? this.setAttribute(TAB_SELECTED_ATTRIBUTE_NAME, '') : this.removeAttribute(TAB_SELECTED_ATTRIBUTE_NAME);
|
|
31
|
+
this.setAttribute('aria-selected', String(selected));
|
|
32
|
+
selected ? UiDomUtils.makeNavigable(this) : UiDomUtils.makeUnnavigable(this);
|
|
33
|
+
}
|
|
34
|
+
attributeChangedCallback(name, value, newValue) {
|
|
35
|
+
super.attributeChangedCallback(name, value, newValue);
|
|
36
|
+
switch (name) {
|
|
37
|
+
case TAB_SELECTED_ATTRIBUTE_NAME: {
|
|
38
|
+
this.selected = Boolean(newValue);
|
|
39
|
+
break;
|
|
40
|
+
}
|
|
41
|
+
}
|
|
42
|
+
}
|
|
43
|
+
connectedCallback() {
|
|
44
|
+
super.connectedCallback();
|
|
45
|
+
this._btnController = new BtnController(this, this._dispatchSelectedEvent);
|
|
46
|
+
this._setupAttributes();
|
|
47
|
+
this._bindEvents();
|
|
48
|
+
this.tabIndex = this.selected ? 0 : -1;
|
|
49
|
+
}
|
|
50
|
+
_setupAttributes() {
|
|
51
|
+
this.setAttribute('role', 'tab');
|
|
52
|
+
this.setAttribute('aria-controls', this.panelName);
|
|
53
|
+
this.setAttribute('aria-selected', String(this.selected));
|
|
54
|
+
}
|
|
55
|
+
_bindEvents() {
|
|
56
|
+
this.addEventListener('click', this._handleTabClicked);
|
|
57
|
+
}
|
|
58
|
+
};
|
|
59
|
+
__decorate([
|
|
60
|
+
property({ type: String, reflect: true, attribute: 'panel-name' }),
|
|
61
|
+
__metadata("design:type", String)
|
|
62
|
+
], Tab.prototype, "panelName", void 0);
|
|
63
|
+
__decorate([
|
|
64
|
+
property({ type: Boolean, reflect: true }),
|
|
65
|
+
__metadata("design:type", Boolean)
|
|
66
|
+
], Tab.prototype, "disabled", void 0);
|
|
67
|
+
Tab = __decorate([
|
|
68
|
+
phoenixCustomElement('h-tab')
|
|
68
69
|
], Tab);
|
|
70
|
+
|
|
69
71
|
export { Tab };
|
|
70
|
-
//# sourceMappingURL=tab.js.map
|
|
72
|
+
//# sourceMappingURL=tab.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":
|
|
1
|
+
{"version":3,"file":null,"sources":[null],"sourcesContent":[null],"names":[],"mappings":"AAAA,uCAAuC,+CAAmD;AAC1F;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;"}
|
|
@@ -1,5 +1,7 @@
|
|
|
1
|
-
|
|
2
|
-
selected: 'selected'
|
|
3
|
-
};
|
|
4
|
-
|
|
5
|
-
|
|
1
|
+
const TAB_EVENT_NAMES = {
|
|
2
|
+
selected: 'selected'
|
|
3
|
+
};
|
|
4
|
+
const TAB_SELECTED_ATTRIBUTE_NAME = 'selected';
|
|
5
|
+
|
|
6
|
+
export { TAB_EVENT_NAMES, TAB_SELECTED_ATTRIBUTE_NAME };
|
|
7
|
+
//# sourceMappingURL=tab_constants.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":
|
|
1
|
+
{"version":3,"file":null,"sources":[null],"sourcesContent":[null],"names":[],"mappings":"AAAA;AACA;AACA;AACA;AACA;AACA;"}
|
|
@@ -1,33 +1,34 @@
|
|
|
1
|
-
import { __decorate, __metadata } from
|
|
2
|
-
import { phoenixCustomElement } from '@phoenixRoot/core/decorators/phoenix_custom_element';
|
|
3
|
-
import { PhoenixLightLitElement } from '@phoenixRoot/core/phoenix_light_lit_element/phoenix_light_lit_element';
|
|
1
|
+
import { __decorate, __metadata } from '../../../../../external/tslib/tslib.es6.js';
|
|
4
2
|
import { property } from 'lit/decorators';
|
|
5
|
-
import '
|
|
6
|
-
import {
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
3
|
+
import { PhoenixLightLitElement } from '../../core/phoenix_light_lit_element/phoenix_light_lit_element.js';
|
|
4
|
+
import { phoenixCustomElement } from '../../core/decorators/phoenix_custom_element.js';
|
|
5
|
+
import { VisibilityController } from '../../controllers/visibility_controller/visibility_controller.js';
|
|
6
|
+
|
|
7
|
+
let TabPanel = class TabPanel extends PhoenixLightLitElement {
|
|
8
|
+
constructor() {
|
|
9
|
+
super();
|
|
10
|
+
this.hidden = true;
|
|
11
|
+
this._visibilityController = new VisibilityController(this);
|
|
12
|
+
}
|
|
13
|
+
show() {
|
|
14
|
+
this._visibilityController.show();
|
|
15
|
+
}
|
|
16
|
+
hide() {
|
|
17
|
+
this._visibilityController.hide();
|
|
18
|
+
}
|
|
19
|
+
};
|
|
20
|
+
__decorate([
|
|
21
|
+
property({ type: String, reflect: true }),
|
|
22
|
+
__metadata("design:type", String)
|
|
23
|
+
], TabPanel.prototype, "name", void 0);
|
|
24
|
+
__decorate([
|
|
25
|
+
property({ type: Boolean, reflect: true }),
|
|
26
|
+
__metadata("design:type", Object)
|
|
27
|
+
], TabPanel.prototype, "hidden", void 0);
|
|
28
|
+
TabPanel = __decorate([
|
|
29
|
+
phoenixCustomElement('h-tab-panel'),
|
|
30
|
+
__metadata("design:paramtypes", [])
|
|
31
31
|
], TabPanel);
|
|
32
|
+
|
|
32
33
|
export { TabPanel };
|
|
33
|
-
//# sourceMappingURL=tab_panel.js.map
|
|
34
|
+
//# sourceMappingURL=tab_panel.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":
|
|
1
|
+
{"version":3,"file":null,"sources":[null],"sourcesContent":[null],"names":[],"mappings":"AAAA,uCAAuC,4CAAgD;AACvF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;"}
|
|
@@ -1,103 +1,101 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import {
|
|
3
|
-
import { phoenixCustomElement } from '@phoenixRoot/core/decorators/phoenix_custom_element';
|
|
4
|
-
import { Tab } from '@phoenixRoot/components/tabs/tab/tab';
|
|
1
|
+
import { PHOENIX_LIGHT_LIT_ELEMENTS_EVENT_NAMES } from '../../core/phoenix_light_lit_element/phoenix_light_lit_elements_constants.js';
|
|
2
|
+
import { __decorate, __metadata } from '../../../../../external/tslib/tslib.es6.js';
|
|
5
3
|
import { state } from 'lit/decorators';
|
|
6
|
-
import '
|
|
7
|
-
import {
|
|
8
|
-
import {
|
|
9
|
-
import {
|
|
10
|
-
import '
|
|
11
|
-
import {
|
|
12
|
-
import {
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
if (currentTabIndex === undefined)
|
|
20
|
-
return;
|
|
21
|
-
const newTabIndex = key === 'ArrowLeft' ? this._getPrevTabIndex(currentTabIndex) : this._getNextTabIndex(currentTabIndex);
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
UiDomUtils.
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
this.
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
$newlySelectedTab
|
|
35
|
-
this.
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
this._$selectedTab
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
this.
|
|
49
|
-
this.
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
this.addEventListener(
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
const $
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
$
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
phoenixCustomElement('h-tabs')
|
|
4
|
+
import { UiDomUtils } from '../../../../utilities/build/esm/ui_dom_utils.js';
|
|
5
|
+
import { PhoenixLightLitElement } from '../../core/phoenix_light_lit_element/phoenix_light_lit_element.js';
|
|
6
|
+
import { phoenixCustomElement } from '../../core/decorators/phoenix_custom_element.js';
|
|
7
|
+
import { KeystrokesController } from '../../controllers/keystrokes_controller/keystrokes_controller.js';
|
|
8
|
+
import { TAB_EVENT_NAMES } from './tab/tab_constants.js';
|
|
9
|
+
import { Tab } from './tab/tab.js';
|
|
10
|
+
import { TABS_EVENT_NAMES } from './tabs_constants.js';
|
|
11
|
+
|
|
12
|
+
let Tabs = class Tabs extends PhoenixLightLitElement {
|
|
13
|
+
constructor() {
|
|
14
|
+
super(...arguments);
|
|
15
|
+
this._handleArrowNavigation = ({ key }) => {
|
|
16
|
+
const currentTabIndex = this._getFocusedTabIndex();
|
|
17
|
+
if (currentTabIndex === undefined)
|
|
18
|
+
return;
|
|
19
|
+
const newTabIndex = key === 'ArrowLeft' ? this._getPrevTabIndex(currentTabIndex) : this._getNextTabIndex(currentTabIndex);
|
|
20
|
+
if (newTabIndex === undefined)
|
|
21
|
+
return;
|
|
22
|
+
UiDomUtils.makeUnnavigable(this._$tabs[currentTabIndex]);
|
|
23
|
+
UiDomUtils.makeNavigable(this._$tabs[newTabIndex]);
|
|
24
|
+
this._$tabs[newTabIndex].focus();
|
|
25
|
+
};
|
|
26
|
+
this._handleTabSelected = (event) => {
|
|
27
|
+
const $newlySelectedTab = event.detail.$el;
|
|
28
|
+
this.switchPanel($newlySelectedTab.panelName);
|
|
29
|
+
if (this._$selectedTab)
|
|
30
|
+
this._$selectedTab.selected = false;
|
|
31
|
+
$newlySelectedTab.selected = true;
|
|
32
|
+
this._dispatchChangedEvent(this._$selectedTab, $newlySelectedTab);
|
|
33
|
+
this._$selectedTab = $newlySelectedTab;
|
|
34
|
+
};
|
|
35
|
+
this._handleTabConnected = (event) => {
|
|
36
|
+
const $connectedTab = event.detail.$el;
|
|
37
|
+
if (!$connectedTab.selected)
|
|
38
|
+
return;
|
|
39
|
+
this._$selectedTab = event.detail.$el;
|
|
40
|
+
this.switchPanel(this._$selectedTab.panelName);
|
|
41
|
+
};
|
|
42
|
+
}
|
|
43
|
+
connectedCallback() {
|
|
44
|
+
super.connectedCallback();
|
|
45
|
+
this._setupEvents();
|
|
46
|
+
this.setAttribute('role', 'tablist');
|
|
47
|
+
this._$tabs = [...this.querySelectorAll('h-tab')];
|
|
48
|
+
new KeystrokesController({
|
|
49
|
+
host: this,
|
|
50
|
+
keys: ['ArrowRight', 'ArrowLeft'],
|
|
51
|
+
callback: this._handleArrowNavigation
|
|
52
|
+
});
|
|
53
|
+
}
|
|
54
|
+
_getFocusedTabIndex() {
|
|
55
|
+
const focusedElement = document.activeElement;
|
|
56
|
+
if ((focusedElement === null || focusedElement === void 0 ? void 0 : focusedElement.tagName) !== 'H-TAB')
|
|
57
|
+
return;
|
|
58
|
+
return this._$tabs.findIndex(($tab) => $tab === focusedElement);
|
|
59
|
+
}
|
|
60
|
+
_getNextTabIndex(currentTabIndex) {
|
|
61
|
+
if (currentTabIndex >= this._$tabs.length - 1)
|
|
62
|
+
return;
|
|
63
|
+
return currentTabIndex + 1;
|
|
64
|
+
}
|
|
65
|
+
_getPrevTabIndex(currentTabIndex) {
|
|
66
|
+
if (currentTabIndex <= 0)
|
|
67
|
+
return;
|
|
68
|
+
return currentTabIndex - 1;
|
|
69
|
+
}
|
|
70
|
+
_setupEvents() {
|
|
71
|
+
this.addEventListener(TAB_EVENT_NAMES.selected, this._handleTabSelected);
|
|
72
|
+
this.addEventListener(PHOENIX_LIGHT_LIT_ELEMENTS_EVENT_NAMES.connected, this._handleTabConnected);
|
|
73
|
+
}
|
|
74
|
+
switchPanel(newPanelName) {
|
|
75
|
+
const $currentPanel = document.querySelectorAll(`[name="${this._$selectedTab.panelName}"]`);
|
|
76
|
+
const $newPanel = document.querySelectorAll(`[name="${newPanelName}"]`);
|
|
77
|
+
if ($currentPanel)
|
|
78
|
+
$currentPanel.forEach(($panel) => $panel.hide());
|
|
79
|
+
if ($newPanel)
|
|
80
|
+
$newPanel.forEach(($panel) => $panel.show());
|
|
81
|
+
}
|
|
82
|
+
_dispatchChangedEvent($previousTab, $newTab) {
|
|
83
|
+
this.dispatchEvent(new CustomEvent(TABS_EVENT_NAMES.changed, {
|
|
84
|
+
detail: {
|
|
85
|
+
$previousTab,
|
|
86
|
+
$newTab
|
|
87
|
+
},
|
|
88
|
+
bubbles: true
|
|
89
|
+
}));
|
|
90
|
+
}
|
|
91
|
+
};
|
|
92
|
+
__decorate([
|
|
93
|
+
state(),
|
|
94
|
+
__metadata("design:type", Tab)
|
|
95
|
+
], Tabs.prototype, "_$selectedTab", void 0);
|
|
96
|
+
Tabs = __decorate([
|
|
97
|
+
phoenixCustomElement('h-tabs')
|
|
101
98
|
], Tabs);
|
|
99
|
+
|
|
102
100
|
export { Tabs };
|
|
103
|
-
//# sourceMappingURL=tabs.js.map
|
|
101
|
+
//# sourceMappingURL=tabs.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":
|
|
1
|
+
{"version":3,"file":null,"sources":[null],"sourcesContent":[null],"names":[],"mappings":"AAAA;AACA,uCAAuC,4CAAgD;AACvF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":
|
|
1
|
+
{"version":3,"file":null,"sources":[null],"sourcesContent":[null],"names":[],"mappings":"AAAA;AACA;AACA;AACA;AACA;"}
|
|
@@ -69,3 +69,7 @@ export { VisibilityController } from './controllers/visibility_controller/visibi
|
|
|
69
69
|
export * from './controllers/visibility_controller/visibility_controller_types';
|
|
70
70
|
export { HSlider } from './components/slider/slider';
|
|
71
71
|
export * from './components/slider/slider_types';
|
|
72
|
+
export { Tabs } from './components/tabs/tabs';
|
|
73
|
+
export { Tab } from './components/tabs/tab/tab';
|
|
74
|
+
export { TabPanel } from './components/tabs/tab_panel';
|
|
75
|
+
export { TABS_EVENT_NAMES } from './components/tabs/tabs_constants';
|
|
@@ -58,4 +58,8 @@ export { CLICK_OUTSIDE_CONTROLLER_MESSAGES } from './controllers/click_outside_c
|
|
|
58
58
|
export { HBackdrop } from './components/backdrop/backdrop.js';
|
|
59
59
|
export { VisibilityController } from './controllers/visibility_controller/visibility_controller.js';
|
|
60
60
|
export { HSlider } from './components/slider/slider.js';
|
|
61
|
+
export { Tab } from './components/tabs/tab/tab.js';
|
|
62
|
+
export { TabPanel } from './components/tabs/tab_panel.js';
|
|
63
|
+
export { TABS_EVENT_NAMES } from './components/tabs/tabs_constants.js';
|
|
64
|
+
export { Tabs } from './components/tabs/tabs.js';
|
|
61
65
|
//# sourceMappingURL=index.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":null,"sources":[null],"sourcesContent":[null],"names":[],"mappings":"AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;"}
|
|
1
|
+
{"version":3,"file":null,"sources":[null],"sourcesContent":[null],"names":[],"mappings":"AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;"}
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
class UiDomUtils {
|
|
2
|
+
static show($el) {
|
|
3
|
+
$el.removeAttribute('hidden');
|
|
4
|
+
}
|
|
5
|
+
static hide($el) {
|
|
6
|
+
$el.setAttribute('hidden', '');
|
|
7
|
+
}
|
|
8
|
+
static empty($el) {
|
|
9
|
+
$el.innerHTML = '';
|
|
10
|
+
}
|
|
11
|
+
static makeUnnavigable($el) {
|
|
12
|
+
$el.setAttribute('tabindex', '-1');
|
|
13
|
+
}
|
|
14
|
+
static makeNavigable($el) {
|
|
15
|
+
$el.setAttribute('tabindex', '0');
|
|
16
|
+
}
|
|
17
|
+
}
|
|
18
|
+
|
|
19
|
+
export { UiDomUtils };
|
|
20
|
+
//# sourceMappingURL=ui_dom_utils.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":null,"sources":[null],"sourcesContent":[null],"names":[],"mappings":"AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;"}
|