@smallpearl/ngx-helper 0.29.23
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.
- package/README.md +230 -0
- package/core/index.d.ts +2 -0
- package/core/src/ngx-helper.d.ts +7 -0
- package/core/src/version.d.ts +1 -0
- package/entity-field/index.d.ts +2 -0
- package/entity-field/src/entity-field-spec.d.ts +69 -0
- package/entity-field/src/provider.d.ts +27 -0
- package/fesm2022/smallpearl-ngx-helper-core.mjs +23 -0
- package/fesm2022/smallpearl-ngx-helper-core.mjs.map +1 -0
- package/fesm2022/smallpearl-ngx-helper-entity-field.mjs +112 -0
- package/fesm2022/smallpearl-ngx-helper-entity-field.mjs.map +1 -0
- package/fesm2022/smallpearl-ngx-helper-forms.mjs +112 -0
- package/fesm2022/smallpearl-ngx-helper-forms.mjs.map +1 -0
- package/fesm2022/smallpearl-ngx-helper-hover-dropdown.mjs +108 -0
- package/fesm2022/smallpearl-ngx-helper-hover-dropdown.mjs.map +1 -0
- package/fesm2022/smallpearl-ngx-helper-locale.mjs +296 -0
- package/fesm2022/smallpearl-ngx-helper-locale.mjs.map +1 -0
- package/fesm2022/smallpearl-ngx-helper-mat-busy-wheel.mjs +504 -0
- package/fesm2022/smallpearl-ngx-helper-mat-busy-wheel.mjs.map +1 -0
- package/fesm2022/smallpearl-ngx-helper-mat-context-menu.mjs +184 -0
- package/fesm2022/smallpearl-ngx-helper-mat-context-menu.mjs.map +1 -0
- package/fesm2022/smallpearl-ngx-helper-mat-entity-crud.mjs +1486 -0
- package/fesm2022/smallpearl-ngx-helper-mat-entity-crud.mjs.map +1 -0
- package/fesm2022/smallpearl-ngx-helper-mat-entity-list.mjs +800 -0
- package/fesm2022/smallpearl-ngx-helper-mat-entity-list.mjs.map +1 -0
- package/fesm2022/smallpearl-ngx-helper-mat-file-input.mjs +328 -0
- package/fesm2022/smallpearl-ngx-helper-mat-file-input.mjs.map +1 -0
- package/fesm2022/smallpearl-ngx-helper-mat-form-error.mjs +468 -0
- package/fesm2022/smallpearl-ngx-helper-mat-form-error.mjs.map +1 -0
- package/fesm2022/smallpearl-ngx-helper-mat-select-entity.mjs +854 -0
- package/fesm2022/smallpearl-ngx-helper-mat-select-entity.mjs.map +1 -0
- package/fesm2022/smallpearl-ngx-helper-mat-side-menu-layout.mjs +930 -0
- package/fesm2022/smallpearl-ngx-helper-mat-side-menu-layout.mjs.map +1 -0
- package/fesm2022/smallpearl-ngx-helper-mat-tel-input.mjs +926 -0
- package/fesm2022/smallpearl-ngx-helper-mat-tel-input.mjs.map +1 -0
- package/fesm2022/smallpearl-ngx-helper-sideload.mjs +111 -0
- package/fesm2022/smallpearl-ngx-helper-sideload.mjs.map +1 -0
- package/fesm2022/smallpearl-ngx-helper-stationary-with-line-items.mjs +384 -0
- package/fesm2022/smallpearl-ngx-helper-stationary-with-line-items.mjs.map +1 -0
- package/fesm2022/smallpearl-ngx-helper.mjs +13 -0
- package/fesm2022/smallpearl-ngx-helper.mjs.map +1 -0
- package/forms/index.d.ts +1 -0
- package/forms/src/validation-error-handler.d.ts +52 -0
- package/hover-dropdown/index.d.ts +1 -0
- package/hover-dropdown/src/hover-dropdown.directive.d.ts +41 -0
- package/index.d.ts +5 -0
- package/locale/index.d.ts +5 -0
- package/locale/src/currency.pipe.d.ts +14 -0
- package/locale/src/date.pipe.d.ts +14 -0
- package/locale/src/format-currency.d.ts +1 -0
- package/locale/src/format-date.d.ts +2 -0
- package/locale/src/is-empty.d.ts +1 -0
- package/locale/src/providers.d.ts +20 -0
- package/mat-busy-wheel/index.d.ts +4 -0
- package/mat-busy-wheel/src/busy-wheel-op.d.ts +65 -0
- package/mat-busy-wheel/src/busy-wheel.component.d.ts +12 -0
- package/mat-busy-wheel/src/busy-wheel.service.d.ts +42 -0
- package/mat-busy-wheel/src/host-busy-wheel.directive.d.ts +35 -0
- package/mat-context-menu/index.d.ts +1 -0
- package/mat-context-menu/src/mat-context-menu.component.d.ts +54 -0
- package/mat-entity-crud/index.d.ts +5 -0
- package/mat-entity-crud/src/default-config.d.ts +9 -0
- package/mat-entity-crud/src/form-view-host.component.d.ts +34 -0
- package/mat-entity-crud/src/mat-entity-crud-form-base.d.ts +95 -0
- package/mat-entity-crud/src/mat-entity-crud-internal-types.d.ts +66 -0
- package/mat-entity-crud/src/mat-entity-crud-types.d.ts +141 -0
- package/mat-entity-crud/src/mat-entity-crud.component.d.ts +267 -0
- package/mat-entity-crud/src/preview-host.component.d.ts +19 -0
- package/mat-entity-crud/src/preview-pane.component.d.ts +27 -0
- package/mat-entity-crud/src/providers.d.ts +3 -0
- package/mat-entity-list/index.d.ts +3 -0
- package/mat-entity-list/src/config.d.ts +6 -0
- package/mat-entity-list/src/mat-entity-list-types.d.ts +53 -0
- package/mat-entity-list/src/mat-entity-list.component.d.ts +209 -0
- package/mat-entity-list/src/providers.d.ts +3 -0
- package/mat-file-input/README.md +63 -0
- package/mat-file-input/index.d.ts +1 -0
- package/mat-file-input/src/mat-file-input.component.d.ts +58 -0
- package/mat-form-error/README.md +306 -0
- package/mat-form-error/index.d.ts +6 -0
- package/mat-form-error/src/locales/en.d.ts +4 -0
- package/mat-form-error/src/locales/hu.d.ts +4 -0
- package/mat-form-error/src/locales/index.d.ts +3 -0
- package/mat-form-error/src/locales/pt-br.d.ts +4 -0
- package/mat-form-error/src/ngx-error-list.component.d.ts +9 -0
- package/mat-form-error/src/ngx-mat-error-control.d.ts +17 -0
- package/mat-form-error/src/ngx-mat-error-def.directive.d.ts +30 -0
- package/mat-form-error/src/ngx-mat-errors-for-date-range-picker.directive.d.ts +8 -0
- package/mat-form-error/src/ngx-mat-errors.component.d.ts +23 -0
- package/mat-form-error/src/types.d.ts +68 -0
- package/mat-form-error/src/utils/coerce-to-observable.d.ts +3 -0
- package/mat-form-error/src/utils/distinct-until-error-changed.d.ts +2 -0
- package/mat-form-error/src/utils/find-error-for-control.d.ts +9 -0
- package/mat-form-error/src/utils/get-abstract-controls.d.ts +3 -0
- package/mat-form-error/src/utils/get-control-with-error.d.ts +3 -0
- package/mat-select-entity/index.d.ts +2 -0
- package/mat-select-entity/src/mat-select-entity.component.d.ts +207 -0
- package/mat-select-entity/src/providers.d.ts +9 -0
- package/mat-side-menu-layout/index.d.ts +6 -0
- package/mat-side-menu-layout/src/layout.service.d.ts +23 -0
- package/mat-side-menu-layout/src/mat-menu-layout.component.d.ts +39 -0
- package/mat-side-menu-layout/src/mat-menu-layout.module.d.ts +18 -0
- package/mat-side-menu-layout/src/mat-menu-list-item.component.d.ts +36 -0
- package/mat-side-menu-layout/src/mat-menu-pane.component.d.ts +66 -0
- package/mat-side-menu-layout/src/nav-item.d.ts +10 -0
- package/mat-tel-input/README.md +18 -0
- package/mat-tel-input/index.d.ts +2 -0
- package/mat-tel-input/src/country-codes.d.ts +5 -0
- package/mat-tel-input/src/mat-telephone.component.d.ts +129 -0
- package/mat-tel-input/src/providers.d.ts +38 -0
- package/ngx-helper.d.ts +2 -0
- package/package.json +114 -0
- package/public-api.d.ts +1 -0
- package/sideload/index.d.ts +1 -0
- package/sideload/src/sideload.d.ts +17 -0
- package/stationary-with-line-items/index.d.ts +1 -0
- package/stationary-with-line-items/src/stationary-with-line-items.component.d.ts +74 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"smallpearl-ngx-helper-mat-tel-input.mjs","sources":["../../../../projects/smallpearl/ngx-helper/mat-tel-input/src/providers.ts","../../../../projects/smallpearl/ngx-helper/mat-tel-input/src/country-codes.ts","../../../../projects/smallpearl/ngx-helper/mat-tel-input/src/mat-telephone.component.ts","../../../../projects/smallpearl/ngx-helper/mat-tel-input/smallpearl-ngx-helper-mat-tel-input.ts"],"sourcesContent":["import { HttpClient } from '@angular/common/http';\nimport { InjectionToken } from '@angular/core';\nimport { Observable } from 'rxjs';\n\nexport interface QQMatTelephoneInputConfig {\n /**\n * Provider function to detect geographi location and return it\n * to the control. If implemented, the control would call this\n * function during initialization and auto-select the\n * country returned.\n * @param http \n * @returns \n */\n getCountryCode?: (http: HttpClient) => Observable<{\n ip: string;\n countryCode: string;\n regionCode: string;\n city: string;\n }>,\n\n /**\n * When user explicitly selects a country from the country\n * drop down, this function will be called giving the client a chance\n * to save it either to a persistent storage or a session variable.\n */\n saveCountrySelection?: (countryInfo: { code: string, name: string, callingCode: number}) => Promise<void>;\n\n /**\n * Countries supported by the telephone control. The string is a\n * regex pattern that will be used to filter supported countries.\n * So if you specify \".*\", it'll list all countries of the world.\n * \"TW|SG|MY\" restricts the coutries list to Taiwan, Singapore &\n * Malaysia.\n */\n countries?: string;\n}\n\n\nexport const QQMAT_TELEPHONE_INPUT_CONFIG_PROVIDER = new InjectionToken<QQMatTelephoneInputConfig>(\n 'QQMatTelephoneInputConfigProvider'\n);\n","// Array of country objects for the flag dropdown.\n\n// Here is the criteria for the plugin to support a given country/territory\n// - It has an iso2 code: https://en.wikipedia.org/wiki/ISO_3166-1_alpha-2\n// - It has it's own country calling code (it is not a sub-region of another country): https://en.wikipedia.org/wiki/List_of_country_calling_codes\n// - It has a flag in the region-flags project: https://github.com/behdad/region-flags/tree/gh-pages/png\n// - It is supported by libphonenumber (it must be listed on this page): https://github.com/googlei18n/libphonenumber/blob/master/resources/ShortNumberMetadata.xml\n\n// Each country array has the following information:\n// [\n// Country name,\n// iso2 code,\n// International dial code,\n// ]\nexport const COUNTRY_CODES = [\n { name: \"Afghanistan (افغانستان)\", code: \"AF\", callingCode: 93 },\n { name: \"Albania (Shqipëri)\", code: \"AL\", callingCode: 355 },\n { name: \"Algeria (الجزائر)\", code: \"DZ\", callingCode: 213 },\n { name: \"American Samoa\", code: \"AS\", callingCode: 1 },\n { name: \"Andorra\", code: \"AD\", callingCode: 376 },\n { name: \"Angola\", code: \"AO\", callingCode: 244 },\n { name: \"Anguilla\", code: \"AI\", callingCode: 1 },\n { name: \"Antigua and Barbuda\", code: \"AG\", callingCode: 1 },\n { name: \"Argentina\", code: \"AR\", callingCode: 54 },\n { name: \"Armenia (Հայաստան)\", code: \"AM\", callingCode: 374 },\n { name: \"Aruba\", code: \"AW\", callingCode: 297 },\n { name: \"Ascension Island\", code: \"AC\", callingCode: 247 },\n { name: \"Australia\", code: \"AU\", callingCode: 61 },\n { name: \"Austria (Österreich)\", code: \"AT\", callingCode: 43 },\n { name: \"Azerbaijan (Azərbaycan)\", code: \"AZ\", callingCode: 994 },\n { name: \"Bahamas\", code: \"BS\", callingCode: 1 },\n { name: \"Bahrain (البحرين)\", code: \"BH\", callingCode: 973 },\n { name: \"Bangladesh (বাংলাদেশ)\", code: \"BD\", callingCode: 880 },\n { name: \"Barbados\", code: \"BB\", callingCode: 1 },\n { name: \"Belarus (Беларусь)\", code: \"BY\", callingCode: 375 },\n { name: \"Belgium (België)\", code: \"BE\", callingCode: 32 },\n { name: \"Belize\", code: \"BZ\", callingCode: 501 },\n { name: \"Benin (Bénin)\", code: \"BJ\", callingCode: 229 },\n { name: \"Bermuda\", code: \"BM\", callingCode: 1 },\n { name: \"Bhutan (འབྲུག)\", code: \"BT\", callingCode: 975 },\n { name: \"Bolivia\", code: \"BO\", callingCode: 591 },\n { name: \"Bosnia and Herzegovina (Босна и Херцеговина)\", code: \"BA\", callingCode: 387 },\n { name: \"Botswana\", code: \"BW\", callingCode: 267 },\n { name: \"Brazil (Brasil)\", code: \"BR\", callingCode: 55 },\n { name: \"British Indian Ocean Territory\", code: \"IO\", callingCode: 246 },\n { name: \"British Virgin Islands\", code: \"VG\", callingCode: 1 },\n { name: \"Brunei\", code: \"BN\", callingCode: 673 },\n { name: \"Bulgaria (България)\", code: \"BG\", callingCode: 359 },\n { name: \"Burkina Faso\", code: \"BF\", callingCode: 226 },\n { name: \"Burundi (Uburundi)\", code: \"BI\", callingCode: 257 },\n { name: \"Cambodia (កម្ពុជា)\", code: \"KH\", callingCode: 855 },\n { name: \"Cameroon (Cameroun)\", code: \"CM\", callingCode: 237 },\n { name: \"Canada\", code: \"CA\", callingCode: 1 },\n { name: \"Cape Verde (Kabu Verdi)\", code: \"CV\", callingCode: 238 },\n { name: \"Caribbean Netherlands\", code: \"BQ\", callingCode: 599 },\n { name: \"Cayman Islands\", code: \"KY\", callingCode: 1 },\n { name: \"Central African Republic (République centrafricaine)\", code: \"CF\", callingCode: 236 },\n { name: \"Chad (Tchad)\", code: \"TD\", callingCode: 235 },\n { name: \"Chile\", code: \"CL\", callingCode: 56 },\n { name: \"China (中国)\", code: \"CN\", callingCode: 86 },\n { name: \"Christmas Island\", code: \"CX\", callingCode: 61 },\n { name: \"Cocos (Keeling) Islands\", code: \"CC\", callingCode: 61 },\n { name: \"Colombia\", code: \"CO\", callingCode: 57 },\n { name: \"Comoros (جزر القمر)\", code: \"KM\", callingCode: 269 },\n { name: \"Congo (DRC) (Jamhuri ya Kidemokrasia ya Kongo)\", code: \"CD\", callingCode: 243 },\n { name: \"Congo (Republic) (Congo-Brazzaville)\", code: \"CG\", callingCode: 242 },\n { name: \"Cook Islands\", code: \"CK\", callingCode: 682 },\n { name: \"Costa Rica\", code: \"CR\", callingCode: 506 },\n { name: \"Côte d’Ivoire\", code: \"CI\", callingCode: 225 },\n { name: \"Croatia (Hrvatska)\", code: \"HR\", callingCode: 385 },\n { name: \"Cuba\", code: \"CU\", callingCode: 53 },\n { name: \"Curaçao\", code: \"CW\", callingCode: 599 },\n { name: \"Cyprus (Κύπρος)\", code: \"CY\", callingCode: 357 },\n { name: \"Czech Republic (Česká republika)\", code: \"CZ\", callingCode: 420 },\n { name: \"Denmark (Danmark)\", code: \"DK\", callingCode: 45 },\n { name: \"Djibouti\", code: \"DJ\", callingCode: 253 },\n { name: \"Dominica\", code: \"DM\", callingCode: 1 },\n { name: \"Dominican Republic (República Dominicana)\", code: \"DO\", callingCode: 1 },\n { name: \"Ecuador\", code: \"EC\", callingCode: 593 },\n { name: \"Egypt (مصر)\", code: \"EG\", callingCode: 20 },\n { name: \"El Salvador\", code: \"SV\", callingCode: 503 },\n { name: \"Equatorial Guinea (Guinea Ecuatorial)\", code: \"GQ\", callingCode: 240 },\n { name: \"Eritrea\", code: \"ER\", callingCode: 291 },\n { name: \"Estonia (Eesti)\", code: \"EE\", callingCode: 372 },\n { name: \"Eswatini\", code: \"SZ\", callingCode: 268 },\n { name: \"Ethiopia\", code: \"ET\", callingCode: 251 },\n { name: \"Falkland Islands (Islas Malvinas)\", code: \"FK\", callingCode: 500 },\n { name: \"Faroe Islands (Føroyar)\", code: \"FO\", callingCode: 298 },\n { name: \"Fiji\", code: \"FJ\", callingCode: 679 },\n { name: \"Finland (Suomi)\", code: \"FI\", callingCode: 358 },\n { name: \"France\", code: \"FR\", callingCode: 33 },\n { name: \"French Guiana (Guyane française)\", code: \"GF\", callingCode: 594 },\n { name: \"French Polynesia (Polynésie française)\", code: \"PF\", callingCode: 689 },\n { name: \"Gabon\", code: \"GA\", callingCode: 241 },\n { name: \"Gambia\", code: \"GM\", callingCode: 220 },\n { name: \"Georgia (საქართველო)\", code: \"GE\", callingCode: 995 },\n { name: \"Germany (Deutschland)\", code: \"DE\", callingCode: 49 },\n { name: \"Ghana (Gaana)\", code: \"GH\", callingCode: 233 },\n { name: \"Gibraltar\", code: \"GI\", callingCode: 350 },\n { name: \"Greece (Ελλάδα)\", code: \"GR\", callingCode: 30 },\n { name: \"Greenland (Kalaallit Nunaat)\", code: \"GL\", callingCode: 299 },\n { name: \"Grenada\", code: \"GD\", callingCode: 1 },\n { name: \"Guadeloupe\", code: \"GP\", callingCode: 590 },\n { name: \"Guam\", code: \"GU\", callingCode: 1 },\n { name: \"Guatemala\", code: \"GT\", callingCode: 502 },\n { name: \"Guernsey\", code: \"GG\", callingCode: 44 },\n { name: \"Guinea (Guinée)\", code: \"GN\", callingCode: 224 },\n { name: \"Guinea-Bissau (Guiné Bissau)\", code: \"GW\", callingCode: 245 },\n { name: \"Guyana\", code: \"GY\", callingCode: 592 },\n { name: \"Haiti\", code: \"HT\", callingCode: 509 },\n { name: \"Honduras\", code: \"HN\", callingCode: 504 },\n { name: \"Hong Kong (香港)\", code: \"HK\", callingCode: 852 },\n { name: \"Hungary (Magyarország)\", code: \"HU\", callingCode: 36 },\n { name: \"Iceland (Ísland)\", code: \"IS\", callingCode: 354 },\n { name: \"India (भारत)\", code: \"IN\", callingCode: 91 },\n { name: \"Indonesia\", code: \"ID\", callingCode: 62 },\n { name: \"Iran (ایران)\", code: \"IR\", callingCode: 98 },\n { name: \"Iraq (العراق)\", code: \"IQ\", callingCode: 964 },\n { name: \"Ireland\", code: \"IE\", callingCode: 353 },\n { name: \"Isle of Man\", code: \"IM\", callingCode: 44 },\n { name: \"Israel (ישראל)\", code: \"IL\", callingCode: 972 },\n { name: \"Italy (Italia)\", code: \"IT\", callingCode: 39 },\n { name: \"Jamaica\", code: \"JM\", callingCode: 1 },\n { name: \"Japan (日本)\", code: \"JP\", callingCode: 81 },\n { name: \"Jersey\", code: \"JE\", callingCode: 44 },\n { name: \"Jordan (الأردن)\", code: \"JO\", callingCode: 962 },\n { name: \"Kazakhstan (Казахстан)\", code: \"KZ\", callingCode: 7 },\n { name: \"Kenya\", code: \"KE\", callingCode: 254 },\n { name: \"Kiribati\", code: \"KI\", callingCode: 686 },\n { name: \"Kosovo\", code: \"XK\", callingCode: 383 },\n { name: \"Kuwait (الكويت)\", code: \"KW\", callingCode: 965 },\n { name: \"Kyrgyzstan (Кыргызстан)\", code: \"KG\", callingCode: 996 },\n { name: \"Laos (ລາວ)\", code: \"LA\", callingCode: 856 },\n { name: \"Latvia (Latvija)\", code: \"LV\", callingCode: 371 },\n { name: \"Lebanon (لبنان)\", code: \"LB\", callingCode: 961 },\n { name: \"Lesotho\", code: \"LS\", callingCode: 266 },\n { name: \"Liberia\", code: \"LR\", callingCode: 231 },\n { name: \"Libya (ليبيا)\", code: \"LY\", callingCode: 218 },\n { name: \"Liechtenstein\", code: \"LI\", callingCode: 423 },\n { name: \"Lithuania (Lietuva)\", code: \"LT\", callingCode: 370 },\n { name: \"Luxembourg\", code: \"LU\", callingCode: 352 },\n { name: \"Macau (澳門)\", code: \"MO\", callingCode: 853 },\n { name: \"North Macedonia (Македонија)\", code: \"MK\", callingCode: 389 },\n { name: \"Madagascar (Madagasikara)\", code: \"MG\", callingCode: 261 },\n { name: \"Malawi\", code: \"MW\", callingCode: 265 },\n { name: \"Malaysia\", code: \"MY\", callingCode: 60 },\n { name: \"Maldives\", code: \"MV\", callingCode: 960 },\n { name: \"Mali\", code: \"ML\", callingCode: 223 },\n { name: \"Malta\", code: \"MT\", callingCode: 356 },\n { name: \"Marshall Islands\", code: \"MH\", callingCode: 692 },\n { name: \"Martinique\", code: \"MQ\", callingCode: 596 },\n { name: \"Mauritania (موريتانيا)\", code: \"MR\", callingCode: 222 },\n { name: \"Mauritius (Moris)\", code: \"MU\", callingCode: 230 },\n { name: \"Mayotte\", code: \"YT\", callingCode: 262 },\n { name: \"Mexico (México)\", code: \"MX\", callingCode: 52 },\n { name: \"Micronesia\", code: \"FM\", callingCode: 691 },\n { name: \"Moldova (Republica Moldova)\", code: \"MD\", callingCode: 373 },\n { name: \"Monaco\", code: \"MC\", callingCode: 377 },\n { name: \"Mongolia (Монгол)\", code: \"MN\", callingCode: 976 },\n { name: \"Montenegro (Crna Gora)\", code: \"ME\", callingCode: 382 },\n { name: \"Montserrat\", code: \"MS\", callingCode: 1 },\n { name: \"Morocco (المغرب)\", code: \"MA\", callingCode: 212 },\n { name: \"Mozambique (Moçambique)\", code: \"MZ\", callingCode: 258 },\n { name: \"Myanmar (Burma) (မြန်မာ)\", code: \"MM\", callingCode: 95 },\n { name: \"Namibia (Namibië)\", code: \"NA\", callingCode: 264 },\n { name: \"Nauru\", code: \"NR\", callingCode: 674 },\n { name: \"Nepal (नेपाल)\", code: \"NP\", callingCode: 977 },\n { name: \"Netherlands (Nederland)\", code: \"NL\", callingCode: 31 },\n { name: \"New Caledonia (Nouvelle-Calédonie)\", code: \"NC\", callingCode: 687 },\n { name: \"New Zealand\", code: \"NZ\", callingCode: 64 },\n { name: \"Nicaragua\", code: \"NI\", callingCode: 505 },\n { name: \"Niger (Nijar)\", code: \"NE\", callingCode: 227 },\n { name: \"Nigeria\", code: \"NG\", callingCode: 234 },\n { name: \"Niue\", code: \"NU\", callingCode: 683 },\n { name: \"Norfolk Island\", code: \"NF\", callingCode: 672 },\n { name: \"North Korea (조선 민주주의 인민 공화국)\", code: \"KP\", callingCode: 850 },\n { name: \"Northern Mariana Islands\", code: \"MP\", callingCode: 1 },\n { name: \"Norway (Norge)\", code: \"NO\", callingCode: 47 },\n { name: \"Oman (عُمان)\", code: \"OM\", callingCode: 968 },\n { name: \"Pakistan (پاکستان)\", code: \"PK\", callingCode: 92 },\n { name: \"Palau\", code: \"PW\", callingCode: 680 },\n { name: \"Palestine (فلسطين)\", code: \"PS\", callingCode: 970 },\n { name: \"Panama (Panamá)\", code: \"PA\", callingCode: 507 },\n { name: \"Papua New Guinea\", code: \"PG\", callingCode: 675 },\n { name: \"Paraguay\", code: \"PY\", callingCode: 595 },\n { name: \"Peru (Perú)\", code: \"PE\", callingCode: 51 },\n { name: \"Philippines\", code: \"PH\", callingCode: 63 },\n { name: \"Poland (Polska)\", code: \"PL\", callingCode: 48 },\n { name: \"Portugal\", code: \"PT\", callingCode: 351 },\n { name: \"Puerto Rico\", code: \"PR\", callingCode: 1 },\n { name: \"Qatar (قطر)\", code: \"QA\", callingCode: 974 },\n { name: \"Réunion (La Réunion)\", code: \"RE\", callingCode: 262 },\n { name: \"Romania (România)\", code: \"RO\", callingCode: 40 },\n { name: \"Russia (Россия)\", code: \"RU\", callingCode: 7 },\n { name: \"Rwanda\", code: \"RW\", callingCode: 250 },\n { name: \"Saint Barthélemy\", code: \"BL\", callingCode: 590 },\n { name: \"Saint Helena\", code: \"SH\", callingCode: 290 },\n { name: \"Saint Kitts and Nevis\", code: \"KN\", callingCode: 1 },\n { name: \"Saint Lucia\", code: \"LC\", callingCode: 1 },\n { name: \"Saint Martin (Saint-Martin (partie française))\", code: \"MF\", callingCode: 590 },\n { name: \"Saint Pierre and Miquelon (Saint-Pierre-et-Miquelon)\", code: \"PM\", callingCode: 508 },\n { name: \"Saint Vincent and the Grenadines\", code: \"VC\", callingCode: 1 },\n { name: \"Samoa\", code: \"WS\", callingCode: 685 },\n { name: \"San Marino\", code: \"SM\", callingCode: 378 },\n { name: \"São Tomé and Príncipe (São Tomé e Príncipe)\", code: \"ST\", callingCode: 239 },\n { name: \"Saudi Arabia (المملكة العربية السعودية)\", code: \"SA\", callingCode: 966 },\n { name: \"Senegal (Sénégal)\", code: \"SN\", callingCode: 221 },\n { name: \"Serbia (Србија)\", code: \"RS\", callingCode: 381 },\n { name: \"Seychelles\", code: \"SC\", callingCode: 248 },\n { name: \"Sierra Leone\", code: \"SL\", callingCode: 232 },\n { name: \"Singapore\", code: \"SG\", callingCode: 65 },\n { name: \"Sint Maarten\", code: \"SX\", callingCode: 1 },\n { name: \"Slovakia (Slovensko)\", code: \"SK\", callingCode: 421 },\n { name: \"Slovenia (Slovenija)\", code: \"SI\", callingCode: 386 },\n { name: \"Solomon Islands\", code: \"SB\", callingCode: 677 },\n { name: \"Somalia (Soomaaliya)\", code: \"SO\", callingCode: 252 },\n { name: \"South Africa\", code: \"ZA\", callingCode: 27 },\n { name: \"South Korea (대한민국)\", code: \"KR\", callingCode: 82 },\n { name: \"South Sudan (جنوب السودان)\", code: \"SS\", callingCode: 211 },\n { name: \"Spain (España)\", code: \"ES\", callingCode: 34 },\n { name: \"Sri Lanka (ශ්රී ලංකාව)\", code: \"LK\", callingCode: 94 },\n { name: \"Sudan (السودان)\", code: \"SD\", callingCode: 249 },\n { name: \"Suriname\", code: \"SR\", callingCode: 597 },\n { name: \"Svalbard and Jan Mayen\", code: \"SJ\", callingCode: 47 },\n { name: \"Sweden (Sverige)\", code: \"SE\", callingCode: 46 },\n { name: \"Switzerland (Schweiz)\", code: \"CH\", callingCode: 41 },\n { name: \"Syria (سوريا)\", code: \"SY\", callingCode: 963 },\n { name: \"Taiwan (台灣)\", code: \"TW\", callingCode: 886 },\n { name: \"Tajikistan\", code: \"TJ\", callingCode: 992 },\n { name: \"Tanzania\", code: \"TZ\", callingCode: 255 },\n { name: \"Thailand (ไทย)\", code: \"TH\", callingCode: 66 },\n { name: \"Timor-Leste\", code: \"TL\", callingCode: 670 },\n { name: \"Togo\", code: \"TG\", callingCode: 228 },\n { name: \"Tokelau\", code: \"TK\", callingCode: 690 },\n { name: \"Tonga\", code: \"TO\", callingCode: 676 },\n { name: \"Trinidad and Tobago\", code: \"TT\", callingCode: 1 },\n { name: \"Tunisia (تونس)\", code: \"TN\", callingCode: 216 },\n { name: \"Turkey (Türkiye)\", code: \"TR\", callingCode: 90 },\n { name: \"Turkmenistan\", code: \"TM\", callingCode: 993 },\n { name: \"Turks and Caicos Islands\", code: \"TC\", callingCode: 1 },\n { name: \"Tuvalu\", code: \"TV\", callingCode: 688 },\n { name: \"U.S. Virgin Islands\", code: \"VI\", callingCode: 1 },\n { name: \"Uganda\", code: \"UG\", callingCode: 256 },\n { name: \"Ukraine (Україна)\", code: \"UA\", callingCode: 380 },\n { name: \"United Arab Emirates (الإمارات العربية المتحدة)\", code: \"AE\", callingCode: 971 },\n { name: \"United Kingdom\", code: \"GB\", callingCode: 44 },\n { name: \"United States\", code: \"US\", callingCode: 1 },\n { name: \"Uruguay\", code: \"UY\", callingCode: 598 },\n { name: \"Uzbekistan (Oʻzbekiston)\", code: \"UZ\", callingCode: 998 },\n { name: \"Vanuatu\", code: \"VU\", callingCode: 678 },\n { name: \"Vatican City (Città del Vaticano)\", code: \"VA\", callingCode: 39 },\n { name: \"Venezuela\", code: \"VE\", callingCode: 58 },\n { name: \"Vietnam (Việt Nam)\", code: \"VN\", callingCode: 84 },\n { name: \"Wallis and Futuna (Wallis-et-Futuna)\", code: \"WF\", callingCode: 681 },\n { name: \"Western Sahara (الصحراء الغربية)\", code: \"EH\", callingCode: 212 },\n { name: \"Yemen (اليمن)\", code: \"YE\", callingCode: 967 },\n { name: \"Zambia\", code: \"ZM\", callingCode: 260 },\n { name: \"Zimbabwe\", code: \"ZW\", callingCode: 263 },\n { name: \"Åland Islands\", code: \"AX\", callingCode: 358 }\n];\n","/* eslint-disable @typescript-eslint/no-explicit-any */\n/* eslint-disable @typescript-eslint/no-unused-vars */\nimport { FocusMonitor } from '@angular/cdk/a11y';\nimport { BooleanInput, coerceBooleanProperty } from '@angular/cdk/coercion';\nimport { CommonModule } from '@angular/common';\nimport { HttpClient } from '@angular/common/http';\nimport {\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n ElementRef,\n Inject,\n Injector,\n Input,\n OnDestroy,\n OnInit,\n Optional,\n Self,\n ViewChild,\n} from '@angular/core';\nimport {\n AbstractControl,\n ControlValueAccessor,\n FormBuilder,\n FormControl,\n FormGroup,\n FormsModule,\n NgControl,\n ReactiveFormsModule,\n UntypedFormControl,\n Validators,\n} from '@angular/forms';\nimport {\n MAT_FORM_FIELD,\n MatFormField,\n MatFormFieldControl,\n} from '@angular/material/form-field';\nimport { PhoneNumberType, PhoneNumberUtil } from 'google-libphonenumber';\nimport { BehaviorSubject, NEVER, ReplaySubject, Subject } from 'rxjs';\nimport { catchError, map, take, takeUntil, tap } from 'rxjs/operators';\nimport { COUNTRY_CODES } from './country-codes';\nimport { QQMAT_TELEPHONE_INPUT_CONFIG_PROVIDER } from './providers';\nimport { NgxMatSelectSearchModule } from 'ngx-mat-select-search';\nimport {\n MatSelect,\n MatSelectChange,\n MatSelectModule,\n} from '@angular/material/select';\n\ninterface CountryInfo {\n name: string;\n code: string;\n callingCode: number;\n}\n\nconst ALL_COUNTRIES_CALLING_CODES = '.*';\n\n/** Data structure for holding telephone number. */\nexport class ISOTelNumber {\n constructor(public country: string, public national: string) {}\n}\n\ntype TelephoneNumberParts = CountryInfo & { nationalNumber: string };\n\n@Component({\n selector: 'sp-mat-telephone-input',\n template: `\n <!--\n <div\n rol=\"group\"\n class=\"tel-input-wrapper\"\n [formGroup]=\"parts\"\n [attr.aria-labelledby]=\"_formField?.getLabelId()\"\n (focusin)=\"onFocusIn($event)\"\n (focusout)=\"onFocusOut($event)\"\n >\n <select\n #countryCodeSelector\n title=\"Country Code\"\n formControlName=\"country\"\n (change)=\"onCountryChange($event)\"\n >\n <option\n *ngFor=\"let c of filteredCountries | async\"\n value=\"{{ c.code }}\"\n [attr.data-descr]=\"c.name + '.' + c.callingCode\"\n >\n {{ c.name }} +{{ c.callingCode }}\n </option>\n </select>\n <input\n #nationalNumberInput\n formControlName=\"national\"\n type=\"tel\"\n (input)=\"onNationalNumberChange($event)\"\n />\n </div>\n-->\n <div class=\"tel-input-wrapper\" [formGroup]=\"parts\">\n <mat-select\n #countryCodeSelector\n formControlName=\"country\"\n (selectionChange)=\"onCountryChange($event)\"\n >\n <mat-option>\n <ngx-mat-select-search\n [placeholderLabel]=\"searchText\"\n [noEntriesFoundLabel]=\"noEntriesFoundLabel\"\n [formControl]=\"countryFilterCtrl\"\n ></ngx-mat-select-search>\n </mat-option>\n <mat-option\n *ngFor=\"let c of filteredCountries | async\"\n [value]=\"c\"\n [attr.data-descr]=\"c.name + '.' + c.callingCode\"\n >\n {{ c.name }} +{{ c.callingCode }}\n </mat-option>\n </mat-select>\n <input\n style=\"padding-left: 4px\"\n #nationalNumberInput\n formControlName=\"national\"\n type=\"tel\"\n (input)=\"onNationalNumberChange($event)\"\n />\n </div>\n `,\n styles: `\n .tel-input-wrapper {\n display: flex;\n padding: 1px 1px 1px 1px;\n }\n .error-border {\n border-color: red;\n }\n .box-border {\n border-bottom: 1px solid gray;\n border-radius: 4px;\n }\n mat-select {\n display: inline-block;\n border: none;\n outline: none;\n scroll-behavior: smooth;\n background: none;\n width: 30%;\n }\n mat-select:focus {\n border: none;\n outline: none;\n background: none;\n scroll-behavior: smooth;\n }\n input {\n flex: 1 1 auto;\n background: none;\n border: none;\n }\n input:focus {\n border: none;\n outline: none;\n }\n `,\n imports: [\n CommonModule,\n FormsModule,\n ReactiveFormsModule,\n MatSelectModule,\n NgxMatSelectSearchModule,\n ],\n providers: [\n { provide: MatFormFieldControl, useExisting: SPMatTelephoneInputComponent },\n ],\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class SPMatTelephoneInputComponent\n implements\n OnInit,\n OnDestroy,\n ControlValueAccessor,\n MatFormFieldControl<ISOTelNumber>\n{\n static nextId = 0;\n\n @ViewChild('countryCodeSelector', { static: true }) countrySelect!: MatSelect;\n @ViewChild('nationalNumberInput') nationalInput!: ElementRef;\n\n @Input() mobile = false;\n // A regular expression specified as a string. This will be used to\n // construct a RegExp object, by passing it as the argument.\n @Input() allowedCountries!: string;\n @Input() defaultCountry: string = '';\n\n filter$ = new BehaviorSubject<string>('');\n countries$ = this.filter$.pipe(\n map((searchStr) => {\n const countries = new Array<CountryInfo>();\n const searchStrLower = searchStr.toLocaleLowerCase();\n this.countries.forEach((country) => {\n if (\n `${country.callingCode} ${country.code} ${country.name}`\n .toLocaleLowerCase()\n .includes(searchStrLower)\n ) {\n countries.push(country);\n }\n });\n return countries;\n })\n );\n\n countries: Array<CountryInfo> = [];\n public filteredCountries: ReplaySubject<CountryInfo[]> = new ReplaySubject<\n CountryInfo[]\n >(1);\n\n isDisabled = false;\n\n private _onChange = (_: any) => {};\n private control!: UntypedFormControl;\n private onCountrySelectFocus!: () => void;\n private onCountrySelectBlur!: () => void;\n\n phoneUtil: any = PhoneNumberUtil.getInstance();\n\n parts: FormGroup<{\n country: FormControl<CountryInfo | null>;\n national: FormControl<string | null>;\n }>;\n stateChanges = new Subject<void>();\n focused = false;\n touched = false;\n controlType = 'qq-tel-input';\n id = `qq-tel-input-${SPMatTelephoneInputComponent.nextId++}`;\n onChange = (_: any) => {};\n onTouched = () => {};\n\n public telForm = new FormGroup({});\n /** control for the MatSelect filter keyword */\n public countryFilterCtrl = new FormControl<string>('');\n\n get empty() {\n const {\n value: { country, national },\n } = this.parts;\n\n return !country && !national;\n }\n\n get shouldLabelFloat() {\n return this.focused || !this.empty;\n }\n\n @Input('aria-describedby') userAriaDescribedBy!: string;\n\n @Input()\n get placeholder(): string {\n return this._placeholder;\n }\n set placeholder(value: string) {\n this._placeholder = value;\n this.stateChanges.next();\n }\n private _placeholder!: string;\n\n @Input()\n get required(): boolean {\n return this._required ?? this.ngControl?.control?.hasValidator(Validators.required);\n }\n set required(value: BooleanInput) {\n this._required = coerceBooleanProperty(value);\n this.stateChanges.next();\n }\n private _required!: boolean;\n\n @Input() searchText = '';\n @Input() noEntriesFoundLabel = 'Not found';\n\n @Input()\n get disabled(): boolean {\n return this._disabled ?? this.ngControl?.control?.disabled;\n }\n set disabled(value: BooleanInput) {\n this._disabled = coerceBooleanProperty(value);\n this._disabled ? this.parts.disable() : this.parts.enable();\n this.stateChanges.next();\n }\n private _disabled!: boolean;\n destroy = new Subject<void>();\n\n @Input()\n get value(): ISOTelNumber | null {\n if (this.parts.valid) {\n const {\n value: { country, national },\n } = this.parts;\n return new ISOTelNumber(`${country!.callingCode}`, national!);\n }\n return null;\n }\n set value(tel: ISOTelNumber | null) {\n const { country, national } = tel || new ISOTelNumber('', '');\n let ci: CountryInfo | undefined;\n if (country) {\n ci = this.countries.find(\n (ci: CountryInfo) => `${ci.callingCode}` == country\n );\n }\n // this.phoneUtil.\n this.parts.setValue({ country: ci!, national });\n this.stateChanges.next();\n }\n\n get errorState(): boolean {\n return this.parts.invalid && this.touched;\n }\n\n onFocusIn(event: FocusEvent) {\n if (!this.focused) {\n this.focused = true;\n this.stateChanges.next();\n }\n }\n\n onFocusOut(event: FocusEvent) {\n if (\n !this._elementRef.nativeElement.contains(event.relatedTarget as Element)\n ) {\n this.touched = true;\n this.focused = false;\n this.onTouched();\n this.stateChanges.next();\n }\n }\n\n autoFocusNext(\n control: AbstractControl,\n nextElement?: HTMLInputElement\n ): void {\n if (!control.errors && nextElement) {\n this._focusMonitor.focusVia(nextElement, 'program');\n }\n }\n\n autoFocusPrev(control: AbstractControl, prevElement: HTMLInputElement): void {\n if (control.value.length < 1) {\n this._focusMonitor.focusVia(prevElement, 'program');\n }\n }\n\n setDescribedByIds(ids: string[]) {\n const controlElement = this._elementRef.nativeElement.querySelector(\n '.qq-tel-input-container'\n )!;\n if (controlElement) {\n controlElement.setAttribute('aria-describedby', ids.join(' '));\n }\n }\n\n onContainerClick() {\n // this._focusMonitor.focusVia(this.countrySelect, 'program');\n // if (this.parts.controls.national.valid) {\n // this._focusMonitor.focusVia(this.nationalInput, 'program');\n // } else if (this.parts.controls.country.valid) {\n // this._focusMonitor.focusVia(this.nationalInput, 'program');\n // // } else if (this.parts.controls.national.valid) {\n // // this._focusMonitor.focusVia(this.nationalInput, 'program');\n // } else {\n // this._focusMonitor.focusVia(this.countrySelect, 'program');\n // }\n }\n\n constructor(\n private injector: Injector,\n private cdr: ChangeDetectorRef,\n private http: HttpClient,\n private _focusMonitor: FocusMonitor,\n private _elementRef: ElementRef<HTMLElement>,\n @Optional() @Inject(MAT_FORM_FIELD) public _formField: MatFormField,\n @Optional() @Self() public ngControl: NgControl,\n formBuilder: FormBuilder\n ) {\n if (this.ngControl != null) {\n this.ngControl.valueAccessor = this;\n }\n\n this.parts = formBuilder.group({\n country: [undefined as unknown as CountryInfo, Validators.required],\n national: ['', Validators.required],\n });\n\n this.initCountries();\n }\n\n ngOnInit(): void {\n this.initCountries();\n // this.onCountrySelectFocus = () => {\n // const options = (this.countrySelect.nativeElement as HTMLSelectElement).options;\n // [].forEach.call(options, function(o: any) {\n // const countryInfo: string = o.getAttribute('data-descr');\n // const [name, callingCode] = countryInfo.split('.');\n // o.textContent = name + ' (' + callingCode + ')';\n // });\n // }\n // this.onCountrySelectBlur = () => {\n // const options = (this.countrySelect.nativeElement as HTMLSelectElement).options;\n // [].forEach.call(options, function(o: any) {\n // const countryInfo: string = o.getAttribute('data-descr');\n // const [name, callingCode] = countryInfo.split('.');\n // o.textContent = '+' + callingCode;\n // });\n // }\n // this.countrySelect.nativeElement.addEventListener('focus', this.onCountrySelectFocus);\n // this.countrySelect.nativeElement.addEventListener('blur', this.onCountrySelectBlur);\n\n if (this.defaultCountry) {\n const country = this.countries.find(\n (ci) => ci.code == this.defaultCountry\n );\n this.parts.controls.country.setValue(country!);\n }\n\n this.filteredCountries.next(this.countries.slice());\n\n // listen for search field value changes\n this.countryFilterCtrl.valueChanges\n .pipe(takeUntil(this.destroy))\n .subscribe(() => {\n this.filterCountries();\n });\n }\n\n protected setInitialValue() {\n this.filteredCountries\n .pipe(take(1), takeUntil(this.destroy))\n .subscribe(() => {\n // Setting the compareWith property to a comparison function\n // triggers initializing the selection according to the initial value of\n // the form control (i.e. _initializeSelection()).\n // This needs to be done after the filteredCountries are loaded\n // initially and after the mat-option elements are available.\n this.countrySelect.compareWith = (a: CountryInfo, b: CountryInfo) =>\n a && b && a.code === b.code;\n });\n }\n\n private filterCountries() {\n if (!this.countries) {\n return;\n }\n // get the search keyword\n let search = this.countryFilterCtrl.value;\n if (!search) {\n this.filteredCountries.next(this.countries.slice());\n return;\n }\n search = search.toLowerCase();\n // filter the banks\n this.filteredCountries.next(\n this.countries.filter(\n (country) =>\n country.name.toLowerCase().indexOf(search!) > -1 ||\n country.callingCode.toString().indexOf(search!) > -1 ||\n country.code.toLowerCase().indexOf(search!) > -1\n )\n );\n }\n\n ngAfterViewInit() {\n const ngControl = this.injector.get(NgControl, null);\n if (ngControl) {\n this.control = ngControl.control as UntypedFormControl;\n }\n this.disableComponents();\n\n if (!this.parts.controls.country.value) {\n this.detectCountry();\n } else {\n this.setInitialValue();\n }\n }\n\n ngOnDestroy() {\n // this.countrySelect.nativeElement.removeAllListners();\n this.destroy.next();\n this.destroy.complete();\n this.stateChanges.complete();\n this._focusMonitor.stopMonitoring(this._elementRef);\n }\n /**\n * Set the country code to the given code.\n *\n * @param code Numeric country code to set the value of the country\n * ion-select to. Will validate the code against a built-in country\n * code list.\n */\n setCountryCode(code: string) {\n code = code.trim();\n if (code.startsWith('+')) {\n code = code.substring(1);\n }\n for (let index = 0; index < this.countries.length; index++) {\n const country = this.countries[index];\n if (`${country.callingCode}` === code) {\n this.parts.controls.country.setValue(country);\n this.cdr.detectChanges();\n }\n }\n }\n\n // ControlValueAccessor interface methods\n writeValue(telNumber: string): void {\n // Check the supplied number string can be converted into a numeric value.\n try {\n if (telNumber) {\n const phoneNumber = this.phoneUtil.parse(telNumber);\n if (phoneNumber) {\n const cc = phoneNumber.getCountryCode();\n const country = this.countries.find((ci) => ci.callingCode === cc);\n if (country) {\n this.parts.controls.country.setValue(country);\n this.parts.controls.national.setValue(\n phoneNumber.getNationalNumber()\n );\n }\n }\n } else {\n // null value usually means form-reset. Clear national number\n // and leave selected country code intact.\n this.parts.controls.country.setValue(null);\n this.parts.controls.national.setValue(null);\n this.parts.controls.country.setErrors(null);\n this.parts.controls.national.setErrors(null);\n this.parts.setErrors(null);\n }\n this.cdr.detectChanges();\n } catch (error) {\n // empty\n }\n }\n\n registerOnChange(fn: any): void {\n this._onChange = fn;\n }\n\n registerOnTouched(fn: any): void {}\n\n setDisabledState(isDisabled: boolean) {\n this.isDisabled = isDisabled;\n if (this.countrySelect && this.nationalInput) {\n this.disableComponents();\n }\n }\n\n onCountryChange(ev: MatSelectChange) {\n const telNumberParts = this.getTelephoneNumberParts();\n if (telNumberParts) {\n this.notifyChange(telNumberParts);\n this.control.setErrors(null);\n } else {\n if (this.control) {\n this.control.setErrors({ invalidPhoneNumber: true });\n this.cdr.detectChanges();\n }\n }\n }\n\n onNationalNumberChange(ev: Event) {\n const telNumberParts = this.getTelephoneNumberParts();\n if (telNumberParts) {\n this.notifyChange(telNumberParts);\n this.control.setErrors(null);\n } else {\n if (this.control) {\n this.control.setErrors({ invalidPhoneNumber: true });\n this.cdr.detectChanges();\n }\n }\n }\n\n /**\n * Returns the telephone number in ISO8601 format.\n * @param numberParts\n * @returns\n */\n private ISOTelephoneNumber(\n numberParts: CountryInfo & { nationalNumber: string }\n ) {\n return `+${numberParts.callingCode}${numberParts.nationalNumber}`;\n }\n\n private notifyChange(numberParts: CountryInfo & { nationalNumber: string }) {\n const geoLocationProvider = this.injector.get(\n QQMAT_TELEPHONE_INPUT_CONFIG_PROVIDER,\n null\n );\n if (geoLocationProvider && geoLocationProvider.saveCountrySelection) {\n geoLocationProvider\n .saveCountrySelection(numberParts)\n .then(() => this._onChange(this.ISOTelephoneNumber(numberParts)))\n .catch(() => {});\n } else {\n this._onChange(this.ISOTelephoneNumber(numberParts));\n }\n }\n\n get placeholderText() {\n let placeholderText = this.placeholder;\n if (this.required) {\n placeholderText = placeholderText + '*';\n }\n return placeholderText;\n }\n\n get hasErrors() {\n return this.control && this.control.hasError('invalidPhoneNumber');\n }\n\n private disableComponents() {\n const action = this.isDisabled ? 'addClass' : 'removeClass';\n if (this.countrySelect) {\n //this.countryCodeSelector.disabled = this.isDisabled;\n }\n if (this.nationalInput) {\n //this.nationalNumberInput.disabled = this.isDisabled;\n }\n }\n\n /**\n * Returns the full telephone number, combining the selected\n * country code with the national number.\n *\n * Leading zeros in the national number are removed.\n *\n * Validates the entered number using google-libphonenumber and if\n * invalid, returns an empty string.\n */\n private getTelephoneNumberParts(): TelephoneNumberParts | null {\n const selectedCountry: CountryInfo | null =\n this.parts.controls.country.value;\n const nationalNumber = this.parts.controls.national.value;\n if (nationalNumber) {\n const ci = this.countries.find(\n (ci: CountryInfo) => ci.callingCode == selectedCountry!.callingCode\n );\n if (ci) {\n try {\n const phoneNumber = this.phoneUtil.parse(nationalNumber, ci.code);\n if (this.phoneUtil.isValidNumberForRegion(phoneNumber, ci!.code)) {\n const numberType = this.phoneUtil.getNumberType(phoneNumber);\n // console.log(`Valid phone number for country ${ci.code}: ${this.phoneUtil.format(phoneNumber, PhoneNumberFormat.E164)}, type: ${numberType}`);\n if (!this.mobile || numberType === PhoneNumberType.MOBILE) {\n // const fullNumber = this.phoneUtil.format(phoneNumber, PhoneNumberFormat.E164);\n // console.log('full tel number:', fullNumber);\n return {\n ...ci,\n nationalNumber: nationalNumber,\n };\n }\n }\n } catch (error) {\n // do nothing\n }\n }\n }\n return null;\n }\n\n private getAllowedCountries() {\n if (this.allowedCountries) {\n return this.allowedCountries;\n }\n const geoLocationProvider = this.injector.get(\n QQMAT_TELEPHONE_INPUT_CONFIG_PROVIDER,\n null\n );\n return geoLocationProvider && geoLocationProvider.countries\n ? geoLocationProvider.countries\n : ALL_COUNTRIES_CALLING_CODES;\n }\n\n private detectCountry() {\n const geoLocationProvider = this.injector.get(\n QQMAT_TELEPHONE_INPUT_CONFIG_PROVIDER,\n null\n );\n if (geoLocationProvider && geoLocationProvider.getCountryCode) {\n geoLocationProvider\n .getCountryCode(this.http)\n .pipe(\n tap((res) => {\n // console.log(`detectCountry response: ${JSON.stringify(res)}`);\n if (res.countryCode) {\n const cc = COUNTRY_CODES.find((cc) => cc.code == res.countryCode);\n if (cc && !this.parts.controls.country.value) {\n this.parts.controls.country.setValue(cc);\n this.cdr.detectChanges();\n }\n }\n }),\n catchError((err) => {\n // console.log(`detectCountry error: ${JSON.stringify(err)}`);\n return NEVER;\n })\n )\n .subscribe();\n } else {\n // console.log(`QQMAT_TELEPHONE_INPUT_CONFIG_PROVIDER not available`);\n }\n }\n\n // Initialize this.countries if it's not already been initialized.\n private initCountries() {\n if (!this.countries.length) {\n // determine countries we support\n const ccRegex = new RegExp(this.getAllowedCountries());\n COUNTRY_CODES.forEach((c) => {\n if (ccRegex.test(c.code)) {\n this.countries.push(c);\n }\n });\n this.countries = this.countries.sort((a, b) =>\n a.name.localeCompare(b.name)\n );\n }\n }\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,111 @@
|
|
|
1
|
+
import { singular, plural } from 'pluralize';
|
|
2
|
+
|
|
3
|
+
/**
|
|
4
|
+
* A function merge sideloaded content into the main object thereby returning
|
|
5
|
+
* a composite object.
|
|
6
|
+
* @param resp - the JSON response object, typically received from remote for
|
|
7
|
+
* an HTTP request.
|
|
8
|
+
* @param targetObjKey - the key name of the target object into which the
|
|
9
|
+
* sideloaded data are to be merged.
|
|
10
|
+
* @param idKey - idKey. Function assumes that all the objects use the same
|
|
11
|
+
* key name as the unique object identifier.
|
|
12
|
+
* @param sideloadDataMap: An array of [string, string], where the first
|
|
13
|
+
* element specifies the property name of the target object and the second
|
|
14
|
+
* element the sideload data element's key. This is useful when the the
|
|
15
|
+
* target objet's property name that is to be merged with sideload data do not
|
|
16
|
+
* match.
|
|
17
|
+
* @returns
|
|
18
|
+
*/
|
|
19
|
+
function sideloadToComposite(resp, targetObjKey, idKey = 'id', mergeStrategy = 'append', appendObjSuffix = 'Detail', sideloadDataMap) {
|
|
20
|
+
if (typeof resp !== 'object' && !Array.isArray(resp)) {
|
|
21
|
+
return;
|
|
22
|
+
}
|
|
23
|
+
const allRespKeys = Object.keys(resp);
|
|
24
|
+
const targetObjResponse = resp[targetObjKey];
|
|
25
|
+
if (!targetObjResponse) {
|
|
26
|
+
return;
|
|
27
|
+
}
|
|
28
|
+
// all sideload keys, except the targetObjKey
|
|
29
|
+
allRespKeys.splice(allRespKeys.findIndex((k) => k === targetObjKey), 1);
|
|
30
|
+
const allRespKeysSingular = allRespKeys.map(k => singular(k));
|
|
31
|
+
// Normalize single target object into an array to simplify handling
|
|
32
|
+
let entities = Array.isArray(targetObjResponse)
|
|
33
|
+
? targetObjResponse
|
|
34
|
+
: [targetObjResponse];
|
|
35
|
+
// standard keys that'll never be merged with sideloaded content
|
|
36
|
+
const KEYS_TO_SKIP = new Set([
|
|
37
|
+
'id',
|
|
38
|
+
'number',
|
|
39
|
+
'date',
|
|
40
|
+
'time',
|
|
41
|
+
'timestamp',
|
|
42
|
+
'modified',
|
|
43
|
+
'created',
|
|
44
|
+
'description',
|
|
45
|
+
'notes',
|
|
46
|
+
'desc',
|
|
47
|
+
]);
|
|
48
|
+
if (idKey) {
|
|
49
|
+
KEYS_TO_SKIP.add(idKey);
|
|
50
|
+
}
|
|
51
|
+
/**
|
|
52
|
+
* Given an object, enumerates all keys of the object and for any key with
|
|
53
|
+
* a matching sideload value, merges that into the 'obj', either by
|
|
54
|
+
* replacing the matching key's value or by appending it as a new property.
|
|
55
|
+
* If the value of a property is an object, recurses with the object as
|
|
56
|
+
* first argument.
|
|
57
|
+
* @param obj
|
|
58
|
+
* @param mergeStrategy
|
|
59
|
+
* @param appendObjSuffix
|
|
60
|
+
* @returns
|
|
61
|
+
*/
|
|
62
|
+
const mergeSideloadIntoObject = (obj, mergeStrategy, appendObjSuffix = 'Detail') => {
|
|
63
|
+
for (const key in obj) {
|
|
64
|
+
if (KEYS_TO_SKIP.has(key)) {
|
|
65
|
+
continue;
|
|
66
|
+
}
|
|
67
|
+
const value = obj[key];
|
|
68
|
+
if (typeof value === 'object') {
|
|
69
|
+
mergeSideloadIntoObject(value, mergeStrategy, appendObjSuffix);
|
|
70
|
+
}
|
|
71
|
+
else if (typeof value !== 'number' || typeof value !== 'string') {
|
|
72
|
+
let keyPlural = plural(key);
|
|
73
|
+
let sideloadId = idKey;
|
|
74
|
+
if (sideloadDataMap) {
|
|
75
|
+
const sideloadDataMapEntry = sideloadDataMap.find(([objKey, sideloadDataKey]) => objKey.localeCompare(key) === 0);
|
|
76
|
+
if (sideloadDataMapEntry) {
|
|
77
|
+
keyPlural = sideloadDataMapEntry[1];
|
|
78
|
+
if (sideloadDataMapEntry.length > 2) {
|
|
79
|
+
sideloadId = sideloadDataMapEntry[2];
|
|
80
|
+
// console.log(`sideloadId for ${keyPlural}: ${sideloadId}`)
|
|
81
|
+
}
|
|
82
|
+
}
|
|
83
|
+
}
|
|
84
|
+
if (!allRespKeys.find((sk) => sk.localeCompare(keyPlural) == 0)) {
|
|
85
|
+
continue;
|
|
86
|
+
}
|
|
87
|
+
// console.log(`sideloadId for ${keyPlural}: ${sideloadId}`)
|
|
88
|
+
const sideloadData = Array.isArray(resp[keyPlural])
|
|
89
|
+
? resp[keyPlural]
|
|
90
|
+
: [resp[keyPlural]];
|
|
91
|
+
const matchingSideloadObj = sideloadData.find((so) => so[sideloadId] === value);
|
|
92
|
+
if (matchingSideloadObj) {
|
|
93
|
+
obj[mergeStrategy === 'inplace' ? key : `${key}${appendObjSuffix}`] =
|
|
94
|
+
matchingSideloadObj;
|
|
95
|
+
}
|
|
96
|
+
}
|
|
97
|
+
}
|
|
98
|
+
return obj;
|
|
99
|
+
};
|
|
100
|
+
entities.forEach((entity) => {
|
|
101
|
+
mergeSideloadIntoObject(entity, mergeStrategy, appendObjSuffix);
|
|
102
|
+
});
|
|
103
|
+
return resp[targetObjKey];
|
|
104
|
+
}
|
|
105
|
+
|
|
106
|
+
/**
|
|
107
|
+
* Generated bundle index. Do not edit.
|
|
108
|
+
*/
|
|
109
|
+
|
|
110
|
+
export { sideloadToComposite };
|
|
111
|
+
//# sourceMappingURL=smallpearl-ngx-helper-sideload.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"smallpearl-ngx-helper-sideload.mjs","sources":["../../../../projects/smallpearl/ngx-helper/sideload/src/sideload.ts","../../../../projects/smallpearl/ngx-helper/sideload/smallpearl-ngx-helper-sideload.ts"],"sourcesContent":["import { plural, singular } from 'pluralize';\n\n/**\n * A function merge sideloaded content into the main object thereby returning\n * a composite object.\n * @param resp - the JSON response object, typically received from remote for\n * an HTTP request.\n * @param targetObjKey - the key name of the target object into which the\n * sideloaded data are to be merged.\n * @param idKey - idKey. Function assumes that all the objects use the same\n * key name as the unique object identifier.\n * @param sideloadDataMap: An array of [string, string], where the first\n * element specifies the property name of the target object and the second\n * element the sideload data element's key. This is useful when the the\n * target objet's property name that is to be merged with sideload data do not\n * match.\n * @returns\n */\nexport function sideloadToComposite(\n resp: any,\n targetObjKey: string,\n idKey: string = 'id',\n mergeStrategy: 'inplace' | 'append' = 'append',\n appendObjSuffix: string = 'Detail',\n sideloadDataMap?: Array<[string, string, string?]>\n) {\n if (typeof resp !== 'object' && !Array.isArray(resp)) {\n return;\n }\n\n const allRespKeys = Object.keys(resp);\n const targetObjResponse = resp[targetObjKey];\n if (!targetObjResponse) {\n return;\n }\n\n // all sideload keys, except the targetObjKey\n allRespKeys.splice(\n allRespKeys.findIndex((k) => k === targetObjKey),\n 1\n );\n const allRespKeysSingular = allRespKeys.map(k => singular(k));\n\n // Normalize single target object into an array to simplify handling\n let entities: Array<any> = Array.isArray(targetObjResponse)\n ? targetObjResponse\n : [targetObjResponse];\n\n // standard keys that'll never be merged with sideloaded content\n const KEYS_TO_SKIP = new Set([\n 'id',\n 'number',\n 'date',\n 'time',\n 'timestamp',\n 'modified',\n 'created',\n 'description',\n 'notes',\n 'desc',\n ]);\n if (idKey) {\n KEYS_TO_SKIP.add(idKey);\n }\n\n /**\n * Given an object, enumerates all keys of the object and for any key with\n * a matching sideload value, merges that into the 'obj', either by\n * replacing the matching key's value or by appending it as a new property.\n * If the value of a property is an object, recurses with the object as\n * first argument.\n * @param obj\n * @param mergeStrategy\n * @param appendObjSuffix\n * @returns\n */\n const mergeSideloadIntoObject = (\n obj: any,\n mergeStrategy: 'inplace' | 'append',\n appendObjSuffix: string = 'Detail'\n ) => {\n for (const key in obj) {\n if (KEYS_TO_SKIP.has(key)) {\n continue;\n }\n const value = obj[key];\n if (typeof value === 'object') {\n mergeSideloadIntoObject(value, mergeStrategy, appendObjSuffix);\n } else if (typeof value !== 'number' || typeof value !== 'string') {\n let keyPlural = plural(key);\n let sideloadId = idKey;\n if (sideloadDataMap) {\n const sideloadDataMapEntry = sideloadDataMap.find(([objKey, sideloadDataKey]) => objKey.localeCompare(key) === 0);\n if (sideloadDataMapEntry) {\n keyPlural = sideloadDataMapEntry[1];\n if (sideloadDataMapEntry.length > 2) {\n sideloadId = sideloadDataMapEntry[2] as string;\n // console.log(`sideloadId for ${keyPlural}: ${sideloadId}`)\n }\n }\n }\n if (!allRespKeys.find((sk) => sk.localeCompare(keyPlural) == 0)) {\n continue;\n }\n // console.log(`sideloadId for ${keyPlural}: ${sideloadId}`)\n const sideloadData = Array.isArray(resp[keyPlural])\n ? resp[keyPlural]\n : [resp[keyPlural]];\n const matchingSideloadObj = sideloadData.find(\n (so: any) => so[sideloadId] === value\n );\n if (matchingSideloadObj) {\n obj[mergeStrategy === 'inplace' ? key : `${key}${appendObjSuffix}`] =\n matchingSideloadObj;\n }\n }\n }\n return obj;\n };\n\n entities.forEach((entity) => {\n mergeSideloadIntoObject(entity, mergeStrategy, appendObjSuffix);\n });\n\n return resp[targetObjKey];\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}
|