dash-startup-loading-plugin 1.0.2__tar.gz → 1.0.3__tar.gz
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.
- {dash_startup_loading_plugin-1.0.2 → dash_startup_loading_plugin-1.0.3}/MANIFEST.in +1 -0
- {dash_startup_loading_plugin-1.0.2/src/dash_startup_loading_plugin.egg-info → dash_startup_loading_plugin-1.0.3}/PKG-INFO +12 -8
- {dash_startup_loading_plugin-1.0.2/src/dash_startup_loading_plugin → dash_startup_loading_plugin-1.0.3}/README.md +11 -7
- {dash_startup_loading_plugin-1.0.2 → dash_startup_loading_plugin-1.0.3}/README.zh-CN.md +9 -6
- {dash_startup_loading_plugin-1.0.2 → dash_startup_loading_plugin-1.0.3}/pyproject.toml +1 -1
- {dash_startup_loading_plugin-1.0.2 → dash_startup_loading_plugin-1.0.3/src/dash_startup_loading_plugin}/README.md +11 -7
- {dash_startup_loading_plugin-1.0.2 → dash_startup_loading_plugin-1.0.3}/src/dash_startup_loading_plugin/README.zh-CN.md +9 -6
- {dash_startup_loading_plugin-1.0.2 → dash_startup_loading_plugin-1.0.3}/src/dash_startup_loading_plugin/__init__.py +1 -1
- {dash_startup_loading_plugin-1.0.2 → dash_startup_loading_plugin-1.0.3}/src/dash_startup_loading_plugin/plugin.py +1 -1
- {dash_startup_loading_plugin-1.0.2 → dash_startup_loading_plugin-1.0.3/src/dash_startup_loading_plugin.egg-info}/PKG-INFO +12 -8
- {dash_startup_loading_plugin-1.0.2 → dash_startup_loading_plugin-1.0.3}/tests/test_plugin.py +9 -0
- {dash_startup_loading_plugin-1.0.2 → dash_startup_loading_plugin-1.0.3}/LICENSE +0 -0
- {dash_startup_loading_plugin-1.0.2 → dash_startup_loading_plugin-1.0.3}/setup.cfg +0 -0
- {dash_startup_loading_plugin-1.0.2 → dash_startup_loading_plugin-1.0.3}/src/dash_startup_loading_plugin/examples/__init__.py +0 -0
- {dash_startup_loading_plugin-1.0.2 → dash_startup_loading_plugin-1.0.3}/src/dash_startup_loading_plugin/examples/__main__.py +0 -0
- {dash_startup_loading_plugin-1.0.2 → dash_startup_loading_plugin-1.0.3}/src/dash_startup_loading_plugin/examples/antd.py +0 -0
- {dash_startup_loading_plugin-1.0.2 → dash_startup_loading_plugin-1.0.3}/src/dash_startup_loading_plugin/examples/basic.py +0 -0
- {dash_startup_loading_plugin-1.0.2 → dash_startup_loading_plugin-1.0.3}/src/dash_startup_loading_plugin/examples/cli.py +0 -0
- {dash_startup_loading_plugin-1.0.2 → dash_startup_loading_plugin-1.0.3}/src/dash_startup_loading_plugin/examples/fac.py +0 -0
- {dash_startup_loading_plugin-1.0.2 → dash_startup_loading_plugin-1.0.3}/src/dash_startup_loading_plugin/examples/mantine.py +0 -0
- {dash_startup_loading_plugin-1.0.2 → dash_startup_loading_plugin-1.0.3}/src/dash_startup_loading_plugin/examples/shared.py +0 -0
- {dash_startup_loading_plugin-1.0.2 → dash_startup_loading_plugin-1.0.3}/src/dash_startup_loading_plugin/resources/loading.css +0 -0
- {dash_startup_loading_plugin-1.0.2 → dash_startup_loading_plugin-1.0.3}/src/dash_startup_loading_plugin/resources/loading.js +0 -0
- {dash_startup_loading_plugin-1.0.2 → dash_startup_loading_plugin-1.0.3}/src/dash_startup_loading_plugin/resources/theme.js +0 -0
- {dash_startup_loading_plugin-1.0.2 → dash_startup_loading_plugin-1.0.3}/src/dash_startup_loading_plugin.egg-info/SOURCES.txt +0 -0
- {dash_startup_loading_plugin-1.0.2 → dash_startup_loading_plugin-1.0.3}/src/dash_startup_loading_plugin.egg-info/dependency_links.txt +0 -0
- {dash_startup_loading_plugin-1.0.2 → dash_startup_loading_plugin-1.0.3}/src/dash_startup_loading_plugin.egg-info/entry_points.txt +0 -0
- {dash_startup_loading_plugin-1.0.2 → dash_startup_loading_plugin-1.0.3}/src/dash_startup_loading_plugin.egg-info/requires.txt +0 -0
- {dash_startup_loading_plugin-1.0.2 → dash_startup_loading_plugin-1.0.3}/src/dash_startup_loading_plugin.egg-info/top_level.txt +0 -0
- {dash_startup_loading_plugin-1.0.2 → dash_startup_loading_plugin-1.0.3}/tests/test_documentation.py +0 -0
- {dash_startup_loading_plugin-1.0.2 → dash_startup_loading_plugin-1.0.3}/tests/test_examples.py +0 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: dash-startup-loading-plugin
|
|
3
|
-
Version: 1.0.
|
|
3
|
+
Version: 1.0.3
|
|
4
4
|
Summary: A configurable full-screen startup loading overlay for Dash apps, packaged as a Dash Hooks plugin.
|
|
5
5
|
Author-email: Ethan Zhang <ethan.zhang2016@gmail.com>
|
|
6
6
|
License-Expression: MIT
|
|
@@ -34,7 +34,7 @@ document.
|
|
|
34
34
|
## Installation
|
|
35
35
|
|
|
36
36
|
```bash
|
|
37
|
-
pip install "dash-startup-loading-plugin>=1.0.
|
|
37
|
+
pip install "dash-startup-loading-plugin>=1.0.3"
|
|
38
38
|
```
|
|
39
39
|
|
|
40
40
|
Dash discovers the plugin through its `dash_hooks` entry point. Installing the
|
|
@@ -62,6 +62,10 @@ if __name__ == "__main__":
|
|
|
62
62
|
app.run(debug=True)
|
|
63
63
|
```
|
|
64
64
|
|
|
65
|
+
By default, the overlay only replaces Dash's built-in `._dash-loading`
|
|
66
|
+
animation and closes once Dash has rendered the application layout. Waiting
|
|
67
|
+
for lazy or asynchronous component placeholders is opt-in.
|
|
68
|
+
|
|
65
69
|
Call `configure()` before creating `Dash` when custom behavior is needed:
|
|
66
70
|
|
|
67
71
|
```python
|
|
@@ -180,16 +184,16 @@ The overlay closes when:
|
|
|
180
184
|
1. `root_selector` exists and no longer contains `._dash-loading`.
|
|
181
185
|
2. The root contains rendered content.
|
|
182
186
|
3. Every `required_selectors` entry exists.
|
|
183
|
-
4.
|
|
187
|
+
4. If `pending_selector` is configured, no matching node remains under the root.
|
|
184
188
|
5. The conditions remain true for two animation frames.
|
|
185
189
|
|
|
186
190
|
`timeout_ms` is a forced-dismiss fallback. `minimum_display_ms` applies to
|
|
187
191
|
ready and manual dismissal, but does not delay a timeout.
|
|
188
192
|
|
|
189
|
-
`pending_selector` delays dismissal while any matching element
|
|
190
|
-
`root_selector`. It is useful for lazy or asynchronous
|
|
191
|
-
mounted before the real content.
|
|
192
|
-
|
|
193
|
+
`pending_selector` optionally delays dismissal while any matching element
|
|
194
|
+
remains inside `root_selector`. It is useful for lazy or asynchronous
|
|
195
|
+
placeholders that are mounted before the real content. The check is disabled
|
|
196
|
+
by default; opt in with an application-specific CSS selector:
|
|
193
197
|
|
|
194
198
|
```python
|
|
195
199
|
configure(pending_selector="[data-async-placeholder]")
|
|
@@ -208,7 +212,7 @@ configure(pending_selector=None)
|
|
|
208
212
|
| `aria_label` | `"Loading"` | Accessible status label. |
|
|
209
213
|
| `root_selector` | `"#react-entry-point"` | Root observed for rendered content. |
|
|
210
214
|
| `required_selectors` | `("#react-entry-point",)` | Selectors that must exist before dismissal. |
|
|
211
|
-
| `pending_selector` | `
|
|
215
|
+
| `pending_selector` | `None` | Optional selector checked under `root_selector`; when configured, dismissal waits until all matches disappear. |
|
|
212
216
|
| `timeout_ms` | `6000` | Forced-dismiss timeout; use `None` to disable. |
|
|
213
217
|
| `minimum_display_ms` | `0` | Minimum display time. |
|
|
214
218
|
| `fade_duration_ms` | `160` | Fade-out duration. |
|
|
@@ -20,7 +20,7 @@ document.
|
|
|
20
20
|
## Installation
|
|
21
21
|
|
|
22
22
|
```bash
|
|
23
|
-
pip install "dash-startup-loading-plugin>=1.0.
|
|
23
|
+
pip install "dash-startup-loading-plugin>=1.0.3"
|
|
24
24
|
```
|
|
25
25
|
|
|
26
26
|
Dash discovers the plugin through its `dash_hooks` entry point. Installing the
|
|
@@ -48,6 +48,10 @@ if __name__ == "__main__":
|
|
|
48
48
|
app.run(debug=True)
|
|
49
49
|
```
|
|
50
50
|
|
|
51
|
+
By default, the overlay only replaces Dash's built-in `._dash-loading`
|
|
52
|
+
animation and closes once Dash has rendered the application layout. Waiting
|
|
53
|
+
for lazy or asynchronous component placeholders is opt-in.
|
|
54
|
+
|
|
51
55
|
Call `configure()` before creating `Dash` when custom behavior is needed:
|
|
52
56
|
|
|
53
57
|
```python
|
|
@@ -166,16 +170,16 @@ The overlay closes when:
|
|
|
166
170
|
1. `root_selector` exists and no longer contains `._dash-loading`.
|
|
167
171
|
2. The root contains rendered content.
|
|
168
172
|
3. Every `required_selectors` entry exists.
|
|
169
|
-
4.
|
|
173
|
+
4. If `pending_selector` is configured, no matching node remains under the root.
|
|
170
174
|
5. The conditions remain true for two animation frames.
|
|
171
175
|
|
|
172
176
|
`timeout_ms` is a forced-dismiss fallback. `minimum_display_ms` applies to
|
|
173
177
|
ready and manual dismissal, but does not delay a timeout.
|
|
174
178
|
|
|
175
|
-
`pending_selector` delays dismissal while any matching element
|
|
176
|
-
`root_selector`. It is useful for lazy or asynchronous
|
|
177
|
-
mounted before the real content.
|
|
178
|
-
|
|
179
|
+
`pending_selector` optionally delays dismissal while any matching element
|
|
180
|
+
remains inside `root_selector`. It is useful for lazy or asynchronous
|
|
181
|
+
placeholders that are mounted before the real content. The check is disabled
|
|
182
|
+
by default; opt in with an application-specific CSS selector:
|
|
179
183
|
|
|
180
184
|
```python
|
|
181
185
|
configure(pending_selector="[data-async-placeholder]")
|
|
@@ -194,7 +198,7 @@ configure(pending_selector=None)
|
|
|
194
198
|
| `aria_label` | `"Loading"` | Accessible status label. |
|
|
195
199
|
| `root_selector` | `"#react-entry-point"` | Root observed for rendered content. |
|
|
196
200
|
| `required_selectors` | `("#react-entry-point",)` | Selectors that must exist before dismissal. |
|
|
197
|
-
| `pending_selector` | `
|
|
201
|
+
| `pending_selector` | `None` | Optional selector checked under `root_selector`; when configured, dismissal waits until all matches disappear. |
|
|
198
202
|
| `timeout_ms` | `6000` | Forced-dismiss timeout; use `None` to disable. |
|
|
199
203
|
| `minimum_display_ms` | `0` | Minimum display time. |
|
|
200
204
|
| `fade_duration_ms` | `160` | Fade-out duration. |
|
|
@@ -18,7 +18,7 @@
|
|
|
18
18
|
## 安装
|
|
19
19
|
|
|
20
20
|
```bash
|
|
21
|
-
pip install "dash-startup-loading-plugin>=1.0.
|
|
21
|
+
pip install "dash-startup-loading-plugin>=1.0.3"
|
|
22
22
|
```
|
|
23
23
|
|
|
24
24
|
Dash 会通过 `dash_hooks` entry point 自动发现插件。安装后,默认 loading
|
|
@@ -46,6 +46,9 @@ if __name__ == "__main__":
|
|
|
46
46
|
app.run(debug=True)
|
|
47
47
|
```
|
|
48
48
|
|
|
49
|
+
默认情况下,遮罩只替换 Dash 自带的 `._dash-loading` 动画,并在 Dash
|
|
50
|
+
渲染出应用布局后关闭。等待懒加载或异步组件的占位节点消失属于可选行为。
|
|
51
|
+
|
|
49
52
|
如需自定义行为,请在创建 `Dash` 实例前调用 `configure()`:
|
|
50
53
|
|
|
51
54
|
```python
|
|
@@ -160,15 +163,15 @@ dash-startup-loading-plugin examples.dash \
|
|
|
160
163
|
1. `root_selector` 已存在,且内部不再包含 `._dash-loading`。
|
|
161
164
|
2. 根节点中已有实际渲染内容。
|
|
162
165
|
3. `required_selectors` 中的所有选择器都已匹配到节点。
|
|
163
|
-
4.
|
|
166
|
+
4. 如果配置了 `pending_selector`,根节点中已不存在匹配它的节点。
|
|
164
167
|
5. 上述状态连续保持两个动画帧。
|
|
165
168
|
|
|
166
169
|
`timeout_ms` 是强制关闭的安全兜底。`minimum_display_ms` 适用于正常就绪和
|
|
167
170
|
手动关闭,但不会延迟 timeout。
|
|
168
171
|
|
|
169
|
-
`pending_selector`
|
|
170
|
-
在 `root_selector`
|
|
171
|
-
|
|
172
|
+
`pending_selector` 可用于在异步或懒加载占位节点仍存在时延迟关闭遮罩。它只会
|
|
173
|
+
在 `root_selector` 内查找匹配节点。该检查默认关闭;如需等待异步组件加载完成,
|
|
174
|
+
请显式设置为应用自己的 CSS 选择器:
|
|
172
175
|
|
|
173
176
|
```python
|
|
174
177
|
configure(pending_selector="[data-async-placeholder]")
|
|
@@ -186,7 +189,7 @@ configure(pending_selector=None)
|
|
|
186
189
|
| `aria_label` | `"Loading"` | 无障碍状态标签。 |
|
|
187
190
|
| `root_selector` | `"#react-entry-point"` | 用于观察渲染内容的根节点。 |
|
|
188
191
|
| `required_selectors` | `("#react-entry-point",)` | 关闭遮罩前必须存在的节点选择器。 |
|
|
189
|
-
| `pending_selector` | `
|
|
192
|
+
| `pending_selector` | `None` | 可选的根节点内选择器;配置后,所有匹配节点消失才允许关闭。 |
|
|
190
193
|
| `timeout_ms` | `6000` | 强制关闭超时;设置为 `None` 可禁用。 |
|
|
191
194
|
| `minimum_display_ms` | `0` | 最短显示时间。 |
|
|
192
195
|
| `fade_duration_ms` | `160` | 淡出时长。 |
|
|
@@ -4,7 +4,7 @@ build-backend = "setuptools.build_meta"
|
|
|
4
4
|
|
|
5
5
|
[project]
|
|
6
6
|
name = "dash-startup-loading-plugin"
|
|
7
|
-
version = "1.0.
|
|
7
|
+
version = "1.0.3"
|
|
8
8
|
description = "A configurable full-screen startup loading overlay for Dash apps, packaged as a Dash Hooks plugin."
|
|
9
9
|
readme = "README.md"
|
|
10
10
|
requires-python = ">=3.9"
|
|
@@ -20,7 +20,7 @@ document.
|
|
|
20
20
|
## Installation
|
|
21
21
|
|
|
22
22
|
```bash
|
|
23
|
-
pip install "dash-startup-loading-plugin>=1.0.
|
|
23
|
+
pip install "dash-startup-loading-plugin>=1.0.3"
|
|
24
24
|
```
|
|
25
25
|
|
|
26
26
|
Dash discovers the plugin through its `dash_hooks` entry point. Installing the
|
|
@@ -48,6 +48,10 @@ if __name__ == "__main__":
|
|
|
48
48
|
app.run(debug=True)
|
|
49
49
|
```
|
|
50
50
|
|
|
51
|
+
By default, the overlay only replaces Dash's built-in `._dash-loading`
|
|
52
|
+
animation and closes once Dash has rendered the application layout. Waiting
|
|
53
|
+
for lazy or asynchronous component placeholders is opt-in.
|
|
54
|
+
|
|
51
55
|
Call `configure()` before creating `Dash` when custom behavior is needed:
|
|
52
56
|
|
|
53
57
|
```python
|
|
@@ -166,16 +170,16 @@ The overlay closes when:
|
|
|
166
170
|
1. `root_selector` exists and no longer contains `._dash-loading`.
|
|
167
171
|
2. The root contains rendered content.
|
|
168
172
|
3. Every `required_selectors` entry exists.
|
|
169
|
-
4.
|
|
173
|
+
4. If `pending_selector` is configured, no matching node remains under the root.
|
|
170
174
|
5. The conditions remain true for two animation frames.
|
|
171
175
|
|
|
172
176
|
`timeout_ms` is a forced-dismiss fallback. `minimum_display_ms` applies to
|
|
173
177
|
ready and manual dismissal, but does not delay a timeout.
|
|
174
178
|
|
|
175
|
-
`pending_selector` delays dismissal while any matching element
|
|
176
|
-
`root_selector`. It is useful for lazy or asynchronous
|
|
177
|
-
mounted before the real content.
|
|
178
|
-
|
|
179
|
+
`pending_selector` optionally delays dismissal while any matching element
|
|
180
|
+
remains inside `root_selector`. It is useful for lazy or asynchronous
|
|
181
|
+
placeholders that are mounted before the real content. The check is disabled
|
|
182
|
+
by default; opt in with an application-specific CSS selector:
|
|
179
183
|
|
|
180
184
|
```python
|
|
181
185
|
configure(pending_selector="[data-async-placeholder]")
|
|
@@ -194,7 +198,7 @@ configure(pending_selector=None)
|
|
|
194
198
|
| `aria_label` | `"Loading"` | Accessible status label. |
|
|
195
199
|
| `root_selector` | `"#react-entry-point"` | Root observed for rendered content. |
|
|
196
200
|
| `required_selectors` | `("#react-entry-point",)` | Selectors that must exist before dismissal. |
|
|
197
|
-
| `pending_selector` | `
|
|
201
|
+
| `pending_selector` | `None` | Optional selector checked under `root_selector`; when configured, dismissal waits until all matches disappear. |
|
|
198
202
|
| `timeout_ms` | `6000` | Forced-dismiss timeout; use `None` to disable. |
|
|
199
203
|
| `minimum_display_ms` | `0` | Minimum display time. |
|
|
200
204
|
| `fade_duration_ms` | `160` | Fade-out duration. |
|
|
@@ -18,7 +18,7 @@
|
|
|
18
18
|
## 安装
|
|
19
19
|
|
|
20
20
|
```bash
|
|
21
|
-
pip install "dash-startup-loading-plugin>=1.0.
|
|
21
|
+
pip install "dash-startup-loading-plugin>=1.0.3"
|
|
22
22
|
```
|
|
23
23
|
|
|
24
24
|
Dash 会通过 `dash_hooks` entry point 自动发现插件。安装后,默认 loading
|
|
@@ -46,6 +46,9 @@ if __name__ == "__main__":
|
|
|
46
46
|
app.run(debug=True)
|
|
47
47
|
```
|
|
48
48
|
|
|
49
|
+
默认情况下,遮罩只替换 Dash 自带的 `._dash-loading` 动画,并在 Dash
|
|
50
|
+
渲染出应用布局后关闭。等待懒加载或异步组件的占位节点消失属于可选行为。
|
|
51
|
+
|
|
49
52
|
如需自定义行为,请在创建 `Dash` 实例前调用 `configure()`:
|
|
50
53
|
|
|
51
54
|
```python
|
|
@@ -160,15 +163,15 @@ dash-startup-loading-plugin examples.dash \
|
|
|
160
163
|
1. `root_selector` 已存在,且内部不再包含 `._dash-loading`。
|
|
161
164
|
2. 根节点中已有实际渲染内容。
|
|
162
165
|
3. `required_selectors` 中的所有选择器都已匹配到节点。
|
|
163
|
-
4.
|
|
166
|
+
4. 如果配置了 `pending_selector`,根节点中已不存在匹配它的节点。
|
|
164
167
|
5. 上述状态连续保持两个动画帧。
|
|
165
168
|
|
|
166
169
|
`timeout_ms` 是强制关闭的安全兜底。`minimum_display_ms` 适用于正常就绪和
|
|
167
170
|
手动关闭,但不会延迟 timeout。
|
|
168
171
|
|
|
169
|
-
`pending_selector`
|
|
170
|
-
在 `root_selector`
|
|
171
|
-
|
|
172
|
+
`pending_selector` 可用于在异步或懒加载占位节点仍存在时延迟关闭遮罩。它只会
|
|
173
|
+
在 `root_selector` 内查找匹配节点。该检查默认关闭;如需等待异步组件加载完成,
|
|
174
|
+
请显式设置为应用自己的 CSS 选择器:
|
|
172
175
|
|
|
173
176
|
```python
|
|
174
177
|
configure(pending_selector="[data-async-placeholder]")
|
|
@@ -186,7 +189,7 @@ configure(pending_selector=None)
|
|
|
186
189
|
| `aria_label` | `"Loading"` | 无障碍状态标签。 |
|
|
187
190
|
| `root_selector` | `"#react-entry-point"` | 用于观察渲染内容的根节点。 |
|
|
188
191
|
| `required_selectors` | `("#react-entry-point",)` | 关闭遮罩前必须存在的节点选择器。 |
|
|
189
|
-
| `pending_selector` | `
|
|
192
|
+
| `pending_selector` | `None` | 可选的根节点内选择器;配置后,所有匹配节点消失才允许关闭。 |
|
|
190
193
|
| `timeout_ms` | `6000` | 强制关闭超时;设置为 `None` 可禁用。 |
|
|
191
194
|
| `minimum_display_ms` | `0` | 最短显示时间。 |
|
|
192
195
|
| `fade_duration_ms` | `160` | 淡出时长。 |
|
|
@@ -5,7 +5,7 @@ from importlib.metadata import PackageNotFoundError, version
|
|
|
5
5
|
try:
|
|
6
6
|
__version__ = version("dash-startup-loading-plugin")
|
|
7
7
|
except PackageNotFoundError: # pragma: no cover - source tree fallback
|
|
8
|
-
__version__ = "1.0.
|
|
8
|
+
__version__ = "1.0.3"
|
|
9
9
|
|
|
10
10
|
from .plugin import (
|
|
11
11
|
StartupLoadingConfig,
|
|
@@ -37,7 +37,7 @@ class StartupLoadingConfig:
|
|
|
37
37
|
aria_label: str = "Loading"
|
|
38
38
|
root_selector: str = "#react-entry-point"
|
|
39
39
|
required_selectors: tuple[str, ...] = ("#react-entry-point",)
|
|
40
|
-
pending_selector: str | None =
|
|
40
|
+
pending_selector: str | None = None
|
|
41
41
|
timeout_ms: int | None = 6000
|
|
42
42
|
minimum_display_ms: int = 0
|
|
43
43
|
fade_duration_ms: int = 160
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: dash-startup-loading-plugin
|
|
3
|
-
Version: 1.0.
|
|
3
|
+
Version: 1.0.3
|
|
4
4
|
Summary: A configurable full-screen startup loading overlay for Dash apps, packaged as a Dash Hooks plugin.
|
|
5
5
|
Author-email: Ethan Zhang <ethan.zhang2016@gmail.com>
|
|
6
6
|
License-Expression: MIT
|
|
@@ -34,7 +34,7 @@ document.
|
|
|
34
34
|
## Installation
|
|
35
35
|
|
|
36
36
|
```bash
|
|
37
|
-
pip install "dash-startup-loading-plugin>=1.0.
|
|
37
|
+
pip install "dash-startup-loading-plugin>=1.0.3"
|
|
38
38
|
```
|
|
39
39
|
|
|
40
40
|
Dash discovers the plugin through its `dash_hooks` entry point. Installing the
|
|
@@ -62,6 +62,10 @@ if __name__ == "__main__":
|
|
|
62
62
|
app.run(debug=True)
|
|
63
63
|
```
|
|
64
64
|
|
|
65
|
+
By default, the overlay only replaces Dash's built-in `._dash-loading`
|
|
66
|
+
animation and closes once Dash has rendered the application layout. Waiting
|
|
67
|
+
for lazy or asynchronous component placeholders is opt-in.
|
|
68
|
+
|
|
65
69
|
Call `configure()` before creating `Dash` when custom behavior is needed:
|
|
66
70
|
|
|
67
71
|
```python
|
|
@@ -180,16 +184,16 @@ The overlay closes when:
|
|
|
180
184
|
1. `root_selector` exists and no longer contains `._dash-loading`.
|
|
181
185
|
2. The root contains rendered content.
|
|
182
186
|
3. Every `required_selectors` entry exists.
|
|
183
|
-
4.
|
|
187
|
+
4. If `pending_selector` is configured, no matching node remains under the root.
|
|
184
188
|
5. The conditions remain true for two animation frames.
|
|
185
189
|
|
|
186
190
|
`timeout_ms` is a forced-dismiss fallback. `minimum_display_ms` applies to
|
|
187
191
|
ready and manual dismissal, but does not delay a timeout.
|
|
188
192
|
|
|
189
|
-
`pending_selector` delays dismissal while any matching element
|
|
190
|
-
`root_selector`. It is useful for lazy or asynchronous
|
|
191
|
-
mounted before the real content.
|
|
192
|
-
|
|
193
|
+
`pending_selector` optionally delays dismissal while any matching element
|
|
194
|
+
remains inside `root_selector`. It is useful for lazy or asynchronous
|
|
195
|
+
placeholders that are mounted before the real content. The check is disabled
|
|
196
|
+
by default; opt in with an application-specific CSS selector:
|
|
193
197
|
|
|
194
198
|
```python
|
|
195
199
|
configure(pending_selector="[data-async-placeholder]")
|
|
@@ -208,7 +212,7 @@ configure(pending_selector=None)
|
|
|
208
212
|
| `aria_label` | `"Loading"` | Accessible status label. |
|
|
209
213
|
| `root_selector` | `"#react-entry-point"` | Root observed for rendered content. |
|
|
210
214
|
| `required_selectors` | `("#react-entry-point",)` | Selectors that must exist before dismissal. |
|
|
211
|
-
| `pending_selector` | `
|
|
215
|
+
| `pending_selector` | `None` | Optional selector checked under `root_selector`; when configured, dismissal waits until all matches disappear. |
|
|
212
216
|
| `timeout_ms` | `6000` | Forced-dismiss timeout; use `None` to disable. |
|
|
213
217
|
| `minimum_display_ms` | `0` | Minimum display time. |
|
|
214
218
|
| `fade_duration_ms` | `160` | Fade-out duration. |
|
{dash_startup_loading_plugin-1.0.2 → dash_startup_loading_plugin-1.0.3}/tests/test_plugin.py
RENAMED
|
@@ -61,6 +61,15 @@ def test_injects_overlay_after_body_with_custom_attributes():
|
|
|
61
61
|
assert result.count(" data-dash-loading ") == 1
|
|
62
62
|
assert '<span class="dash-loading__spinner"' in result
|
|
63
63
|
assert _data_config(result)["requiredSelectors"] == ["#react-entry-point"]
|
|
64
|
+
assert _data_config(result)["pendingSelector"] is None
|
|
65
|
+
|
|
66
|
+
|
|
67
|
+
def test_waiting_for_async_components_is_opt_in():
|
|
68
|
+
configure(pending_selector="[data-async-placeholder]")
|
|
69
|
+
|
|
70
|
+
result = _inject_overlay("<html><body><main></main></body></html>")
|
|
71
|
+
|
|
72
|
+
assert _data_config(result)["pendingSelector"] == "[data-async-placeholder]"
|
|
64
73
|
|
|
65
74
|
|
|
66
75
|
def test_injection_is_idempotent_and_can_be_disabled():
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{dash_startup_loading_plugin-1.0.2 → dash_startup_loading_plugin-1.0.3}/tests/test_documentation.py
RENAMED
|
File without changes
|
{dash_startup_loading_plugin-1.0.2 → dash_startup_loading_plugin-1.0.3}/tests/test_examples.py
RENAMED
|
File without changes
|