|
80 | 80 | </button>
|
81 | 81 | </t>
|
82 | 82 |
|
| 83 | +<t t-name="html_builder.website.s_website_form_field_option_redraw"> |
| 84 | + <FormFieldOption redrawSequence="domState.redrawSequence" t-props="props"/> |
| 85 | +</t> |
| 86 | + |
| 87 | +<t t-name="html_builder.website.s_website_form_field_option"> |
| 88 | + <BuilderRow label.translate="Type"> |
| 89 | + <BuilderSelect t-if="!domState.el.classList.contains('s_website_form_model_required')" |
| 90 | + id="'type_opt'" preview="false" |
| 91 | + > |
| 92 | + <div class="we_bg_darker">Custom Field</div> |
| 93 | + <BuilderContext action="'customField'"> |
| 94 | + <BuilderSelectItem actionValue="'char'">Text</BuilderSelectItem> |
| 95 | + <BuilderSelectItem actionValue="'text'">Long Text</BuilderSelectItem> |
| 96 | + <BuilderSelectItem actionValue="'email'">Email</BuilderSelectItem> |
| 97 | + <BuilderSelectItem actionValue="'tel'">Telephone</BuilderSelectItem> |
| 98 | + <BuilderSelectItem actionValue="'url'">Url</BuilderSelectItem> |
| 99 | + <BuilderSelectItem actionValue="'integer'">Number</BuilderSelectItem> |
| 100 | + <BuilderSelectItem actionValue="'float'">Decimal Number</BuilderSelectItem> |
| 101 | + <BuilderSelectItem actionValue="'boolean'">Checkbox</BuilderSelectItem> |
| 102 | + <BuilderSelectItem actionValue="'one2many'">Multiple Checkboxes</BuilderSelectItem> |
| 103 | + <BuilderSelectItem actionValue="'selection'">Radio Buttons</BuilderSelectItem> |
| 104 | + <BuilderSelectItem actionValue="'many2one'">Selection</BuilderSelectItem> |
| 105 | + <BuilderSelectItem actionValue="'date'">Date</BuilderSelectItem> |
| 106 | + <BuilderSelectItem actionValue="'datetime'">Date & Time</BuilderSelectItem> |
| 107 | + <BuilderSelectItem actionValue="'binary'">File Upload</BuilderSelectItem> |
| 108 | + </BuilderContext> |
| 109 | + <t t-if="state.availableFields.length"> |
| 110 | + <div class="we_bg_darker">Existing fields</div> |
| 111 | + <t t-foreach="state.availableFields" t-as="field" t-key="field.name"> |
| 112 | + <BuilderSelectItem action="'existingField'" actionValue="field.name" t-out="field.string"/> |
| 113 | + </t> |
| 114 | + </t> |
| 115 | + </BuilderSelect> |
| 116 | + </BuilderRow> |
| 117 | + <BuilderRow label.translate="Input Type"> |
| 118 | + <BuilderSelect t-if="!domState.el.classList.contains('s_website_form_custom') and ['char', 'email', 'tel', 'url'].includes(domState.el.dataset.type) and !domState.el.classList.contains('s_website_form_model_required')" |
| 119 | + id="'char_input_type_opt'" preview="false" action="'selectType'" |
| 120 | + > |
| 121 | + <BuilderSelectItem actionValue="'char'">Text</BuilderSelectItem> |
| 122 | + <BuilderSelectItem actionValue="'email'">Email</BuilderSelectItem> |
| 123 | + <BuilderSelectItem actionValue="'tel'">Telephone</BuilderSelectItem> |
| 124 | + <BuilderSelectItem actionValue="'url'">Url</BuilderSelectItem> |
| 125 | + </BuilderSelect> |
| 126 | + </BuilderRow> |
| 127 | + <BuilderRow label.translate="Selection type"> |
| 128 | + <BuilderSelect t-if="isExisingFieldSelectType" |
| 129 | + id="'existing_field_select_type_opt'" preview="false" action="'existingFieldSelectType'" |
| 130 | + > |
| 131 | + <BuilderSelectItem actionValue="'many2one'">Dropdown List</BuilderSelectItem> |
| 132 | + <BuilderSelectItem actionValue="'selection'">Radio</BuilderSelectItem> |
| 133 | + </BuilderSelect> |
| 134 | + </BuilderRow> |
| 135 | + <BuilderRow label.translate="Display" level="1"> |
| 136 | + <BuilderSelect t-if="isMultipleInputs" |
| 137 | + id="'multi_check_display_opt'" preview="false" |
| 138 | + > |
| 139 | + <BuilderSelectItem action="'multiCheckboxDisplay'" actionValue="'horizontal'">Horizontal</BuilderSelectItem> |
| 140 | + <BuilderSelectItem action="'multiCheckboxDisplay'" actionValue="'vertical'">Vertical</BuilderSelectItem> |
| 141 | + </BuilderSelect> |
| 142 | + </BuilderRow> |
| 143 | + <BuilderRow label.translate="Height" level="1" applyTo="'textarea'"> |
| 144 | + <BuilderNumberInput unit.translate="rows" saveUnit="''" step="1" attributeAction="'rows'" default="3"/> |
| 145 | + </BuilderRow> |
| 146 | + <BuilderRow label.translate="Label"> |
| 147 | + <BuilderTextInput action="'setLabelText'"/> |
| 148 | + </BuilderRow> |
| 149 | + <BuilderRow label.translate="Position" level="1"> |
| 150 | + <BuilderButtonGroup action="'selectLabelPosition'"> |
| 151 | + <BuilderButton title.translate="Hide" actionValue="'none'"> |
| 152 | + <i class="fa fa-eye-slash"/> |
| 153 | + </BuilderButton> |
| 154 | + <BuilderButton title.translate="Top" actionValue="'top'"> |
| 155 | + <img src="/website/static/src/img/snippets_options/pos_top.svg"/> |
| 156 | + </BuilderButton> |
| 157 | + <BuilderButton title.translate="Left" actionValue="'left'"> |
| 158 | + <img src="/website/static/src/img/snippets_options/pos_left.svg"/> |
| 159 | + </BuilderButton> |
| 160 | + <BuilderButton title.translate="Right" actionValue="'right'"> |
| 161 | + <img src="/website/static/src/img/snippets_options/pos_right.svg"/> |
| 162 | + </BuilderButton> |
| 163 | + </BuilderButtonGroup> |
| 164 | + </BuilderRow> |
| 165 | + <BuilderRow label.translate="Description"> |
| 166 | + <BuilderCheckbox action="'toggleDescription'" preview="false"/> |
| 167 | + </BuilderRow> |
| 168 | + <BuilderRow label.translate="Placeholder"> |
| 169 | + <BuilderTextInput attributeAction="'placeholder'" |
| 170 | + applyTo="`input[type='text'], input[type='email'], input[type='number'], input[type='tel'], input[type='url'], textarea`" |
| 171 | + /> |
| 172 | + </BuilderRow> |
| 173 | + <BuilderRow label.translate="Default Value"> |
| 174 | + <BuilderTextInput action="'selectTextareaValue'" applyTo="'textarea'"/> |
| 175 | + <BuilderCheckbox attributeAction="'checked'" attributeActionValue="'checked'" |
| 176 | + applyTo="`.col-sm > * > input[type='checkbox']`" preview="false" |
| 177 | + /> |
| 178 | + <!-- TODO used to set both attribute & property --> |
| 179 | + <BuilderTextInput attributeAction="'value'" |
| 180 | + applyTo="`input[type='text']:not(.datetimepicker-input), input[type='email'], input[type='tel'], input[type='url']`" |
| 181 | + /> |
| 182 | + <!-- TODO used to set both attribute & property --> |
| 183 | + <BuilderNumberInput attributeAction="'value'" step="1" |
| 184 | + applyTo="`input[type='number']`" |
| 185 | + /> |
| 186 | + <!-- TODO used to set both attribute & "valueProperty" --> |
| 187 | + <BuilderDateTimePicker type="'datetime'" attributeAction="'value'" |
| 188 | + applyTo="'.s_website_form_datetime input'" |
| 189 | + /> |
| 190 | + <!-- TODO used to set both attribute & "valueProperty" --> |
| 191 | + <BuilderDateTimePicker type="'date'" attributeAction="'value'" |
| 192 | + applyTo="'.s_website_form_date input'" |
| 193 | + /> |
| 194 | + </BuilderRow> |
| 195 | + <BuilderRow label.translate="Required"> |
| 196 | + <BuilderCheckbox t-if="!domState.el.classList.contains('s_website_form_model_required')" |
| 197 | + id="'required_opt'" preview="false" |
| 198 | + action="'toggleRequired'" actionParam="'s_website_form_required'" |
| 199 | + /> |
| 200 | + </BuilderRow> |
| 201 | + <BuilderRow label.translate="Max # of Files"> |
| 202 | + <BuilderNumberInput id="'max_files_number_opt'" t-if="isMaxFilesVisible" |
| 203 | + title.translate="The maximum number of files that can be uploaded." |
| 204 | + dataAttributeAction="'maxFilesNumber'" |
| 205 | + default="1" |
| 206 | + applyTo="`input[type='file']`" |
| 207 | + step="1" |
| 208 | + /> |
| 209 | + </BuilderRow> |
| 210 | + <BuilderRow label.translate="Max File Size"> |
| 211 | + <BuilderNumberInput |
| 212 | + title.translate="The maximum size (in MB) an uploaded file can have." |
| 213 | + dataAttributeAction="'maxFileSize'" |
| 214 | + applyTo="`input[type='file']`" |
| 215 | + default="1" |
| 216 | + unit="'MB'" |
| 217 | + /> |
| 218 | + </BuilderRow> |
| 219 | + <BuilderRow label.translate="TODO value list"> |
| 220 | + <div>TODO</div> |
| 221 | + </BuilderRow> |
| 222 | + <!-- TODO Implement a BuilderList |
| 223 | + <WeList t-if="renderContext.valueList" |
| 224 | + title="renderContext.valueList.title" |
| 225 | + addItemTitle="renderContext.valueList.addItemTitle" |
| 226 | + renderListItems="''" |
| 227 | + hasDefault="renderContext.valueList.hasDefault" |
| 228 | + defaults="renderContext.valueList.defaults" |
| 229 | + availableRecords="renderContext.valueList.availableRecords" |
| 230 | + newRecordId="renderContext.valueList.newRecordId" |
| 231 | + /> |
| 232 | + --> |
| 233 | + <BuilderRow label.translate="Visibility"> |
| 234 | + <BuilderSelect preview="false" action="'setVisibility'"> |
| 235 | + <BuilderSelectItem actionValue="'visible'" classAction="''">Always Visible</BuilderSelectItem> |
| 236 | + <BuilderSelectItem actionValue="'hidden'" classAction="'s_website_form_field_hidden'">Hidden</BuilderSelectItem> |
| 237 | + <BuilderSelectItem id="'hidden_if_opt'" actionValue="'conditional'" classAction="'s_website_form_field_hidden_if d-none'">Visible only if</BuilderSelectItem> |
| 238 | + </BuilderSelect> |
| 239 | + </BuilderRow> |
| 240 | + <t t-if="isActiveItem('hidden_if_opt')"> |
| 241 | + <div class="d-flex position-relative p-1 px-2 ps-3 hb-row"> |
| 242 | + <BuilderSelect id="'hidden_condition_opt'" preview="false"> |
| 243 | + <!-- Load every existing form input --> |
| 244 | + <BuilderSelectItem t-foreach="state.conditionInputs" t-as="input" t-key="input.name" |
| 245 | + action="'setVisibilityDependency'" actionValue="input.name" |
| 246 | + t-out="input.textContent" |
| 247 | + /> |
| 248 | + </BuilderSelect> |
| 249 | + <BuilderSelect t-if="state.dependencyEl and (state.dependencyEl.type === 'checkbox' || state.dependencyEl.type === 'radio' || state.dependencyEl.nodeName === 'SELECT')" |
| 250 | + id="'hidden_condition_no_text_opt'" preview="false" dataAttributeAction="'visibilityComparator'" |
| 251 | + > |
| 252 | + <BuilderSelectItem dataAttributeActionValue="'selected'">Is equal to</BuilderSelectItem> |
| 253 | + <BuilderSelectItem dataAttributeActionValue="'!selected'">Is not equal to</BuilderSelectItem> |
| 254 | + <BuilderSelectItem dataAttributeActionValue="'contains'">Contains</BuilderSelectItem> |
| 255 | + <BuilderSelectItem dataAttributeActionValue="'!contains'">Doesn't contain</BuilderSelectItem> |
| 256 | + </BuilderSelect> |
| 257 | + <BuilderSelect t-if="isTextConditionOperatorVisible" |
| 258 | + id="'hidden_condition_text_opt'" preview="false" dataAttributeAction="'visibilityComparator'" |
| 259 | + > |
| 260 | + <!-- string comparator possibilities --> |
| 261 | + <BuilderSelectItem dataAttributeActionValue="'contains'">Contains</BuilderSelectItem> |
| 262 | + <BuilderSelectItem dataAttributeActionValue="'!contains'">Doesn't contain</BuilderSelectItem> |
| 263 | + <BuilderSelectItem dataAttributeActionValue="'equal'">Is equal to</BuilderSelectItem> |
| 264 | + <BuilderSelectItem dataAttributeActionValue="'!equal'">Is not equal to</BuilderSelectItem> |
| 265 | + <BuilderSelectItem dataAttributeActionValue="'set'">Is set</BuilderSelectItem> |
| 266 | + <BuilderSelectItem dataAttributeActionValue="'!set'">Is not set</BuilderSelectItem> |
| 267 | + </BuilderSelect> |
| 268 | + <BuilderSelect t-if="state.dependencyEl and state.dependencyEl.type === 'number'" |
| 269 | + id="'hidden_condition_num_opt'" preview="false" dataAttributeAction="'visibilityComparator'" |
| 270 | + > |
| 271 | + <!-- number comparator possibilities --> |
| 272 | + <BuilderSelectItem dataAttributeActionValue="'equal'">Is equal to</BuilderSelectItem> |
| 273 | + <BuilderSelectItem dataAttributeActionValue="'!equal'">Is not equal to</BuilderSelectItem> |
| 274 | + <BuilderSelectItem dataAttributeActionValue="'greater'">Is greater than</BuilderSelectItem> |
| 275 | + <BuilderSelectItem dataAttributeActionValue="'less'">Is less than</BuilderSelectItem> |
| 276 | + <BuilderSelectItem dataAttributeActionValue="'greater or equal'">Is greater than or equal to</BuilderSelectItem> |
| 277 | + <BuilderSelectItem dataAttributeActionValue="'less or equal'">Is less than or equal to</BuilderSelectItem> |
| 278 | + <BuilderSelectItem dataAttributeActionValue="'set'">Is set</BuilderSelectItem> |
| 279 | + <BuilderSelectItem dataAttributeActionValue="'!set'">Is not set</BuilderSelectItem> |
| 280 | + </BuilderSelect> |
| 281 | + <BuilderSelect t-if="state.dependencyEl?.classList.contains('datetimepicker-input')" |
| 282 | + id="'hidden_condition_time_comparators_opt'" preview="false" |
| 283 | + dataAttributeAction="'visibilityComparator'" |
| 284 | + > |
| 285 | + <!-- date & datetime comparator possibilities --> |
| 286 | + <BuilderSelectItem dataAttributeActionValue="'dateEqual'">Is equal to</BuilderSelectItem> |
| 287 | + <BuilderSelectItem dataAttributeActionValue="'date!equal'">Is not equal to</BuilderSelectItem> |
| 288 | + <BuilderSelectItem dataAttributeActionValue="'after'">Is after</BuilderSelectItem> |
| 289 | + <BuilderSelectItem dataAttributeActionValue="'before'">Is before</BuilderSelectItem> |
| 290 | + <BuilderSelectItem dataAttributeActionValue="'equal or after'">Is after or equal to</BuilderSelectItem> |
| 291 | + <BuilderSelectItem dataAttributeActionValue="'equal or before'">Is before or equal to</BuilderSelectItem> |
| 292 | + <BuilderSelectItem dataAttributeActionValue="'set'">Is set</BuilderSelectItem> |
| 293 | + <BuilderSelectItem dataAttributeActionValue="'!set'">Is not set</BuilderSelectItem> |
| 294 | + <BuilderSelectItem dataAttributeActionValue="'between'">Is between (included)</BuilderSelectItem> |
| 295 | + <BuilderSelectItem dataAttributeActionValue="'!between'">Is not between (excluded)</BuilderSelectItem> |
| 296 | + </BuilderSelect> |
| 297 | + <BuilderSelect t-if="state.dependencyEl?.type === 'file'" |
| 298 | + id="'hidden_condition_file_opt'" preview="false" dataAttributeAction="'visibilityComparator'" |
| 299 | + > |
| 300 | + <!-- file comparator possibilities --> |
| 301 | + <BuilderSelectItem dataAttributeActionValue="'fileset'">Is set</BuilderSelectItem> |
| 302 | + <BuilderSelectItem dataAttributeActionValue="'!fileset'">Is not set</BuilderSelectItem> |
| 303 | + </BuilderSelect> |
| 304 | + <BuilderSelect t-if="state.dependencyEl?.closest('.s_website_form_field')?.dataset.type === 'record'" |
| 305 | + id="'hidden_condition_record_opt'" dataAttributeAction="'visibilityComparator'" preview="false" |
| 306 | + > |
| 307 | + <BuilderSelectItem dataAttributeActionValue="'selected'">Is equal to</BuilderSelectItem> |
| 308 | + <BuilderSelectItem dataAttributeActionValue="'!selected'">Is not equal to</BuilderSelectItem> |
| 309 | + </BuilderSelect> |
| 310 | + </div> |
| 311 | + <div class="d-flex position-relative p-1 px-2 ps-3 hb-row"> |
| 312 | + <BuilderSelect t-if="state.conditionValueList and (state.dependencyEl and (state.dependencyEl.type === 'checkbox' || state.dependencyEl.type === 'radio' || state.dependencyEl.nodeName === 'SELECT'))" |
| 313 | + id="'hidden_condition_no_text_opt'" preview="false" dataAttributeAction="'visibilityCondition'" |
| 314 | + > |
| 315 | + <!-- checkbox, select, radio possible values --> |
| 316 | + <BuilderSelectItem t-foreach="state.conditionValueList" t-as="record" t-key="record.value" |
| 317 | + dataAttributeActionValue="record.value" |
| 318 | + t-out="record.textContent" |
| 319 | + /> |
| 320 | + </BuilderSelect> |
| 321 | + <BuilderSelect t-if="state.conditionValueList and state.dependencyEl?.closest('.s_website_form_field')?.dataset.type === 'record'" |
| 322 | + id="'hidden_condition_record_opt'" preview="false" dataAttributeAction="'visibilityCondition'" |
| 323 | + > |
| 324 | + <!-- checkbox, select, radio possible values --> |
| 325 | + <BuilderSelectItem t-foreach="state.conditionValueList" t-as="record" t-key="record.value" |
| 326 | + dataAttributeActionValue="record.value" |
| 327 | + t-out="record.textContent" |
| 328 | + /> |
| 329 | + </BuilderSelect> |
| 330 | + <BuilderTextInput t-if="isTextConditionValueVisible" |
| 331 | + id="'hidden_condition_additional_text'" dataAttributeAction="'visibilityCondition'" |
| 332 | + /> |
| 333 | + <BuilderDateTimePicker t-if="state.dependencyEl?.closest('.s_website_form_datetime') and !['set', '!set'].includes(domState.el.dataset.visibilityComparator)" |
| 334 | + id="'hidden_condition_additional_datetime'" dataAttributeAction="'visibilityCondition'" type="'datetime'" |
| 335 | + /> |
| 336 | + <BuilderDateTimePicker t-if="state.dependencyEl?.closest('.s_website_form_date') and !['set', '!set'].includes(domState.el.dataset.visibilityComparator)" |
| 337 | + id="'hidden_condition_additional_date'" dataAttributeAction="'visibilityCondition'" type="'date'" |
| 338 | + /> |
| 339 | + <BuilderDateTimePicker t-if="state.dependencyEl?.closest('.s_website_form_datetime') and ['between', '!between'].includes(domState.el.dataset.visibilityComparator)" |
| 340 | + id="'hidden_condition_datetime_between'" dataAttributeAction="'visibilityBetween'" type="'datetime'" |
| 341 | + /> |
| 342 | + <BuilderDateTimePicker t-if="state.dependencyEl?.closest('.s_website_form_date') and ['between', '!between'].includes(domState.el.getAttribute('data-visibility-comparator'))" |
| 343 | + id="'hidden_condition_date_between'" dataAttributeAction="'visibilityBetween'" type="'date'" |
| 344 | + /> |
| 345 | + </div> |
| 346 | + </t> |
| 347 | +</t> |
| 348 | + |
| 349 | +<t t-name="html_builder.website.s_website_form_submit_option"> |
| 350 | + <BuilderRow label.translate="Button Position"> |
| 351 | + <BuilderSelect> |
| 352 | + <BuilderSelectItem classAction="'text-start s_website_form_no_submit_label'">Left</BuilderSelectItem> |
| 353 | + <BuilderSelectItem classAction="'text-center s_website_form_no_submit_label'">Center</BuilderSelectItem> |
| 354 | + <BuilderSelectItem classAction="'text-end s_website_form_no_submit_label'">Right</BuilderSelectItem> |
| 355 | + <BuilderSelectItem classAction="''">Input Aligned</BuilderSelectItem> |
| 356 | + </BuilderSelect> |
| 357 | + </BuilderRow> |
| 358 | +</t> |
| 359 | + |
| 360 | +<!-- TODO --> |
| 361 | + <!-- Remove the duplicate option of model fields --> |
| 362 | +<!-- |
| 363 | + <div data-js="WebsiteFormFieldModel" data-selector=".s_website_form .s_website_form_field:not(.s_website_form_custom)"/> |
| 364 | +--> |
| 365 | + <!-- Remove the delete and duplicate option of the submit button --> |
| 366 | +<!-- |
| 367 | + <div data-js="WebsiteFormSubmitRequired" data-selector=".s_website_form .s_website_form_submit"/> |
| 368 | +--> |
| 369 | + |
83 | 370 | </templates>
|
0 commit comments