solid-slider 1.0.4 → 1.1.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.
package/README.md CHANGED
@@ -62,7 +62,7 @@ const MyComponent = () => {
62
62
 
63
63
  - 1.0.0 - Initial release
64
64
  - 1.0.3 - Changed the exported API to be slightly more flexible.
65
- - 1.0.4 - Fixed slider directive definition
65
+ - 1.1.0 - Upgraded to KeenSlider 6 and improved general reactivity.
66
66
 
67
67
  ## Keen Options API
68
68
 
package/dist/index.d.ts CHANGED
@@ -1,10 +1,9 @@
1
- import KeenSlider, { TOptionsEvents, TDetails } from "keen-slider";
2
- export declare type SliderOptions = TOptionsEvents;
3
- export declare type SliderDetails = TDetails;
1
+ import { Accessor } from "solid-js";
2
+ import { KeenSliderHooks, KeenSliderInstance, KeenSliderOptions, KeenSliderPlugin, TrackDetails } from "keen-slider";
4
3
  declare module "solid-js" {
5
4
  namespace JSX {
6
5
  interface Directives {
7
- ["slider"]?: {};
6
+ slider: {};
8
7
  }
9
8
  }
10
9
  }
@@ -12,32 +11,31 @@ declare module "solid-js" {
12
11
  * Creates a slider powered by KeenSlider.
13
12
  *
14
13
  * @param {options} Options to initialize the slider with
15
- * @returns {Array} An array of useful utilities
16
- * @returns [create] Register and creation function to call on setup
17
- * @returns [current] Current slide number
18
- * @returns [next] Function to trigger the next slide
19
- * @returns [prev] Function to trigger the previous slide
20
- * @returns [moveTo] Allow you to change the slider to a specific slide
21
- * @returns [refresh] Refresh trigger
22
- * @returns [details] Retrieve a list of SliderDetails
23
- * @returns [slider] Gain access to the slider itself
24
- * @returns [destroy] Destroy the entire slider (this is automatically handled)
14
+ * @param {plugins} Plugins that enhance KeenSlider options
15
+ * @returns {Object} An object of useful helpers
16
+ * @returns {create} Register and creation function to call on setup
17
+ * @returns {current} Current slide number
18
+ * @returns {next} Function to trigger the next slide
19
+ * @returns {prev} Function to trigger the previous slide
20
+ * @returns {moveTo} Allow you to change the slider to a specific slide
21
+ * @returns {refresh} Refresh trigger
22
+ * @returns {details} Retrieve a list of SliderDetails
23
+ * @returns {slider} Gain access to the slider itself
24
+ * @returns {destroy} Destroy the entire slider (this is automatically handled)
25
25
  *
26
26
  * @example
27
27
  * ```ts
28
- * const [create] = createSlider();
28
+ * const [create, { prev, next }] = createSlider();
29
29
  * <div use:slider>...</div>
30
30
  * ```
31
31
  */
32
- declare const createSlider: (options?: SliderOptions) => [(el: HTMLElement) => void, {
33
- current: () => number;
34
- next: () => void;
35
- prev: () => void;
36
- moveTo: (id: number, duration?: number | undefined) => void;
37
- resize: () => void;
38
- refresh: () => void;
39
- details: () => SliderDetails;
40
- slider: () => KeenSlider;
41
- destroy: () => void;
32
+ declare const createSlider: <O = {}, P = {}, H extends string = KeenSliderHooks>(options?: KeenSliderOptions<O, P, H> | undefined, plugins?: KeenSliderPlugin<O, P, H>[] | undefined) => [create: (el: HTMLElement) => void, helpers: {
33
+ current: Accessor<number>;
34
+ next: Accessor<void>;
35
+ prev: Accessor<void>;
36
+ moveTo: (id: number, duration?: number | undefined, absolute?: boolean | undefined, easing?: ((t: number) => number) | undefined) => void;
37
+ details: Accessor<TrackDetails>;
38
+ slider: Accessor<KeenSliderInstance<O, P, H> | undefined>;
39
+ destroy: Accessor<void>;
42
40
  }];
43
41
  export default createSlider;
package/dist/index.js CHANGED
@@ -1,53 +1,52 @@
1
- import { onMount, onCleanup, createSignal } from "solid-js";
1
+ import { on, onMount, createSignal, onCleanup, createEffect } from "solid-js";
2
2
  import KeenSlider from "keen-slider";
3
3
  /**
4
4
  * Creates a slider powered by KeenSlider.
5
5
  *
6
6
  * @param {options} Options to initialize the slider with
7
- * @returns {Array} An array of useful utilities
8
- * @returns [create] Register and creation function to call on setup
9
- * @returns [current] Current slide number
10
- * @returns [next] Function to trigger the next slide
11
- * @returns [prev] Function to trigger the previous slide
12
- * @returns [moveTo] Allow you to change the slider to a specific slide
13
- * @returns [refresh] Refresh trigger
14
- * @returns [details] Retrieve a list of SliderDetails
15
- * @returns [slider] Gain access to the slider itself
16
- * @returns [destroy] Destroy the entire slider (this is automatically handled)
7
+ * @param {plugins} Plugins that enhance KeenSlider options
8
+ * @returns {Object} An object of useful helpers
9
+ * @returns {create} Register and creation function to call on setup
10
+ * @returns {current} Current slide number
11
+ * @returns {next} Function to trigger the next slide
12
+ * @returns {prev} Function to trigger the previous slide
13
+ * @returns {moveTo} Allow you to change the slider to a specific slide
14
+ * @returns {refresh} Refresh trigger
15
+ * @returns {details} Retrieve a list of SliderDetails
16
+ * @returns {slider} Gain access to the slider itself
17
+ * @returns {destroy} Destroy the entire slider (this is automatically handled)
17
18
  *
18
19
  * @example
19
20
  * ```ts
20
- * const [create] = createSlider();
21
+ * const [create, { prev, next }] = createSlider();
21
22
  * <div use:slider>...</div>
22
23
  * ```
23
24
  */
24
- const createSlider = (options = {}) => {
25
+ const createSlider = (options, plugins) => {
25
26
  let slider;
26
27
  const [current, setCurrent] = createSignal(0);
27
28
  const destroy = () => slider && slider.destroy();
29
+ // Slider creation method and directive function
28
30
  const create = (el) => {
29
- let opts = { ...options };
30
- // @ts-ignore
31
- opts.slides = el.childNodes;
32
- opts.slideChanged = instance => {
33
- options.slideChanged && options.slideChanged(instance);
34
- setCurrent(instance.details().relativeSlide);
35
- };
36
31
  el.classList.add("keen-slider");
37
- onMount(() => (slider = new KeenSlider(el, opts)));
32
+ // @ts-ignore
33
+ const opts = () => ({ selector: el.childNodes, ...options });
34
+ onMount(() => {
35
+ slider = new KeenSlider(el, opts(), plugins);
36
+ slider.on('slideChanged', () => setCurrent(slider.track.details.rel));
37
+ });
38
38
  onCleanup(destroy);
39
+ createEffect(on(() => options, () => slider && slider.update(opts())));
39
40
  };
40
41
  return [
41
42
  create,
42
43
  {
43
44
  current,
44
- next: () => slider.next(),
45
- prev: () => slider.prev(),
46
- moveTo: (id, duration = 250) => slider.moveToSlide(id, duration),
47
- resize: () => slider.resize(),
48
- refresh: () => slider.refresh(),
49
- details: () => slider.details(),
45
+ next: () => slider && slider.next(),
46
+ prev: () => slider && slider.prev(),
47
+ details: () => slider ? slider.track.details : {},
50
48
  slider: () => slider,
49
+ moveTo: (id, duration = 250, absolute = false, easing) => slider?.moveToIdx(id, absolute, { duration, easing: easing }),
51
50
  destroy
52
51
  }
53
52
  ];
package/dist/slider.css CHANGED
@@ -1,4 +1,5 @@
1
- .keen-slider {
1
+ .keen-slider:not([data-keen-slider-disabled]) {
2
+ align-content: flex-start;
2
3
  display: flex;
3
4
  overflow: hidden;
4
5
  position: relative;
@@ -10,19 +11,20 @@
10
11
  -khtml-user-select: none;
11
12
  touch-action: pan-y;
12
13
  -webkit-tap-highlight-color: transparent;
14
+ width: 100%;
13
15
  }
14
- .keen-slider__slide {
16
+ .keen-slider:not([data-keen-slider-disabled]) .keen-slider__slide {
15
17
  position: relative;
16
18
  overflow: hidden;
17
19
  width: 100%;
18
20
  min-height: 100%;
19
21
  }
20
- .keen-slider[data-keen-slider-v] {
21
- flex-wrap: wrap;
22
+ .keen-slider:not([data-keen-slider-disabled])[data-keen-slider-reverse] {
23
+ flex-direction: row-reverse;
22
24
  }
23
- .keen-slider[data-keen-slider-v] .keen-slider__slide {
24
- width: 100%;
25
+ .keen-slider:not([data-keen-slider-disabled])[data-keen-slider-v] {
26
+ flex-wrap: wrap;
25
27
  }
26
- .keen-slider[data-keen-slider-moves] * {
28
+ .keen-slider:not([data-keen-slider-disabled])[data-keen-slider-moves] * {
27
29
  pointer-events: none;
28
30
  }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "solid-slider",
3
- "version": "1.0.4",
3
+ "version": "1.1.0",
4
4
  "description": "A slider/carousel component for Solid powered by KeenSlider.",
5
5
  "author": "David Di Biase",
6
6
  "license": "ISC",
@@ -27,7 +27,7 @@
27
27
  },
28
28
  "keywords": [
29
29
  "slider",
30
- "carouse",
30
+ "carousel",
31
31
  "solid",
32
32
  "keen",
33
33
  "slider",
@@ -37,12 +37,11 @@
37
37
  "gallery",
38
38
  "plugin"
39
39
  ],
40
- "peerDependencies": {
41
- "solid-js": "^1.0.7"
42
- },
43
40
  "dependencies": {
44
- "keen-slider": "^5.5.1",
45
- "solid-js": "^1.1.7"
41
+ "keen-slider": "^6.6.3",
42
+ "rimraf": "^3.0.2",
43
+ "solid-js": "^1.3.5",
44
+ "typescript": "^4.5.5"
46
45
  },
47
46
  "devDependencies": {
48
47
  "prettier": "^2.4.1"