sveltekit-ui 1.1.17 → 1.1.19
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/dist/Components/Alert/index.svelte +88 -0
- package/dist/Components/Alert/index.svelte.js +101 -0
- package/dist/Components/ArrowToggle/index.svelte +62 -0
- package/dist/Components/Attachment/index.svelte +77 -0
- package/dist/Components/Attachment/index.svelte.js +119 -0
- package/dist/Components/Audio/index.svelte +193 -0
- package/dist/Components/Audio/index.svelte.js +463 -0
- package/dist/Components/AudioEditor/index.svelte +252 -0
- package/dist/Components/AudioEditor/index.svelte.js +977 -0
- package/dist/Components/AudioEditor/samples/alloy-voice-sample.mp3 +0 -0
- package/dist/Components/AudioEditor/samples/echo-voice-sample.mp3 +0 -0
- package/dist/Components/AudioEditor/samples/fable-voice-sample.mp3 +0 -0
- package/dist/Components/AudioEditor/samples/nova-voice-sample.mp3 +0 -0
- package/dist/Components/AudioEditor/samples/onyx-voice-sample.mp3 +0 -0
- package/dist/Components/AudioEditor/samples/shimmer-voice-sample.mp3 +0 -0
- package/dist/Components/AuthCodeInput/index.svelte +85 -0
- package/dist/Components/AuthCodeInput/index.svelte.js +95 -0
- package/dist/Components/Breadcrumbs/index.svelte +27 -0
- package/dist/Components/Breadcrumbs/index.svelte.js +88 -0
- package/dist/Components/Button/index.svelte +721 -0
- package/dist/Components/Button/index.svelte.js +375 -0
- package/dist/Components/Chart/Klines/index.svelte +87 -0
- package/dist/Components/Chart/index.svelte +226 -0
- package/dist/Components/Chart/index.svelte.js +1099 -0
- package/dist/Components/ChartInput/DisplayNav/Klines/index.svelte +150 -0
- package/dist/Components/ChartInput/DisplayNav/Lines/index.svelte +45 -0
- package/dist/Components/ChartInput/DisplayNav/index.svelte +297 -0
- package/dist/Components/ChartInput/EditPanel/index.svelte +155 -0
- package/dist/Components/ChartInput/index.svelte +21 -0
- package/dist/Components/ChartInput/index.svelte.js +671 -0
- package/dist/Components/Checkbox/index.svelte +411 -0
- package/dist/Components/Checkbox/index.svelte.js +178 -0
- package/dist/Components/Code/index.svelte +23 -0
- package/dist/Components/Code/index.svelte.js +33 -0
- package/dist/Components/Color/index.svelte +51 -0
- package/dist/Components/Color/index.svelte.js +31 -0
- package/dist/Components/ColorInput/ChromaPicker/index.svelte +50 -0
- package/dist/Components/ColorInput/ColorPalette/index.svelte +62 -0
- package/dist/Components/ColorInput/OpacityPicker/index.svelte +68 -0
- package/dist/Components/ColorInput/ShowcasePicker/index.svelte +136 -0
- package/dist/Components/ColorInput/index.svelte +70 -0
- package/dist/Components/ColorInput/index.svelte.js +386 -0
- package/dist/Components/ConditionsInput/index.svelte +46 -0
- package/dist/Components/ConditionsInput/index.svelte.js +201 -0
- package/dist/Components/Confetti/index.svelte +98 -0
- package/dist/Components/Confetti/index.svelte.js +94 -0
- package/dist/Components/Content/index.svelte +500 -0
- package/dist/Components/Content/index.svelte.js +910 -0
- package/dist/Components/ContentInput/AttributesInput/CustomConfig/Audio/index.svelte +31 -0
- package/dist/Components/ContentInput/AttributesInput/CustomConfig/Audio/index.svelte.js +258 -0
- package/dist/Components/ContentInput/AttributesInput/CustomConfig/AudioAdvanced/index.svelte +31 -0
- package/dist/Components/ContentInput/AttributesInput/CustomConfig/AudioAdvanced/index.svelte.js +258 -0
- package/dist/Components/ContentInput/AttributesInput/CustomConfig/Dropdown/index.svelte +58 -0
- package/dist/Components/ContentInput/AttributesInput/CustomConfig/Dropdown/index.svelte.js +206 -0
- package/dist/Components/ContentInput/AttributesInput/CustomConfig/Image/index.svelte +28 -0
- package/dist/Components/ContentInput/AttributesInput/CustomConfig/Image/index.svelte.js +224 -0
- package/dist/Components/ContentInput/AttributesInput/CustomConfig/Number/index.svelte +44 -0
- package/dist/Components/ContentInput/AttributesInput/CustomConfig/Number/index.svelte.js +272 -0
- package/dist/Components/ContentInput/AttributesInput/CustomConfig/Qr/index.svelte +41 -0
- package/dist/Components/ContentInput/AttributesInput/CustomConfig/Qr/index.svelte.js +202 -0
- package/dist/Components/ContentInput/AttributesInput/CustomConfig/Slider/index.svelte +19 -0
- package/dist/Components/ContentInput/AttributesInput/CustomConfig/Slider/index.svelte.js +117 -0
- package/dist/Components/ContentInput/AttributesInput/CustomConfig/TableAdvanced/index.svelte +60 -0
- package/dist/Components/ContentInput/AttributesInput/CustomConfig/TableAdvanced/index.svelte.js +542 -0
- package/dist/Components/ContentInput/AttributesInput/CustomConfig/Tag/index.svelte +47 -0
- package/dist/Components/ContentInput/AttributesInput/CustomConfig/Tag/index.svelte.js +185 -0
- package/dist/Components/ContentInput/AttributesInput/CustomConfig/TextInput/index.svelte +35 -0
- package/dist/Components/ContentInput/AttributesInput/CustomConfig/TextInput/index.svelte.js +222 -0
- package/dist/Components/ContentInput/AttributesInput/CustomConfig/TimeInput/index.svelte +20 -0
- package/dist/Components/ContentInput/AttributesInput/CustomConfig/TimeInput/index.svelte.js +84 -0
- package/dist/Components/ContentInput/AttributesInput/DefinedTypeInput/index.svelte +25 -0
- package/dist/Components/ContentInput/AttributesInput/DefinedTypeInput/index.svelte.js +91 -0
- package/dist/Components/ContentInput/AttributesInput/index.svelte +352 -0
- package/dist/Components/ContentInput/AttributesInput/index.svelte.js +1436 -0
- package/dist/Components/ContentInput/ContentPanelBuilder/AddElement/index.svelte +64 -0
- package/dist/Components/ContentInput/ContentPanelBuilder/AddElement/index.svelte.js +97 -0
- package/dist/Components/ContentInput/ContentPanelBuilder/ElementList/index.svelte +184 -0
- package/dist/Components/ContentInput/ContentPanelBuilder/index.svelte +41 -0
- package/dist/Components/ContentInput/index.svelte +78 -0
- package/dist/Components/ContentInput/index.svelte.js +1197 -0
- package/dist/Components/CronInput/index.svelte +78 -0
- package/dist/Components/CronInput/index.svelte.js +198 -0
- package/dist/Components/DataTypeInput/index.svelte +174 -0
- package/dist/Components/DataTypeInput/index.svelte.js +565 -0
- package/dist/Components/Dropdown/index.svelte +116 -0
- package/dist/Components/Dropdown/index.svelte.js +403 -0
- package/dist/Components/EmailAddress/index.svelte +22 -0
- package/dist/Components/EmailAddress/index.svelte.js +45 -0
- package/dist/Components/ErrorX/index.svelte +58 -0
- package/dist/Components/Eye/index.svelte +57 -0
- package/dist/Components/FileInput/index.svelte +146 -0
- package/dist/Components/FileInput/index.svelte.js +225 -0
- package/dist/Components/Hamburger/index.svelte +99 -0
- package/dist/Components/HorizScrollBox/index.svelte +145 -0
- package/dist/Components/Icon/index.svelte +412 -0
- package/dist/Components/Icon/index.svelte.js +116 -0
- package/dist/Components/IconInput/index.svelte +77 -0
- package/dist/Components/IconInput/index.svelte.js +259 -0
- package/dist/Components/Image/index.svelte +126 -0
- package/dist/Components/Image/index.svelte.js +116 -0
- package/dist/Components/ImageEditor/Image/CropBox/index.svelte +165 -0
- package/dist/Components/ImageEditor/Image/index.svelte +104 -0
- package/dist/Components/ImageEditor/Panels/AI/index.svelte +44 -0
- package/dist/Components/ImageEditor/Panels/Crop/index.svelte +96 -0
- package/dist/Components/ImageEditor/Panels/File/QualityPicker/index.svelte +124 -0
- package/dist/Components/ImageEditor/Panels/File/index.svelte +74 -0
- package/dist/Components/ImageEditor/Panels/Filters/index.svelte +46 -0
- package/dist/Components/ImageEditor/Panels/Resize/index.svelte +58 -0
- package/dist/Components/ImageEditor/index.svelte +93 -0
- package/dist/Components/ImageEditor/index.svelte.js +1961 -0
- package/dist/Components/ImageSlider/index.svelte +124 -0
- package/dist/Components/ImageSlider/index.svelte.js +99 -0
- package/dist/Components/InfoBox/index.svelte +89 -0
- package/dist/Components/Json/Nested/index.svelte +157 -0
- package/dist/Components/Json/index.svelte +60 -0
- package/dist/Components/Json/index.svelte.js +594 -0
- package/dist/Components/LabeledItem/index.svelte +102 -0
- package/dist/Components/Layout/NavBar/FullNav/index.svelte +52 -0
- package/dist/Components/Layout/NavBar/NavGuts/index.svelte +87 -0
- package/dist/Components/Layout/NavBar/index.svelte +72 -0
- package/dist/Components/Layout/index.svelte +149 -0
- package/dist/Components/Layout/index.svelte.js +360 -0
- package/dist/Components/Link/index.svelte +47 -0
- package/dist/Components/Link/index.svelte.js +136 -0
- package/dist/Components/LoadingSuccessDiv/index.svelte +51 -0
- package/dist/Components/LoadingWheel/index.svelte +38 -0
- package/dist/Components/Location/index.svelte +79 -0
- package/dist/Components/Location/index.svelte.js +288 -0
- package/dist/Components/LocationInput/index.svelte +197 -0
- package/dist/Components/LocationInput/index.svelte.js +965 -0
- package/dist/Components/Number/index.svelte +47 -0
- package/dist/Components/Number/index.svelte.js +151 -0
- package/dist/Components/PhoneCountryCode/index.svelte +7 -0
- package/dist/Components/PhoneCountryCode/index.svelte.js +260 -0
- package/dist/Components/PhoneNumber/index.svelte +22 -0
- package/dist/Components/PhoneNumber/index.svelte.js +41 -0
- package/dist/Components/Popover/index.svelte +396 -0
- package/dist/Components/Popover/index.svelte.js +319 -0
- package/dist/Components/Qr/index.svelte +85 -0
- package/dist/Components/Qr/index.svelte.js +301 -0
- package/dist/Components/QrInput/index.svelte +47 -0
- package/dist/Components/QrInput/index.svelte.js +218 -0
- package/dist/Components/Slider/index.svelte +239 -0
- package/dist/Components/Slider/index.svelte.js +469 -0
- package/dist/Components/Spacer/index.svelte +41 -0
- package/dist/Components/StoragePicker/DisplayFile/index.svelte +15 -0
- package/dist/Components/StoragePicker/index.svelte +187 -0
- package/dist/Components/StoragePicker/index.svelte.js +592 -0
- package/dist/Components/SuccessCheck/index.svelte +56 -0
- package/dist/Components/TableAdvanced/ColumnInput/index.svelte +117 -0
- package/dist/Components/TableAdvanced/ColumnInput/index.svelte.js +456 -0
- package/dist/Components/TableAdvanced/FilterInput/index.svelte +54 -0
- package/dist/Components/TableAdvanced/FilterInput/index.svelte.js +247 -0
- package/dist/Components/TableAdvanced/Pagination/index.svelte +43 -0
- package/dist/Components/TableAdvanced/Pagination/index.svelte.js +97 -0
- package/dist/Components/TableAdvanced/SortByInput/index.svelte +72 -0
- package/dist/Components/TableAdvanced/SortByInput/index.svelte.js +176 -0
- package/dist/Components/TableAdvanced/index.svelte +275 -0
- package/dist/Components/TableAdvanced/index.svelte.js +1565 -0
- package/dist/Components/Tag/index.svelte +45 -0
- package/dist/Components/Tag/index.svelte.js +76 -0
- package/dist/Components/TextArrayInput/index.svelte +108 -0
- package/dist/Components/TextArrayInput/index.svelte.js +239 -0
- package/dist/Components/TextInput/PasswordTooltip/index.svelte +89 -0
- package/dist/Components/TextInput/index.svelte +223 -0
- package/dist/Components/TextInput/index.svelte.js +447 -0
- package/dist/Components/Time/index.svelte +7 -0
- package/dist/Components/Time/index.svelte.js +38 -0
- package/dist/Components/TimeInput/NumberToggler/index.svelte +34 -0
- package/dist/Components/TimeInput/NumberToggler/index.svelte.js +79 -0
- package/dist/Components/TimeInput/index.js +702 -0
- package/dist/Components/TimeInput/index.svelte +211 -0
- package/dist/Components/TimeInput/index.svelte.js +638 -0
- package/dist/Components/Tooltip/index.svelte +143 -0
- package/dist/Components/TransparentBackground/index.svelte +153 -0
- package/dist/Components/TypingDots/index.svelte +84 -0
- package/dist/Components/VariablePathInput/index.svelte +63 -0
- package/dist/Components/VariablePathInput/index.svelte.js +273 -0
- package/dist/Components/VideoTBD/index.svelte +100 -0
- package/dist/Components/XFollow/index.svelte +42 -0
- package/dist/Components/XPost/index.svelte +52 -0
- package/dist/Components/XPost/index.svelte.js +64 -0
- package/dist/Components/YoutubeChannelButton/index.svelte +82 -0
- package/dist/Components/YoutubeVideo/index.svelte +73 -0
- package/dist/Components/YoutubeVideo/index.svelte.js +54 -0
- package/dist/actions/draggable.js +49 -0
- package/dist/actions/index.js +24 -0
- package/dist/actions/no_spaces.js +33 -0
- package/dist/actions/numbers_only.js +26 -0
- package/dist/actions/scroll_y.js +28 -0
- package/dist/actions/stop_scroll_propagation_y.js +42 -0
- package/dist/actions/swipe_handler.js +295 -0
- package/dist/client/astc_formatting/index.js +1128 -0
- package/dist/client/docs/index.js +7622 -0
- package/dist/client/index.js +735 -0
- package/dist/client/types/index.js +2812 -0
- package/dist/index.js +180 -0
- package/dist/style.css +682 -0
- package/package.json +2 -2
- package/src/lib/Components/Chart/index.svelte.js +11 -2
|
@@ -0,0 +1,223 @@
|
|
|
1
|
+
<script>
|
|
2
|
+
import Button from "../Button/index.svelte"
|
|
3
|
+
import Popover from "../Popover/index.svelte"
|
|
4
|
+
import EyeIcon from "../Eye/index.svelte"
|
|
5
|
+
import PasswordTooltip from "./PasswordTooltip/index.svelte"
|
|
6
|
+
|
|
7
|
+
let { manager } = $props()
|
|
8
|
+
</script>
|
|
9
|
+
|
|
10
|
+
{#snippet text_edit_content()}
|
|
11
|
+
<div>
|
|
12
|
+
<div class="container">
|
|
13
|
+
{#if manager?.label || manager?.error_message}
|
|
14
|
+
<div style="display: inline-flex;">
|
|
15
|
+
{#if manager?.label}
|
|
16
|
+
<label for={manager?.id}>{manager?.label}:</label>
|
|
17
|
+
{/if}
|
|
18
|
+
{#if manager?.error_message}
|
|
19
|
+
<p class="error_text">{manager?.error_message}</p>
|
|
20
|
+
{/if}
|
|
21
|
+
</div>
|
|
22
|
+
{/if}
|
|
23
|
+
<div class="input_container">
|
|
24
|
+
{#if manager?.is_nullable}
|
|
25
|
+
<Button manager={manager?.set_null_button_manager} />
|
|
26
|
+
{/if}
|
|
27
|
+
{#key manager?.rerender_input_trigger}
|
|
28
|
+
{#if manager?.type == "text_area"}
|
|
29
|
+
<textarea
|
|
30
|
+
id={`input_${manager?.id}`}
|
|
31
|
+
class="input_box textarea_sty"
|
|
32
|
+
class:is_disabled={manager?.is_disabled}
|
|
33
|
+
class:error={manager?.error_message && manager?.val && manager?.val.length > 0}
|
|
34
|
+
class:no_resize={!manager?.is_resizable}
|
|
35
|
+
style="max-height: {manager?.max_height}rem; border-radius: {manager?.border_radius}rem; margin-left: {manager?.ml}rem; margin-right: {manager?.mr}rem; margin-top: {manager?.mt}rem; margin-bottom: {manager?.mb}rem;"
|
|
36
|
+
type={manager?.input_type}
|
|
37
|
+
name={manager?.name}
|
|
38
|
+
autocomplete={manager?.autocomplete}
|
|
39
|
+
placeholder={manager?.placeholder}
|
|
40
|
+
required={manager?.is_required}
|
|
41
|
+
readonly={manager?.is_read_only}
|
|
42
|
+
disabled={manager?.is_disabled}
|
|
43
|
+
maxlength={manager?.max_length}
|
|
44
|
+
min={manager?.min}
|
|
45
|
+
max={manager?.max}
|
|
46
|
+
value={manager?.val}
|
|
47
|
+
rows={manager?.rows}
|
|
48
|
+
onblur={() => manager?.handle_blur()}
|
|
49
|
+
oninput={(e) => manager?.set_val(e?.target?.value, true)}
|
|
50
|
+
></textarea>
|
|
51
|
+
{#if manager?.val && manager?.is_show_limit}
|
|
52
|
+
<p class="limit">{manager?.val.length}/{manager?.max_length}</p>
|
|
53
|
+
{/if}
|
|
54
|
+
{:else}
|
|
55
|
+
<input
|
|
56
|
+
id={`input_${manager?.id}`}
|
|
57
|
+
type={manager?.input_type}
|
|
58
|
+
name={manager?.name}
|
|
59
|
+
autocomplete={manager?.autocomplete}
|
|
60
|
+
placeholder={manager?.placeholder}
|
|
61
|
+
{...["number", "tel"].includes(manager?.input_type) ? { pattern: "[0-9]*" } : {}}
|
|
62
|
+
required={manager?.is_required}
|
|
63
|
+
readonly={manager?.is_read_only}
|
|
64
|
+
disabled={manager?.is_disabled}
|
|
65
|
+
class="input_box"
|
|
66
|
+
class:is_disabled={manager?.is_disabled}
|
|
67
|
+
class:error={manager?.error_message && manager?.val && manager?.val.length > 0}
|
|
68
|
+
style="border-radius: {manager?.border_radius}rem; margin-left: {manager?.ml}rem; margin-right: {manager?.mr}rem; margin-top: {manager?.mt}rem; margin-bottom: {manager?.mb}rem;"
|
|
69
|
+
maxlength={manager?.max_length}
|
|
70
|
+
min={manager?.min}
|
|
71
|
+
max={manager?.max}
|
|
72
|
+
value={manager?.val_closurable}
|
|
73
|
+
onblur={() => manager?.handle_blur()}
|
|
74
|
+
oninput={(e) => manager?.set_val(e?.target?.value, true)}
|
|
75
|
+
/>
|
|
76
|
+
{/if}
|
|
77
|
+
{/key}
|
|
78
|
+
{#if manager?.is_text_hidable || manager?.type == "password"}
|
|
79
|
+
<div class="eye_icon">
|
|
80
|
+
<EyeIcon
|
|
81
|
+
is_eye_shown={manager?.is_text_hidden}
|
|
82
|
+
on_change={(input) => manager?.set_is_text_hidden(!!input)}
|
|
83
|
+
eye_color="var(--selected-t)"
|
|
84
|
+
/>
|
|
85
|
+
</div>
|
|
86
|
+
{/if}
|
|
87
|
+
</div>
|
|
88
|
+
{#if manager?.type == "password" && manager?.is_password_tooltip_used && !manager?.is_disabled}
|
|
89
|
+
<PasswordTooltip
|
|
90
|
+
password_min_length={manager?.password_min_length}
|
|
91
|
+
is_password_requires_lowercase={manager?.is_password_requires_lowercase}
|
|
92
|
+
is_password_requires_uppercase={manager?.is_password_requires_uppercase}
|
|
93
|
+
is_password_requires_number={manager?.is_password_requires_number}
|
|
94
|
+
is_password_requires_special_char={manager?.is_password_requires_special_char}
|
|
95
|
+
val={manager?.val}
|
|
96
|
+
/>
|
|
97
|
+
{/if}
|
|
98
|
+
{#if manager?.is_preview_img && manager?.is_image_url}
|
|
99
|
+
<div class="img">
|
|
100
|
+
<img
|
|
101
|
+
class:is_img_disabled={manager?.is_disabled}
|
|
102
|
+
src={manager?.val}
|
|
103
|
+
height={manager?.preview_img_size}
|
|
104
|
+
width={manager?.preview_img_size}
|
|
105
|
+
alt="url rendered"
|
|
106
|
+
/>
|
|
107
|
+
</div>
|
|
108
|
+
{/if}
|
|
109
|
+
</div>
|
|
110
|
+
</div>
|
|
111
|
+
{/snippet}
|
|
112
|
+
|
|
113
|
+
{#if !manager?.is_popover}
|
|
114
|
+
{@render text_edit_content()}
|
|
115
|
+
{:else}
|
|
116
|
+
{#if manager?.is_popover_edit_content}
|
|
117
|
+
<div>
|
|
118
|
+
{#if manager?.label || manager?.error_message}
|
|
119
|
+
<div style="display: inline-flex;">
|
|
120
|
+
{#if manager?.label}
|
|
121
|
+
<p class="label">{manager?.label}:</p>
|
|
122
|
+
{/if}
|
|
123
|
+
{#if manager?.error_message}
|
|
124
|
+
<p class="error_text">{manager?.error_message}</p>
|
|
125
|
+
{/if}
|
|
126
|
+
</div>
|
|
127
|
+
{/if}
|
|
128
|
+
<div style="display: flex; gap: .5rem">
|
|
129
|
+
{#if manager?.val != null}
|
|
130
|
+
<p>{manager?.val}</p>
|
|
131
|
+
{:else}
|
|
132
|
+
<p style="color: var(--warning-t)">Null</p>
|
|
133
|
+
{/if}
|
|
134
|
+
<Button manager={manager?.popover_edit_button_manager} />
|
|
135
|
+
</div>
|
|
136
|
+
</div>
|
|
137
|
+
{/if}
|
|
138
|
+
<Popover manager={manager.popover_manager}>
|
|
139
|
+
{#snippet content()}
|
|
140
|
+
{@render text_edit_content()}
|
|
141
|
+
{/snippet}
|
|
142
|
+
{#snippet footer()}
|
|
143
|
+
<Button manager={manager?.finish_button_manager} />
|
|
144
|
+
{/snippet}
|
|
145
|
+
</Popover>
|
|
146
|
+
{/if}
|
|
147
|
+
|
|
148
|
+
<style>
|
|
149
|
+
.container {
|
|
150
|
+
display: flex;
|
|
151
|
+
flex-direction: column;
|
|
152
|
+
flex: 1;
|
|
153
|
+
}
|
|
154
|
+
.input_container {
|
|
155
|
+
position: relative;
|
|
156
|
+
display: flex;
|
|
157
|
+
gap: 0.5rem;
|
|
158
|
+
flex-direction: column;
|
|
159
|
+
flex: 1;
|
|
160
|
+
}
|
|
161
|
+
.is_disabled {
|
|
162
|
+
color: var(--g12-t);
|
|
163
|
+
}
|
|
164
|
+
.eye_icon {
|
|
165
|
+
position: absolute;
|
|
166
|
+
top: 50%;
|
|
167
|
+
right: 1.3rem;
|
|
168
|
+
transform: translateY(-50%);
|
|
169
|
+
user-select: none;
|
|
170
|
+
min-height: 1rem;
|
|
171
|
+
min-width: 1rem;
|
|
172
|
+
z-index: 1;
|
|
173
|
+
}
|
|
174
|
+
label {
|
|
175
|
+
font-size: 1.2rem;
|
|
176
|
+
font-weight: 600;
|
|
177
|
+
color: var(--g12-t);
|
|
178
|
+
line-height: 1.6rem;
|
|
179
|
+
margin-right: 0.5rem;
|
|
180
|
+
}
|
|
181
|
+
.error {
|
|
182
|
+
box-shadow: inset 0 0 0 1px var(--error-t);
|
|
183
|
+
-webkit-box-shadow: inset 0 0 0 1px var(--error-t);
|
|
184
|
+
}
|
|
185
|
+
.error_text {
|
|
186
|
+
font-size: 1.2rem;
|
|
187
|
+
color: oklch(var(--l5-t) var(--c7) var(--h1));
|
|
188
|
+
line-height: 1.2rem;
|
|
189
|
+
line-height: 1.2rem;
|
|
190
|
+
}
|
|
191
|
+
input {
|
|
192
|
+
box-sizing: border-box !important;
|
|
193
|
+
}
|
|
194
|
+
.img {
|
|
195
|
+
display: flex;
|
|
196
|
+
align-items: left;
|
|
197
|
+
margin: 0.5rem;
|
|
198
|
+
}
|
|
199
|
+
.is_img_disabled {
|
|
200
|
+
filter: grayscale(100%) opacity(40%);
|
|
201
|
+
}
|
|
202
|
+
.textarea_sty {
|
|
203
|
+
padding-top: 0.8rem;
|
|
204
|
+
resize: vertical;
|
|
205
|
+
}
|
|
206
|
+
.no_resize {
|
|
207
|
+
resize: none;
|
|
208
|
+
}
|
|
209
|
+
.limit {
|
|
210
|
+
position: absolute;
|
|
211
|
+
right: 1rem;
|
|
212
|
+
bottom: 0.8rem;
|
|
213
|
+
font-size: 1.2rem;
|
|
214
|
+
color: var(--g8-t);
|
|
215
|
+
font-weight: 300;
|
|
216
|
+
}
|
|
217
|
+
input,
|
|
218
|
+
textarea {
|
|
219
|
+
min-width: 0;
|
|
220
|
+
width: 100%;
|
|
221
|
+
box-sizing: border-box;
|
|
222
|
+
}
|
|
223
|
+
</style>
|
|
@@ -0,0 +1,447 @@
|
|
|
1
|
+
import { create_unique_id, set_closurable } from "../../client/index.js"
|
|
2
|
+
import { create_popover_manager } from "../Popover/index.svelte.js"
|
|
3
|
+
import { create_button_manager } from "../Button/index.svelte.js"
|
|
4
|
+
import { browser } from "$app/environment"
|
|
5
|
+
|
|
6
|
+
export function create_text_input_manager(config) {
|
|
7
|
+
const defaults = {
|
|
8
|
+
text_area: {
|
|
9
|
+
name: "text",
|
|
10
|
+
placeholder: "text",
|
|
11
|
+
autocomplete: "off",
|
|
12
|
+
is_text_hidable: false,
|
|
13
|
+
is_text_hidden: false,
|
|
14
|
+
},
|
|
15
|
+
text: {
|
|
16
|
+
name: "text",
|
|
17
|
+
placeholder: "text",
|
|
18
|
+
autocomplete: "off",
|
|
19
|
+
is_text_hidable: false,
|
|
20
|
+
is_text_hidden: false,
|
|
21
|
+
},
|
|
22
|
+
email: {
|
|
23
|
+
name: "email",
|
|
24
|
+
placeholder: "email",
|
|
25
|
+
autocomplete: "email",
|
|
26
|
+
is_text_hidable: false,
|
|
27
|
+
is_text_hidden: false,
|
|
28
|
+
},
|
|
29
|
+
password: {
|
|
30
|
+
name: "password",
|
|
31
|
+
placeholder: "password",
|
|
32
|
+
autocomplete: "current-password",
|
|
33
|
+
is_text_hidable: true,
|
|
34
|
+
is_text_hidden: true,
|
|
35
|
+
},
|
|
36
|
+
number: {
|
|
37
|
+
name: "number",
|
|
38
|
+
placeholder: "number",
|
|
39
|
+
autocomplete: "off",
|
|
40
|
+
is_text_hidable: false,
|
|
41
|
+
is_text_hidden: false,
|
|
42
|
+
},
|
|
43
|
+
tel: {
|
|
44
|
+
name: "tel",
|
|
45
|
+
placeholder: "telephone",
|
|
46
|
+
autocomplete: "tel-national",
|
|
47
|
+
is_text_hidable: false,
|
|
48
|
+
is_text_hidden: false,
|
|
49
|
+
},
|
|
50
|
+
url: {
|
|
51
|
+
name: "url",
|
|
52
|
+
placeholder: "url",
|
|
53
|
+
autocomplete: "url",
|
|
54
|
+
is_text_hidable: false,
|
|
55
|
+
is_text_hidden: false,
|
|
56
|
+
},
|
|
57
|
+
search: {
|
|
58
|
+
name: "search",
|
|
59
|
+
placeholder: "search",
|
|
60
|
+
autocomplete: "off",
|
|
61
|
+
is_text_hidable: false,
|
|
62
|
+
is_text_hidden: false,
|
|
63
|
+
},
|
|
64
|
+
}
|
|
65
|
+
|
|
66
|
+
const id = create_unique_id(null, 20)
|
|
67
|
+
let val = $state(config?.val)
|
|
68
|
+
let type = $state(config?.type ?? "text")
|
|
69
|
+
let input_type = $state(config?.type ?? "text")
|
|
70
|
+
let error_message = $state(config?.error_message ?? null)
|
|
71
|
+
let is_text_hidden = $state(defaults?.[type]?.is_text_hidden)
|
|
72
|
+
let is_image_url = $state(false)
|
|
73
|
+
let is_valid = $state(false)
|
|
74
|
+
let popover_manager = $state(null)
|
|
75
|
+
let popover_edit_button_manager = $state(null)
|
|
76
|
+
let finish_button_manager = $state(null)
|
|
77
|
+
let rerender_input_trigger = $state(0)
|
|
78
|
+
|
|
79
|
+
let val_closurable = $derived(set_closurable(val, null))
|
|
80
|
+
let is_popover = $derived(set_closurable(config?.is_popover, false))
|
|
81
|
+
let popover_header = $derived(set_closurable(config?.popover_header, null))
|
|
82
|
+
let label = $derived(set_closurable(config?.label, null))
|
|
83
|
+
let name = $derived(set_closurable(config?.name, "checkbox"))
|
|
84
|
+
let is_required = $derived(set_closurable(config?.is_required, false))
|
|
85
|
+
let is_nullable = $derived(set_closurable(config?.is_nullable, false))
|
|
86
|
+
let replace_spaces_with = $derived(set_closurable(config?.replace_spaces_with, null))
|
|
87
|
+
let is_numbers_only = $derived(set_closurable(config?.is_numbers_only, null))
|
|
88
|
+
let is_text_hidable = $derived(set_closurable(config?.is_text_hidable, defaults?.[type]?.is_text_hidable))
|
|
89
|
+
let autocomplete = $derived(set_closurable(config?.autocomplete, defaults?.[type]?.autocomplete))
|
|
90
|
+
let placeholder = $derived(set_closurable(config?.placeholder, defaults?.[type]?.placeholder))
|
|
91
|
+
let max_length = $derived(set_closurable(config?.max_length, 100000))
|
|
92
|
+
let is_disabled = $derived(set_closurable(config?.is_disabled, false))
|
|
93
|
+
let password_min_length = $derived(set_closurable(config?.password_min_length, 7))
|
|
94
|
+
let is_password_requires_lowercase = $derived(set_closurable(config?.is_password_requires_lowercase, true))
|
|
95
|
+
let is_password_requires_uppercase = $derived(set_closurable(config?.is_password_requires_uppercase, false))
|
|
96
|
+
let is_password_requires_number = $derived(set_closurable(config?.is_password_requires_number, false))
|
|
97
|
+
let is_password_requires_special_char = $derived(set_closurable(config?.is_password_requires_special_char, false))
|
|
98
|
+
let is_password_tooltip_used = $derived(set_closurable(config?.is_password_tooltip_used, true))
|
|
99
|
+
let is_preview_img = $derived(set_closurable(config?.is_preview_img, false))
|
|
100
|
+
let preview_img_size = $derived(set_closurable(config?.preview_img_size, 32))
|
|
101
|
+
let min = $derived(set_closurable(config?.min, -9007199254740990))
|
|
102
|
+
let max = $derived(set_closurable(config?.max, 9007199254740990))
|
|
103
|
+
let border_radius = $derived(set_closurable(config?.border_radius, 1))
|
|
104
|
+
let ml = $derived(set_closurable(config?.ml, 0))
|
|
105
|
+
let mr = $derived(set_closurable(config?.mr, 0))
|
|
106
|
+
let mt = $derived(set_closurable(config?.mt, 0))
|
|
107
|
+
let mb = $derived(set_closurable(config?.mb, 0))
|
|
108
|
+
let is_resizable = $derived(set_closurable(config?.is_resizable, false))
|
|
109
|
+
let is_show_limit = $derived(set_closurable(config?.is_show_limit, false))
|
|
110
|
+
let rows = $derived(set_closurable(config?.rows, 5))
|
|
111
|
+
let max_height = $derived(set_closurable(config?.max_height, 30))
|
|
112
|
+
let update_button_text = $derived(set_closurable(config?.update_button_text, null))
|
|
113
|
+
let is_popover_edit_content = $derived(set_closurable(config?.is_popover_edit_content, false))
|
|
114
|
+
|
|
115
|
+
let set_null_button_manager = $state(null)
|
|
116
|
+
|
|
117
|
+
function handle_blur(e) {
|
|
118
|
+
if (e?.type == "input") {
|
|
119
|
+
if (config?.on_blur) {
|
|
120
|
+
config?.on_blur(val)
|
|
121
|
+
}
|
|
122
|
+
}
|
|
123
|
+
}
|
|
124
|
+
|
|
125
|
+
function set_val(val_input, is_iternal = false) {
|
|
126
|
+
error_message = null
|
|
127
|
+
is_valid = false
|
|
128
|
+
if (val_input) {
|
|
129
|
+
if (replace_spaces_with !== null) {
|
|
130
|
+
val_input = val_input.replace(/\s+/g, replace_spaces_with)
|
|
131
|
+
}
|
|
132
|
+
if (val_input && is_numbers_only) {
|
|
133
|
+
val_input = val_input.replace(/\D+/g, "")
|
|
134
|
+
}
|
|
135
|
+
if (val_input && type == "tel") {
|
|
136
|
+
val_input = val_input.replace(/\D+/g, "")
|
|
137
|
+
}
|
|
138
|
+
if (type == "url") {
|
|
139
|
+
const is_valid_url = is_valid_web_url(val_input)
|
|
140
|
+
is_valid = is_valid_url
|
|
141
|
+
if (!is_valid_url) {
|
|
142
|
+
error_message = "Not Valid URL"
|
|
143
|
+
} else if (is_preview_img && is_valid_web_url(val_input)) {
|
|
144
|
+
is_image_url = type == "url" && check_image_url(val_input)
|
|
145
|
+
}
|
|
146
|
+
} else if (type == "password") {
|
|
147
|
+
const is_password_standard_met = is_password_valid(val_input)
|
|
148
|
+
is_valid = is_password_standard_met
|
|
149
|
+
if (!is_password_standard_met) {
|
|
150
|
+
error_message = "Password standard not met"
|
|
151
|
+
}
|
|
152
|
+
} else if (type == "email") {
|
|
153
|
+
const email_regex = /^[^\s@]+@[^\s@]+\.[^\s@]+$/
|
|
154
|
+
const is_valid_email = val_input ? email_regex.test(val_input.toLowerCase()) : false
|
|
155
|
+
is_valid = is_valid_email
|
|
156
|
+
if (!is_valid_email) {
|
|
157
|
+
error_message = "Email standard not met"
|
|
158
|
+
} else {
|
|
159
|
+
is_valid = true
|
|
160
|
+
}
|
|
161
|
+
}
|
|
162
|
+
}
|
|
163
|
+
if (type == "number") {
|
|
164
|
+
val_input = val_input == null ? null : Number(val_input)
|
|
165
|
+
}
|
|
166
|
+
val = val_input
|
|
167
|
+
if (!is_iternal) {
|
|
168
|
+
rerender_input_trigger++
|
|
169
|
+
}
|
|
170
|
+
if (typeof config?.on_change == "function") {
|
|
171
|
+
config?.on_change(val_input)
|
|
172
|
+
}
|
|
173
|
+
}
|
|
174
|
+
|
|
175
|
+
async function check_image_url(val) {
|
|
176
|
+
if (is_preview_img && is_valid_web_url(val)) {
|
|
177
|
+
const res = await fetch(url)
|
|
178
|
+
const buff = await res.blob()
|
|
179
|
+
const is_valid = buff.type.startsWith("image/")
|
|
180
|
+
return is_valid
|
|
181
|
+
} else {
|
|
182
|
+
return false
|
|
183
|
+
}
|
|
184
|
+
}
|
|
185
|
+
|
|
186
|
+
function is_password_valid(val) {
|
|
187
|
+
const contains_lowercase_letter = val ? val.toUpperCase() != val : false
|
|
188
|
+
const contains_uppercase_letter = val ? val.toLowerCase() != val : false
|
|
189
|
+
const contains_number = val ? /[0-9]/.test(val) : false
|
|
190
|
+
const contains_special_char = val ? /[!-\/:-@[-`{-~]/.test(val) : false
|
|
191
|
+
const is_password_long_enough = val ? val.length > password_min_length : false
|
|
192
|
+
const is_password_standard_met =
|
|
193
|
+
(!is_password_requires_lowercase || (is_password_requires_lowercase && contains_lowercase_letter)) &&
|
|
194
|
+
(!is_password_requires_uppercase || (is_password_requires_uppercase && contains_uppercase_letter)) &&
|
|
195
|
+
(!is_password_requires_special_char || (is_password_requires_special_char && contains_special_char)) &&
|
|
196
|
+
(!is_password_requires_number || (is_password_requires_number && contains_number)) &&
|
|
197
|
+
is_password_long_enough
|
|
198
|
+
return is_password_standard_met
|
|
199
|
+
}
|
|
200
|
+
|
|
201
|
+
function is_valid_web_url(url) {
|
|
202
|
+
let reg_ex =
|
|
203
|
+
/^https?:\/\/(?:www\.)?[-a-zA-Z0-9@:%._\+~#=]{1,256}\.[a-zA-Z0-9()]{1,6}\b([-a-zA-Z0-9()@:%_\+.~#?&//=]*)$/gm
|
|
204
|
+
return reg_ex.test(url)
|
|
205
|
+
}
|
|
206
|
+
|
|
207
|
+
function set_focus() {
|
|
208
|
+
if (!is_disabled) {
|
|
209
|
+
if (browser) {
|
|
210
|
+
let input_el = document?.querySelector(`#input_${id}`)
|
|
211
|
+
input_el.focus()
|
|
212
|
+
}
|
|
213
|
+
}
|
|
214
|
+
}
|
|
215
|
+
|
|
216
|
+
function set_is_text_hidden(input) {
|
|
217
|
+
if (typeof window === "undefined") {
|
|
218
|
+
return
|
|
219
|
+
}
|
|
220
|
+
is_text_hidden = !!input
|
|
221
|
+
let input_el = document?.querySelector(`#input_${id}`)
|
|
222
|
+
if (input_el) {
|
|
223
|
+
if (!!input) {
|
|
224
|
+
input_el.type = "password"
|
|
225
|
+
} else {
|
|
226
|
+
input_el.type = type
|
|
227
|
+
}
|
|
228
|
+
}
|
|
229
|
+
}
|
|
230
|
+
|
|
231
|
+
function set_type(input) {
|
|
232
|
+
type = input
|
|
233
|
+
if (typeof window === "undefined") {
|
|
234
|
+
return
|
|
235
|
+
}
|
|
236
|
+
is_text_hidden = !!input
|
|
237
|
+
let input_el = document?.querySelector(`#input_${id}`)
|
|
238
|
+
if (input_el) {
|
|
239
|
+
if (!!input) {
|
|
240
|
+
input_el.type = "text"
|
|
241
|
+
} else {
|
|
242
|
+
input_el.type = input
|
|
243
|
+
}
|
|
244
|
+
}
|
|
245
|
+
}
|
|
246
|
+
|
|
247
|
+
async function finish() {
|
|
248
|
+
if (typeof config?.on_finish == "function") {
|
|
249
|
+
const res = await config?.on_finish(val)
|
|
250
|
+
if (res?.is_success == true) {
|
|
251
|
+
popover_manager.show_temp_message(res?.message ?? "Success", "success")
|
|
252
|
+
} else if (res?.is_success == false) {
|
|
253
|
+
popover_manager.show_temp_message(res?.message ?? "Error", "error", 1800, false)
|
|
254
|
+
} else {
|
|
255
|
+
popover_manager.close()
|
|
256
|
+
}
|
|
257
|
+
} else {
|
|
258
|
+
popover_manager.close()
|
|
259
|
+
}
|
|
260
|
+
}
|
|
261
|
+
|
|
262
|
+
function init(config) {
|
|
263
|
+
val = config?.val ?? null
|
|
264
|
+
type = config?.type ?? "text"
|
|
265
|
+
input_type = config?.is_text_hidden ? "password" : config?.type ?? "text"
|
|
266
|
+
error_message = config?.error_message ?? null
|
|
267
|
+
is_text_hidden = config?.is_text_hidden ?? defaults?.[type]?.is_text_hidden
|
|
268
|
+
popover_manager = create_popover_manager({
|
|
269
|
+
type: "center",
|
|
270
|
+
header: popover_header ?? "Text Editor",
|
|
271
|
+
min_width: 350,
|
|
272
|
+
target_width: 550,
|
|
273
|
+
min_height: 300,
|
|
274
|
+
target_height: 500,
|
|
275
|
+
// anchor_id: () => `button_${main_toggle_button_anchor_id}`, tbd
|
|
276
|
+
})
|
|
277
|
+
popover_edit_button_manager = create_button_manager({
|
|
278
|
+
type: "soft",
|
|
279
|
+
is_uniform: true,
|
|
280
|
+
support_icon: "edit",
|
|
281
|
+
icon_size: 1.6,
|
|
282
|
+
icon_sw: 40,
|
|
283
|
+
min_height: 2,
|
|
284
|
+
border_radius: 0.5,
|
|
285
|
+
is_disabled: is_disabled,
|
|
286
|
+
popover_target: () => `popover_${popover_manager?.id}`,
|
|
287
|
+
})
|
|
288
|
+
set_null_button_manager = create_button_manager({
|
|
289
|
+
type: "outlined",
|
|
290
|
+
text: "Set Null",
|
|
291
|
+
is_compressed: true,
|
|
292
|
+
is_disabled: () => val == null,
|
|
293
|
+
on_click: () => (val = null),
|
|
294
|
+
})
|
|
295
|
+
finish_button_manager = create_button_manager({
|
|
296
|
+
text: update_button_text ?? "Finish",
|
|
297
|
+
on_click: () => finish(),
|
|
298
|
+
})
|
|
299
|
+
}
|
|
300
|
+
|
|
301
|
+
init(config)
|
|
302
|
+
|
|
303
|
+
return {
|
|
304
|
+
id,
|
|
305
|
+
get val() {
|
|
306
|
+
return val
|
|
307
|
+
},
|
|
308
|
+
get val_closurable() {
|
|
309
|
+
return val_closurable
|
|
310
|
+
},
|
|
311
|
+
get type() {
|
|
312
|
+
return type
|
|
313
|
+
},
|
|
314
|
+
get input_type() {
|
|
315
|
+
return input_type
|
|
316
|
+
},
|
|
317
|
+
get name() {
|
|
318
|
+
return name
|
|
319
|
+
},
|
|
320
|
+
get label() {
|
|
321
|
+
return label
|
|
322
|
+
},
|
|
323
|
+
get autocomplete() {
|
|
324
|
+
return autocomplete
|
|
325
|
+
},
|
|
326
|
+
get placeholder() {
|
|
327
|
+
return placeholder
|
|
328
|
+
},
|
|
329
|
+
get is_required() {
|
|
330
|
+
return is_required
|
|
331
|
+
},
|
|
332
|
+
get error_message() {
|
|
333
|
+
return error_message
|
|
334
|
+
},
|
|
335
|
+
get replace_spaces_with() {
|
|
336
|
+
return replace_spaces_with
|
|
337
|
+
},
|
|
338
|
+
get is_numbers_only() {
|
|
339
|
+
return is_numbers_only
|
|
340
|
+
},
|
|
341
|
+
get is_text_hidable() {
|
|
342
|
+
return is_text_hidable
|
|
343
|
+
},
|
|
344
|
+
get is_text_hidden() {
|
|
345
|
+
return is_text_hidden
|
|
346
|
+
},
|
|
347
|
+
get max_length() {
|
|
348
|
+
return max_length
|
|
349
|
+
},
|
|
350
|
+
get is_disabled() {
|
|
351
|
+
return is_disabled
|
|
352
|
+
},
|
|
353
|
+
get password_min_length() {
|
|
354
|
+
return password_min_length
|
|
355
|
+
},
|
|
356
|
+
get is_password_requires_lowercase() {
|
|
357
|
+
return is_password_requires_lowercase
|
|
358
|
+
},
|
|
359
|
+
get is_password_requires_uppercase() {
|
|
360
|
+
return is_password_requires_uppercase
|
|
361
|
+
},
|
|
362
|
+
get is_password_requires_number() {
|
|
363
|
+
return is_password_requires_number
|
|
364
|
+
},
|
|
365
|
+
get is_password_requires_special_char() {
|
|
366
|
+
return is_password_requires_special_char
|
|
367
|
+
},
|
|
368
|
+
get is_password_tooltip_used() {
|
|
369
|
+
return is_password_tooltip_used
|
|
370
|
+
},
|
|
371
|
+
get is_preview_img() {
|
|
372
|
+
return is_preview_img
|
|
373
|
+
},
|
|
374
|
+
get preview_img_size() {
|
|
375
|
+
return preview_img_size
|
|
376
|
+
},
|
|
377
|
+
get min() {
|
|
378
|
+
return min
|
|
379
|
+
},
|
|
380
|
+
get max() {
|
|
381
|
+
return max
|
|
382
|
+
},
|
|
383
|
+
get border_radius() {
|
|
384
|
+
return border_radius
|
|
385
|
+
},
|
|
386
|
+
get ml() {
|
|
387
|
+
return ml
|
|
388
|
+
},
|
|
389
|
+
get mr() {
|
|
390
|
+
return mr
|
|
391
|
+
},
|
|
392
|
+
get mt() {
|
|
393
|
+
return mt
|
|
394
|
+
},
|
|
395
|
+
get mb() {
|
|
396
|
+
return mb
|
|
397
|
+
},
|
|
398
|
+
get is_resizable() {
|
|
399
|
+
return is_resizable
|
|
400
|
+
},
|
|
401
|
+
get is_show_limit() {
|
|
402
|
+
return is_show_limit
|
|
403
|
+
},
|
|
404
|
+
get rows() {
|
|
405
|
+
return rows
|
|
406
|
+
},
|
|
407
|
+
get max_height() {
|
|
408
|
+
return max_height
|
|
409
|
+
},
|
|
410
|
+
get is_valid() {
|
|
411
|
+
return is_valid
|
|
412
|
+
},
|
|
413
|
+
get is_image_url() {
|
|
414
|
+
return is_image_url
|
|
415
|
+
},
|
|
416
|
+
get popover_manager() {
|
|
417
|
+
return popover_manager
|
|
418
|
+
},
|
|
419
|
+
get popover_edit_button_manager() {
|
|
420
|
+
return popover_edit_button_manager
|
|
421
|
+
},
|
|
422
|
+
get finish_button_manager() {
|
|
423
|
+
return finish_button_manager
|
|
424
|
+
},
|
|
425
|
+
get is_popover() {
|
|
426
|
+
return is_popover
|
|
427
|
+
},
|
|
428
|
+
get set_null_button_manager() {
|
|
429
|
+
return set_null_button_manager
|
|
430
|
+
},
|
|
431
|
+
get is_nullable() {
|
|
432
|
+
return is_nullable
|
|
433
|
+
},
|
|
434
|
+
get rerender_input_trigger() {
|
|
435
|
+
return rerender_input_trigger
|
|
436
|
+
},
|
|
437
|
+
get is_popover_edit_content() {
|
|
438
|
+
return is_popover_edit_content
|
|
439
|
+
},
|
|
440
|
+
init,
|
|
441
|
+
handle_blur,
|
|
442
|
+
set_val,
|
|
443
|
+
set_focus,
|
|
444
|
+
set_type,
|
|
445
|
+
set_is_text_hidden,
|
|
446
|
+
}
|
|
447
|
+
}
|