|
5 | 5 | getCopyCodeButton, |
6 | 6 | getCssOrTailwindButton, |
7 | 7 | getCssOrTailwindDropdown, |
| 8 | + getScrollPreview, |
8 | 9 | } from '../lib/getElements'; |
9 | 10 | import {closeDropdown, showPopup} from '../lib/packages/utils'; |
10 | 11 |
|
@@ -83,6 +84,61 @@ function copyHandler(values: Values) { |
83 | 84 | } |
84 | 85 |
|
85 | 86 | export function scrollGenerator() { |
| 87 | + const previewElement = getScrollPreview(); |
| 88 | + |
| 89 | + function applyPreviewStyles(values: Values) { |
| 90 | + if (!previewElement) return; |
| 91 | + |
| 92 | + // Apply styles directly to the preview element |
| 93 | + previewElement.style.setProperty('--scrollbar-width', `${values.width}px`); |
| 94 | + previewElement.style.setProperty( |
| 95 | + '--scrollbar-track-color', |
| 96 | + values.trackColor |
| 97 | + ); |
| 98 | + previewElement.style.setProperty( |
| 99 | + '--scrollbar-thumb-color', |
| 100 | + values.thumbColor |
| 101 | + ); |
| 102 | + previewElement.style.setProperty( |
| 103 | + '--scrollbar-thumb-hover-color', |
| 104 | + values.hoverColor |
| 105 | + ); |
| 106 | + |
| 107 | + const styleTag = document.createElement('style'); |
| 108 | + styleTag.id = 'scroll-preview-style'; |
| 109 | + styleTag.innerHTML = ` |
| 110 | + #scroll-preview::-webkit-scrollbar { |
| 111 | + width: var(--scrollbar-width); |
| 112 | + } |
| 113 | + #scroll-preview::-webkit-scrollbar-track { |
| 114 | + box-shadow: inset 0 0 5px var(--scrollbar-track-color); |
| 115 | + } |
| 116 | + #scroll-preview::-webkit-scrollbar-thumb { |
| 117 | + background: var(--scrollbar-thumb-color); |
| 118 | + } |
| 119 | + #scroll-preview::-webkit-scrollbar-thumb:hover { |
| 120 | + background: var(--scrollbar-thumb-hover-color); |
| 121 | + } |
| 122 | + `; |
| 123 | + |
| 124 | + document.head.appendChild(styleTag); |
| 125 | + } |
| 126 | + |
| 127 | + function updatePreview() { |
| 128 | + applyPreviewStyles({ |
| 129 | + trackColor: trackColor.value, |
| 130 | + thumbColor: thumbColor.value, |
| 131 | + hoverColor: hoverColor.value, |
| 132 | + width: width.value, |
| 133 | + }); |
| 134 | + } |
| 135 | + |
| 136 | + [trackColor, thumbColor, hoverColor, width].forEach((input) => { |
| 137 | + input?.addEventListener('input', updatePreview); |
| 138 | + }); |
| 139 | + |
| 140 | + updatePreview(); |
| 141 | + |
86 | 142 | getCodeButton?.addEventListener('click', () => |
87 | 143 | copyHandler({ |
88 | 144 | trackColor: trackColor.value, |
|
0 commit comments