Skip to content

Commit fdc59c0

Browse files
authored
[WC-3035]: Gallery refresh indicator (#1816)
2 parents 247a36d + 7914682 commit fdc59c0

File tree

17 files changed

+152
-97
lines changed

17 files changed

+152
-97
lines changed

packages/modules/data-widgets/src/themesource/datawidgets/web/_datagrid.scss

Lines changed: 0 additions & 80 deletions
Original file line numberDiff line numberDiff line change
@@ -429,86 +429,6 @@ $root: ".widget-datagrid";
429429
display: contents;
430430
}
431431

432-
&-refresh-container {
433-
grid-column: 1 / -1;
434-
padding: 0;
435-
position: relative;
436-
}
437-
438-
&-refresh-indicator {
439-
-webkit-appearance: none;
440-
-moz-appearance: none;
441-
appearance: none;
442-
background-color: var(--border-color-default, #ced0d3);
443-
border: none;
444-
border-radius: 2px;
445-
color: var(--brand-primary, $dg-brand-primary);
446-
height: 4px;
447-
width: 100%;
448-
position: absolute;
449-
left: 0;
450-
right: 0;
451-
452-
&::-webkit-progress-bar {
453-
background-color: transparent;
454-
}
455-
456-
&::-webkit-progress-value {
457-
background-color: currentColor;
458-
transition: all 0.2s;
459-
}
460-
461-
&::-moz-progress-bar {
462-
background-color: currentColor;
463-
transition: all 0.2s;
464-
}
465-
466-
&::-ms-fill {
467-
border: none;
468-
background-color: currentColor;
469-
transition: all 0.2s;
470-
}
471-
472-
&:indeterminate {
473-
background-size: 200% 100%;
474-
background-image: linear-gradient(
475-
to right,
476-
transparent 50%,
477-
currentColor 50%,
478-
currentColor 60%,
479-
transparent 60%,
480-
transparent 71.5%,
481-
currentColor 71.5%,
482-
currentColor 84%,
483-
transparent 84%
484-
);
485-
animation: progress-linear 3s infinite linear;
486-
}
487-
488-
&:indeterminate::-moz-progress-bar {
489-
background-color: transparent;
490-
}
491-
492-
&:indeterminate::-ms-fill {
493-
animation-name: none;
494-
}
495-
496-
@keyframes progress-linear {
497-
0% {
498-
background-size: 200% 100%;
499-
background-position: left -31.25% top 0%;
500-
}
501-
50% {
502-
background-size: 800% 100%;
503-
background-position: left -49% top 0%;
504-
}
505-
100% {
506-
background-size: 400% 100%;
507-
background-position: left -102% top 0%;
508-
}
509-
}
510-
}
511-
512432
&.widget-datagrid-selection-method-click {
513433
.tr.tr-selected .td {
514434
background-color: $dg-grid-selected-row-background;
Lines changed: 83 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,83 @@
1+
.mx-refresh-container {
2+
grid-column: 1 / -1;
3+
padding: 0;
4+
position: relative;
5+
6+
&-padding {
7+
padding: var(--spacing-small) 0;
8+
}
9+
}
10+
11+
.mx-refresh-indicator {
12+
-webkit-appearance: none;
13+
-moz-appearance: none;
14+
appearance: none;
15+
background-color: var(--border-color-default, #ced0d3);
16+
border: none;
17+
border-radius: 2px;
18+
color: var(--brand-primary, $dg-brand-primary);
19+
height: 4px;
20+
width: 100%;
21+
position: absolute;
22+
left: 0;
23+
right: 0;
24+
25+
&::-webkit-progress-bar {
26+
background-color: transparent;
27+
}
28+
29+
&::-webkit-progress-value {
30+
background-color: currentColor;
31+
transition: all 0.2s;
32+
}
33+
34+
&::-moz-progress-bar {
35+
background-color: currentColor;
36+
transition: all 0.2s;
37+
}
38+
39+
&::-ms-fill {
40+
border: none;
41+
background-color: currentColor;
42+
transition: all 0.2s;
43+
}
44+
45+
&:indeterminate {
46+
background-size: 200% 100%;
47+
background-image: linear-gradient(
48+
to right,
49+
transparent 50%,
50+
currentColor 50%,
51+
currentColor 60%,
52+
transparent 60%,
53+
transparent 71.5%,
54+
currentColor 71.5%,
55+
currentColor 84%,
56+
transparent 84%
57+
);
58+
animation: progress-linear 3s infinite linear;
59+
}
60+
61+
&:indeterminate::-moz-progress-bar {
62+
background-color: transparent;
63+
}
64+
65+
&:indeterminate::-ms-fill {
66+
animation-name: none;
67+
}
68+
69+
@keyframes progress-linear {
70+
0% {
71+
background-size: 200% 100%;
72+
background-position: left -31.25% top 0%;
73+
}
74+
50% {
75+
background-size: 800% 100%;
76+
background-position: left -49% top 0%;
77+
}
78+
100% {
79+
background-size: 400% 100%;
80+
background-position: left -102% top 0%;
81+
}
82+
}
83+
}

packages/modules/data-widgets/src/themesource/datawidgets/web/main.scss

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,7 @@
66
@import "drop-down-sort";
77
@import "gallery";
88
@import "gallery-design-properties";
9+
@import "refresh-indicator";
910
@import "three-state-checkbox";
1011
@import "tree-node";
1112
@import "tree-node-design-properties";

packages/pluggableWidgets/datagrid-web/src/components/RefreshIndicator.tsx

Lines changed: 0 additions & 11 deletions
This file was deleted.

packages/pluggableWidgets/datagrid-web/src/components/Widget.tsx

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,4 @@
1+
import { RefreshIndicator } from "@mendix/widget-plugin-component-kit/RefreshIndicator";
12
import { Pagination } from "@mendix/widget-plugin-grid/components/Pagination";
23
import { SelectionStatus } from "@mendix/widget-plugin-grid/selection";
34
import classNames from "classnames";
@@ -25,7 +26,6 @@ import { FocusTargetController } from "@mendix/widget-plugin-grid/keyboard-navig
2526
import { observer } from "mobx-react-lite";
2627
import { RowsRenderer } from "./RowsRenderer";
2728
import { GridHeader } from "./GridHeader";
28-
import { RefreshIndicator } from "./RefreshIndicator";
2929

3030
export interface WidgetProps<C extends GridColumn, T extends ObjectItem = ObjectItem> {
3131
CellComponent: CellComponent<C>;

packages/pluggableWidgets/gallery-web/CHANGELOG.md

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,10 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/),
66

77
## [Unreleased]
88

9+
### Added
10+
11+
- We implemented a new property to show a refresh indicator. With the refresh indicator, any datasource change shows a progress bar on top of Gallery.
12+
913
## [3.2.0] - 2025-08-18
1014

1115
### Changed

packages/pluggableWidgets/gallery-web/package.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
{
22
"name": "@mendix/gallery-web",
33
"widgetName": "Gallery",
4-
"version": "3.2.0",
4+
"version": "3.3.0",
55
"description": "A flexible gallery widget that renders columns, rows and layouts.",
66
"copyright": "© Mendix Technology BV 2025. All rights reserved.",
77
"license": "Apache-2.0",

packages/pluggableWidgets/gallery-web/src/Gallery.editorPreview.tsx

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -104,6 +104,7 @@ function Preview(props: GalleryPreviewProps): ReactElement {
104104
itemEventsController={itemEventsController}
105105
focusController={focusController}
106106
getPosition={getPositionCallback}
107+
showRefreshIndicator={false}
107108
preview
108109
/>
109110
);

packages/pluggableWidgets/gallery-web/src/Gallery.tsx

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -91,6 +91,7 @@ const Container = observer(function GalleryContainer(props: GalleryContainerProp
9191
focusController={focusController}
9292
getPosition={getPositionCallback}
9393
loadMoreButtonCaption={props.loadMoreButtonCaption?.value}
94+
showRefreshIndicator={rootStore.loaderCtrl.showRefreshIndicator}
9495
/>
9596
);
9697
});

packages/pluggableWidgets/gallery-web/src/Gallery.xml

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -37,6 +37,10 @@
3737
<caption>Content placeholder</caption>
3838
<description />
3939
</property>
40+
<property key="refreshIndicator" type="boolean" defaultValue="false">
41+
<caption>Show refresh indicator</caption>
42+
<description>Show a refresh indicator when the data is being loaded.</description>
43+
</property>
4044
</propertyGroup>
4145
<propertyGroup caption="Columns">
4246
<property key="desktopItems" type="integer" defaultValue="1">

0 commit comments

Comments
 (0)