@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.
Files changed (30) hide show
  1. package/build/cjs/packages/phoenix/src/components/tabs/tab/tab.js +74 -0
  2. package/build/cjs/packages/phoenix/src/components/tabs/tab/tab.js.map +1 -0
  3. package/build/cjs/packages/phoenix/src/components/tabs/tab/tab_constants.js +12 -0
  4. package/build/cjs/packages/phoenix/src/components/tabs/tab/tab_constants.js.map +1 -0
  5. package/build/cjs/packages/phoenix/src/components/tabs/tab_panel.js +36 -0
  6. package/build/cjs/packages/phoenix/src/components/tabs/tab_panel.js.map +1 -0
  7. package/build/cjs/packages/phoenix/src/components/tabs/tabs.js +103 -0
  8. package/build/cjs/packages/phoenix/src/components/tabs/tabs.js.map +1 -0
  9. package/build/cjs/packages/phoenix/src/components/tabs/tabs_constants.js +10 -0
  10. package/build/cjs/packages/phoenix/src/components/tabs/tabs_constants.js.map +1 -0
  11. package/build/cjs/packages/phoenix/src/index.js +23 -0
  12. package/build/cjs/packages/phoenix/src/index.js.map +1 -1
  13. package/build/cjs/packages/utilities/build/esm/ui_dom_utils.js +24 -0
  14. package/build/cjs/packages/utilities/build/esm/ui_dom_utils.js.map +1 -0
  15. package/build/esm/packages/phoenix/src/components/tabs/tab/tab.js +69 -67
  16. package/build/esm/packages/phoenix/src/components/tabs/tab/tab.js.map +1 -1
  17. package/build/esm/packages/phoenix/src/components/tabs/tab/tab_constants.js +7 -5
  18. package/build/esm/packages/phoenix/src/components/tabs/tab/tab_constants.js.map +1 -1
  19. package/build/esm/packages/phoenix/src/components/tabs/tab_panel.js +31 -30
  20. package/build/esm/packages/phoenix/src/components/tabs/tab_panel.js.map +1 -1
  21. package/build/esm/packages/phoenix/src/components/tabs/tabs.js +98 -100
  22. package/build/esm/packages/phoenix/src/components/tabs/tabs.js.map +1 -1
  23. package/build/esm/packages/phoenix/src/components/tabs/tabs_constants.js +5 -3
  24. package/build/esm/packages/phoenix/src/components/tabs/tabs_constants.js.map +1 -1
  25. package/build/esm/packages/phoenix/src/index.d.ts +4 -0
  26. package/build/esm/packages/phoenix/src/index.js +4 -0
  27. package/build/esm/packages/phoenix/src/index.js.map +1 -1
  28. package/build/esm/packages/utilities/build/esm/ui_dom_utils.js +20 -0
  29. package/build/esm/packages/utilities/build/esm/ui_dom_utils.js.map +1 -0
  30. 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,10 @@
1
+ 'use strict';
2
+
3
+ Object.defineProperty(exports, '__esModule', { value: true });
4
+
5
+ const TABS_EVENT_NAMES = {
6
+ changed: 'changed'
7
+ };
8
+
9
+ exports.TABS_EVENT_NAMES = TABS_EVENT_NAMES;
10
+ //# sourceMappingURL=tabs_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;"}
@@ -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 "tslib";
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 { TAB_EVENT_NAMES, TAB_SELECTED_ATTRIBUTE_NAME } from '@phoenixRoot/components/tabs/tab/tab_constants';
7
- import { UiDomUtils } from '@dreamcommerce/utilities/build/esm/ui_dom_utils';
8
- let Tab = class Tab extends PhoenixLightLitElement {
9
- constructor() {
10
- super(...arguments);
11
- this._handleTabClicked = () => {
12
- if (this.disabled)
13
- return;
14
- this._dispatchSelectedEvent();
15
- };
16
- this._dispatchSelectedEvent = () => {
17
- this.dispatchEvent(new CustomEvent(TAB_EVENT_NAMES.selected, {
18
- detail: {
19
- $el: this
20
- },
21
- bubbles: true
22
- }));
23
- };
24
- }
25
- get selected() {
26
- return this.hasAttribute(TAB_SELECTED_ATTRIBUTE_NAME);
27
- }
28
- set selected(selected) {
29
- selected ? this.setAttribute(TAB_SELECTED_ATTRIBUTE_NAME, '') : this.removeAttribute(TAB_SELECTED_ATTRIBUTE_NAME);
30
- this.setAttribute('aria-selected', String(selected));
31
- selected ? UiDomUtils.makeNavigable(this) : UiDomUtils.makeUnnavigable(this);
32
- }
33
- attributeChangedCallback(name, value, newValue) {
34
- super.attributeChangedCallback(name, value, newValue);
35
- switch (name) {
36
- case TAB_SELECTED_ATTRIBUTE_NAME: {
37
- this.selected = Boolean(newValue);
38
- break;
39
- }
40
- }
41
- }
42
- connectedCallback() {
43
- super.connectedCallback();
44
- this._btnController = new BtnController(this, this._dispatchSelectedEvent);
45
- this._setupAttributes();
46
- this._bindEvents();
47
- this.tabIndex = this.selected ? 0 : -1;
48
- }
49
- _setupAttributes() {
50
- this.setAttribute('role', 'tab');
51
- this.setAttribute('aria-controls', this.panelName);
52
- this.setAttribute('aria-selected', String(this.selected));
53
- }
54
- _bindEvents() {
55
- this.addEventListener('click', this._handleTabClicked);
56
- }
57
- };
58
- __decorate([
59
- property({ type: String, reflect: true, attribute: 'panel-name' }),
60
- __metadata("design:type", String)
61
- ], Tab.prototype, "panelName", void 0);
62
- __decorate([
63
- property({ type: Boolean, reflect: true }),
64
- __metadata("design:type", Boolean)
65
- ], Tab.prototype, "disabled", void 0);
66
- Tab = __decorate([
67
- phoenixCustomElement('h-tab')
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":"tab.js","sourceRoot":"","sources":["../../../../../../../../src/components/tabs/tab/tab.ts"],"names":[],"mappings":"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"}
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
- export const TAB_EVENT_NAMES = {
2
- selected: 'selected'
3
- };
4
- export const TAB_SELECTED_ATTRIBUTE_NAME = 'selected';
5
- //# sourceMappingURL=tab_constants.js.map
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":"tab_constants.js","sourceRoot":"","sources":["../../../../../../../../src/components/tabs/tab/tab_constants.ts"],"names":[],"mappings":"AAAA,MAAM,CAAC,MAAM,eAAe,GAAG;IAC3B,QAAQ,EAAE,UAAU;CACd,CAAC;AAEX,MAAM,CAAC,MAAM,2BAA2B,GAAG,UAAU,CAAC"}
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 "tslib";
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 '@phoenixRoot/controllers/visibility_controller/visibility_controller_types';
6
- import { VisibilityController } from '@phoenixRoot/controllers/visibility_controller/visibility_controller';
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", [])
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":"tab_panel.js","sourceRoot":"","sources":["../../../../../../../src/components/tabs/tab_panel.ts"],"names":[],"mappings":";AAAA,OAAO,EAAE,oBAAoB,EAAE,MAAM,qDAAqD,CAAC;AAC3F,OAAO,EAAE,sBAAsB,EAAE,MAAM,uEAAuE,CAAC;AAC/G,OAAO,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAC;AAC1C,OAAsC,4EAA4E,CAAC;AACnH,OAAO,EAAE,oBAAoB,EAAE,MAAM,sEAAsE,CAAC;AAG5G,IAAa,QAAQ,GAArB,MAAa,QAAS,SAAQ,sBAAsB;IAShD;QACI,KAAK,EAAE,CAAC;QALL,WAAM,GAAG,IAAI,CAAC;QAOjB,IAAI,CAAC,qBAAqB,GAAG,IAAI,oBAAoB,CAAC,IAAI,CAAC,CAAC;IAChE,CAAC;IAEM,IAAI;QACP,IAAI,CAAC,qBAAqB,CAAC,IAAI,EAAE,CAAC;IACtC,CAAC;IAEM,IAAI;QACP,IAAI,CAAC,qBAAqB,CAAC,IAAI,EAAE,CAAC;IACtC,CAAC;CACJ,CAAA;AApBG;IADC,QAAQ,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC;;sCAC7B;AAGb;IADC,QAAQ,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC;;wCACtB;AALZ,QAAQ;IADpB,oBAAoB,CAAC,aAAa,CAAC;;GACvB,QAAQ,CAsBpB;SAtBY,QAAQ"}
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 { __decorate, __metadata } from "tslib";
2
- import { PhoenixLightLitElement } from '@phoenixRoot/core/phoenix_light_lit_element/phoenix_light_lit_element';
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 '@phoenixRoot/components/tabs/tab_panel';
7
- import { PHOENIX_LIGHT_LIT_ELEMENTS_EVENT_NAMES } from '@phoenixRoot/core/phoenix_light_lit_element/phoenix_light_lit_elements_constants';
8
- import { TABS_EVENT_NAMES } from '@phoenixRoot/components/tabs/tabs_constants';
9
- import { TAB_EVENT_NAMES } from '@phoenixRoot/components/tabs/tab/tab_constants';
10
- import '@phoenixRoot/components/tabs/tabs_types';
11
- import { KeystrokesController } from '@phoenixRoot/controllers/keystrokes_controller/keystrokes_controller';
12
- import { UiDomUtils } from '@dreamcommerce/utilities/build/esm/ui_dom_utils';
13
- let Tabs = class Tabs extends PhoenixLightLitElement {
14
- constructor() {
15
- super(...arguments);
16
- this._handleArrowNavigation = ({ key }) => {
17
- const currentTabIndex = this._getFocusedTabIndex();
18
- // console.log('currentTabIndex ', currentTabIndex, ' key', key);
19
- if (currentTabIndex === undefined)
20
- return;
21
- const newTabIndex = key === 'ArrowLeft' ? this._getPrevTabIndex(currentTabIndex) : this._getNextTabIndex(currentTabIndex);
22
- // console.log('newTabIndex ', newTabIndex);
23
- if (newTabIndex === undefined)
24
- return;
25
- UiDomUtils.makeUnnavigable(this._$tabs[currentTabIndex]);
26
- UiDomUtils.makeNavigable(this._$tabs[newTabIndex]);
27
- this._$tabs[newTabIndex].focus();
28
- };
29
- this._handleTabSelected = (event) => {
30
- const $newlySelectedTab = event.detail.$el;
31
- this.switchPanel($newlySelectedTab.panelName);
32
- if (this._$selectedTab)
33
- this._$selectedTab.selected = false;
34
- $newlySelectedTab.selected = true;
35
- this._dispatchChangedEvent(this._$selectedTab, $newlySelectedTab);
36
- this._$selectedTab = $newlySelectedTab;
37
- };
38
- this._handleTabConnected = (event) => {
39
- const $connectedTab = event.detail.$el;
40
- if (!$connectedTab.selected)
41
- return;
42
- this._$selectedTab = event.detail.$el;
43
- this.switchPanel(this._$selectedTab.panelName);
44
- };
45
- }
46
- connectedCallback() {
47
- super.connectedCallback();
48
- this._setupEvents();
49
- this.setAttribute('role', 'tablist');
50
- this._$tabs = [...this.querySelectorAll('h-tab')];
51
- new KeystrokesController({
52
- host: this,
53
- keys: ['ArrowRight', 'ArrowLeft'],
54
- callback: this._handleArrowNavigation
55
- });
56
- }
57
- _getFocusedTabIndex() {
58
- const focusedElement = document.activeElement;
59
- if ((focusedElement === null || focusedElement === void 0 ? void 0 : focusedElement.tagName) !== 'H-TAB')
60
- return;
61
- return this._$tabs.findIndex(($tab) => $tab === focusedElement);
62
- }
63
- _getNextTabIndex(currentTabIndex) {
64
- if (currentTabIndex >= this._$tabs.length - 1)
65
- return;
66
- return currentTabIndex + 1;
67
- }
68
- _getPrevTabIndex(currentTabIndex) {
69
- if (currentTabIndex <= 0)
70
- return;
71
- return currentTabIndex - 1;
72
- }
73
- _setupEvents() {
74
- this.addEventListener(TAB_EVENT_NAMES.selected, this._handleTabSelected);
75
- this.addEventListener(PHOENIX_LIGHT_LIT_ELEMENTS_EVENT_NAMES.connected, this._handleTabConnected);
76
- }
77
- switchPanel(newPanelName) {
78
- const $currentPanel = document.querySelectorAll(`[name="${this._$selectedTab.panelName}"]`);
79
- const $newPanel = document.querySelectorAll(`[name="${newPanelName}"]`);
80
- if ($currentPanel)
81
- $currentPanel.forEach(($panel) => $panel.hide());
82
- if ($newPanel)
83
- $newPanel.forEach(($panel) => $panel.show());
84
- }
85
- _dispatchChangedEvent($previousTab, $newTab) {
86
- this.dispatchEvent(new CustomEvent(TABS_EVENT_NAMES.changed, {
87
- detail: {
88
- $previousTab,
89
- $newTab
90
- },
91
- bubbles: true
92
- }));
93
- }
94
- };
95
- __decorate([
96
- state(),
97
- __metadata("design:type", Tab)
98
- ], Tabs.prototype, "_$selectedTab", void 0);
99
- Tabs = __decorate([
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":"tabs.js","sourceRoot":"","sources":["../../../../../../../src/components/tabs/tabs.ts"],"names":[],"mappings":"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"}
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,4 +1,6 @@
1
- export const TABS_EVENT_NAMES = {
2
- changed: 'changed'
1
+ const TABS_EVENT_NAMES = {
2
+ changed: 'changed'
3
3
  };
4
- //# sourceMappingURL=tabs_constants.js.map
4
+
5
+ export { TABS_EVENT_NAMES };
6
+ //# sourceMappingURL=tabs_constants.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"tabs_constants.js","sourceRoot":"","sources":["../../../../../../../src/components/tabs/tabs_constants.ts"],"names":[],"mappings":"AAAA,MAAM,CAAC,MAAM,gBAAgB,GAAG;IAC5B,OAAO,EAAE,SAAS;CACZ,CAAC"}
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;"}
package/package.json CHANGED
@@ -2,7 +2,7 @@
2
2
  "name": "@shoper/phoenix_design_system",
3
3
  "packageManager": "yarn@3.2.0",
4
4
  "sideEffects": false,
5
- "version": "0.19.3-1",
5
+ "version": "0.19.3-2",
6
6
  "description": "phoenix design system",
7
7
  "author": "zefirek",
8
8
  "license": "MIT",