@c8y/ngx-components
Version:
Angular modules for Cumulocity IoT applications
68 lines • 10.1 kB
JavaScript
import { BytesPipe } from '../common';
import { gettext } from '../i18n';
export class FilePickerValidators {
static fileMaxSize(maxSizeBytes, filesService) {
const msg = gettext('The selected file is too large. The size limit is {{ limit }}.');
return (control) => {
if (control.value instanceof File) {
const file = control.value;
return filesService.size(file) > maxSizeBytes
? { [msg]: { limit: BytesPipe.bytes(maxSizeBytes, 1) } }
: null;
}
return null;
};
}
static fileNonEmpty(filesService) {
const msg = gettext('File must not be empty, select another one.');
return (control) => {
if (control.value instanceof File) {
const file = control.value;
return filesService.size(file) === 0 ? { [msg]: true } : null;
}
return null;
};
}
static fileNameMaxLength(filesService) {
const msg = gettext('The filename exceeds limit of {{ limit }} characters.');
const filenameLengthLimit = filesService.FILENAME_MAX_LENGTH;
return (control) => {
if (control.value instanceof File) {
const file = control.value;
return file.name.length > filenameLengthLimit
? { [msg]: { limit: filenameLengthLimit } }
: null;
}
return null;
};
}
static haveValidExtensions(filesService, accept) {
const msg = gettext('The selected file is not of a supported type. Supported file types are: {{ accept }}.');
return (control) => {
if (control.value instanceof File) {
const file = control.value;
return !filesService.haveValidExtensions([file], accept) ? { [msg]: { accept } } : null;
}
return null;
};
}
static fileCountMax(fileCountMax) {
const msg = gettext('Too many files selected. Limit: {{ fileCountMax }}.');
return (control) => {
if (Array.isArray(control.value)) {
return control.value.length > fileCountMax ? { [msg]: { fileCountMax } } : null;
}
return null;
};
}
static fileCountMin(fileCountMin) {
const msg = gettext('Requires min. {{ fileCountMin }} file(s).');
return (control) => {
if (Array.isArray(control.value)) {
return control.value.length < fileCountMin ? { [msg]: { fileCountMin } } : null;
}
return null;
};
}
}
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmlsZS1waWNrZXItdmFsaWRhdG9ycy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL2NvcmUvZmlsZS1waWNrZXItZm9ybS1jb250cm9sL2ZpbGUtcGlja2VyLXZhbGlkYXRvcnMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBZ0IsTUFBTSxXQUFXLENBQUM7QUFFcEQsT0FBTyxFQUFFLE9BQU8sRUFBRSxNQUFNLFNBQVMsQ0FBQztBQUVsQyxNQUFNLE9BQWdCLG9CQUFvQjtJQUN4QyxNQUFNLENBQUMsV0FBVyxDQUFDLFlBQW9CLEVBQUUsWUFBMEI7UUFDakUsTUFBTSxHQUFHLEdBQUcsT0FBTyxDQUFDLGdFQUFnRSxDQUFDLENBQUM7UUFFdEYsT0FBTyxDQUFDLE9BQXdCLEVBQUUsRUFBRTtZQUNsQyxJQUFJLE9BQU8sQ0FBQyxLQUFLLFlBQVksSUFBSSxFQUFFLENBQUM7Z0JBQ2xDLE1BQU0sSUFBSSxHQUFTLE9BQU8sQ0FBQyxLQUFLLENBQUM7Z0JBQ2pDLE9BQU8sWUFBWSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsR0FBRyxZQUFZO29CQUMzQyxDQUFDLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxFQUFFLEVBQUUsS0FBSyxFQUFFLFNBQVMsQ0FBQyxLQUFLLENBQUMsWUFBWSxFQUFFLENBQUMsQ0FBQyxFQUFFLEVBQUU7b0JBQ3hELENBQUMsQ0FBQyxJQUFJLENBQUM7WUFDWCxDQUFDO1lBQ0QsT0FBTyxJQUFJLENBQUM7UUFDZCxDQUFDLENBQUM7SUFDSixDQUFDO0lBRUQsTUFBTSxDQUFDLFlBQVksQ0FBQyxZQUEwQjtRQUM1QyxNQUFNLEdBQUcsR0FBRyxPQUFPLENBQUMsNkNBQTZDLENBQUMsQ0FBQztRQUVuRSxPQUFPLENBQUMsT0FBd0IsRUFBRSxFQUFFO1lBQ2xDLElBQUksT0FBTyxDQUFDLEtBQUssWUFBWSxJQUFJLEVBQUUsQ0FBQztnQkFDbEMsTUFBTSxJQUFJ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QztDQUNGIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQnl0ZXNQaXBlLCBGaWxlc1NlcnZpY2UgfSBmcm9tICcuLi9jb21tb24nO1xuaW1wb3J0IHsgQWJzdHJhY3RDb250cm9sLCBWYWxpZGF0b3JGbiB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcbmltcG9ydCB7IGdldHRleHQgfSBmcm9tICcuLi9pMThuJztcblxuZXhwb3J0IGFic3RyYWN0IGNsYXNzIEZpbGVQaWNrZXJWYWxpZGF0b3JzIHtcbiAgc3RhdGljIGZpbGVNYXhTaXplKG1heFNpemVCeXRlczogbnVtYmVyLCBmaWxlc1NlcnZpY2U6IEZpbGVzU2VydmljZSk6IFZhbGlkYXRvckZuIHtcbiAgICBjb25zdCBtc2cgPSBnZXR0ZXh0KCdUaGUgc2VsZWN0ZWQgZmlsZSBpcyB0b28gbGFyZ2UuIFRoZSBzaXplIGxpbWl0IGlzIHt7IGxpbWl0IH19LicpO1xuXG4gICAgcmV0dXJuIChjb250cm9sOiBBYnN0cmFjdENvbnRyb2wpID0+IHtcbiAgICAgIGlmIChjb250cm9sLnZhbHVlIGluc3RhbmNlb2YgRmlsZSkge1xuICAgICAgICBjb25zdCBmaWxlOiBGaWxlID0gY29udHJvbC52YWx1ZTtcbiAgICAgICAgcmV0dXJuIGZpbGVzU2VydmljZS5zaXplKGZpbGUpID4gbWF4U2l6ZUJ5dGVzXG4gICAgICAgICAgPyB7IFttc2ddOiB7IGxpbWl0OiBCeXRlc1BpcGUuYnl0ZXMobWF4U2l6ZUJ5dGVzLCAxKSB9IH1cbiAgICAgICAgICA6IG51bGw7XG4gICAgICB9XG4gICAgICByZXR1cm4gbnVsbDtcbiAgICB9O1xuICB9XG5cbiAgc3RhdGljIGZpbGVOb25FbXB0eShmaWxlc1NlcnZpY2U6IEZpbGVzU2VydmljZSk6IFZhbGlkYXRvckZuIHtcbiAgICBjb25zdCBtc2cgPSBnZXR0ZXh0KCdGaWxlIG11c3Qgbm90IGJlIGVtcHR5LCBzZWxlY3QgYW5vdGhlciBvbmUuJyk7XG5cbiAgICByZXR1cm4gKGNvbnRyb2w6IEFic3RyYWN0Q29udHJvbCkgPT4ge1xuICAgICAgaWYgKGNvbnRyb2wudmFsdWUgaW5zdGFuY2VvZiBGaWxlKSB7XG4gICAgICAgIGNvbnN0IGZpbGU6IEZpbGUgPSBjb250cm9sLnZhbHVlO1xuICAgICAgICByZXR1cm4gZmlsZXNTZXJ2aWNlLnNpemUoZmlsZSkgPT09IDAgPyB7IFttc2ddOiB0cnVlIH0gOiBudWxsO1xuICAgICAgfVxuICAgICAgcmV0dXJuIG51bGw7XG4gICAgfTtcbiAgfVxuXG4gIHN0YXRpYyBmaWxlTmFtZU1heExlbmd0aChmaWxlc1NlcnZpY2U6IEZpbGVzU2VydmljZSk6IFZhbGlkYXRvckZuIHtcbiAgICBjb25zdCBtc2cgPSBnZXR0ZXh0KCdUaGUgZmlsZW5hbWUgZXhjZWVkcyBsaW1pdCBvZiB7eyBsaW1pdCB9fSBjaGFyYWN0ZXJzLicpO1xuICAgIGNvbnN0IGZpbGVuYW1lTGVuZ3RoTGltaXQgPSBmaWxlc1NlcnZpY2UuRklMRU5BTUVfTUFYX0xFTkdUSDtcblxuICAgIHJldHVybiAoY29udHJvbDogQWJzdHJhY3RDb250cm9sKSA9PiB7XG4gICAgICBpZiAoY29udHJvbC52YWx1ZSBpbnN0YW5jZW9mIEZpbGUpIHtcbiAgICAgICAgY29uc3QgZmlsZTogRmlsZSA9IGNvbnRyb2wudmFsdWU7XG4gICAgICAgIHJldHVybiBmaWxlLm5hbWUubGVuZ3RoID4gZmlsZW5hbWVMZW5ndGhMaW1pdFxuICAgICAgICAgID8geyBbbXNnXTogeyBsaW1pdDogZmlsZW5hbWVMZW5ndGhMaW1pdCB9IH1cbiAgICAgICAgICA6IG51bGw7XG4gICAgICB9XG4gICAgICByZXR1cm4gbnVsbDtcbiAgICB9O1xuICB9XG5cbiAgc3RhdGljIGhhdmVWYWxpZEV4dGVuc2lvbnMoZmlsZXNTZXJ2aWNlOiBGaWxlc1NlcnZpY2UsIGFjY2VwdDogc3RyaW5nKTogVmFsaWRhdG9yRm4ge1xuICAgIGNvbnN0IG1zZyA9IGdldHRleHQoXG4gICAgICAnVGhlIHNlbGVjdGVkIGZpbGUgaXMgbm90IG9mIGEgc3VwcG9ydGVkIHR5cGUuIFN1cHBvcnRlZCBmaWxlIHR5cGVzIGFyZToge3sgYWNjZXB0IH19LidcbiAgICApO1xuXG4gICAgcmV0dXJuIChjb250cm9sOiBBYnN0cmFjdENvbnRyb2wpID0+IHtcbiAgICAgIGlmIChjb250cm9sLnZhbHVlIGluc3RhbmNlb2YgRmlsZSkge1xuICAgICAgICBjb25zdCBmaWxlOiBGaWxlID0gY29udHJvbC52YWx1ZTtcbiAgICAgICAgcmV0dXJuICFmaWxlc1NlcnZpY2UuaGF2ZVZhbGlkRXh0ZW5zaW9ucyhbZmlsZV0sIGFjY2VwdCkgPyB7IFttc2ddOiB7IGFjY2VwdCB9IH0gOiBudWxsO1xuICAgICAgfVxuICAgICAgcmV0dXJuIG51bGw7XG4gICAgfTtcbiAgfVxuXG4gIHN0YXRpYyBmaWxlQ291bnRNYXgoZmlsZUNvdW50TWF4OiBudW1iZXIpOiBWYWxpZGF0b3JGbiB7XG4gICAgY29uc3QgbXNnID0gZ2V0dGV4dCgnVG9vIG1hbnkgZmlsZXMgc2VsZWN0ZWQuIExpbWl0OiB7eyBmaWxlQ291bnRNYXggfX0uJyk7XG5cbiAgICByZXR1cm4gKGNvbnRyb2w6IEFic3RyYWN0Q29udHJvbCkgPT4ge1xuICAgICAgaWYgKEFycmF5LmlzQXJyYXkoY29udHJvbC52YWx1ZSkpIHtcbiAgICAgICAgcmV0dXJuIGNvbnRyb2wudmFsdWUubGVuZ3RoID4gZmlsZUNvdW50TWF4ID8geyBbbXNnXTogeyBmaWxlQ291bnRNYXggfSB9IDogbnVsbDtcbiAgICAgIH1cbiAgICAgIHJldHVybiBudWxsO1xuICAgIH07XG4gIH1cblxuICBzdGF0aWMgZmlsZUNvdW50TWluKGZpbGVDb3VudE1pbjogbnVtYmVyKTogVmFsaWRhdG9yRm4ge1xuICAgIGNvbnN0IG1zZyA9IGdldHRleHQoJ1JlcXVpcmVzIG1pbi4ge3sgZmlsZUNvdW50TWluIH19IGZpbGUocykuJyk7XG5cbiAgICByZXR1cm4gKGNvbnRyb2w6IEFic3RyYWN0Q29udHJvbCkgPT4ge1xuICAgICAgaWYgKEFycmF5LmlzQXJyYXkoY29udHJvbC52YWx1ZSkpIHtcbiAgICAgICAgcmV0dXJuIGNvbnRyb2wudmFsdWUubGVuZ3RoIDwgZmlsZUNvdW50TWluID8geyBbbXNnXTogeyBmaWxlQ291bnRNaW4gfSB9IDogbnVsbDtcbiAgICAgIH1cbiAgICAgIHJldHVybiBudWxsO1xuICAgIH07XG4gIH1cbn1cbiJdfQ==