@shoper/phoenix_design_system 1.16.1 → 1.17.0-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 (36) hide show
  1. package/build/cjs/external/@splidejs/splide-extension-auto-scroll/dist/js/splide-extension-auto-scroll.esm.js +541 -0
  2. package/build/cjs/external/@splidejs/splide-extension-auto-scroll/dist/js/splide-extension-auto-scroll.esm.js.map +1 -0
  3. package/build/cjs/packages/phoenix/src/components/scroller/scroller-item.js +20 -0
  4. package/build/cjs/packages/phoenix/src/components/scroller/scroller-item.js.map +1 -0
  5. package/build/cjs/packages/phoenix/src/components/scroller/scroller.js +66 -0
  6. package/build/cjs/packages/phoenix/src/components/scroller/scroller.js.map +1 -0
  7. package/build/cjs/packages/phoenix/src/components/slider/slider.js +50 -0
  8. package/build/cjs/packages/phoenix/src/components/slider/slider.js.map +1 -1
  9. package/build/cjs/packages/phoenix/src/components/slider/slider_constants.js +11 -0
  10. package/build/cjs/packages/phoenix/src/components/slider/slider_constants.js.map +1 -0
  11. package/build/cjs/packages/phoenix/src/index.js +14 -0
  12. package/build/cjs/packages/phoenix/src/index.js.map +1 -1
  13. package/build/esm/external/@splidejs/splide-extension-auto-scroll/dist/js/splide-extension-auto-scroll.esm.js +537 -0
  14. package/build/esm/external/@splidejs/splide-extension-auto-scroll/dist/js/splide-extension-auto-scroll.esm.js.map +1 -0
  15. package/build/esm/packages/phoenix/src/components/scroller/scroller-item.d.ts +4 -0
  16. package/build/esm/packages/phoenix/src/components/scroller/scroller-item.js +18 -0
  17. package/build/esm/packages/phoenix/src/components/scroller/scroller-item.js.map +1 -0
  18. package/build/esm/packages/phoenix/src/components/scroller/scroller.d.ts +12 -0
  19. package/build/esm/packages/phoenix/src/components/scroller/scroller.js +64 -0
  20. package/build/esm/packages/phoenix/src/components/scroller/scroller.js.map +1 -0
  21. package/build/esm/packages/phoenix/src/components/scroller/scroller_types.d.ts +14 -0
  22. package/build/esm/packages/phoenix/src/components/scroller/scroller_types.js +2 -0
  23. package/build/esm/packages/phoenix/src/components/scroller/scroller_types.js.map +1 -0
  24. package/build/esm/packages/phoenix/src/components/slider/slider.d.ts +9 -0
  25. package/build/esm/packages/phoenix/src/components/slider/slider.js +51 -1
  26. package/build/esm/packages/phoenix/src/components/slider/slider.js.map +1 -1
  27. package/build/esm/packages/phoenix/src/components/slider/slider_constants.d.ts +4 -0
  28. package/build/esm/packages/phoenix/src/components/slider/slider_constants.js +7 -0
  29. package/build/esm/packages/phoenix/src/components/slider/slider_constants.js.map +1 -0
  30. package/build/esm/packages/phoenix/src/components/slider/slider_types.d.ts +3 -0
  31. package/build/esm/packages/phoenix/src/components/slider/slider_types.js +2 -0
  32. package/build/esm/packages/phoenix/src/components/slider/slider_types.js.map +1 -1
  33. package/build/esm/packages/phoenix/src/index.d.ts +3 -0
  34. package/build/esm/packages/phoenix/src/index.js +2 -0
  35. package/build/esm/packages/phoenix/src/index.js.map +1 -1
  36. package/package.json +4 -2
@@ -0,0 +1,18 @@
1
+ import { __decorate, __metadata } from '../../../../../external/tslib/tslib.es6.js';
2
+ import { PhoenixLightLitElement } from '../../core/phoenix_light_lit_element/phoenix_light_lit_element.js';
3
+ import { phoenixCustomElement } from '../../core/decorators/phoenix_custom_element.js';
4
+
5
+ let HScrollerItem = class HScrollerItem extends PhoenixLightLitElement {
6
+ constructor() {
7
+ super();
8
+ this.slot = this.hasAttribute('slot') ? this.slot : 'item';
9
+ this.className = `splide__slide ${this.className}`;
10
+ }
11
+ };
12
+ HScrollerItem = __decorate([
13
+ phoenixCustomElement('h-scroller-item'),
14
+ __metadata("design:paramtypes", [])
15
+ ], HScrollerItem);
16
+
17
+ export { HScrollerItem };
18
+ //# sourceMappingURL=scroller-item.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;"}
@@ -0,0 +1,12 @@
1
+ import { IScroller, IScrollerOptions } from './scroller_types';
2
+ import { PhoenixLightLitElement } from "../../core/phoenix_light_lit_element/phoenix_light_lit_element";
3
+ export declare class HScroller extends PhoenixLightLitElement {
4
+ settings: string;
5
+ id: string;
6
+ get sliderSettings(): IScrollerOptions;
7
+ set sliderSettings(newSettingsObject: IScrollerOptions);
8
+ private _settings;
9
+ private _scroller;
10
+ connectedCallback(): void;
11
+ getSlider(): IScroller | null;
12
+ }
@@ -0,0 +1,64 @@
1
+ import { __decorate, __metadata } from '../../../../../external/tslib/tslib.es6.js';
2
+ import { property } from 'lit/decorators';
3
+ import { JsonUtils } from '@dreamcommerce/utilities';
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 { Splide } from '../../../../../external/@splidejs/splide/dist/js/splide.esm.js';
7
+ import { AutoScroll } from '../../../../../external/@splidejs/splide-extension-auto-scroll/dist/js/splide-extension-auto-scroll.esm.js';
8
+
9
+ let HScroller = class HScroller extends PhoenixLightLitElement {
10
+ constructor() {
11
+ super(...arguments);
12
+ this.settings = '';
13
+ this.id = '';
14
+ this._settings = {
15
+ mountOnConnectedCallback: true,
16
+ type: 'loop',
17
+ perPage: 3,
18
+ autoScroll: {
19
+ autoStart: true,
20
+ pauseOnFocus: true,
21
+ pauseOnHover: true,
22
+ rewind: false,
23
+ speed: 1
24
+ }
25
+ };
26
+ this._scroller = null;
27
+ }
28
+ get sliderSettings() {
29
+ return this._settings;
30
+ }
31
+ set sliderSettings(newSettingsObject) {
32
+ const newSettings = JsonUtils.toJson(newSettingsObject);
33
+ if (!newSettings)
34
+ return;
35
+ this.settings = newSettings;
36
+ }
37
+ connectedCallback() {
38
+ var _a;
39
+ if (this.settings) {
40
+ this._settings = (_a = JsonUtils.fromJson(this.settings)) !== null && _a !== void 0 ? _a : this._settings;
41
+ }
42
+ this._scroller = new Splide(`#${this.id}`, this._settings);
43
+ if (this._settings.mountOnConnectedCallback) {
44
+ this._scroller.mount({ AutoScroll });
45
+ }
46
+ }
47
+ getSlider() {
48
+ return this._scroller;
49
+ }
50
+ };
51
+ __decorate([
52
+ property({ reflect: true }),
53
+ __metadata("design:type", String)
54
+ ], HScroller.prototype, "settings", void 0);
55
+ __decorate([
56
+ property(),
57
+ __metadata("design:type", String)
58
+ ], HScroller.prototype, "id", void 0);
59
+ HScroller = __decorate([
60
+ phoenixCustomElement('h-scroller')
61
+ ], HScroller);
62
+
63
+ export { HScroller };
64
+ //# sourceMappingURL=scroller.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":null,"sources":[null],"sourcesContent":[null],"names":[],"mappings":"AAAA,uCAAuC,4CAAgD;AACvF;AACA;AACA;AACA;AACA,uBAAuB,gEAAoE;AAC3F,2BAA2B,4GAAgH;AAC3I;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;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,14 @@
1
+ import { Options, Splide } from '@splidejs/splide';
2
+ export interface IScroller extends Splide {
3
+ }
4
+ export interface IScrollerOptions extends Options {
5
+ mountOnConnectedCallback: boolean;
6
+ type: string;
7
+ autoScroll: {
8
+ autoStart: boolean;
9
+ pauseOnFocus: boolean;
10
+ pauseOnHover: boolean;
11
+ rewind: boolean;
12
+ speed: number;
13
+ };
14
+ }
@@ -0,0 +1,2 @@
1
+ import '@splidejs/splide';
2
+ //# sourceMappingURL=scroller_types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"scroller_types.js","sourceRoot":"","sources":["../../../../../../../src/components/scroller/scroller_types.ts"],"names":[],"mappings":"AAAA,OAAgC,kBAAkB,CAAC"}
@@ -7,6 +7,15 @@ export declare class HSlider extends PhoenixLightLitElement {
7
7
  set sliderSettings(newSettingsObject: ISliderOptions);
8
8
  private _settings;
9
9
  private _slider;
10
+ private _$focusableElements;
10
11
  connectedCallback(): void;
12
+ private _showFocusableNodes;
13
+ private _hideFocusableNodes;
14
+ private _handleFocusableNodes;
15
+ private _showFocusableElement;
16
+ private _hideFocusableElement;
17
+ private _scanMutationsForNewFocusableElements;
18
+ private _initializeFocusableElement;
11
19
  getSlider(): ISlider | null;
20
+ disconnectedCallback(): void;
12
21
  }
@@ -1,9 +1,10 @@
1
1
  import { __decorate, __metadata } from '../../../../../external/tslib/tslib.es6.js';
2
2
  import { property } from 'lit/decorators';
3
- import { JsonUtils } from '@dreamcommerce/utilities';
3
+ import { JsonUtils, UiDomUtils } from '@dreamcommerce/utilities';
4
4
  import { PhoenixLightLitElement } from '../../core/phoenix_light_lit_element/phoenix_light_lit_element.js';
5
5
  import { phoenixCustomElement } from '../../core/decorators/phoenix_custom_element.js';
6
6
  import { Splide } from '../../../../../external/@splidejs/splide/dist/js/splide.esm.js';
7
+ import { SLIDER_HANDLE_FOCUSABLE_NODES_OPTIONS } from './slider_constants.js';
7
8
 
8
9
  let HSlider = class HSlider extends PhoenixLightLitElement {
9
10
  constructor() {
@@ -17,6 +18,26 @@ let HSlider = class HSlider extends PhoenixLightLitElement {
17
18
  focus: 'center'
18
19
  };
19
20
  this._slider = null;
21
+ this._$focusableElements = [];
22
+ this._showFocusableNodes = (slideComponent) => {
23
+ this._handleFocusableNodes(slideComponent, SLIDER_HANDLE_FOCUSABLE_NODES_OPTIONS.show);
24
+ };
25
+ this._hideFocusableNodes = (slideComponent) => {
26
+ this._handleFocusableNodes(slideComponent, SLIDER_HANDLE_FOCUSABLE_NODES_OPTIONS.hide);
27
+ };
28
+ this._handleFocusableNodes = ({ slide }, action) => {
29
+ const $focusableSlideChildren = this._$focusableElements.filter(($focusableElement) => slide.contains($focusableElement));
30
+ if ($focusableSlideChildren.length === 0)
31
+ return;
32
+ const updateFocusability = action === SLIDER_HANDLE_FOCUSABLE_NODES_OPTIONS.show ? this._showFocusableElement : this._hideFocusableElement;
33
+ $focusableSlideChildren.forEach(($element) => (updateFocusability($element)));
34
+ };
35
+ this._initializeFocusableElement = ($element) => {
36
+ !this._$focusableElements.includes($element) && this._$focusableElements.push($element);
37
+ if ($element.closest('[aria-hidden="true"]')) {
38
+ this._hideFocusableElement($element);
39
+ }
40
+ };
20
41
  }
21
42
  get sliderSettings() {
22
43
  return this._settings;
@@ -36,10 +57,39 @@ let HSlider = class HSlider extends PhoenixLightLitElement {
36
57
  if (this._settings.mountOnConnectedCallback) {
37
58
  this._slider.mount();
38
59
  }
60
+ this._slider.on('visible', this._showFocusableNodes);
61
+ this._slider.on('hidden', this._hideFocusableNodes);
62
+ const mutationObserver = new MutationObserver(this._scanMutationsForNewFocusableElements);
63
+ mutationObserver.observe(this, { childList: true, subtree: true, attributes: true });
64
+ }
65
+ _showFocusableElement($element) {
66
+ $element.setAttribute('tabindex', '0');
67
+ $element.removeAttribute('aria-hidden');
68
+ }
69
+ _hideFocusableElement($element) {
70
+ $element.setAttribute('tabindex', '-1');
71
+ $element.setAttribute('aria-hidden', 'true');
72
+ }
73
+ _scanMutationsForNewFocusableElements(mutationList) {
74
+ for (const mutation of mutationList) {
75
+ if (mutation.type !== "childList")
76
+ continue;
77
+ const $target = mutation.target;
78
+ const isFocusable = UiDomUtils.isFocusable($target);
79
+ const $focusableChildren = [...$target.querySelectorAll(UiDomUtils.getFocusableSelector())];
80
+ isFocusable && this._initializeFocusableElement($target);
81
+ $focusableChildren.forEach(($child) => this._initializeFocusableElement($child));
82
+ }
39
83
  }
40
84
  getSlider() {
41
85
  return this._slider;
42
86
  }
87
+ disconnectedCallback() {
88
+ var _a, _b;
89
+ super.disconnectedCallback();
90
+ (_a = this._slider) === null || _a === void 0 ? void 0 : _a.off('visible');
91
+ (_b = this._slider) === null || _b === void 0 ? void 0 : _b.off('hidden');
92
+ }
43
93
  };
44
94
  __decorate([
45
95
  property({ reflect: true }),
@@ -1 +1 @@
1
- {"version":3,"file":null,"sources":[null],"sourcesContent":[null],"names":[],"mappings":"AAAA,uCAAuC,4CAAgD;AACvF;AACA;AACA;AACA;AACA,uBAAuB,gEAAoE;AAC3F;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;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,uCAAuC,4CAAgD;AACvF;AACA;AACA;AACA;AACA,uBAAuB,gEAAoE;AAC3F;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;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 SLIDER_HANDLE_FOCUSABLE_NODES_OPTIONS: {
2
+ readonly show: "show";
3
+ readonly hide: "hide";
4
+ };
@@ -0,0 +1,7 @@
1
+ const SLIDER_HANDLE_FOCUSABLE_NODES_OPTIONS = {
2
+ show: 'show',
3
+ hide: 'hide'
4
+ };
5
+
6
+ export { SLIDER_HANDLE_FOCUSABLE_NODES_OPTIONS };
7
+ //# sourceMappingURL=slider_constants.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":null,"sources":[null],"sourcesContent":[null],"names":[],"mappings":"AAAA;AACA;AACA;AACA;AACA;AACA;"}
@@ -1,6 +1,9 @@
1
1
  import { Options, Splide } from '@splidejs/splide';
2
+ import { SLIDER_HANDLE_FOCUSABLE_NODES_OPTIONS } from './slider_constants';
3
+ import { Any } from 'ts-toolbelt';
2
4
  export interface ISlider extends Splide {
3
5
  }
4
6
  export interface ISliderOptions extends Options {
5
7
  mountOnConnectedCallback: boolean;
6
8
  }
9
+ export declare type THandleNodesOption = typeof SLIDER_HANDLE_FOCUSABLE_NODES_OPTIONS[Any.Keys<typeof SLIDER_HANDLE_FOCUSABLE_NODES_OPTIONS>];
@@ -1,2 +1,4 @@
1
1
  import '@splidejs/splide';
2
+ import './slider_constants';
3
+ import 'ts-toolbelt';
2
4
  //# sourceMappingURL=slider_types.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"slider_types.js","sourceRoot":"","sources":["../../../../../../../src/components/slider/slider_types.ts"],"names":[],"mappings":"AAAA,OAAgC,kBAAkB,CAAC"}
1
+ {"version":3,"file":"slider_types.js","sourceRoot":"","sources":["../../../../../../../src/components/slider/slider_types.ts"],"names":[],"mappings":"AAAA,OAAgC,kBAAkB,CAAC;AACnD,OAAsD,oBAAoB,CAAC;AAC3E,OAAoB,aAAa,CAAC"}
@@ -98,6 +98,9 @@ export { VisibilityController } from './controllers/visibility_controller/visibi
98
98
  export * from './controllers/visibility_controller/visibility_controller_types';
99
99
  export { HSlider } from './components/slider/slider';
100
100
  export * from './components/slider/slider_types';
101
+ export { HScroller } from './components/scroller/scroller';
102
+ export { HScrollerItem } from './components/scroller/scroller-item';
103
+ export * from './components/scroller/scroller_types';
101
104
  export { HTabs } from './components/tabs/tabs';
102
105
  export { HTab } from './components/tabs/tab/tab';
103
106
  export { HTabPanel } from './components/tabs/tab_panel';
@@ -85,6 +85,8 @@ export { HColorSwatchesControl } from './components/form/color_swatches_control/
85
85
  export { HColorSwatchesShowMore } from './components/color_swatches/show-more/show_more.js';
86
86
  export { VisibilityController } from './controllers/visibility_controller/visibility_controller.js';
87
87
  export { HSlider } from './components/slider/slider.js';
88
+ export { HScroller } from './components/scroller/scroller.js';
89
+ export { HScrollerItem } from './components/scroller/scroller-item.js';
88
90
  export { HTab } from './components/tabs/tab/tab.js';
89
91
  export { HTabPanel } from './components/tabs/tab_panel.js';
90
92
  export { TABS_EVENT_NAMES } from './components/tabs/tabs_constants.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;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;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;"}
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": "1.16.1",
5
+ "version": "1.17.0-0",
6
6
  "description": "phoenix design system",
7
7
  "author": "zefirek",
8
8
  "license": "MIT",
@@ -27,13 +27,15 @@
27
27
  },
28
28
  "peerDependencies": {
29
29
  "@dreamcommerce/utilities": "^1.0.0",
30
- "@splidejs/splide": "^4.0.7"
30
+ "@splidejs/splide": "^4.0.7",
31
+ "@splidejs/splide-extension-auto-scroll": "^0.5.3"
31
32
  },
32
33
  "devDependencies": {
33
34
  "@dreamcommerce/utilities": "^1.20.1-0",
34
35
  "@shoper/jest_config": "^0.0.0",
35
36
  "@shoper/tsconfig": "^0.0.0",
36
37
  "@splidejs/splide": "4.0.7",
38
+ "@splidejs/splide-extension-auto-scroll": "^0.5.3",
37
39
  "@storybook/web-components": "6.5.7",
38
40
  "lit": "2.4.0"
39
41
  },