@sd-angular/core 1.0.38 → 1.0.41

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 (35) hide show
  1. package/bundles/sd-angular-core-form.umd.js +2 -0
  2. package/bundles/sd-angular-core-form.umd.js.map +1 -1
  3. package/bundles/sd-angular-core-form.umd.min.js +1 -1
  4. package/bundles/sd-angular-core-form.umd.min.js.map +1 -1
  5. package/bundles/sd-angular-core-input-currency.umd.js +2 -2
  6. package/bundles/sd-angular-core-input-currency.umd.js.map +1 -1
  7. package/bundles/sd-angular-core-input-currency.umd.min.js +1 -1
  8. package/bundles/sd-angular-core-input-currency.umd.min.js.map +1 -1
  9. package/bundles/sd-angular-core-input.umd.js +33 -10
  10. package/bundles/sd-angular-core-input.umd.js.map +1 -1
  11. package/bundles/sd-angular-core-input.umd.min.js +2 -2
  12. package/bundles/sd-angular-core-input.umd.min.js.map +1 -1
  13. package/bundles/sd-angular-core-utility.umd.js +3 -0
  14. package/bundles/sd-angular-core-utility.umd.js.map +1 -1
  15. package/bundles/sd-angular-core-utility.umd.min.js +1 -1
  16. package/bundles/sd-angular-core-utility.umd.min.js.map +1 -1
  17. package/esm2015/form/src/lib/form.module.js +4 -1
  18. package/esm2015/input/src/lib/input.component.js +25 -7
  19. package/esm2015/input/src/lib/input.module.js +4 -2
  20. package/esm2015/input-currency/src/lib/input-currency.component.js +3 -3
  21. package/esm2015/utility/src/lib/utility.service.js +4 -1
  22. package/fesm2015/sd-angular-core-form.js +3 -1
  23. package/fesm2015/sd-angular-core-form.js.map +1 -1
  24. package/fesm2015/sd-angular-core-input-currency.js +2 -2
  25. package/fesm2015/sd-angular-core-input-currency.js.map +1 -1
  26. package/fesm2015/sd-angular-core-input.js +27 -7
  27. package/fesm2015/sd-angular-core-input.js.map +1 -1
  28. package/fesm2015/sd-angular-core-utility.js +3 -0
  29. package/fesm2015/sd-angular-core-utility.js.map +1 -1
  30. package/form/sd-angular-core-form.metadata.json +1 -1
  31. package/input/sd-angular-core-input.metadata.json +1 -1
  32. package/input/src/lib/input.component.d.ts +7 -1
  33. package/package.json +1 -1
  34. package/{sd-angular-core-1.0.38.tgz → sd-angular-core-1.0.41.tgz} +0 -0
  35. package/utility/src/lib/utility.service.d.ts +1 -0
@@ -112,6 +112,9 @@ export class SdUtilityService {
112
112
  link.click();
113
113
  document.body.removeChild(link);
114
114
  };
115
+ this.copyToClipboard = (text) => {
116
+ navigator.clipboard.writeText(text);
117
+ };
115
118
  }
116
119
  }
117
120
  _uploadId = new WeakMap(), _translate = new WeakMap();
@@ -122,4 +125,4 @@ SdUtilityService.decorators = [
122
125
  },] }
123
126
  ];
124
127
  SdUtilityService.ctorParameters = () => [];
125
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXRpbGl0eS5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IkM6L1VzZXJzL25naGlhdHQxNS9EZXNrdG9wL1dvcmtpbmcvMU1HL2xpYi1jb3JlLXVpL3Byb2plY3RzL3NkLWNvcmUvdXRpbGl0eS8iLCJzb3VyY2VzIjpbInNyYy9saWIvdXRpbGl0eS5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7O0FBQUEsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUMzQyxPQUFPLEdBQUcsTUFBTSxLQUFLLENBQUM7QUFDdEIsT0FBTyxDQUFDLE1BQU0sUUFBUSxDQUFDO0FBQ3ZCLE9BQU8sS0FBSyxJQUFJLE1BQU0sTUFBTSxDQUFDOztBQUs3QixNQUFNLE9BQU8sZ0JBQWdCO0lBRzNCO1FBRkEsb0JBQVksdUNBQXVDLEVBQUM7UUFHcEQscUJBQWEsQ0FBQyxLQUFhLEVBQUUsRUFBRSxDQUFDLEtBQUssRUFBQztRQUV0QyxZQUFPLEdBQUcsQ0FBQyxHQUFXLEVBQUUsRUFBRSxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsQ0FBQztRQUVwQyxrQkFBYSxHQUFHLENBQUksS0FBVSxFQUFFLEdBQVcsRUFBd0IsRUFBRTtZQUNuRSxPQUFPLEtBQUssQ0FBQyxNQUFNLENBQUMsQ0FBQyxHQUFHLEVBQUUsSUFBSSxFQUFFLEVBQUUsR0FBRyxHQUFHLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDLEdBQUcsSUFBSSxDQUFDLENBQUMsT0FBTyxHQUFHLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUM7UUFDakYsQ0FBQyxDQUFBO1FBRUQseUJBQW9CLEdBQUcsQ0FBQyxLQUFhLEVBQUUsRUFBRTs7WUFDdkMsSUFBSSxHQUFHLFNBQUcsS0FBSyxhQUFMLEtBQUssdUJBQUwsS0FBSyxDQUFFLFFBQVEscUNBQU0sRUFBRSxDQUFDO1lBQ2xDLEdBQUcsR0FBRyxHQUFHLENBQUMsUUFBUSxFQUFFLENBQUMsV0FBVyxFQUFFLENBQUM7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QyxNQUFNLElBQUksS0FBSyxDQUFDLE9BQU8sQ0FBQyxDQUFDO2lDQUMxQjs2QkFDRjs0QkFDRCxPQUFPLENBQUMsSUFBSSxDQUFDLENBQUM7eUJBQ2Y7cUJBQ0Y7b0JBQUMsT0FBTyxLQUFLLEVBQUU7d0JBQ2QsTUFBTSxDQUFDLEtBQUssQ0FBQyxDQUFDO3FCQUNmO2dCQUNILENBQUMsQ0FBQyxDQUFDO2dCQUNILENBQUMsQ0FBQyxJQUFJLHVDQUFjLEVBQUUsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxPQUFPLENBQUMsQ0FBQztZQUMzQyxDQUFDLENBQUMsQ0FBQztZQUNILE9BQU8sT0FBTyxDQUFDO1FBQ2pCLENBQUMsQ0FBQTtRQUVELGFBQVEsR0FBRyxDQUFDLFFBQWdCLEVBQUUsUUFBaUIsRUFBRSxFQUFFO1lBQ2pELE1BQU0sSUFBSSxHQUFRLFFBQVEsQ0FBQyxhQUFhLENBQUMsR0FBRyxDQUFDLENBQUM7WUFDOUMsSUFBSSxDQUFDLFFBQVEsR0FBRyxHQUFHLFFBQVEsSUFBSSxJQUFJLENBQUMsRUFBRSxFQUFFLEVBQUUsQ0FBQztZQUMzQyxJQUFJLENBQUMsSUFBSSxHQUFHLFFBQVEsQ0FBQztZQUNyQixRQUFRLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUMsQ0FBQztZQUNoQyxJQUFJLENBQUMsS0FBSyxFQUFFLENBQUM7WUFDYixRQUFRLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUNsQyxDQUFDLENBQUE7SUFwSGUsQ0FBQzs7Ozs7WUFObEIsVUFBVSxTQUFDO2dCQUNWLFVBQVUsRUFBRSxNQUFNO2FBQ25CIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0YWJsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgbWQ1IGZyb20gJ21kNSc7XHJcbmltcG9ydCAkIGZyb20gJ2pxdWVyeSc7XHJcbmltcG9ydCAqIGFzIHV1aWQgZnJvbSAndXVpZCc7XHJcblxyXG5ASW5qZWN0YWJsZSh7XHJcbiAgcHJvdmlkZWRJbjogJ3Jvb3QnXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBTZFV0aWxpdHlTZXJ2aWNlIHtcclxuICAjdXBsb2FkSWQgPSAnVTFlMDljMWMwLWI2NDctNDM3ZS05OTVlLWQ3YTFhMWI2MDU1MCc7XHJcblxyXG4gIGNvbnN0cnVjdG9yKCkgeyB9XHJcbiAgI3RyYW5zbGF0ZSA9ICh2YWx1ZTogc3RyaW5nKSA9PiB2YWx1ZTtcclxuXHJcbiAgaGFzaE1ENSA9IChrZXk6IHN0cmluZykgPT4gbWQ1KGtleSk7XHJcblxyXG4gIGFycmF5VG9PYmplY3QgPSA8VD4oaXRlbXM6IFRbXSwga2V5OiBzdHJpbmcpOiB7IFtrZXk6IHN0cmluZ106IFQgfSA9PiB7XHJcbiAgICByZXR1cm4gaXRlbXMucmVkdWNlKChvYmosIGl0ZW0pID0+IHsgb2JqW2l0ZW1ba2V5XV0gPSBpdGVtOyByZXR1cm4gb2JqOyB9LCB7fSk7XHJcbiAgfVxyXG5cclxuICBjaGFuZ2VBbGlhc0xvd2VyQ2FzZSA9IChhbGlhczogc3RyaW5nKSA9PiB7XHJcbiAgICBsZXQgc3RyID0gYWxpYXM/LnRvU3RyaW5nKCkgPz8gJyc7XHJcbiAgICBzdHIgPSBzdHIudG9TdHJpbmcoKS50b0xvd2VyQ2FzZSgpO1xyXG4gICAgc3RyID0gc3RyLnJlcGxhY2UoL8OgfMOhfOG6oXzhuqN8w6N8w6J84bqnfOG6pXzhuq184bqpfOG6q3zEg3zhurF84bqvfOG6t3zhurN84bq1L2csICdhJyk7XHJcbiAgICBzdHIgPSBzdHIucmVwbGFjZSgvw6h8w6l84bq5fOG6u3zhur18w6p84buBfOG6v3zhu4d84buDfOG7hS9nLCAnZScpO1xyXG4gICAgc3RyID0gc3RyLnJlcGxhY2UoL8OsfMOtfOG7i3zhu4l8xKkvZywgJ2knKTtcclxuICAgIHN0ciA9IHN0ci5yZXBsYWNlKC/DsnzDs3zhu4184buPfMO1fMO0fOG7k3zhu5F84buZfOG7lXzhu5d8xqF84budfOG7m3zhu6N84buffOG7oS9nLCAnbycpO1xyXG4gICAgc3RyID0gc3RyLnJlcGxhY2UoL8O5fMO6fOG7pXzhu6d8xal8xrB84burfOG7qXzhu7F84butfOG7ry9nLCAndScpO1xyXG4gICAgc3RyID0gc3RyLnJlcGxhY2UoL+G7s3zDvXzhu7V84bu3fOG7uS9nLCAneScpO1xyXG4gICAgc3RyID0gc3RyLnJlcGxhY2UoL8SRL2csICdkJyk7XHJcbiAgICBzdHIgPSBzdHIucmVwbGFjZSgvIXxAfCV8XFxefFxcKnxcXCh8XFwpfFxcK3xcXD18XFw8fFxcPnxcXD98XFwvfCx8XFwufFxcOnxcXDt8XFwnfFxcXCJ8XFwmfFxcI3xcXFt8XFxdfH58XFwkfF98YHwtfHt8fXxcXHx8XFxcXC9nLCAnICcpO1xyXG4gICAgc3RyID0gc3RyLnJlcGxhY2UoLyArIC9nLCAnICcpO1xyXG4gICAgc3RyID0gc3RyLnRyaW0oKTtcclxuICAgIHJldHVybiBzdHI7XHJcbiAgfVxyXG5cclxuICB0aW1lRGlmZmVyZW5jZSA9IChwcmV2aW91czogYW55LCBjdXJyZW50OiBhbnkgPSBuZXcgRGF0ZSgpKSA9PiB7XHJcbiAgICBpZiAoIURhdGUuaXNEYXRlKHByZXZpb3VzKSkge1xyXG4gICAgICByZXR1cm4gJyc7XHJcbiAgICB9XHJcbiAgICBpZiAoIURhdGUuaXNEYXRlKGN1cnJlbnQpKSB7XHJcbiAgICAgIHJldHVybiAnJztcclxuICAgIH1cclxuICAgIGNvbnN0IGZyb20gPSBuZXcgRGF0ZShwcmV2aW91cyk7XHJcbiAgICBjb25zdCB0byA9IG5ldyBEYXRlKGN1cnJlbnQpO1xyXG4gICAgY29uc3QgbXNQZXJNaW51dGUgPSA2MCAqIDEwMDA7XHJcbiAgICBjb25zdCBtc1BlckhvdXIgPSBtc1Blck1pbnV0ZSAqIDYwO1xyXG4gICAgY29uc3QgbXNQZXJEYXkgPSBtc1BlckhvdXIgKiAyNDtcclxuICAgIGNvbnN0IG1zUGVyTW9udGggPSBtc1BlckRheSAqIDMwO1xyXG4gICAgY29uc3QgbXNQZXJZZWFyID0gbXNQZXJEYXkgKiAzNjU7XHJcbiAgICBjb25zdCBlbGFwc2VkID0gdG8uZ2V0VGltZSgpIC0gZnJvbS5nZXRUaW1lKCk7XHJcblxyXG4gICAgaWYgKGVsYXBzZWQgPCBtc1Blck1pbnV0ZSkge1xyXG4gICAgICByZXR1cm4gYCR7TWF0aC5yb3VuZChlbGFwc2VkIC8gMTAwMCl9ICR7dGhpcy4jdHJhbnNsYXRlKCdzZWNvbmRzIGFnbycpfWA7XHJcbiAgICB9XHJcblxyXG4gICAgaWYgKGVsYXBzZWQgPCBtc1BlckhvdXIpIHtcclxuICAgICAgcmV0dXJuIGAke01hdGgucm91bmQoZWxhcHNlZCAvIG1zUGVyTWludXRlKX0gJHt0aGlzLiN0cmFuc2xhdGUoJ21pbnV0ZXMgYWdvJyl9YDtcclxuICAgIH1cclxuXHJcbiAgICBpZiAoZWxhcHNlZCA8IG1zUGVyRGF5KSB7XHJcbiAgICAgIHJldHVybiBgJHtNYXRoLnJvdW5kKGVsYXBzZWQgLyBtc1BlckhvdXIpfSAke3RoaXMuI3RyYW5zbGF0ZSgnaG91cnMgYWdvJyl9YDtcclxuICAgIH1cclxuXHJcbiAgICBpZiAoZWxhcHNlZCA8IG1zUGVyTW9udGgpIHtcclxuICAgICAgcmV0dXJuIGAke01hdGgucm91bmQoZWxhcHNlZCAvIG1zUGVyRGF5KX0gJHt0aGlzLiN0cmFuc2xhdGUoJ2RheXMgYWdvJyl9YDtcclxuICAgIH1cclxuXHJcbiAgICBpZiAoZWxhcHNlZCA8IG1zUGVyWWVhcikge1xyXG4gICAgICByZXR1cm4gYCR7TWF0aC5yb3VuZChlbGFwc2VkIC8gbXNQZXJNb250aCl9ICR7dGhpcy4jdHJhbnNsYXRlKCdtb250aHMgYWdvJyl9YDtcclxuICAgIH1cclxuICAgIHJldHVybiBgJHtNYXRoLnJvdW5kKGVsYXBzZWQgLyBtc1BlclllYXIpfSAke3RoaXMuI3RyYW5zbGF0ZSgneWVhcnMgYWdvJyl9YDtcclxuICB9XHJcblxyXG4gIHVwbG9hZCA9IChvcHRpb24/OiB7XHJcbiAgICBleHRlbnNpb25zPzogc3RyaW5nW10sXHJcbiAgICBtYXhTaXplSW5NYj86IG51bWJlcixcclxuICAgIHZhbGlkYXRvcj86IChmaWxlTmFtZTogc3RyaW5nKSA9PiBzdHJpbmdcclxuICB9KTogUHJvbWlzZTxGaWxlPiA9PiB7XHJcbiAgICBjb25zdCBwcm9taXNlID0gbmV3IFByb21pc2U8RmlsZT4oKHJlc29sdmUsIHJlamVjdCkgPT4ge1xyXG4gICAgICBpZiAoJChgIyR7dGhpcy4jdXBsb2FkSWR9YCkubGVuZ3RoKSB7XHJcbiAgICAgICAgJCgnYm9keScpLmNoaWxkcmVuKGAjJHt0aGlzLiN1cGxvYWRJZH1gKS5yZW1vdmUoKTtcclxuICAgICAgfVxyXG4gICAgICAkKCdib2R5JykuYXBwZW5kKGA8aW5wdXQgaWQ9XCIke3RoaXMuI3VwbG9hZElkfVwiIHN0eWxlPVwiZGlzcGxheTogbm9uZVwiIHR5cGU9XCJmaWxlXCIgLz5gKTtcclxuICAgICAgJChgIyR7dGhpcy4jdXBsb2FkSWR9YCkub24oJ2NoYW5nZScsIChldnQ6IGFueSkgPT4ge1xyXG4gICAgICAgIHRyeSB7XHJcbiAgICAgICAgICBjb25zdCB0YXJnZXQ6IERhdGFUcmFuc2ZlciA9IGV2dC50YXJnZXQ7XHJcbiAgICAgICAgICBjb25zdCBmaWxlID0gdGFyZ2V0LmZpbGVzLml0ZW0oMCk7XHJcbiAgICAgICAgICBpZiAoZmlsZSkge1xyXG4gICAgICAgICAgICBjb25zdCBsYXN0RG90ID0gZmlsZS5uYW1lLmxhc3RJbmRleE9mKCcuJyk7XHJcbiAgICAgICAgICAgIGlmIChsYXN0RG90ID09PSAtMSkge1xyXG4gICAgICAgICAgICAgIGNvbnN0IG1lc3NhZ2UgPSB0aGlzLiN0cmFuc2xhdGUoYEludmFsaWQgZmlsZSBleHRlbnNpb25gKTtcclxuICAgICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IobWVzc2FnZSk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgY29uc3QgZXh0ZW5zaW9uID0gZmlsZS5uYW1lLnN1YnN0cmluZyhsYXN0RG90ICsgMSk7XHJcbiAgICAgICAgICAgIGlmIChvcHRpb24pIHtcclxuICAgICAgICAgICAgICBpZiAob3B0aW9uLmV4dGVuc2lvbnM/Lmxlbmd0aCAmJiAhb3B0aW9uLmV4dGVuc2lvbnMuc29tZShlID0+IGUudG9VcHBlckNhc2UoKSA9PT0gZXh0ZW5zaW9uLnRvVXBwZXJDYXNlKCkpKSB7XHJcbiAgICAgICAgICAgICAgICBjb25zdCBtZXNzYWdlID0gYFske2ZpbGUubmFtZX1dICR7dGhpcy4jdHJhbnNsYXRlKCdVcGxvYWRlZCBmaWxlIGlzIG5vdCBtYXRjaCBleHRlbnNpb24nKX0gJHtvcHRpb24uZXh0ZW5zaW9ucy5qb2luKCcsICcpfWA7XHJcbiAgICAgICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IobWVzc2FnZSk7XHJcbiAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgIGlmIChvcHRpb24ubWF4U2l6ZUluTWIgPiAwICYmIG9wdGlvbi5tYXhTaXplSW5NYiAqIDEwMjQgKiAxMDI0IDwgZmlsZS5zaXplKSB7XHJcbiAgICAgICAgICAgICAgICBjb25zdCBtZXNzYWdlID0gYFske2ZpbGUubmFtZX1dICR7dGhpcy4jdHJhbnNsYXRlKCdNYXggZmlsZSBzaXplJyl9ICR7b3B0aW9uLm1heFNpemVJbk1ifSBNYnNgO1xyXG4gICAgICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKG1lc3NhZ2UpO1xyXG4gICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICBpZiAob3B0aW9uLnZhbGlkYXRvciAmJiBvcHRpb24udmFsaWRhdG9yKGZpbGUubmFtZSkpIHtcclxuICAgICAgICAgICAgICAgIGNvbnN0IG1lc3NhZ2UgPSBvcHRpb24udmFsaWRhdG9yKGZpbGUubmFtZSk7XHJcbiAgICAgICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IobWVzc2FnZSk7XHJcbiAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIHJlc29sdmUoZmlsZSk7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfSBjYXRjaCAoZXJyb3IpIHtcclxuICAgICAgICAgIHJlamVjdChlcnJvcik7XHJcbiAgICAgICAgfVxyXG4gICAgICB9KTtcclxuICAgICAgJChgIyR7dGhpcy4jdXBsb2FkSWR9YCkudHJpZ2dlcignY2xpY2snKTtcclxuICAgIH0pO1xyXG4gICAgcmV0dXJuIHByb21pc2U7XHJcbiAgfVxyXG5cclxuICBkb3dubG9hZCA9IChmaWxlUGF0aDogc3RyaW5nLCBmaWxlTmFtZT86IHN0cmluZykgPT4ge1xyXG4gICAgY29uc3QgbGluazogYW55ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnYScpO1xyXG4gICAgbGluay5kb3dubG9hZCA9IGAke2ZpbGVOYW1lIHx8IHV1aWQudjQoKX1gO1xyXG4gICAgbGluay5ocmVmID0gZmlsZVBhdGg7XHJcbiAgICBkb2N1bWVudC5ib2R5LmFwcGVuZENoaWxkKGxpbmspO1xyXG4gICAgbGluay5jbGljaygpO1xyXG4gICAgZG9jdW1lbnQuYm9keS5yZW1vdmVDaGlsZChsaW5rKTtcclxuICB9XHJcbn1cclxuIl19
128
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXRpbGl0eS5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IkM6L1VzZXJzL25naGlhdHQxNS9EZXNrdG9wL1dvcmtpbmcvMU1HL2xpYi1jb3JlLXVpL3Byb2plY3RzL3NkLWNvcmUvdXRpbGl0eS8iLCJzb3VyY2VzIjpbInNyYy9saWIvdXRpbGl0eS5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7O0FBQUEsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUMzQyxPQUFPLEdBQUcsTUFBTSxLQUFLLENBQUM7QUFDdEIsT0FBTyxDQUFDLE1BQU0sUUFBUSxDQUFDO0FBQ3ZCLE9BQU8sS0FBSyxJQUFJLE1BQU0sTUFBTSxDQUFDOztBQUs3QixNQUFNLE9BQU8sZ0JBQWdCO0lBRzNCO1FBRkEsb0JBQVksdUNBQXVDLEVBQUM7UUFHcEQscUJBQWEsQ0FBQyxLQUFhLEVBQUUsRUFBRSxDQUFDLEtBQUssRUFBQztRQUV0QyxZQUFPLEdBQUcsQ0FBQyxHQUFXLEVBQUUsRUFBRSxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsQ0FBQztRQUVwQyxrQkFBYSxHQUFHLENBQUksS0FBVSxFQUFFLEdBQVcsRUFBd0IsRUFBRTtZQUNuRSxPQUFPLEtBQUssQ0FBQyxNQUFNLENBQUMsQ0FBQyxHQUFHLEVBQUUsSUFBSSxFQUFFLEVBQUUsR0FBRyxHQUFHLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDLEdBQUcsSUFBSSxDQUFDLENBQUMsT0FBTyxHQUFHLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUM7UUFDakYsQ0FBQyxDQUFBO1FBRUQseUJBQW9CLEdBQUcsQ0FBQyxLQUFhLEVBQUUsRUFBRTs7WUFDdkMsSUFBSSxHQUFHLFNBQUcsS0FBSyxhQUFMLEtBQUssdUJBQUwsS0FBSyxDQUFFLFFBQVEscUNBQU0sRUFBRSxDQUFDO1lBQ2xDLEdBQUcsR0FBRyxHQUFHLENBQUMsUUFBUSxFQUFFLENBQUMsV0FBVyxFQUFFLENBQUM7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QyxNQUFNLElBQUksS0FBSyxDQUFDLE9BQU8sQ0FBQyxDQUFDO2lDQUMxQjs2QkFDRjs0QkFDRCxPQUFPLENBQUMsSUFBSSxDQUFDLENBQUM7eUJBQ2Y7cUJBQ0Y7b0JBQUMsT0FBTyxLQUFLLEVBQUU7d0JBQ2QsTUFBTSxDQUFDLEtBQUssQ0FBQyxDQUFDO3FCQUNmO2dCQUNILENBQUMsQ0FBQyxDQUFDO2dCQUNILENBQUMsQ0FBQyxJQUFJLHVDQUFjLEVBQUUsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxPQUFPLENBQUMsQ0FBQztZQUMzQyxDQUFDLENBQUMsQ0FBQztZQUNILE9BQU8sT0FBTyxDQUFDO1FBQ2pCLENBQUMsQ0FBQTtRQUVELGFBQVEsR0FBRyxDQUFDLFFBQWdCLEVBQUUsUUFBaUIsRUFBRSxFQUFFO1lBQ2pELE1BQU0sSUFBSSxHQUFRLFFBQVEsQ0FBQyxhQUFhLENBQUMsR0FBRyxDQUFDLENBQUM7WUFDOUMsSUFBSSxDQUFDLFFBQVEsR0FBRyxHQUFHLFFBQVEsSUFBSSxJQUFJLENBQUMsRUFBRSxFQUFFLEVBQUUsQ0FBQztZQUMzQyxJQUFJLENBQUMsSUFBSSxHQUFHLFFBQVEsQ0FBQztZQUNyQixRQUFRLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUMsQ0FBQztZQUNoQyxJQUFJLENBQUMsS0FBSyxFQUFFLENBQUM7WUFDYixRQUFRLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUNsQyxDQUFDLENBQUE7UUFFRCxvQkFBZSxHQUFHLENBQUMsSUFBWSxFQUFFLEVBQUU7WUFDakMsU0FBUyxDQUFDLFNBQVMsQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDdEMsQ0FBQyxDQUFBO0lBeEhlLENBQUM7Ozs7O1lBTmxCLFVBQVUsU0FBQztnQkFDVixVQUFVLEVBQUUsTUFBTTthQUNuQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdGFibGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IG1kNSBmcm9tICdtZDUnO1xyXG5pbXBvcnQgJCBmcm9tICdqcXVlcnknO1xyXG5pbXBvcnQgKiBhcyB1dWlkIGZyb20gJ3V1aWQnO1xyXG5cclxuQEluamVjdGFibGUoe1xyXG4gIHByb3ZpZGVkSW46ICdyb290J1xyXG59KVxyXG5leHBvcnQgY2xhc3MgU2RVdGlsaXR5U2VydmljZSB7XHJcbiAgI3VwbG9hZElkID0gJ1UxZTA5YzFjMC1iNjQ3LTQzN2UtOTk1ZS1kN2ExYTFiNjA1NTAnO1xyXG5cclxuICBjb25zdHJ1Y3RvcigpIHsgfVxyXG4gICN0cmFuc2xhdGUgPSAodmFsdWU6IHN0cmluZykgPT4gdmFsdWU7XHJcblxyXG4gIGhhc2hNRDUgPSAoa2V5OiBzdHJpbmcpID0+IG1kNShrZXkpO1xyXG5cclxuICBhcnJheVRvT2JqZWN0ID0gPFQ+KGl0ZW1zOiBUW10sIGtleTogc3RyaW5nKTogeyBba2V5OiBzdHJpbmddOiBUIH0gPT4ge1xyXG4gICAgcmV0dXJuIGl0ZW1zLnJlZHVjZSgob2JqLCBpdGVtKSA9PiB7IG9ialtpdGVtW2tleV1dID0gaXRlbTsgcmV0dXJuIG9iajsgfSwge30pO1xyXG4gIH1cclxuXHJcbiAgY2hhbmdlQWxpYXNMb3dlckNhc2UgPSAoYWxpYXM6IHN0cmluZykgPT4ge1xyXG4gICAgbGV0IHN0ciA9IGFsaWFzPy50b1N0cmluZygpID8/ICcnO1xyXG4gICAgc3RyID0gc3RyLnRvU3RyaW5nKCkudG9Mb3dlckNhc2UoKTtcclxuICAgIHN0ciA9IHN0ci5yZXBsYWNlKC/DoHzDoXzhuqF84bqjfMOjfMOifOG6p3zhuqV84bqtfOG6qXzhuqt8xIN84bqxfOG6r3zhurd84bqzfOG6tS9nLCAnYScpO1xyXG4gICAgc3RyID0gc3RyLnJlcGxhY2UoL8OofMOpfOG6uXzhurt84bq9fMOqfOG7gXzhur984buHfOG7g3zhu4UvZywgJ2UnKTtcclxuICAgIHN0ciA9IHN0ci5yZXBsYWNlKC/DrHzDrXzhu4t84buJfMSpL2csICdpJyk7XHJcbiAgICBzdHIgPSBzdHIucmVwbGFjZSgvw7J8w7N84buNfOG7j3zDtXzDtHzhu5N84buRfOG7mXzhu5V84buXfMahfOG7nXzhu5t84bujfOG7n3zhu6EvZywgJ28nKTtcclxuICAgIHN0ciA9IHN0ci5yZXBsYWNlKC/DuXzDunzhu6V84bunfMWpfMawfOG7q3zhu6l84buxfOG7rXzhu68vZywgJ3UnKTtcclxuICAgIHN0ciA9IHN0ci5yZXBsYWNlKC/hu7N8w7184bu1fOG7t3zhu7kvZywgJ3knKTtcclxuICAgIHN0ciA9IHN0ci5yZXBsYWNlKC/EkS9nLCAnZCcpO1xyXG4gICAgc3RyID0gc3RyLnJlcGxhY2UoLyF8QHwlfFxcXnxcXCp8XFwofFxcKXxcXCt8XFw9fFxcPHxcXD58XFw/fFxcL3wsfFxcLnxcXDp8XFw7fFxcJ3xcXFwifFxcJnxcXCN8XFxbfFxcXXx+fFxcJHxffGB8LXx7fH18XFx8fFxcXFwvZywgJyAnKTtcclxuICAgIHN0ciA9IHN0ci5yZXBsYWNlKC8gKyAvZywgJyAnKTtcclxuICAgIHN0ciA9IHN0ci50cmltKCk7XHJcbiAgICByZXR1cm4gc3RyO1xyXG4gIH1cclxuXHJcbiAgdGltZURpZmZlcmVuY2UgPSAocHJldmlvdXM6IGFueSwgY3VycmVudDogYW55ID0gbmV3IERhdGUoKSkgPT4ge1xyXG4gICAgaWYgKCFEYXRlLmlzRGF0ZShwcmV2aW91cykpIHtcclxuICAgICAgcmV0dXJuICcnO1xyXG4gICAgfVxyXG4gICAgaWYgKCFEYXRlLmlzRGF0ZShjdXJyZW50KSkge1xyXG4gICAgICByZXR1cm4gJyc7XHJcbiAgICB9XHJcbiAgICBjb25zdCBmcm9tID0gbmV3IERhdGUocHJldmlvdXMpO1xyXG4gICAgY29uc3QgdG8gPSBuZXcgRGF0ZShjdXJyZW50KTtcclxuICAgIGNvbnN0IG1zUGVyTWludXRlID0gNjAgKiAxMDAwO1xyXG4gICAgY29uc3QgbXNQZXJIb3VyID0gbXNQZXJNaW51dGUgKiA2MDtcclxuICAgIGNvbnN0IG1zUGVyRGF5ID0gbXNQZXJIb3VyICogMjQ7XHJcbiAgICBjb25zdCBtc1Blck1vbnRoID0gbXNQZXJEYXkgKiAzMDtcclxuICAgIGNvbnN0IG1zUGVyWWVhciA9IG1zUGVyRGF5ICogMzY1O1xyXG4gICAgY29uc3QgZWxhcHNlZCA9IHRvLmdldFRpbWUoKSAtIGZyb20uZ2V0VGltZSgpO1xyXG5cclxuICAgIGlmIChlbGFwc2VkIDwgbXNQZXJNaW51dGUpIHtcclxuICAgICAgcmV0dXJuIGAke01hdGgucm91bmQoZWxhcHNlZCAvIDEwMDApfSAke3RoaXMuI3RyYW5zbGF0ZSgnc2Vjb25kcyBhZ28nKX1gO1xyXG4gICAgfVxyXG5cclxuICAgIGlmIChlbGFwc2VkIDwgbXNQZXJIb3VyKSB7XHJcbiAgICAgIHJldHVybiBgJHtNYXRoLnJvdW5kKGVsYXBzZWQgLyBtc1Blck1pbnV0ZSl9ICR7dGhpcy4jdHJhbnNsYXRlKCdtaW51dGVzIGFnbycpfWA7XHJcbiAgICB9XHJcblxyXG4gICAgaWYgKGVsYXBzZWQgPCBtc1BlckRheSkge1xyXG4gICAgICByZXR1cm4gYCR7TWF0aC5yb3VuZChlbGFwc2VkIC8gbXNQZXJIb3VyKX0gJHt0aGlzLiN0cmFuc2xhdGUoJ2hvdXJzIGFnbycpfWA7XHJcbiAgICB9XHJcblxyXG4gICAgaWYgKGVsYXBzZWQgPCBtc1Blck1vbnRoKSB7XHJcbiAgICAgIHJldHVybiBgJHtNYXRoLnJvdW5kKGVsYXBzZWQgLyBtc1BlckRheSl9ICR7dGhpcy4jdHJhbnNsYXRlKCdkYXlzIGFnbycpfWA7XHJcbiAgICB9XHJcblxyXG4gICAgaWYgKGVsYXBzZWQgPCBtc1BlclllYXIpIHtcclxuICAgICAgcmV0dXJuIGAke01hdGgucm91bmQoZWxhcHNlZCAvIG1zUGVyTW9udGgpfSAke3RoaXMuI3RyYW5zbGF0ZSgnbW9udGhzIGFnbycpfWA7XHJcbiAgICB9XHJcbiAgICByZXR1cm4gYCR7TWF0aC5yb3VuZChlbGFwc2VkIC8gbXNQZXJZZWFyKX0gJHt0aGlzLiN0cmFuc2xhdGUoJ3llYXJzIGFnbycpfWA7XHJcbiAgfVxyXG5cclxuICB1cGxvYWQgPSAob3B0aW9uPzoge1xyXG4gICAgZXh0ZW5zaW9ucz86IHN0cmluZ1tdLFxyXG4gICAgbWF4U2l6ZUluTWI/OiBudW1iZXIsXHJcbiAgICB2YWxpZGF0b3I/OiAoZmlsZU5hbWU6IHN0cmluZykgPT4gc3RyaW5nXHJcbiAgfSk6IFByb21pc2U8RmlsZT4gPT4ge1xyXG4gICAgY29uc3QgcHJvbWlzZSA9IG5ldyBQcm9taXNlPEZpbGU+KChyZXNvbHZlLCByZWplY3QpID0+IHtcclxuICAgICAgaWYgKCQoYCMke3RoaXMuI3VwbG9hZElkfWApLmxlbmd0aCkge1xyXG4gICAgICAgICQoJ2JvZHknKS5jaGlsZHJlbihgIyR7dGhpcy4jdXBsb2FkSWR9YCkucmVtb3ZlKCk7XHJcbiAgICAgIH1cclxuICAgICAgJCgnYm9keScpLmFwcGVuZChgPGlucHV0IGlkPVwiJHt0aGlzLiN1cGxvYWRJZH1cIiBzdHlsZT1cImRpc3BsYXk6IG5vbmVcIiB0eXBlPVwiZmlsZVwiIC8+YCk7XHJcbiAgICAgICQoYCMke3RoaXMuI3VwbG9hZElkfWApLm9uKCdjaGFuZ2UnLCAoZXZ0OiBhbnkpID0+IHtcclxuICAgICAgICB0cnkge1xyXG4gICAgICAgICAgY29uc3QgdGFyZ2V0OiBEYXRhVHJhbnNmZXIgPSBldnQudGFyZ2V0O1xyXG4gICAgICAgICAgY29uc3QgZmlsZSA9IHRhcmdldC5maWxlcy5pdGVtKDApO1xyXG4gICAgICAgICAgaWYgKGZpbGUpIHtcclxuICAgICAgICAgICAgY29uc3QgbGFzdERvdCA9IGZpbGUubmFtZS5sYXN0SW5kZXhPZignLicpO1xyXG4gICAgICAgICAgICBpZiAobGFzdERvdCA9PT0gLTEpIHtcclxuICAgICAgICAgICAgICBjb25zdCBtZXNzYWdlID0gdGhpcy4jdHJhbnNsYXRlKGBJbnZhbGlkIGZpbGUgZXh0ZW5zaW9uYCk7XHJcbiAgICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKG1lc3NhZ2UpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGNvbnN0IGV4dGVuc2lvbiA9IGZpbGUubmFtZS5zdWJzdHJpbmcobGFzdERvdCArIDEpO1xyXG4gICAgICAgICAgICBpZiAob3B0aW9uKSB7XHJcbiAgICAgICAgICAgICAgaWYgKG9wdGlvbi5leHRlbnNpb25zPy5sZW5ndGggJiYgIW9wdGlvbi5leHRlbnNpb25zLnNvbWUoZSA9PiBlLnRvVXBwZXJDYXNlKCkgPT09IGV4dGVuc2lvbi50b1VwcGVyQ2FzZSgpKSkge1xyXG4gICAgICAgICAgICAgICAgY29uc3QgbWVzc2FnZSA9IGBbJHtmaWxlLm5hbWV9XSAke3RoaXMuI3RyYW5zbGF0ZSgnVXBsb2FkZWQgZmlsZSBpcyBub3QgbWF0Y2ggZXh0ZW5zaW9uJyl9ICR7b3B0aW9uLmV4dGVuc2lvbnMuam9pbignLCAnKX1gO1xyXG4gICAgICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKG1lc3NhZ2UpO1xyXG4gICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICBpZiAob3B0aW9uLm1heFNpemVJbk1iID4gMCAmJiBvcHRpb24ubWF4U2l6ZUluTWIgKiAxMDI0ICogMTAyNCA8IGZpbGUuc2l6ZSkge1xyXG4gICAgICAgICAgICAgICAgY29uc3QgbWVzc2FnZSA9IGBbJHtmaWxlLm5hbWV9XSAke3RoaXMuI3RyYW5zbGF0ZSgnTWF4IGZpbGUgc2l6ZScpfSAke29wdGlvbi5tYXhTaXplSW5NYn0gTWJzYDtcclxuICAgICAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihtZXNzYWdlKTtcclxuICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgaWYgKG9wdGlvbi52YWxpZGF0b3IgJiYgb3B0aW9uLnZhbGlkYXRvcihmaWxlLm5hbWUpKSB7XHJcbiAgICAgICAgICAgICAgICBjb25zdCBtZXNzYWdlID0gb3B0aW9uLnZhbGlkYXRvcihmaWxlLm5hbWUpO1xyXG4gICAgICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKG1lc3NhZ2UpO1xyXG4gICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICByZXNvbHZlKGZpbGUpO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH0gY2F0Y2ggKGVycm9yKSB7XHJcbiAgICAgICAgICByZWplY3QoZXJyb3IpO1xyXG4gICAgICAgIH1cclxuICAgICAgfSk7XHJcbiAgICAgICQoYCMke3RoaXMuI3VwbG9hZElkfWApLnRyaWdnZXIoJ2NsaWNrJyk7XHJcbiAgICB9KTtcclxuICAgIHJldHVybiBwcm9taXNlO1xyXG4gIH1cclxuXHJcbiAgZG93bmxvYWQgPSAoZmlsZVBhdGg6IHN0cmluZywgZmlsZU5hbWU/OiBzdHJpbmcpID0+IHtcclxuICAgIGNvbnN0IGxpbms6IGFueSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2EnKTtcclxuICAgIGxpbmsuZG93bmxvYWQgPSBgJHtmaWxlTmFtZSB8fCB1dWlkLnY0KCl9YDtcclxuICAgIGxpbmsuaHJlZiA9IGZpbGVQYXRoO1xyXG4gICAgZG9jdW1lbnQuYm9keS5hcHBlbmRDaGlsZChsaW5rKTtcclxuICAgIGxpbmsuY2xpY2soKTtcclxuICAgIGRvY3VtZW50LmJvZHkucmVtb3ZlQ2hpbGQobGluayk7XHJcbiAgfVxyXG5cclxuICBjb3B5VG9DbGlwYm9hcmQgPSAodGV4dDogc3RyaW5nKSA9PiB7XHJcbiAgICBuYXZpZ2F0b3IuY2xpcGJvYXJkLndyaXRlVGV4dCh0ZXh0KTtcclxuICB9XHJcbn1cclxuIl19
@@ -1,4 +1,4 @@
1
- import '@sd-angular/core/common';
1
+ import { SdCommonModule } from '@sd-angular/core/common';
2
2
  import { NgModule } from '@angular/core';
3
3
  import { FormsModule, ReactiveFormsModule } from '@angular/forms';
4
4
  import { SdAutocompleteModule } from '@sd-angular/core/autocomplete';
@@ -32,6 +32,7 @@ SdFormModule.decorators = [
32
32
  imports: [
33
33
  FormsModule,
34
34
  ReactiveFormsModule,
35
+ SdCommonModule,
35
36
  SdModalModule,
36
37
  SdSideDrawerModule,
37
38
  SdLabelModule,
@@ -61,6 +62,7 @@ SdFormModule.decorators = [
61
62
  exports: [
62
63
  FormsModule,
63
64
  ReactiveFormsModule,
65
+ SdCommonModule,
64
66
  SdModalModule,
65
67
  SdSideDrawerModule,
66
68
  SdLabelModule,
@@ -1 +1 @@
1
- {"version":3,"file":"sd-angular-core-form.js","sources":["../../../../projects/sd-core/form/src/lib/form.module.ts","../../../../projects/sd-core/form/sd-angular-core-form.ts"],"sourcesContent":["import { NgModule } from '@angular/core';\r\nimport { FormsModule, ReactiveFormsModule } from '@angular/forms';\r\nimport { SdAutocompleteModule } from '@sd-angular/core/autocomplete';\r\nimport { SdButtonModule } from '@sd-angular/core/button';\r\nimport { SdDateRangeModule } from '@sd-angular/core/date-range';\r\nimport { SdDateTimeModule } from '@sd-angular/core/date-time';\r\nimport { SdEditorModule } from '@sd-angular/core/editor';\r\nimport { SdInputModule } from '@sd-angular/core/input';\r\nimport { SdInputCurrencyModule } from '@sd-angular/core/input-currency';\r\nimport { SdModalModule } from '@sd-angular/core/modal';\r\nimport { SdRadioModule } from '@sd-angular/core/radio';\r\nimport { SdSelectModule } from '@sd-angular/core/select';\r\nimport { SdSelectEditorModule } from '@sd-angular/core/select-editor';\r\nimport { SdSwitchModule } from '@sd-angular/core/switch';\r\nimport { SdUploadFileModule } from '@sd-angular/core/upload-file';\r\nimport { SdChipModule } from '@sd-angular/core/chip';\r\nimport { SdTextareaModule } from '@sd-angular/core/textarea';\r\nimport { SdUtilityModule } from '@sd-angular/core/utility';\r\nimport { SdCheckboxModule } from '@sd-angular/core/checkbox';\r\nimport { SdLabelModule } from '@sd-angular/core/label';\r\nimport { SdTimeModule } from '@sd-angular/core/time';\r\nimport { SdSideDrawerModule } from '@sd-angular/core/side-drawer';\r\nimport { SdQuickActionModule } from '@sd-angular/core/quick-action';\r\nimport { SdBadgeModule } from '@sd-angular/core/badge';\r\nimport { SdModalResizableModule } from '@sd-angular/core/modal-resizable';\r\n\r\n@NgModule({\r\n imports: [\r\n FormsModule,\r\n ReactiveFormsModule,\r\n SdModalModule,\r\n SdSideDrawerModule,\r\n SdLabelModule,\r\n SdUploadFileModule,\r\n SdDateRangeModule,\r\n SdDateTimeModule,\r\n SdTimeModule,\r\n SdButtonModule,\r\n SdAutocompleteModule,\r\n SdInputModule,\r\n SdInputCurrencyModule,\r\n SdSelectModule,\r\n SdSelectEditorModule,\r\n SdEditorModule,\r\n SdSwitchModule,\r\n SdRadioModule,\r\n SdChipModule,\r\n SdTextareaModule,\r\n SdCheckboxModule,\r\n SdUtilityModule,\r\n SdQuickActionModule,\r\n SdBadgeModule,\r\n SdModalResizableModule\r\n ],\r\n declarations: [\r\n ],\r\n providers: [\r\n ],\r\n exports: [\r\n FormsModule,\r\n ReactiveFormsModule,\r\n SdModalModule,\r\n SdSideDrawerModule,\r\n SdLabelModule,\r\n SdUploadFileModule,\r\n SdDateRangeModule,\r\n SdDateTimeModule,\r\n SdTimeModule,\r\n SdButtonModule,\r\n SdAutocompleteModule,\r\n SdInputModule,\r\n SdInputCurrencyModule,\r\n SdSelectModule,\r\n SdSelectEditorModule,\r\n SdEditorModule,\r\n SdSwitchModule,\r\n SdRadioModule,\r\n SdChipModule,\r\n SdTextareaModule,\r\n SdCheckboxModule,\r\n SdUtilityModule,\r\n SdQuickActionModule,\r\n SdBadgeModule,\r\n SdModalResizableModule\r\n ]\r\n})\r\nexport class SdFormModule { }\r\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;MAsFa,YAAY;;;YA5DxB,QAAQ,SAAC;gBACR,OAAO,EAAE;oBACP,WAAW;oBACX,mBAAmB;oBACnB,aAAa;oBACb,kBAAkB;oBAClB,aAAa;oBACb,kBAAkB;oBAClB,iBAAiB;oBACjB,gBAAgB;oBAChB,YAAY;oBACZ,cAAc;oBACd,oBAAoB;oBACpB,aAAa;oBACb,qBAAqB;oBACrB,cAAc;oBACd,oBAAoB;oBACpB,cAAc;oBACd,cAAc;oBACd,aAAa;oBACb,YAAY;oBACZ,gBAAgB;oBAChB,gBAAgB;oBAChB,eAAe;oBACf,mBAAmB;oBACnB,aAAa;oBACb,sBAAsB;iBACvB;gBACD,YAAY,EAAE,EACb;gBACD,SAAS,EAAE,EACV;gBACD,OAAO,EAAE;oBACP,WAAW;oBACX,mBAAmB;oBACnB,aAAa;oBACb,kBAAkB;oBAClB,aAAa;oBACb,kBAAkB;oBAClB,iBAAiB;oBACjB,gBAAgB;oBAChB,YAAY;oBACZ,cAAc;oBACd,oBAAoB;oBACpB,aAAa;oBACb,qBAAqB;oBACrB,cAAc;oBACd,oBAAoB;oBACpB,cAAc;oBACd,cAAc;oBACd,aAAa;oBACb,YAAY;oBACZ,gBAAgB;oBAChB,gBAAgB;oBAChB,eAAe;oBACf,mBAAmB;oBACnB,aAAa;oBACb,sBAAsB;iBACvB;aACF;;;ACrFD;;;;;;"}
1
+ {"version":3,"file":"sd-angular-core-form.js","sources":["../../../../projects/sd-core/form/src/lib/form.module.ts","../../../../projects/sd-core/form/sd-angular-core-form.ts"],"sourcesContent":["import { NgModule } from '@angular/core';\r\nimport { FormsModule, ReactiveFormsModule } from '@angular/forms';\r\nimport { SdAutocompleteModule } from '@sd-angular/core/autocomplete';\r\nimport { SdButtonModule } from '@sd-angular/core/button';\r\nimport { SdDateRangeModule } from '@sd-angular/core/date-range';\r\nimport { SdDateTimeModule } from '@sd-angular/core/date-time';\r\nimport { SdEditorModule } from '@sd-angular/core/editor';\r\nimport { SdInputModule } from '@sd-angular/core/input';\r\nimport { SdInputCurrencyModule } from '@sd-angular/core/input-currency';\r\nimport { SdModalModule } from '@sd-angular/core/modal';\r\nimport { SdRadioModule } from '@sd-angular/core/radio';\r\nimport { SdSelectModule } from '@sd-angular/core/select';\r\nimport { SdSelectEditorModule } from '@sd-angular/core/select-editor';\r\nimport { SdSwitchModule } from '@sd-angular/core/switch';\r\nimport { SdUploadFileModule } from '@sd-angular/core/upload-file';\r\nimport { SdChipModule } from '@sd-angular/core/chip';\r\nimport { SdTextareaModule } from '@sd-angular/core/textarea';\r\nimport { SdUtilityModule } from '@sd-angular/core/utility';\r\nimport { SdCheckboxModule } from '@sd-angular/core/checkbox';\r\nimport { SdLabelModule } from '@sd-angular/core/label';\r\nimport { SdTimeModule } from '@sd-angular/core/time';\r\nimport { SdSideDrawerModule } from '@sd-angular/core/side-drawer';\r\nimport { SdQuickActionModule } from '@sd-angular/core/quick-action';\r\nimport { SdBadgeModule } from '@sd-angular/core/badge';\r\nimport { SdModalResizableModule } from '@sd-angular/core/modal-resizable';\r\nimport { SdCommonModule } from '@sd-angular/core/common';\r\n\r\n@NgModule({\r\n imports: [\r\n FormsModule,\r\n ReactiveFormsModule,\r\n SdCommonModule,\r\n SdModalModule,\r\n SdSideDrawerModule,\r\n SdLabelModule,\r\n SdUploadFileModule,\r\n SdDateRangeModule,\r\n SdDateTimeModule,\r\n SdTimeModule,\r\n SdButtonModule,\r\n SdAutocompleteModule,\r\n SdInputModule,\r\n SdInputCurrencyModule,\r\n SdSelectModule,\r\n SdSelectEditorModule,\r\n SdEditorModule,\r\n SdSwitchModule,\r\n SdRadioModule,\r\n SdChipModule,\r\n SdTextareaModule,\r\n SdCheckboxModule,\r\n SdUtilityModule,\r\n SdQuickActionModule,\r\n SdBadgeModule,\r\n SdModalResizableModule\r\n ],\r\n declarations: [\r\n ],\r\n providers: [\r\n ],\r\n exports: [\r\n FormsModule,\r\n ReactiveFormsModule,\r\n SdCommonModule,\r\n SdModalModule,\r\n SdSideDrawerModule,\r\n SdLabelModule,\r\n SdUploadFileModule,\r\n SdDateRangeModule,\r\n SdDateTimeModule,\r\n SdTimeModule,\r\n SdButtonModule,\r\n SdAutocompleteModule,\r\n SdInputModule,\r\n SdInputCurrencyModule,\r\n SdSelectModule,\r\n SdSelectEditorModule,\r\n SdEditorModule,\r\n SdSwitchModule,\r\n SdRadioModule,\r\n SdChipModule,\r\n SdTextareaModule,\r\n SdCheckboxModule,\r\n SdUtilityModule,\r\n SdQuickActionModule,\r\n SdBadgeModule,\r\n SdModalResizableModule\r\n ]\r\n})\r\nexport class SdFormModule { }\r\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;MAyFa,YAAY;;;YA9DxB,QAAQ,SAAC;gBACR,OAAO,EAAE;oBACP,WAAW;oBACX,mBAAmB;oBACnB,cAAc;oBACd,aAAa;oBACb,kBAAkB;oBAClB,aAAa;oBACb,kBAAkB;oBAClB,iBAAiB;oBACjB,gBAAgB;oBAChB,YAAY;oBACZ,cAAc;oBACd,oBAAoB;oBACpB,aAAa;oBACb,qBAAqB;oBACrB,cAAc;oBACd,oBAAoB;oBACpB,cAAc;oBACd,cAAc;oBACd,aAAa;oBACb,YAAY;oBACZ,gBAAgB;oBAChB,gBAAgB;oBAChB,eAAe;oBACf,mBAAmB;oBACnB,aAAa;oBACb,sBAAsB;iBACvB;gBACD,YAAY,EAAE,EACb;gBACD,SAAS,EAAE,EACV;gBACD,OAAO,EAAE;oBACP,WAAW;oBACX,mBAAmB;oBACnB,cAAc;oBACd,aAAa;oBACb,kBAAkB;oBAClB,aAAa;oBACb,kBAAkB;oBAClB,iBAAiB;oBACjB,gBAAgB;oBAChB,YAAY;oBACZ,cAAc;oBACd,oBAAoB;oBACpB,aAAa;oBACb,qBAAqB;oBACrB,cAAc;oBACd,oBAAoB;oBACpB,cAAc;oBACd,cAAc;oBACd,aAAa;oBACb,YAAY;oBACZ,gBAAgB;oBAChB,gBAAgB;oBAChB,eAAe;oBACf,mBAAmB;oBACnB,aAAa;oBACb,sBAAsB;iBACvB;aACF;;;ACxFD;;;;;;"}
@@ -22,7 +22,7 @@ class SdInputCurrency {
22
22
  _form.set(this, void 0);
23
23
  _model.set(this, void 0);
24
24
  this.modelChange = new EventEmitter();
25
- _align.set(this, 'right');
25
+ _align.set(this, 'left');
26
26
  _allowNegative.set(this, true);
27
27
  _decimal.set(this, ',');
28
28
  _precision.set(this, 0);
@@ -147,7 +147,7 @@ class SdInputCurrency {
147
147
  }
148
148
  }
149
149
  set align(val) {
150
- __classPrivateFieldSet(this, _align, val || 'right');
150
+ __classPrivateFieldSet(this, _align, val || 'left');
151
151
  __classPrivateFieldGet(this, _generateOption).call(this);
152
152
  }
153
153
  set allowNegative(val) {
@@ -1 +1 @@
1
- {"version":3,"file":"sd-angular-core-input-currency.js","sources":["../../../../projects/sd-core/input-currency/src/lib/input-currency.component.ts","../../../../projects/sd-core/input-currency/src/lib/input-currency-tooltip.pipe.ts","../../../../projects/sd-core/input-currency/src/lib/input-currency.module.ts","../../../../projects/sd-core/input-currency/src/public-api.ts","../../../../projects/sd-core/input-currency/sd-angular-core-input-currency.ts"],"sourcesContent":["import {\r\n Component,\r\n Input,\r\n ViewChild,\r\n Output,\r\n EventEmitter,\r\n ChangeDetectorRef,\r\n OnDestroy,\r\n AfterViewInit,\r\n ElementRef,\r\n OnInit,\r\n ContentChild\r\n} from '@angular/core';\r\nimport { AbstractControl, FormControl, NgForm, ValidatorFn, Validators, AsyncValidatorFn, FormGroup } from '@angular/forms';\r\nimport * as uuid from 'uuid';\r\nimport { debounceTime, startWith } from 'rxjs/operators';\r\nimport { Subscription } from 'rxjs';\r\nimport { CurrencyMaskInputMode } from 'ngx-currency';\r\nimport { SdFormControl } from '@sd-angular/core/common';\r\nimport { SdSuffixDirective } from '@sd-angular/core/common';\r\n\r\n@Component({\r\n selector: 'sd-input-currency',\r\n templateUrl: './input-currency.component.html',\r\n styleUrls: ['./input-currency.component.scss']\r\n})\r\nexport class SdInputCurrency implements OnDestroy, OnInit, AfterViewInit {\r\n #name = uuid.v4();\r\n @Input() set name(val: string) {\r\n if (val) {\r\n this.#name = val;\r\n }\r\n }\r\n disableErrorMessage = false;\r\n @Input('disableErrorMessage') set _disableErrorMessage(val: boolean | '') {\r\n this.disableErrorMessage = (val === '') || val;\r\n val = (val === '') || val;\r\n }\r\n @Input() size: 'sm' | 'lg';\r\n #form: FormGroup;\r\n @Input() set form(val: NgForm | FormGroup) {\r\n if (val) {\r\n if (val instanceof NgForm) {\r\n this.#form = val.form;\r\n } else {\r\n this.#form = val;\r\n }\r\n }\r\n }\r\n @Input() label: string;\r\n @Input() placeholder: string;\r\n\r\n #model: any;\r\n @Input() set model(value: any) {\r\n if (this.#model !== value) {\r\n this.#model = value;\r\n this.formControl.setValue(value);\r\n this.ref.detectChanges();\r\n }\r\n }\r\n\r\n @Output() modelChange = new EventEmitter();\r\n\r\n #align: 'left' | 'right' = 'right';\r\n @Input() set align(val: 'left' | 'right' | '') {\r\n this.#align = val || 'right';\r\n this.#generateOption();\r\n }\r\n\r\n #allowNegative = true;\r\n @Input() set allowNegative(val: boolean | '') {\r\n this.#allowNegative = (val === '') || val;\r\n this.#generateOption();\r\n }\r\n\r\n #decimal: '.' | ',' = ',';\r\n @Input() set decimal(val: '.' | ',' | '') {\r\n this.#decimal = val || ',';\r\n this.#generateOption();\r\n }\r\n\r\n #precision: number = 0;\r\n @Input() set precision(val: number) {\r\n this.#precision = val || 0;\r\n this.#generateOption();\r\n }\r\n\r\n #prefix: string;\r\n @Input() set prefix(val: string) {\r\n this.#prefix = val;\r\n this.#generateOption();\r\n }\r\n\r\n #suffix: string;\r\n @Input() set suffix(val: string) {\r\n this.#suffix = val;\r\n this.#generateOption();\r\n }\r\n\r\n #thousands: '.' | ',' = '.';\r\n @Input() set thousands(val: '.' | ',' | '') {\r\n this.#thousands = val || '.';\r\n this.#generateOption();\r\n }\r\n\r\n #nullable: boolean;\r\n @Input() set nullable(val: boolean | false) {\r\n this.#nullable = val;\r\n this.#generateOption();\r\n }\r\n\r\n #min: number;\r\n @Input() set min(val: number) {\r\n this.#min = val;\r\n this.#generateOption();\r\n }\r\n\r\n #max: number;\r\n @Input() set max(val: number) {\r\n this.#max = val;\r\n this.#generateOption();\r\n }\r\n\r\n // Validator\r\n isRequired = false;\r\n @Input() set required(val: boolean | '') {\r\n this.isRequired = (val === '') || val;\r\n this.#updateValidator();\r\n }\r\n\r\n #pattern: string;\r\n @Input() set pattern(val: string) {\r\n this.#pattern = val;\r\n this.#updateValidator();\r\n }\r\n #validator: (value: any) => string | Promise<string>;\r\n @Input() set validator(validator: (value: any) => string | Promise<string>) {\r\n this.#validator = validator;\r\n this.#updateValidator();\r\n }\r\n\r\n // Optional\r\n @Input() set disabled(val: boolean | '') {\r\n val = (val === '') || val;\r\n if (val) {\r\n this.formControl.disable();\r\n } else {\r\n this.formControl.enable();\r\n }\r\n }\r\n @ContentChild(SdSuffixDirective) sdSuffix: SdSuffixDirective;\r\n @Input() tooltip: string | ((inputValue: string) => string);\r\n @Output() sdChange = new EventEmitter<any>();\r\n @Output() sdFocus = new EventEmitter<any>();\r\n @Output() keyupEnter = new EventEmitter();\r\n\r\n @ViewChild('control') control: ElementRef;\r\n formControl = new SdFormControl();\r\n #subscription = new Subscription();\r\n options = {};\r\n constructor(private ref: ChangeDetectorRef) {\r\n }\r\n\r\n ngOnInit() {\r\n this.#subscription.add(this.formControl.touchedChanges.subscribe(() => {\r\n this.ref.markForCheck();\r\n }));\r\n this.#generateOption();\r\n }\r\n\r\n #generateOption = () => {\r\n this.options = {\r\n align: this.#align || '',\r\n allowNegative: this.#allowNegative,\r\n decimal: this.#decimal,\r\n precision: this.#precision,\r\n prefix: this.#prefix || '',\r\n suffix: this.#suffix || '',\r\n thousands: this.#thousands,\r\n nullable: this.#nullable,\r\n min: this.#min,\r\n max: this.#max,\r\n inputMode: CurrencyMaskInputMode.NATURAL\r\n }\r\n }\r\n\r\n ngAfterViewInit() {\r\n this.#subscription.add(this.formControl.valueChanges.pipe(debounceTime(200)).subscribe(this.#onChange));\r\n this.#form?.addControl(this.#name, this.formControl);\r\n this.ref.detectChanges();\r\n }\r\n\r\n ngOnDestroy() {\r\n this.#form?.removeControl(this.#name);\r\n this.#subscription.unsubscribe();\r\n }\r\n\r\n reValidate = () => {\r\n this.formControl.updateValueAndValidity();\r\n }\r\n\r\n #updateValidator = () => {\r\n this.formControl.clearValidators();\r\n this.formControl.clearAsyncValidators();\r\n const validators: ValidatorFn[] = [];\r\n const asyncValidators: AsyncValidatorFn[] = [];\r\n if (this.isRequired) {\r\n validators.push(Validators.required);\r\n }\r\n if (this.#pattern) {\r\n validators.push(Validators.pattern(this.#pattern));\r\n }\r\n if (this.#validator) {\r\n asyncValidators.push(this.#customValidator(this.#validator));\r\n }\r\n this.formControl.setValidators(validators);\r\n this.formControl.setAsyncValidators(asyncValidators);\r\n this.formControl.updateValueAndValidity();\r\n }\r\n\r\n #onChange = async (value: any) => {\r\n this.modelChange.emit(value);\r\n this.sdChange.emit(value);\r\n }\r\n\r\n onKeyupEnter = () => {\r\n this.keyupEnter.emit(this.formControl.value);\r\n }\r\n\r\n onFocus = () => {\r\n this.sdFocus.emit();\r\n }\r\n\r\n onBlur = () => {\r\n const val: string = (this.formControl.value ?? '').toString();\r\n if (val.length > val.trim().length) {\r\n this.formControl.setValue(val.trim());\r\n }\r\n }\r\n\r\n #customValidator = (func: (value: any) => string | Promise<string>): AsyncValidatorFn => {\r\n return async (c: AbstractControl): Promise<{ [key: string]: any } | null> => {\r\n const value = c.value || null;\r\n if (func && typeof (func) === 'function') {\r\n const result = func(value);\r\n if (result instanceof Promise) {\r\n const message = await result;\r\n if (message) {\r\n return {\r\n customValidator: message\r\n };\r\n }\r\n return null;\r\n }\r\n if (result) {\r\n return {\r\n customValidator: result\r\n };\r\n }\r\n return null;\r\n }\r\n return null;\r\n };\r\n }\r\n}\r\n","import { Pipe, PipeTransform } from '@angular/core';\r\n@Pipe({\r\n name: 'sdInputCurrencyTooltipPipe'\r\n})\r\nexport class SdInputCurrencyTooltipPipe implements PipeTransform {\r\n transform(value: any, tooltip: string | ((inputValue: string) => string)): string {\r\n if (typeof (tooltip) === 'string') {\r\n return tooltip;\r\n }\r\n return tooltip(value);\r\n }\r\n}\r\n","import { NgModule } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport { MatIconModule } from '@angular/material/icon';\r\nimport { MatTooltipModule } from '@angular/material/tooltip';\r\nimport { SdInputCurrency } from './input-currency.component';\r\nimport { MatInputModule } from '@angular/material/input';\r\nimport { MatFormFieldModule } from '@angular/material/form-field';\r\nimport { SdTranslateModule } from '@sd-angular/core/translate';\r\nimport { FormsModule, ReactiveFormsModule } from '@angular/forms';\r\nimport { SdInputCurrencyTooltipPipe } from './input-currency-tooltip.pipe';\r\nimport { NgxCurrencyModule } from \"ngx-currency\";\r\nimport { SdCommonModule } from '@sd-angular/core/common';\r\n\r\n@NgModule({\r\n imports: [\r\n CommonModule,\r\n FormsModule,\r\n ReactiveFormsModule,\r\n MatFormFieldModule,\r\n MatInputModule,\r\n MatIconModule,\r\n MatTooltipModule,\r\n SdCommonModule,\r\n SdTranslateModule,\r\n NgxCurrencyModule\r\n ],\r\n declarations: [\r\n SdInputCurrency,\r\n SdInputCurrencyTooltipPipe\r\n ],\r\n exports: [\r\n SdInputCurrency,\r\n SdInputCurrencyTooltipPipe\r\n ]\r\n})\r\nexport class SdInputCurrencyModule { }\r\n","/*\r\n * Public API Surface of superdev-angular-core\r\n */\r\n\r\nexport * from './lib/input-currency.module';\r\nexport * from './lib/input-currency-tooltip.pipe';\r\nexport * from './lib/input-currency.component';\r\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":["uuid.v4"],"mappings":"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"}
1
+ {"version":3,"file":"sd-angular-core-input-currency.js","sources":["../../../../projects/sd-core/input-currency/src/lib/input-currency.component.ts","../../../../projects/sd-core/input-currency/src/lib/input-currency-tooltip.pipe.ts","../../../../projects/sd-core/input-currency/src/lib/input-currency.module.ts","../../../../projects/sd-core/input-currency/src/public-api.ts","../../../../projects/sd-core/input-currency/sd-angular-core-input-currency.ts"],"sourcesContent":["import {\r\n Component,\r\n Input,\r\n ViewChild,\r\n Output,\r\n EventEmitter,\r\n ChangeDetectorRef,\r\n OnDestroy,\r\n AfterViewInit,\r\n ElementRef,\r\n OnInit,\r\n ContentChild\r\n} from '@angular/core';\r\nimport { AbstractControl, FormControl, NgForm, ValidatorFn, Validators, AsyncValidatorFn, FormGroup } from '@angular/forms';\r\nimport * as uuid from 'uuid';\r\nimport { debounceTime, startWith } from 'rxjs/operators';\r\nimport { Subscription } from 'rxjs';\r\nimport { CurrencyMaskInputMode } from 'ngx-currency';\r\nimport { SdFormControl } from '@sd-angular/core/common';\r\nimport { SdSuffixDirective } from '@sd-angular/core/common';\r\n\r\n@Component({\r\n selector: 'sd-input-currency',\r\n templateUrl: './input-currency.component.html',\r\n styleUrls: ['./input-currency.component.scss']\r\n})\r\nexport class SdInputCurrency implements OnDestroy, OnInit, AfterViewInit {\r\n #name = uuid.v4();\r\n @Input() set name(val: string) {\r\n if (val) {\r\n this.#name = val;\r\n }\r\n }\r\n disableErrorMessage = false;\r\n @Input('disableErrorMessage') set _disableErrorMessage(val: boolean | '') {\r\n this.disableErrorMessage = (val === '') || val;\r\n val = (val === '') || val;\r\n }\r\n @Input() size: 'sm' | 'lg';\r\n #form: FormGroup;\r\n @Input() set form(val: NgForm | FormGroup) {\r\n if (val) {\r\n if (val instanceof NgForm) {\r\n this.#form = val.form;\r\n } else {\r\n this.#form = val;\r\n }\r\n }\r\n }\r\n @Input() label: string;\r\n @Input() placeholder: string;\r\n\r\n #model: any;\r\n @Input() set model(value: any) {\r\n if (this.#model !== value) {\r\n this.#model = value;\r\n this.formControl.setValue(value);\r\n this.ref.detectChanges();\r\n }\r\n }\r\n\r\n @Output() modelChange = new EventEmitter();\r\n\r\n #align: 'left' | 'right' = 'left';\r\n @Input() set align(val: 'left' | 'right' | '') {\r\n this.#align = val || 'left';\r\n this.#generateOption();\r\n }\r\n\r\n #allowNegative = true;\r\n @Input() set allowNegative(val: boolean | '') {\r\n this.#allowNegative = (val === '') || val;\r\n this.#generateOption();\r\n }\r\n\r\n #decimal: '.' | ',' = ',';\r\n @Input() set decimal(val: '.' | ',' | '') {\r\n this.#decimal = val || ',';\r\n this.#generateOption();\r\n }\r\n\r\n #precision: number = 0;\r\n @Input() set precision(val: number) {\r\n this.#precision = val || 0;\r\n this.#generateOption();\r\n }\r\n\r\n #prefix: string;\r\n @Input() set prefix(val: string) {\r\n this.#prefix = val;\r\n this.#generateOption();\r\n }\r\n\r\n #suffix: string;\r\n @Input() set suffix(val: string) {\r\n this.#suffix = val;\r\n this.#generateOption();\r\n }\r\n\r\n #thousands: '.' | ',' = '.';\r\n @Input() set thousands(val: '.' | ',' | '') {\r\n this.#thousands = val || '.';\r\n this.#generateOption();\r\n }\r\n\r\n #nullable: boolean;\r\n @Input() set nullable(val: boolean | false) {\r\n this.#nullable = val;\r\n this.#generateOption();\r\n }\r\n\r\n #min: number;\r\n @Input() set min(val: number) {\r\n this.#min = val;\r\n this.#generateOption();\r\n }\r\n\r\n #max: number;\r\n @Input() set max(val: number) {\r\n this.#max = val;\r\n this.#generateOption();\r\n }\r\n\r\n // Validator\r\n isRequired = false;\r\n @Input() set required(val: boolean | '') {\r\n this.isRequired = (val === '') || val;\r\n this.#updateValidator();\r\n }\r\n\r\n #pattern: string;\r\n @Input() set pattern(val: string) {\r\n this.#pattern = val;\r\n this.#updateValidator();\r\n }\r\n #validator: (value: any) => string | Promise<string>;\r\n @Input() set validator(validator: (value: any) => string | Promise<string>) {\r\n this.#validator = validator;\r\n this.#updateValidator();\r\n }\r\n\r\n // Optional\r\n @Input() set disabled(val: boolean | '') {\r\n val = (val === '') || val;\r\n if (val) {\r\n this.formControl.disable();\r\n } else {\r\n this.formControl.enable();\r\n }\r\n }\r\n @ContentChild(SdSuffixDirective) sdSuffix: SdSuffixDirective;\r\n @Input() tooltip: string | ((inputValue: string) => string);\r\n @Output() sdChange = new EventEmitter<any>();\r\n @Output() sdFocus = new EventEmitter<any>();\r\n @Output() keyupEnter = new EventEmitter();\r\n\r\n @ViewChild('control') control: ElementRef;\r\n formControl = new SdFormControl();\r\n #subscription = new Subscription();\r\n options = {};\r\n constructor(private ref: ChangeDetectorRef) {\r\n }\r\n\r\n ngOnInit() {\r\n this.#subscription.add(this.formControl.touchedChanges.subscribe(() => {\r\n this.ref.markForCheck();\r\n }));\r\n this.#generateOption();\r\n }\r\n\r\n #generateOption = () => {\r\n this.options = {\r\n align: this.#align || '',\r\n allowNegative: this.#allowNegative,\r\n decimal: this.#decimal,\r\n precision: this.#precision,\r\n prefix: this.#prefix || '',\r\n suffix: this.#suffix || '',\r\n thousands: this.#thousands,\r\n nullable: this.#nullable,\r\n min: this.#min,\r\n max: this.#max,\r\n inputMode: CurrencyMaskInputMode.NATURAL\r\n }\r\n }\r\n\r\n ngAfterViewInit() {\r\n this.#subscription.add(this.formControl.valueChanges.pipe(debounceTime(200)).subscribe(this.#onChange));\r\n this.#form?.addControl(this.#name, this.formControl);\r\n this.ref.detectChanges();\r\n }\r\n\r\n ngOnDestroy() {\r\n this.#form?.removeControl(this.#name);\r\n this.#subscription.unsubscribe();\r\n }\r\n\r\n reValidate = () => {\r\n this.formControl.updateValueAndValidity();\r\n }\r\n\r\n #updateValidator = () => {\r\n this.formControl.clearValidators();\r\n this.formControl.clearAsyncValidators();\r\n const validators: ValidatorFn[] = [];\r\n const asyncValidators: AsyncValidatorFn[] = [];\r\n if (this.isRequired) {\r\n validators.push(Validators.required);\r\n }\r\n if (this.#pattern) {\r\n validators.push(Validators.pattern(this.#pattern));\r\n }\r\n if (this.#validator) {\r\n asyncValidators.push(this.#customValidator(this.#validator));\r\n }\r\n this.formControl.setValidators(validators);\r\n this.formControl.setAsyncValidators(asyncValidators);\r\n this.formControl.updateValueAndValidity();\r\n }\r\n\r\n #onChange = async (value: any) => {\r\n this.modelChange.emit(value);\r\n this.sdChange.emit(value);\r\n }\r\n\r\n onKeyupEnter = () => {\r\n this.keyupEnter.emit(this.formControl.value);\r\n }\r\n\r\n onFocus = () => {\r\n this.sdFocus.emit();\r\n }\r\n\r\n onBlur = () => {\r\n const val: string = (this.formControl.value ?? '').toString();\r\n if (val.length > val.trim().length) {\r\n this.formControl.setValue(val.trim());\r\n }\r\n }\r\n\r\n #customValidator = (func: (value: any) => string | Promise<string>): AsyncValidatorFn => {\r\n return async (c: AbstractControl): Promise<{ [key: string]: any } | null> => {\r\n const value = c.value || null;\r\n if (func && typeof (func) === 'function') {\r\n const result = func(value);\r\n if (result instanceof Promise) {\r\n const message = await result;\r\n if (message) {\r\n return {\r\n customValidator: message\r\n };\r\n }\r\n return null;\r\n }\r\n if (result) {\r\n return {\r\n customValidator: result\r\n };\r\n }\r\n return null;\r\n }\r\n return null;\r\n };\r\n }\r\n}\r\n","import { Pipe, PipeTransform } from '@angular/core';\r\n@Pipe({\r\n name: 'sdInputCurrencyTooltipPipe'\r\n})\r\nexport class SdInputCurrencyTooltipPipe implements PipeTransform {\r\n transform(value: any, tooltip: string | ((inputValue: string) => string)): string {\r\n if (typeof (tooltip) === 'string') {\r\n return tooltip;\r\n }\r\n return tooltip(value);\r\n }\r\n}\r\n","import { NgModule } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport { MatIconModule } from '@angular/material/icon';\r\nimport { MatTooltipModule } from '@angular/material/tooltip';\r\nimport { SdInputCurrency } from './input-currency.component';\r\nimport { MatInputModule } from '@angular/material/input';\r\nimport { MatFormFieldModule } from '@angular/material/form-field';\r\nimport { SdTranslateModule } from '@sd-angular/core/translate';\r\nimport { FormsModule, ReactiveFormsModule } from '@angular/forms';\r\nimport { SdInputCurrencyTooltipPipe } from './input-currency-tooltip.pipe';\r\nimport { NgxCurrencyModule } from \"ngx-currency\";\r\nimport { SdCommonModule } from '@sd-angular/core/common';\r\n\r\n@NgModule({\r\n imports: [\r\n CommonModule,\r\n FormsModule,\r\n ReactiveFormsModule,\r\n MatFormFieldModule,\r\n MatInputModule,\r\n MatIconModule,\r\n MatTooltipModule,\r\n SdCommonModule,\r\n SdTranslateModule,\r\n NgxCurrencyModule\r\n ],\r\n declarations: [\r\n SdInputCurrency,\r\n SdInputCurrencyTooltipPipe\r\n ],\r\n exports: [\r\n SdInputCurrency,\r\n SdInputCurrencyTooltipPipe\r\n ]\r\n})\r\nexport class SdInputCurrencyModule { }\r\n","/*\r\n * Public API Surface of superdev-angular-core\r\n */\r\n\r\nexport * from './lib/input-currency.module';\r\nexport * from './lib/input-currency-tooltip.pipe';\r\nexport * from './lib/input-currency.component';\r\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":["uuid.v4"],"mappings":"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"}
@@ -1,4 +1,4 @@
1
- import { Directive, TemplateRef, EventEmitter, Component, ChangeDetectionStrategy, ChangeDetectorRef, Input, Output, ViewChild, ContentChild, Pipe, NgModule } from '@angular/core';
1
+ import { Directive, TemplateRef, EventEmitter, Component, ChangeDetectionStrategy, ChangeDetectorRef, Input, Output, ViewChild, ContentChild, ElementRef, Pipe, NgModule } from '@angular/core';
2
2
  import { CommonModule } from '@angular/common';
3
3
  import { MatIconModule } from '@angular/material/icon';
4
4
  import { MatTooltipModule } from '@angular/material/tooltip';
@@ -8,9 +8,11 @@ import { v4 } from 'uuid';
8
8
  import { debounceTime } from 'rxjs/operators';
9
9
  import { Subscription } from 'rxjs';
10
10
  import { SdFormControl, SdViewDefDirective, SdCommonModule } from '@sd-angular/core/common';
11
+ import { SdUtilityService } from '@sd-angular/core/utility';
11
12
  import { MatInputModule } from '@angular/material/input';
12
13
  import { MatFormFieldModule } from '@angular/material/form-field';
13
14
  import { SdTranslateModule } from '@sd-angular/core/translate';
15
+ import { MatButtonModule } from '@angular/material/button';
14
16
 
15
17
  class SdInputSuffixDirective {
16
18
  constructor(templateRef) {
@@ -28,8 +30,9 @@ SdInputSuffixDirective.ctorParameters = () => [
28
30
 
29
31
  var _name, _form, _blurOnEnter_1, _model, _pattern, _validator, _subscription, _updateValidator, _onChange, _customValidator;
30
32
  class SdInput {
31
- constructor(ref) {
33
+ constructor(ref, utilityService) {
32
34
  this.ref = ref;
35
+ this.utilityService = utilityService;
33
36
  this.id = `I${v4()}`;
34
37
  _name.set(this, v4());
35
38
  _form.set(this, void 0);
@@ -53,6 +56,7 @@ class SdInput {
53
56
  this.formControl = new SdFormControl();
54
57
  _subscription.set(this, new Subscription());
55
58
  this.isFocused = false;
59
+ this.copyable = false;
56
60
  this.reValidate = () => {
57
61
  this.formControl.updateValueAndValidity();
58
62
  };
@@ -228,6 +232,9 @@ class SdInput {
228
232
  this.hideIcon = (val === '') || val;
229
233
  val = (val === '') || val;
230
234
  }
235
+ set _copyable(val) {
236
+ this.copyable = (val === '') || val;
237
+ }
231
238
  ngOnInit() {
232
239
  __classPrivateFieldGet(this, _subscription).add(this.formControl.touchedChanges.subscribe(() => {
233
240
  this.ref.markForCheck();
@@ -244,18 +251,28 @@ class SdInput {
244
251
  (_a = __classPrivateFieldGet(this, _form)) === null || _a === void 0 ? void 0 : _a.removeControl(__classPrivateFieldGet(this, _name));
245
252
  __classPrivateFieldGet(this, _subscription).unsubscribe();
246
253
  }
254
+ copyText() {
255
+ this.utilityService.copyToClipboard(__classPrivateFieldGet(this, _model));
256
+ this.btnCopy.nativeElement.innerText = 'Copied';
257
+ this.btnCopy.nativeElement.setAttribute('style', 'color: #4caf50;');
258
+ setTimeout(() => {
259
+ this.btnCopy.nativeElement.innerText = 'Copy';
260
+ this.btnCopy.nativeElement.removeAttribute('style');
261
+ }, 2000);
262
+ }
247
263
  }
248
264
  _name = new WeakMap(), _form = new WeakMap(), _blurOnEnter_1 = new WeakMap(), _model = new WeakMap(), _pattern = new WeakMap(), _validator = new WeakMap(), _subscription = new WeakMap(), _updateValidator = new WeakMap(), _onChange = new WeakMap(), _customValidator = new WeakMap();
249
265
  SdInput.decorators = [
250
266
  { type: Component, args: [{
251
267
  selector: 'sd-input',
252
- template: "<div class=\"d-flex align-items-center\" [class.sd-view]=\"sdView?.templateRef\" [class.c-focused]=\"isFocused\"\r\n [class.c-disabled]=\"formControl.disabled\" (click)=\"onClick()\">\r\n <ng-container *ngIf=\"sdView?.templateRef && !isFocused; else default\">\r\n <ng-container\r\n *ngTemplateOutlet=\"sdView.templateRef;context: { value: formControl.value }\">\r\n </ng-container>\r\n </ng-container>\r\n <ng-template #default>\r\n <mat-form-field class=\"sd-md\"\r\n [ngClass]=\"{'sd-form-tooltip':tooltip, 'sd-sm': size === 'sm', 'no-padding-wrapper': disableErrorMessage}\"\r\n appearance=\"outline\">\r\n <mat-label *ngIf=\"label\">{{label}}</mat-label>\r\n <input [id]=\"id\" [formControl]=\"formControl\" [type]=\"type\" #control matInput [placeholder]=\"placeholder || label\"\r\n (keyup.enter)=\"onKeyupEnter()\" (focus)=\"onFocus()\" (blur)=\"onBlur()\" [required]=\"isRequired\"\r\n [readonly]=\"isReadonly\" [autocomplete]=\"id\" autocorrect=\"off\">\r\n <span class=\"mr-1\" *ngIf=\"maxlength\" matSuffix>{{formControl.value?.length || 0}}/{{maxlength}}</span>\r\n <ng-container *ngIf=\"sdInputSuffix?.templateRef\" matSuffix>\r\n <ng-container *ngTemplateOutlet=\"sdInputSuffix.templateRef\">\r\n </ng-container>\r\n </ng-container>\r\n <mat-icon *ngIf=\"!hideIcon && sdClickIcon?.observers?.length\" (click)=\"onClickIcon($event)\"\r\n class=\"pointer sd-suffix-icon\" matSuffix>\r\n {{icon}}\r\n </mat-icon>\r\n <mat-error *ngIf=\"formControl.errors?.required && !disableErrorMessage\">\r\n {{'This field is required' | sdTranslate}}\r\n </mat-error>\r\n <mat-error *ngIf=\"formControl.errors?.maxlength && !disableErrorMessage\">\r\n {{'Max length' | sdTranslate}} <strong>{{maxlength}}</strong>\r\n </mat-error>\r\n <mat-error *ngIf=\"formControl.errors?.pattern && !disableErrorMessage\">\r\n {{'Pattern error' | sdTranslate}}\r\n </mat-error>\r\n <mat-error *ngIf=\"formControl.errors?.customValidator && !disableErrorMessage\">\r\n <strong>{{formControl.errors?.customValidator}}</strong>\r\n </mat-error>\r\n </mat-form-field>\r\n <div *ngIf=\"tooltip\" class=\"sd-tooltip\">\r\n <mat-icon (click)=\"sdTooltip.toggle()\" [matTooltip]=\"formControl.value | sdInputTooltipPipe:tooltip\" matSuffix\r\n #sdTooltip=\"matTooltip\">info</mat-icon>\r\n </div>\r\n </ng-template>\r\n</div>",
268
+ template: "<div class=\"d-flex align-items-center\" [class.sd-view]=\"sdView?.templateRef\" [class.c-focused]=\"isFocused\"\r\n [class.c-disabled]=\"formControl.disabled\" (click)=\"onClick()\">\r\n <ng-container *ngIf=\"sdView?.templateRef && !isFocused; else default\">\r\n <ng-container *ngTemplateOutlet=\"sdView.templateRef;context: { value: formControl.value }\">\r\n </ng-container>\r\n </ng-container>\r\n <ng-template #default>\r\n <mat-form-field class=\"sd-md\"\r\n [ngClass]=\"{'sd-form-tooltip':tooltip, 'sd-sm': size === 'sm', 'no-padding-wrapper': disableErrorMessage}\"\r\n appearance=\"outline\">\r\n <mat-label *ngIf=\"label\">{{label}}</mat-label>\r\n <input [id]=\"id\" [formControl]=\"formControl\" [type]=\"type\" #control matInput [placeholder]=\"placeholder || label\"\r\n (keyup.enter)=\"onKeyupEnter()\" (focus)=\"onFocus()\" (blur)=\"onBlur()\" [required]=\"isRequired\"\r\n [readonly]=\"isReadonly\" [autocomplete]=\"id\" autocorrect=\"off\">\r\n <button #btnCopy *ngIf=\"copyable\" matSuffix mat-flat-button aria-label=\"Clear\" class=\"btn-copy\"\r\n (click)=\"copyText()\">\r\n Copy\r\n </button>\r\n <span class=\"mr-1\" *ngIf=\"maxlength\" matSuffix>{{formControl.value?.length || 0}}/{{maxlength}}</span>\r\n <ng-container *ngIf=\"sdInputSuffix?.templateRef\" matSuffix>\r\n <ng-container *ngTemplateOutlet=\"sdInputSuffix.templateRef\">\r\n </ng-container>\r\n </ng-container>\r\n <mat-icon *ngIf=\"!hideIcon && sdClickIcon?.observers?.length\" (click)=\"onClickIcon($event)\"\r\n class=\"pointer sd-suffix-icon\" matSuffix>\r\n {{icon}}\r\n </mat-icon>\r\n <mat-error *ngIf=\"formControl.errors?.required && !disableErrorMessage\">\r\n {{'This field is required' | sdTranslate}}\r\n </mat-error>\r\n <mat-error *ngIf=\"formControl.errors?.maxlength && !disableErrorMessage\">\r\n {{'Max length' | sdTranslate}} <strong>{{maxlength}}</strong>\r\n </mat-error>\r\n <mat-error *ngIf=\"formControl.errors?.pattern && !disableErrorMessage\">\r\n {{'Pattern error' | sdTranslate}}\r\n </mat-error>\r\n <mat-error *ngIf=\"formControl.errors?.customValidator && !disableErrorMessage\">\r\n <strong>{{formControl.errors?.customValidator}}</strong>\r\n </mat-error>\r\n </mat-form-field>\r\n <div *ngIf=\"tooltip\" class=\"sd-tooltip\">\r\n <mat-icon (click)=\"sdTooltip.toggle()\" [matTooltip]=\"formControl.value | sdInputTooltipPipe:tooltip\" matSuffix\r\n #sdTooltip=\"matTooltip\">info</mat-icon>\r\n </div>\r\n </ng-template>\r\n</div>",
253
269
  changeDetection: ChangeDetectionStrategy.OnPush,
254
- styles: [":host ::ng-deep .mat-form-field.sd-form-tooltip{width:calc(100% - 30px)}:host ::ng-deep .mat-form-field.no-padding-wrapper .mat-form-field-wrapper{padding-bottom:0}:host ::ng-deep .mat-form-field.mat-form-field-appearance-outline.mat-form-field-disabled .mat-form-field-outline{background:#f6f6f6;color:#e9e9e9}:host ::ng-deep .mat-form-field input.mat-input-element:disabled{color:#4d4d4d!important}:host ::ng-deep .mat-form-field .mat-placeholder-required{color:#f82c13}.sd-view:not(.c-focused):not(.c-disabled):hover{background-color:#ebecf0}.sd-tooltip{display:inline-block;margin:auto;text-align:center;width:30px}:host{display:block;padding-top:5px}"]
270
+ styles: [":host ::ng-deep .mat-form-field.sd-form-tooltip{width:calc(100% - 30px)}:host ::ng-deep .mat-form-field.no-padding-wrapper .mat-form-field-wrapper{padding-bottom:0}:host ::ng-deep .mat-form-field.mat-form-field-appearance-outline.mat-form-field-disabled .mat-form-field-outline{background:#f6f6f6;color:#e9e9e9}:host ::ng-deep .mat-form-field input.mat-input-element:disabled{color:#4d4d4d!important}:host ::ng-deep .mat-form-field .mat-placeholder-required{color:#f82c13}.sd-view:not(.c-focused):not(.c-disabled):hover{background-color:#ebecf0}.sd-tooltip{display:inline-block;margin:auto;text-align:center;width:30px}:host{display:block;padding-top:5px}.sd-md:hover .btn-copy{visibility:visible}.btn-copy{background:#e9e9e9!important;font-size:12px;line-height:26px!important;margin-bottom:3px;visibility:hidden}"]
255
271
  },] }
256
272
  ];
257
273
  SdInput.ctorParameters = () => [
258
- { type: ChangeDetectorRef }
274
+ { type: ChangeDetectorRef },
275
+ { type: SdUtilityService }
259
276
  ];
260
277
  SdInput.propDecorators = {
261
278
  name: [{ type: Input }],
@@ -285,7 +302,9 @@ SdInput.propDecorators = {
285
302
  keyupEnter: [{ type: Output }],
286
303
  control: [{ type: ViewChild, args: ['control',] }],
287
304
  sdInputSuffix: [{ type: ContentChild, args: [SdInputSuffixDirective,] }],
288
- sdView: [{ type: ContentChild, args: [SdViewDefDirective,] }]
305
+ sdView: [{ type: ContentChild, args: [SdViewDefDirective,] }],
306
+ btnCopy: [{ type: ViewChild, args: ['btnCopy', { read: ElementRef },] }],
307
+ _copyable: [{ type: Input, args: ['copyable',] }]
289
308
  };
290
309
 
291
310
  class SdInputTooltipPipe {
@@ -333,7 +352,8 @@ SdInputModule.decorators = [
333
352
  MatIconModule,
334
353
  MatTooltipModule,
335
354
  SdTranslateModule,
336
- SdCommonModule
355
+ SdCommonModule,
356
+ MatButtonModule
337
357
  ],
338
358
  declarations: [
339
359
  SdInput,
@@ -1 +1 @@
1
- {"version":3,"file":"sd-angular-core-input.js","sources":["../../../../projects/sd-core/input/src/lib/directives/input-suffix.directive.ts","../../../../projects/sd-core/input/src/lib/input.component.ts","../../../../projects/sd-core/input/src/lib/input-tooltip.pipe.ts","../../../../projects/sd-core/input/src/lib/directives/touch.directive.ts","../../../../projects/sd-core/input/src/lib/input.module.ts","../../../../projects/sd-core/input/src/public-api.ts","../../../../projects/sd-core/input/sd-angular-core-input.ts"],"sourcesContent":["import { Directive, TemplateRef } from '@angular/core';\r\n\r\n@Directive({\r\n selector: '[sdInputSuffix]'\r\n})\r\nexport class SdInputSuffixDirective {\r\n constructor(public templateRef: TemplateRef<any>) { }\r\n}\r\n","import {\r\n Component,\r\n Input,\r\n ViewChild,\r\n Output,\r\n EventEmitter,\r\n ChangeDetectorRef,\r\n OnDestroy,\r\n AfterViewInit,\r\n ElementRef,\r\n OnInit,\r\n ContentChild,\r\n ChangeDetectionStrategy,\r\n HostListener\r\n} from '@angular/core';\r\nimport { AbstractControl, NgForm, ValidatorFn, Validators, AsyncValidatorFn, FormGroup } from '@angular/forms';\r\nimport * as uuid from 'uuid';\r\nimport { debounceTime } from 'rxjs/operators';\r\nimport { Subscription } from 'rxjs';\r\nimport { SdInputSuffixDirective } from './directives/input-suffix.directive';\r\nimport { SdFormControl } from '@sd-angular/core/common';\r\nimport { SdViewDefDirective } from '@sd-angular/core/common';\r\n@Component({\r\n selector: 'sd-input',\r\n templateUrl: './input.component.html',\r\n styleUrls: ['./input.component.scss'],\r\n changeDetection: ChangeDetectionStrategy.OnPush\r\n})\r\nexport class SdInput implements OnDestroy, OnInit, AfterViewInit {\r\n id = `I${uuid.v4()}`;\r\n #name = uuid.v4();\r\n @Input() set name(val: string) {\r\n if (val) {\r\n this.#name = val;\r\n }\r\n }\r\n @Input() size: 'sm' | 'lg';\r\n #form: FormGroup;\r\n @Input() set form(val: NgForm | FormGroup) {\r\n if (val) {\r\n if (val instanceof NgForm) {\r\n this.#form = val.form;\r\n } else {\r\n this.#form = val;\r\n }\r\n }\r\n }\r\n @Input() label: string;\r\n @Input() placeholder: string;\r\n @Input() type: 'text' | 'number' | 'password' | 'email' = 'text';\r\n disableErrorMessage = false;\r\n @Input('disableErrorMessage') set _disableErrorMessage(val: boolean | '') {\r\n this.disableErrorMessage = (val === '') || val;\r\n }\r\n #blurOnEnter = false;\r\n @Input('blurOnEnter') set _blurOnEnter(val: boolean | '') {\r\n this.#blurOnEnter = (val === '') || val;\r\n }\r\n #model: any;\r\n @Input() set model(value: any) {\r\n if (this.#model !== value) {\r\n this.#model = value;\r\n this.formControl.setValue(value, {\r\n emitEvent: false\r\n });\r\n }\r\n }\r\n @Output() modelChange = new EventEmitter();\r\n\r\n // Validator\r\n isRequired = false;\r\n @Input() set required(val: boolean | '') {\r\n this.isRequired = (val === '') || val;\r\n this.#updateValidator();\r\n }\r\n\r\n isReadonly = false;\r\n @Input() set readonly(val: boolean | '') {\r\n this.isReadonly = (val === '') || val;\r\n }\r\n\r\n minlength: number;\r\n @Input('minlength') set pMinlength(val: number) {\r\n this.minlength = +val;\r\n this.#updateValidator();\r\n }\r\n maxlength: number;\r\n @Input('maxlength') set pMaxlength(val: number) {\r\n this.maxlength = +val;\r\n this.#updateValidator();\r\n }\r\n #pattern: string;\r\n @Input() set pattern(val: string) {\r\n this.#pattern = val;\r\n this.#updateValidator();\r\n }\r\n #validator: (value: any) => string | Promise<string>;\r\n @Input() set validator(validator: (value: any) => string | Promise<string>) {\r\n this.#validator = validator;\r\n this.#updateValidator();\r\n }\r\n\r\n // Optional\r\n @Input() set disabled(val: boolean | '') {\r\n val = (val === '') || val;\r\n if (val) {\r\n this.formControl.disable();\r\n } else {\r\n this.formControl.enable();\r\n }\r\n }\r\n @Input() icon = 'search';\r\n hideIcon = false;\r\n @Input('hideIcon') set _hideIcon(val: boolean | '') {\r\n this.hideIcon = (val === '') || val;\r\n val = (val === '') || val;\r\n }\r\n @Output() sdClickIcon = new EventEmitter<any>();\r\n @Input() tooltip: string | ((inputValue: string) => string);\r\n @Output() sdChange = new EventEmitter<any>();\r\n @Output() sdFocus = new EventEmitter<any>();\r\n @Output() sdFocusForceBlur = new EventEmitter<any>();\r\n @Output() keyupEnter = new EventEmitter();\r\n\r\n @ViewChild('control') control: ElementRef;\r\n @ContentChild(SdInputSuffixDirective) sdInputSuffix: SdInputSuffixDirective;\r\n formControl = new SdFormControl();\r\n #subscription = new Subscription();\r\n @ContentChild(SdViewDefDirective) sdView: SdViewDefDirective;\r\n isFocused = false;\r\n constructor(public ref: ChangeDetectorRef) {\r\n }\r\n\r\n ngOnInit() {\r\n this.#subscription.add(this.formControl.touchedChanges.subscribe(() => {\r\n this.ref.markForCheck();\r\n }));\r\n }\r\n\r\n ngAfterViewInit() {\r\n this.#subscription.add(this.formControl.valueChanges.pipe(debounceTime(200)).subscribe(this.#onChange));\r\n this.#form?.addControl(this.#name, this.formControl);\r\n this.ref.detectChanges();\r\n }\r\n\r\n ngOnDestroy() {\r\n this.#form?.removeControl(this.#name);\r\n this.#subscription.unsubscribe();\r\n }\r\n\r\n reValidate = () => {\r\n this.formControl.updateValueAndValidity();\r\n }\r\n\r\n #updateValidator = () => {\r\n this.formControl.clearValidators();\r\n this.formControl.clearAsyncValidators();\r\n const validators: ValidatorFn[] = [];\r\n const asyncValidators: AsyncValidatorFn[] = [];\r\n if (this.isRequired) {\r\n validators.push(Validators.required);\r\n }\r\n if (this.minlength > 0) {\r\n validators.push(Validators.minLength(this.minlength));\r\n }\r\n if (this.maxlength > 0) {\r\n validators.push(Validators.maxLength(this.maxlength));\r\n }\r\n if (this.#pattern) {\r\n validators.push(Validators.pattern(this.#pattern));\r\n }\r\n if (this.#validator) {\r\n asyncValidators.push(this.#customValidator(this.#validator));\r\n }\r\n this.formControl.setValidators(validators);\r\n this.formControl.setAsyncValidators(asyncValidators);\r\n this.formControl.updateValueAndValidity();\r\n }\r\n\r\n #onChange = (value: any) => {\r\n this.modelChange.emit(value);\r\n this.sdChange.emit(value);\r\n }\r\n\r\n onKeyupEnter = () => {\r\n const val: string = (this.formControl.value ?? '').toString();\r\n if (val.length > val.trim().length) {\r\n this.formControl.setValue(val.trim());\r\n }\r\n this.keyupEnter.emit(this.formControl.value);\r\n if(this.#blurOnEnter) {\r\n this.blur();\r\n }\r\n }\r\n\r\n onClickIcon = (event: Event) => {\r\n event?.preventDefault();\r\n event?.stopPropagation();\r\n this.sdClickIcon.emit(this.formControl.value);\r\n }\r\n\r\n onFocus = () => {\r\n this.isFocused = true;\r\n this.sdFocus.emit();\r\n if (this.sdFocusForceBlur.observers?.length > 0) {\r\n this.blur();\r\n this.sdFocusForceBlur.emit();\r\n }\r\n }\r\n\r\n onBlur = () => {\r\n this.isFocused = false;\r\n const val: string = (this.formControl.value ?? '').toString();\r\n if (val.length > val.trim().length) {\r\n this.formControl.setValue(val.trim());\r\n }\r\n }\r\n\r\n onClick = () => {\r\n if(this.sdView?.templateRef) {\r\n if(!this.formControl.disabled && !this.isFocused) {\r\n this.focus();\r\n }\r\n }\r\n }\r\n\r\n blur = () => {\r\n this.isFocused = false;\r\n this.control?.nativeElement?.blur();\r\n }\r\n\r\n focus = () => {\r\n this.isFocused = true;\r\n setTimeout(() => {\r\n this.control?.nativeElement?.focus();\r\n }, 100);\r\n }\r\n\r\n #customValidator = (func: (value: any) => string | Promise<string>): AsyncValidatorFn => {\r\n return async (c: AbstractControl): Promise<{ [key: string]: any } | null> => {\r\n const value = c.value || null;\r\n if (func && typeof (func) === 'function') {\r\n const result = func(value);\r\n if (result instanceof Promise) {\r\n const message = await result;\r\n if (message) {\r\n return {\r\n customValidator: message\r\n };\r\n }\r\n return null;\r\n }\r\n if (result) {\r\n return {\r\n customValidator: result\r\n };\r\n }\r\n return null;\r\n }\r\n return null;\r\n };\r\n }\r\n}\r\n","import { Pipe, PipeTransform } from '@angular/core';\r\n@Pipe({\r\n name: 'sdInputTooltipPipe'\r\n})\r\nexport class SdInputTooltipPipe implements PipeTransform {\r\n transform(value: any, tooltip: string | ((inputValue: string) => string)): string {\r\n if (typeof (tooltip) === 'string') {\r\n return tooltip;\r\n }\r\n return tooltip(value);\r\n }\r\n}\r\n","import { ChangeDetectorRef, Directive, Input, OnChanges, SimpleChanges } from \"@angular/core\";\r\n\r\n@Directive({\r\n selector: '[touch]'\r\n})\r\nexport class TouchDirective implements OnChanges {\r\n @Input() public touch: any;\r\n @Input() public ref: ChangeDetectorRef;\r\n\r\n ngOnChanges(changes: SimpleChanges){\r\n console.log(changes);\r\n if(changes.touch){\r\n this.ref.markForCheck();\r\n }\r\n }\r\n}","import { NgModule } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport { MatIconModule } from '@angular/material/icon';\r\nimport { MatTooltipModule } from '@angular/material/tooltip';\r\nimport { SdInput } from './input.component';\r\nimport { MatInputModule } from '@angular/material/input';\r\nimport { MatFormFieldModule } from '@angular/material/form-field';\r\nimport { SdTranslateModule } from '@sd-angular/core/translate';\r\nimport { FormsModule, ReactiveFormsModule } from '@angular/forms';\r\nimport { SdInputTooltipPipe } from './input-tooltip.pipe';\r\nimport { SdInputSuffixDirective } from './directives/input-suffix.directive';\r\nimport { TouchDirective } from './directives/touch.directive';\r\nimport { SdCommonModule } from '@sd-angular/core/common';\r\n\r\n@NgModule({\r\n imports: [\r\n CommonModule,\r\n FormsModule,\r\n ReactiveFormsModule,\r\n MatFormFieldModule,\r\n MatInputModule,\r\n MatIconModule,\r\n MatTooltipModule,\r\n SdTranslateModule,\r\n SdCommonModule\r\n ],\r\n declarations: [\r\n SdInput,\r\n SdInputTooltipPipe,\r\n SdInputSuffixDirective,\r\n TouchDirective\r\n ],\r\n exports: [\r\n SdInput,\r\n SdInputTooltipPipe,\r\n SdInputSuffixDirective,\r\n SdCommonModule\r\n ]\r\n})\r\nexport class SdInputModule { }\r\n","/*\r\n * Public API Surface of superdev-angular-core\r\n */\r\n\r\nexport * from './lib/input.module';\r\nexport * from './lib/input-tooltip.pipe';\r\nexport * from './lib/directives/input-suffix.directive';\r\nexport * from './lib/input.component';\r\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n\nexport {TouchDirective as ɵa} from './src/lib/directives/touch.directive';"],"names":["uuid.v4"],"mappings":"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"}
1
+ {"version":3,"file":"sd-angular-core-input.js","sources":["../../../../projects/sd-core/input/src/lib/directives/input-suffix.directive.ts","../../../../projects/sd-core/input/src/lib/input.component.ts","../../../../projects/sd-core/input/src/lib/input-tooltip.pipe.ts","../../../../projects/sd-core/input/src/lib/directives/touch.directive.ts","../../../../projects/sd-core/input/src/lib/input.module.ts","../../../../projects/sd-core/input/src/public-api.ts","../../../../projects/sd-core/input/sd-angular-core-input.ts"],"sourcesContent":["import { Directive, TemplateRef } from '@angular/core';\r\n\r\n@Directive({\r\n selector: '[sdInputSuffix]'\r\n})\r\nexport class SdInputSuffixDirective {\r\n constructor(public templateRef: TemplateRef<any>) { }\r\n}\r\n","import {\r\n Component,\r\n Input,\r\n ViewChild,\r\n Output,\r\n EventEmitter,\r\n ChangeDetectorRef,\r\n OnDestroy,\r\n AfterViewInit,\r\n ElementRef,\r\n OnInit,\r\n ContentChild,\r\n ChangeDetectionStrategy,\r\n HostListener\r\n} from '@angular/core';\r\nimport { AbstractControl, NgForm, ValidatorFn, Validators, AsyncValidatorFn, FormGroup } from '@angular/forms';\r\nimport * as uuid from 'uuid';\r\nimport { debounceTime } from 'rxjs/operators';\r\nimport { Subscription } from 'rxjs';\r\nimport { SdInputSuffixDirective } from './directives/input-suffix.directive';\r\nimport { SdFormControl } from '@sd-angular/core/common';\r\nimport { SdViewDefDirective } from '@sd-angular/core/common';\r\nimport { SdUtilityService } from '@sd-angular/core/utility';\r\n@Component({\r\n selector: 'sd-input',\r\n templateUrl: './input.component.html',\r\n styleUrls: ['./input.component.scss'],\r\n changeDetection: ChangeDetectionStrategy.OnPush\r\n})\r\nexport class SdInput implements OnDestroy, OnInit, AfterViewInit {\r\n id = `I${uuid.v4()}`;\r\n #name = uuid.v4();\r\n @Input() set name(val: string) {\r\n if (val) {\r\n this.#name = val;\r\n }\r\n }\r\n @Input() size: 'sm' | 'lg';\r\n #form: FormGroup;\r\n @Input() set form(val: NgForm | FormGroup) {\r\n if (val) {\r\n if (val instanceof NgForm) {\r\n this.#form = val.form;\r\n } else {\r\n this.#form = val;\r\n }\r\n }\r\n }\r\n @Input() label: string;\r\n @Input() placeholder: string;\r\n @Input() type: 'text' | 'number' | 'password' | 'email' = 'text';\r\n disableErrorMessage = false;\r\n @Input('disableErrorMessage') set _disableErrorMessage(val: boolean | '') {\r\n this.disableErrorMessage = (val === '') || val;\r\n }\r\n #blurOnEnter = false;\r\n @Input('blurOnEnter') set _blurOnEnter(val: boolean | '') {\r\n this.#blurOnEnter = (val === '') || val;\r\n }\r\n #model: any;\r\n @Input() set model(value: any) {\r\n if (this.#model !== value) {\r\n this.#model = value;\r\n this.formControl.setValue(value, {\r\n emitEvent: false\r\n });\r\n }\r\n }\r\n @Output() modelChange = new EventEmitter();\r\n\r\n // Validator\r\n isRequired = false;\r\n @Input() set required(val: boolean | '') {\r\n this.isRequired = (val === '') || val;\r\n this.#updateValidator();\r\n }\r\n\r\n isReadonly = false;\r\n @Input() set readonly(val: boolean | '') {\r\n this.isReadonly = (val === '') || val;\r\n }\r\n\r\n minlength: number;\r\n @Input('minlength') set pMinlength(val: number) {\r\n this.minlength = +val;\r\n this.#updateValidator();\r\n }\r\n maxlength: number;\r\n @Input('maxlength') set pMaxlength(val: number) {\r\n this.maxlength = +val;\r\n this.#updateValidator();\r\n }\r\n #pattern: string;\r\n @Input() set pattern(val: string) {\r\n this.#pattern = val;\r\n this.#updateValidator();\r\n }\r\n #validator: (value: any) => string | Promise<string>;\r\n @Input() set validator(validator: (value: any) => string | Promise<string>) {\r\n this.#validator = validator;\r\n this.#updateValidator();\r\n }\r\n\r\n // Optional\r\n @Input() set disabled(val: boolean | '') {\r\n val = (val === '') || val;\r\n if (val) {\r\n this.formControl.disable();\r\n } else {\r\n this.formControl.enable();\r\n }\r\n }\r\n @Input() icon = 'search';\r\n hideIcon = false;\r\n @Input('hideIcon') set _hideIcon(val: boolean | '') {\r\n this.hideIcon = (val === '') || val;\r\n val = (val === '') || val;\r\n }\r\n @Output() sdClickIcon = new EventEmitter<any>();\r\n @Input() tooltip: string | ((inputValue: string) => string);\r\n @Output() sdChange = new EventEmitter<any>();\r\n @Output() sdFocus = new EventEmitter<any>();\r\n @Output() sdFocusForceBlur = new EventEmitter<any>();\r\n @Output() keyupEnter = new EventEmitter();\r\n\r\n @ViewChild('control') control: ElementRef;\r\n @ContentChild(SdInputSuffixDirective) sdInputSuffix: SdInputSuffixDirective;\r\n formControl = new SdFormControl();\r\n #subscription = new Subscription();\r\n @ContentChild(SdViewDefDirective) sdView: SdViewDefDirective;\r\n isFocused = false;\r\n @ViewChild('btnCopy', { read: ElementRef }) btnCopy: ElementRef;\r\n copyable = false;\r\n @Input('copyable') set _copyable(val: boolean | '') {\r\n this.copyable = (val === '') || val;\r\n }\r\n constructor(\r\n public ref: ChangeDetectorRef,\r\n private utilityService: SdUtilityService) {\r\n }\r\n\r\n ngOnInit() {\r\n this.#subscription.add(this.formControl.touchedChanges.subscribe(() => {\r\n this.ref.markForCheck();\r\n }));\r\n }\r\n\r\n ngAfterViewInit() {\r\n this.#subscription.add(this.formControl.valueChanges.pipe(debounceTime(200)).subscribe(this.#onChange));\r\n this.#form?.addControl(this.#name, this.formControl);\r\n this.ref.detectChanges();\r\n }\r\n\r\n ngOnDestroy() {\r\n this.#form?.removeControl(this.#name);\r\n this.#subscription.unsubscribe();\r\n }\r\n\r\n reValidate = () => {\r\n this.formControl.updateValueAndValidity();\r\n }\r\n\r\n #updateValidator = () => {\r\n this.formControl.clearValidators();\r\n this.formControl.clearAsyncValidators();\r\n const validators: ValidatorFn[] = [];\r\n const asyncValidators: AsyncValidatorFn[] = [];\r\n if (this.isRequired) {\r\n validators.push(Validators.required);\r\n }\r\n if (this.minlength > 0) {\r\n validators.push(Validators.minLength(this.minlength));\r\n }\r\n if (this.maxlength > 0) {\r\n validators.push(Validators.maxLength(this.maxlength));\r\n }\r\n if (this.#pattern) {\r\n validators.push(Validators.pattern(this.#pattern));\r\n }\r\n if (this.#validator) {\r\n asyncValidators.push(this.#customValidator(this.#validator));\r\n }\r\n this.formControl.setValidators(validators);\r\n this.formControl.setAsyncValidators(asyncValidators);\r\n this.formControl.updateValueAndValidity();\r\n }\r\n\r\n #onChange = (value: any) => {\r\n this.modelChange.emit(value);\r\n this.sdChange.emit(value);\r\n }\r\n\r\n onKeyupEnter = () => {\r\n const val: string = (this.formControl.value ?? '').toString();\r\n if (val.length > val.trim().length) {\r\n this.formControl.setValue(val.trim());\r\n }\r\n this.keyupEnter.emit(this.formControl.value);\r\n if (this.#blurOnEnter) {\r\n this.blur();\r\n }\r\n }\r\n\r\n onClickIcon = (event: Event) => {\r\n event?.preventDefault();\r\n event?.stopPropagation();\r\n this.sdClickIcon.emit(this.formControl.value);\r\n }\r\n\r\n onFocus = () => {\r\n this.isFocused = true;\r\n this.sdFocus.emit();\r\n if (this.sdFocusForceBlur.observers?.length > 0) {\r\n this.blur();\r\n this.sdFocusForceBlur.emit();\r\n }\r\n }\r\n\r\n onBlur = () => {\r\n this.isFocused = false;\r\n const val: string = (this.formControl.value ?? '').toString();\r\n if (val.length > val.trim().length) {\r\n this.formControl.setValue(val.trim());\r\n }\r\n }\r\n\r\n onClick = () => {\r\n if (this.sdView?.templateRef) {\r\n if (!this.formControl.disabled && !this.isFocused) {\r\n this.focus();\r\n }\r\n }\r\n }\r\n\r\n blur = () => {\r\n this.isFocused = false;\r\n this.control?.nativeElement?.blur();\r\n }\r\n\r\n focus = () => {\r\n this.isFocused = true;\r\n setTimeout(() => {\r\n this.control?.nativeElement?.focus();\r\n }, 100);\r\n }\r\n\r\n #customValidator = (func: (value: any) => string | Promise<string>): AsyncValidatorFn => {\r\n return async (c: AbstractControl): Promise<{ [key: string]: any } | null> => {\r\n const value = c.value || null;\r\n if (func && typeof (func) === 'function') {\r\n const result = func(value);\r\n if (result instanceof Promise) {\r\n const message = await result;\r\n if (message) {\r\n return {\r\n customValidator: message\r\n };\r\n }\r\n return null;\r\n }\r\n if (result) {\r\n return {\r\n customValidator: result\r\n };\r\n }\r\n return null;\r\n }\r\n return null;\r\n };\r\n }\r\n\r\n copyText() {\r\n this.utilityService.copyToClipboard(this.#model);\r\n this.btnCopy.nativeElement.innerText = 'Copied';\r\n this.btnCopy.nativeElement.setAttribute('style', 'color: #4caf50;');\r\n setTimeout(() => {\r\n this.btnCopy.nativeElement.innerText = 'Copy';\r\n this.btnCopy.nativeElement.removeAttribute('style');\r\n }, 2000);\r\n }\r\n}\r\n","import { Pipe, PipeTransform } from '@angular/core';\r\n@Pipe({\r\n name: 'sdInputTooltipPipe'\r\n})\r\nexport class SdInputTooltipPipe implements PipeTransform {\r\n transform(value: any, tooltip: string | ((inputValue: string) => string)): string {\r\n if (typeof (tooltip) === 'string') {\r\n return tooltip;\r\n }\r\n return tooltip(value);\r\n }\r\n}\r\n","import { ChangeDetectorRef, Directive, Input, OnChanges, SimpleChanges } from \"@angular/core\";\r\n\r\n@Directive({\r\n selector: '[touch]'\r\n})\r\nexport class TouchDirective implements OnChanges {\r\n @Input() public touch: any;\r\n @Input() public ref: ChangeDetectorRef;\r\n\r\n ngOnChanges(changes: SimpleChanges){\r\n console.log(changes);\r\n if(changes.touch){\r\n this.ref.markForCheck();\r\n }\r\n }\r\n}","import { NgModule } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport { MatIconModule } from '@angular/material/icon';\r\nimport { MatTooltipModule } from '@angular/material/tooltip';\r\nimport { SdInput } from './input.component';\r\nimport { MatInputModule } from '@angular/material/input';\r\nimport { MatFormFieldModule } from '@angular/material/form-field';\r\nimport { SdTranslateModule } from '@sd-angular/core/translate';\r\nimport { FormsModule, ReactiveFormsModule } from '@angular/forms';\r\nimport { SdInputTooltipPipe } from './input-tooltip.pipe';\r\nimport { SdInputSuffixDirective } from './directives/input-suffix.directive';\r\nimport { TouchDirective } from './directives/touch.directive';\r\nimport { SdCommonModule } from '@sd-angular/core/common';\r\nimport { MatButtonModule } from '@angular/material/button';\r\n\r\n@NgModule({\r\n imports: [\r\n CommonModule,\r\n FormsModule,\r\n ReactiveFormsModule,\r\n MatFormFieldModule,\r\n MatInputModule,\r\n MatIconModule,\r\n MatTooltipModule,\r\n SdTranslateModule,\r\n SdCommonModule,\r\n MatButtonModule\r\n ],\r\n declarations: [\r\n SdInput,\r\n SdInputTooltipPipe,\r\n SdInputSuffixDirective,\r\n TouchDirective\r\n ],\r\n exports: [\r\n SdInput,\r\n SdInputTooltipPipe,\r\n SdInputSuffixDirective,\r\n SdCommonModule\r\n ]\r\n})\r\nexport class SdInputModule { }\r\n","/*\r\n * Public API Surface of superdev-angular-core\r\n */\r\n\r\nexport * from './lib/input.module';\r\nexport * from './lib/input-tooltip.pipe';\r\nexport * from './lib/directives/input-suffix.directive';\r\nexport * from './lib/input.component';\r\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n\nexport {TouchDirective as ɵa} from './src/lib/directives/touch.directive';"],"names":["uuid.v4"],"mappings":"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"}
@@ -226,6 +226,9 @@ class SdUtilityService {
226
226
  link.click();
227
227
  document.body.removeChild(link);
228
228
  };
229
+ this.copyToClipboard = (text) => {
230
+ navigator.clipboard.writeText(text);
231
+ };
229
232
  }
230
233
  }
231
234
  _uploadId = new WeakMap(), _translate = new WeakMap();
@@ -1 +1 @@
1
- {"version":3,"file":"sd-angular-core-utility.js","sources":["../../../../projects/sd-core/utility/src/lib/directives/desktop.directive.ts","../../../../projects/sd-core/utility/src/lib/directives/mobile.directive.ts","../../../../projects/sd-core/utility/src/lib/directives/mobile-tablet.directive.ts","../../../../projects/sd-core/utility/src/lib/directives/tablet.directive.ts","../../../../projects/sd-core/utility/src/lib/pipes/currency.pipe.ts","../../../../projects/sd-core/utility/src/lib/pipes/safe-html.pipe.ts","../../../../projects/sd-core/utility/src/lib/utility.service.ts","../../../../projects/sd-core/utility/src/lib/pipes/time-different.pipe.ts","../../../../projects/sd-core/utility/src/lib/utility.module.ts","../../../../projects/sd-core/utility/sd-angular-core-utility.ts"],"sourcesContent":["\r\nimport { Directive, ViewContainerRef, TemplateRef } from '@angular/core';\r\nimport { DeviceDetectorService } from 'ngx-device-detector';\r\n\r\n@Directive({\r\n selector: '[sdDesktop]'\r\n})\r\nexport class SdDesktopDirective {\r\n constructor(\r\n private templateRef: TemplateRef<any>,\r\n private viewContainerRef: ViewContainerRef,\r\n deviceService: DeviceDetectorService,\r\n ) {\r\n if (deviceService.isDesktop()) {\r\n this.viewContainerRef.createEmbeddedView(this.templateRef);\r\n }\r\n }\r\n}\r\n","\r\nimport { Directive, TemplateRef, ViewContainerRef } from '@angular/core';\r\nimport { DeviceDetectorService } from 'ngx-device-detector';\r\n\r\n@Directive({\r\n selector: '[sdMobile]'\r\n})\r\nexport class SdMobileDirective {\r\n constructor(\r\n private templateRef: TemplateRef<any>,\r\n private viewContainerRef: ViewContainerRef,\r\n deviceService: DeviceDetectorService,\r\n ) {\r\n if (deviceService.isMobile()) {\r\n this.viewContainerRef.createEmbeddedView(this.templateRef);\r\n }\r\n }\r\n}\r\n","\r\nimport { Directive, TemplateRef, ViewContainerRef } from '@angular/core';\r\nimport { DeviceDetectorService } from 'ngx-device-detector';\r\n\r\n@Directive({\r\n selector: '[sdMobileTablet]'\r\n})\r\nexport class SdMobileTabletDirective {\r\n constructor(\r\n private templateRef: TemplateRef<any>,\r\n private viewContainerRef: ViewContainerRef,\r\n deviceService: DeviceDetectorService,\r\n ) {\r\n if (deviceService.isMobile() || deviceService.isTablet()) {\r\n this.viewContainerRef.createEmbeddedView(this.templateRef);\r\n }\r\n }\r\n}\r\n","\r\nimport { Directive, TemplateRef, ViewContainerRef } from '@angular/core';\r\nimport { DeviceDetectorService } from 'ngx-device-detector';\r\n\r\n@Directive({\r\n selector: '[sdTablet]'\r\n})\r\nexport class SdTabletDirective {\r\n constructor(\r\n private templateRef: TemplateRef<any>,\r\n private viewContainerRef: ViewContainerRef,\r\n deviceService: DeviceDetectorService,\r\n ) {\r\n if (deviceService.isTablet()) {\r\n this.viewContainerRef.createEmbeddedView(this.templateRef);\r\n }\r\n }\r\n}\r\n","import { Pipe, PipeTransform } from '@angular/core';\r\n@Pipe({\r\n name: 'sdCurrency',\r\n})\r\nexport class SdCurrencyPipe implements PipeTransform {\r\n transform(value: any) {\r\n return Number.toVNCurrency(value);\r\n }\r\n}\r\n","import { Pipe, PipeTransform } from '@angular/core';\r\nimport { DomSanitizer } from '@angular/platform-browser';\r\n\r\n@Pipe({\r\n name: 'safeHtml',\r\n})\r\nexport class SdSafeHtmlPipe implements PipeTransform {\r\n\r\n constructor(private sanitizer: DomSanitizer) { }\r\n\r\n transform(html: string) {\r\n return this.sanitizer.bypassSecurityTrustHtml(html);\r\n }\r\n}\r\n","import { Injectable } from '@angular/core';\r\nimport md5 from 'md5';\r\nimport $ from 'jquery';\r\nimport * as uuid from 'uuid';\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class SdUtilityService {\r\n #uploadId = 'U1e09c1c0-b647-437e-995e-d7a1a1b60550';\r\n\r\n constructor() { }\r\n #translate = (value: string) => value;\r\n\r\n hashMD5 = (key: string) => md5(key);\r\n\r\n arrayToObject = <T>(items: T[], key: string): { [key: string]: T } => {\r\n return items.reduce((obj, item) => { obj[item[key]] = item; return obj; }, {});\r\n }\r\n\r\n changeAliasLowerCase = (alias: string) => {\r\n let str = alias?.toString() ?? '';\r\n str = str.toString().toLowerCase();\r\n str = str.replace(/à|á|ạ|ả|ã|â|ầ|ấ|ậ|ẩ|ẫ|ă|ằ|ắ|ặ|ẳ|ẵ/g, 'a');\r\n str = str.replace(/è|é|ẹ|ẻ|ẽ|ê|ề|ế|ệ|ể|ễ/g, 'e');\r\n str = str.replace(/ì|í|ị|ỉ|ĩ/g, 'i');\r\n str = str.replace(/ò|ó|ọ|ỏ|õ|ô|ồ|ố|ộ|ổ|ỗ|ơ|ờ|ớ|ợ|ở|ỡ/g, 'o');\r\n str = str.replace(/ù|ú|ụ|ủ|ũ|ư|ừ|ứ|ự|ử|ữ/g, 'u');\r\n str = str.replace(/ỳ|ý|ỵ|ỷ|ỹ/g, 'y');\r\n str = str.replace(/đ/g, 'd');\r\n str = str.replace(/!|@|%|\\^|\\*|\\(|\\)|\\+|\\=|\\<|\\>|\\?|\\/|,|\\.|\\:|\\;|\\'|\\\"|\\&|\\#|\\[|\\]|~|\\$|_|`|-|{|}|\\||\\\\/g, ' ');\r\n str = str.replace(/ + /g, ' ');\r\n str = str.trim();\r\n return str;\r\n }\r\n\r\n timeDifference = (previous: any, current: any = new Date()) => {\r\n if (!Date.isDate(previous)) {\r\n return '';\r\n }\r\n if (!Date.isDate(current)) {\r\n return '';\r\n }\r\n const from = new Date(previous);\r\n const to = new Date(current);\r\n const msPerMinute = 60 * 1000;\r\n const msPerHour = msPerMinute * 60;\r\n const msPerDay = msPerHour * 24;\r\n const msPerMonth = msPerDay * 30;\r\n const msPerYear = msPerDay * 365;\r\n const elapsed = to.getTime() - from.getTime();\r\n\r\n if (elapsed < msPerMinute) {\r\n return `${Math.round(elapsed / 1000)} ${this.#translate('seconds ago')}`;\r\n }\r\n\r\n if (elapsed < msPerHour) {\r\n return `${Math.round(elapsed / msPerMinute)} ${this.#translate('minutes ago')}`;\r\n }\r\n\r\n if (elapsed < msPerDay) {\r\n return `${Math.round(elapsed / msPerHour)} ${this.#translate('hours ago')}`;\r\n }\r\n\r\n if (elapsed < msPerMonth) {\r\n return `${Math.round(elapsed / msPerDay)} ${this.#translate('days ago')}`;\r\n }\r\n\r\n if (elapsed < msPerYear) {\r\n return `${Math.round(elapsed / msPerMonth)} ${this.#translate('months ago')}`;\r\n }\r\n return `${Math.round(elapsed / msPerYear)} ${this.#translate('years ago')}`;\r\n }\r\n\r\n upload = (option?: {\r\n extensions?: string[],\r\n maxSizeInMb?: number,\r\n validator?: (fileName: string) => string\r\n }): Promise<File> => {\r\n const promise = new Promise<File>((resolve, reject) => {\r\n if ($(`#${this.#uploadId}`).length) {\r\n $('body').children(`#${this.#uploadId}`).remove();\r\n }\r\n $('body').append(`<input id=\"${this.#uploadId}\" style=\"display: none\" type=\"file\" />`);\r\n $(`#${this.#uploadId}`).on('change', (evt: any) => {\r\n try {\r\n const target: DataTransfer = evt.target;\r\n const file = target.files.item(0);\r\n if (file) {\r\n const lastDot = file.name.lastIndexOf('.');\r\n if (lastDot === -1) {\r\n const message = this.#translate(`Invalid file extension`);\r\n throw new Error(message);\r\n }\r\n const extension = file.name.substring(lastDot + 1);\r\n if (option) {\r\n if (option.extensions?.length && !option.extensions.some(e => e.toUpperCase() === extension.toUpperCase())) {\r\n const message = `[${file.name}] ${this.#translate('Uploaded file is not match extension')} ${option.extensions.join(', ')}`;\r\n throw new Error(message);\r\n }\r\n if (option.maxSizeInMb > 0 && option.maxSizeInMb * 1024 * 1024 < file.size) {\r\n const message = `[${file.name}] ${this.#translate('Max file size')} ${option.maxSizeInMb} Mbs`;\r\n throw new Error(message);\r\n }\r\n if (option.validator && option.validator(file.name)) {\r\n const message = option.validator(file.name);\r\n throw new Error(message);\r\n }\r\n }\r\n resolve(file);\r\n }\r\n } catch (error) {\r\n reject(error);\r\n }\r\n });\r\n $(`#${this.#uploadId}`).trigger('click');\r\n });\r\n return promise;\r\n }\r\n\r\n download = (filePath: string, fileName?: string) => {\r\n const link: any = document.createElement('a');\r\n link.download = `${fileName || uuid.v4()}`;\r\n link.href = filePath;\r\n document.body.appendChild(link);\r\n link.click();\r\n document.body.removeChild(link);\r\n }\r\n}\r\n","import { Pipe, PipeTransform } from '@angular/core';\r\nimport { interval, Observable, of } from 'rxjs';\r\nimport { map } from 'rxjs/operators';\r\nimport { SdUtilityService } from '../utility.service';\r\n@Pipe({\r\n name: 'sdTimeDifferent',\r\n})\r\nexport class SdTimeDifferentPipe implements PipeTransform {\r\n private maxSecond = 60;\r\n private maxMinute = this.maxSecond * 60;\r\n private maxHour = this.maxMinute * 24;\r\n private maxDay = this.maxHour * 30;\r\n private maxMonth = this.maxHour * 365;\r\n constructor(private utilityService: SdUtilityService) { }\r\n transform(value: any, format: string, different: 'second' | 'minute' | 'hour' | 'day' | 'month'): Observable<string> {\r\n if (!Date.isDate(value)) {\r\n return of(null);\r\n }\r\n if (!different) {\r\n return of(Date.toFormat(value, format));\r\n }\r\n if (Math.round((new Date().getTime() - new Date(value).getTime()) / 1000) < 0) {\r\n return of(Date.toFormat(value, format));\r\n }\r\n return interval(1000).pipe(map(() => {\r\n const timeDifferent = Math.round((new Date().getTime() - new Date(value).getTime()) / 1000);\r\n if (different === 'month' && timeDifferent < this.maxMonth) {\r\n return this.utilityService.timeDifference(value);\r\n }\r\n if (different === 'day' && timeDifferent < this.maxDay) {\r\n return this.utilityService.timeDifference(value);\r\n }\r\n if (different === 'hour' && timeDifferent < this.maxHour) {\r\n return this.utilityService.timeDifference(value);\r\n }\r\n if (different === 'minute' && timeDifferent < this.maxMinute) {\r\n return this.utilityService.timeDifference(value);\r\n }\r\n if (different === 'second' && timeDifferent < this.maxSecond) {\r\n return this.utilityService.timeDifference(value);\r\n }\r\n return Date.toFormat(value, format);\r\n }));\r\n }\r\n}\r\n","import { NgModule } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport { SdDesktopDirective } from './directives/desktop.directive';\r\nimport { SdMobileDirective } from './directives/mobile.directive';\r\nimport { SdMobileTabletDirective } from './directives/mobile-tablet.directive';\r\nimport { SdTabletDirective } from './directives/tablet.directive';\r\n\r\nimport { SdCurrencyPipe } from './pipes/currency.pipe';\r\nimport { SdSafeHtmlPipe } from './pipes/safe-html.pipe';\r\nimport { SdTimeDifferentPipe } from './pipes/time-different.pipe';\r\n\r\n@NgModule({\r\n imports: [\r\n CommonModule\r\n ],\r\n declarations: [\r\n SdDesktopDirective,\r\n SdMobileTabletDirective,\r\n SdMobileDirective,\r\n SdTabletDirective,\r\n SdCurrencyPipe,\r\n SdSafeHtmlPipe,\r\n SdTimeDifferentPipe\r\n ],\r\n exports: [\r\n SdDesktopDirective,\r\n SdMobileTabletDirective,\r\n SdMobileDirective,\r\n SdTabletDirective,\r\n SdCurrencyPipe,\r\n SdSafeHtmlPipe,\r\n SdTimeDifferentPipe\r\n ],\r\n providers: [\r\n SdCurrencyPipe,\r\n SdSafeHtmlPipe,\r\n SdTimeDifferentPipe\r\n ]\r\n})\r\nexport class SdUtilityModule {}\r\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":["uuid.v4"],"mappings":"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"}
1
+ {"version":3,"file":"sd-angular-core-utility.js","sources":["../../../../projects/sd-core/utility/src/lib/directives/desktop.directive.ts","../../../../projects/sd-core/utility/src/lib/directives/mobile.directive.ts","../../../../projects/sd-core/utility/src/lib/directives/mobile-tablet.directive.ts","../../../../projects/sd-core/utility/src/lib/directives/tablet.directive.ts","../../../../projects/sd-core/utility/src/lib/pipes/currency.pipe.ts","../../../../projects/sd-core/utility/src/lib/pipes/safe-html.pipe.ts","../../../../projects/sd-core/utility/src/lib/utility.service.ts","../../../../projects/sd-core/utility/src/lib/pipes/time-different.pipe.ts","../../../../projects/sd-core/utility/src/lib/utility.module.ts","../../../../projects/sd-core/utility/sd-angular-core-utility.ts"],"sourcesContent":["\r\nimport { Directive, ViewContainerRef, TemplateRef } from '@angular/core';\r\nimport { DeviceDetectorService } from 'ngx-device-detector';\r\n\r\n@Directive({\r\n selector: '[sdDesktop]'\r\n})\r\nexport class SdDesktopDirective {\r\n constructor(\r\n private templateRef: TemplateRef<any>,\r\n private viewContainerRef: ViewContainerRef,\r\n deviceService: DeviceDetectorService,\r\n ) {\r\n if (deviceService.isDesktop()) {\r\n this.viewContainerRef.createEmbeddedView(this.templateRef);\r\n }\r\n }\r\n}\r\n","\r\nimport { Directive, TemplateRef, ViewContainerRef } from '@angular/core';\r\nimport { DeviceDetectorService } from 'ngx-device-detector';\r\n\r\n@Directive({\r\n selector: '[sdMobile]'\r\n})\r\nexport class SdMobileDirective {\r\n constructor(\r\n private templateRef: TemplateRef<any>,\r\n private viewContainerRef: ViewContainerRef,\r\n deviceService: DeviceDetectorService,\r\n ) {\r\n if (deviceService.isMobile()) {\r\n this.viewContainerRef.createEmbeddedView(this.templateRef);\r\n }\r\n }\r\n}\r\n","\r\nimport { Directive, TemplateRef, ViewContainerRef } from '@angular/core';\r\nimport { DeviceDetectorService } from 'ngx-device-detector';\r\n\r\n@Directive({\r\n selector: '[sdMobileTablet]'\r\n})\r\nexport class SdMobileTabletDirective {\r\n constructor(\r\n private templateRef: TemplateRef<any>,\r\n private viewContainerRef: ViewContainerRef,\r\n deviceService: DeviceDetectorService,\r\n ) {\r\n if (deviceService.isMobile() || deviceService.isTablet()) {\r\n this.viewContainerRef.createEmbeddedView(this.templateRef);\r\n }\r\n }\r\n}\r\n","\r\nimport { Directive, TemplateRef, ViewContainerRef } from '@angular/core';\r\nimport { DeviceDetectorService } from 'ngx-device-detector';\r\n\r\n@Directive({\r\n selector: '[sdTablet]'\r\n})\r\nexport class SdTabletDirective {\r\n constructor(\r\n private templateRef: TemplateRef<any>,\r\n private viewContainerRef: ViewContainerRef,\r\n deviceService: DeviceDetectorService,\r\n ) {\r\n if (deviceService.isTablet()) {\r\n this.viewContainerRef.createEmbeddedView(this.templateRef);\r\n }\r\n }\r\n}\r\n","import { Pipe, PipeTransform } from '@angular/core';\r\n@Pipe({\r\n name: 'sdCurrency',\r\n})\r\nexport class SdCurrencyPipe implements PipeTransform {\r\n transform(value: any) {\r\n return Number.toVNCurrency(value);\r\n }\r\n}\r\n","import { Pipe, PipeTransform } from '@angular/core';\r\nimport { DomSanitizer } from '@angular/platform-browser';\r\n\r\n@Pipe({\r\n name: 'safeHtml',\r\n})\r\nexport class SdSafeHtmlPipe implements PipeTransform {\r\n\r\n constructor(private sanitizer: DomSanitizer) { }\r\n\r\n transform(html: string) {\r\n return this.sanitizer.bypassSecurityTrustHtml(html);\r\n }\r\n}\r\n","import { Injectable } from '@angular/core';\r\nimport md5 from 'md5';\r\nimport $ from 'jquery';\r\nimport * as uuid from 'uuid';\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class SdUtilityService {\r\n #uploadId = 'U1e09c1c0-b647-437e-995e-d7a1a1b60550';\r\n\r\n constructor() { }\r\n #translate = (value: string) => value;\r\n\r\n hashMD5 = (key: string) => md5(key);\r\n\r\n arrayToObject = <T>(items: T[], key: string): { [key: string]: T } => {\r\n return items.reduce((obj, item) => { obj[item[key]] = item; return obj; }, {});\r\n }\r\n\r\n changeAliasLowerCase = (alias: string) => {\r\n let str = alias?.toString() ?? '';\r\n str = str.toString().toLowerCase();\r\n str = str.replace(/à|á|ạ|ả|ã|â|ầ|ấ|ậ|ẩ|ẫ|ă|ằ|ắ|ặ|ẳ|ẵ/g, 'a');\r\n str = str.replace(/è|é|ẹ|ẻ|ẽ|ê|ề|ế|ệ|ể|ễ/g, 'e');\r\n str = str.replace(/ì|í|ị|ỉ|ĩ/g, 'i');\r\n str = str.replace(/ò|ó|ọ|ỏ|õ|ô|ồ|ố|ộ|ổ|ỗ|ơ|ờ|ớ|ợ|ở|ỡ/g, 'o');\r\n str = str.replace(/ù|ú|ụ|ủ|ũ|ư|ừ|ứ|ự|ử|ữ/g, 'u');\r\n str = str.replace(/ỳ|ý|ỵ|ỷ|ỹ/g, 'y');\r\n str = str.replace(/đ/g, 'd');\r\n str = str.replace(/!|@|%|\\^|\\*|\\(|\\)|\\+|\\=|\\<|\\>|\\?|\\/|,|\\.|\\:|\\;|\\'|\\\"|\\&|\\#|\\[|\\]|~|\\$|_|`|-|{|}|\\||\\\\/g, ' ');\r\n str = str.replace(/ + /g, ' ');\r\n str = str.trim();\r\n return str;\r\n }\r\n\r\n timeDifference = (previous: any, current: any = new Date()) => {\r\n if (!Date.isDate(previous)) {\r\n return '';\r\n }\r\n if (!Date.isDate(current)) {\r\n return '';\r\n }\r\n const from = new Date(previous);\r\n const to = new Date(current);\r\n const msPerMinute = 60 * 1000;\r\n const msPerHour = msPerMinute * 60;\r\n const msPerDay = msPerHour * 24;\r\n const msPerMonth = msPerDay * 30;\r\n const msPerYear = msPerDay * 365;\r\n const elapsed = to.getTime() - from.getTime();\r\n\r\n if (elapsed < msPerMinute) {\r\n return `${Math.round(elapsed / 1000)} ${this.#translate('seconds ago')}`;\r\n }\r\n\r\n if (elapsed < msPerHour) {\r\n return `${Math.round(elapsed / msPerMinute)} ${this.#translate('minutes ago')}`;\r\n }\r\n\r\n if (elapsed < msPerDay) {\r\n return `${Math.round(elapsed / msPerHour)} ${this.#translate('hours ago')}`;\r\n }\r\n\r\n if (elapsed < msPerMonth) {\r\n return `${Math.round(elapsed / msPerDay)} ${this.#translate('days ago')}`;\r\n }\r\n\r\n if (elapsed < msPerYear) {\r\n return `${Math.round(elapsed / msPerMonth)} ${this.#translate('months ago')}`;\r\n }\r\n return `${Math.round(elapsed / msPerYear)} ${this.#translate('years ago')}`;\r\n }\r\n\r\n upload = (option?: {\r\n extensions?: string[],\r\n maxSizeInMb?: number,\r\n validator?: (fileName: string) => string\r\n }): Promise<File> => {\r\n const promise = new Promise<File>((resolve, reject) => {\r\n if ($(`#${this.#uploadId}`).length) {\r\n $('body').children(`#${this.#uploadId}`).remove();\r\n }\r\n $('body').append(`<input id=\"${this.#uploadId}\" style=\"display: none\" type=\"file\" />`);\r\n $(`#${this.#uploadId}`).on('change', (evt: any) => {\r\n try {\r\n const target: DataTransfer = evt.target;\r\n const file = target.files.item(0);\r\n if (file) {\r\n const lastDot = file.name.lastIndexOf('.');\r\n if (lastDot === -1) {\r\n const message = this.#translate(`Invalid file extension`);\r\n throw new Error(message);\r\n }\r\n const extension = file.name.substring(lastDot + 1);\r\n if (option) {\r\n if (option.extensions?.length && !option.extensions.some(e => e.toUpperCase() === extension.toUpperCase())) {\r\n const message = `[${file.name}] ${this.#translate('Uploaded file is not match extension')} ${option.extensions.join(', ')}`;\r\n throw new Error(message);\r\n }\r\n if (option.maxSizeInMb > 0 && option.maxSizeInMb * 1024 * 1024 < file.size) {\r\n const message = `[${file.name}] ${this.#translate('Max file size')} ${option.maxSizeInMb} Mbs`;\r\n throw new Error(message);\r\n }\r\n if (option.validator && option.validator(file.name)) {\r\n const message = option.validator(file.name);\r\n throw new Error(message);\r\n }\r\n }\r\n resolve(file);\r\n }\r\n } catch (error) {\r\n reject(error);\r\n }\r\n });\r\n $(`#${this.#uploadId}`).trigger('click');\r\n });\r\n return promise;\r\n }\r\n\r\n download = (filePath: string, fileName?: string) => {\r\n const link: any = document.createElement('a');\r\n link.download = `${fileName || uuid.v4()}`;\r\n link.href = filePath;\r\n document.body.appendChild(link);\r\n link.click();\r\n document.body.removeChild(link);\r\n }\r\n\r\n copyToClipboard = (text: string) => {\r\n navigator.clipboard.writeText(text);\r\n }\r\n}\r\n","import { Pipe, PipeTransform } from '@angular/core';\r\nimport { interval, Observable, of } from 'rxjs';\r\nimport { map } from 'rxjs/operators';\r\nimport { SdUtilityService } from '../utility.service';\r\n@Pipe({\r\n name: 'sdTimeDifferent',\r\n})\r\nexport class SdTimeDifferentPipe implements PipeTransform {\r\n private maxSecond = 60;\r\n private maxMinute = this.maxSecond * 60;\r\n private maxHour = this.maxMinute * 24;\r\n private maxDay = this.maxHour * 30;\r\n private maxMonth = this.maxHour * 365;\r\n constructor(private utilityService: SdUtilityService) { }\r\n transform(value: any, format: string, different: 'second' | 'minute' | 'hour' | 'day' | 'month'): Observable<string> {\r\n if (!Date.isDate(value)) {\r\n return of(null);\r\n }\r\n if (!different) {\r\n return of(Date.toFormat(value, format));\r\n }\r\n if (Math.round((new Date().getTime() - new Date(value).getTime()) / 1000) < 0) {\r\n return of(Date.toFormat(value, format));\r\n }\r\n return interval(1000).pipe(map(() => {\r\n const timeDifferent = Math.round((new Date().getTime() - new Date(value).getTime()) / 1000);\r\n if (different === 'month' && timeDifferent < this.maxMonth) {\r\n return this.utilityService.timeDifference(value);\r\n }\r\n if (different === 'day' && timeDifferent < this.maxDay) {\r\n return this.utilityService.timeDifference(value);\r\n }\r\n if (different === 'hour' && timeDifferent < this.maxHour) {\r\n return this.utilityService.timeDifference(value);\r\n }\r\n if (different === 'minute' && timeDifferent < this.maxMinute) {\r\n return this.utilityService.timeDifference(value);\r\n }\r\n if (different === 'second' && timeDifferent < this.maxSecond) {\r\n return this.utilityService.timeDifference(value);\r\n }\r\n return Date.toFormat(value, format);\r\n }));\r\n }\r\n}\r\n","import { NgModule } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport { SdDesktopDirective } from './directives/desktop.directive';\r\nimport { SdMobileDirective } from './directives/mobile.directive';\r\nimport { SdMobileTabletDirective } from './directives/mobile-tablet.directive';\r\nimport { SdTabletDirective } from './directives/tablet.directive';\r\n\r\nimport { SdCurrencyPipe } from './pipes/currency.pipe';\r\nimport { SdSafeHtmlPipe } from './pipes/safe-html.pipe';\r\nimport { SdTimeDifferentPipe } from './pipes/time-different.pipe';\r\n\r\n@NgModule({\r\n imports: [\r\n CommonModule\r\n ],\r\n declarations: [\r\n SdDesktopDirective,\r\n SdMobileTabletDirective,\r\n SdMobileDirective,\r\n SdTabletDirective,\r\n SdCurrencyPipe,\r\n SdSafeHtmlPipe,\r\n SdTimeDifferentPipe\r\n ],\r\n exports: [\r\n SdDesktopDirective,\r\n SdMobileTabletDirective,\r\n SdMobileDirective,\r\n SdTabletDirective,\r\n SdCurrencyPipe,\r\n SdSafeHtmlPipe,\r\n SdTimeDifferentPipe\r\n ],\r\n providers: [\r\n SdCurrencyPipe,\r\n SdSafeHtmlPipe,\r\n SdTimeDifferentPipe\r\n ]\r\n})\r\nexport class SdUtilityModule {}\r\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":["uuid.v4"],"mappings":"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"}