@taiga-ui/addon-doc
Version:
Taiga UI based library for developing documentation portals for Angular libraries.
78 lines • 17.3 kB
JavaScript
import { NgForOf, NgIf, TitleCasePipe } from '@angular/common';
import { ChangeDetectionStrategy, Component, inject } from '@angular/core';
import { FormControl, ReactiveFormsModule } from '@angular/forms';
import { TUI_DOC_ICONS } from '@taiga-ui/addon-doc/tokens';
import { TuiButton } from '@taiga-ui/core/components/button';
import { TuiDataList } from '@taiga-ui/core/components/data-list';
import { tuiScrollbarOptionsProvider } from '@taiga-ui/core/components/scrollbar';
import { TuiTextfield } from '@taiga-ui/core/components/textfield';
import { TuiFlagPipe } from '@taiga-ui/core/pipes/flag';
import { TuiLanguageSwitcherService } from '@taiga-ui/i18n/utils';
import { TuiBadge } from '@taiga-ui/kit/components/badge';
import { TuiBadgedContent } from '@taiga-ui/kit/components/badged-content';
import { TuiButtonSelect } from '@taiga-ui/kit/directives/button-select';
import * as i0 from "@angular/core";
import * as i1 from "@angular/forms";
import * as i2 from "@taiga-ui/kit/components/badged-content";
import * as i3 from "@taiga-ui/core/components/data-list";
import * as i4 from "@taiga-ui/core/components/textfield";
class TuiDocLanguageSwitcher {
constructor() {
this.icons = inject(TUI_DOC_ICONS);
this.switcher = inject(TuiLanguageSwitcherService);
this.language = new FormControl(capitalize(this.switcher.language));
this.open = false;
this.flags = new Map([
['arabic', 'SA'],
['belarusian', 'BY'],
['chinese', 'CN'],
['dutch', 'NL'],
['english', 'GB'],
['french', 'FR'],
['german', 'DE'],
['hebrew', 'IL'],
['italian', 'IT'],
['japan', 'JP'],
['kazakh', 'KZ'],
['korean', 'KR'],
['lithuanian', 'LT'],
['malay', 'MY'],
['polish', 'PL'],
['portuguese', 'PT'],
['russian', 'RU'],
['spanish', 'ES'],
['turkish', 'TR'],
['ukrainian', 'UA'],
['vietnamese', 'VN'],
]);
this.names = Array.from(this.flags.keys());
}
setLang(lang) {
this.language.setValue(lang);
this.switcher.setLanguage(lang);
this.open = false;
}
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: TuiDocLanguageSwitcher, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: TuiDocLanguageSwitcher, isStandalone: true, selector: "tui-doc-language-switcher", providers: [tuiScrollbarOptionsProvider({ mode: 'hover' })], ngImport: i0, template: "<tui-badged-content>\n <img\n alt=\"\"\n size=\"s\"\n tuiBadge\n tuiSlot=\"bottom\"\n [src]=\"flags.get(language.value ?? '') || flags.get(switcher.language) | tuiFlag\"\n />\n\n <button\n appearance=\"outline-grayscale\"\n size=\"s\"\n tuiButtonSelect\n tuiIconButton\n type=\"button\"\n [formControl]=\"language\"\n [iconStart]=\"icons.languages\"\n >\n Language\n <tui-data-list *tuiTextfieldDropdown>\n <tui-opt-group label=\"Language of components\">\n <button\n *ngFor=\"let name of names\"\n new\n tuiOption\n type=\"button\"\n [value]=\"name | titlecase\"\n (click)=\"setLang(name)\"\n >\n <img\n alt=\"\"\n class=\"t-flag\"\n [src]=\"flags.get(name) | tuiFlag\"\n />\n {{ name | titlecase }}\n </button>\n </tui-opt-group>\n </tui-data-list>\n </button>\n</tui-badged-content>\n", styles: [".t-flag{inline-size:1.75rem;block-size:1.75rem;border-radius:50%;margin-inline-end:.5rem}[tuiOption]{justify-content:flex-start;gap:.5rem}img{box-shadow:inset 0 0 0 1px var(--tui-border-normal)}\n"], dependencies: [{ kind: "directive", type: NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "ngmodule", type: ReactiveFormsModule }, { kind: "directive", type: i1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1.FormControlDirective, selector: "[formControl]", inputs: ["formControl", "disabled", "ngModel"], outputs: ["ngModelChange"], exportAs: ["ngForm"] }, { kind: "pipe", type: TitleCasePipe, name: "titlecase" }, { kind: "directive", type: TuiBadge, selector: "tui-badge,[tuiBadge]", inputs: ["size"] }, { kind: "directive", type: i2.TuiBadgedContentDirective, selector: "[tuiSlot]", inputs: ["tuiSlot"] }, { kind: "component", type: i2.TuiBadgedContentComponent, selector: "tui-badged-content" }, { kind: "directive", type: TuiButton, selector: "a[tuiButton],button[tuiButton],a[tuiIconButton],button[tuiIconButton]", inputs: ["size"] }, { kind: "directive", type: TuiButtonSelect, selector: "button[tuiButtonSelect]" }, { kind: "component", type: i3.TuiDataListComponent, selector: "tui-data-list", inputs: ["emptyContent", "size"] }, { kind: "directive", type: i3.TuiOptionNew, selector: "button[tuiOption][new], a[tuiOption][new], label[tuiOption][new]", inputs: ["disabled"] }, { kind: "directive", type: i3.TuiOptionWithValue, selector: "button[tuiOption][value][new], a[tuiOption][value][new], label[tuiOption][value][new]", inputs: ["disabled", "value"] }, { kind: "directive", type: i3.TuiOptGroup, selector: "tui-opt-group", inputs: ["label"] }, { kind: "pipe", type: TuiFlagPipe, name: "tuiFlag" }, { kind: "directive", type: i4.TuiTextfieldDropdownDirective, selector: "ng-template[tuiTextfieldDropdown]" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
}
export { TuiDocLanguageSwitcher };
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: TuiDocLanguageSwitcher, decorators: [{
type: Component,
args: [{ standalone: true, selector: 'tui-doc-language-switcher', imports: [
NgForOf,
NgIf,
ReactiveFormsModule,
TitleCasePipe,
TuiBadge,
TuiBadgedContent,
TuiButton,
TuiButtonSelect,
TuiDataList,
TuiFlagPipe,
TuiTextfield,
], changeDetection: ChangeDetectionStrategy.OnPush, providers: [tuiScrollbarOptionsProvider({ mode: 'hover' })], template: "<tui-badged-content>\n <img\n alt=\"\"\n size=\"s\"\n tuiBadge\n tuiSlot=\"bottom\"\n [src]=\"flags.get(language.value ?? '') || flags.get(switcher.language) | tuiFlag\"\n />\n\n <button\n appearance=\"outline-grayscale\"\n size=\"s\"\n tuiButtonSelect\n tuiIconButton\n type=\"button\"\n [formControl]=\"language\"\n [iconStart]=\"icons.languages\"\n >\n Language\n <tui-data-list *tuiTextfieldDropdown>\n <tui-opt-group label=\"Language of components\">\n <button\n *ngFor=\"let name of names\"\n new\n tuiOption\n type=\"button\"\n [value]=\"name | titlecase\"\n (click)=\"setLang(name)\"\n >\n <img\n alt=\"\"\n class=\"t-flag\"\n [src]=\"flags.get(name) | tuiFlag\"\n />\n {{ name | titlecase }}\n </button>\n </tui-opt-group>\n </tui-data-list>\n </button>\n</tui-badged-content>\n", styles: [".t-flag{inline-size:1.75rem;block-size:1.75rem;border-radius:50%;margin-inline-end:.5rem}[tuiOption]{justify-content:flex-start;gap:.5rem}img{box-shadow:inset 0 0 0 1px var(--tui-border-normal)}\n"] }]
}] });
function capitalize(value) {
return `${value.charAt(0).toUpperCase()}${value.slice(1)}`;
}
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9hZGRvbi1kb2MvY29tcG9uZW50cy9sYW5ndWFnZS1zd2l0Y2hlci9pbmRleC50cyIsIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2FkZG9uLWRvYy9jb21wb25lbnRzL2xhbmd1YWdlLXN3aXRjaGVyL2luZGV4Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFDLE9BQU8sRUFBRSxJQUFJLEVBQUUsYUFBYSxFQUFDLE1BQU0saUJBQWlCLENBQUM7QUFDN0QsT0FBTyxFQUFDLHVCQUF1QixFQUFFLFNBQVMsRUFBRSxNQUFNLEVBQUMsTUFBTSxlQUFlLENBQUM7QUFDekUsT0FBTyxFQUFDLFdBQVcsRUFBRSxtQkFBbUIsRUFBQyxNQUFNLGdCQUFnQixDQUFDO0FBQ2hFLE9BQU8sRUFBQyxhQUFhLEVBQUMsTUFBTSw0QkFBNEIsQ0FBQztBQUN6RCxPQUFPLEVBQUMsU0FBUyxFQUFDLE1BQU0sa0NBQWtDLENBQUM7QUFDM0QsT0FBTyxFQUFDLFdBQVcsRUFBQyxNQUFNLHFDQUFxQyxDQUFDO0FBQ2hFLE9BQU8sRUFBQywyQkFBMkIsRUFBQyxNQUFNLHFDQUFxQyxDQUFDO0FBQ2hGLE9BQU8sRUFBQyxZQUFZLEVBQUMsTUFBTSxxQ0FBcUMsQ0FBQztBQUNqRSxPQUFPLEVBQUMsV0FBVyxFQUFDLE1BQU0sMkJBQTJCLENBQUM7QUFFdEQsT0FBTyxFQUFDLDBCQUEwQixFQUFDLE1BQU0sc0JBQXNCLENBQUM7QUFDaEUsT0FBTyxFQUFDLFFBQVEsRUFBQyxNQUFNLGdDQUFnQyxDQUFDO0FBQ3hELE9BQU8sRUFBQyxnQkFBZ0IsRUFBQyxNQUFNLHlDQUF5QyxDQUFDO0FBQ3pFLE9BQU8sRUFBQyxlQUFlLEVBQUMsTUFBTSx3Q0FBd0MsQ0FBQzs7Ozs7O0FBRXZFLE1BcUJhLHNCQUFzQjtJQXJCbkM7UUFzQnVCLFVBQUssR0FBRyxNQUFN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dWxhci9jb21tb24nO1xuaW1wb3J0IHtDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSwgQ29tcG9uZW50LCBpbmplY3R9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHtGb3JtQ29udHJvbCwgUmVhY3RpdmVGb3Jtc01vZHVsZX0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuaW1wb3J0IHtUVUlfRE9DX0lDT05TfSBmcm9tICdAdGFpZ2EtdWkvYWRkb24tZG9jL3Rva2Vucyc7XG5pbXBvcnQge1R1aUJ1dHRvbn0gZnJvbSAnQHRhaWdhLXVpL2NvcmUvY29tcG9uZW50cy9idXR0b24nO1xuaW1wb3J0IHtUdWlEYXRhTGlzdH0gZnJvbSAnQHRhaWdhLXVpL2NvcmUvY29tcG9uZW50cy9kYXRhLWxpc3QnO1xuaW1wb3J0IHt0dWlTY3JvbGxiYXJPcHRpb25zUHJvdmlkZXJ9IGZyb20gJ0B0YWlnYS11aS9jb3JlL2NvbXBvbmVudHMvc2Nyb2xsYmFyJztcbmltcG9ydCB7VHVpVGV4dGZpZWxkfSBmcm9tICdAdGFpZ2EtdWkvY29yZS9jb21wb25lbnRzL3RleHRmaWVsZCc7XG5pbXBvcnQge1R1aUZsYWdQaXBlfSBmcm9tICdAdGFpZ2EtdWkvY29yZS9waXBlcy9mbGFnJztcbmltcG9ydCB0eXBlIHtUdWlDb3VudHJ5SXNvQ29kZSwgVHVpTGFuZ3VhZ2VOYW1lfSBmcm9tICdAdGFpZ2EtdWkvaTE4bi90eXBlcyc7XG5pbXBvcnQge1R1aUxhbmd1YWdlU3dpdGNoZXJTZXJ2aWNlfSBmcm9tICdAdGFpZ2EtdWkvaTE4bi91dGlscyc7XG5pbXBvcnQge1R1aUJhZGdlfSBmcm9tICdAdGFpZ2EtdWkva2l0L2NvbXBvbmVudHMvYmFkZ2UnO1xuaW1wb3J0IHtUdWlCYWRnZWRDb250ZW50fSBmcm9tICdAdGFpZ2EtdWkva2l0L2NvbXBvbmVudHMvYmFkZ2VkLWNvbnRlbnQnO1xuaW1wb3J0IHtUdWlCdXR0b25TZWxlY3R9IGZyb20gJ0B0YWlnYS11aS9raXQvZGlyZWN0aXZlcy9idXR0b24tc2VsZWN0JztcblxuQENvbXBvbmVudCh7XG4gICAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgICBzZWxlY3RvcjogJ3R1aS1kb2MtbGFuZ3VhZ2Utc3dpdGNoZXInLFxuICAgIGltcG9ydHM6IFtcbiAgICAgICAgTmdGb3JPZixcbiAgICAgICAgTmdJZixcbiAgICAgICAgUmVhY3RpdmVGb3Jtc01vZHVsZSxcbiAgICAgICAgVGl0bGVDYXNlUGlwZSxcbiAgICAgICAgVHVpQmFkZ2UsXG4gICAgICAgIFR1aUJhZGdlZENvbnRlbnQsXG4gICAgICAgIFR1aUJ1dHRvbixcbiAgICAgICAgVHVpQnV0dG9uU2VsZWN0LFxuICAgICAgICBUdWlEYXRhTGlzdCxcbiAgICAgICAgVHVpRmxhZ1BpcGUsXG4gICAgICAgIFR1aVRleHRmaWVsZCxcbiAgICBdLFxuICAgIHRlbXBsYXRlVXJsOiAnLi9pbmRleC5odG1sJyxcbiAgICBzdHlsZVVybHM6IFsnLi9pbmRleC5sZXNzJ10sXG4gICAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG4gICAgcHJvdmlkZXJzOiBbdHVpU2Nyb2xsYmFyT3B0aW9uc1Byb3ZpZGVyKHttb2RlOiAnaG92ZXInfSldLFxufSlcbmV4cG9ydCBjbGFzcyBUdWlEb2NMYW5ndWFnZVN3aXRjaGVyIHtcbiAgICBwcm90ZWN0ZWQgcmVhZG9ubHkgaWNvbnMgPSBpbmplY3QoVFVJX0RPQ19JQ09OUyk7XG4gICAgcHJvdGVjdGVkIHJlYWRvbmx5IHN3aXRjaGVyID0gaW5qZWN0KFR1aUxhbmd1YWdlU3dpdGNoZXJTZXJ2aWNlKTtcbiAgICBwcm90ZWN0ZWQgcmVhZG9ubHkgbGFuZ3VhZ2UgPSBuZXcgRm9ybUNvbnRyb2woY2FwaXRhbGl6ZSh0aGlzLnN3aXRjaGVyLmxhbmd1YWdlKSk7XG5cbiAgICBwcm90ZWN0ZWQgb3BlbiA9IGZhbHNlO1xuXG4gICAgcHVibGljIHJlYWRvbmx5IGZsYWdzID0gbmV3IE1hcDxUdWlMYW5ndWFnZU5hbWUsIFR1aUNvdW50cnlJc29Db2RlPihbXG4gICAgICAgIFsnYXJhYmljJywgJ1NBJ10sXG4gICAgICAgIFsnYmVsYXJ1c2lhbicsICdCWSddLFxuICAgICAgICBbJ2NoaW5lc2UnLCAnQ04nXSxcbiAgICAgICAgWydkdXRjaCcsICdOTCddLFxuICAgICAgICBbJ2VuZ2xpc2gnLCAnR0InXSxcbiAgICAgICAgWydmcmVuY2gnLCAnRlInXSxcbiAgICAgICAgWydnZXJtYW4nLCAnREUnXSxcbiAgICAgICAgWydoZWJyZXcnLCAnSUwnXSxcbiAgICAgICAgWydpdGFsaWFuJywgJ0lUJ10sXG4gICAgICAgIFsnamFwYW4nLCAnSlAnXSxcbiAgICAgICAgWydrYXpha2gnLCAnS1onXSxcbiAgICAgICAgWydrb3JlYW4nLCAnS1InXSxcbiAgICAgICAgWydsaXRodWFuaWFuJywgJ0xUJ10sXG4gICAgICAgIFsnbWFsYXknLCAnTVknXSxcbiAgICAgICAgWydwb2xpc2gnLCAnUEwnXSxcbiAgICAgICAgWydwb3J0dWd1ZXNlJywgJ1BUJ10sXG4gICAgICAgIFsncnVzc2lhbicsICdSVSddLFxuICAgICAgICBbJ3NwYW5pc2gnLCAnRVMnXSxcbiAgICAgICAgWyd0dXJraXNoJywgJ1RSJ10sXG4gICAgICAgIFsndWtyYWluaWFuJywgJ1VBJ10sXG4gICAgICAgIFsndmlldG5hbWVzZScsICdWTiddLFxuICAgIF0pO1xuXG4gICAgcHVibGljIHJlYWRvbmx5IG5hbWVzOiBUdWlMYW5ndWFnZU5hbWVbXSA9IEFycmF5LmZyb20odGhpcy5mbGFncy5rZXlzKCkpO1xuXG4gICAgcHVibGljIHNldExhbmcobGFuZzogVHVpTGFuZ3VhZ2VOYW1lKTogdm9pZCB7XG4gICAgICAgIHRoaXMubGFuZ3VhZ2Uuc2V0VmFsdWUobGFuZyk7XG4gICAgICAgIHRoaXMuc3dpdGNoZXIuc2V0TGFuZ3VhZ2UobGFuZyk7XG4gICAgICAgIHRoaXMub3BlbiA9IGZhbHNlO1xuICAgIH1cbn1cblxuZnVuY3Rpb24gY2FwaXRhbGl6ZSh2YWx1ZTogc3RyaW5nKTogc3RyaW5nIHtcbiAgICByZXR1cm4gYCR7dmFsdWUuY2hhckF0KDApLnRvVXBwZXJDYXNlKCl9JHt2YWx1ZS5zbGljZSgxKX1gO1xufVxuIiwiPHR1aS1iYWRnZWQtY29udGVudD5cbiAgICA8aW1nXG4gICAgICAgIGFsdD1cIlwiXG4gICAgICAgIHNpemU9XCJzXCJcbiAgICAgICAgdHVpQmFkZ2VcbiAgICAgICAgdHVpU2xvdD1cImJvdHRvbVwiXG4gICAgICAgIFtzcmNdPVwiZmxhZ3MuZ2V0KGxhbmd1YWdlLnZhbHVlID8/ICcnKSB8fCBmbGFncy5nZXQoc3dpdGNoZXIubGFuZ3VhZ2UpIHwgdHVpRmxhZ1wiXG4gICAgLz5cblxuICAgIDxidXR0b25cbiAgICAgICAgYXBwZWFyYW5jZT1cIm91dGxpbmUtZ3JheXNjYWxlXCJcbiAgICAgICAgc2l6ZT1cInNcIlxuICAgICAgICB0dWlCdXR0b25TZWxlY3RcbiAgICAgICAgdHVpSWNvbkJ1dHRvblxuICAgICAgICB0eXBlPVwiYnV0dG9uXCJcbiAgICAgICAgW2Zvcm1Db250cm9sXT1cImxhbmd1YWdlXCJcbiAgICAgICAgW2ljb25TdGFydF09XCJpY29ucy5sYW5ndWFnZXNcIlxuICAgID5cbiAgICAgICAgTGFuZ3VhZ2VcbiAgICAgICAgPHR1aS1kYXRhLWxpc3QgKnR1aVRleHRmaWVsZERyb3Bkb3duPlxuICAgICAgICAgICAgPHR1aS1vcHQtZ3JvdXAgbGFiZWw9XCJMYW5ndWFnZSBvZiBjb21wb25lbnRzXCI+XG4gICAgICAgICAgICAgICAgPGJ1dHRvblxuICAgICAgICAgICAgICAgICAgICAqbmdGb3I9XCJsZXQgbmFtZSBvZiBuYW1lc1wiXG4gICAgICAgICAgICAgICAgICAgIG5ld1xuICAgICAgICAgICAgICAgICAgICB0dWlPcHRpb25cbiAgICAgICAgICAgICAgICAgICAgdHlwZT1cImJ1dHRvblwiXG4gICAgICAgICAgICAgICAgICAgIFt2YWx1ZV09XCJuYW1lIHwgdGl0bGVjYXNlXCJcbiAgICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cInNldExhbmcobmFtZSlcIlxuICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgPGltZ1xuICAgICAgICAgICAgICAgICAgICAgICAgYWx0PVwiXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwidC1mbGFnXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIFtzcmNdPVwiZmxhZ3MuZ2V0KG5hbWUpIHwgdHVpRmxhZ1wiXG4gICAgICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgICAgICAgIHt7IG5hbWUgfCB0aXRsZWNhc2UgfX1cbiAgICAgICAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgICAgIDwvdHVpLW9wdC1ncm91cD5cbiAgICAgICAgPC90dWktZGF0YS1saXN0PlxuICAgIDwvYnV0dG9uPlxuPC90dWktYmFkZ2VkLWNvbnRlbnQ+XG4iXX0=