flowbite-svelte 0.22.17 → 0.22.21
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 +19 -0
- package/buttons/Button.svelte +6 -1
- package/index.d.ts +2 -0
- package/index.js +2 -0
- package/megamenu/MegaMenu.svelte +1 -1
- package/modals/Modal.svelte +147 -0
- package/modals/Modal.svelte.d.ts +28 -0
- package/modals/SmallModal.svelte +66 -64
- package/navbar/NavDropdown.svelte +1 -1
- package/package.json +2 -1
- package/utils/CloseButton.svelte +10 -4
- package/utils/CloseButton.svelte.d.ts +1 -0
package/CHANGELOG.md
CHANGED
|
@@ -2,6 +2,25 @@
|
|
|
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.22.21](https://github.com/themesberg/flowbite-svelte/compare/v0.22.20...v0.22.21) (2022-07-28)
|
|
6
|
+
|
|
7
|
+
|
|
8
|
+
### Bug Fixes
|
|
9
|
+
|
|
10
|
+
* megamenu centered in small screen ([713aa9a](https://github.com/themesberg/flowbite-svelte/commit/713aa9ab5d1c390291bb61910f9eae4b68d5981e))
|
|
11
|
+
|
|
12
|
+
### [0.22.20](https://github.com/themesberg/flowbite-svelte/compare/v0.22.19...v0.22.20) (2022-07-28)
|
|
13
|
+
|
|
14
|
+
### [0.22.19](https://github.com/themesberg/flowbite-svelte/compare/v0.22.17...v0.22.19) (2022-07-27)
|
|
15
|
+
|
|
16
|
+
|
|
17
|
+
### Features
|
|
18
|
+
|
|
19
|
+
* modal - re-written ([4dd27af](https://github.com/themesberg/flowbite-svelte/commit/4dd27afd996328fcdc6c19895e1a6a6beef2c772))
|
|
20
|
+
* modal - re-written ([1c6a93d](https://github.com/themesberg/flowbite-svelte/commit/1c6a93dfe332a7f65058d25a4a68e542d15e9a21))
|
|
21
|
+
|
|
22
|
+
### [0.22.18](https://github.com/themesberg/flowbite-svelte/compare/v0.22.17...v0.22.18) (2022-07-27)
|
|
23
|
+
|
|
5
24
|
### [0.22.17](https://github.com/themesberg/flowbite-svelte/compare/v0.22.16...v0.22.17) (2022-07-26)
|
|
6
25
|
|
|
7
26
|
### [0.22.16](https://github.com/themesberg/flowbite-svelte/compare/v0.22.15...v0.22.16) (2022-07-26)
|
package/buttons/Button.svelte
CHANGED
|
@@ -1,4 +1,6 @@
|
|
|
1
1
|
<script>import classNames from 'classnames';
|
|
2
|
+
import { getContext } from 'svelte';
|
|
3
|
+
const background = getContext('background');
|
|
2
4
|
export let pill = false;
|
|
3
5
|
export let outline = false;
|
|
4
6
|
export let gradient = false;
|
|
@@ -59,7 +61,10 @@ const sizeClasses = {
|
|
|
59
61
|
xl: 'px-6 py-3.5 text-base'
|
|
60
62
|
};
|
|
61
63
|
let buttonClass;
|
|
62
|
-
$: buttonClass = classNames('group text-center font-medium focus:ring-4 focus:outline-none', outline && gradient ? 'p-0.5' : 'inline-flex items-center justify-center ' + sizeClasses[size], gradient ? gradientClasses[color] : outline ? outlineClasses[color] : colorClasses[color],
|
|
64
|
+
$: buttonClass = classNames('group text-center font-medium focus:ring-4 focus:outline-none', outline && gradient ? 'p-0.5' : 'inline-flex items-center justify-center ' + sizeClasses[size], gradient ? gradientClasses[color] : outline ? outlineClasses[color] : colorClasses[color], color === 'alternative' &&
|
|
65
|
+
(background
|
|
66
|
+
? 'dark:bg-transparent dark:border-gray-700 dark:hover:border-gray-600'
|
|
67
|
+
: 'dark:bg-transparent dark:border-gray-800 dark:hover:border-gray-700'), pill ? 'rounded-full' : 'rounded-lg', shadow && coloredShadowClasses[shadow], $$props.disabled && 'cursor-not-allowed opacity-50', $$props.class);
|
|
63
68
|
let gradientOutlineClass;
|
|
64
69
|
$: gradientOutlineClass = classNames('inline-flex items-center justify-center', sizeClasses[size], pill ? 'rounded-full' : 'rounded-md', 'bg-white text-gray-900 dark:bg-gray-900 dark:text-white', // this is limitation - no transparency
|
|
65
70
|
'transition-all duration-75 ease-in group-hover:bg-opacity-0 group-hover:text-inherit');
|
package/index.d.ts
CHANGED
|
@@ -59,9 +59,11 @@ export { default as MediumModal } from './modals/MediumModal.svelte';
|
|
|
59
59
|
export { default as ModalButton } from './modals/ModalButton.svelte';
|
|
60
60
|
export { default as SignInModal } from './modals/SignInModal.svelte';
|
|
61
61
|
export { default as SmallModal } from './modals/SmallModal.svelte';
|
|
62
|
+
export { default as Modal } from './modals/Modal.svelte';
|
|
62
63
|
export { default as MegaMenu } from './megamenu/MegaMenu.svelte';
|
|
63
64
|
export { default as Navbar } from './navbar/Navbar.svelte';
|
|
64
65
|
export { default as NavBrand } from './navbar/NavBrand.svelte';
|
|
66
|
+
export { default as NavDropdown } from './navbar/NavDropdown.svelte';
|
|
65
67
|
export { default as NavHamburger } from './navbar/NavHamburger.svelte';
|
|
66
68
|
export { default as NavLi } from './navbar/NavLi.svelte';
|
|
67
69
|
export { default as NavUl } from './navbar/NavUl.svelte';
|
package/index.js
CHANGED
|
@@ -75,11 +75,13 @@ export { default as MediumModal } from './modals/MediumModal.svelte';
|
|
|
75
75
|
export { default as ModalButton } from './modals/ModalButton.svelte';
|
|
76
76
|
export { default as SignInModal } from './modals/SignInModal.svelte';
|
|
77
77
|
export { default as SmallModal } from './modals/SmallModal.svelte';
|
|
78
|
+
export { default as Modal } from './modals/Modal.svelte';
|
|
78
79
|
// MegaMenu
|
|
79
80
|
export { default as MegaMenu } from './megamenu/MegaMenu.svelte';
|
|
80
81
|
// Navbar
|
|
81
82
|
export { default as Navbar } from './navbar/Navbar.svelte';
|
|
82
83
|
export { default as NavBrand } from './navbar/NavBrand.svelte';
|
|
84
|
+
export { default as NavDropdown } from './navbar/NavDropdown.svelte';
|
|
83
85
|
export { default as NavHamburger } from './navbar/NavHamburger.svelte';
|
|
84
86
|
export { default as NavLi } from './navbar/NavLi.svelte';
|
|
85
87
|
export { default as NavUl } from './navbar/NavUl.svelte';
|
package/megamenu/MegaMenu.svelte
CHANGED
|
@@ -6,7 +6,7 @@ setContext('background', true);
|
|
|
6
6
|
let wrapperClass;
|
|
7
7
|
$: wrapperClass = classNames('border-gray-100 shadow-md dark:border-gray-700', full ? 'border-y' : 'rounded-lg border', full ? 'bg-white dark:bg-gray-800' : 'bg-white dark:bg-gray-700', $$props.class);
|
|
8
8
|
let ulClass;
|
|
9
|
-
$: ulClass = classNames('grid grid-flow-row gap-y-4 md:gap-x-0 auto-col-max auto-row-max', full && $$slots.extra ? '
|
|
9
|
+
$: ulClass = classNames('grid grid-flow-row gap-y-4 md:gap-x-0 auto-col-max auto-row-max', full && $$slots.extra ? 'grid-cols-2' : 'grid-cols-2 md:grid-cols-3', 'text-sm font-medium', 'text-gray-500 dark:text-gray-400', full && $$slots.extra && 'md:w-2/3');
|
|
10
10
|
function init(node) {
|
|
11
11
|
if (full) {
|
|
12
12
|
node.parentElement.classList.add('inset-x-0');
|
|
@@ -0,0 +1,147 @@
|
|
|
1
|
+
<script>import { createEventDispatcher } from 'svelte';
|
|
2
|
+
import { setContext } from 'svelte';
|
|
3
|
+
import CloseButton from '../utils/CloseButton.svelte';
|
|
4
|
+
export let open = false;
|
|
5
|
+
export let title = undefined;
|
|
6
|
+
export let size = 'md';
|
|
7
|
+
export let placement = 'center';
|
|
8
|
+
export let autoclose = true;
|
|
9
|
+
export let backdropClasses = 'bg-gray-900 bg-opacity-50 dark:bg-opacity-80 fixed inset-0 z-40';
|
|
10
|
+
const dispatch = createEventDispatcher();
|
|
11
|
+
setContext('background', true);
|
|
12
|
+
const allPlacementClasses = [
|
|
13
|
+
'justify-start',
|
|
14
|
+
'justify-center',
|
|
15
|
+
'justify-end',
|
|
16
|
+
'items-start',
|
|
17
|
+
'items-center',
|
|
18
|
+
'items-end'
|
|
19
|
+
];
|
|
20
|
+
let backdropEl;
|
|
21
|
+
function init(node, _visible) {
|
|
22
|
+
getPlacementClasses().map((c) => node.classList.add(c));
|
|
23
|
+
if (_visible)
|
|
24
|
+
createBackdrop(node);
|
|
25
|
+
return {
|
|
26
|
+
update(_visible) {
|
|
27
|
+
allPlacementClasses.map((c) => node.classList.remove(c));
|
|
28
|
+
getPlacementClasses().map((c) => node.classList.add(c));
|
|
29
|
+
_visible ? createBackdrop(node) : destroyBackdrop(node);
|
|
30
|
+
},
|
|
31
|
+
destroy() {
|
|
32
|
+
destroyBackdrop(node);
|
|
33
|
+
}
|
|
34
|
+
};
|
|
35
|
+
}
|
|
36
|
+
function handleEscape(e) {
|
|
37
|
+
if (open && e.key === 'Escape')
|
|
38
|
+
open = false;
|
|
39
|
+
}
|
|
40
|
+
function createBackdrop(node) {
|
|
41
|
+
if (!backdropEl) {
|
|
42
|
+
backdropEl = document.createElement('div');
|
|
43
|
+
backdropEl.classList.add(...backdropClasses.split(' '));
|
|
44
|
+
const body = document.querySelector('body');
|
|
45
|
+
body.append(backdropEl);
|
|
46
|
+
body.style.overflow = 'hidden';
|
|
47
|
+
body.addEventListener('keydown', handleEscape, true);
|
|
48
|
+
}
|
|
49
|
+
dispatch('show', node);
|
|
50
|
+
}
|
|
51
|
+
function destroyBackdrop(node) {
|
|
52
|
+
const body = document.querySelector('body');
|
|
53
|
+
body.style.overflow = 'auto';
|
|
54
|
+
body.removeEventListener('keydown', handleEscape, true);
|
|
55
|
+
if (backdropEl)
|
|
56
|
+
backdropEl.remove();
|
|
57
|
+
backdropEl = undefined;
|
|
58
|
+
dispatch('hide', node);
|
|
59
|
+
}
|
|
60
|
+
function getPlacementClasses() {
|
|
61
|
+
switch (placement) {
|
|
62
|
+
// top
|
|
63
|
+
case 'top-left':
|
|
64
|
+
return ['justify-start', 'items-start'];
|
|
65
|
+
case 'top-center':
|
|
66
|
+
return ['justify-center', 'items-start'];
|
|
67
|
+
case 'top-right':
|
|
68
|
+
return ['justify-end', 'items-start'];
|
|
69
|
+
// center
|
|
70
|
+
case 'center-left':
|
|
71
|
+
return ['justify-start', 'items-center'];
|
|
72
|
+
case 'center':
|
|
73
|
+
return ['justify-center', 'items-center'];
|
|
74
|
+
case 'center-right':
|
|
75
|
+
return ['justify-end', 'items-center'];
|
|
76
|
+
// bottom
|
|
77
|
+
case 'bottom-left':
|
|
78
|
+
return ['justify-start', 'items-end'];
|
|
79
|
+
case 'bottom-center':
|
|
80
|
+
return ['justify-center', 'items-end'];
|
|
81
|
+
case 'bottom-right':
|
|
82
|
+
return ['justify-end', 'items-end'];
|
|
83
|
+
default:
|
|
84
|
+
return ['justify-center', 'items-center'];
|
|
85
|
+
}
|
|
86
|
+
}
|
|
87
|
+
const sizes = {
|
|
88
|
+
xs: 'max-w-md',
|
|
89
|
+
sm: 'max-w-lg',
|
|
90
|
+
md: 'max-w-2xl',
|
|
91
|
+
lg: 'max-w-4xl',
|
|
92
|
+
xl: 'max-w-7xl'
|
|
93
|
+
};
|
|
94
|
+
function onButtonsClick({ target }) {
|
|
95
|
+
if (autoclose && target.tagName === 'BUTTON')
|
|
96
|
+
open = !open;
|
|
97
|
+
}
|
|
98
|
+
function hide() {
|
|
99
|
+
open = false;
|
|
100
|
+
}
|
|
101
|
+
</script>
|
|
102
|
+
|
|
103
|
+
<!-- Main modal -->
|
|
104
|
+
<div
|
|
105
|
+
tabindex="-1"
|
|
106
|
+
class="hidden overflow-y-auto overflow-x-hidden fixed top-0 right-0 left-0 z-50 w-full md:inset-0 h-modal md:h-full"
|
|
107
|
+
class:flex={open}
|
|
108
|
+
class:hidden={!open}
|
|
109
|
+
aria-hidden={open ? undefined : 'true'}
|
|
110
|
+
aria-modal={open ? 'true' : undefined}
|
|
111
|
+
role={open ? 'dialog' : undefined}
|
|
112
|
+
use:init={open}
|
|
113
|
+
on:click={onButtonsClick}
|
|
114
|
+
>
|
|
115
|
+
<div class="relative p-4 w-full {sizes[size]} h-full md:h-auto">
|
|
116
|
+
<!-- Modal content -->
|
|
117
|
+
<div
|
|
118
|
+
class="relative bg-white rounded-lg shadow dark:bg-gray-700 text-gray-500 dark:text-gray-400"
|
|
119
|
+
>
|
|
120
|
+
<!-- Modal header -->
|
|
121
|
+
{#if $$slots.header || title}
|
|
122
|
+
<div class="flex justify-between items-start p-4 rounded-t border-b dark:border-gray-600">
|
|
123
|
+
<slot name="header">
|
|
124
|
+
<h3 class="text-xl font-semibold text-gray-900 dark:text-white p-0">
|
|
125
|
+
{title}
|
|
126
|
+
</h3>
|
|
127
|
+
</slot>
|
|
128
|
+
<CloseButton name="Close modal" on:click={hide} />
|
|
129
|
+
</div>
|
|
130
|
+
{:else}
|
|
131
|
+
<CloseButton name="Close modal" class="absolute top-3 right-2.5" on:click={hide} />
|
|
132
|
+
{/if}
|
|
133
|
+
<!-- Modal body -->
|
|
134
|
+
<div class="p-6 space-y-6">
|
|
135
|
+
<slot />
|
|
136
|
+
</div>
|
|
137
|
+
<!-- Modal footer -->
|
|
138
|
+
{#if $$slots.footer}
|
|
139
|
+
<div
|
|
140
|
+
class="flex items-center p-6 space-x-2 rounded-b border-t border-gray-200 dark:border-gray-600"
|
|
141
|
+
>
|
|
142
|
+
<slot name="footer" />
|
|
143
|
+
</div>
|
|
144
|
+
{/if}
|
|
145
|
+
</div>
|
|
146
|
+
</div>
|
|
147
|
+
</div>
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
import { SvelteComponentTyped } from "svelte";
|
|
2
|
+
declare const __propDef: {
|
|
3
|
+
props: {
|
|
4
|
+
open?: boolean;
|
|
5
|
+
title?: string;
|
|
6
|
+
size?: 'xs' | 'sm' | 'md' | 'lg' | 'xl';
|
|
7
|
+
placement?: string;
|
|
8
|
+
autoclose?: boolean;
|
|
9
|
+
backdropClasses?: string;
|
|
10
|
+
};
|
|
11
|
+
events: {
|
|
12
|
+
show: CustomEvent<any>;
|
|
13
|
+
hide: CustomEvent<any>;
|
|
14
|
+
} & {
|
|
15
|
+
[evt: string]: CustomEvent<any>;
|
|
16
|
+
};
|
|
17
|
+
slots: {
|
|
18
|
+
header: {};
|
|
19
|
+
default: {};
|
|
20
|
+
footer: {};
|
|
21
|
+
};
|
|
22
|
+
};
|
|
23
|
+
export declare type ModalProps = typeof __propDef.props;
|
|
24
|
+
export declare type ModalEvents = typeof __propDef.events;
|
|
25
|
+
export declare type ModalSlots = typeof __propDef.slots;
|
|
26
|
+
export default class Modal extends SvelteComponentTyped<ModalProps, ModalEvents, ModalSlots> {
|
|
27
|
+
}
|
|
28
|
+
export {};
|
package/modals/SmallModal.svelte
CHANGED
|
@@ -1,9 +1,11 @@
|
|
|
1
1
|
<script>import { createEventDispatcher } from 'svelte';
|
|
2
2
|
import { modalIdStore } from './modalStores';
|
|
3
3
|
const dispatch = createEventDispatcher();
|
|
4
|
+
import Button from '../buttons/Button.svelte';
|
|
5
|
+
import CloseButton from '../utils/CloseButton.svelte';
|
|
4
6
|
export let id = 'small-modal';
|
|
5
7
|
export let btnColor = 'blue';
|
|
6
|
-
export let textColor = '
|
|
8
|
+
export let textColor = 'blue';
|
|
7
9
|
export let title = 'Terms of Service';
|
|
8
10
|
export let btn1;
|
|
9
11
|
export let btn2;
|
|
@@ -31,110 +33,112 @@ if (textColor === 'blue') {
|
|
|
31
33
|
divClass = 'relative bg-white rounded-lg shadow dark:bg-blue-700';
|
|
32
34
|
headDivClass = 'flex justify-between items-center p-5 rounded-t border-b dark:border-blue-600';
|
|
33
35
|
h3Class = 'text-xl font-medium text-blue-900 dark:text-white';
|
|
34
|
-
buttonClass =
|
|
36
|
+
buttonClass =
|
|
37
|
+
'text-blue-400 bg-transparent hover:bg-blue-200 hover:text-blue-900 rounded-lg text-sm p-1.5 ml-auto inline-flex items-center dark:hover:bg-blue-600 dark:hover:text-white';
|
|
35
38
|
pClass = 'text-base leading-relaxed text-blue-500 dark:text-blue-400';
|
|
36
|
-
footerClass =
|
|
37
|
-
|
|
39
|
+
footerClass =
|
|
40
|
+
'flex items-center p-6 space-x-2 rounded-b border-t border-blue-200 dark:border-blue-600';
|
|
41
|
+
btn2Class =
|
|
42
|
+
'text-blue-500 bg-white hover:bg-blue-100 focus:ring-4 focus:ring-blue-300 rounded-lg border border-blue-200 text-sm font-medium px-5 py-2.5 hover:text-blue-900 focus:z-10 dark:bg-blue-700 dark:text-blue-300 dark:border-blue-500 dark:hover:text-white dark:hover:bg-blue-600';
|
|
38
43
|
}
|
|
39
44
|
else if (textColor === 'gray') {
|
|
40
45
|
divClass = 'relative bg-white rounded-lg shadow dark:bg-gray-700';
|
|
41
46
|
headDivClass = 'flex justify-between items-center p-5 rounded-t border-b dark:border-gray-600';
|
|
42
47
|
h3Class = 'text-xl font-medium text-gray-900 dark:text-white';
|
|
43
|
-
buttonClass =
|
|
48
|
+
buttonClass =
|
|
49
|
+
'text-gray-400 bg-transparent hover:bg-gray-200 hover:text-gray-900 rounded-lg text-sm p-1.5 ml-auto inline-flex items-center dark:hover:bg-gray-600 dark:hover:text-white';
|
|
44
50
|
pClass = 'text-base leading-relaxed text-gray-500 dark:text-gray-400';
|
|
45
|
-
footerClass =
|
|
46
|
-
|
|
51
|
+
footerClass =
|
|
52
|
+
'flex items-center p-6 space-x-2 rounded-b border-t border-gray-200 dark:border-gray-600';
|
|
53
|
+
btn2Class =
|
|
54
|
+
'text-gray-500 bg-white hover:bg-gray-100 focus:ring-4 focus:ring-gray-300 rounded-lg border border-gray-200 text-sm font-medium px-5 py-2.5 hover:text-gray-900 focus:z-10 dark:bg-gray-700 dark:text-gray-300 dark:border-gray-500 dark:hover:text-white dark:hover:bg-gray-600';
|
|
47
55
|
}
|
|
48
56
|
else if (textColor === 'red') {
|
|
49
57
|
divClass = 'relative bg-white rounded-lg shadow dark:bg-red-700';
|
|
50
58
|
headDivClass = 'flex justify-between items-center p-5 rounded-t border-b dark:border-red-600';
|
|
51
59
|
h3Class = 'text-xl font-medium text-red-900 dark:text-white';
|
|
52
|
-
buttonClass =
|
|
60
|
+
buttonClass =
|
|
61
|
+
'text-red-400 bg-transparent hover:bg-red-200 hover:text-red-900 rounded-lg text-sm p-1.5 ml-auto inline-flex items-center dark:hover:bg-red-600 dark:hover:text-white';
|
|
53
62
|
pClass = 'text-base leading-relaxed text-red-500 dark:text-red-400';
|
|
54
|
-
footerClass =
|
|
55
|
-
|
|
63
|
+
footerClass =
|
|
64
|
+
'flex items-center p-6 space-x-2 rounded-b border-t border-red-200 dark:border-red-600';
|
|
65
|
+
btn2Class =
|
|
66
|
+
'text-red-500 bg-white hover:bg-red-100 focus:ring-4 focus:ring-red-300 rounded-lg border border-red-200 text-sm font-medium px-5 py-2.5 hover:text-red-900 focus:z-10 dark:bg-red-700 dark:text-red-300 dark:border-red-500 dark:hover:text-white dark:hover:bg-red-600';
|
|
56
67
|
}
|
|
57
68
|
else if (textColor === 'yellow') {
|
|
58
69
|
divClass = 'relative bg-white rounded-lg shadow dark:bg-yellow-700';
|
|
59
|
-
headDivClass =
|
|
70
|
+
headDivClass =
|
|
71
|
+
'flex justify-between items-center p-5 rounded-t border-b dark:border-yellow-600';
|
|
60
72
|
h3Class = 'text-xl font-medium text-yellow-900 dark:text-white';
|
|
61
|
-
buttonClass =
|
|
73
|
+
buttonClass =
|
|
74
|
+
'text-yellow-400 bg-transparent hover:bg-yellow-200 hover:text-yellow-900 rounded-lg text-sm p-1.5 ml-auto inline-flex items-center dark:hover:bg-yellow-600 dark:hover:text-white';
|
|
62
75
|
pClass = 'text-base leading-relaxed text-yellow-500 dark:text-yellow-400';
|
|
63
|
-
footerClass =
|
|
64
|
-
|
|
76
|
+
footerClass =
|
|
77
|
+
'flex items-center p-6 space-x-2 rounded-b border-t border-yellow-200 dark:border-yellow-600';
|
|
78
|
+
btn2Class =
|
|
79
|
+
'text-yellow-500 bg-white hover:bg-yellow-100 focus:ring-4 focus:ring-yellow-300 rounded-lg border border-yellow-200 text-sm font-medium px-5 py-2.5 hover:text-yellow-900 focus:z-10 dark:bg-yellow-700 dark:text-yellow-300 dark:border-yellow-500 dark:hover:text-white dark:hover:bg-yellow-600';
|
|
65
80
|
}
|
|
66
81
|
else if (textColor === 'green') {
|
|
67
82
|
divClass = 'relative bg-white rounded-lg shadow dark:bg-green-700';
|
|
68
83
|
headDivClass = 'flex justify-between items-center p-5 rounded-t border-b dark:border-green-600';
|
|
69
84
|
h3Class = 'text-xl font-medium text-green-900 dark:text-white';
|
|
70
|
-
buttonClass =
|
|
85
|
+
buttonClass =
|
|
86
|
+
'text-green-400 bg-transparent hover:bg-green-200 hover:text-green-900 rounded-lg text-sm p-1.5 ml-auto inline-flex items-center dark:hover:bg-green-600 dark:hover:text-white';
|
|
71
87
|
pClass = 'text-base leading-relaxed text-green-500 dark:text-green-400';
|
|
72
|
-
footerClass =
|
|
73
|
-
|
|
88
|
+
footerClass =
|
|
89
|
+
'flex items-center p-6 space-x-2 rounded-b border-t border-green-200 dark:border-green-600';
|
|
90
|
+
btn2Class =
|
|
91
|
+
'text-green-500 bg-white hover:bg-green-100 focus:ring-4 focus:ring-green-300 rounded-lg border border-green-200 text-sm font-medium px-5 py-2.5 hover:text-green-900 focus:z-10 dark:bg-green-700 dark:text-green-300 dark:border-green-500 dark:hover:text-white dark:hover:bg-green-600';
|
|
74
92
|
}
|
|
75
93
|
else if (textColor === 'indigo') {
|
|
76
94
|
divClass = 'relative bg-white rounded-lg shadow dark:bg-indigo-700';
|
|
77
|
-
headDivClass =
|
|
95
|
+
headDivClass =
|
|
96
|
+
'flex justify-between items-center p-5 rounded-t border-b dark:border-indigo-600';
|
|
78
97
|
h3Class = 'text-xl font-medium text-indigo-900 dark:text-white';
|
|
79
|
-
buttonClass =
|
|
98
|
+
buttonClass =
|
|
99
|
+
'text-indigo-400 bg-transparent hover:bg-indigo-200 hover:text-indigo-900 rounded-lg text-sm p-1.5 ml-auto inline-flex items-center dark:hover:bg-indigo-600 dark:hover:text-white';
|
|
80
100
|
pClass = 'text-base leading-relaxed text-indigo-500 dark:text-indigo-400';
|
|
81
|
-
footerClass =
|
|
82
|
-
|
|
101
|
+
footerClass =
|
|
102
|
+
'flex items-center p-6 space-x-2 rounded-b border-t border-indigo-200 dark:border-indigo-600';
|
|
103
|
+
btn2Class =
|
|
104
|
+
'text-indigo-500 bg-white hover:bg-indigo-100 focus:ring-4 focus:ring-indigo-300 rounded-lg border border-indigo-200 text-sm font-medium px-5 py-2.5 hover:text-indigo-900 focus:z-10 dark:bg-indigo-700 dark:text-indigo-300 dark:border-indigo-500 dark:hover:text-white dark:hover:bg-indigo-600';
|
|
83
105
|
}
|
|
84
106
|
else if (textColor === 'purple') {
|
|
85
107
|
divClass = 'relative bg-white rounded-lg shadow dark:bg-purple-700';
|
|
86
|
-
headDivClass =
|
|
108
|
+
headDivClass =
|
|
109
|
+
'flex justify-between items-center p-5 rounded-t border-b dark:border-purple-600';
|
|
87
110
|
h3Class = 'text-xl font-medium text-purple-900 dark:text-white';
|
|
88
|
-
buttonClass =
|
|
111
|
+
buttonClass =
|
|
112
|
+
'text-purple-400 bg-transparent hover:bg-purple-200 hover:text-purple-900 rounded-lg text-sm p-1.5 ml-auto inline-flex items-center dark:hover:bg-purple-600 dark:hover:text-white';
|
|
89
113
|
pClass = 'text-base leading-relaxed text-purple-500 dark:text-purple-400';
|
|
90
|
-
footerClass =
|
|
91
|
-
|
|
114
|
+
footerClass =
|
|
115
|
+
'flex items-center p-6 space-x-2 rounded-b border-t border-purple-200 dark:border-purple-600';
|
|
116
|
+
btn2Class =
|
|
117
|
+
'text-purple-500 bg-white hover:bg-purple-100 focus:ring-4 focus:ring-purple-300 rounded-lg border border-purple-200 text-sm font-medium px-5 py-2.5 hover:text-purple-900 focus:z-10 dark:bg-purple-700 dark:text-purple-300 dark:border-purple-500 dark:hover:text-white dark:hover:bg-purple-600';
|
|
92
118
|
}
|
|
93
119
|
else if (textColor === 'pink') {
|
|
94
120
|
divClass = 'relative bg-white rounded-lg shadow dark:bg-pink-700';
|
|
95
121
|
headDivClass = 'flex justify-between items-center p-5 rounded-t border-b dark:border-pink-600';
|
|
96
122
|
h3Class = 'text-xl font-medium text-pink-900 dark:text-white';
|
|
97
|
-
buttonClass =
|
|
123
|
+
buttonClass =
|
|
124
|
+
'text-pink-400 bg-transparent hover:bg-pink-200 hover:text-pink-900 rounded-lg text-sm p-1.5 ml-auto inline-flex items-center dark:hover:bg-pink-600 dark:hover:text-white';
|
|
98
125
|
pClass = 'text-base leading-relaxed text-pink-500 dark:text-pink-400';
|
|
99
|
-
footerClass =
|
|
100
|
-
|
|
126
|
+
footerClass =
|
|
127
|
+
'flex items-center p-6 space-x-2 rounded-b border-t border-pink-200 dark:border-pink-600';
|
|
128
|
+
btn2Class =
|
|
129
|
+
'text-pink-500 bg-white hover:bg-pink-100 focus:ring-4 focus:ring-pink-300 rounded-lg border border-pink-200 text-sm font-medium px-5 py-2.5 hover:text-pink-900 focus:z-10 dark:bg-pink-700 dark:text-pink-300 dark:border-pink-500 dark:hover:text-white dark:hover:bg-pink-600';
|
|
101
130
|
}
|
|
102
131
|
else {
|
|
103
132
|
divClass = 'relative bg-white rounded-lg shadow dark:bg-blue-700';
|
|
104
133
|
headDivClass = 'flex justify-between items-center p-5 rounded-t border-b dark:border-blue-600';
|
|
105
134
|
h3Class = 'text-xl font-medium text-blue-900 dark:text-white';
|
|
106
|
-
buttonClass =
|
|
135
|
+
buttonClass =
|
|
136
|
+
'text-blue-400 bg-transparent hover:bg-blue-200 hover:text-blue-900 rounded-lg text-sm p-1.5 ml-auto inline-flex items-center dark:hover:bg-blue-600 dark:hover:text-white';
|
|
107
137
|
pClass = 'text-base leading-relaxed text-blue-500 dark:text-blue-400';
|
|
108
|
-
footerClass =
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
if (btnColor === 'blue') {
|
|
113
|
-
button1Class = 'text-white bg-blue-700 hover:bg-blue-800 focus:ring-4 focus:ring-blue-300 font-medium rounded-lg text-sm px-5 py-2.5 text-center dark:bg-blue-600 dark:hover:bg-blue-700 dark:focus:ring-blue-800';
|
|
114
|
-
}
|
|
115
|
-
else if (btnColor === 'gray') {
|
|
116
|
-
button1Class = 'text-white bg-gray-700 hover:bg-gray-800 focus:ring-4 focus:ring-gray-300 font-medium rounded-lg text-sm px-5 py-2.5 text-center dark:bg-gray-600 dark:hover:bg-gray-700 dark:focus:ring-gray-800';
|
|
117
|
-
}
|
|
118
|
-
else if (btnColor === 'red') {
|
|
119
|
-
button1Class = 'text-white bg-red-700 hover:bg-red-800 focus:ring-4 focus:ring-red-300 font-medium rounded-lg text-sm px-5 py-2.5 text-center dark:bg-red-600 dark:hover:bg-red-700 dark:focus:ring-red-800';
|
|
120
|
-
}
|
|
121
|
-
else if (btnColor === 'yellow') {
|
|
122
|
-
button1Class = 'text-white bg-yellow-700 hover:bg-yellow-800 focus:ring-4 focus:ring-yellow-300 font-medium rounded-lg text-sm px-5 py-2.5 text-center dark:bg-yellow-600 dark:hover:bg-yellow-700 dark:focus:ring-yellow-800';
|
|
123
|
-
}
|
|
124
|
-
else if (btnColor === 'green') {
|
|
125
|
-
button1Class = 'text-white bg-green-700 hover:bg-green-800 focus:ring-4 focus:ring-green-300 font-medium rounded-lg text-sm px-5 py-2.5 text-center dark:bg-green-600 dark:hover:bg-green-700 dark:focus:ring-green-800';
|
|
126
|
-
}
|
|
127
|
-
else if (btnColor === 'indigo') {
|
|
128
|
-
button1Class = 'text-white bg-indigo-700 hover:bg-indigo-800 focus:ring-4 focus:ring-indigo-300 font-medium rounded-lg text-sm px-5 py-2.5 text-center dark:bg-indigo-600 dark:hover:bg-indigo-700 dark:focus:ring-indigo-800';
|
|
129
|
-
}
|
|
130
|
-
else if (btnColor === 'purple') {
|
|
131
|
-
button1Class = 'text-white bg-purple-700 hover:bg-purple-800 focus:ring-4 focus:ring-purple-300 font-medium rounded-lg text-sm px-5 py-2.5 text-center dark:bg-purple-600 dark:hover:bg-purple-700 dark:focus:ring-purple-800';
|
|
132
|
-
}
|
|
133
|
-
else if (btnColor === 'pink') {
|
|
134
|
-
button1Class = 'text-white bg-pink-700 hover:bg-pink-800 focus:ring-4 focus:ring-pink-300 font-medium rounded-lg text-sm px-5 py-2.5 text-center dark:bg-pink-600 dark:hover:bg-pink-700 dark:focus:ring-pink-800';
|
|
135
|
-
}
|
|
136
|
-
else {
|
|
137
|
-
button1Class = 'text-white bg-blue-700 hover:bg-blue-800 focus:ring-4 focus:ring-blue-300 font-medium rounded-lg text-sm px-5 py-2.5 text-center dark:bg-blue-600 dark:hover:bg-blue-700 dark:focus:ring-blue-800';
|
|
138
|
+
footerClass =
|
|
139
|
+
'flex items-center p-6 space-x-2 rounded-b border-t border-blue-200 dark:border-blue-600';
|
|
140
|
+
btn2Class =
|
|
141
|
+
'text-blue-500 bg-white hover:bg-blue-100 focus:ring-4 focus:ring-blue-300 rounded-lg border border-blue-200 text-sm font-medium px-5 py-2.5 hover:text-blue-900 focus:z-10 dark:bg-blue-700 dark:text-blue-300 dark:border-blue-500 dark:hover:text-white dark:hover:bg-blue-600';
|
|
138
142
|
}
|
|
139
143
|
</script>
|
|
140
144
|
|
|
@@ -157,9 +161,7 @@ else {
|
|
|
157
161
|
<h3 class={h3Class}>
|
|
158
162
|
{title}
|
|
159
163
|
</h3>
|
|
160
|
-
<
|
|
161
|
-
<svg class="w-5 h-5" fill="currentColor" viewBox="0 0 20 20" xmlns="http://www.w3.org/2000/svg"><path fill-rule="evenodd" d="M4.293 4.293a1 1 0 011.414 0L10 8.586l4.293-4.293a1 1 0 111.414 1.414L11.414 10l4.293 4.293a1 1 0 01-1.414 1.414L10 11.414l-4.293 4.293a1 1 0 01-1.414-1.414L8.586 10 4.293 5.707a1 1 0 010-1.414z" clip-rule="evenodd" /></svg>
|
|
162
|
-
</button>
|
|
164
|
+
<CloseButton color={textColor} on:click={closeModal} />
|
|
163
165
|
</div>
|
|
164
166
|
<!-- Modal body -->
|
|
165
167
|
<div class="p-6 space-y-6">
|
|
@@ -170,10 +172,10 @@ else {
|
|
|
170
172
|
<!-- Modal footer -->
|
|
171
173
|
<div class={footerClass}>
|
|
172
174
|
{#if btn1}
|
|
173
|
-
<
|
|
175
|
+
<Button color={btnColor} on:click={handlebtn1}>{btn1}</Button>
|
|
174
176
|
{/if}
|
|
175
177
|
{#if btn2}
|
|
176
|
-
<
|
|
178
|
+
<Button color={textColor} on:click={handlebtn2}>{btn2}</Button>
|
|
177
179
|
{/if}
|
|
178
180
|
</div>
|
|
179
181
|
</div>
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "flowbite-svelte",
|
|
3
|
-
"version": "0.22.
|
|
3
|
+
"version": "0.22.21",
|
|
4
4
|
"description": "Flowbite components for Svelte",
|
|
5
5
|
"main": "index.js",
|
|
6
6
|
"author": {
|
|
@@ -167,6 +167,7 @@
|
|
|
167
167
|
"./modals/ExtraLargeModal.svelte": "./modals/ExtraLargeModal.svelte",
|
|
168
168
|
"./modals/LargeModal.svelte": "./modals/LargeModal.svelte",
|
|
169
169
|
"./modals/MediumModal.svelte": "./modals/MediumModal.svelte",
|
|
170
|
+
"./modals/Modal.svelte": "./modals/Modal.svelte",
|
|
170
171
|
"./modals/ModalButton.svelte": "./modals/ModalButton.svelte",
|
|
171
172
|
"./modals/SignInModal.svelte": "./modals/SignInModal.svelte",
|
|
172
173
|
"./modals/SmallModal.svelte": "./modals/SmallModal.svelte",
|
package/utils/CloseButton.svelte
CHANGED
|
@@ -1,5 +1,8 @@
|
|
|
1
|
-
<script>import
|
|
1
|
+
<script>import { getContext } from 'svelte';
|
|
2
|
+
import classNames from 'classnames';
|
|
3
|
+
const background = getContext('background');
|
|
2
4
|
export let color = 'default';
|
|
5
|
+
export let name = 'Close';
|
|
3
6
|
const colors = {
|
|
4
7
|
gray: 'focus:ring-gray-400 hover:bg-gray-200 dark:hover:bg-gray-300',
|
|
5
8
|
red: 'focus:ring-red-400 hover:bg-red-200 dark:hover:bg-red-300',
|
|
@@ -9,15 +12,18 @@ const colors = {
|
|
|
9
12
|
purple: 'focus:ring-purple-400 hover:bg-purple-200 dark:hover:bg-purple-300',
|
|
10
13
|
pink: 'focus:ring-pink-400 hover:bg-pink-200 dark:hover:bg-pink-300',
|
|
11
14
|
blue: 'focus:ring-blue-400 hover:bg-blue-200 dark:hover:bg-blue-300',
|
|
12
|
-
default: 'focus:ring-gray-300
|
|
15
|
+
default: 'focus:ring-gray-300 '
|
|
13
16
|
};
|
|
14
17
|
let buttonClass = '';
|
|
15
|
-
$: buttonClass = classNames('ml-auto -mx-1 -my-1.5 rounded-lg focus:ring-2 p-1.5 focus:outline-none', colors[color],
|
|
18
|
+
$: buttonClass = classNames('ml-auto -mx-1 -my-1.5 rounded-lg focus:ring-2 p-1.5 focus:outline-none', colors[color], color === 'default' &&
|
|
19
|
+
(background
|
|
20
|
+
? 'hover:bg-gray-100 dark:hover:bg-gray-600'
|
|
21
|
+
: 'hover:bg-gray-100 dark:hover:bg-gray-700'), $$props.class);
|
|
16
22
|
</script>
|
|
17
23
|
|
|
18
24
|
<button on:click type="button" class={buttonClass} aria-label="Close">
|
|
19
25
|
<slot>
|
|
20
|
-
<span class="sr-only">
|
|
26
|
+
<span class="sr-only">{name}</span>
|
|
21
27
|
<svg class="w-5 h-5" fill="currentColor" viewBox="0 0 20 20" xmlns="http://www.w3.org/2000/svg">
|
|
22
28
|
<path
|
|
23
29
|
fill-rule="evenodd"
|