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.
Files changed (200) hide show
  1. package/dist/Components/Alert/index.svelte +88 -0
  2. package/dist/Components/Alert/index.svelte.js +101 -0
  3. package/dist/Components/ArrowToggle/index.svelte +62 -0
  4. package/dist/Components/Attachment/index.svelte +77 -0
  5. package/dist/Components/Attachment/index.svelte.js +119 -0
  6. package/dist/Components/Audio/index.svelte +193 -0
  7. package/dist/Components/Audio/index.svelte.js +463 -0
  8. package/dist/Components/AudioEditor/index.svelte +252 -0
  9. package/dist/Components/AudioEditor/index.svelte.js +977 -0
  10. package/dist/Components/AudioEditor/samples/alloy-voice-sample.mp3 +0 -0
  11. package/dist/Components/AudioEditor/samples/echo-voice-sample.mp3 +0 -0
  12. package/dist/Components/AudioEditor/samples/fable-voice-sample.mp3 +0 -0
  13. package/dist/Components/AudioEditor/samples/nova-voice-sample.mp3 +0 -0
  14. package/dist/Components/AudioEditor/samples/onyx-voice-sample.mp3 +0 -0
  15. package/dist/Components/AudioEditor/samples/shimmer-voice-sample.mp3 +0 -0
  16. package/dist/Components/AuthCodeInput/index.svelte +85 -0
  17. package/dist/Components/AuthCodeInput/index.svelte.js +95 -0
  18. package/dist/Components/Breadcrumbs/index.svelte +27 -0
  19. package/dist/Components/Breadcrumbs/index.svelte.js +88 -0
  20. package/dist/Components/Button/index.svelte +721 -0
  21. package/dist/Components/Button/index.svelte.js +375 -0
  22. package/dist/Components/Chart/Klines/index.svelte +87 -0
  23. package/dist/Components/Chart/index.svelte +226 -0
  24. package/dist/Components/Chart/index.svelte.js +1099 -0
  25. package/dist/Components/ChartInput/DisplayNav/Klines/index.svelte +150 -0
  26. package/dist/Components/ChartInput/DisplayNav/Lines/index.svelte +45 -0
  27. package/dist/Components/ChartInput/DisplayNav/index.svelte +297 -0
  28. package/dist/Components/ChartInput/EditPanel/index.svelte +155 -0
  29. package/dist/Components/ChartInput/index.svelte +21 -0
  30. package/dist/Components/ChartInput/index.svelte.js +671 -0
  31. package/dist/Components/Checkbox/index.svelte +411 -0
  32. package/dist/Components/Checkbox/index.svelte.js +178 -0
  33. package/dist/Components/Code/index.svelte +23 -0
  34. package/dist/Components/Code/index.svelte.js +33 -0
  35. package/dist/Components/Color/index.svelte +51 -0
  36. package/dist/Components/Color/index.svelte.js +31 -0
  37. package/dist/Components/ColorInput/ChromaPicker/index.svelte +50 -0
  38. package/dist/Components/ColorInput/ColorPalette/index.svelte +62 -0
  39. package/dist/Components/ColorInput/OpacityPicker/index.svelte +68 -0
  40. package/dist/Components/ColorInput/ShowcasePicker/index.svelte +136 -0
  41. package/dist/Components/ColorInput/index.svelte +70 -0
  42. package/dist/Components/ColorInput/index.svelte.js +386 -0
  43. package/dist/Components/ConditionsInput/index.svelte +46 -0
  44. package/dist/Components/ConditionsInput/index.svelte.js +201 -0
  45. package/dist/Components/Confetti/index.svelte +98 -0
  46. package/dist/Components/Confetti/index.svelte.js +94 -0
  47. package/dist/Components/Content/index.svelte +500 -0
  48. package/dist/Components/Content/index.svelte.js +910 -0
  49. package/dist/Components/ContentInput/AttributesInput/CustomConfig/Audio/index.svelte +31 -0
  50. package/dist/Components/ContentInput/AttributesInput/CustomConfig/Audio/index.svelte.js +258 -0
  51. package/dist/Components/ContentInput/AttributesInput/CustomConfig/AudioAdvanced/index.svelte +31 -0
  52. package/dist/Components/ContentInput/AttributesInput/CustomConfig/AudioAdvanced/index.svelte.js +258 -0
  53. package/dist/Components/ContentInput/AttributesInput/CustomConfig/Dropdown/index.svelte +58 -0
  54. package/dist/Components/ContentInput/AttributesInput/CustomConfig/Dropdown/index.svelte.js +206 -0
  55. package/dist/Components/ContentInput/AttributesInput/CustomConfig/Image/index.svelte +28 -0
  56. package/dist/Components/ContentInput/AttributesInput/CustomConfig/Image/index.svelte.js +224 -0
  57. package/dist/Components/ContentInput/AttributesInput/CustomConfig/Number/index.svelte +44 -0
  58. package/dist/Components/ContentInput/AttributesInput/CustomConfig/Number/index.svelte.js +272 -0
  59. package/dist/Components/ContentInput/AttributesInput/CustomConfig/Qr/index.svelte +41 -0
  60. package/dist/Components/ContentInput/AttributesInput/CustomConfig/Qr/index.svelte.js +202 -0
  61. package/dist/Components/ContentInput/AttributesInput/CustomConfig/Slider/index.svelte +19 -0
  62. package/dist/Components/ContentInput/AttributesInput/CustomConfig/Slider/index.svelte.js +117 -0
  63. package/dist/Components/ContentInput/AttributesInput/CustomConfig/TableAdvanced/index.svelte +60 -0
  64. package/dist/Components/ContentInput/AttributesInput/CustomConfig/TableAdvanced/index.svelte.js +542 -0
  65. package/dist/Components/ContentInput/AttributesInput/CustomConfig/Tag/index.svelte +47 -0
  66. package/dist/Components/ContentInput/AttributesInput/CustomConfig/Tag/index.svelte.js +185 -0
  67. package/dist/Components/ContentInput/AttributesInput/CustomConfig/TextInput/index.svelte +35 -0
  68. package/dist/Components/ContentInput/AttributesInput/CustomConfig/TextInput/index.svelte.js +222 -0
  69. package/dist/Components/ContentInput/AttributesInput/CustomConfig/TimeInput/index.svelte +20 -0
  70. package/dist/Components/ContentInput/AttributesInput/CustomConfig/TimeInput/index.svelte.js +84 -0
  71. package/dist/Components/ContentInput/AttributesInput/DefinedTypeInput/index.svelte +25 -0
  72. package/dist/Components/ContentInput/AttributesInput/DefinedTypeInput/index.svelte.js +91 -0
  73. package/dist/Components/ContentInput/AttributesInput/index.svelte +352 -0
  74. package/dist/Components/ContentInput/AttributesInput/index.svelte.js +1436 -0
  75. package/dist/Components/ContentInput/ContentPanelBuilder/AddElement/index.svelte +64 -0
  76. package/dist/Components/ContentInput/ContentPanelBuilder/AddElement/index.svelte.js +97 -0
  77. package/dist/Components/ContentInput/ContentPanelBuilder/ElementList/index.svelte +184 -0
  78. package/dist/Components/ContentInput/ContentPanelBuilder/index.svelte +41 -0
  79. package/dist/Components/ContentInput/index.svelte +78 -0
  80. package/dist/Components/ContentInput/index.svelte.js +1197 -0
  81. package/dist/Components/CronInput/index.svelte +78 -0
  82. package/dist/Components/CronInput/index.svelte.js +198 -0
  83. package/dist/Components/DataTypeInput/index.svelte +174 -0
  84. package/dist/Components/DataTypeInput/index.svelte.js +565 -0
  85. package/dist/Components/Dropdown/index.svelte +116 -0
  86. package/dist/Components/Dropdown/index.svelte.js +403 -0
  87. package/dist/Components/EmailAddress/index.svelte +22 -0
  88. package/dist/Components/EmailAddress/index.svelte.js +45 -0
  89. package/dist/Components/ErrorX/index.svelte +58 -0
  90. package/dist/Components/Eye/index.svelte +57 -0
  91. package/dist/Components/FileInput/index.svelte +146 -0
  92. package/dist/Components/FileInput/index.svelte.js +225 -0
  93. package/dist/Components/Hamburger/index.svelte +99 -0
  94. package/dist/Components/HorizScrollBox/index.svelte +145 -0
  95. package/dist/Components/Icon/index.svelte +412 -0
  96. package/dist/Components/Icon/index.svelte.js +116 -0
  97. package/dist/Components/IconInput/index.svelte +77 -0
  98. package/dist/Components/IconInput/index.svelte.js +259 -0
  99. package/dist/Components/Image/index.svelte +126 -0
  100. package/dist/Components/Image/index.svelte.js +116 -0
  101. package/dist/Components/ImageEditor/Image/CropBox/index.svelte +165 -0
  102. package/dist/Components/ImageEditor/Image/index.svelte +104 -0
  103. package/dist/Components/ImageEditor/Panels/AI/index.svelte +44 -0
  104. package/dist/Components/ImageEditor/Panels/Crop/index.svelte +96 -0
  105. package/dist/Components/ImageEditor/Panels/File/QualityPicker/index.svelte +124 -0
  106. package/dist/Components/ImageEditor/Panels/File/index.svelte +74 -0
  107. package/dist/Components/ImageEditor/Panels/Filters/index.svelte +46 -0
  108. package/dist/Components/ImageEditor/Panels/Resize/index.svelte +58 -0
  109. package/dist/Components/ImageEditor/index.svelte +93 -0
  110. package/dist/Components/ImageEditor/index.svelte.js +1961 -0
  111. package/dist/Components/ImageSlider/index.svelte +124 -0
  112. package/dist/Components/ImageSlider/index.svelte.js +99 -0
  113. package/dist/Components/InfoBox/index.svelte +89 -0
  114. package/dist/Components/Json/Nested/index.svelte +157 -0
  115. package/dist/Components/Json/index.svelte +60 -0
  116. package/dist/Components/Json/index.svelte.js +594 -0
  117. package/dist/Components/LabeledItem/index.svelte +102 -0
  118. package/dist/Components/Layout/NavBar/FullNav/index.svelte +52 -0
  119. package/dist/Components/Layout/NavBar/NavGuts/index.svelte +87 -0
  120. package/dist/Components/Layout/NavBar/index.svelte +72 -0
  121. package/dist/Components/Layout/index.svelte +149 -0
  122. package/dist/Components/Layout/index.svelte.js +360 -0
  123. package/dist/Components/Link/index.svelte +47 -0
  124. package/dist/Components/Link/index.svelte.js +136 -0
  125. package/dist/Components/LoadingSuccessDiv/index.svelte +51 -0
  126. package/dist/Components/LoadingWheel/index.svelte +38 -0
  127. package/dist/Components/Location/index.svelte +79 -0
  128. package/dist/Components/Location/index.svelte.js +288 -0
  129. package/dist/Components/LocationInput/index.svelte +197 -0
  130. package/dist/Components/LocationInput/index.svelte.js +965 -0
  131. package/dist/Components/Number/index.svelte +47 -0
  132. package/dist/Components/Number/index.svelte.js +151 -0
  133. package/dist/Components/PhoneCountryCode/index.svelte +7 -0
  134. package/dist/Components/PhoneCountryCode/index.svelte.js +260 -0
  135. package/dist/Components/PhoneNumber/index.svelte +22 -0
  136. package/dist/Components/PhoneNumber/index.svelte.js +41 -0
  137. package/dist/Components/Popover/index.svelte +396 -0
  138. package/dist/Components/Popover/index.svelte.js +319 -0
  139. package/dist/Components/Qr/index.svelte +85 -0
  140. package/dist/Components/Qr/index.svelte.js +301 -0
  141. package/dist/Components/QrInput/index.svelte +47 -0
  142. package/dist/Components/QrInput/index.svelte.js +218 -0
  143. package/dist/Components/Slider/index.svelte +239 -0
  144. package/dist/Components/Slider/index.svelte.js +469 -0
  145. package/dist/Components/Spacer/index.svelte +41 -0
  146. package/dist/Components/StoragePicker/DisplayFile/index.svelte +15 -0
  147. package/dist/Components/StoragePicker/index.svelte +187 -0
  148. package/dist/Components/StoragePicker/index.svelte.js +592 -0
  149. package/dist/Components/SuccessCheck/index.svelte +56 -0
  150. package/dist/Components/TableAdvanced/ColumnInput/index.svelte +117 -0
  151. package/dist/Components/TableAdvanced/ColumnInput/index.svelte.js +456 -0
  152. package/dist/Components/TableAdvanced/FilterInput/index.svelte +54 -0
  153. package/dist/Components/TableAdvanced/FilterInput/index.svelte.js +247 -0
  154. package/dist/Components/TableAdvanced/Pagination/index.svelte +43 -0
  155. package/dist/Components/TableAdvanced/Pagination/index.svelte.js +97 -0
  156. package/dist/Components/TableAdvanced/SortByInput/index.svelte +72 -0
  157. package/dist/Components/TableAdvanced/SortByInput/index.svelte.js +176 -0
  158. package/dist/Components/TableAdvanced/index.svelte +275 -0
  159. package/dist/Components/TableAdvanced/index.svelte.js +1565 -0
  160. package/dist/Components/Tag/index.svelte +45 -0
  161. package/dist/Components/Tag/index.svelte.js +76 -0
  162. package/dist/Components/TextArrayInput/index.svelte +108 -0
  163. package/dist/Components/TextArrayInput/index.svelte.js +239 -0
  164. package/dist/Components/TextInput/PasswordTooltip/index.svelte +89 -0
  165. package/dist/Components/TextInput/index.svelte +223 -0
  166. package/dist/Components/TextInput/index.svelte.js +447 -0
  167. package/dist/Components/Time/index.svelte +7 -0
  168. package/dist/Components/Time/index.svelte.js +38 -0
  169. package/dist/Components/TimeInput/NumberToggler/index.svelte +34 -0
  170. package/dist/Components/TimeInput/NumberToggler/index.svelte.js +79 -0
  171. package/dist/Components/TimeInput/index.js +702 -0
  172. package/dist/Components/TimeInput/index.svelte +211 -0
  173. package/dist/Components/TimeInput/index.svelte.js +638 -0
  174. package/dist/Components/Tooltip/index.svelte +143 -0
  175. package/dist/Components/TransparentBackground/index.svelte +153 -0
  176. package/dist/Components/TypingDots/index.svelte +84 -0
  177. package/dist/Components/VariablePathInput/index.svelte +63 -0
  178. package/dist/Components/VariablePathInput/index.svelte.js +273 -0
  179. package/dist/Components/VideoTBD/index.svelte +100 -0
  180. package/dist/Components/XFollow/index.svelte +42 -0
  181. package/dist/Components/XPost/index.svelte +52 -0
  182. package/dist/Components/XPost/index.svelte.js +64 -0
  183. package/dist/Components/YoutubeChannelButton/index.svelte +82 -0
  184. package/dist/Components/YoutubeVideo/index.svelte +73 -0
  185. package/dist/Components/YoutubeVideo/index.svelte.js +54 -0
  186. package/dist/actions/draggable.js +49 -0
  187. package/dist/actions/index.js +24 -0
  188. package/dist/actions/no_spaces.js +33 -0
  189. package/dist/actions/numbers_only.js +26 -0
  190. package/dist/actions/scroll_y.js +28 -0
  191. package/dist/actions/stop_scroll_propagation_y.js +42 -0
  192. package/dist/actions/swipe_handler.js +295 -0
  193. package/dist/client/astc_formatting/index.js +1128 -0
  194. package/dist/client/docs/index.js +7622 -0
  195. package/dist/client/index.js +735 -0
  196. package/dist/client/types/index.js +2812 -0
  197. package/dist/index.js +180 -0
  198. package/dist/style.css +682 -0
  199. package/package.json +2 -2
  200. package/src/lib/Components/Chart/index.svelte.js +11 -2
@@ -0,0 +1,396 @@
1
+ <script>
2
+ import Button from "../Button/index.svelte"
3
+ import LoadingSuccessDiv from "../LoadingSuccessDiv/index.svelte"
4
+ // import { onDestroy } from 'svelte';
5
+
6
+ let { manager, content, content_alt, header, footer } = $props()
7
+
8
+ let scroll_top = $state(null)
9
+ let scroll_bottom = $state(null)
10
+ function handle_content_scroll(e) {
11
+ scroll_top = e?.target?.scrollTop
12
+ scroll_bottom = e?.target?.scrollHeight - (e?.target.scrollTop + e?.target.clientHeight)
13
+ }
14
+
15
+ // onDestroy(() => { look into this later
16
+ // console.log('onDestroyPopover')
17
+ // manager?.close()
18
+ // })
19
+ </script>
20
+
21
+ <svelte:window onscroll={() => manager?.handle_screen_change()} onresize={() => manager?.handle_screen_change()} />
22
+
23
+ <div
24
+ id={`popover_${manager?.id}`}
25
+ popover={manager?.popover_type}
26
+ onbeforetoggle={(e) => manager?.handle_before_toggle(e)}
27
+ class:type_dropdown={manager?.positioning?.type_to_use === "dropdown"}
28
+ class:type_full={manager?.positioning?.type_to_use === "full"}
29
+ class:type_right_panel={manager?.positioning?.type_to_use === "panel" && manager?.panel_side != "left"}
30
+ class:type_left_panel={manager?.positioning?.type_to_use === "panel" && manager?.panel_side == "left"}
31
+ class:type_center={manager?.positioning?.type_to_use === "center"}
32
+ class:type_center_lftb={manager?.positioning?.type_to_use === "center" && !manager?.corner}
33
+ class:panel_backdrop={["full", "panel"].includes(manager?.positioning?.type_to_use)}
34
+ class:corner_tl={manager?.positioning?.type_to_use === "center" && manager?.corner == "tl"}
35
+ class:corner_tr={manager?.positioning?.type_to_use === "center" && manager?.corner == "tr"}
36
+ class:corner_bl={manager?.positioning?.type_to_use === "center" && manager?.corner == "bl"}
37
+ class:corner_br={manager?.positioning?.type_to_use === "center" && manager?.corner == "br"}
38
+ style="
39
+ --popover_top_pos: {manager?.positioning?.popover_top_pos}px;
40
+ --popover_left_pos: {manager?.positioning?.popover_left_pos}px;
41
+ --min_width: {manager?.positioning?.min_width}px;
42
+ --target_width: {manager?.positioning?.target_width}px;
43
+ --max_width: calc(100dvw - (2 * {manager?.positioning?.edge_forgiveness}px));
44
+ --min_height: {manager?.positioning?.min_height}px;
45
+ --target_height: {manager?.target_height ? `${manager?.positioning?.target_height}px` : 'fit-content'};
46
+ --max_height: {manager?.positioning?.max_height
47
+ ? `${manager?.positioning?.max_height ?? manager?.screen_height - 20}px`
48
+ : `calc(100% - (2 * ${manager?.edge_forgiveness ?? 20}px))`};
49
+ --pt: {manager?.pt}rem;
50
+ --pl: {manager?.pl}rem;
51
+ --pr: {manager?.pr}rem;
52
+ --pb: {manager?.pb}rem;
53
+ --br: {manager?.border_radius}rem;
54
+ --background_color: {manager?.background_color};
55
+ --border_color: {manager?.border_color};
56
+ --drop_color: {manager?.drop_color};
57
+ --edge_forgiveness: {manager?.positioning?.edge_forgiveness ?? 20}px;
58
+ "
59
+ >
60
+ <div
61
+ onscroll={(e) => handle_content_scroll(e)}
62
+ class="content_container"
63
+ style="
64
+ --header_bg_color: oklch(from var(--background_color) l c h / {scroll_top ? 0.9 : 0});
65
+ --header_border_color: {scroll_top ? 'var(--border_color)' : 'transparent'};
66
+ --footer_bg_color: oklch(from var(--background_color) l c h / {scroll_bottom ? 0.9 : 0});
67
+ --footer_border_color: {scroll_bottom ? 'var(--border_color)' : 'transparent'};
68
+ "
69
+ >
70
+ {#if manager?.temp_message}
71
+ <LoadingSuccessDiv show_screen={manager?.temp_message?.icon} message={manager?.temp_message?.message} />
72
+ {:else if manager?.is_show_alt_content && content_alt}
73
+ {@render content_alt()}
74
+ {:else}
75
+ <div class="header_and_content">
76
+ {#if manager?.header}
77
+ <div class="header">
78
+ <h3 style="font-size: {manager?.header_font_size}rem;">{manager?.header}</h3>
79
+ </div>
80
+ {:else if header}
81
+ <div class="header">
82
+ {@render header()}
83
+ </div>
84
+ {/if}
85
+ <div
86
+ class="content"
87
+ style="padding: {manager?.header || header
88
+ ? 0
89
+ : manager?.pt}rem {manager?.pr}rem {manager?.pb}rem {manager?.pl}rem;"
90
+ >
91
+ {#if content}
92
+ {@render content(manager?.toggle_modal)}
93
+ {/if}
94
+ </div>
95
+ </div>
96
+ {#if footer}
97
+ <div class="footer">
98
+ {@render footer(manager?.toggle_modal)}
99
+ </div>
100
+ {/if}
101
+ {/if}
102
+ </div>
103
+ {#if manager?.is_show_x && !manager?.is_non_closable}
104
+ <div class="x_box" style="--br_offset: .2rem;">
105
+ <Button manager={manager?.x_button_manager} />
106
+ </div>
107
+ {/if}
108
+ </div>
109
+
110
+ <style>
111
+ [popover] {
112
+ margin: 0;
113
+ padding: 0;
114
+ width: fit-content;
115
+ height: fit-content;
116
+ background-color: var(--background_color);
117
+ }
118
+ [popover]:popover-open {
119
+ display: flex;
120
+ flex-direction: column;
121
+ flex: 1;
122
+ justify-content: space-between;
123
+ align-items: center;
124
+ opacity: 1;
125
+ }
126
+ .type_dropdown {
127
+ position: fixed;
128
+ top: var(--popover_top_pos);
129
+ left: var(--popover_left_pos);
130
+ bottom: auto;
131
+ right: auto;
132
+ min-width: var(--min_width);
133
+ width: var(--target_width);
134
+ max-width: var(--max_width);
135
+ min-height: var(--min_height);
136
+ height: var(--target_height);
137
+ max-height: var(--max_height);
138
+ box-shadow: 0 0 1rem var(--drop_color);
139
+ border-radius: var(--br);
140
+ border: 1px solid var(--border_color);
141
+ opacity: 0;
142
+ transition:
143
+ opacity 0.3s,
144
+ overlay 0.3s allow-discrete,
145
+ display 0.3s allow-discrete;
146
+ }
147
+ .type_dropdown:popover-open {
148
+ opacity: 1;
149
+ }
150
+ @starting-style {
151
+ .type_dropdown:popover-open {
152
+ opacity: 0;
153
+ }
154
+ }
155
+ .corner_bl {
156
+ left: var(--edge_forgiveness);
157
+ right: auto;
158
+ top: auto;
159
+ bottom: var(--edge_forgiveness);
160
+ }
161
+ .corner_br {
162
+ left: auto;
163
+ right: var(--edge_forgiveness);
164
+ top: auto;
165
+ bottom: var(--edge_forgiveness);
166
+ }
167
+ .corner_tl {
168
+ left: var(--edge_forgiveness);
169
+ right: auto;
170
+ top: var(--edge_forgiveness);
171
+ bottom: auto;
172
+ }
173
+ .corner_tr {
174
+ left: auto;
175
+ right: var(--edge_forgiveness);
176
+ top: var(--edge_forgiveness);
177
+ bottom: auto;
178
+ }
179
+ .type_center_lftb {
180
+ top: var(--popover_top_pos);
181
+ left: 50%;
182
+ bottom: auto;
183
+ right: auto;
184
+ transform: translateX(-50%);
185
+ }
186
+ .type_center {
187
+ position: fixed;
188
+ border-radius: var(--br);
189
+ border: 1px solid var(--border_color);
190
+ min-width: var(--min_width);
191
+ width: var(--target_width);
192
+ max-width: var(--max_width);
193
+ min-height: var(--min_height);
194
+ height: var(--target_height);
195
+ max-height: var(--max_height);
196
+ box-shadow: 0 1rem 5rem var(--drop_color);
197
+ opacity: 0;
198
+ transition:
199
+ opacity 0.5s,
200
+ overlay 0.5s allow-discrete,
201
+ display 0.5s allow-discrete;
202
+ }
203
+ .type_center:popover-open {
204
+ opacity: 1;
205
+ }
206
+ .type_center::backdrop {
207
+ background-color: transparent;
208
+ transition:
209
+ display 0s allow-discrete,
210
+ overlay 0s allow-discrete,
211
+ background-color 0.5s;
212
+ }
213
+ .type_center:popover-open::backdrop {
214
+ background-color: var(--shadow3-t);
215
+ }
216
+ @starting-style {
217
+ .type_center:popover-open {
218
+ opacity: 0;
219
+ }
220
+ .type_center:popover-open::backdrop {
221
+ background-color: transparent;
222
+ }
223
+ }
224
+ .type_full {
225
+ position: fixed;
226
+ top: auto;
227
+ left: 0;
228
+ right: 0;
229
+ bottom: 0;
230
+ border: 1px solid var(--border_color);
231
+ border-top-left-radius: var(--br);
232
+ border-top-right-radius: var(--br);
233
+ border-bottom-left-radius: 0;
234
+ border-bottom-right-radius: 0;
235
+ border-bottom-width: 0;
236
+ box-shadow: 0 1rem 5rem var(--drop_color);
237
+ width: 100vw;
238
+ min-height: var(--min_height) !important;
239
+ height: var(--target_height);
240
+ max-height: 90dvh;
241
+ transform: translateY(100%);
242
+ transition:
243
+ transform 0.7s,
244
+ overlay 0.5s allow-discrete,
245
+ display 0.5s allow-discrete;
246
+ }
247
+ .type_full:popover-open {
248
+ transform: translateY(0);
249
+ }
250
+ @starting-style {
251
+ .type_full:popover-open {
252
+ transform: translateY(100%);
253
+ }
254
+ }
255
+
256
+ .type_right_panel {
257
+ position: fixed;
258
+ left: auto;
259
+ top: 0;
260
+ right: 0;
261
+ bottom: 0;
262
+ border-left: 1px solid var(--border_color);
263
+ border-top-width: 0;
264
+ border-bottom-width: 0;
265
+ border-right-width: 0;
266
+ border-radius: 0;
267
+ box-shadow: 0 0 5rem var(--drop_color);
268
+ height: 100dvh;
269
+ min-width: var(--min_width) !important;
270
+ width: var(--target_width);
271
+ max-width: 90dvw;
272
+ transform: translateX(100%);
273
+ transition:
274
+ transform 0.7s,
275
+ overlay 0.5s allow-discrete,
276
+ display 0.5s allow-discrete;
277
+ }
278
+ .type_right_panel:popover-open {
279
+ transform: translateX(0);
280
+ }
281
+ @starting-style {
282
+ .type_right_panel:popover-open {
283
+ transform: translateX(100%);
284
+ }
285
+ }
286
+
287
+ .type_left_panel {
288
+ position: fixed;
289
+ right: auto;
290
+ top: 0;
291
+ left: 0;
292
+ bottom: 0;
293
+ border-right: 1px solid var(--border_color);
294
+ border-top-width: 0;
295
+ border-bottom-width: 0;
296
+ border-left-width: 0;
297
+ border-radius: 0;
298
+ box-shadow: 0 0 5rem var(--drop_color);
299
+ height: 100dvh;
300
+ min-width: var(--min_width);
301
+ width: var(--target_width);
302
+ max-width: 90dvw;
303
+ transform: translateX(-100%);
304
+ transition:
305
+ transform 0.7s,
306
+ overlay 0.5s allow-discrete,
307
+ display 0.5s allow-discrete;
308
+ }
309
+ .type_left_panel:popover-open {
310
+ transform: translateX(0);
311
+ }
312
+ @starting-style {
313
+ .type_left_panel:popover-open {
314
+ transform: translateX(-100%);
315
+ }
316
+ }
317
+
318
+ .panel_backdrop::backdrop {
319
+ background-color: transparent;
320
+ transition:
321
+ display 0s allow-discrete,
322
+ overlay 0s allow-discrete,
323
+ background-color 0.5s ease 0.3s;
324
+ }
325
+ .panel_backdrop:popover-open::backdrop {
326
+ background-color: var(--shadow3-t);
327
+ transition:
328
+ display 0s allow-discrete,
329
+ overlay 0s allow-discrete,
330
+ background-color 0.5s;
331
+ }
332
+ @starting-style {
333
+ .panel_backdrop:popover-open::backdrop {
334
+ background-color: transparent;
335
+ }
336
+ }
337
+
338
+ .content_container {
339
+ display: flex;
340
+ flex-direction: column;
341
+ justify-content: space-between;
342
+ flex: 1;
343
+ width: 100%;
344
+ overflow: scroll;
345
+ }
346
+ .header_and_content {
347
+ display: flex;
348
+ flex-direction: column;
349
+ flex: 1;
350
+ }
351
+ .header {
352
+ position: sticky;
353
+ top: 0;
354
+ left: 0;
355
+ right: 0;
356
+ z-index: 1;
357
+ text-align: center;
358
+ margin: 0;
359
+ border-radius: 0;
360
+ padding: var(--pt) var(--pr) 0 var(--pl);
361
+ border: none;
362
+ transition:
363
+ background-color 0.7s,
364
+ border-bottom 0.7s;
365
+ background-color: var(--header_bg_color);
366
+ border-bottom: 1px solid var(--header_border_color);
367
+ }
368
+ .content {
369
+ display: flex;
370
+ flex-direction: column;
371
+ flex: 1;
372
+ }
373
+ .footer {
374
+ position: sticky;
375
+ bottom: 0;
376
+ left: 0;
377
+ right: 0;
378
+ z-index: 1;
379
+ border: none;
380
+ border-radius: 0;
381
+ text-align: center;
382
+ margin-top: 0.5rem;
383
+ padding: 1rem var(--pr) var(--pb) var(--pl);
384
+ transition:
385
+ background-color 0.7s,
386
+ border-top 0.7s;
387
+ background-color: var(--footer_bg_color);
388
+ border-top: 1px solid var(--footer_border_color);
389
+ }
390
+ .x_box {
391
+ position: absolute;
392
+ top: var(--br_offset);
393
+ right: var(--br_offset);
394
+ z-index: 2;
395
+ }
396
+ </style>
@@ -0,0 +1,319 @@
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
+
4
+ export function create_popover_manager(config) {
5
+ const id = create_unique_id(null, 20)
6
+ let type = $derived(set_closurable(config?.type, "center")) // dropdown, center, full
7
+ let anchor_id = $derived(set_closurable(config?.anchor_id, null))
8
+ let pt = $derived(set_closurable(config?.pt, 1))
9
+ let pb = $derived(set_closurable(config?.pb, 1))
10
+ let pl = $derived(set_closurable(config?.pl, 1))
11
+ let pr = $derived(set_closurable(config?.pr, 1))
12
+ let min_width = $derived(set_closurable(config?.min_width, 50))
13
+ let min_height = $derived(set_closurable(config?.min_height, 50))
14
+ let target_width = $derived(set_closurable(config?.target_width, 400))
15
+ let target_height = $derived(set_closurable(config?.target_height, type == "dropdown" ? null : 400))
16
+ let max_width = $derived(set_closurable(config?.max_width, null))
17
+ let max_height = $derived(set_closurable(config?.max_height, null))
18
+ let edge_forgiveness = $derived(set_closurable(config?.edge_forgiveness, 10))
19
+ let is_disabled = $derived(set_closurable(config?.is_disabled, false))
20
+ let is_show_x = $derived(set_closurable(config?.is_show_x, true))
21
+ let border_radius = $derived(set_closurable(config?.border_radius, 2))
22
+ let background_color = $derived(set_closurable_color(config?.background_color, "var(--bg)"))
23
+ let border_color = $derived(set_closurable_color(config?.border_color, "var(--shadow5-t)"))
24
+ let contrast_color = $derived(set_closurable_color(config?.contrast_color, "var(--g14-t)"))
25
+ let drop_color = $derived(set_closurable_color(config?.drop_color, "var(--shadow8)"))
26
+ let header = $derived(set_closurable(config?.header, null))
27
+ let header_font_size = $derived(set_closurable(config?.header_font_size, 2))
28
+ let is_alt_content_shown = $derived(set_closurable(config?.is_alt_content_shown, false))
29
+ let corner = $derived(set_closurable(config?.corner, null))
30
+ let panel_side = $derived(set_closurable(config?.panel_side, "right"))
31
+ let can_swipe_close = $derived(set_closurable(config?.can_swipe_close, false))
32
+ let is_non_closable = $derived(set_closurable(config?.is_non_closable, false))
33
+
34
+ let popover_type = $derived(set_closurable(config?.popover_type, "auto")) // auto or manual
35
+ let positioning = $state(null)
36
+ let is_show = $state(false)
37
+
38
+ let x_button_manager = create_button_manager({
39
+ type: "plain",
40
+ support_icon: "x",
41
+ l: 8,
42
+ is_icon_bg_tint: false,
43
+ icon_size: 1.6,
44
+ icon_sw: 50,
45
+ is_uniform: true,
46
+ border_radius: () => border_radius * 0.6,
47
+ on_click: () => close(),
48
+ })
49
+
50
+ let temp_message = $state(null)
51
+ function show_temp_message(message, icon = "success", ms = 1800, is_close_on_end = true, on_finish) {
52
+ temp_message = {
53
+ message,
54
+ icon,
55
+ }
56
+ setTimeout(() => {
57
+ if (is_close_on_end) {
58
+ close()
59
+ setTimeout(() => {
60
+ temp_message = null
61
+ }, 300)
62
+ } else {
63
+ temp_message = null
64
+ }
65
+ if (typeof on_finish == "function") {
66
+ on_finish()
67
+ }
68
+ }, ms)
69
+ }
70
+
71
+ function handle_screen_change() {
72
+ if (typeof window === "undefined" || typeof document === "undefined") {
73
+ return
74
+ }
75
+ const popover_el = document?.querySelector(`#popover_${id}`)
76
+ const is_popover_open = popover_el?.matches(":popover-open")
77
+ if (is_popover_open) {
78
+ positioning = calc_positions()
79
+ }
80
+ }
81
+
82
+ function open() {
83
+ if (typeof window === "undefined" || typeof document === "undefined") {
84
+ return
85
+ }
86
+ const popover_el = document?.querySelector(`#popover_${id}`)
87
+ if (popover_el) {
88
+ popover_el.showPopover()
89
+ is_show = true
90
+ }
91
+ }
92
+
93
+ function close() {
94
+ if (typeof window === "undefined" || typeof document === "undefined" || is_non_closable) {
95
+ return
96
+ }
97
+ const popover_el = document?.querySelector(`#popover_${id}`)
98
+ if (popover_el) {
99
+ popover_el.hidePopover()
100
+ is_show = false
101
+ }
102
+ }
103
+
104
+ function toggle() {
105
+ if (typeof window === "undefined" || typeof document === "undefined" || (is_non_closable && is_show)) {
106
+ return
107
+ }
108
+ const popover_el = document?.querySelector(`#popover_${id}`)
109
+ if (popover_el) {
110
+ popover_el.togglePopover()
111
+ }
112
+ }
113
+
114
+ function handle_before_toggle(e) {
115
+ if (is_show && is_non_closable) {
116
+ e.preventDefault()
117
+ }
118
+ is_show = e?.newState === "open"
119
+ if (e?.newState === "open") {
120
+ positioning = calc_positions()
121
+ if (config?.on_open) {
122
+ config?.on_open()
123
+ }
124
+ } else {
125
+ if (config?.on_close) {
126
+ config?.on_close()
127
+ }
128
+ }
129
+ }
130
+
131
+ function calc_positions() {
132
+ if (typeof window === "undefined" || typeof document === "undefined") {
133
+ return null
134
+ }
135
+ const screen_width = window?.innerWidth
136
+ const screen_height = window?.innerHeight
137
+ let type_to_use =
138
+ min_width && screen_width && screen_width < min_width + 2 * edge_forgiveness && type != "panel" ? "full" : type
139
+ let popover_left_pos = "0"
140
+ let popover_top_pos = "0"
141
+ let popover_el = document?.querySelector(`#popover_${id}`)
142
+ if (popover_el && !isNaN(screen_width) && !isNaN(screen_height)) {
143
+ let anchor_el = document?.querySelector(anchor_id ? `#${anchor_id}` : `#anchor_el_${id}`) // if button toggle el diff than popover el use this is on toggle button
144
+ const base_rect =
145
+ type_to_use == "dropdown" && !!anchor_el
146
+ ? anchor_el.getBoundingClientRect()
147
+ : popover_el.getBoundingClientRect()
148
+ type_to_use =
149
+ ((target_width >= screen_width && screen_width <= target_width) ||
150
+ (target_height >= screen_height && screen_height <= target_height)) &&
151
+ type != "panel"
152
+ ? "full"
153
+ : type_to_use
154
+ let is_popover_cross_base_vertically = false
155
+ const space_remaining_below = screen_height - base_rect.bottom - edge_forgiveness - target_height
156
+ const space_remaining_above = base_rect.top - edge_forgiveness - target_height
157
+ if (space_remaining_below >= 0) {
158
+ popover_top_pos = base_rect.bottom - edge_forgiveness
159
+ } else if (space_remaining_above >= 0) {
160
+ popover_top_pos = base_rect.top - target_height + edge_forgiveness
161
+ } else {
162
+ popover_top_pos = (screen_height - target_height) / 2
163
+ is_popover_cross_base_vertically = true
164
+ }
165
+ popover_left_pos = base_rect.left
166
+ let space_remaining_left = base_rect.left - target_width - edge_forgiveness
167
+ const space_remaining_right = screen_width - base_rect.right - target_width - edge_forgiveness
168
+ const space_remaining_left_to_end = screen_width - base_rect.left - target_width - edge_forgiveness
169
+ const space_remaining_right_to_start = base_rect.right - target_width - edge_forgiveness
170
+ if (is_popover_cross_base_vertically && space_remaining_right > 0) {
171
+ popover_left_pos = base_rect.right - edge_forgiveness
172
+ } else if (is_popover_cross_base_vertically && space_remaining_left > 0) {
173
+ popover_left_pos = base_rect.left - target_width + edge_forgiveness
174
+ } else if (!is_popover_cross_base_vertically && space_remaining_left_to_end < 0) {
175
+ popover_left_pos = screen_width - target_width - edge_forgiveness
176
+ } else if (space_remaining_left_to_end > 0) {
177
+ popover_left_pos = base_rect.left - edge_forgiveness
178
+ } else if (space_remaining_right_to_start > 0) {
179
+ popover_left_pos = base_rect.right - target_width
180
+ }
181
+ if (type_to_use == "center") {
182
+ popover_left_pos = (screen_width - target_width) / 2
183
+ popover_top_pos = (screen_height - target_height) / 2
184
+ } else if (type_to_use == "dropdown") {
185
+ popover_left_pos = parseInt(popover_left_pos) + edge_forgiveness
186
+ popover_top_pos = parseInt(popover_top_pos) + edge_forgiveness
187
+ }
188
+ }
189
+ if (parseInt(target_height) > screen_height) {
190
+ return {
191
+ type_to_use: "full",
192
+ popover_left_pos,
193
+ popover_top_pos: 0,
194
+ min_width,
195
+ max_width,
196
+ target_width,
197
+ target_height: screen_height - 2 * edge_forgiveness,
198
+ min_height: screen_height - 2 * edge_forgiveness,
199
+ max_height: screen_height - 2 * edge_forgiveness,
200
+ edge_forgiveness,
201
+ }
202
+ }
203
+ return {
204
+ type_to_use,
205
+ popover_left_pos,
206
+ popover_top_pos,
207
+ min_width,
208
+ max_width,
209
+ target_width,
210
+ target_height,
211
+ min_height,
212
+ max_height,
213
+ edge_forgiveness,
214
+ }
215
+ }
216
+
217
+ // function handledown_overflow_swipe() {
218
+ // if (positioning?.type_to_use === "full" && can_swipe_close) {
219
+ // toggle()
220
+ // }
221
+ // }
222
+
223
+ function init(config) {
224
+ // tbd
225
+ }
226
+
227
+ init(config)
228
+
229
+ return {
230
+ id,
231
+ get type() {
232
+ return type
233
+ },
234
+ get popover_type() {
235
+ return popover_type
236
+ },
237
+ get anchor_id() {
238
+ return anchor_id
239
+ },
240
+ get pt() {
241
+ return pt
242
+ },
243
+ get pb() {
244
+ return pb
245
+ },
246
+ get pl() {
247
+ return pl
248
+ },
249
+ get pr() {
250
+ return pr
251
+ },
252
+ get positioning() {
253
+ return positioning
254
+ },
255
+ get is_disabled() {
256
+ return is_disabled
257
+ },
258
+ get is_show_x() {
259
+ return is_show_x
260
+ },
261
+ get border_radius() {
262
+ return border_radius
263
+ },
264
+ get background_color() {
265
+ return background_color
266
+ },
267
+ get border_color() {
268
+ return border_color
269
+ },
270
+ get contrast_color() {
271
+ return contrast_color
272
+ },
273
+ get drop_color() {
274
+ return drop_color
275
+ },
276
+ get header() {
277
+ return header
278
+ },
279
+ get header_font_size() {
280
+ return header_font_size
281
+ },
282
+ get is_alt_content_shown() {
283
+ return is_alt_content_shown
284
+ },
285
+ get corner() {
286
+ return corner
287
+ },
288
+ get panel_side() {
289
+ return panel_side
290
+ },
291
+ get can_swipe_close() {
292
+ return can_swipe_close
293
+ },
294
+ get is_non_closable() {
295
+ return is_non_closable
296
+ },
297
+ get target_width() {
298
+ return target_width
299
+ },
300
+ get target_height() {
301
+ return target_height
302
+ },
303
+ get x_button_manager() {
304
+ return x_button_manager
305
+ },
306
+ get temp_message() {
307
+ return temp_message
308
+ },
309
+ get is_show() {
310
+ return is_show
311
+ },
312
+ handle_screen_change,
313
+ open,
314
+ close,
315
+ toggle,
316
+ handle_before_toggle,
317
+ show_temp_message,
318
+ }
319
+ }