| Hoang Nguyen | bc13fe2 | 2020-03-25 16:10:17 +0700 | [diff] [blame] | 1 | // Licensed to the Apache Software Foundation (ASF) under one |
| 2 | // or more contributor license agreements. See the NOTICE file |
| 3 | // distributed with this work for additional information |
| 4 | // regarding copyright ownership. The ASF licenses this file |
| 5 | // to you under the Apache License, Version 2.0 (the |
| 6 | // "License"); you may not use this file except in compliance |
| 7 | // with the License. You may obtain a copy of the License at |
| 8 | // |
| 9 | // http://www.apache.org/licenses/LICENSE-2.0 |
| 10 | // |
| 11 | // Unless required by applicable law or agreed to in writing, |
| 12 | // software distributed under the License is distributed on an |
| 13 | // "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY |
| 14 | // KIND, either express or implied. See the License for the |
| 15 | // specific language governing permissions and limitations |
| 16 | // under the License. |
| 17 | |
| 18 | <template> |
| 19 | <div> |
| 20 | <a-card |
| 21 | class="ant-form-text" |
| 22 | v-if="description && description.length > 0" |
| 23 | v-html="$t(description)"> |
| 24 | </a-card> |
| 25 | <a-form |
| Hoang Nguyen | 8efc3ea | 2021-07-26 18:29:19 +0700 | [diff] [blame] | 26 | v-ctrl-enter="handleSubmit" |
| Hoang Nguyen | bc13fe2 | 2020-03-25 16:10:17 +0700 | [diff] [blame] | 27 | class="form-content" |
| Hoang Nguyen | d258da5 | 2022-03-09 19:47:09 +0700 | [diff] [blame] | 28 | :ref="formRef" |
| 29 | :model="form" |
| 30 | :rules="rules" |
| 31 | @finish="handleSubmit" |
| 32 | > |
| 33 | <div v-for="(field, index) in fields" :key="index"> |
| 34 | <a-form-item |
| 35 | :name="field.key" |
| 36 | :ref="field.key" |
| 37 | :label="$t(field.title)" |
| Hoang Nguyen | d6488c5 | 2022-06-20 14:27:22 +0700 | [diff] [blame] | 38 | v-if="isDisplayInput(field)" |
| Hoang Nguyen | d258da5 | 2022-03-09 19:47:09 +0700 | [diff] [blame] | 39 | v-bind="formItemLayout" |
| 40 | :has-feedback="field.switch ? false : true"> |
| 41 | <a-select |
| 42 | v-if="field.select" |
| 43 | v-model:value="form[field.key]" |
| 44 | :allowClear="true" |
| 45 | v-focus="index === 0" |
| 46 | showSearch |
| 47 | optionFilterProp="label" |
| 48 | :filterOption="(input, option) => { |
| David Jumani | 3c25a35 | 2023-04-11 14:05:21 +0530 | [diff] [blame] | 49 | return option.label.toLowerCase().indexOf(input.toLowerCase()) >= 0 |
| Hoang Nguyen | d258da5 | 2022-03-09 19:47:09 +0700 | [diff] [blame] | 50 | }" > |
| 51 | <a-select-option |
| 52 | v-for="option in field.options" |
| 53 | :key="option.id" |
| 54 | :value="option.id" |
| David Jumani | 3c25a35 | 2023-04-11 14:05:21 +0530 | [diff] [blame] | 55 | :label="option.name || option.description" |
| Hoang Nguyen | d258da5 | 2022-03-09 19:47:09 +0700 | [diff] [blame] | 56 | > |
| 57 | {{ option.name || option.description }} |
| 58 | </a-select-option> |
| 59 | </a-select> |
| 60 | <a-switch |
| 61 | v-else-if="field.switch" |
| 62 | v-model:checked="form[field.key]" |
| 63 | v-focus="index === 0" |
| 64 | /> |
| Hoang Nguyen | d6488c5 | 2022-06-20 14:27:22 +0700 | [diff] [blame] | 65 | <a-checkbox |
| 66 | v-else-if="field.checkbox" |
| 67 | v-model:checked="form[field.key]" |
| 68 | v-focus="index === 0"> |
| 69 | </a-checkbox> |
| Hoang Nguyen | d258da5 | 2022-03-09 19:47:09 +0700 | [diff] [blame] | 70 | <a-input |
| 71 | v-else-if="field.password" |
| 72 | type="password" |
| 73 | v-model:value="form[field.key]" |
| 74 | v-focus="index === 0" |
| 75 | /> |
| Hoang Nguyen | 9e5cda5 | 2022-07-06 13:46:09 +0700 | [diff] [blame] | 76 | <a-radio-group |
| 77 | v-else-if="field.radioGroup" |
| 78 | v-model:value="form[field.key]" |
| 79 | buttonStyle="solid"> |
| 80 | <span |
| 81 | style="margin-right: 5px;" |
| 82 | v-for="(radioItem, idx) in field.radioOption" |
| 83 | :key="idx"> |
| 84 | <a-radio-button |
| 85 | :value="radioItem.value" |
| 86 | v-if="isDisplayItem(radioItem.condition)"> |
| 87 | {{ $t(radioItem.label) }} |
| 88 | </a-radio-button> |
| 89 | </span> |
| 90 | <a-alert style="margin-top: 5px" type="warning" v-if="field.alert && isDisplayItem(field.alert.display)"> |
| 91 | <template #message> |
| 92 | <span v-html="$t(field.alert.message)" /> |
| 93 | </template> |
| 94 | </a-alert> |
| 95 | </a-radio-group> |
| Hoang Nguyen | d258da5 | 2022-03-09 19:47:09 +0700 | [diff] [blame] | 96 | <a-input |
| 97 | v-else |
| 98 | v-model:value="form[field.key]" |
| Abhishek Kumar | 12c077d | 2025-04-25 14:32:27 +0530 | [diff] [blame] | 99 | :defaultValue="field.defaultValue" |
| Hoang Nguyen | d258da5 | 2022-03-09 19:47:09 +0700 | [diff] [blame] | 100 | v-focus="index === 0" |
| 101 | /> |
| 102 | </a-form-item> |
| 103 | </div> |
| Hoang Nguyen | bc13fe2 | 2020-03-25 16:10:17 +0700 | [diff] [blame] | 104 | </a-form> |
| 105 | <div class="form-action"> |
| 106 | <a-button |
| 107 | v-if="!isFixError" |
| 108 | class="button-prev" |
| 109 | @click="handleBack"> |
| 110 | {{ $t('label.previous') }} |
| 111 | </a-button> |
| Hoang Nguyen | 8efc3ea | 2021-07-26 18:29:19 +0700 | [diff] [blame] | 112 | <a-button class="button-next" ref="submit" type="primary" @click="handleSubmit"> |
| Hoang Nguyen | bc13fe2 | 2020-03-25 16:10:17 +0700 | [diff] [blame] | 113 | {{ $t('label.next') }} |
| 114 | </a-button> |
| 115 | </div> |
| 116 | </div> |
| 117 | </template> |
| 118 | |
| 119 | <script> |
| Hoang Nguyen | d258da5 | 2022-03-09 19:47:09 +0700 | [diff] [blame] | 120 | import { ref, reactive, toRaw } from 'vue' |
| 121 | |
| Hoang Nguyen | bc13fe2 | 2020-03-25 16:10:17 +0700 | [diff] [blame] | 122 | export default { |
| 123 | props: { |
| 124 | prefillContent: { |
| 125 | type: Object, |
| 126 | default: function () { |
| 127 | return {} |
| 128 | } |
| 129 | }, |
| 130 | fields: { |
| 131 | type: Array, |
| 132 | default: function () { |
| 133 | return [] |
| 134 | } |
| 135 | }, |
| 136 | description: { |
| 137 | type: String, |
| Hoang Nguyen | 4f97fea | 2020-07-27 14:33:31 +0700 | [diff] [blame] | 138 | default: 'label.creating.iprange' |
| Hoang Nguyen | bc13fe2 | 2020-03-25 16:10:17 +0700 | [diff] [blame] | 139 | }, |
| 140 | isFixError: { |
| 141 | type: Boolean, |
| 142 | default: false |
| 143 | } |
| 144 | }, |
| 145 | created () { |
| Hoang Nguyen | d258da5 | 2022-03-09 19:47:09 +0700 | [diff] [blame] | 146 | this.initForm() |
| 147 | }, |
| Hoang Nguyen | 9e5cda5 | 2022-07-06 13:46:09 +0700 | [diff] [blame] | 148 | computed: { |
| 149 | hypervisor () { |
| 150 | return this.prefillContent?.hypervisor || null |
| 151 | } |
| 152 | }, |
| Hoang Nguyen | d258da5 | 2022-03-09 19:47:09 +0700 | [diff] [blame] | 153 | mounted () { |
| 154 | this.fillValue() |
| Hoang Nguyen | bc13fe2 | 2020-03-25 16:10:17 +0700 | [diff] [blame] | 155 | }, |
| 156 | data: () => ({ |
| 157 | formItemLayout: { |
| 158 | labelCol: { span: 8 }, |
| 159 | wrapperCol: { span: 12 } |
| 160 | }, |
| 161 | ipV4Regex: /^(25[0-5]|2[0-4]\d|[01]?\d\d?)\.(25[0-5]|2[0-4]\d|[01]?\d\d?)\.(25[0-5]|2[0-4]\d|[01]?\d\d?)\.(25[0-5]|2[0-4]\d|[01]?\d\d?)$/i, |
| Hoang Nguyen | d258da5 | 2022-03-09 19:47:09 +0700 | [diff] [blame] | 162 | ipV6Regex: /^((([0-9A-Fa-f]{1,4}:){7}[0-9A-Fa-f]{1,4})|(([0-9A-Fa-f]{1,4}:){6}:[0-9A-Fa-f]{1,4})|(([0-9A-Fa-f]{1,4}:){5}:([0-9A-Fa-f]{1,4}:)?[0-9A-Fa-f]{1,4})|(([0-9A-Fa-f]{1,4}:){4}:([0-9A-Fa-f]{1,4}:){0,2}[0-9A-Fa-f]{1,4})|(([0-9A-Fa-f]{1,4}:){3}:([0-9A-Fa-f]{1,4}:){0,3}[0-9A-Fa-f]{1,4})|(([0-9A-Fa-f]{1,4}:){2}:([0-9A-Fa-f]{1,4}:){0,4}[0-9A-Fa-f]{1,4})|(([0-9A-Fa-f]{1,4}:){6}((\b((25[0-5])|(1\d{2})|(2[0-4]\d)|(\d{1,2}))\b)\.){3}(\b((25[0-5])|(1\d{2})|(2[0-4]\d)|(\d{1,2}))\b))|(([0-9A-Fa-f]{1,4}:){0,5}:((\b((25[0-5])|(1\d{2})|(2[0-4]\d)|(\d{1,2}))\b)\.){3}(\b((25[0-5])|(1\d{2})|(2[0-4]\d)|(\d{1,2}))\b))|(::([0-9A-Fa-f]{1,4}:){0,5}((\b((25[0-5])|(1\d{2})|(2[0-4]\d)|(\d{1,2}))\b)\.){3}(\b((25[0-5])|(1\d{2})|(2[0-4]\d)|(\d{1,2}))\b))|([0-9A-Fa-f]{1,4}::([0-9A-Fa-f]{1,4}:){0,5}[0-9A-Fa-f]{1,4})|(::([0-9A-Fa-f]{1,4}:){0,6}[0-9A-Fa-f]{1,4})|(([0-9A-Fa-f]{1,4}:){1,7}:))$/i, |
| 163 | formModel: {} |
| Hoang Nguyen | bc13fe2 | 2020-03-25 16:10:17 +0700 | [diff] [blame] | 164 | }), |
| Hoang Nguyen | bc13fe2 | 2020-03-25 16:10:17 +0700 | [diff] [blame] | 165 | watch: { |
| Hoang Nguyen | d258da5 | 2022-03-09 19:47:09 +0700 | [diff] [blame] | 166 | formModel: { |
| 167 | deep: true, |
| 168 | handler (changedFields) { |
| 169 | const fieldsChanged = toRaw(changedFields) |
| 170 | this.$emit('fieldsChanged', fieldsChanged) |
| 171 | } |
| Hoang Nguyen | d6488c5 | 2022-06-20 14:27:22 +0700 | [diff] [blame] | 172 | }, |
| 173 | 'prefillContent.provider' (val) { |
| 174 | if (['SolidFire', 'PowerFlex'].includes(val)) { |
| 175 | this.form.primaryStorageProtocol = 'custom' |
| 176 | } |
| Hoang Nguyen | bc13fe2 | 2020-03-25 16:10:17 +0700 | [diff] [blame] | 177 | } |
| 178 | }, |
| 179 | methods: { |
| Hoang Nguyen | d258da5 | 2022-03-09 19:47:09 +0700 | [diff] [blame] | 180 | initForm () { |
| 181 | this.formRef = ref() |
| 182 | this.form = reactive({}) |
| 183 | this.rules = reactive({}) |
| 184 | }, |
| 185 | fillValue () { |
| Hoang Nguyen | bc13fe2 | 2020-03-25 16:10:17 +0700 | [diff] [blame] | 186 | this.fields.forEach(field => { |
| Hoang Nguyen | d258da5 | 2022-03-09 19:47:09 +0700 | [diff] [blame] | 187 | this.setRules(field) |
| Hoang Nguyen | d6488c5 | 2022-06-20 14:27:22 +0700 | [diff] [blame] | 188 | const fieldExists = this.isDisplayInput(field) |
| Hoang Nguyen | bc13fe2 | 2020-03-25 16:10:17 +0700 | [diff] [blame] | 189 | if (!fieldExists) { |
| 190 | return |
| 191 | } |
| Hoang Nguyen | d6488c5 | 2022-06-20 14:27:22 +0700 | [diff] [blame] | 192 | if (field.key === 'agentUserName' && !this.getPrefilled(field)) { |
| Hoang Nguyen | d258da5 | 2022-03-09 19:47:09 +0700 | [diff] [blame] | 193 | this.form[field.key] = 'Oracle' |
| Hoang Nguyen | bc13fe2 | 2020-03-25 16:10:17 +0700 | [diff] [blame] | 194 | } else { |
| Hoang Nguyen | d6488c5 | 2022-06-20 14:27:22 +0700 | [diff] [blame] | 195 | if (field.switch || field.checkbox) { |
| Hoang Nguyen | d258da5 | 2022-03-09 19:47:09 +0700 | [diff] [blame] | 196 | this.form[field.key] = this.isChecked(field) |
| 197 | } else { |
| Hoang Nguyen | d6488c5 | 2022-06-20 14:27:22 +0700 | [diff] [blame] | 198 | this.form[field.key] = this.getPrefilled(field) |
| Hoang Nguyen | d258da5 | 2022-03-09 19:47:09 +0700 | [diff] [blame] | 199 | } |
| Hoang Nguyen | bc13fe2 | 2020-03-25 16:10:17 +0700 | [diff] [blame] | 200 | } |
| 201 | }) |
| Hoang Nguyen | d258da5 | 2022-03-09 19:47:09 +0700 | [diff] [blame] | 202 | |
| 203 | this.formModel = toRaw(this.form) |
| 204 | }, |
| 205 | setRules (field) { |
| 206 | this.rules[field.key] = [] |
| 207 | if (field.required) { |
| 208 | this.rules[field.key].push({ required: field.required, message: this.$t(field.placeHolder) }) |
| 209 | } |
| 210 | if (field.ipV4 || field.ipV6) { |
| 211 | this.rules[field.key].push({ |
| 212 | ipV4: field.ipV4, |
| 213 | ipV6: field.ipV6, |
| 214 | validator: this.checkIpFormat, |
| 215 | message: this.$t(field.message) |
| 216 | }) |
| 217 | } |
| Hoang Nguyen | bc13fe2 | 2020-03-25 16:10:17 +0700 | [diff] [blame] | 218 | }, |
| Hoang Nguyen | d6488c5 | 2022-06-20 14:27:22 +0700 | [diff] [blame] | 219 | getPrefilled (field) { |
| Hoang Nguyen | 9e5cda5 | 2022-07-06 13:46:09 +0700 | [diff] [blame] | 220 | if (field.key === 'authmethod' && this.hypervisor !== 'KVM') { |
| 221 | return field.value || field.defaultValue || 'password' |
| 222 | } |
| 223 | return this.prefillContent?.[field.key] || field.value || field.defaultValue || null |
| Hoang Nguyen | bc13fe2 | 2020-03-25 16:10:17 +0700 | [diff] [blame] | 224 | }, |
| Hoang Nguyen | d258da5 | 2022-03-09 19:47:09 +0700 | [diff] [blame] | 225 | handleSubmit () { |
| 226 | this.formRef.value.validate().then(() => { |
| Hoang Nguyen | bc13fe2 | 2020-03-25 16:10:17 +0700 | [diff] [blame] | 227 | if (this.isFixError) { |
| 228 | this.$emit('submitLaunchZone') |
| 229 | return |
| 230 | } |
| 231 | this.$emit('nextPressed') |
| Hoang Nguyen | d258da5 | 2022-03-09 19:47:09 +0700 | [diff] [blame] | 232 | }).catch(error => { |
| 233 | this.formRef.value.scrollToField(error.errorFields[0].name) |
| Hoang Nguyen | bc13fe2 | 2020-03-25 16:10:17 +0700 | [diff] [blame] | 234 | }) |
| 235 | }, |
| Hoang Nguyen | d258da5 | 2022-03-09 19:47:09 +0700 | [diff] [blame] | 236 | handleBack () { |
| Hoang Nguyen | bc13fe2 | 2020-03-25 16:10:17 +0700 | [diff] [blame] | 237 | this.$emit('backPressed') |
| 238 | }, |
| Hoang Nguyen | d258da5 | 2022-03-09 19:47:09 +0700 | [diff] [blame] | 239 | async checkIpFormat (rule, value) { |
| Hoang Nguyen | bc13fe2 | 2020-03-25 16:10:17 +0700 | [diff] [blame] | 240 | if (!value || value === '') { |
| Hoang Nguyen | d258da5 | 2022-03-09 19:47:09 +0700 | [diff] [blame] | 241 | return Promise.resolve() |
| Hoang Nguyen | bc13fe2 | 2020-03-25 16:10:17 +0700 | [diff] [blame] | 242 | } else if (rule.ipV4 && !this.ipV4Regex.test(value)) { |
| Hoang Nguyen | d258da5 | 2022-03-09 19:47:09 +0700 | [diff] [blame] | 243 | return Promise.reject(rule.message) |
| Hoang Nguyen | bc13fe2 | 2020-03-25 16:10:17 +0700 | [diff] [blame] | 244 | } else if (rule.ipV6 && !this.ipV6Regex.test(value)) { |
| Hoang Nguyen | d258da5 | 2022-03-09 19:47:09 +0700 | [diff] [blame] | 245 | return Promise.reject(rule.message) |
| Hoang Nguyen | bc13fe2 | 2020-03-25 16:10:17 +0700 | [diff] [blame] | 246 | } else { |
| Hoang Nguyen | d258da5 | 2022-03-09 19:47:09 +0700 | [diff] [blame] | 247 | return Promise.resolve() |
| Hoang Nguyen | bc13fe2 | 2020-03-25 16:10:17 +0700 | [diff] [blame] | 248 | } |
| 249 | }, |
| Hoang Nguyen | d6488c5 | 2022-06-20 14:27:22 +0700 | [diff] [blame] | 250 | isDisplayInput (field) { |
| 251 | if (!field.display && !field.hidden) { |
| 252 | return true |
| 253 | } |
| 254 | const conditions = field.display || field.hidden |
| Hoang Nguyen | bc13fe2 | 2020-03-25 16:10:17 +0700 | [diff] [blame] | 255 | if (!conditions || Object.keys(conditions).length === 0) { |
| 256 | return true |
| 257 | } |
| Hoang Nguyen | 0f926b5 | 2022-01-10 20:31:53 +0700 | [diff] [blame] | 258 | let isShow = true |
| Hoang Nguyen | bc13fe2 | 2020-03-25 16:10:17 +0700 | [diff] [blame] | 259 | Object.keys(conditions).forEach(key => { |
| Hoang Nguyen | 0f926b5 | 2022-01-10 20:31:53 +0700 | [diff] [blame] | 260 | if (isShow) { |
| 261 | const condition = conditions[key] |
| Hoang Nguyen | d258da5 | 2022-03-09 19:47:09 +0700 | [diff] [blame] | 262 | const fieldVal = this.form[key] |
| 263 | ? this.form[key] |
| 264 | : (this.prefillContent?.[key] || null) |
| Hoang Nguyen | d6488c5 | 2022-06-20 14:27:22 +0700 | [diff] [blame] | 265 | |
| 266 | if (field.hidden) { |
| 267 | if (Array.isArray(condition) && condition.includes(fieldVal)) { |
| 268 | isShow = false |
| 269 | } else if (!Array.isArray(condition) && fieldVal === condition) { |
| 270 | isShow = false |
| 271 | } |
| 272 | } else if (field.display) { |
| 273 | if (Array.isArray(condition) && !condition.includes(fieldVal)) { |
| 274 | isShow = false |
| 275 | } else if (!Array.isArray(condition) && fieldVal !== condition) { |
| 276 | isShow = false |
| 277 | } |
| Hoang Nguyen | 0f926b5 | 2022-01-10 20:31:53 +0700 | [diff] [blame] | 278 | } |
| Hoang Nguyen | bc13fe2 | 2020-03-25 16:10:17 +0700 | [diff] [blame] | 279 | } |
| Hoang Nguyen | bc13fe2 | 2020-03-25 16:10:17 +0700 | [diff] [blame] | 280 | }) |
| 281 | |
| 282 | return isShow |
| 283 | }, |
| 284 | isChecked (field) { |
| Hoang Nguyen | d258da5 | 2022-03-09 19:47:09 +0700 | [diff] [blame] | 285 | if (this.prefillContent[field.key]) { |
| 286 | return this.prefillContent[field.key] |
| Hoang Nguyen | bc13fe2 | 2020-03-25 16:10:17 +0700 | [diff] [blame] | 287 | } |
| 288 | if (!field.checked) { |
| 289 | return false |
| 290 | } |
| 291 | return true |
| Hoang Nguyen | 9e5cda5 | 2022-07-06 13:46:09 +0700 | [diff] [blame] | 292 | }, |
| 293 | isDisplayItem (conditions) { |
| 294 | if (!conditions || Object.keys(conditions).length === 0) { |
| 295 | return true |
| 296 | } |
| 297 | let isShow = true |
| 298 | Object.keys(conditions).forEach(key => { |
| 299 | if (!isShow) return false |
| 300 | |
| 301 | const condition = conditions[key] |
| 302 | const fieldVal = this.form[key] |
| 303 | ? this.form[key] |
| 304 | : (this.prefillContent?.[key] || null) |
| 305 | if (Array.isArray(condition) && !condition.includes(fieldVal)) { |
| 306 | isShow = false |
| 307 | } else if (!Array.isArray(condition) && fieldVal !== condition) { |
| 308 | isShow = false |
| 309 | } |
| 310 | }) |
| 311 | |
| 312 | return isShow |
| Hoang Nguyen | bc13fe2 | 2020-03-25 16:10:17 +0700 | [diff] [blame] | 313 | } |
| 314 | } |
| 315 | } |
| 316 | </script> |
| 317 | |
| 318 | <style scoped lang="less"> |
| 319 | .form-content { |
| 320 | border: 1px dashed #e9e9e9; |
| 321 | border-radius: 6px; |
| 322 | background-color: #fafafa; |
| 323 | min-height: 200px; |
| 324 | text-align: center; |
| 325 | vertical-align: center; |
| Hoang Nguyen | bc13fe2 | 2020-03-25 16:10:17 +0700 | [diff] [blame] | 326 | margin-top: 8px; |
| 327 | max-height: 300px; |
| 328 | overflow-y: auto; |
| Hoang Nguyen | 5b986be | 2021-03-30 15:39:56 +0700 | [diff] [blame] | 329 | padding: 16px 20px 0; |
| Hoang Nguyen | bc13fe2 | 2020-03-25 16:10:17 +0700 | [diff] [blame] | 330 | |
| Hoang Nguyen | d258da5 | 2022-03-09 19:47:09 +0700 | [diff] [blame] | 331 | :deep(.has-error) { |
| Hoang Nguyen | bc13fe2 | 2020-03-25 16:10:17 +0700 | [diff] [blame] | 332 | .ant-form-explain { |
| 333 | text-align: left; |
| 334 | } |
| 335 | } |
| 336 | |
| Hoang Nguyen | d258da5 | 2022-03-09 19:47:09 +0700 | [diff] [blame] | 337 | :deep(.ant-form-item-control) { |
| Hoang Nguyen | bc13fe2 | 2020-03-25 16:10:17 +0700 | [diff] [blame] | 338 | text-align: left; |
| 339 | } |
| 340 | } |
| 341 | |
| 342 | .ant-form-text { |
| 343 | text-align: justify; |
| 344 | margin: 10px 0; |
| 345 | padding: 24px; |
| 346 | width: 100%; |
| 347 | } |
| 348 | |
| 349 | .form-action { |
| 350 | margin-top: 16px; |
| 351 | } |
| 352 | </style> |