@acorex/core 7.17.19 → 7.17.21

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (51) hide show
  1. package/esm2022/config/lib/configs.service.mjs +3 -3
  2. package/esm2022/dateTime/lib/calendar.service.mjs +3 -3
  3. package/esm2022/dateTime/lib/datetime-formatter.mjs +6 -6
  4. package/esm2022/dateTime/lib/datetime.class.mjs +6 -2
  5. package/esm2022/dateTime/lib/datetime.module.mjs +4 -4
  6. package/esm2022/dateTime/lib/datetime.pipe.mjs +3 -3
  7. package/esm2022/events/lib/event.service.mjs +3 -3
  8. package/esm2022/file/lib/file-size-formatter.mjs +3 -3
  9. package/esm2022/file/lib/file.module.mjs +4 -4
  10. package/esm2022/file/lib/file.service.mjs +3 -3
  11. package/esm2022/format/lib/format.module.mjs +4 -4
  12. package/esm2022/format/lib/format.pipe.mjs +3 -3
  13. package/esm2022/format/lib/format.service.mjs +6 -6
  14. package/esm2022/image/lib/image.service.mjs +3 -3
  15. package/esm2022/pipes/lib/safe/safe.pipe.mjs +3 -3
  16. package/esm2022/platform/lib/platform.service.mjs +3 -3
  17. package/esm2022/storage/cookie-storage.service.mjs +3 -3
  18. package/esm2022/storage/local-storage.service.mjs +3 -3
  19. package/esm2022/storage/session-storage.service.mjs +3 -3
  20. package/esm2022/translation/lib/translation.module.mjs +4 -4
  21. package/esm2022/translation/lib/translator.pipe.mjs +3 -3
  22. package/esm2022/utils/lib/auto-unsubscribe.mjs +3 -3
  23. package/esm2022/validation/acorex-core-validation.mjs +5 -0
  24. package/esm2022/validation/index.mjs +6 -0
  25. package/esm2022/validation/lib/regex-validator.mjs +17 -0
  26. package/esm2022/validation/lib/required-validator.mjs +24 -0
  27. package/esm2022/validation/lib/validation.mjs +2 -0
  28. package/esm2022/validation/lib/validation.module.mjs +37 -0
  29. package/esm2022/validation/lib/validation.service.mjs +71 -0
  30. package/fesm2022/acorex-core-config.mjs +3 -3
  31. package/fesm2022/acorex-core-dateTime.mjs +21 -17
  32. package/fesm2022/acorex-core-dateTime.mjs.map +1 -1
  33. package/fesm2022/acorex-core-events.mjs +3 -3
  34. package/fesm2022/acorex-core-file.mjs +10 -10
  35. package/fesm2022/acorex-core-format.mjs +13 -13
  36. package/fesm2022/acorex-core-image.mjs +3 -3
  37. package/fesm2022/acorex-core-pipes.mjs +3 -3
  38. package/fesm2022/acorex-core-platform.mjs +3 -3
  39. package/fesm2022/acorex-core-storage.mjs +9 -9
  40. package/fesm2022/acorex-core-translation.mjs +7 -7
  41. package/fesm2022/acorex-core-utils.mjs +3 -3
  42. package/fesm2022/acorex-core-validation.mjs +150 -0
  43. package/fesm2022/acorex-core-validation.mjs.map +1 -0
  44. package/package.json +7 -1
  45. package/validation/README.md +3 -0
  46. package/validation/index.d.ts +5 -0
  47. package/validation/lib/regex-validator.d.ts +8 -0
  48. package/validation/lib/required-validator.d.ts +7 -0
  49. package/validation/lib/validation.d.ts +18 -0
  50. package/validation/lib/validation.module.d.ts +13 -0
  51. package/validation/lib/validation.service.d.ts +27 -0
@@ -0,0 +1,5 @@
1
+ /**
2
+ * Generated bundle index. Do not edit.
3
+ */
4
+ export * from './index';
5
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWNvcmV4LWNvcmUtdmFsaWRhdGlvbi5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL2xpYnMvY29yZS92YWxpZGF0aW9uL3NyYy9hY29yZXgtY29yZS12YWxpZGF0aW9uLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOztHQUVHO0FBRUgsY0FBYyxTQUFTLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIEdlbmVyYXRlZCBidW5kbGUgaW5kZXguIERvIG5vdCBlZGl0LlxuICovXG5cbmV4cG9ydCAqIGZyb20gJy4vaW5kZXgnO1xuIl19
@@ -0,0 +1,6 @@
1
+ export * from './lib/validation';
2
+ export * from './lib/regex-validator';
3
+ export * from './lib/required-validator';
4
+ export * from './lib/validation.service';
5
+ export * from './lib/validation.module';
6
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9saWJzL2NvcmUvdmFsaWRhdGlvbi9zcmMvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsY0FBYyxrQkFBa0IsQ0FBQztBQUNqQyxjQUFjLHVCQUF1QixDQUFDO0FBQ3RDLGNBQWMsMEJBQTBCLENBQUM7QUFDekMsY0FBYywwQkFBMEIsQ0FBQztBQUN6QyxjQUFjLHlCQUF5QixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0ICogZnJvbSAnLi9saWIvdmFsaWRhdGlvbic7XG5leHBvcnQgKiBmcm9tICcuL2xpYi9yZWdleC12YWxpZGF0b3InO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvcmVxdWlyZWQtdmFsaWRhdG9yJztcbmV4cG9ydCAqIGZyb20gJy4vbGliL3ZhbGlkYXRpb24uc2VydmljZSc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi92YWxpZGF0aW9uLm1vZHVsZSc7Il19
@@ -0,0 +1,17 @@
1
+ export class AXRegexValidator {
2
+ get name() {
3
+ return 'regex';
4
+ }
5
+ validate(context) {
6
+ // Convert string pattern to RegExp if necessary
7
+ const regexPattern = typeof context.pattern === 'string' ? new RegExp(context.pattern) : context.pattern;
8
+ const isValid = regexPattern.test(context.value);
9
+ return {
10
+ name: this.name,
11
+ result: isValid,
12
+ message: isValid ? '' : `The value does not match the pattern ${regexPattern}.`,
13
+ value: context.value
14
+ };
15
+ }
16
+ }
17
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVnZXgtdmFsaWRhdG9yLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9jb3JlL3ZhbGlkYXRpb24vc3JjL2xpYi9yZWdleC12YWxpZGF0b3IudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBRUEsTUFBTSxPQUFPLGdCQUFnQjtJQUV6QixJQUFJLElBQUk7UUFDSixPQUFPLE9BQU8sQ0FBQztJQUNuQixDQUFDO0lBRUQsUUFBUSxDQUFDLE9BQW9EO1FBQ3pELGdEQUFnRDtRQUNoRCxNQUFNLFlBQVksR0FBRyxPQUFPLE9BQU8sQ0FBQyxPQUFPLEtBQUssUUFBUSxDQUFDLENBQUMsQ0FBQyxJQUFJLE1BQU0sQ0FBQyxPQUFPLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxPQUFPLENBQUM7UUFFekcsTUFBTSxPQUFPLEdBQUcsWUFBWSxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDakQsT0FBTztZQUNILElBQUksRUFBRSxJQUFJLENBQUMsSUFBSTtZQUNmLE1BQU0sRUFBRSxPQUFPO1lBQ2YsT0FBTyxFQUFFLE9BQU8sQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyx3Q0FBd0MsWUFBWSxHQUFHO1lBQy9FLEtBQUssRUFBRSxPQUFPLENBQUMsS0FBSztTQUN2QixDQUFDO0lBQ04sQ0FBQztDQUVKIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQVhWYWxpZGF0aW9uUnVsZSwgQVhWYWxpZGF0aW9uUnVsZVJlc3VsdCB9IGZyb20gXCIuL3ZhbGlkYXRpb25cIjtcblxuZXhwb3J0IGNsYXNzIEFYUmVnZXhWYWxpZGF0b3IgaW1wbGVtZW50cyBBWFZhbGlkYXRpb25SdWxlIHtcblxuICAgIGdldCBuYW1lKCk6IHN0cmluZyB7XG4gICAgICAgIHJldHVybiAncmVnZXgnO1xuICAgIH1cblxuICAgIHZhbGlkYXRlKGNvbnRleHQ6IHsgdmFsdWU6IHN0cmluZywgcGF0dGVybjogc3RyaW5nIHwgUmVnRXhwIH0pOiBBWFZhbGlkYXRpb25SdWxlUmVzdWx0IHtcbiAgICAgICAgLy8gQ29udmVydCBzdHJpbmcgcGF0dGVybiB0byBSZWdFeHAgaWYgbmVjZXNzYXJ5XG4gICAgICAgIGNvbnN0IHJlZ2V4UGF0dGVybiA9IHR5cGVvZiBjb250ZXh0LnBhdHRlcm4gPT09ICdzdHJpbmcnID8gbmV3IFJlZ0V4cChjb250ZXh0LnBhdHRlcm4pIDogY29udGV4dC5wYXR0ZXJuO1xuXG4gICAgICAgIGNvbnN0IGlzVmFsaWQgPSByZWdleFBhdHRlcm4udGVzdChjb250ZXh0LnZhbHVlKTtcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIG5hbWU6IHRoaXMubmFtZSxcbiAgICAgICAgICAgIHJlc3VsdDogaXNWYWxpZCxcbiAgICAgICAgICAgIG1lc3NhZ2U6IGlzVmFsaWQgPyAnJyA6IGBUaGUgdmFsdWUgZG9lcyBub3QgbWF0Y2ggdGhlIHBhdHRlcm4gJHtyZWdleFBhdHRlcm59LmAsXG4gICAgICAgICAgICB2YWx1ZTogY29udGV4dC52YWx1ZVxuICAgICAgICB9O1xuICAgIH1cblxufSJdfQ==
@@ -0,0 +1,24 @@
1
+ import { find, isArray, isEmpty, isNull, isNumber, isString, isUndefined } from "lodash-es";
2
+ export class AXRequiredValidator {
3
+ get name() {
4
+ return 'required';
5
+ }
6
+ validate(context) {
7
+ const rules = [
8
+ { test: val => isNull(val) || isUndefined(val) },
9
+ { test: val => isString(val) && isEmpty(val.trim()) },
10
+ { test: val => isNumber(val) && isNaN(val) },
11
+ { test: val => isArray(val) && isEmpty(val) }
12
+ ];
13
+ const failedRule = find(rules, rule => rule.test(context.value));
14
+ const isValid = !failedRule;
15
+ const message = failedRule ? "This filed is required" : null;
16
+ return {
17
+ name: this.name,
18
+ result: isValid,
19
+ message: message,
20
+ value: context.value
21
+ };
22
+ }
23
+ }
24
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVxdWlyZWQtdmFsaWRhdG9yLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9jb3JlL3ZhbGlkYXRpb24vc3JjL2xpYi9yZXF1aXJlZC12YWxpZGF0b3IudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLElBQUksRUFBRSxPQUFPLEVBQUUsT0FBTyxFQUFFLE1BQU0sRUFBRSxRQUFRLEVBQUUsUUFBUSxFQUFFLFdBQVcsRUFBRSxNQUFNLFdBQVcsQ0FBQztBQUc1RixNQUFNLE9BQU8sbUJBQW1CO0lBRTVCLElBQUksSUFBSTtRQUNKLE9BQU8sVUFBVSxDQUFDO0lBQ3RCLENBQUM7SUFFRCxRQUFRLENBQUMsT0FBNEI7UUFDakMsTUFBTSxLQUFLLEdBQUc7WUFDVixFQUFFLElBQUksRUFBRSxHQUFHLENBQUMsRUFBRSxDQUFDLE1BQU0sQ0FBQyxHQUFHLENBQUMsSUFBSSxXQUFXLENBQUMsR0FBRyxDQUFDLEVBQUU7WUFDaEQsRUFBRSxJQUFJLEVBQUUsR0FBRyxDQUFDLEVBQUUsQ0FBQyxRQUFRLENBQUMsR0FBRyxDQUFDLElBQUksT0FBTyxDQUFDLEdBQUcsQ0FBQyxJQUFJLEVBQUUsQ0FBQyxFQUFFO1lBQ3JELEVBQUUsSUFBSSxFQUFFLEdBQUcsQ0FBQyxFQUFFLENBQUMsUUFBUSxDQUFDLEdBQUcsQ0FBQyxJQUFJLEtBQUssQ0FBQyxHQUFHLENBQUMsRUFBRTtZQUM1QyxFQUFFLElBQUksRUFBRSxHQUFHLENBQUMsRUFBRSxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsSUFBSSxPQUFPLENBQUMsR0FBRyxDQUFDLEVBQUU7U0FDaEQsQ0FBQztRQUVGLE1BQU0sVUFBVSxHQUFHLElBQUksQ0FBQyxLQUFLLEVBQUUsSUFBSSxDQUFDLEVBQUUsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDO1FBQ2pFLE1BQU0sT0FBTyxHQUFHLENBQUMsVUFBVSxDQUFDO1FBQzVCLE1BQU0sT0FBTyxHQUFHLFVBQVUsQ0FBQyxDQUFDLENBQUMsd0JBQXdCLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQztRQUU3RCxPQUFPO1lBQ0gsSUFBSSxFQUFFLElBQUksQ0FBQyxJQUFJO1lBQ2YsTUFBTSxFQUFFLE9BQU87WUFDZixPQUFPLEVBQUUsT0FBTztZQUNoQixLQUFLLEVBQUUsT0FBTyxDQUFDLEtBQUs7U0FDdkIsQ0FBQztJQUNOLENBQUM7Q0FDSiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IGZpbmQsIGlzQXJyYXksIGlzRW1wdHksIGlzTnVsbCwgaXNOdW1iZXIsIGlzU3RyaW5nLCBpc1VuZGVmaW5lZCB9IGZyb20gXCJsb2Rhc2gtZXNcIjtcbmltcG9ydCB7IEFYVmFsaWRhdGlvblJ1bGUsIEFYVmFsaWRhdGlvblJ1bGVSZXN1bHQgfSBmcm9tIFwiLi92YWxpZGF0aW9uXCI7XG5cbmV4cG9ydCBjbGFzcyBBWFJlcXVpcmVkVmFsaWRhdG9yIGltcGxlbWVudHMgQVhWYWxpZGF0aW9uUnVsZSB7XG5cbiAgICBnZXQgbmFtZSgpOiBzdHJpbmcge1xuICAgICAgICByZXR1cm4gJ3JlcXVpcmVkJztcbiAgICB9XG5cbiAgICB2YWxpZGF0ZShjb250ZXh0OiB7IHZhbHVlPzogdW5rbm93biB9KTogQVhWYWxpZGF0aW9uUnVsZVJlc3VsdCB7XG4gICAgICAgIGNvbnN0IHJ1bGVzID0gW1xuICAgICAgICAgICAgeyB0ZXN0OiB2YWwgPT4gaXNOdWxsKHZhbCkgfHwgaXNVbmRlZmluZWQodmFsKSB9LFxuICAgICAgICAgICAgeyB0ZXN0OiB2YWwgPT4gaXNTdHJpbmcodmFsKSAmJiBpc0VtcHR5KHZhbC50cmltKCkpIH0sXG4gICAgICAgICAgICB7IHRlc3Q6IHZhbCA9PiBpc051bWJlcih2YWwpICYmIGlzTmFOKHZhbCkgfSxcbiAgICAgICAgICAgIHsgdGVzdDogdmFsID0+IGlzQXJyYXkodmFsKSAmJiBpc0VtcHR5KHZhbCkgfVxuICAgICAgICBdO1xuXG4gICAgICAgIGNvbnN0IGZhaWxlZFJ1bGUgPSBmaW5kKHJ1bGVzLCBydWxlID0+IHJ1bGUudGVzdChjb250ZXh0LnZhbHVlKSk7XG4gICAgICAgIGNvbnN0IGlzVmFsaWQgPSAhZmFpbGVkUnVsZTtcbiAgICAgICAgY29uc3QgbWVzc2FnZSA9IGZhaWxlZFJ1bGUgPyBcIlRoaXMgZmlsZWQgaXMgcmVxdWlyZWRcIiA6IG51bGw7XG5cbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIG5hbWU6IHRoaXMubmFtZSxcbiAgICAgICAgICAgIHJlc3VsdDogaXNWYWxpZCxcbiAgICAgICAgICAgIG1lc3NhZ2U6IG1lc3NhZ2UsXG4gICAgICAgICAgICB2YWx1ZTogY29udGV4dC52YWx1ZVxuICAgICAgICB9O1xuICAgIH1cbn0iXX0=
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidmFsaWRhdGlvbi5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvY29yZS92YWxpZGF0aW9uL3NyYy9saWIvdmFsaWRhdGlvbi50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0IGludGVyZmFjZSBBWFZhbGlkYXRpb25Db250ZXh0IHtcbiAgICB2YWx1ZTogdW5rbm93bixcbiAgICBba2V5OiBzdHJpbmddOiB1bmtub3duXG5cbn1cblxuZXhwb3J0IGludGVyZmFjZSBBWFZhbGlkYXRpb25SdWxlIHtcbiAgICBnZXQgbmFtZSgpOiBzdHJpbmc7XG4gICAgdmFsaWRhdGUoY29udGV4dDogQVhWYWxpZGF0aW9uQ29udGV4dCk6IEFYVmFsaWRhdGlvblJ1bGVSZXN1bHQgfCBQcm9taXNlPEFYVmFsaWRhdGlvblJ1bGVSZXN1bHQ+O1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIEFYVmFsaWRhdGlvblJ1bGVSZXN1bHQge1xuICAgIG5hbWU6IHN0cmluZztcbiAgICB2YWx1ZT86IHVua25vd247XG4gICAgbWVzc2FnZT86IHN0cmluZztcbiAgICByZXN1bHQ6IGJvb2xlYW47XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgQVhWYWxpZGF0aW9uU3VtbWFyeSB7XG4gICAgcmVzdWx0OiBib29sZWFuO1xuICAgIHJ1bGVzOiBBWFZhbGlkYXRpb25SdWxlUmVzdWx0W11cbn1cbiJdfQ==
@@ -0,0 +1,37 @@
1
+ import { APP_INITIALIZER, NgModule } from '@angular/core';
2
+ import { AXValidationRegistryService } from './validation.service';
3
+ import { AXRegexValidator } from './regex-validator';
4
+ import { AXRequiredValidator } from './required-validator';
5
+ import * as i0 from "@angular/core";
6
+ import * as i1 from "./validation.service";
7
+ export class AXValidationModule {
8
+ static forRoot(config) {
9
+ return {
10
+ ngModule: AXValidationModule,
11
+ providers: [
12
+ {
13
+ provide: APP_INITIALIZER,
14
+ useFactory: (pluginRegistry) => () => {
15
+ if (config?.validators?.length)
16
+ pluginRegistry.register(...config.validators);
17
+ },
18
+ deps: [AXValidationRegistryService],
19
+ multi: true
20
+ }
21
+ ]
22
+ };
23
+ }
24
+ constructor(pluginRegistry) {
25
+ pluginRegistry.register(new AXRegexValidator(), new AXRequiredValidator());
26
+ }
27
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.0.8", ngImport: i0, type: AXValidationModule, deps: [{ token: i1.AXValidationRegistryService }], target: i0.ɵɵFactoryTarget.NgModule }); }
28
+ static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "17.0.8", ngImport: i0, type: AXValidationModule }); }
29
+ static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "17.0.8", ngImport: i0, type: AXValidationModule }); }
30
+ }
31
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.0.8", ngImport: i0, type: AXValidationModule, decorators: [{
32
+ type: NgModule,
33
+ args: [{
34
+ imports: [],
35
+ }]
36
+ }], ctorParameters: () => [{ type: i1.AXValidationRegistryService }] });
37
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidmFsaWRhdGlvbi5tb2R1bGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9saWJzL2NvcmUvdmFsaWRhdGlvbi9zcmMvbGliL3ZhbGlkYXRpb24ubW9kdWxlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxlQUFlLEVBQXVCLFFBQVEsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUMvRSxPQUFPLEVBQUUsMkJBQTJCLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQUVuRSxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQztBQUNyRCxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQzs7O0FBTTNELE1BQU0sT0FBTyxrQkFBa0I7SUFFM0IsTUFBTSxDQUFDLE9BQU8sQ0FBQyxNQUE0QztRQUN2RCxPQUFPO1lBQ0gsUUFBUSxFQUFFLGtCQUFrQjtZQUM1QixTQUFTLEVBQUU7Z0JBQ1A7b0JBQ0ksT0FBTyxFQUFFLGVBQWU7b0JBQ3hCLFVBQVUsRUFBRSxDQUFDLGNBQTJDLEVBQUUsRUFBRSxDQUFDLEdBQUcsRUFBRTt3QkFDOUQsSUFBSSxNQUFNLEVBQUUsVUFBVSxFQUFFLE1BQU07NEJBQzFCLGNBQWMsQ0FBQyxRQUFRLENBQUMsR0FBRyxNQUFNLENBQUMsVUFBVSxDQUFDLENBQUM7b0JBQ3RELENBQUM7b0JBQ0QsSUFBSSxFQUFFLENBQUMsMkJBQTJCLENBQUM7b0JBQ25DLEtBQUssRUFBRSxJQUFJO2lCQUNkO2FBQ0o7U0FDSixDQUFDO0lBQ04sQ0FBQztJQUVELFlBQVksY0FBMkM7UUFDbkQsY0FBYyxDQUFDLFFBQVEsQ0FBQyxJQUFJLGdCQUFnQixFQUFFLEVBQUUsSUFBSSxtQkFBbUIsRUFBRSxDQUFDLENBQUE7SUFDOUUsQ0FBQzs4R0FyQlEsa0JBQWtCOytHQUFsQixrQkFBa0I7K0dBQWxCLGtCQUFrQjs7MkZBQWxCLGtCQUFrQjtrQkFIOUIsUUFBUTttQkFBQztvQkFDTixPQUFPLEVBQUUsRUFBRTtpQkFDZCIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEFQUF9JTklUSUFMSVpFUiwgTW9kdWxlV2l0aFByb3ZpZGVycywgTmdNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEFYVmFsaWRhdGlvblJlZ2lzdHJ5U2VydmljZSB9IGZyb20gJy4vdmFsaWRhdGlvbi5zZXJ2aWNlJztcbmltcG9ydCB7IEFYVmFsaWRhdGlvblJ1bGUgfSBmcm9tICcuL3ZhbGlkYXRpb24nO1xuaW1wb3J0IHsgQVhSZWdleFZhbGlkYXRvciB9IGZyb20gJy4vcmVnZXgtdmFsaWRhdG9yJztcbmltcG9ydCB7IEFYUmVxdWlyZWRWYWxpZGF0b3IgfSBmcm9tICcuL3JlcXVpcmVkLXZhbGlkYXRvcic7XG5cblxuQE5nTW9kdWxlKHtcbiAgICBpbXBvcnRzOiBbXSxcbn0pXG5leHBvcnQgY2xhc3MgQVhWYWxpZGF0aW9uTW9kdWxlIHtcblxuICAgIHN0YXRpYyBmb3JSb290KGNvbmZpZz86IHsgdmFsaWRhdG9ycz86IEFYVmFsaWRhdGlvblJ1bGVbXSB9KTogTW9kdWxlV2l0aFByb3ZpZGVyczxBWFZhbGlkYXRpb25Nb2R1bGU+IHtcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIG5nTW9kdWxlOiBBWFZhbGlkYXRpb25Nb2R1bGUsXG4gICAgICAgICAgICBwcm92aWRlcnM6IFtcbiAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgIHByb3ZpZGU6IEFQUF9JTklUSUFMSVpFUixcbiAgICAgICAgICAgICAgICAgICAgdXNlRmFjdG9yeTogKHBsdWdpblJlZ2lzdHJ5OiBBWFZhbGlkYXRpb25SZWdpc3RyeVNlcnZpY2UpID0+ICgpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChjb25maWc/LnZhbGlkYXRvcnM/Lmxlbmd0aClcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBwbHVnaW5SZWdpc3RyeS5yZWdpc3RlciguLi5jb25maWcudmFsaWRhdG9ycyk7XG4gICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgIGRlcHM6IFtBWFZhbGlkYXRpb25SZWdpc3RyeVNlcnZpY2VdLFxuICAgICAgICAgICAgICAgICAgICBtdWx0aTogdHJ1ZVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIF1cbiAgICAgICAgfTtcbiAgICB9XG5cbiAgICBjb25zdHJ1Y3RvcihwbHVnaW5SZWdpc3RyeTogQVhWYWxpZGF0aW9uUmVnaXN0cnlTZXJ2aWNlKSB7XG4gICAgICAgIHBsdWdpblJlZ2lzdHJ5LnJlZ2lzdGVyKG5ldyBBWFJlZ2V4VmFsaWRhdG9yKCksIG5ldyBBWFJlcXVpcmVkVmFsaWRhdG9yKCkpXG4gICAgfVxufVxuIl19
@@ -0,0 +1,71 @@
1
+ import { Injectable } from "@angular/core";
2
+ import { AXTranslator } from "@acorex/core/translation";
3
+ import * as i0 from "@angular/core";
4
+ export class AXValidationRegistryService {
5
+ constructor() {
6
+ this.plugins = [];
7
+ }
8
+ register(...plugin) {
9
+ this.plugins.push(...plugin.filter(p => !this.plugins.some(c => c.name == p.name)));
10
+ }
11
+ get validators() {
12
+ return this.plugins;
13
+ }
14
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.0.8", ngImport: i0, type: AXValidationRegistryService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
15
+ static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "17.0.8", ngImport: i0, type: AXValidationRegistryService, providedIn: 'root' }); }
16
+ }
17
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.0.8", ngImport: i0, type: AXValidationRegistryService, decorators: [{
18
+ type: Injectable,
19
+ args: [{
20
+ providedIn: 'root'
21
+ }]
22
+ }] });
23
+ export class AXValidationService {
24
+ constructor(pluginRegistry) {
25
+ this.pluginRegistry = pluginRegistry;
26
+ }
27
+ validate(name, context) {
28
+ const validator = this.pluginRegistry.validators.find((c) => c.name == name);
29
+ if (!validator) {
30
+ return {
31
+ name: name,
32
+ result: false,
33
+ message: AXTranslator.get('validation.messages.invalid-rull-name'),
34
+ value: context.value
35
+ };
36
+ }
37
+ return validator.validate(context);
38
+ }
39
+ chain(value) {
40
+ return new AXValidationRuleChain(this, value);
41
+ }
42
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.0.8", ngImport: i0, type: AXValidationService, deps: [{ token: AXValidationRegistryService }], target: i0.ɵɵFactoryTarget.Injectable }); }
43
+ static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "17.0.8", ngImport: i0, type: AXValidationService, providedIn: 'root' }); }
44
+ }
45
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.0.8", ngImport: i0, type: AXValidationService, decorators: [{
46
+ type: Injectable,
47
+ args: [{ providedIn: 'root' }]
48
+ }], ctorParameters: () => [{ type: AXValidationRegistryService }] });
49
+ class AXValidationRuleChain {
50
+ constructor(validationService, initialValue) {
51
+ this.validationService = validationService;
52
+ this.initialValue = initialValue;
53
+ this.rules = [];
54
+ this.validationSummary = { result: true, rules: [] };
55
+ }
56
+ addRule(name, context) {
57
+ this.rules.push({ name, context: { ...context, value: this.initialValue } });
58
+ return this;
59
+ }
60
+ async execute() {
61
+ for (const rule of this.rules) {
62
+ const result = await this.validationService.validate(rule.name, rule.context);
63
+ this.validationSummary.rules.push(result);
64
+ if (!result.result) {
65
+ this.validationSummary.result = false;
66
+ }
67
+ }
68
+ return this.validationSummary;
69
+ }
70
+ }
71
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidmFsaWRhdGlvbi5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9jb3JlL3ZhbGlkYXRpb24vc3JjL2xpYi92YWxpZGF0aW9uLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUUzQyxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sMEJBQTBCLENBQUM7O0FBS3hELE1BQU0sT0FBTywyQkFBMkI7SUFIeEM7UUFJWSxZQUFPLEdBQXVCLEVBQUUsQ0FBQztLQVM1QztJQVBHLFFBQVEsQ0FBQyxHQUFHLE1BQTBCO1FBQ2xDLElBQUksQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLEdBQUcsTUFBTSxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsSUFBSSxJQUFJLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDeEYsQ0FBQztJQUVELElBQUksVUFBVTtRQUNWLE9BQU8sSUFBSSxDQUFDLE9BQU8sQ0FBQztJQUN4QixDQUFDOzhHQVRRLDJCQUEyQjtrSEFBM0IsMkJBQTJCLGNBRnhCLE1BQU07OzJGQUVULDJCQUEyQjtrQkFIdkMsVUFBVTttQkFBQztvQkFDUixVQUFVLEVBQUUsTUFBTTtpQkFDckI7O0FBY0QsTUFBTSxPQUFPLG1CQUFtQjtJQUM1QixZQUNZLGNBQTJDO1FBQTNDLG1CQUFjLEdBQWQsY0FBYyxDQUE2QjtJQUNuRCxDQUFDO0lBRUwsUUFBUSxDQUFDLElBQVksRUFBRSxPQUE0QjtRQUMvQyxNQUFNLFNBQVMsR0FBRyxJQUFJLENBQUMsY0FBYyxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxJQUFJLElBQUksSUFBSSxDQUFDLENBQUM7UUFDN0UsSUFBSSxDQUFDLFNBQVMsRUFBRTtZQUNaLE9BQU87Z0JBQ0gsSUFBSSxFQUFFLElBQUk7Z0JBQ1YsTUFBTSxFQUFFLEtBQUs7Z0JBQ2IsT0FBTyxFQUFFLFlBQVksQ0FBQyxHQUFHLENBQUMsdUNBQXVDLENBQUM7Z0JBQ2xFLEtBQUssRUFBRSxPQUFPLENBQUMsS0FBSzthQUN2QixDQUFDO1NBQ0w7UUFDRCxPQUFPLFNBQVMsQ0FBQyxRQUFRLENBQUMsT0FBTyxDQUFDLENBQUM7SUFDdkMsQ0FBQztJQUdELEtBQUssQ0FBQyxLQUFjO1FBQ2hCLE9BQU8sSUFBSSxxQkFBcUIsQ0FBQyxJQUFJLEVBQUUsS0FBSyxDQUFDLENBQUM7SUFDbEQsQ0FBQzs4R0FyQlEsbUJBQW1CO2tIQUFuQixtQkFBbUIsY0FETixNQUFNOzsyRkFDbkIsbUJBQW1CO2tCQUQvQixVQUFVO21CQUFDLEVBQUUsVUFBVSxFQUFFLE1BQU0sRUFBRTs7QUF5QmxDLE1BQU0scUJBQXFCO0lBSXZCLFlBQW9CLGlCQUFzQyxFQUFVLFlBQXFCO1FBQXJFLHNCQUFpQixHQUFqQixpQkFBaUIsQ0FBcUI7UUFBVSxpQkFBWSxHQUFaLFlBQVksQ0FBUztRQUhqRixVQUFLLEdBQXFELEVBQUUsQ0FBQztRQUM3RCxzQkFBaUIsR0FBd0IsRUFBRSxNQUFNLEVBQUUsSUFBSSxFQUFFLEtBQUssRUFBRSxFQUFFLEVBQUUsQ0FBQztJQUVnQixDQUFDO0lBRTlGLE9BQU8sQ0FBQyxJQUFZLEVBQUUsT0FBNEM7UUFDOUQsSUFBSSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsRUFBRSxJQUFJLEVBQUUsT0FBTyxFQUFFLEVBQUUsR0FBRyxPQUFPLEVBQUUsS0FBSyxFQUFFLElBQUksQ0FBQyxZQUFZLEVBQUUsRUFBRSxDQUFDLENBQUM7UUFDN0UsT0FBTyxJQUFJLENBQUM7SUFDaEIsQ0FBQztJQUVELEtBQUssQ0FBQyxPQUFPO1FBQ1QsS0FBSyxNQUFNLElBQUksSUFBSSxJQUFJLENBQUMsS0FBSyxFQUFFO1lBQzNCLE1BQU0sTUFBTSxHQUFHLE1BQU0sSUFBSSxDQUFDLGlCQUFpQixDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsSUFBSSxFQUFFLElBQUksQ0FBQyxPQUFPLENBQUMsQ0FBQztZQUM5RSxJQUFJLENBQUMsaUJBQWlCLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQztZQUMxQyxJQUFJLENBQUMsTUFBTSxDQUFDLE1BQU0sRUFBRTtnQkFDaEIsSUFBSSxDQUFDLGlCQUFpQixDQUFDLE1BQU0sR0FBRyxLQUFLLENBQUM7YUFDekM7U0FDSjtRQUNELE9BQU8sSUFBSSxDQUFDLGlCQUFpQixDQUFDO0lBQ2xDLENBQUM7Q0FDSiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdGFibGUgfSBmcm9tIFwiQGFuZ3VsYXIvY29yZVwiO1xuaW1wb3J0IHsgQVhWYWxpZGF0aW9uUnVsZSwgQVhWYWxpZGF0aW9uQ29udGV4dCwgQVhWYWxpZGF0aW9uUnVsZVJlc3VsdCwgQVhWYWxpZGF0aW9uU3VtbWFyeSB9IGZyb20gXCIuL3ZhbGlkYXRpb25cIjtcbmltcG9ydCB7IEFYVHJhbnNsYXRvciB9IGZyb20gXCJAYWNvcmV4L2NvcmUvdHJhbnNsYXRpb25cIjtcblxuQEluamVjdGFibGUoe1xuICAgIHByb3ZpZGVkSW46ICdyb290J1xufSlcbmV4cG9ydCBjbGFzcyBBWFZhbGlkYXRpb25SZWdpc3RyeVNlcnZpY2Uge1xuICAgIHByaXZhdGUgcGx1Z2luczogQVhWYWxpZGF0aW9uUnVsZVtdID0gW107XG5cbiAgICByZWdpc3RlciguLi5wbHVnaW46IEFYVmFsaWRhdGlvblJ1bGVbXSkge1xuICAgICAgICB0aGlzLnBsdWdpbnMucHVzaCguLi5wbHVnaW4uZmlsdGVyKHAgPT4gIXRoaXMucGx1Z2lucy5zb21lKGMgPT4gYy5uYW1lID09IHAubmFtZSkpKTtcbiAgICB9XG5cbiAgICBnZXQgdmFsaWRhdG9ycygpOiBBWFZhbGlkYXRpb25SdWxlW10ge1xuICAgICAgICByZXR1cm4gdGhpcy5wbHVnaW5zO1xuICAgIH1cbn1cblxuQEluamVjdGFibGUoeyBwcm92aWRlZEluOiAncm9vdCcgfSlcbmV4cG9ydCBjbGFzcyBBWFZhbGlkYXRpb25TZXJ2aWNlIHtcbiAgICBjb25zdHJ1Y3RvcihcbiAgICAgICAgcHJpdmF0ZSBwbHVnaW5SZWdpc3RyeTogQVhWYWxpZGF0aW9uUmVnaXN0cnlTZXJ2aWNlXG4gICAgKSB7IH1cblxuICAgIHZhbGlkYXRlKG5hbWU6IHN0cmluZywgY29udGV4dDogQVhWYWxpZGF0aW9uQ29udGV4dCk6IEFYVmFsaWRhdGlvblJ1bGVSZXN1bHQgfCBQcm9taXNlPEFYVmFsaWRhdGlvblJ1bGVSZXN1bHQ+IHtcbiAgICAgICAgY29uc3QgdmFsaWRhdG9yID0gdGhpcy5wbHVnaW5SZWdpc3RyeS52YWxpZGF0b3JzLmZpbmQoKGMpID0+IGMubmFtZSA9PSBuYW1lKTtcbiAgICAgICAgaWYgKCF2YWxpZGF0b3IpIHtcbiAgICAgICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICAgICAgbmFtZTogbmFtZSxcbiAgICAgICAgICAgICAgICByZXN1bHQ6IGZhbHNlLFxuICAgICAgICAgICAgICAgIG1lc3NhZ2U6IEFYVHJhbnNsYXRvci5nZXQoJ3ZhbGlkYXRpb24ubWVzc2FnZXMuaW52YWxpZC1ydWxsLW5hbWUnKSxcbiAgICAgICAgICAgICAgICB2YWx1ZTogY29udGV4dC52YWx1ZVxuICAgICAgICAgICAgfTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gdmFsaWRhdG9yLnZhbGlkYXRlKGNvbnRleHQpO1xuICAgIH1cblxuXG4gICAgY2hhaW4odmFsdWU6IHVua25vd24pIHtcbiAgICAgICAgcmV0dXJuIG5ldyBBWFZhbGlkYXRpb25SdWxlQ2hhaW4odGhpcywgdmFsdWUpO1xuICAgIH1cbn1cblxuY2xhc3MgQVhWYWxpZGF0aW9uUnVsZUNoYWluIHtcbiAgICBwcml2YXRlIHJ1bGVzOiB7IG5hbWU6IHN0cmluZywgY29udGV4dDogQVhWYWxpZGF0aW9uQ29udGV4dCB9W10gPSBbXTtcbiAgICBwcml2YXRlIHZhbGlkYXRpb25TdW1tYXJ5OiBBWFZhbGlkYXRpb25TdW1tYXJ5ID0geyByZXN1bHQ6IHRydWUsIHJ1bGVzOiBbXSB9O1xuXG4gICAgY29uc3RydWN0b3IocHJpdmF0ZSB2YWxpZGF0aW9uU2VydmljZTogQVhWYWxpZGF0aW9uU2VydmljZSwgcHJpdmF0ZSBpbml0aWFsVmFsdWU6IHVua25vd24pIHsgfVxuXG4gICAgYWRkUnVsZShuYW1lOiBzdHJpbmcsIGNvbnRleHQ/OiBPbWl0PEFYVmFsaWRhdGlvbkNvbnRleHQsICd2YWx1ZSc+KTogQVhWYWxpZGF0aW9uUnVsZUNoYWluIHtcbiAgICAgICAgdGhpcy5ydWxlcy5wdXNoKHsgbmFtZSwgY29udGV4dDogeyAuLi5jb250ZXh0LCB2YWx1ZTogdGhpcy5pbml0aWFsVmFsdWUgfSB9KTtcbiAgICAgICAgcmV0dXJuIHRoaXM7XG4gICAgfVxuXG4gICAgYXN5bmMgZXhlY3V0ZSgpOiBQcm9taXNlPEFYVmFsaWRhdGlvblN1bW1hcnk+IHtcbiAgICAgICAgZm9yIChjb25zdCBydWxlIG9mIHRoaXMucnVsZXMpIHtcbiAgICAgICAgICAgIGNvbnN0IHJlc3VsdCA9IGF3YWl0IHRoaXMudmFsaWRhdGlvblNlcnZpY2UudmFsaWRhdGUocnVsZS5uYW1lLCBydWxlLmNvbnRleHQpO1xuICAgICAgICAgICAgdGhpcy52YWxpZGF0aW9uU3VtbWFyeS5ydWxlcy5wdXNoKHJlc3VsdCk7XG4gICAgICAgICAgICBpZiAoIXJlc3VsdC5yZXN1bHQpIHtcbiAgICAgICAgICAgICAgICB0aGlzLnZhbGlkYXRpb25TdW1tYXJ5LnJlc3VsdCA9IGZhbHNlO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIHJldHVybiB0aGlzLnZhbGlkYXRpb25TdW1tYXJ5O1xuICAgIH1cbn1cbiJdfQ==
@@ -23,10 +23,10 @@ class AXConfigService {
23
23
  const v2 = this.injector.get(providerToken);
24
24
  return get(v2, parts[parts.length - 1], defaultValue);
25
25
  }
26
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.0.7", ngImport: i0, type: AXConfigService, deps: [{ token: i0.Injector }], target: i0.ɵɵFactoryTarget.Injectable }); }
27
- static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "17.0.7", ngImport: i0, type: AXConfigService, providedIn: 'root' }); }
26
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.0.8", ngImport: i0, type: AXConfigService, deps: [{ token: i0.Injector }], target: i0.ɵɵFactoryTarget.Injectable }); }
27
+ static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "17.0.8", ngImport: i0, type: AXConfigService, providedIn: 'root' }); }
28
28
  }
29
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.0.7", ngImport: i0, type: AXConfigService, decorators: [{
29
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.0.8", ngImport: i0, type: AXConfigService, decorators: [{
30
30
  type: Injectable,
31
31
  args: [{ providedIn: 'root' }]
32
32
  }], ctorParameters: () => [{ type: i0.Injector }] });
@@ -39,6 +39,7 @@ class AXDateTime {
39
39
  s: () => this.date.getSeconds().toString(),
40
40
  //
41
41
  dd: () => this.pad(this.calendar.dayOfMonth(this.date), 2),
42
+ DD: () => this.pad(this.calendar.dayOfMonth(this.date), 2),
42
43
  d: () => this.calendar.dayOfMonth(this.date).toString(),
43
44
  //
44
45
  mm: () => this.pad(this.date.getMinutes(), 2),
@@ -65,6 +66,7 @@ class AXDateTime {
65
66
  //
66
67
  A: () => (this.date.getHours() < 12 ? 'am' : 'pm'),
67
68
  a: () => (this.date.getHours() < 12 ? 'am' : 'pm'),
69
+ //"date": () => this.format(this.getFormatPattern('fa-IR', 'date')),
68
70
  };
69
71
  this._calendar = calendar;
70
72
  this._date = value;
@@ -123,7 +125,9 @@ class AXDateTime {
123
125
  format(format = this.calendar.formats.dateTimeDisplay) {
124
126
  const re = new RegExp(orderBy(Object.keys(this._formatKeys), (c) => c.length, ['desc']).join('|'), 'gi');
125
127
  return format.replace(re, (matched) => {
126
- return this._formatKeys[matched]();
128
+ const f = this._formatKeys[matched];
129
+ const r = f();
130
+ return r;
127
131
  });
128
132
  }
129
133
  pad(n, width, z = '0') {
@@ -1003,10 +1007,10 @@ class AXCalendarService {
1003
1007
  const date = value instanceof AXDateTime ? value.date : value;
1004
1008
  return new AXDateTime(date, calendar);
1005
1009
  }
1006
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.0.7", ngImport: i0, type: AXCalendarService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
1007
- static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "17.0.7", ngImport: i0, type: AXCalendarService, providedIn: 'root' }); }
1010
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.0.8", ngImport: i0, type: AXCalendarService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
1011
+ static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "17.0.8", ngImport: i0, type: AXCalendarService, providedIn: 'root' }); }
1008
1012
  }
1009
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.0.7", ngImport: i0, type: AXCalendarService, decorators: [{
1013
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.0.8", ngImport: i0, type: AXCalendarService, decorators: [{
1010
1014
  type: Injectable,
1011
1015
  args: [{ providedIn: 'root' }]
1012
1016
  }], ctorParameters: () => [] });
@@ -1022,10 +1026,10 @@ class AXDateTimeFormatter {
1022
1026
  const formatStr = (args.length ? args[0] : null);
1023
1027
  return this.calendarService.create(value).format(formatStr);
1024
1028
  }
1025
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.0.7", ngImport: i0, type: AXDateTimeFormatter, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
1026
- static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "17.0.7", ngImport: i0, type: AXDateTimeFormatter }); }
1029
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.0.8", ngImport: i0, type: AXDateTimeFormatter, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
1030
+ static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "17.0.8", ngImport: i0, type: AXDateTimeFormatter }); }
1027
1031
  }
1028
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.0.7", ngImport: i0, type: AXDateTimeFormatter, decorators: [{
1032
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.0.8", ngImport: i0, type: AXDateTimeFormatter, decorators: [{
1029
1033
  type: Injectable
1030
1034
  }] });
1031
1035
  class AXTimeLeftFormatter {
@@ -1109,10 +1113,10 @@ class AXTimeLeftFormatter {
1109
1113
  return 'Invalid format';
1110
1114
  }
1111
1115
  }
1112
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.0.7", ngImport: i0, type: AXTimeLeftFormatter, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
1113
- static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "17.0.7", ngImport: i0, type: AXTimeLeftFormatter }); }
1116
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.0.8", ngImport: i0, type: AXTimeLeftFormatter, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
1117
+ static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "17.0.8", ngImport: i0, type: AXTimeLeftFormatter }); }
1114
1118
  }
1115
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.0.7", ngImport: i0, type: AXTimeLeftFormatter, decorators: [{
1119
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.0.8", ngImport: i0, type: AXTimeLeftFormatter, decorators: [{
1116
1120
  type: Injectable
1117
1121
  }] });
1118
1122
 
@@ -1136,10 +1140,10 @@ class AXDateTimePipe {
1136
1140
  return val.format(format);
1137
1141
  }
1138
1142
  }
1139
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.0.7", ngImport: i0, type: AXDateTimePipe, deps: [], target: i0.ɵɵFactoryTarget.Pipe }); }
1140
- static { this.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "14.0.0", version: "17.0.7", ngImport: i0, type: AXDateTimePipe, name: "axDate" }); }
1143
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.0.8", ngImport: i0, type: AXDateTimePipe, deps: [], target: i0.ɵɵFactoryTarget.Pipe }); }
1144
+ static { this.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "14.0.0", version: "17.0.8", ngImport: i0, type: AXDateTimePipe, name: "axDate" }); }
1141
1145
  }
1142
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.0.7", ngImport: i0, type: AXDateTimePipe, decorators: [{
1146
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.0.8", ngImport: i0, type: AXDateTimePipe, decorators: [{
1143
1147
  type: Pipe,
1144
1148
  args: [{ name: 'axDate' }]
1145
1149
  }] });
@@ -1148,11 +1152,11 @@ class AXDateTimeModule {
1148
1152
  constructor(service) {
1149
1153
  service.register(new AXDateTimeFormatter(), new AXTimeLeftFormatter());
1150
1154
  }
1151
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.0.7", ngImport: i0, type: AXDateTimeModule, deps: [{ token: i1.AXFormatterRegistryService }], target: i0.ɵɵFactoryTarget.NgModule }); }
1152
- static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "17.0.7", ngImport: i0, type: AXDateTimeModule, declarations: [AXDateTimePipe], imports: [AXFormatModule], exports: [AXDateTimePipe] }); }
1153
- static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "17.0.7", ngImport: i0, type: AXDateTimeModule, imports: [AXFormatModule] }); }
1155
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.0.8", ngImport: i0, type: AXDateTimeModule, deps: [{ token: i1.AXFormatterRegistryService }], target: i0.ɵɵFactoryTarget.NgModule }); }
1156
+ static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "17.0.8", ngImport: i0, type: AXDateTimeModule, declarations: [AXDateTimePipe], imports: [AXFormatModule], exports: [AXDateTimePipe] }); }
1157
+ static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "17.0.8", ngImport: i0, type: AXDateTimeModule, imports: [AXFormatModule] }); }
1154
1158
  }
1155
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.0.7", ngImport: i0, type: AXDateTimeModule, decorators: [{
1159
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.0.8", ngImport: i0, type: AXDateTimeModule, decorators: [{
1156
1160
  type: NgModule,
1157
1161
  args: [{
1158
1162
  imports: [AXFormatModule],