@c8y/ngx-components
Version:
Angular modules for Cumulocity IoT applications
116 lines • 13.3 kB
JavaScript
import { Validators } from '@angular/forms';
import { gettext } from '@c8y/ngx-components/gettext';
import { ValidationPattern, validateInternationalPhoneNumber } from '@c8y/ngx-components';
/**
* Define all hardTyped tenant form fields, checkboxes and select elements.
*
* while still benefiting from hard typing, thanks to "satisfies" keyword
*/
const tenantPropertiesDefinitions = {
tenantID: {
id: 'tenantId',
validators: [],
defaultValue: null,
type: 'text',
label: gettext('ID')
},
domain: {
id: 'domain',
validators: [
Validators.required,
Validators.maxLength(32),
// TODO: To be consistent, pattern should be change for domain. It is tenantId, to avoid breaking tests, and be consistent with previous implementation.
Validators.pattern(ValidationPattern.rules.tenantId.pattern)
],
defaultValue: null,
type: 'text',
label: gettext('Domain/URL'),
placeholder: gettext('e.g. my-tenant`used in URL`')
},
companyName: {
id: 'companyName',
validators: [
Validators.required,
Validators.maxLength(256),
Validators.pattern(ValidationPattern.rules.noWhiteSpaceAtBeginning.pattern)
],
defaultValue: null,
type: 'text',
label: gettext('Name'),
placeholder: gettext('e.g. Company A')
},
contactName: {
id: 'contactName',
validators: [Validators.maxLength(30)],
defaultValue: null,
type: 'text',
label: gettext('Contact name'),
placeholder: gettext('e.g. Joe Doe`LOCALIZE`')
},
contactPhone: {
id: 'contactPhone',
validators: [Validators.required, validateInternationalPhoneNumber(), Validators.maxLength(20)],
defaultValue: null,
type: 'text',
label: gettext('Contact phone'),
placeholder: gettext('e.g. +49 9 876 543 210`LOCALIZE`')
},
administratorEmail: {
id: 'administratorEmail',
validators: [Validators.required, Validators.email, Validators.maxLength(256)],
defaultValue: null,
type: 'text',
label: gettext(`Administrator's email`),
placeholder: gettext('e.g. joe.doe@example.com`LOCALIZE`')
},
administratorUsername: {
id: 'administratorUsername',
validators: [
Validators.required,
Validators.pattern(ValidationPattern.rules.user.pattern),
Validators.maxLength(256)
],
defaultValue: null,
type: 'text',
label: gettext(`Administrator's username`),
placeholder: gettext('e.g. joe`LOCALIZE`')
},
externalReference: {
id: 'externalReference',
validators: [],
defaultValue: null,
type: 'text',
label: gettext('External reference'),
placeholder: gettext('e.g. REF12345`reference number`')
},
sendPasswordResetEmail: {
id: 'sendPasswordResetEmail',
validators: [],
defaultValue: true,
type: 'checkbox',
label: gettext('Send password reset link as email')
},
tenantPolicy: {
id: 'tenantPolicy',
validators: [],
defaultValue: null,
type: 'select',
label: gettext('Tenant policy')
},
allowCreateTenants: {
id: 'allowCreateTenants',
validators: [],
defaultValue: null,
type: 'checkbox',
label: gettext('Allow creation of subtenants')
},
gainsightEnabled: {
id: 'gainsightEnabled',
validators: [],
defaultValue: false,
type: 'checkbox',
label: gettext('Enable Gainsight product experience tracking')
}
};
export const tenantFormInputsDefinitions = tenantPropertiesDefinitions;
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGVuYW50LWZvcm0taW5wdXRzLWRlZmluaXRpb25zLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vdGVuYW50cy90ZW5hbnQtZm9ybS90ZW5hbnQtZm9ybS1pbnB1dHMtZGVmaW5pdGlvbnMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFlLFVBQVUsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQ3pELE9BQU8sRUFBRSxPQUFPLEVBQUUsTUFBTSw2QkFBNkIsQ0FBQztBQUN0RCxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsZ0NBQWdDLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQVkxRjs7OztHQUlHO0FBQ0gsTUFBTSwyQkFBMkIsR0FBRztJQUNsQyxRQUFRLEVBQUU7UUFDUixFQUFFLEVBQUUsVUFBVTtRQUNkLFVBQVUsRUFBRSxFQUFFO1FBQ2QsWUFBWSxFQUFFLElBQUk7UUFDbEIsSUFBSSxFQUFFLE1BQU07UUFDWixLQUFLLEVBQUUsT0FBTyxDQUFDLElBQUksQ0FBQztLQUNyQjtJQUNELE1BQU0sRUFBRTtRQUNOLEVBQUUsRUFBRSxRQUFRO1FBQ1osVUFBVSxFQUFFO1lBQ1YsVUFBVSxDQUFDLFFBQVE7WUFDbkIsVUFBVSxDQUFDLFNBQVMsQ0FBQyxFQUFFLENBQUM7WUFDeEIsd0pBQXdKO1lBQ3hKLFVBQVUsQ0FBQyxPQUFPLENBQUMsaUJBQWlCLENBQUMsS0FBSyxDQUFDLFFBQVEsQ0FBQyxPQUFPLENBQUM7U0FDN0Q7UUFDRCxZQUFZLEVBQUUsSUFBSTtRQUNsQixJQUFJLEVBQUUsTUFBTTtRQUNaLEtBQUssRUFBRSxPQUFPLENBQUMsWUFBWSxDQUFDO1FBQzVCLFdBQVcsRUFBRSxPQUFPLENBQUMsNkJBQTZCLENBQUM7S0FDcEQ7SUFDRCxXQUFXLEVBQUU7UUFDWCxFQUFFLEVBQUUsYUFBYTtRQUNqQixVQUFVLEVBQUU7WUFDVixVQUFVLENBQUMsUUFBUTtZQUNuQixVQUFVLENBQUMsU0FBUyxDQUFD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QUFVO1FBQ2hCLEtBQUssRUFBRSxPQUFPLENBQUMsOEJBQThCLENBQUM7S0FDL0M7SUFDRCxnQkFBZ0IsRUFBRTtRQUNoQixFQUFFLEVBQUUsa0JBQWtCO1FBQ3RCLFVBQVUsRUFBRSxFQUFFO1FBQ2QsWUFBWSxFQUFFLEtBQUs7UUFDbkIsSUFBSSxFQUFFLFVBQVU7UUFDaEIsS0FBSyxFQUFFLE9BQU8sQ0FBQyw4Q0FBOEMsQ0FBQztLQUMvRDtDQUNpRCxDQUFDO0FBSXJELE1BQU0sQ0FBQyxNQUFNLDJCQUEyQixHQUVwQywyQkFBMkIsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IFZhbGlkYXRvckZuLCBWYWxpZGF0b3JzIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuaW1wb3J0IHsgZ2V0dGV4dCB9IGZyb20gJ0BjOHkvbmd4LWNvbXBvbmVudHMvZ2V0dGV4dCc7XG5pbXBvcnQgeyBWYWxpZGF0aW9uUGF0dGVybiwgdmFsaWRhdGVJbnRlcm5hdGlvbmFsUGhvbmVOdW1iZXIgfSBmcm9tICdAYzh5L25neC1jb21wb25lbnRzJztcblxuLy8gTW9kZWwgZm9yIGluZGl2aWR1YWwgdGVuYW50IGZvcm0gZmllbGRzXG5leHBvcnQgaW50ZXJmYWNlIFRlbmFudFByb3BlcnR5RGVmaW5pdGlvbiB7XG4gIGlkOiBzdHJpbmc7XG4gIGRlZmF1bHRWYWx1ZTogbnVtYmVyIHwgc3RyaW5nIHwgYm9vbGVhbiB8IG51bGw7XG4gIHR5cGU6ICd0ZXh0JyB8ICdjaGVja2JveCcgfCAnbnVtYmVyJyB8ICdzZWxlY3QnO1xuICBsYWJlbDogc3RyaW5nO1xuICB2YWxpZGF0b3JzOiBWYWxpZGF0b3JGbltdO1xuICBwbGFjZWhvbGRlcj86IHN0cmluZztcbn1cblxuLyoqXG4gKiBEZWZpbmUgYWxsIGhhcmRUeXBlZCB0ZW5hbnQgZm9ybSBmaWVsZHMsIGNoZWNrYm94ZXMgYW5kIHNlbGVjdCBlbGVtZW50cy5cbiAqXG4gKiB3aGlsZSBzdGlsbCBiZW5lZml0aW5nIGZyb20gaGFyZCB0eXBpbmcsIHRoYW5rcyB0byBcInNhdGlzZmllc1wiIGtleXdvcmRcbiAqL1xuY29uc3QgdGVuYW50UHJvcGVydGllc0RlZmluaXRpb25zID0ge1xuICB0ZW5hbnRJRDoge1xuICAgIGlkOiAndGVuYW50SWQnLFxuICAgIHZhbGlkYXRvcnM6IFtdLFxuICAgIGRlZmF1bHRWYWx1ZTogbnVsbCxcbiAgICB0eXBlOiAndGV4dCcsXG4gICAgbGFiZWw6IGdldHRleHQoJ0lEJylcbiAgfSxcbiAgZG9tYWluOiB7XG4gICAgaWQ6ICdkb21haW4nLFxuICAgIHZhbGlkYXRvcnM6IFtcbiAgICAgIFZhbGlkYXRvcnMucmVxdWlyZWQsXG4gICAgICBWYWxpZGF0b3JzLm1heExlbmd0aCgzMiksXG4gICAgICAvLyBUT0RPOiBUbyBiZSBjb25zaXN0ZW50LCBwYXR0ZXJuIHNob3VsZCBiZSBjaGFuZ2UgZm9yIGRvbWFpbi4gSXQgaXMgdGVuYW50SWQsIHRvIGF2b2lkIGJyZWFraW5nIHRlc3RzLCBhbmQgYmUgY29uc2lzdGVudCB3aXRoIHByZXZpb3VzIGltcGxlbWVudGF0aW9uLlxuICAgICAgVmFsaWRhdG9ycy5wYXR0ZXJuKFZhbGlkYXRpb25QYXR0ZXJuLnJ1bGVzLnRlbmFudElkLnBhdHRlcm4pXG4gICAgXSxcbiAgICBkZWZhdWx0VmFsdWU6IG51bGwsXG4gICAgdHlwZTogJ3RleHQnLFxuICAgIGxhYmVsOiBnZXR0ZXh0KCdEb21haW4vVVJMJyksXG4gICAgcGxhY2Vob2xkZXI6IGdldHRleHQoJ2UuZy4gbXktdGVuYW50YHVzZWQgaW4gVVJMYCcpXG4gIH0sXG4gIGNvbXBhbnlOYW1lOiB7XG4gICAgaWQ6ICdjb21wYW55TmFtZScsXG4gICAgdmFsaWRhdG9yczogW1xuICAgICAgVmFsaWRhdG9ycy5yZXF1aXJlZCxcbiAgICAgIFZhbGlkYXRvcnMubWF4TGVuZ3RoKDI1NiksXG4gICAgICBWYWxpZGF0b3JzLnBhdHRlcm4oVmFsaWRhdGlvblBhdHRlcm4ucnVsZXMubm9XaGl0ZVNwYWNlQXRCZWdpbm5pbmcucGF0dGVybilcbiAgICBdLFxuICAgIGRlZmF1bHRWYWx1ZTogbnVsbCxcbiAgICB0eXBlOiAndGV4dCcsXG4gICAgbGFiZWw6IGdldHRleHQoJ05hbWUnKSxcbiAgICBwbGFjZWhvbGRlcjogZ2V0dGV4dCgnZS5nLiBDb21wYW55IEEnKVxuICB9LFxuICBjb250YWN0TmFtZToge1xuICAgIGlkOiAnY29udGFjdE5hbWUnLFxuICAgIHZhbGlkYXRvcnM6IFtWYWxpZGF0b3JzLm1heExlbmd0aCgzMCldLFxuICAgIGRlZmF1bHRWYWx1ZTogbnVsbCxcbiAgICB0eXBlOiAndGV4dCcsXG4gICAgbGFiZWw6IGdldHRleHQoJ0NvbnRhY3QgbmFtZScpLFxuICAgIHBsYWNlaG9sZGVyOiBnZXR0ZXh0KCdlLmcuIEpvZSBEb2VgTE9DQUxJWkVgJylcbiAgfSxcbiAgY29udGFjdFBob25lOiB7XG4gICAgaWQ6ICdjb250YWN0UGhvbmUnLFxuICAgIHZhbGlkYXRvcnM6IFtWYWxpZGF0b3JzLnJlcXVpcmVkLCB2YWxpZGF0ZUludGVybmF0aW9uYWxQaG9uZU51bWJlcigpLCBWYWxpZGF0b3JzLm1heExlbmd0aCgyMCldLFxuICAgIGRlZmF1bHRWYWx1ZTogbnVsbCxcbiAgICB0eXBlOiAndGV4dCcsXG4gICAgbGFiZWw6IGdldHRleHQoJ0NvbnRhY3QgcGhvbmUnKSxcbiAgICBwbGFjZWhvbGRlcjogZ2V0dGV4dCgnZS5nLiArNDkgOSA4NzYgNTQzIDIxMGBMT0NBTElaRWAnKVxuICB9LFxuICBhZG1pbmlzdHJhdG9yRW1haWw6IHtcbiAgICBpZDogJ2FkbWluaXN0cmF0b3JFbWFpbCcsXG4gICAgdmFsaWRhdG9yczogW1ZhbGlkYXRvcnMucmVxdWlyZWQsIFZhbGlkYXRvcnMuZW1haWwsIFZhbGlkYXRvcnMubWF4TGVuZ3RoKDI1NildLFxuICAgIGRlZmF1bHRWYWx1ZTogbnVsbCxcbiAgICB0eXBlOiAndGV4dCcsXG4gICAgbGFiZWw6IGdldHRleHQoYEFkbWluaXN0cmF0b3IncyBlbWFpbGApLFxuICAgIHBsYWNlaG9sZGVyOiBnZXR0ZXh0KCdlLmcuIGpvZS5kb2VAZXhhbXBsZS5jb21gTE9DQUxJWkVgJylcbiAgfSxcbiAgYWRtaW5pc3RyYXRvclVzZXJuYW1lOiB7XG4gICAgaWQ6ICdhZG1pbmlzdHJhdG9yVXNlcm5hbWUnLFxuICAgIHZhbGlkYXRvcnM6IFtcbiAgICAgIFZhbGlkYXRvcnMucmVxdWlyZWQsXG4gICAgICBWYWxpZGF0b3JzLnBhdHRlcm4oVmFsaWRhdGlvblBhdHRlcm4ucnVsZXMudXNlci5wYXR0ZXJuKSxcbiAgICAgIFZhbGlkYXRvcnMubWF4TGVuZ3RoKDI1NilcbiAgICBdLFxuICAgIGRlZmF1bHRWYWx1ZTogbnVsbCxcbiAgICB0eXBlOiAndGV4dCcsXG4gICAgbGFiZWw6IGdldHRleHQoYEFkbWluaXN0cmF0b3IncyB1c2VybmFtZWApLFxuICAgIHBsYWNlaG9sZGVyOiBnZXR0ZXh0KCdlLmcuIGpvZWBMT0NBTElaRWAnKVxuICB9LFxuICBleHRlcm5hbFJlZmVyZW5jZToge1xuICAgIGlkOiAnZXh0ZXJuYWxSZWZlcmVuY2UnLFxuICAgIHZhbGlkYXRvcnM6IFtdLFxuICAgIGRlZmF1bHRWYWx1ZTogbnVsbCxcbiAgICB0eXBlOiAndGV4dCcsXG4gICAgbGFiZWw6IGdldHRleHQoJ0V4dGVybmFsIHJlZmVyZW5jZScpLFxuICAgIHBsYWNlaG9sZGVyOiBnZXR0ZXh0KCdlLmcuIFJFRjEyMzQ1YHJlZmVyZW5jZSBudW1iZXJgJylcbiAgfSxcbiAgc2VuZFBhc3N3b3JkUmVzZXRFbWFpbDoge1xuICAgIGlkOiAnc2VuZFBhc3N3b3JkUmVzZXRFbWFpbCcsXG4gICAgdmFsaWRhdG9yczogW10sXG4gICAgZGVmYXVsdFZhbHVlOiB0cnVlLFxuICAgIHR5cGU6ICdjaGVja2JveCcsXG4gICAgbGFiZWw6IGdldHRleHQoJ1NlbmQgcGFzc3dvcmQgcmVzZXQgbGluayBhcyBlbWFpbCcpXG4gIH0sXG4gIHRlbmFudFBvbGljeToge1xuICAgIGlkOiAndGVuYW50UG9saWN5JyxcbiAgICB2YWxpZGF0b3JzOiBbXSxcbiAgICBkZWZhdWx0VmFsdWU6IG51bGwsXG4gICAgdHlwZTogJ3NlbGVjdCcsXG4gICAgbGFiZWw6IGdldHRleHQoJ1RlbmFudCBwb2xpY3knKVxuICB9LFxuICBhbGxvd0NyZWF0ZVRlbmFudHM6IHtcbiAgICBpZDogJ2FsbG93Q3JlYXRlVGVuYW50cycsXG4gICAgdmFsaWRhdG9yczogW10sXG4gICAgZGVmYXVsdFZhbHVlOiBudWxsLFxuICAgIHR5cGU6ICdjaGVja2JveCcsXG4gICAgbGFiZWw6IGdldHRleHQoJ0FsbG93IGNyZWF0aW9uIG9mIHN1YnRlbmFudHMnKVxuICB9LFxuICBnYWluc2lnaHRFbmFibGVkOiB7XG4gICAgaWQ6ICdnYWluc2lnaHRFbmFibGVkJyxcbiAgICB2YWxpZGF0b3JzOiBbXSxcbiAgICBkZWZhdWx0VmFsdWU6IGZhbHNlLFxuICAgIHR5cGU6ICdjaGVja2JveCcsXG4gICAgbGFiZWw6IGdldHRleHQoJ0VuYWJsZSBHYWluc2lnaHQgcHJvZHVjdCBleHBlcmllbmNlIHRyYWNraW5nJylcbiAgfVxufSBzYXRpc2ZpZXMgUmVjb3JkPHN0cmluZywgVGVuYW50UHJvcGVydHlEZWZpbml0aW9uPjtcblxudHlwZSBUZW5hbnRQcm9wZXJ0aWVzS2V5cyA9IGtleW9mIHR5cGVvZiB0ZW5hbnRQcm9wZXJ0aWVzRGVmaW5pdGlvbnM7XG5cbmV4cG9ydCBjb25zdCB0ZW5hbnRGb3JtSW5wdXRzRGVmaW5pdGlvbnM6IHtcbiAgW0sgaW4gVGVuYW50UHJvcGVydGllc0tleXNdOiBUZW5hbnRQcm9wZXJ0eURlZmluaXRpb247XG59ID0gdGVuYW50UHJvcGVydGllc0RlZmluaXRpb25zO1xuIl19