UNPKG

md-form-builder

Version:

AngularJS - Material Design - Form Builder

179 lines (158 loc) 7.58 kB
<md-input-container class="no-margin" ng-class="{ 'md-input-invalid' : form[field.name].$invalid }"> <div class="radio-custom-row" layout="row"> <span class="matrix-cell" flex="25" layout="column" layout-align="top left" ng-bind-html="field.title" ng-class="{fieldDisabled: field.settings.disabled}" style="margin-right: 20px;"></span> <div class="matrix-cell" flex="75" layout="column" layout-align="top left"> <md-input-container ng-show="!globals.normalDisplay" ng-class="{ 'md-input-invalid' : form[field.name].$invalid && form[field.name].$touched }" style="margin-top: 0px;"> <md-radio-group name="{{field.name}}" ng-model="field.value" ng-required="field.settings.required && !form.saveAsDraft.$modelValue && field.show" layout="{{field.layout}}"> <md-radio-button ng-repeat="option in field.options track by $index" ng-disabled="field.settings.disabled || globals.viewModeOnly" value="{{option.key}}" aria-label="..."> <span ng-bind-html="option.value"></span> </md-radio-button> </md-radio-group> <div layout="column" ng-messages="form[field.name].$error" ng-show="form[field.name].$invalid"> <div ng-message="required">This field is required</div> </div> </md-input-container> <style> .normalDisplay { margin-top: 0px; } .normalDisplay md-list-item::before, md-list-item .md-list-item-inner::before { min-height: 35px; } .normalDisplay md-list-item { min-height: 35px; margin-left: 16px; } .accordion-div-parent { cursor: pointer; outline: none; } .accordion-div-child { padding: 10px; background: #F6F6F6; border-bottom: 1px solid #ccc; } .data-div { padding: 10px; background: #eee; border-bottom: 1px solid #ccc; outline: none; } .radio-custom-row { border-bottom: 1px solid #ccc; padding-bottom: 20px; } md-radio-button .md-container { top: 8px; } .data-padding { padding: 5px 10px 0px 10px; } .read-only-button { min-width: 30px; min-height: 10px; line-height: 20px; margin: 0px; } .read-only-icon { font-size: 20px; float: left; } .accordion-icon { float: right; } .md-list-custom { padding: 0px; margin-top: -8px; } .no-margin { margin: 0px; } .parent-fit-content { width: fit-content; } </style> <md-input-container class="normalDisplay" ng-show="globals.normalDisplay"> <md-list class="md-list-custom"> <md-list-item ng-repeat="option in field.options"> <span ng-class="{'selected-option': field.value == $index}" ng-bind-html="option.value"></span> </md-list-item> </md-list> </md-input-container> <div> <div ng-if="field.data.lists"> <div layout="column" class="data-div"> <div layout="row"> <span><strong>Checklists:</strong></span> </div> <div layout="column"> <div flex ng-repeat="(key, list) in field.data.lists"> <div class="accordion-div-parent" ng-click="toggleList(key)" ng-disabled="globals.viewModeOnly"> <div layout="column" class="accordion-div-child"> <div layout="row"> <span><strong>{{ list.title }}</strong></span> <span flex></span> <div ng-if="!showList[key]"><i class="material-icons accordion-icon">keyboard_arrow_down</i></div> <div ng-if="showList[key]"><i class="material-icons accordion-icon">keyboard_arrow_up</i></div> </div> <div ng-if="!showList[key]"> <ul class="no-margin"> <div ng-repeat="item in list.items"> <li ng-if="item.selected">{{ item.label }}</li> </div> </ul> </div> <md-input-container ng-if="showList[key]"> <md-checkbox ng-click="$event.stopPropagation()" ng-change="editSelectedDocuments(key, item.code)" ng-repeat="item in list.items" name="_{{ item.code }}" ng-model="item.selected" ng-true-value="true" ng-false-value="false" layout="{{field.layout}}" layout-align="start start" class="md-align-top-left parent-fit-content" flex> <div>{{ item.label }}</div> </md-checkbox> </md-input-container> </div> </div> <input type="hidden" name="{{ key }}" ng-model="selectedDocuments[key]"/> </div> </div> </div> </div> <div layout="column" class="data-div"> <div layout="row"> <span><strong>Findings:</strong></span> <span flex></span> <div ng-if="!globals.normalDisplay"> <md-button class="md-raised md-accent read-only-button" ng-click="showPrompt($index, 'findings', field.data.findings)" ng-show="!field.data.findings"><span><i class="material-icons ng-binding read-only-icon">add</i></span> Add</md-button> <md-button class="md-raised md-accent read-only-button" ng-click="showPrompt($index, 'findings', field.data.findings)" ng-show="field.data.findings"><span><i class="material-icons ng-binding read-only-icon">edit</i></span> Edit</md-button> </div> </div> <input type="hidden" name="{{field.name}}_findings" ng-model="field.data.findings" /> <div layout="row" ng-if="field.data.findings" ng-bind-html="field.data.findings" class="data-padding"></div> </div> <div layout="column" class="data-div"> <div layout="row"> <span><strong>Recommendations:</strong></span> <span flex></span> <div ng-if="!globals.normalDisplay"> <md-button class="md-raised md-accent read-only-button" ng-click="showPrompt($index, 'recommendations', field.data.recommendations)" ng-show="!field.data.recommendations"><span><i class="material-icons ng-binding read-only-icon">add</i></span> Add</md-button> <md-button class="md-raised md-accent read-only-button" ng-click="showPrompt($index, 'recommendations', field.data.recommendations)" ng-show="field.data.recommendations"><span><i class="material-icons ng-binding read-only-icon">edit</i></span> Edit</md-button> </div> </div> <input type="hidden" name="{{field.name}}_recommendations" ng-model="field.data.recommendations" /> <div layout="row" ng-if="field.data.recommendations" ng-bind-html="field.data.recommendations" class="data-padding"></div> </div> </div> </div> </div> </md-input-container>