flowbite-svelte 0.25.24 → 0.26.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/CHANGELOG.md CHANGED
@@ -2,6 +2,30 @@
2
2
 
3
3
  All notable changes to this project will be documented in this file. See [standard-version](https://github.com/conventional-changelog/standard-version) for commit guidelines.
4
4
 
5
+ ## [0.26.0](https://github.com/themesberg/flowbite-svelte/compare/v0.25.24...v0.26.0) (2022-08-29)
6
+
7
+
8
+ ### ⚠ BREAKING CHANGES
9
+
10
+ * Tooltip changed in accordance to new Popper implementation.
11
+
12
+ - Tooltip examples corrected
13
+ - Avatar example corrected
14
+
15
+ ### Features
16
+
17
+ * tooltips new API ([d9dacf9](https://github.com/themesberg/flowbite-svelte/commit/d9dacf9f65e85be93a3458dd5359d614a0dd12a0))
18
+
19
+
20
+ ### Bug Fixes
21
+
22
+ * Avatar tooltip example ([ff7c1af](https://github.com/themesberg/flowbite-svelte/commit/ff7c1af20306609f77831ff1d2632700a9f596da))
23
+ * docs corrections ([f208323](https://github.com/themesberg/flowbite-svelte/commit/f208323ac1457b88572aaae37531e6b3da1055de))
24
+ * docs corrections 2 ([5adb4d8](https://github.com/themesberg/flowbite-svelte/commit/5adb4d816591d7bc9aff2e549fc364c80e650b4b))
25
+
26
+
27
+ * Merge branch 'jjagielka-tooltip' ([1c37601](https://github.com/themesberg/flowbite-svelte/commit/1c3760139e24569287891c1ca3f67f2e0e3b9168))
28
+
5
29
  ### [0.25.24](https://github.com/themesberg/flowbite-svelte/compare/v0.25.23...v0.25.24) (2022-08-28)
6
30
 
7
31
 
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "flowbite-svelte",
3
- "version": "0.25.24",
3
+ "version": "0.26.0",
4
4
  "description": "Flowbite components for Svelte",
5
5
  "main": "index.js",
6
6
  "author": {
@@ -244,6 +244,7 @@
244
244
  "./utils/Popper.svelte": "./utils/Popper.svelte",
245
245
  "./utils/Wrapper.svelte": "./utils/Wrapper.svelte",
246
246
  "./utils/clickOutside": "./utils/clickOutside.js",
247
+ "./utils/createEventDispatcher": "./utils/createEventDispatcher.js",
247
248
  "./utils/focusTrap": "./utils/focusTrap.js",
248
249
  "./utils/generateId": "./utils/generateId.js"
249
250
  },
@@ -1,30 +1,19 @@
1
1
  <script>import Popper from '../utils/Popper.svelte';
2
2
  import classNames from 'classnames';
3
- import generateId from '../utils/generateId';
4
- export let content = '';
3
+ export let color = '';
5
4
  export let style = 'dark';
6
- export let tipColor = '';
7
5
  export let tipClass = 'py-2 px-3 text-sm font-medium rounded-lg shadow-sm tooltip';
8
6
  export let triggeredBy;
9
- const tipStyleClasses = {
7
+ const colors = {
10
8
  dark: 'border border-gray-800 bg-gray-900 text-white dark:bg-gray-700 dark:border-gray-600',
11
9
  light: 'border border-gray-200 bg-white text-gray-900',
12
10
  auto: 'border border-gray-200 bg-white text-gray-900 dark:bg-gray-700 dark:text-white dark:border-gray-600 ',
13
- custom: tipColor
11
+ custom: color
14
12
  };
15
13
  let toolTipClass;
16
- $: toolTipClass = classNames(tipClass, tipStyleClasses[style], $$props.class);
17
- let id = generateId();
14
+ $: toolTipClass = classNames(tipClass, colors[style], $$props.class);
18
15
  </script>
19
16
 
20
- <div {id}>
17
+ <Popper activeContent={false} {triggeredBy} {...$$restProps} class={toolTipClass} on:show>
21
18
  <slot />
22
- </div>
23
- <Popper
24
- activeContent={false}
25
- triggeredBy={triggeredBy ?? '#' + id}
26
- {...$$restProps}
27
- class={toolTipClass}
28
- on:show>
29
- <slot name="content">{content}</slot>
30
19
  </Popper>
@@ -2,9 +2,8 @@ import { SvelteComponentTyped } from "svelte";
2
2
  declare const __propDef: {
3
3
  props: {
4
4
  [x: string]: any;
5
- content?: string;
5
+ color?: string;
6
6
  style?: 'dark' | 'light' | 'auto' | 'custom';
7
- tipColor?: string;
8
7
  tipClass?: string;
9
8
  triggeredBy: string;
10
9
  };
@@ -15,7 +14,6 @@ declare const __propDef: {
15
14
  };
16
15
  slots: {
17
16
  default: {};
18
- content: {};
19
17
  };
20
18
  };
21
19
  export declare type TooltipProps = typeof __propDef.props;
@@ -1,7 +1,8 @@
1
- <script>import { createEventDispatcher, onMount } from 'svelte';
1
+ <script>import { onMount } from 'svelte';
2
2
  import { fade } from 'svelte/transition';
3
3
  import { createPopper } from '@popperjs/core';
4
4
  import classNames from 'classnames';
5
+ import createEventDispatcher from './createEventDispatcher';
5
6
  export let activeContent = false;
6
7
  export let animation = 100;
7
8
  export let arrow = true;
@@ -13,7 +14,7 @@ const dispatch = createEventDispatcher();
13
14
  let open = false;
14
15
  let clickable;
15
16
  $: clickable = trigger === 'click';
16
- $: dispatch('show', open);
17
+ $: dispatch('show', triggerEl, open);
17
18
  let triggerEl;
18
19
  let triggerEls = [];
19
20
  let popper;
@@ -23,8 +24,6 @@ const showHandler = (ev) => {
23
24
  if (triggerEl === undefined)
24
25
  triggerEl = ev.target;
25
26
  else if (triggerEls.includes(ev.target) && triggerEl !== ev.target) {
26
- popper.state.elements.reference = ev.target;
27
- popper.setOptions({ placement });
28
27
  triggerEl = ev.target;
29
28
  block();
30
29
  }
@@ -32,6 +31,8 @@ const showHandler = (ev) => {
32
31
  block();
33
32
  open = clickable && ev.type === 'click' && !_blocked ? !open : true;
34
33
  };
34
+ // reactivity
35
+ $: popper && (popper.state.elements.reference = triggerEl) && popper.setOptions({ placement });
35
36
  // typescript typeguards - poper.state.element.reference: Element|HTMLElement|VirtualElement
36
37
  const hasHover = (el) => el.matches && el.matches(':hover');
37
38
  const hasFocus = (el) => el.contains && el.contains(document.activeElement);
@@ -75,9 +76,8 @@ onMount(() => {
75
76
  if (!triggerEls.length)
76
77
  console.error('no triggers given');
77
78
  triggerEls.forEach((element) => {
78
- // trigger must be focusable
79
79
  if (element.tabIndex < 0)
80
- element.tabIndex = 0;
80
+ element.tabIndex = 0; // trigger must be focusable
81
81
  for (const [name, handler, cond] of events)
82
82
  if (cond)
83
83
  element.addEventListener(name, handler);
@@ -86,7 +86,7 @@ onMount(() => {
86
86
  triggerEl = undefined;
87
87
  triggerEls.forEach((element) => {
88
88
  if (element) {
89
- for (const [name, handler, cond] of events)
89
+ for (const [name, handler] of events)
90
90
  element.removeEventListener(name, handler);
91
91
  }
92
92
  });
@@ -12,8 +12,6 @@ declare const __propDef: {
12
12
  triggeredBy: string;
13
13
  };
14
14
  events: {
15
- show: CustomEvent<any>;
16
- } & {
17
15
  [evt: string]: CustomEvent<any>;
18
16
  };
19
17
  slots: {
@@ -0,0 +1,24 @@
1
+ /*
2
+ Custom Event Dispatcher
3
+
4
+ Sets `target` in event data.
5
+
6
+ https://svelte.dev/repl/c93cbf99a8ca4f44912e662a8e3cbef7?version=3.37.0
7
+
8
+ */
9
+
10
+ import { get_current_component } from 'svelte/internal';
11
+
12
+ export default function createEventDispatcher() {
13
+ const component = get_current_component();
14
+ return (type, target, detail) => {
15
+ const callbacks = component.$$.callbacks[type];
16
+ if (callbacks) {
17
+ const event = new CustomEvent(type, { detail });
18
+ target.dispatchEvent(event);
19
+ callbacks.slice().forEach((fn) => {
20
+ fn.call(component, event);
21
+ });
22
+ }
23
+ };
24
+ }