mirror of
https://github.com/Redocly/redoc.git
synced 2024-11-23 17:13:44 +03:00
51 lines
1.6 KiB
JavaScript
51 lines
1.6 KiB
JavaScript
'use strict';
|
|
|
|
import {RedocComponent, BaseComponent} from '../base';
|
|
import JsonPointer from '../../utils/JsonPointer';
|
|
import {Tabs, Tab} from '../../common/components/Tabs/tabs';
|
|
import SchemaSample from '../SchemaSample/schema-sample';
|
|
import {PrismPipe} from '../../utils/pipes';
|
|
|
|
import {ViewChildren, QueryList, ChangeDetectorRef, ChangeDetectionStrategy} from 'angular2/core';
|
|
import {redocEvents} from '../../events';
|
|
|
|
@RedocComponent({
|
|
selector: 'request-samples',
|
|
templateUrl: './lib/components/RequestSamples/request-samples.html',
|
|
styleUrls: ['./lib/components/RequestSamples/request-samples.css'],
|
|
directives: [SchemaSample, Tabs, Tab],
|
|
inputs: ['bodySchemaPtr'],
|
|
pipes: [PrismPipe],
|
|
changeDetection: ChangeDetectionStrategy.OnPush
|
|
})
|
|
export default class RequestSamples extends BaseComponent {
|
|
constructor(schemaMgr, tabs, changeDetector) {
|
|
super(schemaMgr);
|
|
tabs.changes.subscribe(_ => {
|
|
this.tabs = tabs.first;
|
|
this.subscribeForEvents(_);
|
|
});
|
|
this.changeDetector = changeDetector;
|
|
}
|
|
|
|
changeLangNotify(lang) {
|
|
redocEvents.samplesLanguageChanged.next(lang);
|
|
}
|
|
|
|
subscribeForEvents() {
|
|
if (!this.tabs) return;
|
|
redocEvents.samplesLanguageChanged.subscribe((sampleLang) => {
|
|
this.tabs.selectyByTitle(sampleLang);
|
|
this.changeDetector.markForCheck();
|
|
});
|
|
}
|
|
|
|
prepareModel() {
|
|
this.data = {};
|
|
this.data.bodySchemaPtr = JsonPointer.join(this.bodySchemaPtr, 'schema');
|
|
this.data.samples = this.componentSchema['x-code-samples'] || [];
|
|
}
|
|
}
|
|
|
|
RequestSamples.parameters = RequestSamples.parameters.concat([ [new ViewChildren(Tabs), QueryList], [ChangeDetectorRef] ]);
|