sveltekit-ui 1.1.17 → 1.1.18
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 +1090 -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 +1 -1
|
@@ -0,0 +1,403 @@
|
|
|
1
|
+
import { create_unique_id, set_closurable, set_closurable_color } from "../../client/index.js"
|
|
2
|
+
import { create_button_manager } from "../Button/index.svelte.js"
|
|
3
|
+
import { create_popover_manager } from "../Popover/index.svelte.js"
|
|
4
|
+
import { create_text_input_manager } from "../TextInput/index.svelte.js"
|
|
5
|
+
import { create_icon_manager } from "../Icon/index.svelte.js"
|
|
6
|
+
|
|
7
|
+
export function create_dropdown_manager(config) {
|
|
8
|
+
const id = create_unique_id(null, 20)
|
|
9
|
+
let val = $state(null)
|
|
10
|
+
let options = $state(null)
|
|
11
|
+
|
|
12
|
+
let label = $derived(set_closurable(config?.label, null))
|
|
13
|
+
let type = $derived(set_closurable(config?.type, "dropdown")) // dropdown, horiz_selector
|
|
14
|
+
let is_collapsed = $derived(set_closurable(config?.is_collapsed, false))
|
|
15
|
+
let val_key = $derived(set_closurable(config?.val_key, "key"))
|
|
16
|
+
let row_display_keys = $derived(set_closurable(config?.row_display_keys, ["name"]))
|
|
17
|
+
let button_display_keys = $derived(set_closurable(config?.button_display_keys, ["name"]))
|
|
18
|
+
let is_multiselect = $derived(set_closurable(config?.is_multiselect, false))
|
|
19
|
+
let is_set_null_button = $derived(set_closurable(config?.is_set_null_button, false))
|
|
20
|
+
let is_disabled = $derived(set_closurable(config?.is_disabled, false))
|
|
21
|
+
let header = $derived(set_closurable(config?.header, null))
|
|
22
|
+
let header_icon = $derived(set_closurable(config?.header_icon, null))
|
|
23
|
+
let header_icon_deg = $derived(set_closurable(config?.header_icon_deg, 0))
|
|
24
|
+
let min_header_width = $derived(set_closurable(config?.min_header_width, 2))
|
|
25
|
+
let spacer_color = $derived(set_closurable_color(config?.spacer_color, "var(--shadow2-t)"))
|
|
26
|
+
let error_message = $derived(set_closurable(config?.error_message, null))
|
|
27
|
+
let placeholder = $derived(set_closurable(config?.placeholder, "Select"))
|
|
28
|
+
let target_width = $derived(set_closurable(config?.target_width, 250))
|
|
29
|
+
let target_height = $derived(set_closurable(config?.target_height, 200))
|
|
30
|
+
let font_weight = $derived(set_closurable(config?.font_weight, 500))
|
|
31
|
+
let font_size = $derived(set_closurable(config?.font_size, 1.2))
|
|
32
|
+
let is_show_x = $derived(set_closurable(config?.is_show_x, false))
|
|
33
|
+
let text_align = $derived(set_closurable(config?.text_align, "left"))
|
|
34
|
+
let justify_content = $derived(set_closurable(config?.justify_content, "space-between"))
|
|
35
|
+
let is_show_arrow = $derived(set_closurable(config?.is_show_arrow, true))
|
|
36
|
+
let button_type = $derived(set_closurable(config?.button_type, "outlined"))
|
|
37
|
+
let selected_font_size = $derived(set_closurable(config?.selected_font_size, null))
|
|
38
|
+
let is_button_compressed = $derived(set_closurable(config?.is_button_compressed, false))
|
|
39
|
+
let is_searchable = $derived(set_closurable(config?.is_searchable, false))
|
|
40
|
+
let is_hide_button = $derived(set_closurable(config?.is_hide_button, false))
|
|
41
|
+
let anchor_id = $derived(set_closurable(config?.anchor_id, null))
|
|
42
|
+
let ml = $derived(set_closurable(config?.ml, 0))
|
|
43
|
+
let mr = $derived(set_closurable(config?.mr, 0))
|
|
44
|
+
let mt = $derived(set_closurable(config?.mt, 0))
|
|
45
|
+
let mb = $derived(set_closurable(config?.mb, 0))
|
|
46
|
+
let item_mb = $derived(set_closurable(config?.item_mb, 0))
|
|
47
|
+
|
|
48
|
+
let filtered_button_managers = $state(null)
|
|
49
|
+
let search_text_input_manager = $state(null)
|
|
50
|
+
let popover_manager = $state(null)
|
|
51
|
+
let toggle_button_manager = $state(null)
|
|
52
|
+
let clear_button_manager = $state(null)
|
|
53
|
+
let toggle_button_text = $derived(get_button_text())
|
|
54
|
+
let header_icon_manager = $state(null)
|
|
55
|
+
let search_requests_is_loading = $state([])
|
|
56
|
+
|
|
57
|
+
function set_filtered_button_managers(search_val = null) {
|
|
58
|
+
let filtered_button_managers_loc = []
|
|
59
|
+
if (Array.isArray(options) && options.length > 0) {
|
|
60
|
+
for (let option of options) {
|
|
61
|
+
if (
|
|
62
|
+
[null, ""].includes(search_val) ||
|
|
63
|
+
(option?.[val_key] && option?.[val_key].length > 0 && search_val && option?.[val_key].includes(search_val)) ||
|
|
64
|
+
row_display_keys.some((h) => option?.[h].includes(search_val))
|
|
65
|
+
) {
|
|
66
|
+
filtered_button_managers_loc.push(
|
|
67
|
+
create_button_manager({
|
|
68
|
+
type: "soft",
|
|
69
|
+
selected_type: () =>
|
|
70
|
+
val != null &&
|
|
71
|
+
(option?.[val_key] == val || (Array.isArray(val) && val.some((h) => h === option?.[val_key])))
|
|
72
|
+
? "half_selected"
|
|
73
|
+
: null,
|
|
74
|
+
text: Array.isArray(row_display_keys) ? row_display_keys.map((h) => option?.[h]).join(" ") : option?.name,
|
|
75
|
+
text_align: text_align,
|
|
76
|
+
font_size: font_size,
|
|
77
|
+
font_weight: font_weight,
|
|
78
|
+
is_compressed: type == "horiz_selector",
|
|
79
|
+
is_no_wrap: type == "horiz_selector",
|
|
80
|
+
mb: item_mb,
|
|
81
|
+
l: 2,
|
|
82
|
+
c: 1,
|
|
83
|
+
on_click: () => item_clicked(option),
|
|
84
|
+
})
|
|
85
|
+
)
|
|
86
|
+
}
|
|
87
|
+
}
|
|
88
|
+
}
|
|
89
|
+
filtered_button_managers = filtered_button_managers_loc
|
|
90
|
+
}
|
|
91
|
+
|
|
92
|
+
function set_val(input) {
|
|
93
|
+
val = set_closurable(input)
|
|
94
|
+
}
|
|
95
|
+
|
|
96
|
+
function get_button_text() {
|
|
97
|
+
let button_text_loc = placeholder ?? "Select"
|
|
98
|
+
if (!is_multiselect && val !== "" && val !== null && val !== undefined && options && options.length > 0) {
|
|
99
|
+
const i = options.findIndex((h) => h?.[val_key] == val)
|
|
100
|
+
button_text_loc =
|
|
101
|
+
i > -1 && options && options[i]
|
|
102
|
+
? Array.isArray(button_display_keys)
|
|
103
|
+
? button_display_keys.map((h) => options[i][h] ?? "").join(" ")
|
|
104
|
+
: val
|
|
105
|
+
: val
|
|
106
|
+
} else if (is_multiselect && val && Array.isArray(val) && val.length > 0) {
|
|
107
|
+
const i = options.findIndex((h) => h?.[val_key] == val?.[0])
|
|
108
|
+
button_text_loc =
|
|
109
|
+
i > -1 && options && options[i]
|
|
110
|
+
? Array.isArray(button_display_keys)
|
|
111
|
+
? button_display_keys.map((h) => options[i][h] ?? "").join(" ")
|
|
112
|
+
: val
|
|
113
|
+
: val
|
|
114
|
+
if (val.length > 1) {
|
|
115
|
+
button_text_loc = `${button_text_loc} and ${val.length - 1} more`
|
|
116
|
+
}
|
|
117
|
+
} else if (Array.isArray(val)) {
|
|
118
|
+
button_text_loc = `${val.length} items`
|
|
119
|
+
} else if (val) {
|
|
120
|
+
button_text_loc = val
|
|
121
|
+
}
|
|
122
|
+
return button_text_loc
|
|
123
|
+
}
|
|
124
|
+
|
|
125
|
+
function item_clicked(item) {
|
|
126
|
+
if (item == null || item?.[val_key] == null) {
|
|
127
|
+
val = null
|
|
128
|
+
} else if (is_multiselect) {
|
|
129
|
+
if (Array.isArray(val)) {
|
|
130
|
+
if (val.some((h) => h == item?.[val_key])) {
|
|
131
|
+
val = [...val].filter((h) => h != item?.[val_key])
|
|
132
|
+
} else {
|
|
133
|
+
val = [...val, item?.[val_key]]
|
|
134
|
+
}
|
|
135
|
+
} else {
|
|
136
|
+
val = [item?.[val_key]]
|
|
137
|
+
}
|
|
138
|
+
} else {
|
|
139
|
+
if (val == item?.[val_key]) {
|
|
140
|
+
val = null
|
|
141
|
+
} else {
|
|
142
|
+
val = item?.[val_key]
|
|
143
|
+
popover_manager.close()
|
|
144
|
+
}
|
|
145
|
+
}
|
|
146
|
+
if (config?.on_item_click) {
|
|
147
|
+
config?.on_item_click(
|
|
148
|
+
item
|
|
149
|
+
? {
|
|
150
|
+
...item,
|
|
151
|
+
}
|
|
152
|
+
: null
|
|
153
|
+
)
|
|
154
|
+
}
|
|
155
|
+
if (config?.on_change) {
|
|
156
|
+
config?.on_change(val)
|
|
157
|
+
}
|
|
158
|
+
}
|
|
159
|
+
|
|
160
|
+
function handle_dropdown_opened() {
|
|
161
|
+
if (config?.on_dropdown_opened) {
|
|
162
|
+
config?.on_dropdown_opened()
|
|
163
|
+
}
|
|
164
|
+
}
|
|
165
|
+
|
|
166
|
+
function handle_dropdown_closed() {
|
|
167
|
+
if (config?.on_dropdown_closed) {
|
|
168
|
+
config?.on_dropdown_closed()
|
|
169
|
+
}
|
|
170
|
+
}
|
|
171
|
+
|
|
172
|
+
function set_options(input) {
|
|
173
|
+
let clean_options = []
|
|
174
|
+
if (Array.isArray(input)) {
|
|
175
|
+
for (let option of input) {
|
|
176
|
+
if (typeof option == "object") {
|
|
177
|
+
const name = Array.isArray(button_display_keys)
|
|
178
|
+
? button_display_keys.map((h) => option?.[h] ?? "").join(" ")
|
|
179
|
+
: option?.name ?? option?.[val_key]
|
|
180
|
+
clean_options.push({ key: option?.[val_key], name: name })
|
|
181
|
+
} else {
|
|
182
|
+
clean_options.push({ key: option, name: String(option) })
|
|
183
|
+
}
|
|
184
|
+
}
|
|
185
|
+
}
|
|
186
|
+
options = clean_options
|
|
187
|
+
set_filtered_button_managers()
|
|
188
|
+
}
|
|
189
|
+
|
|
190
|
+
async function get_db_search_results(input) {
|
|
191
|
+
if (typeof config?.on_search == "function") {
|
|
192
|
+
const id = create_unique_id(null, 20)
|
|
193
|
+
search_requests_is_loading.push(id)
|
|
194
|
+
const res = await config?.on_search({ input: input ?? null, id })
|
|
195
|
+
if (search_requests_is_loading.includes(id)) {
|
|
196
|
+
const id_index = search_requests_is_loading.indexOf(id)
|
|
197
|
+
search_requests_is_loading = search_requests_is_loading.slice(id_index + 1)
|
|
198
|
+
set_options(res?.options || [])
|
|
199
|
+
}
|
|
200
|
+
}
|
|
201
|
+
}
|
|
202
|
+
|
|
203
|
+
function init(config) {
|
|
204
|
+
val = set_closurable(config?.val ?? null)
|
|
205
|
+
search_text_input_manager = create_text_input_manager({
|
|
206
|
+
type: "search",
|
|
207
|
+
on_change: (input) => {
|
|
208
|
+
if (typeof config?.on_search == "function") {
|
|
209
|
+
get_db_search_results(input)
|
|
210
|
+
} else {
|
|
211
|
+
set_filtered_button_managers(input)
|
|
212
|
+
}
|
|
213
|
+
},
|
|
214
|
+
})
|
|
215
|
+
popover_manager = create_popover_manager({
|
|
216
|
+
type: "dropdown",
|
|
217
|
+
header: () => header,
|
|
218
|
+
target_width: () => target_width,
|
|
219
|
+
target_height: () => target_height,
|
|
220
|
+
is_show_x: () => is_show_x,
|
|
221
|
+
is_disabled: () => is_disabled,
|
|
222
|
+
on_open: handle_dropdown_opened,
|
|
223
|
+
on_close: handle_dropdown_closed,
|
|
224
|
+
anchor_id: () => anchor_id ?? `button_${toggle_button_manager?.id}`,
|
|
225
|
+
})
|
|
226
|
+
toggle_button_manager = create_button_manager({
|
|
227
|
+
type: button_type,
|
|
228
|
+
mt: mt,
|
|
229
|
+
mr: mr,
|
|
230
|
+
mb: mb,
|
|
231
|
+
ml: ml,
|
|
232
|
+
is_compressed: () => is_button_compressed,
|
|
233
|
+
is_disabled: () => is_disabled,
|
|
234
|
+
is_collapsed: () => is_collapsed,
|
|
235
|
+
popover_target: () => `popover_${popover_manager?.id}`,
|
|
236
|
+
})
|
|
237
|
+
clear_button_manager = create_button_manager({
|
|
238
|
+
type: "soft",
|
|
239
|
+
text: "Set to null",
|
|
240
|
+
text_align: text_align,
|
|
241
|
+
font_size: font_size,
|
|
242
|
+
font_weight: font_weight,
|
|
243
|
+
mb: item_mb,
|
|
244
|
+
is_disabled: () => val == null || (Array.isArray(val) && val.length < 1),
|
|
245
|
+
is_compressed: type == "horiz_selector",
|
|
246
|
+
is_no_wrap: type == "horiz_selector",
|
|
247
|
+
on_click: () => item_clicked(null),
|
|
248
|
+
})
|
|
249
|
+
header_icon_manager = create_icon_manager({
|
|
250
|
+
icon_id: () => header_icon,
|
|
251
|
+
deg: () => header_icon_deg,
|
|
252
|
+
sw: 30,
|
|
253
|
+
size: 2,
|
|
254
|
+
mr: 0.5,
|
|
255
|
+
})
|
|
256
|
+
set_options(config?.options)
|
|
257
|
+
if (typeof config?.on_search == "function") {
|
|
258
|
+
get_db_search_results(null)
|
|
259
|
+
}
|
|
260
|
+
}
|
|
261
|
+
|
|
262
|
+
init(config)
|
|
263
|
+
|
|
264
|
+
return {
|
|
265
|
+
id,
|
|
266
|
+
get type() {
|
|
267
|
+
return type
|
|
268
|
+
},
|
|
269
|
+
get is_collapsed() {
|
|
270
|
+
return is_collapsed
|
|
271
|
+
},
|
|
272
|
+
get val() {
|
|
273
|
+
return val
|
|
274
|
+
},
|
|
275
|
+
get val_key() {
|
|
276
|
+
return val_key
|
|
277
|
+
},
|
|
278
|
+
get row_display_keys() {
|
|
279
|
+
return row_display_keys
|
|
280
|
+
},
|
|
281
|
+
get button_display_keys() {
|
|
282
|
+
return button_display_keys
|
|
283
|
+
},
|
|
284
|
+
get options() {
|
|
285
|
+
return options
|
|
286
|
+
},
|
|
287
|
+
get is_multiselect() {
|
|
288
|
+
return is_multiselect
|
|
289
|
+
},
|
|
290
|
+
get is_set_null_button() {
|
|
291
|
+
return is_set_null_button
|
|
292
|
+
},
|
|
293
|
+
get is_disabled() {
|
|
294
|
+
return is_disabled
|
|
295
|
+
},
|
|
296
|
+
get header() {
|
|
297
|
+
return header
|
|
298
|
+
},
|
|
299
|
+
get header_icon() {
|
|
300
|
+
return header_icon
|
|
301
|
+
},
|
|
302
|
+
get header_icon_deg() {
|
|
303
|
+
return header_icon_deg
|
|
304
|
+
},
|
|
305
|
+
get min_header_width() {
|
|
306
|
+
return min_header_width
|
|
307
|
+
},
|
|
308
|
+
get spacer_color() {
|
|
309
|
+
return spacer_color
|
|
310
|
+
},
|
|
311
|
+
get label() {
|
|
312
|
+
return label
|
|
313
|
+
},
|
|
314
|
+
get error_message() {
|
|
315
|
+
return error_message
|
|
316
|
+
},
|
|
317
|
+
get placeholder() {
|
|
318
|
+
return placeholder
|
|
319
|
+
},
|
|
320
|
+
get target_width() {
|
|
321
|
+
return target_width
|
|
322
|
+
},
|
|
323
|
+
get target_height() {
|
|
324
|
+
return target_height
|
|
325
|
+
},
|
|
326
|
+
get font_weight() {
|
|
327
|
+
return font_weight
|
|
328
|
+
},
|
|
329
|
+
get font_size() {
|
|
330
|
+
return font_size
|
|
331
|
+
},
|
|
332
|
+
get is_show_x() {
|
|
333
|
+
return is_show_x
|
|
334
|
+
},
|
|
335
|
+
get text_align() {
|
|
336
|
+
return text_align
|
|
337
|
+
},
|
|
338
|
+
get justify_content() {
|
|
339
|
+
return justify_content
|
|
340
|
+
},
|
|
341
|
+
get is_show_arrow() {
|
|
342
|
+
return is_show_arrow
|
|
343
|
+
},
|
|
344
|
+
get button_type() {
|
|
345
|
+
return button_type
|
|
346
|
+
},
|
|
347
|
+
get selected_font_size() {
|
|
348
|
+
return selected_font_size
|
|
349
|
+
},
|
|
350
|
+
get is_button_compressed() {
|
|
351
|
+
return is_button_compressed
|
|
352
|
+
},
|
|
353
|
+
get is_searchable() {
|
|
354
|
+
return is_searchable
|
|
355
|
+
},
|
|
356
|
+
get is_hide_button() {
|
|
357
|
+
return is_hide_button
|
|
358
|
+
},
|
|
359
|
+
get item_mb() {
|
|
360
|
+
return item_mb
|
|
361
|
+
},
|
|
362
|
+
get ml() {
|
|
363
|
+
return ml
|
|
364
|
+
},
|
|
365
|
+
get mr() {
|
|
366
|
+
return mr
|
|
367
|
+
},
|
|
368
|
+
get mb() {
|
|
369
|
+
return mb
|
|
370
|
+
},
|
|
371
|
+
get mt() {
|
|
372
|
+
return mt
|
|
373
|
+
},
|
|
374
|
+
get search_text_input_manager() {
|
|
375
|
+
return search_text_input_manager
|
|
376
|
+
},
|
|
377
|
+
get filtered_button_managers() {
|
|
378
|
+
return filtered_button_managers
|
|
379
|
+
},
|
|
380
|
+
get popover_manager() {
|
|
381
|
+
return popover_manager
|
|
382
|
+
},
|
|
383
|
+
get toggle_button_manager() {
|
|
384
|
+
return toggle_button_manager
|
|
385
|
+
},
|
|
386
|
+
get toggle_button_text() {
|
|
387
|
+
return toggle_button_text
|
|
388
|
+
},
|
|
389
|
+
get clear_button_manager() {
|
|
390
|
+
return clear_button_manager
|
|
391
|
+
},
|
|
392
|
+
get header_icon_manager() {
|
|
393
|
+
return header_icon_manager
|
|
394
|
+
},
|
|
395
|
+
get search_requests_is_loading() {
|
|
396
|
+
return search_requests_is_loading
|
|
397
|
+
},
|
|
398
|
+
init,
|
|
399
|
+
item_clicked,
|
|
400
|
+
set_val,
|
|
401
|
+
set_options,
|
|
402
|
+
}
|
|
403
|
+
}
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
<script>
|
|
2
|
+
import Button from "../Button/index.svelte"
|
|
3
|
+
|
|
4
|
+
let { manager } = $props()
|
|
5
|
+
</script>
|
|
6
|
+
|
|
7
|
+
<div class="container">
|
|
8
|
+
<p class="email_field">{manager?.val}</p>
|
|
9
|
+
<Button manager={manager?.copy_button_manager} />
|
|
10
|
+
<Button manager={manager?.mail_to_button_manager} />
|
|
11
|
+
</div>
|
|
12
|
+
|
|
13
|
+
<style>
|
|
14
|
+
.container {
|
|
15
|
+
display: flex;
|
|
16
|
+
align-items: center;
|
|
17
|
+
gap: 0.5rem;
|
|
18
|
+
}
|
|
19
|
+
.email_field {
|
|
20
|
+
text-transform: lowercase;
|
|
21
|
+
}
|
|
22
|
+
</style>
|
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
import { create_button_manager } from "../Button/index.svelte.js"
|
|
2
|
+
import { copy_to_clipboard, set_closurable } from "../../client/index.js"
|
|
3
|
+
|
|
4
|
+
export function create_email_address_manager(config) {
|
|
5
|
+
let val = $derived(set_closurable(config?.val, null))
|
|
6
|
+
|
|
7
|
+
let copy_button_manager = create_button_manager({
|
|
8
|
+
type: "soft",
|
|
9
|
+
is_uniform: true,
|
|
10
|
+
support_icon: "copy",
|
|
11
|
+
icon_size: 1.5,
|
|
12
|
+
on_click: () => copy_to_clipboard(val),
|
|
13
|
+
})
|
|
14
|
+
|
|
15
|
+
let mail_to_button_manager = create_button_manager({
|
|
16
|
+
type: "soft",
|
|
17
|
+
is_uniform: true,
|
|
18
|
+
support_icon: "link",
|
|
19
|
+
icon_size: 1.5,
|
|
20
|
+
on_click: () => mailto(val),
|
|
21
|
+
})
|
|
22
|
+
|
|
23
|
+
let is_valid = $derived(
|
|
24
|
+
val
|
|
25
|
+
? /^(([^<>()[\]\\.,;:\s@"]+(\.[^<>()[\]\\.,;:\s@"]+)*)|(".+"))@((\[[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\])|(([a-zA-Z\-0-9]+\.)+[a-zA-Z]{2,}))$/.test(
|
|
26
|
+
val.toLowerCase()
|
|
27
|
+
)
|
|
28
|
+
: false
|
|
29
|
+
)
|
|
30
|
+
|
|
31
|
+
function mailto() {
|
|
32
|
+
window.open("mailto:" + val, "_self")
|
|
33
|
+
}
|
|
34
|
+
|
|
35
|
+
return {
|
|
36
|
+
get val() {
|
|
37
|
+
return val
|
|
38
|
+
},
|
|
39
|
+
get is_valid() {
|
|
40
|
+
return is_valid
|
|
41
|
+
},
|
|
42
|
+
copy_button_manager,
|
|
43
|
+
mail_to_button_manager,
|
|
44
|
+
}
|
|
45
|
+
}
|
|
@@ -0,0 +1,58 @@
|
|
|
1
|
+
<script>
|
|
2
|
+
let { is_show = true, color = "var(--error-t)", sw = 30 } = $props()
|
|
3
|
+
</script>
|
|
4
|
+
|
|
5
|
+
{#if is_show}
|
|
6
|
+
<svg
|
|
7
|
+
class="error_x"
|
|
8
|
+
style="--color: {color}; --sw: {sw}"
|
|
9
|
+
xmlns="http://www.w3.org/2000/svg"
|
|
10
|
+
viewBox="0 0 512 512"
|
|
11
|
+
fill="none"
|
|
12
|
+
stroke-linecap="round"
|
|
13
|
+
stroke-linejoin="round"
|
|
14
|
+
>
|
|
15
|
+
<circle class="error_x_circle" cx="256" cy="256" r="196.16" />
|
|
16
|
+
<line class="error_x" x1="328.5" y1="183.5" x2="183.5" y2="328.5" />
|
|
17
|
+
<line class="error_x" x2="328.5" y2="328.5" x1="183.5" y1="183.5" />
|
|
18
|
+
</svg>
|
|
19
|
+
{/if}
|
|
20
|
+
|
|
21
|
+
<style>
|
|
22
|
+
.error_x {
|
|
23
|
+
width: 100%;
|
|
24
|
+
height: 100%;
|
|
25
|
+
border-radius: 50%;
|
|
26
|
+
stroke-width: var(--sw);
|
|
27
|
+
stroke: var(--color);
|
|
28
|
+
stroke-miterlimit: 10;
|
|
29
|
+
animation:
|
|
30
|
+
ease-in-out 0.1s forwards,
|
|
31
|
+
scale 0.1s ease-in-out 0.1s both;
|
|
32
|
+
}
|
|
33
|
+
.error_x_circle {
|
|
34
|
+
stroke-dasharray: 1250;
|
|
35
|
+
stroke-dashoffset: 1250;
|
|
36
|
+
animation: stroke 0.1s cubic-bezier(0.65, 0, 0.45, 1) forwards;
|
|
37
|
+
}
|
|
38
|
+
.error_x {
|
|
39
|
+
stroke-dasharray: 250;
|
|
40
|
+
stroke-dashoffset: 250;
|
|
41
|
+
animation: stroke 0.1s cubic-bezier(0.65, 0, 0.45, 1) 0.1s forwards;
|
|
42
|
+
}
|
|
43
|
+
|
|
44
|
+
@keyframes stroke {
|
|
45
|
+
100% {
|
|
46
|
+
stroke-dashoffset: 0;
|
|
47
|
+
}
|
|
48
|
+
}
|
|
49
|
+
@keyframes scale {
|
|
50
|
+
0%,
|
|
51
|
+
100% {
|
|
52
|
+
transform: none;
|
|
53
|
+
}
|
|
54
|
+
50% {
|
|
55
|
+
transform: scale3d(1.1, 1.1, 1);
|
|
56
|
+
}
|
|
57
|
+
}
|
|
58
|
+
</style>
|
|
@@ -0,0 +1,57 @@
|
|
|
1
|
+
<script>
|
|
2
|
+
let { is_eye_shown = false, is_bind_val = false, eye_color = "var(--g6-t)", sw = 30, on_change } = $props()
|
|
3
|
+
|
|
4
|
+
function handle_click(change_to) {
|
|
5
|
+
if (is_bind_val) {
|
|
6
|
+
is_eye_shown = change_to
|
|
7
|
+
}
|
|
8
|
+
on_change(change_to)
|
|
9
|
+
}
|
|
10
|
+
</script>
|
|
11
|
+
|
|
12
|
+
<div
|
|
13
|
+
class="icon_frame"
|
|
14
|
+
role="button"
|
|
15
|
+
tabindex="0"
|
|
16
|
+
onclick={() => handle_click(!is_eye_shown)}
|
|
17
|
+
onkeydown={(event) => {
|
|
18
|
+
if (event.key === "Enter" || event.key === " ") {
|
|
19
|
+
handle_click(!is_eye_shown)
|
|
20
|
+
}
|
|
21
|
+
}}
|
|
22
|
+
>
|
|
23
|
+
{#if is_eye_shown}
|
|
24
|
+
<svg id="eye" class="svg_cover" data-name="eye" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 512 350">
|
|
25
|
+
<g fill="none" stroke={eye_color} stroke-width={sw}>
|
|
26
|
+
<path
|
|
27
|
+
d="M120.2-2.8h58.2a248 248 0 01248 248v58.3a34.6 34.6 0 01-34.6 34.6h-58.2A248 248 0 0185.6 90V31.9a34.6 34.6 0 0134.6-34.7z"
|
|
28
|
+
transform="rotate(-45 256 167.7)"
|
|
29
|
+
/>
|
|
30
|
+
<circle cx="256" cy="167.7" r="78.8" />
|
|
31
|
+
</g>
|
|
32
|
+
</svg>
|
|
33
|
+
{:else}
|
|
34
|
+
<svg id="eyenot" class="svg_cover" data-name="eyenot" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 512 350">
|
|
35
|
+
<g fill="none" stroke={eye_color} stroke-width={sw}>
|
|
36
|
+
<path
|
|
37
|
+
d="M336.3 292.6a248 248 0 01-255.7-59.3l-41.2-41.1a34.7 34.7 0 010-49L80.6 102a249.1 249.1 0 0135.6-29.6M182.6 139a78.8 78.8 0 00102.2 102M329.4 196.4A78.8 78.8 0 00227.3 94.3"
|
|
38
|
+
/>
|
|
39
|
+
<path
|
|
40
|
+
d="M175.7 42.7A248 248 0 01431.4 102l41.2 41.1a34.7 34.7 0 010 49l-41.2 41.2a249 249 0 01-35.6 29.6M115.6 27.3l280.8 280.8"
|
|
41
|
+
/>
|
|
42
|
+
</g>
|
|
43
|
+
</svg>
|
|
44
|
+
{/if}
|
|
45
|
+
</div>
|
|
46
|
+
|
|
47
|
+
<style>
|
|
48
|
+
.icon_frame {
|
|
49
|
+
width: 2rem;
|
|
50
|
+
height: 2rem;
|
|
51
|
+
display: flex;
|
|
52
|
+
align-items: center;
|
|
53
|
+
}
|
|
54
|
+
.svg_cover {
|
|
55
|
+
width: 100%;
|
|
56
|
+
}
|
|
57
|
+
</style>
|