@tencentcloud/ai-desk-customer-vue 1.1.0 → 1.4.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 (70) hide show
  1. package/CHANGELOG.md +16 -3
  2. package/assets/customer_avatar.png +0 -0
  3. package/assets/face.svg +10 -0
  4. package/assets/files.svg +5 -0
  5. package/assets/image.svg +8 -0
  6. package/assets/rating_tool_icon.svg +5 -0
  7. package/assets/rating_tool_icon_h5.svg +1 -0
  8. package/assets/video.svg +8 -0
  9. package/assets/video_h5.svg +1 -0
  10. package/components/CustomerServiceChat/chat-header/index-web.vue +16 -14
  11. package/components/CustomerServiceChat/index-web.vue +72 -16
  12. package/components/CustomerServiceChat/message-input/index-web.vue +31 -5
  13. package/components/CustomerServiceChat/message-input/message-input-editor-web.vue +24 -0
  14. package/components/CustomerServiceChat/message-input-toolbar/emoji-picker/emoji-picker-dialog.vue +1 -1
  15. package/components/CustomerServiceChat/message-input-toolbar/emoji-picker/index.vue +1 -1
  16. package/components/CustomerServiceChat/message-input-toolbar/file-upload/index.vue +6 -8
  17. package/components/CustomerServiceChat/message-input-toolbar/image-upload/index.vue +11 -16
  18. package/components/CustomerServiceChat/message-input-toolbar/index-web.vue +61 -18
  19. package/components/CustomerServiceChat/message-input-toolbar/rating-tool/index.vue +72 -0
  20. package/components/CustomerServiceChat/message-input-toolbar/toolbar-item-container/style/h5.scss +10 -1
  21. package/components/CustomerServiceChat/message-input-toolbar/user-define-input-tool.vue +80 -0
  22. package/components/CustomerServiceChat/message-input-toolbar/video-upload/index.vue +9 -14
  23. package/components/CustomerServiceChat/message-list/index-web.vue +34 -6
  24. package/components/CustomerServiceChat/message-list/message-elements/message-bubble-web.vue +65 -19
  25. package/components/CustomerServiceChat/message-list/message-elements/message-desk/message-desk-elements/marked.ts +1 -1
  26. package/components/CustomerServiceChat/message-list/message-elements/message-desk/message-desk-elements/message-branch.vue +30 -11
  27. package/components/CustomerServiceChat/message-list/message-elements/message-desk/message-desk-elements/message-concurrency-limit.vue +40 -0
  28. package/components/CustomerServiceChat/message-list/message-elements/message-desk/message-desk-elements/message-desk.vue +29 -7
  29. package/components/CustomerServiceChat/message-list/message-elements/message-desk/message-desk-elements/message-multi-branch/branch-pc.vue +107 -73
  30. package/components/CustomerServiceChat/message-list/message-elements/message-desk/message-desk-elements/message-multi-branch/index.vue +53 -52
  31. package/components/CustomerServiceChat/message-list/message-elements/message-desk/message-desk-elements/message-multi-form/component-mobile/input-mobile.vue +73 -80
  32. package/components/CustomerServiceChat/message-list/message-elements/message-desk/message-desk-elements/message-multi-form/component-mobile/label-mobile.vue +21 -24
  33. package/components/CustomerServiceChat/message-list/message-elements/message-desk/message-desk-elements/message-multi-form/component-mobile/radios-mobile.vue +115 -116
  34. package/components/CustomerServiceChat/message-list/message-elements/message-desk/message-desk-elements/message-multi-form/component-pc/input-pc.vue +69 -73
  35. package/components/CustomerServiceChat/message-list/message-elements/message-desk/message-desk-elements/message-multi-form/component-pc/label-pc.vue +21 -25
  36. package/components/CustomerServiceChat/message-list/message-elements/message-desk/message-desk-elements/message-multi-form/component-pc/radio-pc.vue +87 -77
  37. package/components/CustomerServiceChat/message-list/message-elements/message-desk/message-desk-elements/message-multi-form/form-mobile.vue +213 -200
  38. package/components/CustomerServiceChat/message-list/message-elements/message-desk/message-desk-elements/message-multi-form/form-pc.vue +122 -113
  39. package/components/CustomerServiceChat/message-list/message-elements/message-desk/message-desk-elements/message-multi-form/index.vue +7 -7
  40. package/components/CustomerServiceChat/message-list/message-elements/message-desk/message-desk-elements/message-order.vue +141 -0
  41. package/components/CustomerServiceChat/message-list/message-elements/message-desk/message-desk-elements/message-rich-text.vue +5 -1
  42. package/components/CustomerServiceChat/message-list/message-elements/message-desk/message-desk-elements/message-stream.vue +25 -1
  43. package/components/CustomerServiceChat/message-list/message-elements/message-file.vue +1 -1
  44. package/components/CustomerServiceChat/message-list/scroll-button/index.vue +18 -6
  45. package/components/CustomerServiceChat/message-list/style/web.scss +2 -1
  46. package/components/CustomerServiceChat/message-toolbar-button/index.vue +111 -42
  47. package/components/CustomerServiceChat/message-toolbar-button/toolbar-button-end-human-service.vue +59 -0
  48. package/components/CustomerServiceChat/message-toolbar-button/toolbar-button-human-service.vue +55 -0
  49. package/components/CustomerServiceChat/message-toolbar-button/toolbar-button-service-rating.vue +59 -0
  50. package/components/common/BottomPopup/index.vue +1 -1
  51. package/constant.ts +25 -4
  52. package/interface.ts +35 -5
  53. package/locales/en/aidesk.ts +6 -3
  54. package/locales/fil/aidesk.ts +4 -1
  55. package/locales/id/aidesk.ts +7 -4
  56. package/locales/ja/aidesk.ts +5 -2
  57. package/locales/ms/aidesk.ts +5 -2
  58. package/locales/ru/aidesk.ts +6 -3
  59. package/locales/th/aidesk.ts +4 -1
  60. package/locales/vi/aidesk.ts +5 -2
  61. package/locales/zh_cn/aidesk.ts +5 -3
  62. package/locales/zh_tw/aidesk.ts +4 -1
  63. package/package.json +1 -1
  64. package/server.ts +11 -2
  65. package/utils/state.js +30 -0
  66. package/utils/utils.ts +48 -1
  67. package/assets/face.png +0 -0
  68. package/assets/files.png +0 -0
  69. package/assets/image.png +0 -0
  70. package/assets/video.png +0 -0
@@ -1,104 +1,97 @@
1
1
  <template>
2
- <div class="form-input-box-mobile">
3
- <LabelMobile :name="name" :is-required="isRequired" />
4
- <div class="form-input-line">
5
- <input
6
- class="form-input-mobile"
7
- v-model="text"
8
- :placeholder="placeholder"
9
- @input="onInputChanged"
10
- >
11
- <div v-if="validator" class="validator-line">
12
- {{TUITranslateService.t("AIDesk.请填写必填项")}}
13
- </div>
2
+ <div class="form-input-box-mobile">
3
+ <LabelMobile :name="name" :is-required="isRequired" />
4
+ <div class="form-input-line">
5
+ <input
6
+ class="form-input-mobile"
7
+ v-model="text"
8
+ :placeholder="placeholder"
9
+ @input="onInputChanged"
10
+ >
11
+ <div v-if="validator" class="validator-line">
12
+ {{ TUITranslateService.t("AIDesk.请填写必填项") }}
14
13
  </div>
15
-
16
14
  </div>
15
+
16
+ </div>
17
17
  </template>
18
18
  <script lang="ts">
19
19
  import vue from '../../../../../../../../adapter-vue';
20
20
  import LabelMobile from './label-mobile.vue';
21
21
  import { TUITranslateService } from '@tencentcloud/chat-uikit-engine';
22
- const { computed, ref} = vue;
23
-
24
- interface FormItem{
25
- name:string;
26
- value:string;
27
- }
28
-
22
+ const { ref } = vue;
29
23
 
30
24
  export default {
31
- components:{
32
- LabelMobile
25
+ components: {
26
+ LabelMobile
27
+ },
28
+ props: {
29
+ placeholder: {
30
+ type: String,
31
+ default: ''
32
+ },
33
+ variableValue: {
34
+ type: String,
35
+ default: ''
33
36
  },
34
- props:{
35
- placeholder:{
36
- type:String,
37
- default:''
38
- },
39
- variableValue:{
40
- type:String,
41
- default:''
42
- },
43
- name:{
44
- type:String,
45
- default:'',
46
- },
47
- isRequired:{
48
- type:Number,
49
- default:0,
50
- },
51
- nodeStatus:{
52
- type:Number,
53
- default:0
54
- },
55
- validator:{
56
- type:Boolean,
57
- default:false
58
- }
37
+ name: {
38
+ type: String,
39
+ default:'',
59
40
  },
60
- emits:['input-change'],
61
- setup(props, {emit}){
62
- const text = ref<string>('');
63
- if(props.variableValue.length!=0){
64
- text.value = props.variableValue;
65
- }
66
- const onInputChanged = ():void => {
67
- emit('input-change',{name:props.name,value:text.value});
68
- };
69
- return {
70
- text,
71
- onInputChanged,
72
- props,
73
- TUITranslateService
74
- }
41
+ isRequired: {
42
+ type: Number,
43
+ default: 0,
44
+ },
45
+ nodeStatus: {
46
+ type: Number,
47
+ default: 0
48
+ },
49
+ validator: {
50
+ type: Boolean,
51
+ default: false
52
+ }
53
+ },
54
+ emits:['input-change'],
55
+ setup(props, {emit}){
56
+ const text = ref<string>('');
57
+ if (props.variableValue.length != 0){
58
+ text.value = props.variableValue;
59
+ }
60
+ const onInputChanged = ():void => {
61
+ emit('input-change',{name:props.name,value:text.value});
62
+ };
63
+ return {
64
+ text,
65
+ onInputChanged,
66
+ props,
67
+ TUITranslateService
75
68
  }
69
+ }
76
70
  }
77
71
  </script>
78
72
  <style lang="scss">
79
73
  .form-input-box-mobile{
80
- display:flex;
81
- flex-direction: row;
82
- align-items: center;
83
- margin:0 16px;
84
- border-bottom:1px solid #e7e7e7;
85
- padding-top:5px;
74
+ display: flex;
75
+ flex-direction: row;
76
+ align-items: center;
77
+ margin: 0 16px;
78
+ border-bottom: 1px solid #e7e7e7;
79
+ padding-top: 5px;
86
80
  }
87
81
  .form-input-line {
88
- display:flex;
89
- margin-bottom: 10px;
90
- flex:1;
91
- flex-direction: column;
92
-
82
+ display:flex;
83
+ margin-bottom: 10px;
84
+ flex:1;
85
+ flex-direction: column;
93
86
  }
94
87
  .form-input-mobile {
95
- border-color:transparent;
96
- padding:5px 8px;
97
- font-size:14px;
88
+ border-color: transparent;
89
+ padding: 5px 8px;
90
+ font-size: 14px;
98
91
  }
99
92
  .validator-line {
100
- font-size: 12px;
101
- color:#e54545;
102
- margin-top: 3px;
93
+ font-size: 12px;
94
+ color:#e54545;
95
+ margin-top: 3px;
103
96
  }
104
- </style>
97
+ </style>
@@ -1,32 +1,29 @@
1
1
  <template>
2
- <div class="form-label">
3
- {{ name }}
4
- <div v-if="isRequired" style="color: red;">
5
- &nbsp;*
6
- </div>
2
+ <div class="form-label">
3
+ {{ name }}
4
+ <div v-if="isRequired" style="color: red;">
5
+ &nbsp;*
7
6
  </div>
7
+ </div>
8
8
  </template>
9
9
  <script lang="ts">
10
- export default {
11
- props:{
12
- name:{
13
- type:String,
14
- default:''
15
- },
16
- isRequired:{
17
- type:Number,
18
- default:0
19
- }
20
- },
21
- setup(props){
22
-
23
- }
24
- }
10
+ export default {
11
+ props: {
12
+ name: {
13
+ type: String,
14
+ default: ''
15
+ },
16
+ isRequired: {
17
+ type: Number,
18
+ default: 0
19
+ }
20
+ },
21
+ }
25
22
  </script>
26
23
  <style lang="scss">
27
24
  .form-label {
28
- display:flex;
29
- width:70px;
30
- padding-bottom: 8px;
25
+ display:flex;
26
+ width:70px;
27
+ padding-bottom: 8px;
31
28
  }
32
- </style>
29
+ </style>
@@ -1,30 +1,29 @@
1
1
  <template>
2
- <div class="label-container">
3
- <div>
4
- <Label :name="name" :is-required="isRequired"/>
5
- </div>
6
- <div class="radio-container">
7
- <div v-if="validator" class="validator-line">
8
- {{ TUITranslateService.t("AIDesk.请填写必填项") }}
2
+ <div class="label-container">
3
+ <div>
4
+ <Label :name="name" :is-required="isRequired"/>
5
+ </div>
6
+ <div class="radio-container">
7
+ <div v-if="validator" class="validator-line">
8
+ {{ TUITranslateService.t("AIDesk.请填写必填项") }}
9
+ </div>
10
+ <div class="form-radio-box-mobile" v-for="(item,index) in chooseItemList" :key="index">
11
+ <div class="radio-container-uni" @click="clickItem(index)">
12
+ <div class="radio-icon-uni">
13
+ <div v-if="isUniFrameWork">
14
+ <image :src="changeSelectedIcon(item)" alt="" style="width: 20px; height: 20px; vertical-align: middle;"/>
15
+ </div>
16
+ <div v-else>
17
+ <img :src="changeSelectedIcon(item)" alt="" style="width: 20px; height: 20px; vertical-align: middle;"/>
9
18
  </div>
10
- <div class="form-radio-box-mobile" v-for="(item,index) in chooseItemList" :key="index">
11
- <div class="radio-container-uni" @click="clickItem(index)">
12
- <div class="radio-icon-uni">
13
- <div v-if="isUniFrameWork">
14
- <image :src="changeSelectedIcon(item)" alt="" style="width: 20px; height: 20px; vertical-align: middle;"/>
15
- </div>
16
- <div v-else>
17
- <img :src="changeSelectedIcon(item)" alt="" style="width: 20px; height: 20px; vertical-align: middle;"/>
18
- </div>
19
- </div>
20
- <div class="radio-label-uni">
21
- {{ item }}
22
- </div>
23
- </div>
24
- </div>
19
+ </div>
20
+ <div class="radio-label-uni">
21
+ {{ item }}
22
+ </div>
25
23
  </div>
26
-
24
+ </div>
27
25
  </div>
26
+ </div>
28
27
  </template>
29
28
  <script lang="ts">
30
29
  import Label from './label-mobile.vue';
@@ -32,112 +31,112 @@ import vue from '../../../../../../../../adapter-vue';
32
31
  import Icon from '../../customer-icon.vue';
33
32
  import radioUncheckIcon from '../../../../../../../../assets/radio-uncheck.png';
34
33
  import radioCheckIcon from '../../../../../../../../assets/radio-check.png';
35
- import { isPC, isH5,isWeChat, isUniFrameWork } from '../../../../../../../../utils/env';
34
+ import { isUniFrameWork } from '../../../../../../../../utils/env';
36
35
  import { TUITranslateService } from '@tencentcloud/chat-uikit-engine';
37
- const { ref} = vue;
36
+ const { ref } = vue;
38
37
  export default {
39
- components:{
40
- Label,
41
- Icon
38
+ components: {
39
+ Label,
40
+ Icon
41
+ },
42
+ props: {
43
+ chooseItemList: {
44
+ type: Array,
45
+ default: []
42
46
  },
43
- props:{
44
- chooseItemList:{
45
- type:Array,
46
- default:[]
47
- },
48
- name:{
49
- type:String,
50
- default:'',
51
- },
52
- isRequired:{
53
- type:Number,
54
- default:0,
55
- },
56
- validator:{
57
- type:Boolean,
58
- default:false
59
- }
47
+ name: {
48
+ type: String,
49
+ default: '',
60
50
  },
61
- emits:['input-change'],
62
- setup(props,{emit}){
63
- const selectedOption = ref<string>('');
64
- const checkedIcon = ref<string>('');
65
- const changeSelectedIcon = (name:any) => {
66
- if(selectedOption.value === name)
67
- return radioCheckIcon;
68
- else
69
- return radioUncheckIcon;
70
- }
71
-
72
- const clickItem=(index:number) => {
73
- selectedOption.value = props.chooseItemList[index] as string;
74
- emit('input-change',{name:props.name,value:selectedOption.value});
75
- }
51
+ isRequired: {
52
+ type: Number,
53
+ default: 0,
54
+ },
55
+ validator: {
56
+ type: Boolean,
57
+ default: false
58
+ }
59
+ },
60
+ emits:['input-change'],
61
+ setup(props,{emit}){
62
+ const selectedOption = ref<string>('');
63
+ const checkedIcon = ref<string>('');
64
+ const changeSelectedIcon = (name:any) => {
65
+ if (selectedOption.value === name) {
66
+ return radioCheckIcon;
67
+ } else {
68
+ return radioUncheckIcon;
69
+ }
70
+ }
71
+
72
+ const clickItem = (index:number) => {
73
+ selectedOption.value = props.chooseItemList[index] as string;
74
+ emit('input-change',{name:props.name,value:selectedOption.value});
75
+ }
76
76
 
77
- const onInputChanged = ():void => {
78
- emit('input-change',{name:props.name,value:selectedOption.value});
79
- };
80
- return {
81
- onInputChanged,
82
- selectedOption,
83
- clickItem,
84
- isUniFrameWork,
85
- radioUncheckIcon,
86
- radioCheckIcon,
87
- changeSelectedIcon,
88
- checkedIcon,
89
- TUITranslateService
90
- }
77
+ const onInputChanged = ():void => {
78
+ emit('input-change',{name:props.name,value:selectedOption.value});
79
+ };
80
+ return {
81
+ onInputChanged,
82
+ selectedOption,
83
+ clickItem,
84
+ isUniFrameWork,
85
+ radioUncheckIcon,
86
+ radioCheckIcon,
87
+ changeSelectedIcon,
88
+ checkedIcon,
89
+ TUITranslateService
91
90
  }
91
+ }
92
92
  }
93
93
  </script>
94
94
  <style lang="scss">
95
95
  .label-container{
96
- display:flex;
97
- padding:0 16px;
96
+ display:flex;
97
+ padding:0 16px;
98
98
  }
99
99
  .radio-container {
100
- display:flex;
101
- flex-direction: column;
102
- margin-left:16px;
103
-
104
- width:100%;
100
+ display:flex;
101
+ flex-direction: column;
102
+ margin-left:16px;
103
+ width:100%;
105
104
  }
106
105
 
107
106
  .form-radio-box-mobile{
108
- margin-bottom: 5px;
109
- padding:10px 0;
110
- border-bottom: 1px solid #e7e7e7;
107
+ margin-bottom: 5px;
108
+ padding:10px 0;
109
+ border-bottom: 1px solid #e7e7e7;
111
110
  }
112
111
 
113
112
  input[type="radio"] {
114
- display: none;
115
- +label {
116
- position: relative;
117
- cursor: pointer;
118
- &::before {
119
- content: "";
120
- position: absolute;
121
- left: -24px;
122
- top: 0px;
123
- border-radius: 50%;
124
- // border: 1px solid #6f686a;
125
- width: 20px;
126
- height: 20px;
127
- background-image: url('../../../../../../../../assets/radio-uncheck.png');
128
- background-size: cover;
129
- background-position: center;
130
- }
131
- &::after {
113
+ display: none;
114
+ +label {
115
+ position: relative;
116
+ cursor: pointer;
117
+ &::before {
132
118
  content: "";
133
119
  position: absolute;
134
120
  left: -24px;
135
121
  top: 0px;
136
122
  border-radius: 50%;
123
+ // border: 1px solid #6f686a;
137
124
  width: 20px;
138
125
  height: 20px;
139
- }
140
- }
126
+ background-image: url('../../../../../../../../assets/radio-uncheck.png');
127
+ background-size: cover;
128
+ background-position: center;
129
+ }
130
+ &::after {
131
+ content: "";
132
+ position: absolute;
133
+ left: -24px;
134
+ top: 0px;
135
+ border-radius: 50%;
136
+ width: 20px;
137
+ height: 20px;
138
+ }
139
+ }
141
140
  &:checked {
142
141
  + label::after {
143
142
  background-image: url('../../../../../../../../assets/radio-check.png');
@@ -146,18 +145,18 @@ input[type="radio"] {
146
145
  }
147
146
  }
148
147
 
149
- .radio-container-uni{
150
- display:flex;
151
- flex-direction: row;
152
- width: 100%;
153
- align-items: center;
154
- .radio-icon-uni {
155
- margin-right:5px;
156
- }
148
+ .radio-container-uni {
149
+ display: flex;
150
+ flex-direction: row;
151
+ width: 100%;
152
+ align-items: center;
153
+ .radio-icon-uni {
154
+ margin-right:5px;
155
+ }
157
156
  }
158
157
  .validator-line {
159
- font-size: 12px;
160
- color:#e54545;
161
- margin-top: 3px;
158
+ font-size: 12px;
159
+ color: #e54545;
160
+ margin-top: 3px;
162
161
  }
163
- </style>
162
+ </style>
@@ -1,95 +1,91 @@
1
1
  <template>
2
- <div class="form-input-box">
3
- <div class="form-input-line">
4
- <input
5
- v-model="text"
6
- :class="['form-input',validator? 'form-input-validate':'']"
7
- :placeholder="placeholder"
8
- @change="onInputChanged"
9
- >
10
- <div v-if="validator" class="validator-line">
11
- {{ TUITranslateService.t("AIDesk.请填写必填项") }}
2
+ <div class="form-input-box">
3
+ <div class="form-input-line">
4
+ <input
5
+ v-model="text"
6
+ :class="['form-input',validator && !isDisabled ? 'form-input-validate':'']"
7
+ :placeholder="placeholder"
8
+ @change="onInputChanged"
9
+ :disabled="isDisabled"
10
+ >
11
+ <div v-if="validator && !isDisabled" class="validator-line">
12
+ {{ TUITranslateService.t("AIDesk.请填写必填项") }}
12
13
  </div>
13
- </div>
14
-
15
14
  </div>
15
+ </div>
16
16
  </template>
17
17
  <script lang="ts">
18
18
  import vue from '../../../../../../../../adapter-vue';
19
19
  import { TUITranslateService } from '@tencentcloud/chat-uikit-engine';
20
- const { computed, ref} = vue;
21
-
22
- interface FormItem{
23
- name:string;
24
- value:string;
25
- }
26
-
20
+ const { ref } = vue;
27
21
 
28
22
  export default {
29
- props:{
30
- placeholder:{
31
- type:String,
32
- default:''
33
- },
34
- variableValue:{
35
- type:String,
36
- default:''
37
- },
38
- name:{
39
- type:String,
40
- default:'',
41
- },
42
- isRequired:{
43
- type:Number,
44
- default:0,
45
- },
46
- nodeStatus:{
47
- type:Number,
48
- default:0
49
- },
50
- validator:{
51
- type:Boolean,
52
- default:false
53
- }
23
+ props: {
24
+ placeholder: {
25
+ type: String,
26
+ default: ''
27
+ },
28
+ variableValue: {
29
+ type: String,
30
+ default: ''
31
+ },
32
+ name: {
33
+ type: String,
34
+ default: '',
54
35
  },
55
- emits:['input-change'],
56
- setup(props, {emit}){
57
- const text = ref<string>('');
58
- if(props.variableValue.length!=0){
59
- text.value = props.variableValue;
60
- }
61
- const onInputChanged = ():void => {
62
- emit('input-change',{name:props.name,value:text.value});
63
- };
64
- return {
65
- text,
66
- onInputChanged,
67
- TUITranslateService
68
- }
36
+ isRequired: {
37
+ type: Number,
38
+ default: 0,
39
+ },
40
+ validator: {
41
+ type: Boolean,
42
+ default: false
43
+ },
44
+ isDisabled: {
45
+ type: Boolean,
46
+ default: false
47
+ }
48
+ },
49
+ emits:['input-change'],
50
+ setup(props, {emit}){
51
+ const text = ref<string>('');
52
+ if (props.variableValue.length != 0) {
53
+ text.value = props.variableValue;
69
54
  }
55
+ const onInputChanged = ():void => {
56
+ emit('input-change',{name:props.name,value:text.value});
57
+ };
58
+ return {
59
+ text,
60
+ onInputChanged,
61
+ TUITranslateService
62
+ }
63
+ }
70
64
  }
71
65
  </script>
72
66
  <style lang="scss">
73
-
67
+ input:disabled {
68
+ background-color: #dbdbdb;
69
+ opacity: 0.5;
70
+ }
74
71
  .form-input-line {
75
- display:flex;
76
- margin-bottom: 10px;
77
- flex-direction: column;
72
+ display: flex;
73
+ margin-bottom: 10px;
74
+ flex-direction: column;
78
75
  }
79
76
  .form-input {
80
- flex:1;
81
- height: 27px;
82
- border-radius: 5px;
83
- border-color: transparent;
84
- width:300px;
85
- padding:5px 8px;
77
+ flex: 1;
78
+ height: 27px;
79
+ border-radius: 5px;
80
+ border-color: transparent;
81
+ padding: 5px 8px;
86
82
  }
87
83
  .form-input-validate {
88
- border:1px solid #e54545;
84
+ border: 1px solid #e54545;
89
85
  }
90
86
  .validator-line {
91
- font-size: 12px;
92
- color:#e54545;
93
- margin-top: 3px;
87
+ font-size: 12px;
88
+ color: #e54545;
89
+ margin-top: 3px;
94
90
  }
95
- </style>
91
+ </style>