{"version":3,"file":"ajsf-bootstrap4.mjs","sources":["../../../../projects/ajsf-bootstrap4/src/lib/bootstrap4-framework.component.ts","../../../../projects/ajsf-bootstrap4/src/lib/bootstrap4-framework.component.html","../../../../projects/ajsf-bootstrap4/src/lib/bootstrap4.framework.ts","../../../../projects/ajsf-bootstrap4/src/lib/bootstrap4-framework.module.ts","../../../../projects/ajsf-bootstrap4/src/public_api.ts","../../../../projects/ajsf-bootstrap4/src/ajsf-bootstrap4.ts"],"sourcesContent":["import {\n  ChangeDetectorRef,\n  Component,\n  Input,\n  OnChanges,\n  OnInit\n} from '@angular/core';\nimport cloneDeep from 'lodash/cloneDeep';\nimport map from 'lodash/map';\nimport {JsonSchemaFormService, addClasses, inArray} from '@ajsf/core';\n\n/**\n * Bootstrap 4 framework for Angular JSON Schema Form.\n *\n */\n@Component({\n  // tslint:disable-next-line:component-selector\n  selector: 'bootstrap-4-framework',\n  templateUrl: './bootstrap4-framework.component.html',\n  styleUrls: ['./bootstrap4-framework.component.scss'],\n})\nexport class Bootstrap4FrameworkComponent implements OnInit, OnChanges {\n  frameworkInitialized = false;\n  widgetOptions: any; // Options passed to child widget\n  widgetLayoutNode: any; // layoutNode passed to child widget\n  options: any; // Options used in this framework\n  formControl: any = null;\n  debugOutput: any = '';\n  debug: any = '';\n  parentArray: any = null;\n  isOrderable = false;\n  @Input() layoutNode: any;\n  @Input() layoutIndex: number[];\n  @Input() dataIndex: number[];\n\n  constructor(\n    public changeDetector: ChangeDetectorRef,\n    public jsf: JsonSchemaFormService\n  ) {\n  }\n\n  get showRemoveButton(): boolean {\n    if (!this.options.removable || this.options.readonly ||\n      this.layoutNode.type === '$ref'\n    ) {\n      return false;\n    }\n    if (this.layoutNode.recursiveReference) {\n      return true;\n    }\n    if (!this.layoutNode.arrayItem || !this.parentArray) {\n      return false;\n    }\n    // If array length <= minItems, don't allow removing any items\n    return this.parentArray.items.length - 1 <= this.parentArray.options.minItems ? false :\n      // For removable list items, allow removing any item\n      this.layoutNode.arrayItemType === 'list' ? true :\n        // For removable tuple items, only allow removing last item in list\n        this.layoutIndex[this.layoutIndex.length - 1] === this.parentArray.items.length - 2;\n  }\n\n  ngOnInit() {\n    this.initializeFramework();\n    if (this.layoutNode.arrayItem && this.layoutNode.type !== '$ref') {\n      this.parentArray = this.jsf.getParentNode(this);\n      if (this.parentArray) {\n        this.isOrderable = this.layoutNode.arrayItemType === 'list' &&\n          !this.options.readonly && this.parentArray.options.orderable;\n      }\n    }\n  }\n\n  ngOnChanges() {\n    if (!this.frameworkInitialized) {\n      this.initializeFramework();\n    }\n  }\n\n  initializeFramework() {\n    if (this.layoutNode) {\n      this.options = cloneDeep(this.layoutNode.options);\n      this.widgetLayoutNode = {\n        ...this.layoutNode,\n        options: cloneDeep(this.layoutNode.options)\n      };\n      this.widgetOptions = this.widgetLayoutNode.options;\n      this.formControl = this.jsf.getFormControl(this);\n\n      this.options.isInputWidget = inArray(this.layoutNode.type, [\n        'button', 'checkbox', 'checkboxes-inline', 'checkboxes', 'color',\n        'date', 'datetime-local', 'datetime', 'email', 'file', 'hidden',\n        'image', 'integer', 'month', 'number', 'password', 'radio',\n        'radiobuttons', 'radios-inline', 'radios', 'range', 'reset', 'search',\n        'select', 'submit', 'tel', 'text', 'textarea', 'time', 'url', 'week'\n      ]);\n\n      this.options.title = this.setTitle();\n\n      this.options.htmlClass =\n        addClasses(this.options.htmlClass, 'schema-form-' + this.layoutNode.type);\n      this.options.htmlClass =\n        this.layoutNode.type === 'array' ?\n          addClasses(this.options.htmlClass, 'list-group') :\n          this.layoutNode.arrayItem && this.layoutNode.type !== '$ref' ?\n            addClasses(this.options.htmlClass, 'list-group-item') :\n            addClasses(this.options.htmlClass, 'form-group');\n      this.widgetOptions.htmlClass = '';\n      this.options.labelHtmlClass =\n        addClasses(this.options.labelHtmlClass, 'control-label');\n      this.widgetOptions.activeClass =\n        addClasses(this.widgetOptions.activeClass, 'active');\n      this.options.fieldAddonLeft =\n        this.options.fieldAddonLeft || this.options.prepend;\n      this.options.fieldAddonRight =\n        this.options.fieldAddonRight || this.options.append;\n\n      // Add asterisk to titles if required\n      if (this.options.title && this.layoutNode.type !== 'tab' &&\n        !this.options.notitle && this.options.required &&\n        !this.options.title.includes('*')\n      ) {\n        this.options.title += ' <strong class=\"text-danger\">*</strong>';\n      }\n      // Set miscelaneous styles and settings for each control type\n      switch (this.layoutNode.type) {\n        // Checkbox controls\n        case 'checkbox':\n        case 'checkboxes':\n          this.widgetOptions.htmlClass = addClasses(\n            this.widgetOptions.htmlClass, 'checkbox');\n          break;\n        case 'checkboxes-inline':\n          this.widgetOptions.htmlClass = addClasses(\n            this.widgetOptions.htmlClass, 'checkbox');\n          this.widgetOptions.itemLabelHtmlClass = addClasses(\n            this.widgetOptions.itemLabelHtmlClass, 'checkbox-inline');\n          break;\n        // Radio controls\n        case 'radio':\n        case 'radios':\n          this.widgetOptions.htmlClass = addClasses(\n            this.widgetOptions.htmlClass, 'radio');\n          break;\n        case 'radios-inline':\n          this.widgetOptions.htmlClass = addClasses(\n            this.widgetOptions.htmlClass, 'radio');\n          this.widgetOptions.itemLabelHtmlClass = addClasses(\n            this.widgetOptions.itemLabelHtmlClass, 'radio-inline');\n          break;\n        // Button sets - checkboxbuttons and radiobuttons\n        case 'checkboxbuttons':\n        case 'radiobuttons':\n          this.widgetOptions.htmlClass = addClasses(\n            this.widgetOptions.htmlClass, 'btn-group');\n          this.widgetOptions.itemLabelHtmlClass = addClasses(\n            this.widgetOptions.itemLabelHtmlClass, 'btn');\n          this.widgetOptions.itemLabelHtmlClass = addClasses(\n            this.widgetOptions.itemLabelHtmlClass, this.options.style || 'btn-default');\n          this.widgetOptions.fieldHtmlClass = addClasses(\n            this.widgetOptions.fieldHtmlClass, 'sr-only');\n          break;\n        // Single button controls\n        case 'button':\n        case 'submit':\n          this.widgetOptions.fieldHtmlClass = addClasses(\n            this.widgetOptions.fieldHtmlClass, 'btn');\n          this.widgetOptions.fieldHtmlClass = addClasses(\n            this.widgetOptions.fieldHtmlClass, this.options.style || 'btn-info');\n          break;\n        // Containers - arrays and fieldsets\n        case 'array':\n        case 'fieldset':\n        case 'section':\n        case 'conditional':\n        case 'advancedfieldset':\n        case 'authfieldset':\n        case 'selectfieldset':\n        case 'optionfieldset':\n          this.options.messageLocation = 'top';\n          break;\n        case 'tabarray':\n        case 'tabs':\n          this.widgetOptions.htmlClass = addClasses(\n            this.widgetOptions.htmlClass, 'tab-content');\n          this.widgetOptions.fieldHtmlClass = addClasses(\n            this.widgetOptions.fieldHtmlClass, 'tab-pane');\n          this.widgetOptions.labelHtmlClass = addClasses(\n            this.widgetOptions.labelHtmlClass, 'nav nav-tabs');\n          break;\n        // 'Add' buttons - references\n        case '$ref':\n          this.widgetOptions.fieldHtmlClass = addClasses(\n            this.widgetOptions.fieldHtmlClass, 'btn pull-right');\n          this.widgetOptions.fieldHtmlClass = addClasses(\n            this.widgetOptions.fieldHtmlClass, this.options.style || 'btn-default');\n          this.options.icon = 'glyphicon glyphicon-plus';\n          break;\n        // Default - including regular inputs\n        default:\n          this.widgetOptions.fieldHtmlClass = addClasses(\n            this.widgetOptions.fieldHtmlClass, 'form-control');\n      }\n\n      if (this.formControl) {\n        this.updateHelpBlock(this.formControl.status);\n        this.formControl.statusChanges.subscribe(status => this.updateHelpBlock(status));\n\n        if (this.options.debug) {\n          const vars: any[] = [];\n          this.debugOutput = map(vars, thisVar => JSON.stringify(thisVar, null, 2)).join('\\n');\n        }\n      }\n      this.frameworkInitialized = true;\n    }\n\n  }\n\n  updateHelpBlock(status) {\n    this.options.helpBlock = status === 'INVALID' &&\n    this.options.enableErrorState && this.formControl.errors &&\n    (this.formControl.dirty || this.options.feedbackOnRender) ?\n      this.jsf.formatErrors(this.formControl.errors, this.options.validationMessages) :\n      this.options.description || this.options.help || null;\n  }\n\n  setTitle(): string {\n    switch (this.layoutNode.type) {\n      case 'button':\n      case 'checkbox':\n      case 'section':\n      case 'help':\n      case 'msg':\n      case 'submit':\n      case 'message':\n      case 'tabarray':\n      case 'tabs':\n      case '$ref':\n        return null;\n      case 'advancedfieldset':\n        this.widgetOptions.expandable = true;\n        this.widgetOptions.title = 'Advanced options';\n        return null;\n      case 'authfieldset':\n        this.widgetOptions.expandable = true;\n        this.widgetOptions.title = 'Authentication settings';\n        return null;\n      case 'fieldset':\n        this.widgetOptions.title = this.options.title;\n        return null;\n      default:\n        this.widgetOptions.title = null;\n        return this.jsf.setItemTitle(this);\n    }\n  }\n\n  removeItem() {\n    this.jsf.removeItem(this);\n  }\n}\n","<div\n  [class]=\"options?.htmlClass || ''\"\n  [class.has-feedback]=\"options?.feedback && options?.isInputWidget &&\n        (formControl?.dirty || options?.feedbackOnRender)\"\n  [class.has-error]=\"options?.enableErrorState && formControl?.errors &&\n        (formControl?.dirty || options?.feedbackOnRender)\"\n  [class.has-success]=\"options?.enableSuccessState && !formControl?.errors &&\n        (formControl?.dirty || options?.feedbackOnRender)\">\n\n  <button *ngIf=\"showRemoveButton\"\n          class=\"close pull-right\"\n          type=\"button\"\n          (click)=\"removeItem()\">\n    <span aria-hidden=\"true\">&times;</span>\n    <span class=\"sr-only\">Close</span>\n  </button>\n  <div *ngIf=\"options?.messageLocation === 'top'\">\n    <p *ngIf=\"options?.helpBlock\"\n       class=\"help-block\"\n       [innerHTML]=\"options?.helpBlock\"></p>\n  </div>\n\n  <label *ngIf=\"options?.title && layoutNode?.type !== 'tab'\"\n         [attr.for]=\"'control' + layoutNode?._id\"\n         [class]=\"options?.labelHtmlClass || ''\"\n         [class.sr-only]=\"options?.notitle\"\n         [innerHTML]=\"options?.title\"></label>\n  <p *ngIf=\"layoutNode?.type === 'submit' && jsf?.formOptions?.fieldsRequired\">\n    <strong class=\"text-danger\">*</strong> = required fields\n  </p>\n  <div [class.input-group]=\"options?.fieldAddonLeft || options?.fieldAddonRight\">\n        <span *ngIf=\"options?.fieldAddonLeft\"\n              class=\"input-group-addon\"\n              [innerHTML]=\"options?.fieldAddonLeft\"></span>\n\n    <select-widget-widget\n      [layoutNode]=\"widgetLayoutNode\"\n      [dataIndex]=\"dataIndex\"\n      [layoutIndex]=\"layoutIndex\"></select-widget-widget>\n\n    <span *ngIf=\"options?.fieldAddonRight\"\n          class=\"input-group-addon\"\n          [innerHTML]=\"options?.fieldAddonRight\"></span>\n  </div>\n\n  <span *ngIf=\"options?.feedback && options?.isInputWidget &&\n          !options?.fieldAddonRight && !layoutNode.arrayItem &&\n          (formControl?.dirty || options?.feedbackOnRender)\"\n        [class.glyphicon-ok]=\"options?.enableSuccessState && !formControl?.errors\"\n        [class.glyphicon-remove]=\"options?.enableErrorState && formControl?.errors\"\n        aria-hidden=\"true\"\n        class=\"form-control-feedback glyphicon\"></span>\n  <div *ngIf=\"options?.messageLocation !== 'top'\">\n    <p *ngIf=\"options?.helpBlock\"\n       class=\"help-block\"\n       [innerHTML]=\"options?.helpBlock\"></p>\n  </div>\n</div>\n\n<div *ngIf=\"debug && debugOutput\">debug:\n  <pre>{{debugOutput}}</pre>\n</div>\n","import {Injectable} from '@angular/core';\nimport {Framework} from '@ajsf/core';\nimport {Bootstrap4FrameworkComponent} from './bootstrap4-framework.component';\n\n// Bootstrap 4 Framework\n// https://github.com/ng-bootstrap/ng-bootstrap\n\n@Injectable()\nexport class Bootstrap4Framework extends Framework {\n  name = 'bootstrap-4';\n\n  framework = Bootstrap4FrameworkComponent;\n\n  stylesheets = [\n    '//stackpath.bootstrapcdn.com/bootstrap/4.3.1/css/bootstrap.min.css'\n  ];\n\n  scripts = [\n    '//code.jquery.com/jquery-3.3.1.slim.min.js',\n    '//cdnjs.cloudflare.com/ajax/libs/popper.js/1.14.7/umd/popper.min.js',\n    '//stackpath.bootstrapcdn.com/bootstrap/4.3.1/js/bootstrap.min.js',\n  ];\n}\n","import {NgModule} from '@angular/core';\nimport {CommonModule} from '@angular/common';\nimport {\n  Framework,\n  JsonSchemaFormService,\n  WidgetLibraryService,\n  FrameworkLibraryService,\n  JsonSchemaFormModule,\n  WidgetLibraryModule\n} from '@ajsf/core';\nimport {Bootstrap4Framework} from './bootstrap4.framework';\nimport {Bootstrap4FrameworkComponent} from './bootstrap4-framework.component';\n\n@NgModule({\n    imports: [\n        JsonSchemaFormModule,\n        CommonModule,\n        WidgetLibraryModule,\n    ],\n    declarations: [\n        Bootstrap4FrameworkComponent,\n    ],\n    exports: [\n        JsonSchemaFormModule,\n        Bootstrap4FrameworkComponent,\n    ],\n    providers: [\n        JsonSchemaFormService,\n        FrameworkLibraryService,\n        WidgetLibraryService,\n        { provide: Framework, useClass: Bootstrap4Framework, multi: true },\n    ]\n})\nexport class Bootstrap4FrameworkModule {\n}\n","/*\n * Public API Surface of @ajsf/bootstrap4\n */\n\nexport * from './lib/bootstrap4-framework.module';\nexport * from './lib/bootstrap4-framework.component';\nexport * from './lib/bootstrap4.framework';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public_api';\n"],"names":[],"mappings":"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"}