@v1nt1248/3nclient-lib 0.0.21 → 0.0.22

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.
package/package.json CHANGED
@@ -2,7 +2,7 @@
2
2
  "name": "@v1nt1248/3nclient-lib",
3
3
  "license": "AGPL-3.0-or-later",
4
4
  "author": "v1nt1248",
5
- "version": "0.0.21",
5
+ "version": "0.0.22",
6
6
  "description": "Library for 3NWeb clients",
7
7
  "private": false,
8
8
  "type": "module",
@@ -2,7 +2,6 @@
2
2
  /* eslint-disable @typescript-eslint/no-explicit-any */
3
3
  import { computed, onMounted, ref } from 'vue'
4
4
  import type { Component } from 'vue'
5
- import { getRandomId } from '../tools'
6
5
  import Ui3nButton from './ui3n-button.vue'
7
6
 
8
7
  export type Ui3nDialogEvent = 'open' | 'before-close' | 'close' | 'confirm' | 'cancel' | 'click-overlay'
@@ -17,6 +16,7 @@
17
16
  contentCssStyle?: Record<string, string>;
18
17
  confirmButton?: boolean;
19
18
  cancelButton?: boolean;
19
+ onClose?: () => void;
20
20
  onConfirm?: (data: any) => void;
21
21
  onCancel?: (data: any) => void;
22
22
  confirmButtonText?: string;
@@ -88,15 +88,14 @@
88
88
  const show = ref(true)
89
89
  const data = ref(null)
90
90
  const isValid = ref(true)
91
- const dialogId = `dialog-${getRandomId(4)}`
91
+ const dialogElement = ref<HTMLDivElement | null>(null)
92
92
 
93
93
  onMounted(() => {
94
- const dialogElement = document.getElementById(dialogId)
95
- if (dialogElement) {
96
- dialogElement.style.setProperty('--dialog-confirm-button-color', dialogProps.value.confirmButtonColor)
97
- dialogElement.style.setProperty('--dialog-cancel-button-color', dialogProps.value.cancelButtonColor)
98
- dialogElement.style.setProperty('--dialog-confirm-background-color', dialogProps.value.confirmButtonBackground)
99
- dialogElement.style.setProperty('--dialog-cancel-background-color', dialogProps.value.cancelButtonBackground)
94
+ if (dialogElement.value) {
95
+ dialogElement.value.style.setProperty('--dialog-confirm-button-color', dialogProps.value.confirmButtonColor)
96
+ dialogElement.value.style.setProperty('--dialog-cancel-button-color', dialogProps.value.cancelButtonColor)
97
+ dialogElement.value.style.setProperty('--dialog-confirm-background-color', dialogProps.value.confirmButtonBackground)
98
+ dialogElement.value.style.setProperty('--dialog-cancel-background-color', dialogProps.value.cancelButtonBackground)
100
99
  }
101
100
  })
102
101
 
@@ -118,12 +117,13 @@
118
117
  }
119
118
 
120
119
  const closeDialog = (arg?: { ev?: Event, withAction?: boolean }) => {
121
- const { ev, withAction = false } = arg || {}
120
+ const { ev, withAction = true } = arg || {}
122
121
  if (ev) {
123
122
  ev.stopImmediatePropagation()
124
123
  ev.preventDefault()
125
124
  }
126
125
  show.value = false
126
+ props.dialogProps?.onClose && props.dialogProps.onClose()
127
127
  if (withAction) {
128
128
  emit('close')
129
129
  }
@@ -162,84 +162,82 @@
162
162
  </script>
163
163
 
164
164
  <template>
165
- <teleport :to="dialogProps.teleport">
165
+ <div
166
+ v-if="show"
167
+ class="ui3n-dialog__overlay"
168
+ @click="dialogProps.closeOnClickOverlay
169
+ ? closeDialog({ ev: $event })
170
+ : startEmit('click-overlay')
171
+ "
172
+ >
166
173
  <div
167
- v-if="show"
168
- class="ui3n-dialog__overlay"
169
- @click="dialogProps.closeOnClickOverlay
170
- ? closeDialog({ ev: $event, withAction: true })
171
- : startEmit('click-overlay')
172
- "
174
+ ref="dialogElement"
175
+ :class="dialogProps.cssClass"
176
+ :style="dialogProps.cssStyle"
173
177
  >
174
178
  <div
175
- :id="dialogId"
176
- :class="dialogProps.cssClass"
177
- :style="dialogProps.cssStyle"
179
+ v-if="dialogProps.title"
180
+ class="ui3n-dialog__title"
181
+ @click.stop
178
182
  >
179
- <div
180
- v-if="dialogProps.title"
181
- class="ui3n-dialog__title"
182
- @click.stop
183
- >
184
- <span>{{ dialogProps.title }}</span>
185
- <ui3n-button
186
- round
187
- color="transparent"
188
- icon="close"
189
- icon-size="12"
190
- icon-color="var(--gray-90, #444)"
191
- class="ui3n-dialog__close"
192
- @click="closeDialog({ ev: $event, withAction: true })"
193
- />
194
- </div>
183
+ <span>{{ dialogProps.title }}</span>
184
+ <ui3n-button
185
+ round
186
+ color="transparent"
187
+ icon="close"
188
+ icon-size="12"
189
+ icon-color="var(--gray-90, #444)"
190
+ class="ui3n-dialog__close"
191
+ @click="closeDialog({ ev: $event })"
192
+ />
193
+ </div>
195
194
 
196
- <div
197
- v-if="props.component"
198
- :class="dialogProps.contentCssClass"
199
- :style="dialogProps.contentCssStyle"
200
- @click.stop
201
- >
202
- <component
203
- :is="props.component"
204
- v-bind="props.componentProps"
205
- @select="selectData"
206
- @validate="validate"
207
- @close="closeDialog({ ev: $event, withAction: true })"
208
- @confirm="startEmit('confirm')"
209
- @cancel="startEmit('cancel')"
210
- />
211
- </div>
195
+ <div
196
+ v-if="props.component"
197
+ :class="dialogProps.contentCssClass"
198
+ :style="dialogProps.contentCssStyle"
199
+ @click.stop
200
+ >
201
+ <component
202
+ :is="props.component"
203
+ v-bind="props.componentProps"
204
+ @select="selectData"
205
+ @validate="validate"
206
+ @close="closeDialog({ ev: $event })"
207
+ @confirm="startEmit('confirm')"
208
+ @cancel="startEmit('cancel')"
209
+ />
210
+ </div>
212
211
 
213
- <div
214
- v-if="dialogProps.confirmButton || dialogProps.cancelButton"
215
- :class="[
216
- 'ui3n-dialog__actions',
217
- { 'ui3n-dialog__actions--both': dialogProps.confirmButton && dialogProps.cancelButton },
218
- ]"
219
- @click.stop
212
+ <div
213
+ v-if="dialogProps.confirmButton || dialogProps.cancelButton"
214
+ :class="[
215
+ 'ui3n-dialog__actions',
216
+ { 'ui3n-dialog__actions--both': dialogProps.confirmButton && dialogProps.cancelButton },
217
+ ]"
218
+ @click.stop
219
+ >
220
+ <ui3n-button
221
+ v-if="dialogProps.cancelButton"
222
+ :color="dialogProps.cancelButtonBackground"
223
+ :text-color="dialogProps.cancelButtonColor"
224
+ @click="handleEvent($event, 'cancel')"
220
225
  >
221
- <ui3n-button
222
- v-if="dialogProps.cancelButton"
223
- :color="dialogProps.cancelButtonBackground"
224
- :text-color="dialogProps.cancelButtonColor"
225
- @click="handleEvent($event, 'cancel')"
226
- >
227
- {{ dialogProps.cancelButtonText }}
228
- </ui3n-button>
226
+ {{ dialogProps.cancelButtonText }}
227
+ </ui3n-button>
229
228
 
230
- <ui3n-button
231
- v-if="dialogProps.confirmButton"
232
- :color="dialogProps.confirmButtonBackground"
233
- :text-color="dialogProps.confirmButtonColor"
234
- :disabled="!isValid"
235
- @click="handleEvent($event, 'confirm')"
236
- >
237
- {{ dialogProps.confirmButtonText }}
238
- </ui3n-button>
239
- </div>
229
+ <ui3n-button
230
+ v-if="dialogProps.confirmButton"
231
+ :color="dialogProps.confirmButtonBackground"
232
+ :text-color="dialogProps.confirmButtonColor"
233
+ :disabled="!isValid"
234
+ @click="handleEvent($event, 'confirm')"
235
+ >
236
+ {{ dialogProps.confirmButtonText }}
237
+ </ui3n-button>
240
238
  </div>
241
239
  </div>
242
- </teleport>
240
+ </div>
243
241
  </template>
244
242
 
245
243
  <style lang="scss">