@poirazis/supercomponents-shared 1.1.8 → 1.2.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.
Files changed (48) hide show
  1. package/dist/index.js +21416 -40369
  2. package/dist/index.umd.cjs +19 -26
  3. package/dist/style.css +1 -1
  4. package/package.json +3 -3
  5. package/src/index.js +4 -0
  6. package/src/index.ts +3 -0
  7. package/src/lib/Actions/index.js +3 -3
  8. package/src/lib/SuperButton/SuperButton.svelte +34 -3
  9. package/src/lib/SuperForm/InnerForm.svelte +1 -1
  10. package/src/lib/SuperList/SuperList.svelte +2 -2
  11. package/src/lib/SuperList/drag-handle.svelte +8 -8
  12. package/src/lib/SuperTable/SuperTable.css +8 -3
  13. package/src/lib/SuperTable/SuperTable.svelte +3 -3
  14. package/src/lib/SuperTable/controls/PaginationLimitOffset.svelte +2 -0
  15. package/src/lib/SuperTable/controls/SelectionColumn.svelte +18 -49
  16. package/src/lib/SuperTable/controls/SuperTableWelcome.svelte +1 -1
  17. package/src/lib/SuperTable/overlays/AddNewRowOverlay.svelte +3 -3
  18. package/src/lib/SuperTable/overlays/EmptyResultSetOverlay.svelte +1 -1
  19. package/src/lib/SuperTable/overlays/ScrollbarsOverlay.svelte +43 -43
  20. package/src/lib/SuperTableCells/CellAttachmentExpanded.svelte +1 -1
  21. package/src/lib/SuperTableCells/CellAttachmentSlider.svelte +2 -3
  22. package/src/lib/SuperTableCells/CellBoolean.svelte +1 -1
  23. package/src/lib/SuperTableCells/CellColor.svelte +7 -7
  24. package/src/lib/SuperTableCells/CellCommon.css +1 -1
  25. package/src/lib/SuperTableCells/CellIcon.svelte +7 -7
  26. package/src/lib/SuperTableCells/CellJSON.svelte +2 -2
  27. package/src/lib/SuperTableCells/CellLink.svelte +50 -43
  28. package/src/lib/SuperTableCells/CellLinkAdvanced.svelte +2 -15
  29. package/src/lib/SuperTableCells/CellLinkPickerSelect.svelte +10 -11
  30. package/src/lib/SuperTableCells/CellLinkPickerTree.svelte +4 -2
  31. package/src/lib/SuperTableCells/CellNumber.svelte +24 -5
  32. package/src/lib/SuperTableCells/CellOptions.svelte +11 -23
  33. package/src/lib/SuperTableCells/CellOptionsAdvanced.svelte +5 -5
  34. package/src/lib/SuperTableCells/CellSQLLink.svelte +0 -11
  35. package/src/lib/SuperTableCells/CellSQLLinkPicker.svelte +9 -9
  36. package/src/lib/SuperTableCells/CellString.svelte +3 -3
  37. package/src/lib/SuperTableCells/CellStringMask.svelte +1 -1
  38. package/src/lib/SuperTableCells/CellTags.svelte +151 -108
  39. package/src/lib/SuperTableCells/JSDOC_GUIDE.md +163 -3
  40. package/src/lib/SuperTableCells/types.js +141 -192
  41. package/src/lib/SuperTableColumn/SuperTableColumn.svelte +1 -1
  42. package/src/lib/SuperTableColumn/parts/SuperColumnHeader.svelte +2 -2
  43. package/src/lib/SuperTableColumn/parts/SuperColumnRow.svelte +5 -3
  44. package/src/lib/SuperTabs/SuperTabs.svelte +2 -2
  45. package/src/lib/SuperTree/SuperTree.svelte +84 -38
  46. package/src/lib/UI/elements/Checkbox.svelte +36 -6
  47. package/src/lib/UI/elements/IconButton.svelte +115 -0
  48. package/src/lib/UI/elements/Tooltip.svelte +65 -0
@@ -5,6 +5,7 @@
5
5
  export let checked: boolean = false;
6
6
  export let partial: boolean = false;
7
7
  export let disabled: boolean = false;
8
+ export let hovered: boolean = false;
8
9
 
9
10
  function toggle() {
10
11
  if (disabled) return;
@@ -15,11 +16,11 @@
15
16
 
16
17
  <!-- svelte-ignore a11y-click-events-have-key-events -->
17
18
  <!-- svelte-ignore a11y-no-static-element-interactions -->
18
- <button class:checked on:click={toggle}>
19
+ <button class:checked class:disabled class:hovered on:click={toggle}>
19
20
  {#if checked}
20
- <i class="ph ph-check" />
21
+ <i class="ph ph-check"></i>
21
22
  {:else if partial}
22
- <i class="ph ph-minus" />
23
+ <i class="ph ph-minus"></i>
23
24
  {/if}
24
25
  </button>
25
26
 
@@ -30,20 +31,49 @@
30
31
  display: flex;
31
32
  align-items: center;
32
33
  justify-content: center;
33
- width: 1rem;
34
- height: 1rem;
34
+ width: 0.85rem;
35
+ height: 0.85rem;
35
36
  border-radius: 0.25rem;
36
37
  border: 1px solid var(--spectrum-global-color-gray-500);
37
38
  background-color: var(--spectrum-global-color-gray-50);
39
+ transition: all 0.1s ease-in-out;
38
40
  }
39
41
 
40
42
  button.checked {
41
43
  border-color: var(--spectrum-global-color-gray-700);
42
44
  }
43
45
 
46
+ button.disabled {
47
+ cursor: not-allowed;
48
+ background-color: var(--spectrum-global-color-gray-200);
49
+ border-color: var(--spectrum-global-color-gray-300);
50
+ }
51
+
52
+ button:hover:not(.disabled),
53
+ button.hovered:not(.disabled) {
54
+ border: 1px solid var(--spectrum-global-color-gray-600);
55
+ }
56
+
57
+ button:active {
58
+ background-color: var(--spectrum-global-color-blue-100);
59
+ }
60
+ button:focus {
61
+ border: 1px solid var(--spectrum-global-color-gray-700);
62
+ }
63
+
44
64
  i {
45
- font-size: 0.75rem;
65
+ font-size: 0.65rem;
46
66
  font-weight: 700;
47
67
  color: var(--spectrum-global-color-gray-700);
68
+ animation: scaleIn 0.13s ease-out;
69
+ }
70
+
71
+ @keyframes scaleIn {
72
+ from {
73
+ transform: scale(0);
74
+ }
75
+ to {
76
+ transform: scale(1);
77
+ }
48
78
  }
49
79
  </style>
@@ -0,0 +1,115 @@
1
+ <script lang="ts">
2
+ import { createEventDispatcher, onDestroy } from "svelte";
3
+ import Tooltip from "./Tooltip.svelte";
4
+
5
+ const dispatch = createEventDispatcher();
6
+
7
+ export let icon: string;
8
+ export let disabled: boolean = false;
9
+ export let size: "small" | "medium" | "large" = "medium";
10
+ export let tooltip: string | undefined = undefined;
11
+ export let variant: "primary" | "secondary" | "warning" | "danger" =
12
+ "primary";
13
+
14
+ let buttonElement: HTMLButtonElement;
15
+ let tooltipShow = false;
16
+ let tooltipTimer: number | undefined;
17
+
18
+ const showTooltip = () => {
19
+ if (tooltipTimer) clearTimeout(tooltipTimer);
20
+ tooltipTimer = setTimeout(() => {
21
+ tooltipShow = true;
22
+ }, 750); // delay
23
+ };
24
+
25
+ const hideTooltip = () => {
26
+ if (tooltipTimer) {
27
+ clearTimeout(tooltipTimer);
28
+ tooltipTimer = undefined;
29
+ }
30
+ tooltipShow = false;
31
+ };
32
+
33
+ onDestroy(() => {
34
+ if (tooltipTimer) clearTimeout(tooltipTimer);
35
+ });
36
+
37
+ function handleClick() {
38
+ if (disabled) return;
39
+ dispatch("click");
40
+ }
41
+ </script>
42
+
43
+ <!-- svelte-ignore a11y_consider_explicit_label -->
44
+ <button
45
+ bind:this={buttonElement}
46
+ class="icon-button {size} {variant}"
47
+ class:disabled
48
+ on:click={handleClick}
49
+ on:mouseenter={tooltip ? showTooltip : undefined}
50
+ on:mouseleave={tooltip ? hideTooltip : undefined}
51
+ >
52
+ <i class="ph ph-{icon}"></i>
53
+ </button>
54
+
55
+ {#if tooltip}
56
+ <Tooltip anchor={buttonElement} content={tooltip} show={tooltipShow} />
57
+ {/if}
58
+
59
+ <style>
60
+ .icon-button {
61
+ all: unset;
62
+ cursor: pointer;
63
+ display: flex;
64
+ align-items: center;
65
+ justify-content: center;
66
+ border-radius: 0.25rem;
67
+ transition: all 0.1s ease-in-out;
68
+ background-color: transparent;
69
+ border: 1px solid transparent;
70
+ }
71
+
72
+ .icon-button:hover:not(.disabled) {
73
+ background-color: var(--spectrum-global-color-gray-200);
74
+ }
75
+
76
+ .icon-button:active:not(.disabled) {
77
+ background-color: var(--spectrum-global-color-gray-300);
78
+ }
79
+
80
+ .icon-button.disabled {
81
+ cursor: not-allowed;
82
+ opacity: 0.5;
83
+ }
84
+
85
+ .icon-button.small {
86
+ width: 1.5rem;
87
+ height: 1.5rem;
88
+ }
89
+
90
+ .icon-button.medium {
91
+ width: 2rem;
92
+ height: 2rem;
93
+ }
94
+
95
+ .icon-button.large {
96
+ width: 2.5rem;
97
+ height: 2.5rem;
98
+ }
99
+
100
+ .icon-button.small i {
101
+ font-size: 0.9rem;
102
+ }
103
+
104
+ .icon-button.medium i {
105
+ font-size: 1rem;
106
+ }
107
+
108
+ .icon-button.large i {
109
+ font-size: 1.25rem;
110
+ }
111
+
112
+ .icon-button.warning {
113
+ color: var(--spectrum-global-color-red-400);
114
+ }
115
+ </style>
@@ -0,0 +1,65 @@
1
+ <script>
2
+ import SuperPopover from "../../SuperPopover/SuperPopover.svelte";
3
+ import { onDestroy } from "svelte";
4
+
5
+ export let anchor;
6
+ export let content;
7
+ export let show = false;
8
+ export let delay = 750;
9
+ export let align = "top";
10
+
11
+ let timer;
12
+ let isHovered = false;
13
+
14
+ const startTimer = () => {
15
+ if (timer) clearTimeout(timer);
16
+ timer = setTimeout(() => {
17
+ show = true;
18
+ }, delay);
19
+ };
20
+
21
+ const clearTimer = () => {
22
+ if (timer) {
23
+ clearTimeout(timer);
24
+ timer = null;
25
+ }
26
+ show = false;
27
+ };
28
+
29
+ const handleMouseEnter = () => {
30
+ isHovered = true;
31
+ startTimer();
32
+ };
33
+
34
+ const handleMouseLeave = () => {
35
+ isHovered = false;
36
+ clearTimer();
37
+ };
38
+
39
+ onDestroy(() => {
40
+ clearTimer();
41
+ });
42
+ </script>
43
+
44
+ {#if show}
45
+ <SuperPopover {anchor} {align} open={show} dismissible={false} animate={true}>
46
+ <div class="tooltip-content">
47
+ {content}
48
+ </div>
49
+ </SuperPopover>
50
+ {/if}
51
+
52
+ <style>
53
+ .tooltip-content {
54
+ padding: 8px 12px;
55
+ font-size: 12px;
56
+ line-height: 1.4;
57
+ color: var(--spectrum-global-color-gray-900);
58
+ background-color: var(--spectrum-global-color-gray-50);
59
+ border: 1px solid var(--spectrum-global-color-gray-300);
60
+ border-radius: 4px;
61
+ box-shadow: 0 2px 8px rgba(0, 0, 0, 0.15);
62
+ max-width: 200px;
63
+ word-wrap: break-word;
64
+ }
65
+ </style>