Skip to content

Commit 76d152a

Browse files
split "options" into individual props
1 parent 509faa9 commit 76d152a

File tree

2 files changed

+62
-36
lines changed

2 files changed

+62
-36
lines changed

nicegui/elements/notification.js

+24-2
Original file line numberDiff line numberDiff line change
@@ -16,13 +16,35 @@ export default {
1616
convertedOptions() {
1717
convertDynamicProperties(this.options, true);
1818
const options = {
19-
...this.options,
19+
message: this.message,
20+
position: this.position,
21+
multiLine: this.multiLine,
22+
spinner: this.spinner,
23+
closeBtn: this.closeBtn,
24+
timeout: this.timeout,
25+
group: this.group,
26+
attrs: this.attrs,
27+
type: this.type,
28+
color: this.color,
29+
icon: this.icon,
30+
kwargs: this.kwargs,
2031
onDismiss: () => this.$emit("dismiss"),
2132
};
2233
return options;
2334
},
2435
},
2536
props: {
26-
options: Object,
37+
message: String,
38+
position: String,
39+
multiLine: Boolean,
40+
spinner: Boolean,
41+
closeBtn: Object,
42+
timeout: Number,
43+
group: Boolean,
44+
attrs: Object,
45+
type: String,
46+
color: String,
47+
icon: String,
48+
kwargs: Object,
2749
},
2850
};

nicegui/elements/notification.py

+38-34
Original file line numberDiff line numberDiff line change
@@ -67,25 +67,29 @@ def __init__(self,
6767
with context.client.layout:
6868
super().__init__()
6969
if options:
70-
self._props['options'] = options
70+
self._props.update(options)
7171
else:
72-
self._props['options'] = {
73-
'message': str(message),
74-
'position': position,
75-
'multiLine': multi_line,
76-
'spinner': spinner,
77-
'closeBtn': close_button,
78-
'timeout': (timeout or 0) * 1000,
79-
'group': False,
80-
'attrs': {'data-id': f'nicegui-dialog-{self.id}'},
81-
}
72+
if message != '':
73+
self._props['message'] = str(message)
74+
if position != 'bottom':
75+
self._props['position'] = position
76+
if multi_line:
77+
self._props['multiLine'] = multi_line
78+
if spinner:
79+
self._props['spinner'] = spinner
80+
if close_button:
81+
self._props['closeBtn'] = close_button
82+
if timeout != 5.0:
83+
self._props['timeout'] = (timeout or 0) * 1000
84+
self._props['group'] = False
85+
self._props['attrs'] = {'data-id': f'nicegui-dialog-{self.id}'}
8286
if type is not None:
83-
self._props['options']['type'] = type
87+
self._props['type'] = type
8488
if color is not None:
85-
self._props['options']['color'] = color
89+
self._props['color'] = color
8690
if icon is not None:
87-
self._props['options']['icon'] = icon
88-
self._props['options'].update(kwargs)
91+
self._props['icon'] = icon
92+
self._props['kwargs'] = kwargs
8993

9094
if on_dismiss:
9195
self.on_dismiss(on_dismiss)
@@ -102,90 +106,90 @@ async def handle_dismiss() -> None:
102106
@property
103107
def message(self) -> str:
104108
"""Message text."""
105-
return self._props['options']['message']
109+
return self._props['message']
106110

107111
@message.setter
108112
def message(self, value: Any) -> None:
109-
self._props['options']['message'] = str(value)
113+
self._props['message'] = str(value)
110114
self.update()
111115

112116
@property
113117
def position(self) -> NotificationPosition:
114118
"""Position on the screen."""
115-
return self._props['options']['position']
119+
return self._props['position']
116120

117121
@position.setter
118122
def position(self, value: NotificationPosition) -> None:
119-
self._props['options']['position'] = value
123+
self._props['position'] = value
120124
self.update()
121125

122126
@property
123127
def type(self) -> NotificationType:
124128
"""Type of the notification."""
125-
return self._props['options'].get('type')
129+
return self._props.get('type')
126130

127131
@type.setter
128132
def type(self, value: NotificationType) -> None:
129133
if value is None:
130-
self._props['options'].pop('type', None)
134+
self._props.pop('type', None)
131135
else:
132-
self._props['options']['type'] = value
136+
self._props['type'] = value
133137
self.update()
134138

135139
@property
136140
def color(self) -> Optional[str]:
137141
"""Color of the notification."""
138-
return self._props['options'].get('color')
142+
return self._props.get('color')
139143

140144
@color.setter
141145
def color(self, value: Optional[str]) -> None:
142146
if value is None:
143-
self._props['options'].pop('color', None)
147+
self._props.pop('color', None)
144148
else:
145-
self._props['options']['color'] = value
149+
self._props['color'] = value
146150
self.update()
147151

148152
@property
149153
def multi_line(self) -> bool:
150154
"""Whether the notification is multi-line."""
151-
return self._props['options']['multiLine']
155+
return self._props['multiLine']
152156

153157
@multi_line.setter
154158
def multi_line(self, value: bool) -> None:
155-
self._props['options']['multiLine'] = value
159+
self._props['multiLine'] = value
156160
self.update()
157161

158162
@property
159163
def icon(self) -> Optional[str]:
160164
"""Icon of the notification."""
161-
return self._props['options'].get('icon')
165+
return self._props.get('icon')
162166

163167
@icon.setter
164168
def icon(self, value: Optional[str]) -> None:
165169
if value is None:
166-
self._props['options'].pop('icon', None)
170+
self._props.pop('icon', None)
167171
else:
168-
self._props['options']['icon'] = value
172+
self._props['icon'] = value
169173
self.update()
170174

171175
@property
172176
def spinner(self) -> bool:
173177
"""Whether the notification is a spinner."""
174-
return self._props['options']['spinner']
178+
return self._props['spinner']
175179

176180
@spinner.setter
177181
def spinner(self, value: bool) -> None:
178-
self._props['options']['spinner'] = value
182+
self._props['spinner'] = value
179183
self.update()
180184

181185
@property
182186
def close_button(self) -> Union[bool, str]:
183187
"""Whether the notification has a close button."""
184-
return self._props['options']['closeBtn']
188+
return self._props['closeBtn']
185189

186190
@close_button.setter
187191
def close_button(self, value: Union[bool, str]) -> None:
188-
self._props['options']['closeBtn'] = value
192+
self._props['closeBtn'] = value
189193
self.update()
190194

191195
def on_dismiss(self, callback: Handler[UiEventArguments]) -> Self:

0 commit comments

Comments
 (0)