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 +24 -0
- package/package.json +2 -1
- package/tooltips/Tooltip.svelte +5 -16
- package/tooltips/Tooltip.svelte.d.ts +1 -3
- package/utils/Popper.svelte +7 -7
- package/utils/Popper.svelte.d.ts +0 -2
- package/utils/createEventDispatcher.js +24 -0
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.
|
|
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
|
},
|
package/tooltips/Tooltip.svelte
CHANGED
|
@@ -1,30 +1,19 @@
|
|
|
1
1
|
<script>import Popper from '../utils/Popper.svelte';
|
|
2
2
|
import classNames from 'classnames';
|
|
3
|
-
|
|
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
|
|
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:
|
|
11
|
+
custom: color
|
|
14
12
|
};
|
|
15
13
|
let toolTipClass;
|
|
16
|
-
$: toolTipClass = classNames(tipClass,
|
|
17
|
-
let id = generateId();
|
|
14
|
+
$: toolTipClass = classNames(tipClass, colors[style], $$props.class);
|
|
18
15
|
</script>
|
|
19
16
|
|
|
20
|
-
<
|
|
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
|
-
|
|
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;
|
package/utils/Popper.svelte
CHANGED
|
@@ -1,7 +1,8 @@
|
|
|
1
|
-
<script>import {
|
|
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
|
|
89
|
+
for (const [name, handler] of events)
|
|
90
90
|
element.removeEventListener(name, handler);
|
|
91
91
|
}
|
|
92
92
|
});
|
package/utils/Popper.svelte.d.ts
CHANGED
|
@@ -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
|
+
}
|