@shoper/phoenix_design_system 0.9.1 → 0.10.0

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 (60) hide show
  1. package/build/cjs/packages/phoenix/src/components/accordion/accordion.js +47 -0
  2. package/build/cjs/packages/phoenix/src/components/accordion/accordion.js.map +1 -0
  3. package/build/cjs/packages/phoenix/src/components/accordion/accordion_constants.js +15 -0
  4. package/build/cjs/packages/phoenix/src/components/accordion/accordion_constants.js.map +1 -0
  5. package/build/cjs/packages/phoenix/src/components/accordion/accordion_content.js +65 -0
  6. package/build/cjs/packages/phoenix/src/components/accordion/accordion_content.js.map +1 -0
  7. package/build/cjs/packages/phoenix/src/components/accordion/accordion_group.js +118 -0
  8. package/build/cjs/packages/phoenix/src/components/accordion/accordion_group.js.map +1 -0
  9. package/build/cjs/packages/phoenix/src/components/accordion/accordion_toggler.js +46 -0
  10. package/build/cjs/packages/phoenix/src/components/accordion/accordion_toggler.js.map +1 -0
  11. package/build/cjs/packages/phoenix/src/controllers/transition_controller/transition_controller.js +40 -0
  12. package/build/cjs/packages/phoenix/src/controllers/transition_controller/transition_controller.js.map +1 -0
  13. package/build/cjs/packages/phoenix/src/controllers/transition_controller/transition_controller_constants.js +11 -0
  14. package/build/cjs/packages/phoenix/src/controllers/transition_controller/transition_controller_constants.js.map +1 -0
  15. package/build/cjs/packages/phoenix/src/core/context/context_provider_controller.js +1 -1
  16. package/build/cjs/packages/phoenix/src/core/observer/observable.js +24 -0
  17. package/build/cjs/packages/phoenix/src/core/observer/observable.js.map +1 -0
  18. package/build/cjs/packages/phoenix/src/core/observer/observer.js +15 -0
  19. package/build/cjs/packages/phoenix/src/core/observer/observer.js.map +1 -0
  20. package/build/cjs/packages/phoenix/src/index.js +31 -0
  21. package/build/cjs/packages/phoenix/src/index.js.map +1 -1
  22. package/build/esm/packages/phoenix/src/components/accordion/accordion.d.ts +13 -0
  23. package/build/esm/packages/phoenix/src/components/accordion/accordion.js +45 -0
  24. package/build/esm/packages/phoenix/src/components/accordion/accordion.js.map +1 -0
  25. package/build/esm/packages/phoenix/src/components/accordion/accordion_constants.d.ts +7 -0
  26. package/build/esm/packages/phoenix/src/components/accordion/accordion_constants.js +10 -0
  27. package/build/esm/packages/phoenix/src/components/accordion/accordion_constants.js.map +1 -0
  28. package/build/esm/packages/phoenix/src/components/accordion/accordion_content.d.ts +18 -0
  29. package/build/esm/packages/phoenix/src/components/accordion/accordion_content.js +63 -0
  30. package/build/esm/packages/phoenix/src/components/accordion/accordion_content.js.map +1 -0
  31. package/build/esm/packages/phoenix/src/components/accordion/accordion_group.d.ts +26 -0
  32. package/build/esm/packages/phoenix/src/components/accordion/accordion_group.js +116 -0
  33. package/build/esm/packages/phoenix/src/components/accordion/accordion_group.js.map +1 -0
  34. package/build/esm/packages/phoenix/src/components/accordion/accordion_toggler.d.ts +12 -0
  35. package/build/esm/packages/phoenix/src/components/accordion/accordion_toggler.js +44 -0
  36. package/build/esm/packages/phoenix/src/components/accordion/accordion_toggler.js.map +1 -0
  37. package/build/esm/packages/phoenix/src/components/accordion/accordion_types.d.ts +31 -0
  38. package/build/esm/packages/phoenix/src/components/accordion/accordion_types.js +5 -0
  39. package/build/esm/packages/phoenix/src/components/accordion/accordion_types.js.map +1 -0
  40. package/build/esm/packages/phoenix/src/controllers/transition_controller/transition_controller.d.ts +11 -0
  41. package/build/esm/packages/phoenix/src/controllers/transition_controller/transition_controller.js +36 -0
  42. package/build/esm/packages/phoenix/src/controllers/transition_controller/transition_controller.js.map +1 -0
  43. package/build/esm/packages/phoenix/src/controllers/transition_controller/transition_controller_constants.d.ts +4 -0
  44. package/build/esm/packages/phoenix/src/controllers/transition_controller/transition_controller_constants.js +7 -0
  45. package/build/esm/packages/phoenix/src/controllers/transition_controller/transition_controller_constants.js.map +1 -0
  46. package/build/esm/packages/phoenix/src/core/context/context_provider_controller.d.ts +1 -1
  47. package/build/esm/packages/phoenix/src/core/context/context_provider_controller.js +1 -1
  48. package/build/esm/packages/phoenix/src/core/observer/observable.d.ts +9 -0
  49. package/build/esm/packages/phoenix/src/core/observer/observable.js +20 -0
  50. package/build/esm/packages/phoenix/src/core/observer/observable.js.map +1 -0
  51. package/build/esm/packages/phoenix/src/core/observer/observer.d.ts +6 -0
  52. package/build/esm/packages/phoenix/src/core/observer/observer.js +11 -0
  53. package/build/esm/packages/phoenix/src/core/observer/observer.js.map +1 -0
  54. package/build/esm/packages/phoenix/src/core/observer/observer_types.d.ts +8 -0
  55. package/build/esm/packages/phoenix/src/core/observer/observer_types.js +2 -0
  56. package/build/esm/packages/phoenix/src/core/observer/observer_types.js.map +1 -0
  57. package/build/esm/packages/phoenix/src/index.d.ts +5 -0
  58. package/build/esm/packages/phoenix/src/index.js +5 -0
  59. package/build/esm/packages/phoenix/src/index.js.map +1 -1
  60. package/package.json +1 -1
@@ -0,0 +1,47 @@
1
+ 'use strict';
2
+
3
+ Object.defineProperty(exports, '__esModule', { value: true });
4
+
5
+ var tslib_es6 = require('../../../../../external/tslib/tslib.es6.js');
6
+ var context_provider_controller = require('../../core/context/context_provider_controller.js');
7
+ var decorators = require('lit/decorators');
8
+ var phoenix_light_lit_element = require('../../core/phoenix_light_lit_element.js');
9
+ var phoenix_custom_element = require('../../core/decorators/phoenix_custom_element.js');
10
+ var accordion_constants = require('./accordion_constants.js');
11
+ var observable = require('../../core/observer/observable.js');
12
+
13
+ exports.HAccordion = class HAccordion extends phoenix_light_lit_element.PhoenixLightLitElement {
14
+ constructor() {
15
+ super();
16
+ this.disabled = false;
17
+ this._accordionSubject = new observable.Subject();
18
+ this._accordionContext = new context_provider_controller.ContextProviderController(this);
19
+ this._accordionContext.provide(accordion_constants.ACCORDION_CONTEXTS.accordionProps, this._accordionSubject);
20
+ }
21
+ enable() {
22
+ this.disabled = false;
23
+ }
24
+ disable() {
25
+ this.disabled = true;
26
+ }
27
+ updated() {
28
+ this.notify();
29
+ }
30
+ notify() {
31
+ this._accordionSubject.notify(this._getProps());
32
+ }
33
+ _getProps() {
34
+ return {
35
+ disabled: this.disabled
36
+ };
37
+ }
38
+ };
39
+ tslib_es6.__decorate([
40
+ decorators.property({ type: Boolean, reflect: true }),
41
+ tslib_es6.__metadata("design:type", Object)
42
+ ], exports.HAccordion.prototype, "disabled", void 0);
43
+ exports.HAccordion = tslib_es6.__decorate([
44
+ phoenix_custom_element.phoenixCustomElement('h-accordion'),
45
+ tslib_es6.__metadata("design:paramtypes", [])
46
+ ], exports.HAccordion);
47
+ //# sourceMappingURL=accordion.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;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;"}
@@ -0,0 +1,15 @@
1
+ 'use strict';
2
+
3
+ Object.defineProperty(exports, '__esModule', { value: true });
4
+
5
+ const ACCORDION_EVENTS = {
6
+ toggle: 'toggle'
7
+ };
8
+ const ACCORDION_CONTEXTS = {
9
+ accordionProps: 'accordionPropsSubject',
10
+ accordionGroupProps: 'accordionGroupPropsSubject'
11
+ };
12
+
13
+ exports.ACCORDION_CONTEXTS = ACCORDION_CONTEXTS;
14
+ exports.ACCORDION_EVENTS = ACCORDION_EVENTS;
15
+ //# sourceMappingURL=accordion_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;AACA;AACA;AACA;"}
@@ -0,0 +1,65 @@
1
+ 'use strict';
2
+
3
+ Object.defineProperty(exports, '__esModule', { value: true });
4
+
5
+ var tslib_es6 = require('../../../../../external/tslib/tslib.es6.js');
6
+ var context_consumer_controller = require('../../core/context/context_consumer_controller.js');
7
+ var decorators = require('lit/decorators');
8
+ var phoenix_light_lit_element = require('../../core/phoenix_light_lit_element.js');
9
+ var phoenix_custom_element = require('../../core/decorators/phoenix_custom_element.js');
10
+ var accordion_constants = require('./accordion_constants.js');
11
+ var observer = require('../../core/observer/observer.js');
12
+ var transition_controller = require('../../controllers/transition_controller/transition_controller.js');
13
+
14
+ exports.HAccordionContent = class HAccordionContent extends phoenix_light_lit_element.PhoenixLightLitElement {
15
+ constructor() {
16
+ super();
17
+ this.transitionName = 'accordion-toggle';
18
+ this._expand = () => {
19
+ this._setHeight(this._originalHeight);
20
+ };
21
+ this._collapse = () => {
22
+ this._setHeight('0px');
23
+ };
24
+ this.setAttribute('role', 'region');
25
+ }
26
+ connectedCallback() {
27
+ super.connectedCallback();
28
+ this._contextConsumer = new context_consumer_controller.ContextConsumerController(this);
29
+ this._transitionController = new transition_controller.TransitionController(this, this.transitionName);
30
+ this._setStylingOptions();
31
+ this._subscribeObserver();
32
+ }
33
+ _setStylingOptions() {
34
+ this._originalHeight = `${this.getBoundingClientRect().height}px`;
35
+ this.style.height = this._originalHeight;
36
+ }
37
+ _subscribeObserver() {
38
+ this._accordionGroupProps = this._contextConsumer.consume(accordion_constants.ACCORDION_CONTEXTS.accordionGroupProps);
39
+ this._accordionGroupPropsObserver = new observer.Observer((accordionProps) => {
40
+ this._setAttributes(accordionProps);
41
+ accordionProps.opened ? this._transitionController.show(this._expand) : this._transitionController.hide(this._collapse);
42
+ });
43
+ this._accordionGroupProps.subscribe(this._accordionGroupPropsObserver);
44
+ }
45
+ _setHeight(height) {
46
+ this.style.height = height;
47
+ }
48
+ _setAttributes({ regionId, controlsId }) {
49
+ this.setAttribute('id', controlsId);
50
+ this.setAttribute('labelledby', regionId);
51
+ }
52
+ disconnectedCallback() {
53
+ super.disconnectedCallback();
54
+ this._accordionGroupProps.unsubscribe(this._accordionGroupPropsObserver);
55
+ }
56
+ };
57
+ tslib_es6.__decorate([
58
+ decorators.property(),
59
+ tslib_es6.__metadata("design:type", Object)
60
+ ], exports.HAccordionContent.prototype, "transitionName", void 0);
61
+ exports.HAccordionContent = tslib_es6.__decorate([
62
+ phoenix_custom_element.phoenixCustomElement('h-accordion-content'),
63
+ tslib_es6.__metadata("design:paramtypes", [])
64
+ ], exports.HAccordionContent);
65
+ //# sourceMappingURL=accordion_content.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;AACA;AACA;AACA;AACA;AACA;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,118 @@
1
+ 'use strict';
2
+
3
+ Object.defineProperty(exports, '__esModule', { value: true });
4
+
5
+ var tslib_es6 = require('../../../../../external/tslib/tslib.es6.js');
6
+ var context_provider_controller = require('../../core/context/context_provider_controller.js');
7
+ var context_consumer_controller = require('../../core/context/context_consumer_controller.js');
8
+ var decorators = require('lit/decorators');
9
+ var phoenix_light_lit_element = require('../../core/phoenix_light_lit_element.js');
10
+ var phoenix_custom_element = require('../../core/decorators/phoenix_custom_element.js');
11
+ var accordion_constants = require('./accordion_constants.js');
12
+ var observer = require('../../core/observer/observer.js');
13
+ var observable = require('../../core/observer/observable.js');
14
+
15
+ exports.HAccordionGroup = class HAccordionGroup extends phoenix_light_lit_element.PhoenixLightLitElement {
16
+ constructor() {
17
+ super();
18
+ this.opened = false;
19
+ this._isDisabled = false;
20
+ this._regionId = self.crypto.randomUUID();
21
+ this._controlsId = self.crypto.randomUUID();
22
+ this._accordionToggle = () => {
23
+ this.toggle();
24
+ };
25
+ this._accordionGroupPropsSubject = new observable.Subject();
26
+ this._accordionGroupContext = new context_provider_controller.ContextProviderController(this);
27
+ this._accordionGroupContext.provide(accordion_constants.ACCORDION_CONTEXTS.accordionGroupProps, this._accordionGroupPropsSubject);
28
+ }
29
+ connectedCallback() {
30
+ super.connectedCallback();
31
+ this._accordionContextConsumer = new context_consumer_controller.ContextConsumerController(this);
32
+ this._subscribeObserver();
33
+ this.addEventListener(accordion_constants.ACCORDION_EVENTS.toggle, this._accordionToggle);
34
+ }
35
+ _subscribeObserver() {
36
+ this._accordionProps = this._accordionContextConsumer.consume(accordion_constants.ACCORDION_CONTEXTS.accordionProps);
37
+ this._accordionPropsObserver = new observer.Observer((accordionProps) => {
38
+ const hasAccordionBeenDisabled = accordionProps.disabled;
39
+ if (hasAccordionBeenDisabled) {
40
+ this.disable();
41
+ return;
42
+ }
43
+ const hasAccordionBeenEnabled = accordionProps.disabled === false;
44
+ if (hasAccordionBeenEnabled) {
45
+ this.enable();
46
+ return;
47
+ }
48
+ });
49
+ this._accordionProps.subscribe(this._accordionPropsObserver);
50
+ }
51
+ disconnectedCallback() {
52
+ this._accordionProps.unsubscribe(this._accordionPropsObserver);
53
+ this.removeEventListener(accordion_constants.ACCORDION_EVENTS.toggle, this._accordionToggle);
54
+ }
55
+ show() {
56
+ this.opened = true;
57
+ }
58
+ hide() {
59
+ this.opened = false;
60
+ }
61
+ toggle() {
62
+ this.opened = !this.opened;
63
+ }
64
+ enable() {
65
+ if (this._isDisabled) {
66
+ this.addEventListener(accordion_constants.ACCORDION_EVENTS.toggle, this._accordionToggle);
67
+ this.hide();
68
+ this._isDisabled = false;
69
+ }
70
+ }
71
+ disable() {
72
+ if (!this._isDisabled) {
73
+ this.removeEventListener(accordion_constants.ACCORDION_EVENTS.toggle, this._accordionToggle);
74
+ this.show();
75
+ this._isDisabled = true;
76
+ }
77
+ }
78
+ notify() {
79
+ this._accordionGroupPropsSubject.notify(this._getProps());
80
+ }
81
+ updated(_changedProperties) {
82
+ if (_changedProperties.has('opened') ||
83
+ _changedProperties.has('_isDisabled') ||
84
+ _changedProperties.has('_regionId') ||
85
+ _changedProperties.has('_controlsId')) {
86
+ this.notify();
87
+ }
88
+ }
89
+ _getProps() {
90
+ return {
91
+ opened: this.opened,
92
+ disabled: this._isDisabled,
93
+ regionId: this._regionId,
94
+ controlsId: this._controlsId
95
+ };
96
+ }
97
+ };
98
+ tslib_es6.__decorate([
99
+ decorators.property({ type: Boolean, reflect: true }),
100
+ tslib_es6.__metadata("design:type", Object)
101
+ ], exports.HAccordionGroup.prototype, "opened", void 0);
102
+ tslib_es6.__decorate([
103
+ decorators.state(),
104
+ tslib_es6.__metadata("design:type", Object)
105
+ ], exports.HAccordionGroup.prototype, "_isDisabled", void 0);
106
+ tslib_es6.__decorate([
107
+ decorators.state(),
108
+ tslib_es6.__metadata("design:type", Object)
109
+ ], exports.HAccordionGroup.prototype, "_regionId", void 0);
110
+ tslib_es6.__decorate([
111
+ decorators.state(),
112
+ tslib_es6.__metadata("design:type", Object)
113
+ ], exports.HAccordionGroup.prototype, "_controlsId", void 0);
114
+ exports.HAccordionGroup = tslib_es6.__decorate([
115
+ phoenix_custom_element.phoenixCustomElement('h-accordion-group'),
116
+ tslib_es6.__metadata("design:paramtypes", [])
117
+ ], exports.HAccordionGroup);
118
+ //# sourceMappingURL=accordion_group.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;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;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,46 @@
1
+ 'use strict';
2
+
3
+ Object.defineProperty(exports, '__esModule', { value: true });
4
+
5
+ var tslib_es6 = require('../../../../../external/tslib/tslib.es6.js');
6
+ var context_consumer_controller = require('../../core/context/context_consumer_controller.js');
7
+ var phoenix_light_lit_element = require('../../core/phoenix_light_lit_element.js');
8
+ var phoenix_custom_element = require('../../core/decorators/phoenix_custom_element.js');
9
+ var accordion_constants = require('./accordion_constants.js');
10
+ var observer = require('../../core/observer/observer.js');
11
+ var btn_controller = require('../../controllers/btn_controller.js');
12
+
13
+ exports.HAccordionToggler = class HAccordionToggler extends phoenix_light_lit_element.PhoenixLightLitElement {
14
+ constructor() {
15
+ super();
16
+ this._emitTogglerClicked = () => {
17
+ const togglerClickedEvent = new CustomEvent(accordion_constants.ACCORDION_EVENTS.toggle, {
18
+ bubbles: true
19
+ });
20
+ this.dispatchEvent(togglerClickedEvent);
21
+ };
22
+ this._btnController = new btn_controller.BtnController(this, this._emitTogglerClicked);
23
+ this._contextConsumer = new context_consumer_controller.ContextConsumerController(this);
24
+ }
25
+ connectedCallback() {
26
+ super.connectedCallback();
27
+ this._accordionGroupProps = this._contextConsumer.consume(accordion_constants.ACCORDION_CONTEXTS.accordionGroupProps);
28
+ this._accordionGroupPropsObserver = new observer.Observer((accordionProps) => this._setAttributes(accordionProps));
29
+ this._accordionGroupProps.subscribe(this._accordionGroupPropsObserver);
30
+ this.addEventListener('click', this._emitTogglerClicked);
31
+ }
32
+ _setAttributes({ regionId, opened, controlsId, disabled }) {
33
+ this.setAttribute('id', regionId);
34
+ this.setAttribute('aria-expanded', opened ? 'true' : 'false');
35
+ this.setAttribute('aria-controls', controlsId);
36
+ this.setAttribute('aria-disabled', disabled ? 'true' : 'false');
37
+ }
38
+ disconnectedCallback() {
39
+ this._accordionGroupProps.unsubscribe(this._accordionGroupPropsObserver);
40
+ }
41
+ };
42
+ exports.HAccordionToggler = tslib_es6.__decorate([
43
+ phoenix_custom_element.phoenixCustomElement('h-accordion-toggler'),
44
+ tslib_es6.__metadata("design:paramtypes", [])
45
+ ], exports.HAccordionToggler);
46
+ //# sourceMappingURL=accordion_toggler.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;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;"}
@@ -0,0 +1,40 @@
1
+ 'use strict';
2
+
3
+ Object.defineProperty(exports, '__esModule', { value: true });
4
+
5
+ require('lit');
6
+ var transition_controller_constants = require('./transition_controller_constants.js');
7
+
8
+ class TransitionController {
9
+ constructor(host, transitionName) {
10
+ (this.host = host).addController(this);
11
+ this._transitionName = transitionName;
12
+ }
13
+ hostConnected() {
14
+ this._transitionDuration = parseFloat(getComputedStyle(this.host).transitionDuration) * 1000;
15
+ }
16
+ hostDisconnected() { }
17
+ show(callback) {
18
+ this.host.hidden = false;
19
+ this.host.classList.add(`${this._transitionName}-${transition_controller_constants.TRANSITION_CSS_CLASSES.transitionEnd}`);
20
+ requestAnimationFrame(() => {
21
+ this.host.classList.remove(`${this._transitionName}-${transition_controller_constants.TRANSITION_CSS_CLASSES.transitionStart}`);
22
+ if (typeof callback === 'function')
23
+ callback();
24
+ });
25
+ }
26
+ hide(callback) {
27
+ requestAnimationFrame(() => {
28
+ if (typeof callback === 'function')
29
+ callback();
30
+ this.host.classList.add(`${this._transitionName}-${transition_controller_constants.TRANSITION_CSS_CLASSES.transitionStart}`);
31
+ this.host.classList.remove(`${this._transitionName}-${transition_controller_constants.TRANSITION_CSS_CLASSES.transitionEnd}`);
32
+ setTimeout(() => {
33
+ this.host.hidden = true;
34
+ }, this._transitionDuration);
35
+ });
36
+ }
37
+ }
38
+
39
+ exports.TransitionController = TransitionController;
40
+ //# sourceMappingURL=transition_controller.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;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;"}
@@ -0,0 +1,11 @@
1
+ 'use strict';
2
+
3
+ Object.defineProperty(exports, '__esModule', { value: true });
4
+
5
+ const TRANSITION_CSS_CLASSES = {
6
+ transitionStart: 'transition-start',
7
+ transitionEnd: 'transition-end'
8
+ };
9
+
10
+ exports.TRANSITION_CSS_CLASSES = TRANSITION_CSS_CLASSES;
11
+ //# sourceMappingURL=transition_controller_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;"}
@@ -4,8 +4,8 @@ Object.defineProperty(exports, '__esModule', { value: true });
4
4
 
5
5
  var tslib_es6 = require('../../../../../external/tslib/tslib.es6.js');
6
6
  require('lit');
7
- var context_consumer_messages_names = require('./context_consumer_messages_names.js');
8
7
  var values_container = require('../../../../star_core/build/esm/packages/star_core/src/classes/values_container/values_container.js');
8
+ var context_consumer_messages_names = require('./context_consumer_messages_names.js');
9
9
 
10
10
  var _ContextProviderController_host, _ContextProviderController_contextValues, _ContextProviderController_handleRequestedValue;
11
11
  class ContextProviderController {
@@ -0,0 +1,24 @@
1
+ 'use strict';
2
+
3
+ Object.defineProperty(exports, '__esModule', { value: true });
4
+
5
+ class Subject {
6
+ constructor() {
7
+ this._observers = new Set();
8
+ }
9
+ get size() {
10
+ return this._observers.size;
11
+ }
12
+ subscribe(observer) {
13
+ this._observers.add(observer);
14
+ }
15
+ unsubscribe(observer) {
16
+ this._observers.delete(observer);
17
+ }
18
+ notify(data) {
19
+ this._observers.forEach((observer) => observer.update(data));
20
+ }
21
+ }
22
+
23
+ exports.Subject = Subject;
24
+ //# sourceMappingURL=observable.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;"}
@@ -0,0 +1,15 @@
1
+ 'use strict';
2
+
3
+ Object.defineProperty(exports, '__esModule', { value: true });
4
+
5
+ class Observer {
6
+ constructor(callback) {
7
+ this._callback = callback;
8
+ }
9
+ update(data) {
10
+ this._callback(data);
11
+ }
12
+ }
13
+
14
+ exports.Observer = Observer;
15
+ //# sourceMappingURL=observer.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;"}
@@ -20,8 +20,13 @@ var control_content = require('./components/form_controls/control_content.js');
20
20
  var control_element = require('./components/form_controls/control_element.js');
21
21
  var control_label = require('./components/form_controls/control_label.js');
22
22
  var control_additional_content = require('./components/form_controls/control_additional_content.js');
23
+ var accordion_constants = require('./components/accordion/accordion_constants.js');
24
+ var accordion_content = require('./components/accordion/accordion_content.js');
25
+ var accordion_group = require('./components/accordion/accordion_group.js');
23
26
  var keystrokes_controller = require('./controllers/keystrokes_controller/keystrokes_controller.js');
24
27
  var btn_controller = require('./controllers/btn_controller.js');
28
+ var accordion_toggler = require('./components/accordion/accordion_toggler.js');
29
+ var accordion = require('./components/accordion/accordion.js');
25
30
  var click_outside_controller = require('./controllers/click_outside_controller/click_outside_controller.js');
26
31
  var relative_position_controller = require('./controllers/relative_position_controller/relative_position_controller.js');
27
32
  var dropdown = require('./components/dropdown/dropdown.js');
@@ -124,8 +129,34 @@ Object.defineProperty(exports, 'HControlAdditionalContent', {
124
129
  return control_additional_content.HControlAdditionalContent;
125
130
  }
126
131
  });
132
+ exports.ACCORDION_CONTEXTS = accordion_constants.ACCORDION_CONTEXTS;
133
+ exports.ACCORDION_EVENTS = accordion_constants.ACCORDION_EVENTS;
134
+ Object.defineProperty(exports, 'HAccordionContent', {
135
+ enumerable: true,
136
+ get: function () {
137
+ return accordion_content.HAccordionContent;
138
+ }
139
+ });
140
+ Object.defineProperty(exports, 'HAccordionGroup', {
141
+ enumerable: true,
142
+ get: function () {
143
+ return accordion_group.HAccordionGroup;
144
+ }
145
+ });
127
146
  exports.KeystrokesController = keystrokes_controller.KeystrokesController;
128
147
  exports.BtnController = btn_controller.BtnController;
148
+ Object.defineProperty(exports, 'HAccordionToggler', {
149
+ enumerable: true,
150
+ get: function () {
151
+ return accordion_toggler.HAccordionToggler;
152
+ }
153
+ });
154
+ Object.defineProperty(exports, 'HAccordion', {
155
+ enumerable: true,
156
+ get: function () {
157
+ return accordion.HAccordion;
158
+ }
159
+ });
129
160
  exports.ClickOutsideController = click_outside_controller.ClickOutsideController;
130
161
  exports.RelativePositionController = relative_position_controller.RelativePositionController;
131
162
  Object.defineProperty(exports, 'HDropdown', {
@@ -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;"}
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;"}
@@ -0,0 +1,13 @@
1
+ import { IAccordion } from './accordion_types';
2
+ import { PhoenixLightLitElement } from "../../core/phoenix_light_lit_element";
3
+ export declare class HAccordion extends PhoenixLightLitElement implements IAccordion {
4
+ disabled: boolean;
5
+ private _accordionSubject;
6
+ private _accordionContext;
7
+ constructor();
8
+ enable(): void;
9
+ disable(): void;
10
+ updated(): void;
11
+ notify(): void;
12
+ private _getProps;
13
+ }
@@ -0,0 +1,45 @@
1
+ import { __decorate, __metadata } from '../../../../../external/tslib/tslib.es6.js';
2
+ import { ContextProviderController } from '../../core/context/context_provider_controller.js';
3
+ import { property } from 'lit/decorators';
4
+ import { PhoenixLightLitElement } from '../../core/phoenix_light_lit_element.js';
5
+ import { phoenixCustomElement } from '../../core/decorators/phoenix_custom_element.js';
6
+ import { ACCORDION_CONTEXTS } from './accordion_constants.js';
7
+ import { Subject } from '../../core/observer/observable.js';
8
+
9
+ let HAccordion = class HAccordion extends PhoenixLightLitElement {
10
+ constructor() {
11
+ super();
12
+ this.disabled = false;
13
+ this._accordionSubject = new Subject();
14
+ this._accordionContext = new ContextProviderController(this);
15
+ this._accordionContext.provide(ACCORDION_CONTEXTS.accordionProps, this._accordionSubject);
16
+ }
17
+ enable() {
18
+ this.disabled = false;
19
+ }
20
+ disable() {
21
+ this.disabled = true;
22
+ }
23
+ updated() {
24
+ this.notify();
25
+ }
26
+ notify() {
27
+ this._accordionSubject.notify(this._getProps());
28
+ }
29
+ _getProps() {
30
+ return {
31
+ disabled: this.disabled
32
+ };
33
+ }
34
+ };
35
+ __decorate([
36
+ property({ type: Boolean, reflect: true }),
37
+ __metadata("design:type", Object)
38
+ ], HAccordion.prototype, "disabled", void 0);
39
+ HAccordion = __decorate([
40
+ phoenixCustomElement('h-accordion'),
41
+ __metadata("design:paramtypes", [])
42
+ ], HAccordion);
43
+
44
+ export { HAccordion };
45
+ //# sourceMappingURL=accordion.js.map
@@ -0,0 +1 @@
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;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;"}
@@ -0,0 +1,7 @@
1
+ export declare const ACCORDION_EVENTS: {
2
+ readonly toggle: "toggle";
3
+ };
4
+ export declare const ACCORDION_CONTEXTS: {
5
+ readonly accordionProps: "accordionPropsSubject";
6
+ readonly accordionGroupProps: "accordionGroupPropsSubject";
7
+ };
@@ -0,0 +1,10 @@
1
+ const ACCORDION_EVENTS = {
2
+ toggle: 'toggle'
3
+ };
4
+ const ACCORDION_CONTEXTS = {
5
+ accordionProps: 'accordionPropsSubject',
6
+ accordionGroupProps: 'accordionGroupPropsSubject'
7
+ };
8
+
9
+ export { ACCORDION_CONTEXTS, ACCORDION_EVENTS };
10
+ //# sourceMappingURL=accordion_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;"}
@@ -0,0 +1,18 @@
1
+ import { PhoenixLightLitElement } from "../../core/phoenix_light_lit_element";
2
+ export declare class HAccordionContent extends PhoenixLightLitElement {
3
+ transitionName: string;
4
+ private _transitionController;
5
+ private _contextConsumer;
6
+ private _accordionGroupProps;
7
+ private _accordionGroupPropsObserver;
8
+ private _originalHeight;
9
+ constructor();
10
+ connectedCallback(): void;
11
+ private _setStylingOptions;
12
+ private _subscribeObserver;
13
+ private _expand;
14
+ private _collapse;
15
+ private _setHeight;
16
+ private _setAttributes;
17
+ disconnectedCallback(): void;
18
+ }
@@ -0,0 +1,63 @@
1
+ import { __decorate, __metadata } from '../../../../../external/tslib/tslib.es6.js';
2
+ import { ContextConsumerController } from '../../core/context/context_consumer_controller.js';
3
+ import { property } from 'lit/decorators';
4
+ import { PhoenixLightLitElement } from '../../core/phoenix_light_lit_element.js';
5
+ import { phoenixCustomElement } from '../../core/decorators/phoenix_custom_element.js';
6
+ import { ACCORDION_CONTEXTS } from './accordion_constants.js';
7
+ import { Observer } from '../../core/observer/observer.js';
8
+ import { TransitionController } from '../../controllers/transition_controller/transition_controller.js';
9
+
10
+ let HAccordionContent = class HAccordionContent extends PhoenixLightLitElement {
11
+ constructor() {
12
+ super();
13
+ this.transitionName = 'accordion-toggle';
14
+ this._expand = () => {
15
+ this._setHeight(this._originalHeight);
16
+ };
17
+ this._collapse = () => {
18
+ this._setHeight('0px');
19
+ };
20
+ this.setAttribute('role', 'region');
21
+ }
22
+ connectedCallback() {
23
+ super.connectedCallback();
24
+ this._contextConsumer = new ContextConsumerController(this);
25
+ this._transitionController = new TransitionController(this, this.transitionName);
26
+ this._setStylingOptions();
27
+ this._subscribeObserver();
28
+ }
29
+ _setStylingOptions() {
30
+ this._originalHeight = `${this.getBoundingClientRect().height}px`;
31
+ this.style.height = this._originalHeight;
32
+ }
33
+ _subscribeObserver() {
34
+ this._accordionGroupProps = this._contextConsumer.consume(ACCORDION_CONTEXTS.accordionGroupProps);
35
+ this._accordionGroupPropsObserver = new Observer((accordionProps) => {
36
+ this._setAttributes(accordionProps);
37
+ accordionProps.opened ? this._transitionController.show(this._expand) : this._transitionController.hide(this._collapse);
38
+ });
39
+ this._accordionGroupProps.subscribe(this._accordionGroupPropsObserver);
40
+ }
41
+ _setHeight(height) {
42
+ this.style.height = height;
43
+ }
44
+ _setAttributes({ regionId, controlsId }) {
45
+ this.setAttribute('id', controlsId);
46
+ this.setAttribute('labelledby', regionId);
47
+ }
48
+ disconnectedCallback() {
49
+ super.disconnectedCallback();
50
+ this._accordionGroupProps.unsubscribe(this._accordionGroupPropsObserver);
51
+ }
52
+ };
53
+ __decorate([
54
+ property(),
55
+ __metadata("design:type", Object)
56
+ ], HAccordionContent.prototype, "transitionName", void 0);
57
+ HAccordionContent = __decorate([
58
+ phoenixCustomElement('h-accordion-content'),
59
+ __metadata("design:paramtypes", [])
60
+ ], HAccordionContent);
61
+
62
+ export { HAccordionContent };
63
+ //# sourceMappingURL=accordion_content.js.map
@@ -0,0 +1 @@
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;AACA;AACA;AACA;AACA;AACA;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,26 @@
1
+ import { IAccordion, IAccordionGroup } from './accordion_types';
2
+ import { PhoenixLightLitElement } from "../../core/phoenix_light_lit_element";
3
+ export declare class HAccordionGroup extends PhoenixLightLitElement implements IAccordionGroup, IAccordion {
4
+ opened: boolean;
5
+ private _isDisabled;
6
+ private _regionId;
7
+ private _controlsId;
8
+ private _accordionGroupPropsSubject;
9
+ private _accordionGroupContext;
10
+ private _accordionContextConsumer;
11
+ private _accordionProps;
12
+ private _accordionPropsObserver;
13
+ constructor();
14
+ connectedCallback(): void;
15
+ private _subscribeObserver;
16
+ disconnectedCallback(): void;
17
+ show(): void;
18
+ hide(): void;
19
+ toggle(): void;
20
+ enable(): void;
21
+ disable(): void;
22
+ private _accordionToggle;
23
+ notify(): void;
24
+ protected updated(_changedProperties: Map<string, unknown>): void;
25
+ private _getProps;
26
+ }
@@ -0,0 +1,116 @@
1
+ import { __decorate, __metadata } from '../../../../../external/tslib/tslib.es6.js';
2
+ import { ContextProviderController } from '../../core/context/context_provider_controller.js';
3
+ import { ContextConsumerController } from '../../core/context/context_consumer_controller.js';
4
+ import { property, state } from 'lit/decorators';
5
+ import { PhoenixLightLitElement } from '../../core/phoenix_light_lit_element.js';
6
+ import { phoenixCustomElement } from '../../core/decorators/phoenix_custom_element.js';
7
+ import { ACCORDION_CONTEXTS, ACCORDION_EVENTS } from './accordion_constants.js';
8
+ import { Observer } from '../../core/observer/observer.js';
9
+ import { Subject } from '../../core/observer/observable.js';
10
+
11
+ let HAccordionGroup = class HAccordionGroup extends PhoenixLightLitElement {
12
+ constructor() {
13
+ super();
14
+ this.opened = false;
15
+ this._isDisabled = false;
16
+ this._regionId = self.crypto.randomUUID();
17
+ this._controlsId = self.crypto.randomUUID();
18
+ this._accordionToggle = () => {
19
+ this.toggle();
20
+ };
21
+ this._accordionGroupPropsSubject = new Subject();
22
+ this._accordionGroupContext = new ContextProviderController(this);
23
+ this._accordionGroupContext.provide(ACCORDION_CONTEXTS.accordionGroupProps, this._accordionGroupPropsSubject);
24
+ }
25
+ connectedCallback() {
26
+ super.connectedCallback();
27
+ this._accordionContextConsumer = new ContextConsumerController(this);
28
+ this._subscribeObserver();
29
+ this.addEventListener(ACCORDION_EVENTS.toggle, this._accordionToggle);
30
+ }
31
+ _subscribeObserver() {
32
+ this._accordionProps = this._accordionContextConsumer.consume(ACCORDION_CONTEXTS.accordionProps);
33
+ this._accordionPropsObserver = new Observer((accordionProps) => {
34
+ const hasAccordionBeenDisabled = accordionProps.disabled;
35
+ if (hasAccordionBeenDisabled) {
36
+ this.disable();
37
+ return;
38
+ }
39
+ const hasAccordionBeenEnabled = accordionProps.disabled === false;
40
+ if (hasAccordionBeenEnabled) {
41
+ this.enable();
42
+ return;
43
+ }
44
+ });
45
+ this._accordionProps.subscribe(this._accordionPropsObserver);
46
+ }
47
+ disconnectedCallback() {
48
+ this._accordionProps.unsubscribe(this._accordionPropsObserver);
49
+ this.removeEventListener(ACCORDION_EVENTS.toggle, this._accordionToggle);
50
+ }
51
+ show() {
52
+ this.opened = true;
53
+ }
54
+ hide() {
55
+ this.opened = false;
56
+ }
57
+ toggle() {
58
+ this.opened = !this.opened;
59
+ }
60
+ enable() {
61
+ if (this._isDisabled) {
62
+ this.addEventListener(ACCORDION_EVENTS.toggle, this._accordionToggle);
63
+ this.hide();
64
+ this._isDisabled = false;
65
+ }
66
+ }
67
+ disable() {
68
+ if (!this._isDisabled) {
69
+ this.removeEventListener(ACCORDION_EVENTS.toggle, this._accordionToggle);
70
+ this.show();
71
+ this._isDisabled = true;
72
+ }
73
+ }
74
+ notify() {
75
+ this._accordionGroupPropsSubject.notify(this._getProps());
76
+ }
77
+ updated(_changedProperties) {
78
+ if (_changedProperties.has('opened') ||
79
+ _changedProperties.has('_isDisabled') ||
80
+ _changedProperties.has('_regionId') ||
81
+ _changedProperties.has('_controlsId')) {
82
+ this.notify();
83
+ }
84
+ }
85
+ _getProps() {
86
+ return {
87
+ opened: this.opened,
88
+ disabled: this._isDisabled,
89
+ regionId: this._regionId,
90
+ controlsId: this._controlsId
91
+ };
92
+ }
93
+ };
94
+ __decorate([
95
+ property({ type: Boolean, reflect: true }),
96
+ __metadata("design:type", Object)
97
+ ], HAccordionGroup.prototype, "opened", void 0);
98
+ __decorate([
99
+ state(),
100
+ __metadata("design:type", Object)
101
+ ], HAccordionGroup.prototype, "_isDisabled", void 0);
102
+ __decorate([
103
+ state(),
104
+ __metadata("design:type", Object)
105
+ ], HAccordionGroup.prototype, "_regionId", void 0);
106
+ __decorate([
107
+ state(),
108
+ __metadata("design:type", Object)
109
+ ], HAccordionGroup.prototype, "_controlsId", void 0);
110
+ HAccordionGroup = __decorate([
111
+ phoenixCustomElement('h-accordion-group'),
112
+ __metadata("design:paramtypes", [])
113
+ ], HAccordionGroup);
114
+
115
+ export { HAccordionGroup };
116
+ //# sourceMappingURL=accordion_group.js.map
@@ -0,0 +1 @@
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;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;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
+ import { PhoenixLightLitElement } from "../../core/phoenix_light_lit_element";
2
+ export declare class HAccordionToggler extends PhoenixLightLitElement {
3
+ private _btnController;
4
+ private _contextConsumer;
5
+ private _accordionGroupProps;
6
+ private _accordionGroupPropsObserver;
7
+ constructor();
8
+ connectedCallback(): void;
9
+ private _setAttributes;
10
+ private _emitTogglerClicked;
11
+ disconnectedCallback(): void;
12
+ }
@@ -0,0 +1,44 @@
1
+ import { __decorate, __metadata } from '../../../../../external/tslib/tslib.es6.js';
2
+ import { ContextConsumerController } from '../../core/context/context_consumer_controller.js';
3
+ import { PhoenixLightLitElement } from '../../core/phoenix_light_lit_element.js';
4
+ import { phoenixCustomElement } from '../../core/decorators/phoenix_custom_element.js';
5
+ import { ACCORDION_EVENTS, ACCORDION_CONTEXTS } from './accordion_constants.js';
6
+ import { Observer } from '../../core/observer/observer.js';
7
+ import { BtnController } from '../../controllers/btn_controller.js';
8
+
9
+ let HAccordionToggler = class HAccordionToggler extends PhoenixLightLitElement {
10
+ constructor() {
11
+ super();
12
+ this._emitTogglerClicked = () => {
13
+ const togglerClickedEvent = new CustomEvent(ACCORDION_EVENTS.toggle, {
14
+ bubbles: true
15
+ });
16
+ this.dispatchEvent(togglerClickedEvent);
17
+ };
18
+ this._btnController = new BtnController(this, this._emitTogglerClicked);
19
+ this._contextConsumer = new ContextConsumerController(this);
20
+ }
21
+ connectedCallback() {
22
+ super.connectedCallback();
23
+ this._accordionGroupProps = this._contextConsumer.consume(ACCORDION_CONTEXTS.accordionGroupProps);
24
+ this._accordionGroupPropsObserver = new Observer((accordionProps) => this._setAttributes(accordionProps));
25
+ this._accordionGroupProps.subscribe(this._accordionGroupPropsObserver);
26
+ this.addEventListener('click', this._emitTogglerClicked);
27
+ }
28
+ _setAttributes({ regionId, opened, controlsId, disabled }) {
29
+ this.setAttribute('id', regionId);
30
+ this.setAttribute('aria-expanded', opened ? 'true' : 'false');
31
+ this.setAttribute('aria-controls', controlsId);
32
+ this.setAttribute('aria-disabled', disabled ? 'true' : 'false');
33
+ }
34
+ disconnectedCallback() {
35
+ this._accordionGroupProps.unsubscribe(this._accordionGroupPropsObserver);
36
+ }
37
+ };
38
+ HAccordionToggler = __decorate([
39
+ phoenixCustomElement('h-accordion-toggler'),
40
+ __metadata("design:paramtypes", [])
41
+ ], HAccordionToggler);
42
+
43
+ export { HAccordionToggler };
44
+ //# sourceMappingURL=accordion_toggler.js.map
@@ -0,0 +1 @@
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;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;"}
@@ -0,0 +1,31 @@
1
+ import { HAccordion } from './accordion';
2
+ import { HAccordionContent } from "./accordion_content";
3
+ import { HAccordionGroup } from "./accordion_group";
4
+ import { HAccordionToggler } from "./accordion_toggler";
5
+ export interface IAccordion {
6
+ enable(): void;
7
+ disable(): void;
8
+ notify(): void;
9
+ }
10
+ export interface IAccordionGroup {
11
+ show(): void;
12
+ hide(): void;
13
+ toggle(): void;
14
+ }
15
+ export declare type TAccordionProps = {
16
+ disabled: boolean;
17
+ };
18
+ export declare type TAccordionGroupProps = {
19
+ opened: boolean;
20
+ disabled: boolean;
21
+ regionId: string;
22
+ controlsId: string;
23
+ };
24
+ declare global {
25
+ interface HTMLElementTagNameMap {
26
+ 'h-accordion': HAccordion;
27
+ 'h-accordion-group': HAccordionGroup;
28
+ 'h-accordion-toggler': HAccordionToggler;
29
+ 'h-accordion-content': HAccordionContent;
30
+ }
31
+ }
@@ -0,0 +1,5 @@
1
+ import './accordion';
2
+ import '@phoenixRoot/components/accordion/accordion_content';
3
+ import '@phoenixRoot/components/accordion/accordion_group';
4
+ import '@phoenixRoot/components/accordion/accordion_toggler';
5
+ //# sourceMappingURL=accordion_types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"accordion_types.js","sourceRoot":"","sources":["../../../../../../../src/components/accordion/accordion_types.ts"],"names":[],"mappings":"AAAA,OAA2B,aAAa,CAAC;AACzC,OAAkC,qDAAqD,CAAC;AACxF,OAAgC,mDAAmD,CAAC;AACpF,OAAkC,qDAAqD,CAAC"}
@@ -0,0 +1,11 @@
1
+ import { ReactiveController, ReactiveControllerHost } from 'lit';
2
+ export declare class TransitionController implements ReactiveController {
3
+ private host;
4
+ private _transitionDuration;
5
+ private _transitionName;
6
+ constructor(host: ReactiveControllerHost & HTMLElement, transitionName: string);
7
+ hostConnected(): void;
8
+ hostDisconnected(): void;
9
+ show(callback?: () => void): void;
10
+ hide(callback?: () => void): void;
11
+ }
@@ -0,0 +1,36 @@
1
+ import 'lit';
2
+ import { TRANSITION_CSS_CLASSES } from './transition_controller_constants.js';
3
+
4
+ class TransitionController {
5
+ constructor(host, transitionName) {
6
+ (this.host = host).addController(this);
7
+ this._transitionName = transitionName;
8
+ }
9
+ hostConnected() {
10
+ this._transitionDuration = parseFloat(getComputedStyle(this.host).transitionDuration) * 1000;
11
+ }
12
+ hostDisconnected() { }
13
+ show(callback) {
14
+ this.host.hidden = false;
15
+ this.host.classList.add(`${this._transitionName}-${TRANSITION_CSS_CLASSES.transitionEnd}`);
16
+ requestAnimationFrame(() => {
17
+ this.host.classList.remove(`${this._transitionName}-${TRANSITION_CSS_CLASSES.transitionStart}`);
18
+ if (typeof callback === 'function')
19
+ callback();
20
+ });
21
+ }
22
+ hide(callback) {
23
+ requestAnimationFrame(() => {
24
+ if (typeof callback === 'function')
25
+ callback();
26
+ this.host.classList.add(`${this._transitionName}-${TRANSITION_CSS_CLASSES.transitionStart}`);
27
+ this.host.classList.remove(`${this._transitionName}-${TRANSITION_CSS_CLASSES.transitionEnd}`);
28
+ setTimeout(() => {
29
+ this.host.hidden = true;
30
+ }, this._transitionDuration);
31
+ });
32
+ }
33
+ }
34
+
35
+ export { TransitionController };
36
+ //# sourceMappingURL=transition_controller.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;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;"}
@@ -0,0 +1,4 @@
1
+ export declare const TRANSITION_CSS_CLASSES: {
2
+ readonly transitionStart: "transition-start";
3
+ readonly transitionEnd: "transition-end";
4
+ };
@@ -0,0 +1,7 @@
1
+ const TRANSITION_CSS_CLASSES = {
2
+ transitionStart: 'transition-start',
3
+ transitionEnd: 'transition-end'
4
+ };
5
+
6
+ export { TRANSITION_CSS_CLASSES };
7
+ //# sourceMappingURL=transition_controller_constants.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":null,"sources":[null],"sourcesContent":[null],"names":[],"mappings":"AAAA;AACA;AACA;AACA;AACA;AACA;"}
@@ -1,5 +1,5 @@
1
- import { ReactiveController } from 'lit';
2
1
  import { TContextValueKey, TWebComponentsContextControllerHost } from "./context_controller_types";
2
+ import { ReactiveController } from 'lit';
3
3
  export declare class ContextProviderController<TValue> implements ReactiveController {
4
4
  #private;
5
5
  constructor(host: TWebComponentsContextControllerHost);
@@ -1,7 +1,7 @@
1
1
  import { __classPrivateFieldGet, __classPrivateFieldSet } from '../../../../../external/tslib/tslib.es6.js';
2
2
  import 'lit';
3
- import { WEB_COMPONENT_CONTEXT_EVENTS } from './context_consumer_messages_names.js';
4
3
  import { ValuesContainer } from '../../../../star_core/build/esm/packages/star_core/src/classes/values_container/values_container.js';
4
+ import { WEB_COMPONENT_CONTEXT_EVENTS } from './context_consumer_messages_names.js';
5
5
 
6
6
  var _ContextProviderController_host, _ContextProviderController_contextValues, _ContextProviderController_handleRequestedValue;
7
7
  class ContextProviderController {
@@ -0,0 +1,9 @@
1
+ import { ISubject } from './observer_types';
2
+ import { Observer } from './observer';
3
+ export declare class Subject<T> implements ISubject<T> {
4
+ private _observers;
5
+ get size(): number;
6
+ subscribe(observer: Observer<T>): void;
7
+ unsubscribe(observer: Observer<T>): void;
8
+ notify(data: T): void;
9
+ }
@@ -0,0 +1,20 @@
1
+ class Subject {
2
+ constructor() {
3
+ this._observers = new Set();
4
+ }
5
+ get size() {
6
+ return this._observers.size;
7
+ }
8
+ subscribe(observer) {
9
+ this._observers.add(observer);
10
+ }
11
+ unsubscribe(observer) {
12
+ this._observers.delete(observer);
13
+ }
14
+ notify(data) {
15
+ this._observers.forEach((observer) => observer.update(data));
16
+ }
17
+ }
18
+
19
+ export { Subject };
20
+ //# sourceMappingURL=observable.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;"}
@@ -0,0 +1,6 @@
1
+ import { IObserver } from './observer_types';
2
+ export declare class Observer<T> implements IObserver<T> {
3
+ private _callback;
4
+ constructor(callback: (options: T) => void);
5
+ update(data: T): void;
6
+ }
@@ -0,0 +1,11 @@
1
+ class Observer {
2
+ constructor(callback) {
3
+ this._callback = callback;
4
+ }
5
+ update(data) {
6
+ this._callback(data);
7
+ }
8
+ }
9
+
10
+ export { Observer };
11
+ //# sourceMappingURL=observer.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;"}
@@ -0,0 +1,8 @@
1
+ export interface IObserver<T> {
2
+ update(data: T): void;
3
+ }
4
+ export interface ISubject<T> {
5
+ subscribe(observer: IObserver<T>): void;
6
+ unsubscribe(observer: IObserver<T>): void;
7
+ notify(data: T): void;
8
+ }
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=observer_types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"observer_types.js","sourceRoot":"","sources":["../../../../../../../src/core/observer/observer_types.ts"],"names":[],"mappings":""}
@@ -17,6 +17,11 @@ export { HControlContent } from './components/form_controls/control_content';
17
17
  export { HControlElement } from './components/form_controls/control_element';
18
18
  export { HControlLabel } from './components/form_controls/control_label';
19
19
  export { HControlAdditionalContent } from './components/form_controls/control_additional_content';
20
+ export { HAccordion } from './components/accordion/accordion';
21
+ export { HAccordionGroup } from './components/accordion/accordion_group';
22
+ export { HAccordionToggler } from './components/accordion/accordion_toggler';
23
+ export { HAccordionContent } from './components/accordion/accordion_content';
24
+ export * from './components/accordion/accordion_constants';
20
25
  export { BtnController } from './controllers/btn_controller';
21
26
  export { HDropdown } from './components/dropdown/dropdown';
22
27
  export { HDropdownToggler } from './components/dropdown/dropdown_toggler';
@@ -16,8 +16,13 @@ export { HControlContent } from './components/form_controls/control_content.js';
16
16
  export { HControlElement } from './components/form_controls/control_element.js';
17
17
  export { HControlLabel } from './components/form_controls/control_label.js';
18
18
  export { HControlAdditionalContent } from './components/form_controls/control_additional_content.js';
19
+ export { ACCORDION_CONTEXTS, ACCORDION_EVENTS } from './components/accordion/accordion_constants.js';
20
+ export { HAccordionContent } from './components/accordion/accordion_content.js';
21
+ export { HAccordionGroup } from './components/accordion/accordion_group.js';
19
22
  export { KeystrokesController } from './controllers/keystrokes_controller/keystrokes_controller.js';
20
23
  export { BtnController } from './controllers/btn_controller.js';
24
+ export { HAccordionToggler } from './components/accordion/accordion_toggler.js';
25
+ export { HAccordion } from './components/accordion/accordion.js';
21
26
  export { ClickOutsideController } from './controllers/click_outside_controller/click_outside_controller.js';
22
27
  export { RelativePositionController } from './controllers/relative_position_controller/relative_position_controller.js';
23
28
  export { HDropdown } from './components/dropdown/dropdown.js';
@@ -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;"}
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;"}
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.9.1",
5
+ "version": "0.10.0",
6
6
  "description": "phoenix design system",
7
7
  "author": "zefirek",
8
8
  "license": "MIT",