@weni/unnnic-system 2.0.31 → 2.1.0
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/CHANGELOG.md +6 -0
- package/dist/doris.png +0 -0
- package/dist/style.css +1 -1
- package/dist/unnnic.mjs +2366 -2201
- package/dist/unnnic.umd.js +17 -17
- package/package.json +1 -1
- package/public/doris.png +0 -0
- package/src/components/ModalDialog/ModalDialog.vue +286 -0
- package/src/components/index.js +3 -0
- package/src/stories/ModalDialog.mdx +64 -0
- package/src/stories/ModalDialog.stories.js +208 -0
package/package.json
CHANGED
package/public/doris.png
ADDED
|
Binary file
|
|
@@ -0,0 +1,286 @@
|
|
|
1
|
+
<template>
|
|
2
|
+
<section
|
|
3
|
+
v-if="modelValue"
|
|
4
|
+
class="unnnic-modal-dialog"
|
|
5
|
+
>
|
|
6
|
+
<section
|
|
7
|
+
class="unnnic-modal-dialog__overlay"
|
|
8
|
+
@click.stop="!persistent && close()"
|
|
9
|
+
/>
|
|
10
|
+
<section
|
|
11
|
+
:class="[
|
|
12
|
+
'unnnic-modal-dialog__container',
|
|
13
|
+
`unnnic-modal-dialog__container--${size}`,
|
|
14
|
+
]"
|
|
15
|
+
>
|
|
16
|
+
<header
|
|
17
|
+
v-if="title"
|
|
18
|
+
class="unnnic-modal-dialog__container__header"
|
|
19
|
+
>
|
|
20
|
+
<section class="unnnic-modal-dialog__container__title-container">
|
|
21
|
+
<UnnnicIcon
|
|
22
|
+
v-if="icon || type"
|
|
23
|
+
class="unnnic-modal-dialog__container__title-icon"
|
|
24
|
+
:icon="icon || iconsMapper[type]?.icon"
|
|
25
|
+
:scheme="iconScheme || iconsMapper[type]?.scheme"
|
|
26
|
+
size="md"
|
|
27
|
+
/>
|
|
28
|
+
<h1 class="unnnic-modal-dialog__container__title-text">
|
|
29
|
+
{{ title }}
|
|
30
|
+
</h1>
|
|
31
|
+
</section>
|
|
32
|
+
<UnnnicIcon
|
|
33
|
+
v-if="showCloseIcon"
|
|
34
|
+
icon="close"
|
|
35
|
+
clickable
|
|
36
|
+
@click="close()"
|
|
37
|
+
/>
|
|
38
|
+
</header>
|
|
39
|
+
<section class="unnnic-modal-dialog__container__content">
|
|
40
|
+
<slot></slot>
|
|
41
|
+
</section>
|
|
42
|
+
<section
|
|
43
|
+
v-if="primaryButtonText"
|
|
44
|
+
:class="[
|
|
45
|
+
'unnnic-modal-dialog__container__actions',
|
|
46
|
+
{
|
|
47
|
+
'unnnic-modal-dialog__container__actions--divider':
|
|
48
|
+
showActionsDivider,
|
|
49
|
+
},
|
|
50
|
+
]"
|
|
51
|
+
>
|
|
52
|
+
<UnnnicButton
|
|
53
|
+
type="tertiary"
|
|
54
|
+
:text="secondaryButtonText || i18n('cancel')"
|
|
55
|
+
@click.stop="
|
|
56
|
+
secondaryButtonText ? $emit('secondaryButtonClick') : close()
|
|
57
|
+
"
|
|
58
|
+
/>
|
|
59
|
+
<UnnnicButton
|
|
60
|
+
:type="
|
|
61
|
+
primaryButtonType || primaryButtonTypeMapper[type] || 'primary'
|
|
62
|
+
"
|
|
63
|
+
:text="primaryButtonText"
|
|
64
|
+
@click.stop="$emit('primaryButtonClick')"
|
|
65
|
+
/>
|
|
66
|
+
</section>
|
|
67
|
+
</section>
|
|
68
|
+
</section>
|
|
69
|
+
</template>
|
|
70
|
+
|
|
71
|
+
<script>
|
|
72
|
+
import UnnnicIcon from '../Icon.vue';
|
|
73
|
+
import UnnnicButton from '../Button/Button.vue';
|
|
74
|
+
import UnnnicI18n from '../../mixins/i18n';
|
|
75
|
+
|
|
76
|
+
export default {
|
|
77
|
+
name: 'UnnnicModalDialog',
|
|
78
|
+
components: {
|
|
79
|
+
UnnnicIcon,
|
|
80
|
+
UnnnicButton,
|
|
81
|
+
},
|
|
82
|
+
mixins: [UnnnicI18n],
|
|
83
|
+
props: {
|
|
84
|
+
modelValue: {
|
|
85
|
+
type: Boolean,
|
|
86
|
+
required: true,
|
|
87
|
+
},
|
|
88
|
+
persistent: {
|
|
89
|
+
type: Boolean,
|
|
90
|
+
default: false,
|
|
91
|
+
},
|
|
92
|
+
type: {
|
|
93
|
+
type: String,
|
|
94
|
+
default: '',
|
|
95
|
+
validate(type) {
|
|
96
|
+
return ['success', 'warning', 'attention'].includes(type);
|
|
97
|
+
},
|
|
98
|
+
},
|
|
99
|
+
size: {
|
|
100
|
+
type: String,
|
|
101
|
+
default: 'md',
|
|
102
|
+
validate(size) {
|
|
103
|
+
return ['sm', 'md', 'lg'].includes(size);
|
|
104
|
+
},
|
|
105
|
+
},
|
|
106
|
+
title: {
|
|
107
|
+
type: String,
|
|
108
|
+
default: 'title',
|
|
109
|
+
},
|
|
110
|
+
icon: {
|
|
111
|
+
type: String,
|
|
112
|
+
default: '',
|
|
113
|
+
},
|
|
114
|
+
iconScheme: {
|
|
115
|
+
type: String,
|
|
116
|
+
default: '',
|
|
117
|
+
},
|
|
118
|
+
showCloseIcon: {
|
|
119
|
+
type: Boolean,
|
|
120
|
+
default: false,
|
|
121
|
+
},
|
|
122
|
+
primaryButtonText: {
|
|
123
|
+
type: String,
|
|
124
|
+
default: '',
|
|
125
|
+
},
|
|
126
|
+
secondaryButtonText: {
|
|
127
|
+
type: String,
|
|
128
|
+
default: '',
|
|
129
|
+
},
|
|
130
|
+
primaryButtonType: {
|
|
131
|
+
type: String,
|
|
132
|
+
default: '',
|
|
133
|
+
},
|
|
134
|
+
showActionsDivider: {
|
|
135
|
+
type: Boolean,
|
|
136
|
+
default: false,
|
|
137
|
+
},
|
|
138
|
+
},
|
|
139
|
+
emits: ['primaryButtonClick', 'secondaryButtonClick', 'update:modelValue'],
|
|
140
|
+
|
|
141
|
+
data() {
|
|
142
|
+
return {
|
|
143
|
+
defaultTranslations: {
|
|
144
|
+
cancel: {
|
|
145
|
+
'pt-br': 'Cancelar',
|
|
146
|
+
en: 'Cancel',
|
|
147
|
+
es: 'Cancelar',
|
|
148
|
+
},
|
|
149
|
+
},
|
|
150
|
+
iconsMapper: {
|
|
151
|
+
success: { icon: 'check_circle', scheme: 'aux-green-500' },
|
|
152
|
+
warning: { icon: 'warning', scheme: 'aux-red-500' },
|
|
153
|
+
attention: { icon: 'error', scheme: 'aux-yellow-500' },
|
|
154
|
+
},
|
|
155
|
+
primaryButtonTypeMapper: {
|
|
156
|
+
success: 'primary',
|
|
157
|
+
warning: 'warning',
|
|
158
|
+
attention: 'attention',
|
|
159
|
+
},
|
|
160
|
+
};
|
|
161
|
+
},
|
|
162
|
+
watch: {
|
|
163
|
+
modelValue(value) {
|
|
164
|
+
this.updateBodyOverflow(value);
|
|
165
|
+
},
|
|
166
|
+
},
|
|
167
|
+
methods: {
|
|
168
|
+
close() {
|
|
169
|
+
this.$emit('update:modelValue', false);
|
|
170
|
+
},
|
|
171
|
+
updateBodyOverflow(isHidden) {
|
|
172
|
+
document.body.style.overflow = isHidden ? 'hidden' : '';
|
|
173
|
+
},
|
|
174
|
+
},
|
|
175
|
+
};
|
|
176
|
+
</script>
|
|
177
|
+
|
|
178
|
+
<style lang="scss" scoped>
|
|
179
|
+
@import '../../assets/scss/unnnic.scss';
|
|
180
|
+
* {
|
|
181
|
+
margin: 0;
|
|
182
|
+
padding: 0;
|
|
183
|
+
box-sizing: border-box;
|
|
184
|
+
}
|
|
185
|
+
.unnnic-modal-dialog {
|
|
186
|
+
width: 100vw;
|
|
187
|
+
height: 100vh;
|
|
188
|
+
position: fixed;
|
|
189
|
+
left: 0;
|
|
190
|
+
top: 0;
|
|
191
|
+
display: flex;
|
|
192
|
+
justify-content: center;
|
|
193
|
+
align-items: center;
|
|
194
|
+
z-index: 9999;
|
|
195
|
+
|
|
196
|
+
&__overlay {
|
|
197
|
+
position: absolute;
|
|
198
|
+
width: 100%;
|
|
199
|
+
height: 100%;
|
|
200
|
+
background-color: rgba(0, 0, 0, 0.4);
|
|
201
|
+
}
|
|
202
|
+
}
|
|
203
|
+
|
|
204
|
+
.unnnic-modal-dialog__container {
|
|
205
|
+
display: flex;
|
|
206
|
+
flex-direction: column;
|
|
207
|
+
background: $unnnic-color-neutral-white;
|
|
208
|
+
border-radius: $unnnic-spacing-xs;
|
|
209
|
+
box-shadow: $unnnic-shadow-level-near;
|
|
210
|
+
position: fixed;
|
|
211
|
+
max-height: calc(100vh - $unnnic-spacing-giant);
|
|
212
|
+
overflow: hidden;
|
|
213
|
+
|
|
214
|
+
&--sm {
|
|
215
|
+
width: 400px;
|
|
216
|
+
}
|
|
217
|
+
&--md {
|
|
218
|
+
width: 600px;
|
|
219
|
+
}
|
|
220
|
+
&--lg {
|
|
221
|
+
width: 800px;
|
|
222
|
+
}
|
|
223
|
+
|
|
224
|
+
&__header {
|
|
225
|
+
display: flex;
|
|
226
|
+
justify-content: space-between;
|
|
227
|
+
align-items: center;
|
|
228
|
+
border-bottom: 1px solid $unnnic-color-neutral-soft;
|
|
229
|
+
padding: $unnnic-spacing-md;
|
|
230
|
+
flex-shrink: 0;
|
|
231
|
+
}
|
|
232
|
+
|
|
233
|
+
&__title-container {
|
|
234
|
+
display: flex;
|
|
235
|
+
align-items: center;
|
|
236
|
+
gap: $unnnic-spacing-ant;
|
|
237
|
+
}
|
|
238
|
+
|
|
239
|
+
&__title-icon {
|
|
240
|
+
font-size: 28px;
|
|
241
|
+
}
|
|
242
|
+
|
|
243
|
+
&__title-text {
|
|
244
|
+
font-family: $unnnic-font-family-secondary;
|
|
245
|
+
font-size: $unnnic-font-size-title-sm;
|
|
246
|
+
font-weight: $unnnic-font-weight-black;
|
|
247
|
+
line-height: 28px;
|
|
248
|
+
color: $unnnic-color-neutral-darkest;
|
|
249
|
+
}
|
|
250
|
+
|
|
251
|
+
&__content {
|
|
252
|
+
padding: $unnnic-spacing-md;
|
|
253
|
+
color: $unnnic-color-neutral-cloudy;
|
|
254
|
+
flex-grow: 1;
|
|
255
|
+
overflow-y: auto;
|
|
256
|
+
font-family: $unnnic-font-family-secondary;
|
|
257
|
+
|
|
258
|
+
&::-webkit-scrollbar {
|
|
259
|
+
width: $unnnic-spacing-inline-nano;
|
|
260
|
+
}
|
|
261
|
+
|
|
262
|
+
&::-webkit-scrollbar-thumb {
|
|
263
|
+
background: $unnnic-color-neutral-cleanest;
|
|
264
|
+
border-radius: $unnnic-border-radius-pill;
|
|
265
|
+
}
|
|
266
|
+
|
|
267
|
+
&::-webkit-scrollbar-track {
|
|
268
|
+
background: $unnnic-color-neutral-soft;
|
|
269
|
+
border-radius: $unnnic-border-radius-pill;
|
|
270
|
+
}
|
|
271
|
+
}
|
|
272
|
+
|
|
273
|
+
&__actions {
|
|
274
|
+
display: flex;
|
|
275
|
+
gap: $unnnic-spacing-sm;
|
|
276
|
+
padding: $unnnic-spacing-md;
|
|
277
|
+
flex-shrink: 0;
|
|
278
|
+
> * {
|
|
279
|
+
flex-grow: 1;
|
|
280
|
+
}
|
|
281
|
+
&--divider {
|
|
282
|
+
border-top: 1px solid $unnnic-color-neutral-soft;
|
|
283
|
+
}
|
|
284
|
+
}
|
|
285
|
+
}
|
|
286
|
+
</style>
|
package/src/components/index.js
CHANGED
|
@@ -81,6 +81,7 @@ import Disclaimer from './Disclaimer/Disclaimer.vue';
|
|
|
81
81
|
import Drawer from './Drawer/Drawer.vue';
|
|
82
82
|
import TableNext from './TableNext/TableNext.vue';
|
|
83
83
|
import ModalNext from './ModalNext/ModalNext.vue';
|
|
84
|
+
import ModalDialog from './ModalDialog/ModalDialog.vue';
|
|
84
85
|
|
|
85
86
|
export const components = {
|
|
86
87
|
unnnicFormElement: formElement,
|
|
@@ -114,6 +115,7 @@ export const components = {
|
|
|
114
115
|
unnnicLanguageSelect: languageSelect,
|
|
115
116
|
unnnicModal: modal,
|
|
116
117
|
unnnicModalNext: ModalNext,
|
|
118
|
+
unnnicModalDialog: ModalDialog,
|
|
117
119
|
unnnicModalUpload: modalUpload,
|
|
118
120
|
unnnicSelectSmart: selectSmart,
|
|
119
121
|
// unnnicSelect: select,
|
|
@@ -200,6 +202,7 @@ export const unnnicCollapse = collapse;
|
|
|
200
202
|
export const unnnicRadio = radio;
|
|
201
203
|
export const unnniclanguageSelect = languageSelect;
|
|
202
204
|
export const unnnicModal = modal;
|
|
205
|
+
export const unnnicModalDialog = ModalDialog;
|
|
203
206
|
export const unnnicModalNext = ModalNext;
|
|
204
207
|
export const unnnicModalUpload = modalUpload;
|
|
205
208
|
export const unnnicSelectSmart = selectSmart;
|
|
@@ -0,0 +1,64 @@
|
|
|
1
|
+
import { Meta, Source, Story } from '@storybook/blocks';
|
|
2
|
+
|
|
3
|
+
import * as ModalDialogStories from './ModalDialog.stories';
|
|
4
|
+
|
|
5
|
+
<Meta of={ModalDialogStories}/>
|
|
6
|
+
|
|
7
|
+
# ModalDialog
|
|
8
|
+
|
|
9
|
+
The ModalDialog was designed to inform the user about a specific task, request information, or involve other tasks.
|
|
10
|
+
|
|
11
|
+
<Source
|
|
12
|
+
language='html'
|
|
13
|
+
dark
|
|
14
|
+
code={`
|
|
15
|
+
<UnnnicModalDialog v-model="showModal">
|
|
16
|
+
<p>Modal Content</p>
|
|
17
|
+
</UnnnicModalDialog>
|
|
18
|
+
`}
|
|
19
|
+
/>
|
|
20
|
+
|
|
21
|
+
---
|
|
22
|
+
|
|
23
|
+
#### **Props Options:**
|
|
24
|
+
|
|
25
|
+
| Key | Description | Values | Default |
|
|
26
|
+
|---------------------|-----------------------------------------------------------------------------------------------------------------------------------------------|---------------------------------------|---------|
|
|
27
|
+
| type | Modal type predefinition | 'success' \| 'warning' \| 'attention' | '' |
|
|
28
|
+
| persistent | Clicking outside of the element will not deactive it | true \| false | false |
|
|
29
|
+
| size | Modal width size (sm = 400px; md = 600px; lg = 800px) | 'sm' \| 'md' \| 'lg' | 'md' |
|
|
30
|
+
| title | Modal card title (if not provided, the title section will not be displayed) | string | '' |
|
|
31
|
+
| icon | Custom title section icon (if not provided, the preset icons will be considered according to the chosen modal type) | string | '' |
|
|
32
|
+
| iconScheme | Custom scheme color to icon in title section (if not provided, the preset scheme color will be considered according to the chosen modal type) | string | '' |
|
|
33
|
+
| showCloseIcon | Show close icon in title section | boolean | false |
|
|
34
|
+
| primaryButtonText | Button primary action text (if not provided, the actions section will not be displayed) | string | '' |
|
|
35
|
+
| secondaryButtonText | Button secondary action text (if not provided and there is primaryButtonText, this button will take 'Cancel' action | string | '' |
|
|
36
|
+
| primaryButtonType | Button primary type (if not provided, defaults to the specified type) | string | '' |
|
|
37
|
+
| showActionsDivider | Show divider in between actions and dialog content | boolean | false |
|
|
38
|
+
|
|
39
|
+
## Examples
|
|
40
|
+
Some examples of uses of the modal
|
|
41
|
+
|
|
42
|
+
### Default
|
|
43
|
+
|
|
44
|
+
<Story of={ModalDialogStories.Default} />
|
|
45
|
+
|
|
46
|
+
### Warning
|
|
47
|
+
|
|
48
|
+
<Story of={ModalDialogStories.Warning} />
|
|
49
|
+
|
|
50
|
+
### Attention
|
|
51
|
+
|
|
52
|
+
<Story of={ModalDialogStories.Attention} />
|
|
53
|
+
|
|
54
|
+
### Overflowed Content
|
|
55
|
+
|
|
56
|
+
<Story of={ModalDialogStories.Overflowed} />
|
|
57
|
+
|
|
58
|
+
### Form Content
|
|
59
|
+
|
|
60
|
+
<Story of={ModalDialogStories.Form} />
|
|
61
|
+
|
|
62
|
+
### Image Content
|
|
63
|
+
|
|
64
|
+
<Story of={ModalDialogStories.Image} />
|
|
@@ -0,0 +1,208 @@
|
|
|
1
|
+
import UnnnicModalDialog from '../components/ModalDialog/ModalDialog.vue';
|
|
2
|
+
import UnnnicInput from '../components/Input/Input.vue';
|
|
3
|
+
import UnnnicLabel from '../components/Label/Label.vue';
|
|
4
|
+
import { action } from '@storybook/addon-actions';
|
|
5
|
+
import iconsList from '../utils/iconList';
|
|
6
|
+
import colorsList from '../utils/colorsList';
|
|
7
|
+
|
|
8
|
+
export default {
|
|
9
|
+
title: 'Example/ModalDialog',
|
|
10
|
+
component: UnnnicModalDialog,
|
|
11
|
+
argTypes: {
|
|
12
|
+
type: {
|
|
13
|
+
control: {
|
|
14
|
+
type: 'select',
|
|
15
|
+
},
|
|
16
|
+
options: ['', 'success', 'warning', 'attention'],
|
|
17
|
+
},
|
|
18
|
+
size: {
|
|
19
|
+
control: { type: 'select' },
|
|
20
|
+
options: ['sm', 'md', 'lg'],
|
|
21
|
+
},
|
|
22
|
+
icon: { options: ['', ...iconsList], control: { type: 'select' } },
|
|
23
|
+
iconScheme: { control: { type: 'select' }, options: ['', ...colorsList] },
|
|
24
|
+
title: { control: 'text' },
|
|
25
|
+
showCloseIcon: { control: 'boolean' },
|
|
26
|
+
primaryButtonText: { control: 'text' },
|
|
27
|
+
secondaryButtonText: { control: 'text' },
|
|
28
|
+
primaryButtonType: {
|
|
29
|
+
control: { type: 'select' },
|
|
30
|
+
options: [
|
|
31
|
+
'',
|
|
32
|
+
'primary',
|
|
33
|
+
'secondary',
|
|
34
|
+
'tertiary',
|
|
35
|
+
'alternative',
|
|
36
|
+
'warning',
|
|
37
|
+
'attention',
|
|
38
|
+
],
|
|
39
|
+
},
|
|
40
|
+
showActionsDivider: { control: 'boolean' },
|
|
41
|
+
persistent: { control: 'boolean' },
|
|
42
|
+
},
|
|
43
|
+
args: {
|
|
44
|
+
modelValue: false,
|
|
45
|
+
title: 'Default Modal',
|
|
46
|
+
type: '',
|
|
47
|
+
size: 'md',
|
|
48
|
+
showCloseIcon: true,
|
|
49
|
+
primaryButtonText: 'OK',
|
|
50
|
+
},
|
|
51
|
+
};
|
|
52
|
+
|
|
53
|
+
const Template = (args) => ({
|
|
54
|
+
components: { UnnnicModalDialog },
|
|
55
|
+
setup() {
|
|
56
|
+
const updateModelValue = (value) => {
|
|
57
|
+
action('update:modelValue')(value);
|
|
58
|
+
args.modelValue = value;
|
|
59
|
+
};
|
|
60
|
+
return { args, updateModelValue };
|
|
61
|
+
},
|
|
62
|
+
template: `
|
|
63
|
+
<div>
|
|
64
|
+
<button @click="updateModelValue(true)">Open Modal</button>
|
|
65
|
+
<unnnic-modal-dialog v-bind="args" @primaryButtonClick="primaryButtonClick" @secondaryButtonClick="secondaryButtonClick" @update:modelValue="updateModelValue">
|
|
66
|
+
<template v-slot>Slot content here</template>
|
|
67
|
+
</unnnic-modal-dialog>
|
|
68
|
+
</div>
|
|
69
|
+
`,
|
|
70
|
+
methods: {
|
|
71
|
+
primaryButtonClick: action('primaryButtonClick'),
|
|
72
|
+
secondaryButtonClick: action('secondaryButtonClick'),
|
|
73
|
+
},
|
|
74
|
+
});
|
|
75
|
+
|
|
76
|
+
const TemplateOverflowed = (args) => ({
|
|
77
|
+
components: { UnnnicModalDialog },
|
|
78
|
+
setup() {
|
|
79
|
+
const updateModelValue = (value) => {
|
|
80
|
+
action('update:modelValue')(value);
|
|
81
|
+
args.modelValue = value;
|
|
82
|
+
};
|
|
83
|
+
return { args, updateModelValue };
|
|
84
|
+
},
|
|
85
|
+
template: `
|
|
86
|
+
<div>
|
|
87
|
+
<button @click="updateModelValue(true)">Open Modal</button>
|
|
88
|
+
<unnnic-modal-dialog v-bind="args" @primaryButtonClick="primaryButtonClick" @secondaryButtonClick="secondaryButtonClick" @update:modelValue="updateModelValue">
|
|
89
|
+
<p style="margin: 0;">Lorem ipsum dolor sit amet, consectetur adipiscing elit. Mauris non gravida velit. Mauris feugiat bibendum elit, ac semper tortor tempor quis. Maecenas ullamcorper condimentum ligula. Proin a rutrum enim. Nulla egestas porttitor congue. Suspendisse maximus, ante finibus aliquet hendrerit, metus nulla eleifend justo, et venenatis augue justo id ligula. Aenean convallis massa ligula, at scelerisque metus elementum at. Nulla facilisi. Integer imperdiet bibendum hendrerit. Etiam lobortis congue commodo. In dapibus odio sapien, ac volutpat lorem porta at.</p>
|
|
90
|
+
<p>Lorem ipsum dolor sit amet, consectetur adipiscing elit. Mauris non gravida velit. Mauris feugiat bibendum elit, ac semper tortor tempor quis. Maecenas ullamcorper condimentum ligula. Proin a rutrum enim. Nulla egestas porttitor congue. Suspendisse maximus, ante finibus aliquet hendrerit, metus nulla eleifend justo, et venenatis augue justo id ligula. Aenean convallis massa ligula, at scelerisque metus elementum at. Nulla facilisi. Integer imperdiet bibendum hendrerit. Etiam lobortis congue commodo. In dapibus odio sapien, ac volutpat lorem porta at.</p>
|
|
91
|
+
<p>Lorem ipsum dolor sit amet, consectetur adipiscing elit. Mauris non gravida velit. Mauris feugiat bibendum elit, ac semper tortor tempor quis. Maecenas ullamcorper condimentum ligula. Proin a rutrum enim. Nulla egestas porttitor congue. Suspendisse maximus, ante finibus aliquet hendrerit, metus nulla eleifend justo, et venenatis augue justo id ligula. Aenean convallis massa ligula, at scelerisque metus elementum at. Nulla facilisi. Integer imperdiet bibendum hendrerit. Etiam lobortis congue commodo. In dapibus odio sapien, ac volutpat lorem porta at.</p>
|
|
92
|
+
<p>Lorem ipsum dolor sit amet, consectetur adipiscing elit. Mauris non gravida velit. Mauris feugiat bibendum elit, ac semper tortor tempor quis. Maecenas ullamcorper condimentum ligula. Proin a rutrum enim. Nulla egestas porttitor congue. Suspendisse maximus, ante finibus aliquet hendrerit, metus nulla eleifend justo, et venenatis augue justo id ligula. Aenean convallis massa ligula, at scelerisque metus elementum at. Nulla facilisi. Integer imperdiet bibendum hendrerit. Etiam lobortis congue commodo. In dapibus odio sapien, ac volutpat lorem porta at.</p>
|
|
93
|
+
<p>Lorem ipsum dolor sit amet, consectetur adipiscing elit. Mauris non gravida velit. Mauris feugiat bibendum elit, ac semper tortor tempor quis. Maecenas ullamcorper condimentum ligula. Proin a rutrum enim. Nulla egestas porttitor congue. Suspendisse maximus, ante finibus aliquet hendrerit, metus nulla eleifend justo, et venenatis augue justo id ligula. Aenean convallis massa ligula, at scelerisque metus elementum at. Nulla facilisi. Integer imperdiet bibendum hendrerit. Etiam lobortis congue commodo. In dapibus odio sapien, ac volutpat lorem porta at.</p>
|
|
94
|
+
<p>Lorem ipsum dolor sit amet, consectetur adipiscing elit. Mauris non gravida velit. Mauris feugiat bibendum elit, ac semper tortor tempor quis. Maecenas ullamcorper condimentum ligula. Proin a rutrum enim. Nulla egestas porttitor congue. Suspendisse maximus, ante finibus aliquet hendrerit, metus nulla eleifend justo, et venenatis augue justo id ligula. Aenean convallis massa ligula, at scelerisque metus elementum at. Nulla facilisi. Integer imperdiet bibendum hendrerit. Etiam lobortis congue commodo. In dapibus odio sapien, ac volutpat lorem porta at.</p>
|
|
95
|
+
<p>Lorem ipsum dolor sit amet, consectetur adipiscing elit. Mauris non gravida velit. Mauris feugiat bibendum elit, ac semper tortor tempor quis. Maecenas ullamcorper condimentum ligula. Proin a rutrum enim. Nulla egestas porttitor congue. Suspendisse maximus, ante finibus aliquet hendrerit, metus nulla eleifend justo, et venenatis augue justo id ligula. Aenean convallis massa ligula, at scelerisque metus elementum at. Nulla facilisi. Integer imperdiet bibendum hendrerit. Etiam lobortis congue commodo. In dapibus odio sapien, ac volutpat lorem porta at.</p>
|
|
96
|
+
</unnnic-modal-dialog>
|
|
97
|
+
</div>
|
|
98
|
+
`,
|
|
99
|
+
methods: {
|
|
100
|
+
primaryButtonClick: action('primaryButtonClick'),
|
|
101
|
+
secondaryButtonClick: action('secondaryButtonClick'),
|
|
102
|
+
},
|
|
103
|
+
});
|
|
104
|
+
|
|
105
|
+
const TemplateForm = (args) => ({
|
|
106
|
+
components: { UnnnicModalDialog, UnnnicLabel, UnnnicInput },
|
|
107
|
+
setup() {
|
|
108
|
+
const updateModelValue = (value) => {
|
|
109
|
+
action('update:modelValue')(value);
|
|
110
|
+
args.modelValue = value;
|
|
111
|
+
};
|
|
112
|
+
return { args, updateModelValue };
|
|
113
|
+
},
|
|
114
|
+
template: `
|
|
115
|
+
<div>
|
|
116
|
+
<button @click="updateModelValue(true)">Open Modal</button>
|
|
117
|
+
<unnnic-modal-dialog v-bind="args" @primaryButtonClick="primaryButtonClick" @secondaryButtonClick="secondaryButtonClick" @update:modelValue="updateModelValue">
|
|
118
|
+
<p style="margin-top: 0;">Lorem ipsum dolor sit amet, consectetur adipiscing elit. Mauris non gravida velit. Mauris feugiat bibendum elit, ac semper tortor tempor quis.</p>
|
|
119
|
+
<form>
|
|
120
|
+
<UnnnicLabel label="Label"></UnnnicLabel>
|
|
121
|
+
<UnnnicInput placeholder="Placeholder"></UnnnicInput>
|
|
122
|
+
<UnnnicLabel label="Label"></UnnnicLabel>
|
|
123
|
+
<UnnnicInput placeholder="Placeholder"></UnnnicInput>
|
|
124
|
+
<UnnnicLabel label="Label"></UnnnicLabel>
|
|
125
|
+
<UnnnicInput placeholder="Placeholder"></UnnnicInput>
|
|
126
|
+
</form>
|
|
127
|
+
</unnnic-modal-dialog>
|
|
128
|
+
</div>
|
|
129
|
+
`,
|
|
130
|
+
methods: {
|
|
131
|
+
primaryButtonClick: action('primaryButtonClick'),
|
|
132
|
+
secondaryButtonClick: action('secondaryButtonClick'),
|
|
133
|
+
},
|
|
134
|
+
});
|
|
135
|
+
|
|
136
|
+
const TemplateImage = (args) => ({
|
|
137
|
+
components: { UnnnicModalDialog },
|
|
138
|
+
setup() {
|
|
139
|
+
const updateModelValue = (value) => {
|
|
140
|
+
action('update:modelValue')(value);
|
|
141
|
+
args.modelValue = value;
|
|
142
|
+
};
|
|
143
|
+
return { args, updateModelValue };
|
|
144
|
+
},
|
|
145
|
+
template: `
|
|
146
|
+
<div>
|
|
147
|
+
<button @click="updateModelValue(true)">Open Modal</button>
|
|
148
|
+
<unnnic-modal-dialog v-bind="args" @primaryButtonClick="primaryButtonClick" @secondaryButtonClick="secondaryButtonClick" @update:modelValue="updateModelValue">
|
|
149
|
+
<section style="display: flex; flex-direction: column; align-items: center; gap: 24px">
|
|
150
|
+
<img height='120' width='120' src="./doris.png"/>
|
|
151
|
+
<section style="display: flex; flex-direction: column; justify-content: center; align-items: center">
|
|
152
|
+
<h1 style="font-family: 'Lato'; font-size: 20px; font-weight: 900; line-height: 28px; padding: 0; margin: 0; color:#3B414D">Title</h1>
|
|
153
|
+
<p style="text-align: center;">Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod</p>
|
|
154
|
+
</section>
|
|
155
|
+
</section>
|
|
156
|
+
</unnnic-modal-dialog>
|
|
157
|
+
</div>
|
|
158
|
+
`,
|
|
159
|
+
methods: {
|
|
160
|
+
primaryButtonClick: action('primaryButtonClick'),
|
|
161
|
+
secondaryButtonClick: action('secondaryButtonClick'),
|
|
162
|
+
},
|
|
163
|
+
});
|
|
164
|
+
|
|
165
|
+
export const Default = Template.bind({});
|
|
166
|
+
Default.args = {
|
|
167
|
+
title: 'Default Modal',
|
|
168
|
+
type: '',
|
|
169
|
+
};
|
|
170
|
+
|
|
171
|
+
export const Warning = Template.bind({});
|
|
172
|
+
Warning.args = {
|
|
173
|
+
title: 'Warning Modal',
|
|
174
|
+
type: 'warning',
|
|
175
|
+
};
|
|
176
|
+
|
|
177
|
+
export const Success = Template.bind({});
|
|
178
|
+
Success.args = {
|
|
179
|
+
title: 'Success Modal',
|
|
180
|
+
type: 'success',
|
|
181
|
+
};
|
|
182
|
+
|
|
183
|
+
export const Attention = Template.bind({});
|
|
184
|
+
Attention.args = {
|
|
185
|
+
title: 'Attention Modal',
|
|
186
|
+
type: 'attention',
|
|
187
|
+
};
|
|
188
|
+
|
|
189
|
+
export const Overflowed = TemplateOverflowed.bind({});
|
|
190
|
+
Overflowed.args = {
|
|
191
|
+
title: 'Overflowed Modal',
|
|
192
|
+
type: '',
|
|
193
|
+
};
|
|
194
|
+
|
|
195
|
+
export const Form = TemplateForm.bind({});
|
|
196
|
+
Form.args = {
|
|
197
|
+
title: 'Form Modal',
|
|
198
|
+
type: '',
|
|
199
|
+
showActionsDivider: true,
|
|
200
|
+
persistent: true,
|
|
201
|
+
};
|
|
202
|
+
|
|
203
|
+
export const Image = TemplateImage.bind({});
|
|
204
|
+
Image.args = {
|
|
205
|
+
title: '',
|
|
206
|
+
type: '',
|
|
207
|
+
showActionsDivider: true,
|
|
208
|
+
};
|