flowbite-svelte 0.24.6 → 0.24.9

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,39 @@
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.24.9](https://github.com/themesberg/flowbite-svelte/compare/v0.24.8...v0.24.9) (2022-08-15)
6
+
7
+
8
+ ### Features
9
+
10
+ * button group ([bb95b98](https://github.com/themesberg/flowbite-svelte/commit/bb95b98c0e4b70f3958c778ac2dc8367c67df8d7))
11
+
12
+
13
+ ### Bug Fixes
14
+
15
+ * dropdown open/close api ([d2aa6f7](https://github.com/themesberg/flowbite-svelte/commit/d2aa6f71e7e804d474eb46e58030097d9bd9962f))
16
+ * dropdown open/close api - docs ([f299c28](https://github.com/themesberg/flowbite-svelte/commit/f299c284a4ef3c9539e17677b815f60dd8d1e6f2))
17
+ * no href on <a> buttons ([ab13df8](https://github.com/themesberg/flowbite-svelte/commit/ab13df85aeac5368383bb708c9cb3146e418066f))
18
+ * window is undefined ([b752882](https://github.com/themesberg/flowbite-svelte/commit/b752882ad0f0f6a7c196223649463903453f48d6))
19
+ * window is undefined/2 ([4c0ca77](https://github.com/themesberg/flowbite-svelte/commit/4c0ca77eddfae2a04d10bc1ea3dc53671864b181))
20
+
21
+ ### [0.24.8](https://github.com/themesberg/flowbite-svelte/compare/v0.24.7...v0.24.8) (2022-08-12)
22
+
23
+
24
+ ### Bug Fixes
25
+
26
+ * change function clickOutside to arrow function ([71e71e0](https://github.com/themesberg/flowbite-svelte/commit/71e71e0e482ad9939f9d135b1608b5cc8d31d899))
27
+ * update createprops and update props ([0739b92](https://github.com/themesberg/flowbite-svelte/commit/0739b9296caddcba85f849b222e6548a961dbd34))
28
+
29
+ ### [0.24.7](https://github.com/themesberg/flowbite-svelte/compare/v0.24.5...v0.24.7) (2022-08-11)
30
+
31
+
32
+ ### Features
33
+
34
+ * add Review component ([67af517](https://github.com/themesberg/flowbite-svelte/commit/67af517e32dfc19c6079e5d1925a234f0162cc34))
35
+ * add Review component ([d41b11d](https://github.com/themesberg/flowbite-svelte/commit/d41b11d4ef00d1d6d0d824d4fcdc9c964a78a7d2))
36
+ * add Review component, page, and prop ([4446e1e](https://github.com/themesberg/flowbite-svelte/commit/4446e1eba3706e291f0cb3812b4ffb61df48eb46))
37
+
5
38
  ### [0.24.6](https://github.com/themesberg/flowbite-svelte/compare/v0.24.5...v0.24.6) (2022-08-11)
6
39
 
7
40
 
@@ -5,6 +5,8 @@ import { ChevronDown, ChevronUp } from 'svelte-heros';
5
5
  export let id = '';
6
6
  export let btnClass = 'flex justify-between items-center py-5 w-full font-medium text-left text-gray-500 border-b border-gray-200 dark:border-gray-700 dark:text-gray-400';
7
7
  export let slotClass = 'py-5 border-b border-gray-200 dark:border-gray-700';
8
+ export let iconSize = 24;
9
+ export let iconClass = 'text-gray-500 sm:w-6 sm:h-6 dark:text-gray-300';
8
10
  export let isOpen = false;
9
11
  export let icons = {
10
12
  up: ChevronUp,
@@ -18,8 +20,6 @@ onMount(() => {
18
20
  const handleToggle = (id) => {
19
21
  isOpen = !isOpen;
20
22
  };
21
- export let iconSize = 24;
22
- export let iconClass = 'text-gray-500 sm:w-6 sm:h-6 dark:text-gray-300';
23
23
  </script>
24
24
 
25
25
  <h2 aria-expanded={isOpen}>
@@ -6,10 +6,10 @@ declare const __propDef: {
6
6
  id?: string;
7
7
  btnClass?: string;
8
8
  slotClass?: string;
9
- isOpen?: boolean;
10
- icons?: AccordionIconType;
11
9
  iconSize?: number;
12
10
  iconClass?: string;
11
+ isOpen?: boolean;
12
+ icons?: AccordionIconType;
13
13
  };
14
14
  events: {
15
15
  [evt: string]: CustomEvent<any>;
@@ -1,5 +1,8 @@
1
- <script>import classNames from 'classnames';
2
- export let divClass = 'inline-flex rounded-md shadow-sm';
1
+ <script>import { setContext } from 'svelte';
2
+ import classNames from 'classnames';
3
+ export let divClass = 'inline-flex rounded-lg shadow-sm';
4
+ setContext('group', true);
5
+ setContext('background', true);
3
6
  </script>
4
7
 
5
8
  <div {...$$restProps} class={classNames(divClass, $$props.class)} role="group">
@@ -1,18 +1,20 @@
1
1
  <script>import classNames from 'classnames';
2
2
  import { getContext } from 'svelte';
3
+ const group = getContext('group');
3
4
  export let pill = false;
4
5
  export let outline = false;
5
6
  export let gradient = false;
6
- export let size = 'md';
7
+ export let size = group ? 'sm' : 'md';
7
8
  export let href = undefined;
8
9
  export let btnClass = undefined;
9
- export let color = 'blue';
10
+ export let type = 'button';
11
+ export let color = group ? (outline ? 'dark' : 'alternative') : 'blue';
10
12
  export let shadow = null;
11
13
  const background = getContext('background');
12
14
  const colorClasses = {
13
15
  blue: 'text-white bg-blue-700 hover:bg-blue-800 focus:ring-blue-300 dark:bg-blue-600 dark:hover:bg-blue-700 dark:focus:ring-blue-800',
14
- dark: 'text-white bg-gray-800 hover:bg-gray-900 focus:ring-gray-300 dark:bg-gray-800 dark:hover:bg-gray-700 dark:focus:ring-gray-700 dark:border-gray-700',
15
- alternative: 'text-gray-900 bg-white border border-gray-200 hover:bg-gray-100 focus:ring-gray-200 dark:bg-gray-800 dark:text-gray-400 dark:border-gray-600 hover:text-blue-700 dark:hover:text-white dark:hover:bg-gray-700 dark:focus:ring-gray-700',
16
+ dark: 'text-white bg-gray-800 hover:bg-gray-900 focus:ring-gray-300 dark:bg-gray-800 dark:hover:bg-gray-700 dark:focus:ring-gray-700',
17
+ alternative: 'text-gray-900 bg-white border border-gray-200 dark:border-gray-600 hover:bg-gray-100 focus:ring-gray-200 dark:bg-gray-800 dark:text-gray-400 hover:text-blue-700 dark:hover:text-white dark:hover:bg-gray-700 dark:focus:ring-gray-700',
16
18
  light: 'text-gray-900 bg-white border border-gray-300 hover:bg-gray-100 focus:ring-gray-200 dark:bg-gray-800 dark:text-white dark:border-gray-600 dark:hover:bg-gray-700 dark:hover:border-gray-600 dark:focus:ring-gray-700',
17
19
  green: 'text-white bg-green-700 hover:bg-green-800 focus:ring-green-300 dark:bg-green-600 dark:hover:bg-green-700 dark:focus:ring-green-800',
18
20
  red: 'text-white bg-red-700 hover:bg-red-800 focus:ring-red-300 dark:bg-red-600 dark:hover:bg-red-700 dark:focus:ring-red-900',
@@ -48,7 +50,7 @@ const coloredShadowClasses = {
48
50
  };
49
51
  const outlineClasses = {
50
52
  blue: 'text-blue-700 hover:text-white border border-blue-700 hover:bg-blue-800 focus:ring-blue-300 dark:border-blue-500 dark:text-blue-500 dark:hover:text-white dark:hover:bg-blue-600 dark:focus:ring-blue-800',
51
- dark: 'text-gray-900 hover:text-white border border-gray-800 hover:bg-gray-900 focus:ring-gray-300 dark:border-gray-600 dark:text-gray-400 dark:hover:text-white dark:hover:bg-gray-600 dark:focus:ring-gray-800',
53
+ dark: 'text-gray-900 hover:text-white border border-gray-800 hover:bg-gray-900 focus:ring-gray-300 dark:border-gray-600 dark:hover:text-white dark:hover:bg-gray-600 dark:focus:ring-gray-800',
52
54
  green: 'text-green-700 hover:text-white border border-green-700 hover:bg-green-800 focus:ring-green-300 dark:border-green-500 dark:text-green-500 dark:hover:text-white dark:hover:bg-green-600 dark:focus:ring-green-800',
53
55
  red: 'text-red-700 hover:text-white border border-red-700 hover:bg-red-800 focus:ring-red-300 dark:border-red-500 dark:text-red-500 dark:hover:text-white dark:hover:bg-red-600 dark:focus:ring-red-900',
54
56
  yellow: 'text-yellow-400 hover:text-white border border-yellow-400 hover:bg-yellow-500 focus:ring-yellow-300 dark:border-yellow-300 dark:text-yellow-300 dark:hover:text-white dark:hover:bg-yellow-400 dark:focus:ring-yellow-900',
@@ -56,11 +58,22 @@ const outlineClasses = {
56
58
  };
57
59
  const sizeClasses = {
58
60
  xs: 'px-3 py-2 text-xs',
59
- sm: 'px-3 py-2 text-sm',
61
+ sm: 'px-4 py-2 text-sm',
60
62
  md: 'px-5 py-2.5 text-sm',
61
63
  lg: 'px-5 py-3 text-base',
62
64
  xl: 'px-6 py-3.5 text-base'
63
65
  };
66
+ function rounded(gradientOutline = false) {
67
+ if (group) {
68
+ return pill
69
+ ? 'first:rounded-l-full last:rounded-r-full'
70
+ : gradientOutline
71
+ ? 'first:rounded-l-md last:rounded-r-md'
72
+ : 'first:rounded-l-lg last:rounded-r-lg';
73
+ }
74
+ return pill ? 'rounded-full' : gradientOutline ? 'rounded-md' : 'rounded-lg';
75
+ }
76
+ const hasBorder = () => outline || color === 'alternative' || color === 'light';
64
77
  let buttonClass;
65
78
  $: buttonClass = btnClass
66
79
  ? btnClass
@@ -68,16 +81,21 @@ $: buttonClass = btnClass
68
81
  ? 'p-0.5'
69
82
  : 'inline-flex items-center justify-center ' + sizeClasses[size], gradient ? gradientClasses[color] : outline ? outlineClasses[color] : colorClasses[color], color === 'alternative' &&
70
83
  (background
71
- ? 'dark:bg-transparent dark:border-gray-700 dark:hover:border-gray-600'
72
- : '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);
84
+ ? 'dark:bg-gray-700 dark:text-white dark:border-gray-700 dark:hover:border-gray-600 dark:hover:bg-gray-600'
85
+ : 'dark:bg-transparent dark:border-gray-800 dark:hover:border-gray-700'), outline &&
86
+ color === 'dark' &&
87
+ (background
88
+ ? 'dark:text-white dark:border-white'
89
+ : 'dark:text-gray-400 dark:border-gray-700'), hasBorder() && group && 'border-l-0 first:border-l', rounded(false), shadow && coloredShadowClasses[shadow], $$props.disabled && 'cursor-not-allowed opacity-50', $$props.class);
73
90
  let gradientOutlineClass;
74
- $: 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
91
+ $: gradientOutlineClass = classNames('inline-flex items-center justify-center', sizeClasses[size], rounded(true), 'bg-white text-gray-900 dark:bg-gray-900 dark:text-white', // this is limitation - no transparency
75
92
  'transition-all duration-75 ease-in group-hover:bg-opacity-0 group-hover:text-inherit');
76
93
  </script>
77
94
 
78
95
  <svelte:element
79
96
  this={href ? 'a' : 'button'}
80
- type={href ? undefined : 'button'}
97
+ type={href ? undefined : type}
98
+ {href}
81
99
  {...$$restProps}
82
100
  class={buttonClass}
83
101
  on:click
@@ -1,4 +1,5 @@
1
1
  import { SvelteComponentTyped } from "svelte";
2
+ import type { ButtonType } from '../types';
2
3
  declare const __propDef: {
3
4
  props: {
4
5
  [x: string]: any;
@@ -8,6 +9,7 @@ declare const __propDef: {
8
9
  size?: 'xs' | 'sm' | 'md' | 'lg' | 'xl';
9
10
  href?: string;
10
11
  btnClass?: string;
12
+ type?: ButtonType;
11
13
  color?: 'alternative' | 'blue' | 'cyan' | 'dark' | 'light' | 'lime' | 'green' | 'pink' | 'red' | 'teal' | 'yellow' | 'purple' | 'purpleToBlue' | 'cyanToBlue' | 'greenToBlue' | 'purpleToPink' | 'pinkToOrange' | 'tealToLime' | 'redToYellow';
12
14
  shadow?: 'blue' | 'green' | 'cyan' | 'teal' | 'lime' | 'red' | 'pink' | 'purple' | null;
13
15
  };
@@ -28,7 +28,7 @@ export let captionClass = 'h-10 bg-gray-300 dark:bg-gray-700 dark:text-white p-2
28
28
  // Indicator
29
29
  export let indicatorClass = 'w-3 h-3 rounded-full bg-gray-100 hover:bg-gray-300 opacity-60';
30
30
  // have a custom transition function that returns the desired transition
31
- function multiple(node, params) {
31
+ const multiple = (node, params) => {
32
32
  switch (transitionType) {
33
33
  case 'slide':
34
34
  return slide(node, params);
@@ -39,7 +39,7 @@ function multiple(node, params) {
39
39
  case 'fade':
40
40
  return fade(node, params);
41
41
  }
42
- }
42
+ };
43
43
  // Slide
44
44
  // export let slideClass: string = 'hidden';
45
45
  let imageShowingIndex = 1;
@@ -9,6 +9,7 @@ export let tooltipArrow = false;
9
9
  export let arrowIcon = true;
10
10
  export let labelClass = 'flex items-center justify-between w-full py-2 pl-3 pr-4 font-medium text-gray-700 border-b border-gray-100 hover:bg-gray-50 md:hover:bg-transparent md:border-0 md:hover:text-blue-700 md:p-0 md:w-auto dark:text-gray-400 dark:hover:text-white dark:focus:text-white dark:border-gray-700 dark:hover:bg-gray-700 md:dark:hover:bg-transparent';
11
11
  export let placement = 'bottom';
12
+ export let open = false;
12
13
  setContext('background', true);
13
14
  const icons = {
14
15
  top: ChevronUp,
@@ -27,6 +28,7 @@ $: icon = icons[placement.split('-')[0]];
27
28
  {placement}
28
29
  arrow={tooltipArrow}
29
30
  trigger="click"
31
+ bind:open
30
32
  >
31
33
  <slot name="trigger">
32
34
  {#if inline}
@@ -9,6 +9,7 @@ declare const __propDef: {
9
9
  arrowIcon?: boolean;
10
10
  labelClass?: string;
11
11
  placement?: 'auto' | Placement;
12
+ open?: boolean;
12
13
  };
13
14
  events: {
14
15
  [evt: string]: CustomEvent<any>;
@@ -9,9 +9,9 @@ export let spanClass = 'inline-flex items-center px-3 text-sm text-gray-900 bg-g
9
9
  export let noBorderInputClass = 'bg-gray-50 border border-gray-300 text-gray-900 rounded-lg focus:ring-blue-500 focus:border-blue-500 block w-full pl-10 dark:bg-gray-700 dark:border-gray-600 dark:placeholder-gray-400 dark:text-white dark:focus:ring-blue-500 dark:focus:border-blue-500';
10
10
  export let noBorderDivClass = 'flex absolute inset-y-0 left-0 items-center pl-3 pointer-events-none';
11
11
  export let iconClass = 'mr-2';
12
- function setType(node) {
12
+ const setType = (node) => {
13
13
  node.type = type;
14
- }
14
+ };
15
15
  </script>
16
16
 
17
17
  {#if noBorder}
@@ -13,9 +13,9 @@ const colorClasses = {
13
13
  // tinted if put in component having its own background
14
14
  let background = getContext('background');
15
15
  // you need to this to avoid 2-way binding
16
- function setType(node) {
16
+ const setType = (node) => {
17
17
  node.type = type;
18
- }
18
+ };
19
19
  </script>
20
20
 
21
21
  <input
package/index.d.ts CHANGED
@@ -7,7 +7,6 @@ export { default as Breadcrumb } from './breadcrumbs/Breadcrumb.svelte';
7
7
  export { default as BreadcrumbItem } from './breadcrumbs/BreadcrumbItem.svelte';
8
8
  export { default as Button } from './buttons/Button.svelte';
9
9
  export { default as ButtonGroup } from './buttongroups/ButtonGroup.svelte';
10
- export { default as ButtonGroupItem } from './buttongroups/ButtonGroupItem.svelte';
11
10
  export { default as Card } from './cards/Card.svelte';
12
11
  export { default as Carousel } from './carousels/Carousel.svelte';
13
12
  export { default as CarouselTransition } from './carousels/CarouselTransition.svelte';
package/index.js CHANGED
@@ -14,7 +14,6 @@ export { default as BreadcrumbItem } from './breadcrumbs/BreadcrumbItem.svelte';
14
14
  export { default as Button } from './buttons/Button.svelte';
15
15
  // Buttongroups
16
16
  export { default as ButtonGroup } from './buttongroups/ButtonGroup.svelte';
17
- export { default as ButtonGroupItem } from './buttongroups/ButtonGroupItem.svelte';
18
17
  // Cards
19
18
  export { default as Card } from './cards/Card.svelte';
20
19
  // Carousels
@@ -7,11 +7,11 @@ 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
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
- function init(node) {
10
+ const init = (node) => {
11
11
  if (full) {
12
12
  node.parentElement.classList.add('inset-x-0');
13
13
  }
14
- }
14
+ };
15
15
  </script>
16
16
 
17
17
  <div class={wrapperClass} use:init>
@@ -18,7 +18,7 @@ const allPlacementClasses = [
18
18
  'items-end'
19
19
  ];
20
20
  let backdropEl;
21
- function init(node, _open) {
21
+ const init = (node, _open) => {
22
22
  getPlacementClasses().map((c) => node.classList.add(c));
23
23
  _open && createBackdrop(node);
24
24
  return {
@@ -31,12 +31,12 @@ function init(node, _open) {
31
31
  destroyBackdrop(node);
32
32
  }
33
33
  };
34
- }
35
- function handleEscape(e) {
34
+ };
35
+ const handleEscape = (e) => {
36
36
  if (open && e.key === 'Escape')
37
37
  open = false;
38
- }
39
- function createBackdrop(node) {
38
+ };
39
+ const createBackdrop = (node) => {
40
40
  if (!backdropEl) {
41
41
  backdropEl = document.createElement('div');
42
42
  backdropEl.classList.add(...backdropClasses.split(' '));
@@ -46,8 +46,8 @@ function createBackdrop(node) {
46
46
  document.addEventListener('keydown', handleEscape, true);
47
47
  }
48
48
  dispatch('show', node);
49
- }
50
- function destroyBackdrop(node) {
49
+ };
50
+ const destroyBackdrop = (node) => {
51
51
  const body = document.querySelector('body');
52
52
  body.style.overflow = 'auto';
53
53
  if (backdropEl)
@@ -55,8 +55,8 @@ function destroyBackdrop(node) {
55
55
  backdropEl = undefined;
56
56
  document.removeEventListener('keydown', handleEscape, true);
57
57
  dispatch('hide', node);
58
- }
59
- function getPlacementClasses() {
58
+ };
59
+ const getPlacementClasses = () => {
60
60
  switch (placement) {
61
61
  // top
62
62
  case 'top-left':
@@ -82,7 +82,7 @@ function getPlacementClasses() {
82
82
  default:
83
83
  return ['justify-center', 'items-center'];
84
84
  }
85
- }
85
+ };
86
86
  const sizes = {
87
87
  xs: 'max-w-md',
88
88
  sm: 'max-w-lg',
@@ -90,13 +90,13 @@ const sizes = {
90
90
  lg: 'max-w-4xl',
91
91
  xl: 'max-w-7xl'
92
92
  };
93
- function onButtonsClick({ target }) {
93
+ const onButtonsClick = ({ target }) => {
94
94
  if (autoclose && target.tagName === 'BUTTON')
95
95
  open = !open;
96
- }
97
- function hide() {
96
+ };
97
+ const hide = () => {
98
98
  open = false;
99
- }
99
+ };
100
100
  </script>
101
101
 
102
102
  <!-- Main modal -->
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "flowbite-svelte",
3
- "version": "0.24.6",
3
+ "version": "0.24.9",
4
4
  "description": "Flowbite components for Svelte",
5
5
  "main": "index.js",
6
6
  "author": {
@@ -12,33 +12,33 @@
12
12
  "homepage": "https://flowbite-svelte.com/",
13
13
  "license": "MIT",
14
14
  "devDependencies": {
15
- "@playwright/test": "^1.23.4",
15
+ "@playwright/test": "^1.25.0",
16
16
  "@sveltejs/adapter-auto": "next",
17
17
  "@sveltejs/kit": "next",
18
- "@typescript-eslint/eslint-plugin": "^5.30.7",
19
- "@typescript-eslint/parser": "^5.30.7",
20
- "autoprefixer": "^10.4.4",
21
- "createprops": "^0.4.4",
22
- "eslint": "^8.20.0",
18
+ "@typescript-eslint/eslint-plugin": "^5.33.0",
19
+ "@typescript-eslint/parser": "^5.33.0",
20
+ "autoprefixer": "^10.4.8",
21
+ "createprops": "^0.4.9",
22
+ "eslint": "^8.21.0",
23
23
  "eslint-config-prettier": "^8.5.0",
24
24
  "eslint-plugin-svelte3": "^4.0.0",
25
25
  "mdsvex": "^0.10.6",
26
- "postcss": "^8.4.14",
26
+ "postcss": "^8.4.16",
27
27
  "postcss-load-config": "3.1.4",
28
28
  "prettier": "^2.7.1",
29
29
  "prettier-plugin-svelte": "^2.7.0",
30
30
  "prism-themes": "^1.9.0",
31
- "svelte": "^3.47.0",
31
+ "svelte": "^3.49.0",
32
32
  "svelte-check": "^2.8.0",
33
- "svelte-flag-icons": "^0.1.0",
33
+ "svelte-flag-icons": "^0.1.1",
34
34
  "svelte-heros": "^2.3.3",
35
35
  "svelte-preprocess": "^4.10.7",
36
- "svelte-sidebar-menu": "^0.8.4",
37
- "svelte2tsx": "^0.5.11",
38
- "tailwindcss": "^3.1.6",
39
- "tslib": "^2.3.1",
36
+ "svelte-sidebar-menu": "^0.8.11",
37
+ "svelte2tsx": "^0.5.13",
38
+ "tailwindcss": "^3.1.8",
39
+ "tslib": "^2.4.0",
40
40
  "typescript": "~4.7.4",
41
- "vite": "^3.0.2"
41
+ "vite": "^3.0.7"
42
42
  },
43
43
  "type": "module",
44
44
  "keywords": [
@@ -81,9 +81,9 @@
81
81
  "url": "https://github.com/themesberg/flowbite-svelte"
82
82
  },
83
83
  "dependencies": {
84
- "@floating-ui/dom": "^0.5.3",
84
+ "@floating-ui/dom": "^0.5.4",
85
85
  "classnames": "^2.3.1",
86
- "flowbite": "^1.4.2"
86
+ "flowbite": "^1.5.2"
87
87
  },
88
88
  "engines": {
89
89
  "npm": ">=7.0.0",
@@ -108,7 +108,6 @@
108
108
  "./breadcrumbs/Breadcrumb.svelte": "./breadcrumbs/Breadcrumb.svelte",
109
109
  "./breadcrumbs/BreadcrumbItem.svelte": "./breadcrumbs/BreadcrumbItem.svelte",
110
110
  "./buttongroups/ButtonGroup.svelte": "./buttongroups/ButtonGroup.svelte",
111
- "./buttongroups/ButtonGroupItem.svelte": "./buttongroups/ButtonGroupItem.svelte",
112
111
  "./buttons/Button.svelte": "./buttons/Button.svelte",
113
112
  "./cards/Card.svelte": "./cards/Card.svelte",
114
113
  "./carousels/Caption.svelte": "./carousels/Caption.svelte",
@@ -1,7 +1,7 @@
1
1
  <script>import { createEventDispatcher } from 'svelte';
2
- export let helper = undefined;
3
2
  export let btnPreClass = 'py-2 px-4 text-sm font-medium text-white bg-gray-800 rounded-l hover:bg-gray-900 dark:bg-gray-800 dark:border-gray-700 dark:text-gray-400 dark:hover:bg-gray-700 dark:hover:text-white';
4
3
  export let btnNextClass = 'py-2 px-4 text-sm font-medium text-white bg-gray-800 rounded-r border-0 border-l border-gray-700 hover:bg-gray-900 dark:bg-gray-800 dark:border-gray-700 dark:text-gray-400 dark:hover:bg-gray-700 dark:hover:text-white';
4
+ export let helper = undefined;
5
5
  const dispatch = createEventDispatcher();
6
6
  const previous = () => {
7
7
  dispatch('previous');
@@ -1,13 +1,10 @@
1
1
  import { SvelteComponentTyped } from "svelte";
2
+ import type { TableDataHelperType } from '../types';
2
3
  declare const __propDef: {
3
4
  props: {
4
- helper?: {
5
- start: number;
6
- end: number;
7
- total: number;
8
- } | undefined;
9
5
  btnPreClass?: string;
10
6
  btnNextClass?: string;
7
+ helper?: TableDataHelperType | undefined;
11
8
  };
12
9
  events: {
13
10
  blur: FocusEvent;
@@ -1,47 +1,43 @@
1
1
  <script>import classNames from 'classnames';
2
2
  export let review;
3
+ export let articleClass = 'md:gap-8 md:grid md:grid-cols-3';
4
+ export let divClass = 'flex items-center mb-6 space-x-4';
5
+ export let imgClass = 'w-10 h-10 rounded-full';
6
+ export let ulClass = 'space-y-4 text-sm text-gray-500 dark:text-gray-400';
7
+ export let liClass = 'flex items-center';
3
8
  </script>
4
9
 
5
- <article class="md:gap-8 md:grid md:grid-cols-3">
10
+ <article class={classNames(articleClass, $$props.classArticle)}>
6
11
  <div>
7
- <div class="flex items-center mb-6 space-x-4">
8
- <img class="w-10 h-10 rounded-full" src={review.imgSrc} alt={review.imgAlt} />
12
+ <div class={classNames(divClass, $$props.classDiv)}>
13
+ <img class={classNames(imgClass, $$props.classImg)} src={review.imgSrc} alt={review.imgAlt} />
9
14
  <div class="space-y-1 font-medium dark:text-white">
10
15
  <p>{review.name}</p>
11
16
  {#if review.address}
12
17
  <div class="flex items-center text-sm text-gray-500 dark:text-gray-400">
13
18
  {#if review.addressIcon}
14
- <svelte:component this={review.addressIcon} />
19
+ <svelte:component this={review.addressIcon} size="16" class="mr-2" />
15
20
  {/if}
16
21
  {review.address}
17
22
  </div>
18
23
  {/if}
19
24
  </div>
20
25
  </div>
21
- {#if review.item || review.option1 || review.option2}
22
- <ul class="space-y-4 text-sm text-gray-500 dark:text-gray-400">
23
- {#if review.item}
24
- <li class="flex items-center">
25
- {#if review.itemIcon}
26
- <svelte:component this={review.addressIcon} />
27
- {/if}
28
- {review.item}
26
+ {#if $$slots.item || $$slots.option1 || $$slots.option2}
27
+ <ul class={classNames(ulClass, $$props.classUl)}>
28
+ {#if $$slots.item}
29
+ <li class={classNames(liClass, $$props.classLi)}>
30
+ <slot name="item" />
29
31
  </li>
30
32
  {/if}
31
- {#if review.option1}
32
- <li class="flex items-center">
33
- {#if review.option1Icon}
34
- <svelte:component this={review.option1Icon} />
35
- {/if}
36
- {review.option1}
33
+ {#if $$slots.option1}
34
+ <li class={classNames(liClass, $$props.classLi)}>
35
+ <slot name="option1" />
37
36
  </li>
38
37
  {/if}
39
- {#if review.option2}
40
- <li class="flex items-center">
41
- {#if review.option2Icon}
42
- <svelte:component this={review.option2Icon} />
43
- {/if}
44
- {review.option2}
38
+ {#if $$slots.option2}
39
+ <li class={classNames(liClass, $$props.classLi)}>
40
+ <slot name="option2" />
45
41
  </li>
46
42
  {/if}
47
43
  </ul>
@@ -50,10 +46,10 @@ export let review;
50
46
  <div class="col-span-2 mt-6 md:mt-0">
51
47
  <div class="flex items-start mb-5">
52
48
  <div class="pr-4">
53
- {#if review.date}
49
+ {#if review.reviewDate}
54
50
  <footer>
55
51
  <p class="mb-2 text-sm text-gray-500 dark:text-gray-400">
56
- Reviewed: {review.date}
52
+ Reviewed: {review.reviewDate}
57
53
  </p>
58
54
  </footer>
59
55
  {/if}
@@ -1,28 +1,22 @@
1
1
  import { SvelteComponentTyped } from "svelte";
2
- import type { SvelteComponent } from 'svelte';
2
+ import type { ReviewType } from '../types';
3
3
  declare const __propDef: {
4
4
  props: {
5
- review: {
6
- name: string;
7
- imgSrc: string;
8
- imgAlt: string;
9
- address: string;
10
- addressIcon: typeof SvelteComponent;
11
- reviewDate: string;
12
- title: string;
13
- rating: number;
14
- item: string;
15
- itemIcon: typeof SvelteComponent;
16
- option1: string;
17
- option1Icon: typeof SvelteComponent;
18
- option2: string;
19
- option2Icon: typeof SvelteComponent;
20
- };
5
+ [x: string]: any;
6
+ review: ReviewType;
7
+ articleClass?: string;
8
+ divClass?: string;
9
+ imgClass?: string;
10
+ ulClass?: string;
11
+ liClass?: string;
21
12
  };
22
13
  events: {
23
14
  [evt: string]: CustomEvent<any>;
24
15
  };
25
16
  slots: {
17
+ item: {};
18
+ option1: {};
19
+ option2: {};
26
20
  default: {};
27
21
  };
28
22
  };
@@ -10,6 +10,7 @@ export let animation = 'duration-300';
10
10
  export let arrow = true;
11
11
  export let tipClass = 'absolute inline-block rounded-lg py-2 px-3 text-sm font-medium shadow-sm';
12
12
  export let tipColor = '';
13
+ export let open = false;
13
14
  const tipStyleClasses = {
14
15
  dark: 'bg-gray-900 text-white dark:bg-gray-700',
15
16
  light: 'border border-gray-200 bg-white text-gray-900',
@@ -24,7 +25,6 @@ const arrowStyleClasses = {
24
25
  };
25
26
  let toolTipClass;
26
27
  $: toolTipClass = classNames(tipClass, animation !== false && `transition-opacity ${animation}`, !open && 'invisible opacity-0', tipStyleClasses[style], $$props.class);
27
- let open = false;
28
28
  const floatingPlacement = (placement) => {
29
29
  return placement === 'auto' ? undefined : placement;
30
30
  };
@@ -47,13 +47,15 @@ const updatePosition = () => computePosition(triggerRef, tooltipRef, {
47
47
  let attachedScroll = false;
48
48
  $: tooltipRef && open && updatePosition();
49
49
  $: {
50
- if (open && !attachedScroll) {
51
- attachedScroll = true;
52
- window.addEventListener('scroll', updatePosition, true);
53
- }
54
- else if (!open && attachedScroll) {
55
- attachedScroll = false;
56
- window.removeEventListener('scroll', updatePosition, true);
50
+ if (tooltipRef && triggerRef) {
51
+ if (open && !attachedScroll) {
52
+ attachedScroll = true;
53
+ window.addEventListener('scroll', updatePosition, true);
54
+ }
55
+ else if (!open && attachedScroll) {
56
+ attachedScroll = false;
57
+ window.removeEventListener('scroll', updatePosition, true);
58
+ }
57
59
  }
58
60
  }
59
61
  onDestroy(() => {
@@ -11,6 +11,7 @@ declare const __propDef: {
11
11
  arrow?: boolean;
12
12
  tipClass?: string;
13
13
  tipColor?: string;
14
+ open?: boolean;
14
15
  };
15
16
  events: {
16
17
  [evt: string]: CustomEvent<any>;
package/types.d.ts CHANGED
@@ -148,6 +148,22 @@ export interface PillTabType {
148
148
  selected: boolean;
149
149
  href: string;
150
150
  }
151
+ export declare type ReviewType = {
152
+ name: string;
153
+ imgSrc: string;
154
+ imgAlt: string;
155
+ address: string | undefined;
156
+ addressIcon: typeof SvelteComponent | undefined;
157
+ reviewDate: string | undefined;
158
+ title: string;
159
+ rating: number;
160
+ item: string | undefined;
161
+ itemIcon: typeof SvelteComponent | undefined;
162
+ option1: string | undefined;
163
+ option1Icon: typeof SvelteComponent | undefined;
164
+ option2: string | undefined;
165
+ option2Icon: typeof SvelteComponent | undefined;
166
+ };
151
167
  export declare type SelectOptionType = {
152
168
  name: string;
153
169
  value: string;
@@ -193,6 +209,11 @@ export interface TabType {
193
209
  href: string;
194
210
  rel?: string;
195
211
  }
212
+ export interface TableDataHelperType {
213
+ start: number;
214
+ end: number;
215
+ total: number;
216
+ }
196
217
  export declare type Textsize = 'text-xs' | 'text-sm' | 'text-base' | 'text-lg' | 'text-xl' | 'text-2xl' | 'text-3xl' | 'text-4xl';
197
218
  export interface TimelineItemType {
198
219
  date: Date | string;
@@ -1,3 +1,3 @@
1
- export declare function clickOutside(node: HTMLElement, callback: () => void): {
1
+ export declare const clickOutside: (node: HTMLElement, callback: () => void) => {
2
2
  destroy(): void;
3
3
  };
@@ -1,4 +1,4 @@
1
- export function clickOutside(node, callback) {
1
+ export const clickOutside = (node, callback) => {
2
2
  const handleClick = (event) => {
3
3
  if (!event?.target)
4
4
  return;
@@ -12,4 +12,4 @@ export function clickOutside(node, callback) {
12
12
  document.removeEventListener('click', handleClick, true);
13
13
  },
14
14
  };
15
- }
15
+ };
@@ -1,40 +0,0 @@
1
- <script>import classNames from 'classnames';
2
- export let type = 'button';
3
- export let btnClass = 'inline-flex items-center py-2 px-4 text-sm font-medium text-gray-900 bg-white first:rounded-l-lg border-t border-b last:rounded-r-md border-l last:border-r border-gray-200 hover:bg-gray-100 hover:text-blue-700 focus:z-10 focus:ring-2 focus:ring-blue-700 focus:text-blue-700 dark:bg-gray-700 dark:border-gray-600 dark:text-white dark:hover:text-white dark:hover:bg-gray-600 dark:focus:ring-blue-500 dark:focus:text-white';
4
- export let outlineClass = 'inline-flex items-center py-2 px-4 text-sm font-medium text-gray-900 bg-transparent first:rounded-l-lg border-t border-b last:rounded-r-md border-l last:border-r border-gray-900 hover:bg-gray-900 hover:text-white focus:z-10 focus:ring-2 focus:ring-gray-500 focus:bg-gray-900 focus:text-white dark:border-white dark:text-white dark:hover:text-white dark:hover:bg-gray-700 dark:focus:bg-gray-700';
5
- export let outline = false;
6
- export let href = '';
7
- if (outline) {
8
- btnClass = outlineClass;
9
- }
10
- </script>
11
-
12
- {#if href}
13
- <a
14
- {href}
15
- {...$$restProps}
16
- class={classNames(btnClass, $$props.class)}
17
- on:click
18
- on:change
19
- on:keydown
20
- on:keyup
21
- on:mouseenter
22
- on:mouseleave><slot /></a
23
- >
24
- {:else}
25
- <button
26
- {type}
27
- {...$$restProps}
28
- class={classNames(btnClass, $$props.class)}
29
- on:click
30
- on:change
31
- on:keydown
32
- on:keyup
33
- on:focus
34
- on:blur
35
- on:mouseenter
36
- on:mouseleave
37
- >
38
- <slot />
39
- </button>
40
- {/if}
@@ -1,33 +0,0 @@
1
- import { SvelteComponentTyped } from "svelte";
2
- import type { ButtonType } from '../types';
3
- declare const __propDef: {
4
- props: {
5
- [x: string]: any;
6
- type?: ButtonType;
7
- btnClass?: string;
8
- outlineClass?: string;
9
- outline?: boolean;
10
- href?: string;
11
- };
12
- events: {
13
- click: MouseEvent;
14
- change: Event;
15
- keydown: KeyboardEvent;
16
- keyup: KeyboardEvent;
17
- mouseenter: MouseEvent;
18
- mouseleave: MouseEvent;
19
- focus: FocusEvent;
20
- blur: FocusEvent;
21
- } & {
22
- [evt: string]: CustomEvent<any>;
23
- };
24
- slots: {
25
- default: {};
26
- };
27
- };
28
- export declare type ButtonGroupItemProps = typeof __propDef.props;
29
- export declare type ButtonGroupItemEvents = typeof __propDef.events;
30
- export declare type ButtonGroupItemSlots = typeof __propDef.slots;
31
- export default class ButtonGroupItem extends SvelteComponentTyped<ButtonGroupItemProps, ButtonGroupItemEvents, ButtonGroupItemSlots> {
32
- }
33
- export {};