@@ -63,6 +63,7 @@ image =
63
63
lumiComponent " Image" defaults \props -> Hooks .do
64
64
theme <- useTheme
65
65
loaded /\ setLoaded <- Hooks .useState' false
66
+ error /\ setError <- Hooks .useState' false
66
67
67
68
containerRef <- Hooks .useRef Nullable .null
68
69
dimensions /\ setDimensions <- Hooks .useState { width: 20.0 , height: 20.0 }
@@ -97,7 +98,7 @@ image =
97
98
$ Styles.Box ._align Center
98
99
$ Styles.Box ._justify Center
99
100
$$$
100
- [ Monoid .guard (not loaded)
101
+ [ Monoid .guard (not loaded && not error )
101
102
$ let d = fromMaybe 20.0 ([ dimensions.height, dimensions.width ] # minimum)
102
103
in loader
103
104
{ style: R .css
@@ -111,14 +112,21 @@ image =
111
112
{ src: props.content
112
113
, className: " "
113
114
, css: E .css
114
- { width: E .percent 100.0
115
- , height: E .percent 100.0
116
- , objectFit: E .str " cover"
117
- , display: E .str $ if loaded then " block" else " none"
115
+ { objectFit: E .str " cover"
116
+ , display: E .str $ if loaded || error then " block" else " none"
118
117
}
118
+ <> if error
119
+ then E .css
120
+ { width: E .str " auto"
121
+ , height: E .str " auto"
122
+ }
123
+ else E .css
124
+ { height: E .percent 100.0
125
+ , width: E .percent 100.0
126
+ }
119
127
<> props.imgStyle
120
128
, onLoad: handler_ $ setLoaded true
121
- , onError: handler_ $ setLoaded true
129
+ , onError: handler_ $ setError true
122
130
}
123
131
]
124
132
]
0 commit comments