renusify 1.4.7 → 2.0.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.
Files changed (67) hide show
  1. package/components/app/style.scss +2 -10
  2. package/components/app/toast/toast.vue +4 -3
  3. package/components/bar/bottomNavigationCircle.vue +1 -1
  4. package/components/bar/scss/bottomNav.scss +2 -2
  5. package/components/breadcrumb/style.scss +1 -1
  6. package/components/button/index.vue +4 -4
  7. package/components/button/style.scss +17 -27
  8. package/components/calendar/index.vue +3 -4
  9. package/components/card/style.scss +1 -3
  10. package/components/chat/chatInput.vue +2 -2
  11. package/components/chat/chatMsg.vue +3 -3
  12. package/components/chat/index.vue +2 -1
  13. package/components/chip/index.vue +1 -1
  14. package/components/chip/style.scss +20 -10
  15. package/components/codeEditor/index.vue +5 -4
  16. package/components/codeEditor/mixin.js +5 -5
  17. package/components/confirm/index.vue +3 -3
  18. package/components/container/style.scss +1 -1
  19. package/components/form/address.vue +6 -0
  20. package/components/form/address_ir.vue +17 -17
  21. package/components/form/checkbox.vue +1 -1
  22. package/components/form/colorPicker/picker.vue +6 -5
  23. package/components/form/datePicker/index.vue +2 -4
  24. package/components/form/form.vue +7 -4
  25. package/components/form/group-input.vue +1 -1
  26. package/components/form/input.vue +21 -20
  27. package/components/form/inputTel/index.vue +1 -31
  28. package/components/form/json/index.vue +1 -1
  29. package/components/form/radioInput.vue +1 -1
  30. package/components/form/rating.vue +13 -6
  31. package/components/form/select.vue +17 -11
  32. package/components/form/switch.vue +1 -7
  33. package/components/form/text-editor/index.vue +15 -15
  34. package/components/form/text-editor/style.scss +6 -6
  35. package/components/form/timepicker/index.vue +3 -3
  36. package/components/form/timepicker/timepicker.vue +142 -112
  37. package/components/form/unit-input.vue +2 -2
  38. package/components/formCreator/index.vue +3 -3
  39. package/components/icon/style.scss +1 -4
  40. package/components/img/index.vue +3 -1
  41. package/components/img/svgImg.vue +5 -3
  42. package/components/infinite/div.vue +2 -2
  43. package/components/infinite/index.vue +1 -1
  44. package/components/infinite/page.vue +2 -2
  45. package/components/list/index.vue +2 -2
  46. package/components/list/style.scss +10 -6
  47. package/components/map/index.vue +1 -1
  48. package/components/map/route.vue +2 -2
  49. package/components/menu/index.vue +1 -1
  50. package/components/notify/notification.vue +2 -2
  51. package/components/progress/style.scss +4 -4
  52. package/components/searchBox/index.vue +2 -2
  53. package/components/table/crud/header.vue +1 -1
  54. package/components/table/index.vue +4 -3
  55. package/components/table/style.scss +19 -16
  56. package/components/tabs/index.vue +4 -65
  57. package/components/timeline/index.vue +1 -1
  58. package/components/tour/index.vue +5 -5
  59. package/components/tree/index.vue +0 -1
  60. package/package.json +1 -1
  61. package/plugins/request/Request.js +3 -3
  62. package/style/app.scss +52 -41
  63. package/style/base.scss +45 -51
  64. package/style/colors.scss +48 -39
  65. package/style/mixins/index.scss +17 -6
  66. package/style/variables/base.scss +84 -69
  67. package/style/variables/color.scss +1 -2
@@ -3,16 +3,8 @@
3
3
  .#{$prefix}app {
4
4
  display: flex;
5
5
 
6
- background: var(--color-background-one);
7
- color: var(--color-text-primary);
8
-
9
- .background-one {
10
- background: var(--color-background-one);
11
- }
12
-
13
- .background-two {
14
- background: var(--color-background-two);
15
- }
6
+ background: var(--color-sheet-container-lowest);
7
+ color: var(--color-on-sheet-container-lowest);
16
8
 
17
9
 
18
10
  &.app-rtl {
@@ -2,14 +2,15 @@
2
2
  <div :class="`${$r.prefix}toast`">
3
3
  <transition name="slide-up">
4
4
  <div class="toast-content br-sm elevation-md" :class="'color-'+type" v-if="modelValue">
5
- <span class="title">
5
+ <span class="title-1">
6
6
  <slot></slot>
7
7
  </span>
8
8
  <r-spacer></r-spacer>
9
- <r-btn text class="title font-weight-bold" :class="{
9
+ <r-btn :class="{
10
10
  'color-info-text':type==='warning',
11
11
  'color-warning-text':type!=='warning'
12
- }" v-if="action" @click.prevent="action(this)">{{actionName}}</r-btn>
12
+ }" class="title-1 font-weight-bold" text v-if="action" @click.prevent="action(this)">{{ actionName }}
13
+ </r-btn>
13
14
  <r-btn @click.prevent="close()"
14
15
  icon
15
16
  text
@@ -43,7 +43,7 @@ export default {
43
43
  height: 56px;
44
44
  z-index: map_get($z-index, "default");
45
45
  background-color: var(--color-sheet);
46
- color: var(--color-text-primary);
46
+ color: var(--color-on-sheet);
47
47
 
48
48
 
49
49
  .navigation-item {
@@ -1,6 +1,6 @@
1
1
  @import "../../../style/include";
2
2
 
3
- $bottom-nav-btn-font-size: map-metro-get($headings, 'caption', 'size') !default;
3
+ $bottom-nav-btn-font-size: map-metro-get($headings, 'label-1', 'size') !default;
4
4
 
5
5
  .#{$prefix}bottom-navigation {
6
6
  bottom: 0;
@@ -12,7 +12,7 @@ $bottom-nav-btn-font-size: map-metro-get($headings, 'caption', 'size') !default;
12
12
 
13
13
 
14
14
  background-color: var(--color-sheet);
15
- color: var(--color-text-primary);
15
+ color: var(--color-on-sheet);
16
16
 
17
17
  .router-link-exact-active {
18
18
  color: var(--color-one) !important
@@ -12,7 +12,7 @@
12
12
 
13
13
 
14
14
  .breadcrumb-divider, .breadcrumb-item-disabled, .#{$prefix}icon {
15
- color: var(--color-disabled)
15
+ color: var(--color-border)
16
16
  }
17
17
 
18
18
 
@@ -22,14 +22,15 @@
22
22
 
23
23
  <script>
24
24
  import './style.scss'
25
- import { roots } from '../../tools/rootable'
25
+ import {roots} from '../../tools/rootable'
26
+
26
27
  export default {
27
28
  name: 'r-btn',
28
29
  mixins: [roots],
29
30
  props: {
30
31
  tag: {
31
32
  type: String,
32
- default: 'span'
33
+ default: 'button'
33
34
  },
34
35
  size: {
35
36
  type: String,
@@ -89,8 +90,7 @@ export default {
89
90
  c += ' btn-tile'
90
91
  }
91
92
  if (this.disabled) {
92
- c += ' btn-disabled'
93
- c += ' disabled-text'
93
+ c += ` btn-disabled`
94
94
  }
95
95
  if (this.readonly) {
96
96
  c += ' btn-readonly'
@@ -58,37 +58,36 @@ $btn-transition: opacity 0.2s map-get($transition, 'ease-in-out') !default;
58
58
  vertical-align: middle;
59
59
  white-space: nowrap;
60
60
 
61
-
62
- &.btn-disabled {
63
- color: var(--color-disabled) !important;
64
-
65
- .btn-loading {
66
- color: var(--color-disabled) !important
67
- }
68
-
69
- &:not(.btn-text):not(.btn-outlined) {
70
- background-color: var(--color-focused) !important
71
- }
72
- }
73
-
74
61
  &:not(.btn-text):not(.btn-outlined) {
75
62
  background-color: var(--color-sheet);
63
+ color: var(--color-on-sheet);
76
64
  }
77
65
 
78
66
  &.btn-outlined.btn-text {
79
- border-color: var(--color-divider)
67
+ border-color: var(--color-border)
80
68
  }
81
69
 
82
70
 
83
71
  @include states();
84
72
 
73
+ &.btn-disabled {
74
+ @include disable-states();
75
+
76
+ &:not(.btn-text):not(.btn-outlined) {
77
+ background-color: var(--color-#{map-metro-get($states, 'disabled','state','color')}) !important;
78
+ }
79
+
80
+ &.btn-text, &.btn-outlined {
81
+ &::before {
82
+ opacity: 0 !important;
83
+ }
84
+ }
85
+ }
86
+
85
87
  @include ltr() {
86
88
  letter-spacing: $btn-letter-spacing;
87
89
  }
88
90
 
89
- &.btn-disabled {
90
- pointer-events: none;
91
- }
92
91
 
93
92
  &.btn-readonly {
94
93
  pointer-events: none;
@@ -109,10 +108,6 @@ $btn-transition: opacity 0.2s map-get($transition, 'ease-in-out') !default;
109
108
  background-color: currentColor
110
109
  }
111
110
 
112
- &:not(.btn-disabled) {
113
- will-change: box-shadow
114
- }
115
-
116
111
  &:not(.btn-round) {
117
112
  @each $name, $size in $btn-sizes {
118
113
  $p: div($size, 2.25);
@@ -223,11 +218,6 @@ $btn-transition: opacity 0.2s map-get($transition, 'ease-in-out') !default;
223
218
  box-shadow: none !important
224
219
  }
225
220
 
226
- .btn-disabled {
227
- box-shadow: none;
228
- pointer-events: none
229
- }
230
-
231
221
  .btn-icon,
232
222
  .btn-fab {
233
223
  min-height: 0;
@@ -351,7 +341,7 @@ $btn-transition: opacity 0.2s map-get($transition, 'ease-in-out') !default;
351
341
 
352
342
  .#{$prefix}button-group {
353
343
  position: relative;
354
- color: inherit;
344
+ color: var(--color-on-sheet);;
355
345
  background-color: var(--color-sheet);
356
346
 
357
347
  @include states();
@@ -329,9 +329,8 @@ export default {
329
329
  border: 1px solid var(--color-border);
330
330
  }
331
331
  .cell {
332
- &.today {
333
- color: var(--color-one);
334
332
 
333
+ &.today {
335
334
  .cellContent {
336
335
  border: solid 1px var(--color-one);
337
336
  }
@@ -345,8 +344,8 @@ export default {
345
344
 
346
345
  }
347
346
  .cell.disabled {
348
- background-color: var(--color-disabled);
349
- opacity: 0.5;
347
+ background-color: var(--color-border);
348
+ opacity: 0.3;
350
349
  }
351
350
 
352
351
 
@@ -71,11 +71,9 @@
71
71
  transition: box-shadow .3s cubic-bezier(0.4, 0, 0.2, 1);
72
72
  @include elevation('md');
73
73
  border-radius: map_get($borders, 'md');
74
-
75
-
76
74
  background-color: var(--color-sheet);
77
75
  border-color: var(--color-sheet);
78
- color: var(--color-text-primary);
76
+ color: var(--color-on-sheet);
79
77
 
80
78
 
81
79
  &-tile {
@@ -37,7 +37,7 @@
37
37
  <r-icon v-html="$r.icons.send"></r-icon>
38
38
  </r-btn>
39
39
  <br>
40
- <span class="caption color-error-text" v-if="remain<30">{{ remain }}</span>
40
+ <span v-if="remain<30" class="label-1 color-error-text">{{ remain }}</span>
41
41
  </div>
42
42
  <input accept="*"
43
43
  @change="addFile()"
@@ -118,7 +118,7 @@ export default {
118
118
  display: flex;
119
119
 
120
120
  box-shadow: black 0px 8px 15px;
121
- background: var(--color-background-two);
121
+ background: var(--color-sheet-container);
122
122
  border-top: 1px solid var(--color-border);
123
123
 
124
124
  .chat-input {
@@ -18,7 +18,7 @@
18
18
  'in-line-btm':i===message.list.length-1&&message.list.length>1
19
19
  }">
20
20
  <div class="message-text body-1">
21
- <div class="message-username subtitle-2" v-if="!isMe">{{ user.name }}
21
+ <div v-if="!isMe" class="message-username title-3">{{ user.name }}
22
22
  </div>
23
23
  <div v-if="msg.type==='file'" @click="$helper.download('/'+msg.link)">
24
24
  <div class="mx-n2 mt-n1" v-if="isImg(msg.link)">
@@ -32,7 +32,7 @@
32
32
  </div>
33
33
  </div>
34
34
  <div v-html="msg.content"></div>
35
- <div class="message-info text-end caption">
35
+ <div class="message-info text-end label-1">
36
36
  {{ msg.timestamp }}
37
37
  </div>
38
38
  </div>
@@ -170,7 +170,7 @@ export default {
170
170
  height: 30px;
171
171
  border-radius: 50%;
172
172
 
173
- background-color: var(--color-background-two);
173
+ background-color: var(--color-sheet-container);
174
174
 
175
175
  position: absolute;
176
176
  top: -15px;
@@ -110,6 +110,7 @@ export default {
110
110
  flex-direction: column;
111
111
  align-items: stretch;
112
112
  overflow: hidden;
113
- background: var(--color-background-two);
113
+ background: var(--color-sheet-container);
114
+ color: var(--color-on-sheet-container);
114
115
  }
115
116
  </style>
@@ -43,7 +43,7 @@ export default {
43
43
  c += ' chip-selectable'
44
44
  }
45
45
  if (this.modelValue) {
46
- c += ' chip-active ps-0 color-one'
46
+ c += ' chip-active ps-0'
47
47
  }
48
48
 
49
49
  if (this.close) {
@@ -53,16 +53,29 @@ $icon-sizes: (
53
53
  transition-duration: $chip-transition-duration;
54
54
  transition-timing-function: $chip-transition-fn;
55
55
  vertical-align: middle;
56
-
57
-
58
- border-color: var(--color-divider);
56
+ border-color: var(--color-border);
59
57
 
60
58
  &:not(.chip-active) {
61
- background: #e0e0e0;
59
+ background: var(--color-two-container);
60
+ color: var(--color-on-two-container);
62
61
  }
63
62
 
64
63
  @include states();
65
64
 
65
+ &.chip-disabled {
66
+ @include disable-states();
67
+
68
+ &:not(.chip-text):not(.chip-outlined) {
69
+ background-color: var(--color-#{map-metro-get($states, 'disabled','state','color')}) !important;
70
+ }
71
+
72
+ &.btn-text, &.btn-outlined {
73
+ &::before {
74
+ opacity: 0 !important;
75
+ }
76
+ }
77
+ }
78
+
66
79
  &:before {
67
80
  background-color: currentColor;
68
81
  bottom: 0;
@@ -108,18 +121,15 @@ $icon-sizes: (
108
121
  }
109
122
 
110
123
  &.chip-active {
124
+ background-color: var(--color-one);
125
+ color: var(--color-on-one);
126
+
111
127
  .#{$prefix}icon {
112
128
  color: inherit;
113
129
  padding: 0 3px;
114
130
  }
115
131
  }
116
132
 
117
- &.chip-disabled {
118
- opacity: .4;
119
- pointer-events: none;
120
- user-select: none;
121
- }
122
-
123
133
  &.chip-label {
124
134
  border-radius: $chip-label-border-radius !important
125
135
  }
@@ -2,7 +2,7 @@
2
2
  <div :class="`${$r.prefix}code-editor`">
3
3
  <div class="code-action text-right">
4
4
  <r-btn
5
- class="image-copy"
5
+ class="color-white-text"
6
6
  icon
7
7
  text
8
8
  @click.prevent="$helper.copy($refs.codeView.innerText)"
@@ -10,18 +10,18 @@
10
10
  <r-icon v-html="$r.icons.copy"></r-icon>
11
11
  </r-btn>
12
12
  <r-btn
13
- class="image-copy"
13
+ class="color-white-text"
14
14
  icon
15
15
  text
16
16
  @click.prevent="pretty"
17
17
  >
18
18
  P
19
19
  </r-btn>
20
- <r-btn v-if="show === 'code' && runnable" text @click="show = 'run'">
20
+ <r-btn v-if="show === 'code' && runnable" class="color-white-text" text @click="show = 'run'">
21
21
  run
22
22
  <r-icon v-html="$r.icons.play" exact></r-icon>
23
23
  </r-btn>
24
- <r-btn v-if="show === 'run'" text @click="show = 'code'">
24
+ <r-btn v-if="show === 'run'" class="color-white-text" text @click="show = 'code'">
25
25
  <r-icon v-html="$r.icons.code_tags" exact></r-icon>
26
26
  </r-btn>
27
27
  </div>
@@ -137,6 +137,7 @@ export default {
137
137
  background-color: #15212e;
138
138
  color: #fff;
139
139
  padding: 10px;
140
+ font-size: 14px;
140
141
 
141
142
  .code-script,
142
143
  .code-template {
@@ -6,7 +6,7 @@ export default {
6
6
  }
7
7
  text = text.trim()
8
8
  text = text.replace(/ +(?= )/g, '');
9
- text = text.replace(/[\r|\n|\t]/g, '');
9
+ text = text.replace(/[\r\n\t]/g, '');
10
10
  let r = ''
11
11
  text = text.split('<')
12
12
  let numopen = 0
@@ -22,7 +22,7 @@ export default {
22
22
  }
23
23
  }
24
24
  })
25
- r = r.replace(/<([^/].*)>+[\r|\n|\t]+<\//g, '<$1></');
25
+ r = r.replace(/<([^/].*)>+[\r\n\t]+<\//g, '<$1></');
26
26
  return r
27
27
  },
28
28
  pretty_js(text) {
@@ -31,8 +31,8 @@ export default {
31
31
  }
32
32
  text = text.trim()
33
33
  text = text.replace(/ +(?= )/g, '');
34
- text = text.replace(/[\r|\n|\t]/g, '');
35
- text = text.replace(/([,|;|{|(|\[])+[\s]/g, '$1');
34
+ text = text.replace(/[\r\n\t]/g, '');
35
+ text = text.replace(/([,;{(\[])+[\s]/g, '$1');
36
36
  let r = ''
37
37
  text = text.split('')
38
38
  let numopen = 0
@@ -176,7 +176,7 @@ export default {
176
176
 
177
177
 
178
178
  //function like $r $d()
179
- regex = /(\$([a-zA-z0-9]*)[.|(])/g;
179
+ regex = /(\$([a-zA-z0-9]*)[.(])/g;
180
180
  res = res.replace(regex, '<span class="color-func code-editor-span">$1</span>')
181
181
 
182
182
 
@@ -4,9 +4,9 @@
4
4
  <r-container class="container-fluid">
5
5
  <r-row>
6
6
  <r-col class="col-12 text-center">
7
- <h2 class="display-5">
8
- {{title||$t('confirm_title','renusify')}}
9
- </h2>
7
+ <h2 class="title-1">
8
+ {{ title || $t('confirm_title', 'renusify') }}
9
+ </h2>
10
10
  <r-divider class="my-3 color-warning"></r-divider>
11
11
  </r-col>
12
12
  <r-col class="col-12">
@@ -70,7 +70,7 @@ $divider-inset-margin: 72px !default;
70
70
  max-height: 0px;
71
71
  transition: inherit;
72
72
 
73
- border-top: solid thin var(--color-divider);
73
+ border-top: solid thin var(--color-border);
74
74
 
75
75
  &.divider-inset:not(.divider-vertical) {
76
76
  max-width: calc(100% - #{$divider-inset-margin});
@@ -8,6 +8,7 @@
8
8
  :searchLink="`https://codenus.com/api/apps/address?lang=${$r.lang}`"
9
9
  :rules="required?['required']:[]"
10
10
  :headers="{'Authorization':''}"
11
+ :readonly="readonly"
11
12
  :tile="tile">
12
13
  </r-select-input>
13
14
  <r-select-input :label="$t('state','renusify')"
@@ -20,6 +21,7 @@
20
21
  :rules="required?['required']:[]"
21
22
  value="id"
22
23
  :headers="{'Authorization':''}"
24
+ :readonly="readonly"
23
25
  :tile="tile">
24
26
 
25
27
  </r-select-input>
@@ -33,6 +35,7 @@
33
35
  :rules="required?['required']:[]"
34
36
  value="id"
35
37
  :headers="{'Authorization':''}"
38
+ :readonly="readonly"
36
39
  :tile="tile">
37
40
 
38
41
  </r-select-input>
@@ -40,11 +43,13 @@
40
43
  :label="$t('zip_code','renusify')"
41
44
  v-model="zip_code"
42
45
  :tile="tile"
46
+ :readonly="readonly"
43
47
  :rules="required?['required']:[]"></r-text-input>
44
48
  <r-text-area v-if="!hideStreet" @update:model-value="emit(false,false)"
45
49
  :label="$t('street','renusify')"
46
50
  v-model="street"
47
51
  :tile="tile"
52
+ :readonly="readonly"
48
53
  :rules="required?['required']:[]"></r-text-area>
49
54
  </template>
50
55
  <script>
@@ -59,6 +64,7 @@ export default {
59
64
  hideCity: Boolean,
60
65
  hideZipCode: Boolean,
61
66
  hideStreet: Boolean,
67
+ readonly: Boolean,
62
68
  tile: {type: Boolean, default: undefined},
63
69
  defaultCountry: Object,
64
70
  modelValue: Object
@@ -1,28 +1,28 @@
1
1
  <template>
2
- <r-select-input :label="$t('state','renusify')"
3
- v-model="state"
4
- @update:model-value="emit"
5
- :items="Object.keys(states)"
6
- :rules="required?['required']:[]"
7
- :tile="tile"
8
- justValue>
2
+ <r-select-input v-model="state"
3
+ :items="Object.keys(states)"
4
+ :label="$t('state','renusify')"
5
+ :rules="required?['required']:[]"
6
+ :tile="tile"
7
+ justValue
8
+ @update:model-value="emit">
9
9
 
10
10
  </r-select-input>
11
11
  <r-select-input v-if="state"
12
- @update:model-value="emit"
13
- :label="$t('city','renusify')"
14
- v-model="city"
15
- :items="states[state]"
16
- :rules="required?['required']:[]"
17
- :tile="tile"
18
- justValue>
12
+ v-model="city"
13
+ :items="states[state]"
14
+ :label="$t('city','renusify')"
15
+ :rules="required?['required']:[]"
16
+ :tile="tile"
17
+ justValue
18
+ @update:model-value="emit">
19
19
 
20
20
  </r-select-input>
21
- <r-text-area v-if="city && !hideAddress" @update:model-value="emit"
21
+ <r-text-area v-if="city && !hideAddress" v-model="address"
22
22
  :label="$t('address','renusify')"
23
- v-model="address"
23
+ :rules="required?['required']:[]"
24
24
  :tile="tile"
25
- :rules="required?['required']:[]"></r-text-area>
25
+ @update:model-value="emit"></r-text-area>
26
26
  </template>
27
27
  <script>
28
28
 
@@ -16,7 +16,7 @@
16
16
  v-html="$r.icons.check" exact></r-icon>
17
17
  </transition>
18
18
  </span>
19
- <span class="ms-2 color-primary-text" @click="emit">
19
+ <span class="ms-2" @click="emit">
20
20
  <span class="color-error-text" v-if="isRequired">*</span>
21
21
  <slot name="label">{{ label }}</slot>
22
22
  </span>
@@ -170,7 +170,8 @@ export default {
170
170
  box-shadow: 0 0 16px 0 rgba(0, 0, 0, 0.16);
171
171
  z-index: 1;
172
172
 
173
- background: #f7f8f9;
173
+ background: var(--color-sheet-container-lowest);
174
+ color: var(--color-on-sheet-container-lowest);
174
175
 
175
176
  canvas {
176
177
  vertical-align: top;
@@ -212,13 +213,13 @@ export default {
212
213
 
213
214
 
214
215
  .name {
215
- color: #999;
216
- background: #e7e8e9;
216
+ color: var(--color-on-sheet-container);
217
+ background: var(--color-sheet-container)
217
218
  }
218
219
 
219
220
  .value {
220
- color: #666;
221
- background: #eceef0;
221
+ color: var(--color-on-sheet);
222
+ background: var(--color-sheet)
222
223
  }
223
224
  }
224
225
  }
@@ -398,7 +398,7 @@ export default {
398
398
  &.selectable:hover {
399
399
  .cellContent {
400
400
 
401
- color: #fff;
401
+ color: var(--color-on-one);
402
402
  background: var(--color-one);
403
403
 
404
404
  }
@@ -466,9 +466,7 @@ export default {
466
466
  }
467
467
 
468
468
  .cell.disabled {
469
-
470
- opacity: 0.5;
471
-
469
+ opacity: 0.38;
472
470
  }
473
471
 
474
472
  }
@@ -1,5 +1,5 @@
1
1
  <template>
2
- <form :class="`${$r.prefix}form`">
2
+ <form :class="`${$r.prefix}form`" @submit.prevent="submit">
3
3
  <slot></slot>
4
4
  </form>
5
5
  </template>
@@ -18,7 +18,7 @@ export default {
18
18
  props: {
19
19
  modelValue: Boolean
20
20
  },
21
- emits:['update:modelValue'],
21
+ emits: ['update:modelValue', 'submit'],
22
22
  data: () => ({
23
23
  inputs: [],
24
24
  watchers: [],
@@ -26,7 +26,7 @@ export default {
26
26
  }),
27
27
  watch: {
28
28
  errorBag: {
29
- handler (val) {
29
+ handler(val) {
30
30
  const errors = Object.values(val).includes(true)
31
31
  this.$emit('update:modelValue', !errors)
32
32
  },
@@ -36,7 +36,10 @@ export default {
36
36
  }
37
37
  },
38
38
  methods: {
39
- watchInput (input) {
39
+ submit() {
40
+ this.$emit('submit', true)
41
+ },
42
+ watchInput(input) {
40
43
  const watcher = input => {
41
44
  return input.$watch('hasError', val => {
42
45
  this.errorBag[input.uid] = val
@@ -3,7 +3,7 @@
3
3
  :model-value="modelValue"
4
4
  hide>
5
5
  <div class="w-full">
6
- <span v-if="label" class="color-primary-text">{{ label }}</span>
6
+ <span v-if="label">{{ label }}</span>
7
7
  <div class="group-holder" v-for="(item,i) in modelValue" :key="i">
8
8
  <div class="group-slot">
9
9
  <slot :item="item" :index="i" :disableDel="disDel">