@c8y/ngx-components
Version:
Angular modules for Cumulocity IoT applications
1 lines • 11 kB
Source Map (JSON)
{"version":3,"file":"c8y-ngx-components-branding-shared-lazy-add-branding-modal.mjs","sources":["../../branding/shared/lazy/add-branding-modal/add-branding-modal.component.ts","../../branding/shared/lazy/add-branding-modal/add-branding-modal.component.html","../../branding/shared/lazy/add-branding-modal/add-branding-modal.service.ts","../../branding/shared/lazy/add-branding-modal/c8y-ngx-components-branding-shared-lazy-add-branding-modal.ts"],"sourcesContent":["import { Component, Input } from '@angular/core';\nimport { StoreBrandingService } from '@c8y/ngx-components/branding/shared/data';\nimport {\n AbstractControl,\n FormBuilder,\n ReactiveFormsModule,\n ValidatorFn,\n Validators\n} from '@angular/forms';\nimport { CoreModule, gettext } from '@c8y/ngx-components';\nimport { NgIf } from '@angular/common';\n\n@Component({\n selector: 'c8y-add-branding-modal',\n templateUrl: './add-branding-modal.component.html',\n standalone: true,\n imports: [CoreModule, NgIf, ReactiveFormsModule]\n})\nexport class AddBrandingModalComponent {\n @Input() duplicateBranding = false;\n form: ReturnType<typeof this.initForm>;\n namesAlreadyTaken: string[] = [];\n loading = true;\n\n result = new Promise<ReturnType<typeof this.initForm>['value']>((resolve, reject) => {\n this._resovle = resolve;\n this._reject = reject;\n });\n\n messages = [\n {\n name: 'nameAlreadyTaken',\n text: gettext('The provided name is already taken.')\n },\n {\n name: 'onlyLowerCaseCharacters',\n text: gettext('Only lower case characters are allowed.')\n },\n {\n name: 'shouldStartWithLowerCaseLetterOrNumber',\n text: gettext('Should start with a lower case letter or a number.')\n },\n {\n name: 'invalidCharacters',\n text: gettext('Invalid character \"{{ invalidCharacter }}\". Only a-z, 0-9 and - are allowed.')\n }\n ] as const;\n\n private _resovle: (value: ReturnType<typeof this.initForm>['value']) => void;\n private _reject: (reason?: any) => void;\n\n constructor(\n private branding: StoreBrandingService,\n private formBuilder: FormBuilder\n ) {\n this.form = this.initForm();\n this.getExistingBrandingVersions();\n }\n\n async getExistingBrandingVersions() {\n try {\n const { variants } = await this.branding.loadBrandingVariants();\n this.namesAlreadyTaken = variants.map(variant => variant.version);\n } catch (e) {\n console.warn(e);\n }\n this.loading = false;\n }\n\n initForm() {\n return this.formBuilder.group({\n brandingName: [\n '',\n [Validators.required, this.ensureProperVariantName(), this.ensureNotExistingName()]\n ]\n });\n }\n\n cancel() {\n this._reject();\n }\n\n save() {\n this._resovle(this.form.value);\n }\n\n private ensureNotExistingName(): ValidatorFn {\n return (control: AbstractControl) => {\n if (typeof control.value === 'string') {\n const lowercaseName = control.value.toLowerCase();\n const nameAlreadyTaken = this.namesAlreadyTaken.some(name =>\n name.toLowerCase().startsWith(lowercaseName + '-')\n );\n if (nameAlreadyTaken) {\n return { nameAlreadyTaken: {} };\n }\n }\n return null;\n };\n }\n\n private ensureProperVariantName(): ValidatorFn {\n return (control: AbstractControl) => {\n if (typeof control.value === 'string') {\n const value = control.value;\n if (/[A-Z]/.test(value)) {\n return {\n onlyLowerCaseCharacters: {}\n };\n }\n if (!/^[a-z0-9]+/.test(value)) {\n return {\n shouldStartWithLowerCaseLetterOrNumber: {}\n };\n }\n\n const matches = /[^a-z0-9-]/.exec(value);\n if (matches) {\n return {\n invalidCharacters: {\n invalidCharacter: matches[0]\n }\n };\n }\n }\n return null;\n };\n }\n}\n","<c8y-modal\n [title]=\"duplicateBranding ? 'Duplicate Branding' : 'Create Branding'\"\n [headerClasses]=\"'dialog-header'\"\n (onDismiss)=\"cancel()\"\n (onClose)=\"save()\"\n [disabled]=\"form.invalid\"\n [labels]=\"{ cancel: 'Cancel', ok: 'Save' }\"\n>\n<ng-container c8y-modal-title>\n <span [c8yIcon]=\"'palette'\"></span>\n</ng-container>\n <div [formGroup]=\"form\" class=\"p-24\">\n <c8y-form-group>\n <label\n for=\"brandingName\"\n translate\n >\n Branding name\n </label>\n <input\n class=\"form-control\"\n name=\"brandingName\"\n id=\"brandingName\"\n type=\"text\"\n formControlName=\"brandingName\"\n placeholder=\"{{'e.g. {{ example }}' | translate : { example: 'main-branding' } }}\"\n />\n <c8y-messages [helpMessage]=\"'Upper case letters not allowed' | translate\">\n <c8y-message *ngFor=\"let message of messages\"\n [name]=\"message.name\"\n [text]=\"message.text | translate\"\n ></c8y-message>\n </c8y-messages>\n </c8y-form-group>\n </div>\n</c8y-modal>\n","import { Injectable } from '@angular/core';\nimport { AddBrandingModalComponent } from './add-branding-modal.component';\nimport { BsModalService } from 'ngx-bootstrap/modal';\n\n@Injectable({\n providedIn: 'root'\n})\nexport class AddBrandingModalService {\n constructor(private modal: BsModalService) {}\n\n async openAddBrandingModal() {\n let versionDetails: Awaited<AddBrandingModalComponent['result']>;\n try {\n const modalRef = this.modal.show(AddBrandingModalComponent, {\n class: 'modal-sm',\n ariaDescribedby: 'modal-body',\n ariaLabelledBy: 'modal-title',\n ignoreBackdropClick: true,\n keyboard: false\n });\n versionDetails = await modalRef.content.result;\n } catch (e) {\n // modal closed\n return;\n }\n\n return versionDetails;\n }\n\n async openDuplicateBrandingModal() {\n let versionDetails: Awaited<AddBrandingModalComponent['result']>;\n try {\n const modalRef = this.modal.show(AddBrandingModalComponent, {\n class: 'modal-sm',\n ariaDescribedby: 'modal-body',\n ariaLabelledBy: 'modal-title',\n initialState: { duplicateBranding: true },\n ignoreBackdropClick: true,\n keyboard: false\n });\n versionDetails = await modalRef.content.result;\n } catch (e) {\n // modal closed\n return;\n }\n\n return versionDetails;\n }\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":["i1"],"mappings":"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"}