@c8y/ngx-components 1006.6.36 → 1006.6.40

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 (105) hide show
  1. package/bundles/c8y-ngx-components-connectivity.umd.js +1 -1
  2. package/bundles/c8y-ngx-components-connectivity.umd.js.map +1 -1
  3. package/bundles/c8y-ngx-components-connectivity.umd.min.js +1 -1
  4. package/bundles/c8y-ngx-components-connectivity.umd.min.js.map +1 -1
  5. package/bundles/c8y-ngx-components-context-dashboard.umd.js +1 -1
  6. package/bundles/c8y-ngx-components-context-dashboard.umd.js.map +1 -1
  7. package/bundles/c8y-ngx-components-context-dashboard.umd.min.js +1 -1
  8. package/bundles/c8y-ngx-components-context-dashboard.umd.min.js.map +1 -1
  9. package/bundles/c8y-ngx-components-repository.umd.js +1 -1
  10. package/bundles/c8y-ngx-components-repository.umd.js.map +1 -1
  11. package/bundles/c8y-ngx-components-repository.umd.min.js +1 -1
  12. package/bundles/c8y-ngx-components-repository.umd.min.js.map +1 -1
  13. package/bundles/c8y-ngx-components-sensor-phone.umd.js +1 -1
  14. package/bundles/c8y-ngx-components-sensor-phone.umd.js.map +1 -1
  15. package/bundles/c8y-ngx-components-sensor-phone.umd.min.js +1 -1
  16. package/bundles/c8y-ngx-components-sensor-phone.umd.min.js.map +1 -1
  17. package/bundles/c8y-ngx-components.umd.js +400 -131
  18. package/bundles/c8y-ngx-components.umd.js.map +1 -1
  19. package/bundles/c8y-ngx-components.umd.min.js +2 -2
  20. package/bundles/c8y-ngx-components.umd.min.js.map +1 -1
  21. package/c8y-ngx-components.d.ts +90 -87
  22. package/c8y-ngx-components.metadata.json +1 -1
  23. package/connectivity/c8y-ngx-components-connectivity.metadata.json +1 -1
  24. package/context-dashboard/c8y-ngx-components-context-dashboard.metadata.json +1 -1
  25. package/core/authentication/new-password.component.d.ts +8 -6
  26. package/core/docs/guide-docs.component.d.ts +25 -3
  27. package/core/forms/validation-pattern.d.ts +1 -0
  28. package/core/i18n/force-html-translate.directive.d.ts +32 -0
  29. package/core/login/change-password.component.d.ts +1 -1
  30. package/core/login/login.service.d.ts +15 -2
  31. package/core/login/password-strength-validator.directive.d.ts +9 -0
  32. package/core/login/strength-validator-service.d.ts +7 -0
  33. package/core/user/user-edit.component.d.ts +4 -2
  34. package/esm2015/c8y-ngx-components.js +90 -87
  35. package/esm2015/connectivity/impact/impact-provider-settings.component.js +2 -2
  36. package/esm2015/context-dashboard/legacy-welcome/legacy-welcome.component.js +2 -2
  37. package/esm2015/core/authentication/new-password.component.js +15 -20
  38. package/esm2015/core/dashboard/widgets-dashboard.component.js +2 -2
  39. package/esm2015/core/docs/guide-docs.component.js +69 -4
  40. package/esm2015/core/forms/validation-pattern.js +2 -1
  41. package/esm2015/core/i18n/force-html-translate.directive.js +99 -0
  42. package/esm2015/core/i18n/i18n.module.js +5 -3
  43. package/esm2015/core/i18n/pattern-messages.data.js +2 -2
  44. package/esm2015/core/login/change-password.component.js +5 -5
  45. package/esm2015/core/login/credentials.component.js +2 -2
  46. package/esm2015/core/login/login.module.js +4 -2
  47. package/esm2015/core/login/login.service.js +40 -6
  48. package/esm2015/core/login/password-strength-validator.directive.js +32 -0
  49. package/esm2015/core/login/strength-validator-service.js +28 -0
  50. package/esm2015/core/user/user-edit.component.js +10 -5
  51. package/esm2015/repository/configuration/configuration-list.component.js +2 -2
  52. package/esm2015/sensor-phone/sensor-phone-modal.component.js +2 -2
  53. package/esm5/c8y-ngx-components.js +90 -87
  54. package/esm5/connectivity/impact/impact-provider-settings.component.js +2 -2
  55. package/esm5/context-dashboard/legacy-welcome/legacy-welcome.component.js +2 -2
  56. package/esm5/core/authentication/new-password.component.js +21 -25
  57. package/esm5/core/dashboard/widgets-dashboard.component.js +2 -2
  58. package/esm5/core/docs/guide-docs.component.js +72 -4
  59. package/esm5/core/forms/validation-pattern.js +2 -1
  60. package/esm5/core/i18n/force-html-translate.directive.js +105 -0
  61. package/esm5/core/i18n/i18n.module.js +5 -3
  62. package/esm5/core/i18n/pattern-messages.data.js +2 -2
  63. package/esm5/core/login/change-password.component.js +5 -5
  64. package/esm5/core/login/credentials.component.js +2 -2
  65. package/esm5/core/login/login.module.js +4 -2
  66. package/esm5/core/login/login.service.js +43 -6
  67. package/esm5/core/login/password-strength-validator.directive.js +38 -0
  68. package/esm5/core/login/strength-validator-service.js +29 -0
  69. package/esm5/core/user/user-edit.component.js +19 -9
  70. package/esm5/repository/configuration/configuration-list.component.js +2 -2
  71. package/esm5/sensor-phone/sensor-phone-modal.component.js +2 -2
  72. package/fesm2015/c8y-ngx-components-connectivity.js +1 -1
  73. package/fesm2015/c8y-ngx-components-connectivity.js.map +1 -1
  74. package/fesm2015/c8y-ngx-components-context-dashboard.js +1 -1
  75. package/fesm2015/c8y-ngx-components-context-dashboard.js.map +1 -1
  76. package/fesm2015/c8y-ngx-components-repository.js +1 -1
  77. package/fesm2015/c8y-ngx-components-repository.js.map +1 -1
  78. package/fesm2015/c8y-ngx-components-sensor-phone.js +1 -1
  79. package/fesm2015/c8y-ngx-components-sensor-phone.js.map +1 -1
  80. package/fesm2015/c8y-ngx-components.js +281 -40
  81. package/fesm2015/c8y-ngx-components.js.map +1 -1
  82. package/fesm5/c8y-ngx-components-connectivity.js +1 -1
  83. package/fesm5/c8y-ngx-components-connectivity.js.map +1 -1
  84. package/fesm5/c8y-ngx-components-context-dashboard.js +1 -1
  85. package/fesm5/c8y-ngx-components-context-dashboard.js.map +1 -1
  86. package/fesm5/c8y-ngx-components-repository.js +1 -1
  87. package/fesm5/c8y-ngx-components-repository.js.map +1 -1
  88. package/fesm5/c8y-ngx-components-sensor-phone.js +1 -1
  89. package/fesm5/c8y-ngx-components-sensor-phone.js.map +1 -1
  90. package/fesm5/c8y-ngx-components.js +315 -49
  91. package/fesm5/c8y-ngx-components.js.map +1 -1
  92. package/locales/de.po +71 -60
  93. package/locales/es.po +120 -85
  94. package/locales/fr.po +107 -72
  95. package/locales/ja_JP.po +89 -78
  96. package/locales/ko.po +92 -57
  97. package/locales/locales.pot +9 -9
  98. package/locales/nl.po +95 -60
  99. package/locales/pl.po +88 -53
  100. package/locales/pt_BR.po +174 -138
  101. package/locales/ru.po +120 -85
  102. package/locales/zh_CN.po +87 -52
  103. package/package.json +2 -2
  104. package/repository/c8y-ngx-components-repository.metadata.json +1 -1
  105. package/sensor-phone/c8y-ngx-components-sensor-phone.metadata.json +1 -1
package/locales/zh_CN.po CHANGED
@@ -214,7 +214,7 @@ msgid "<kept as is>"
214
214
  msgstr "<保持原样>"
215
215
 
216
216
  msgid "<no name>"
217
- msgstr "<no name>"
217
+ msgstr "<无名>"
218
218
 
219
219
  msgid "<small>Multiple</small>"
220
220
  msgstr "<small>多个</small>"
@@ -342,6 +342,9 @@ msgstr "活动:已触发 {{alarmTimeFromNow}}"
342
342
  msgid "ACTIVE`tenant`"
343
343
  msgstr "激活"
344
344
 
345
+ msgid "ADDED"
346
+ msgstr "已添加"
347
+
345
348
  msgid "ADFS manifest"
346
349
  msgstr "ADFS 清单"
347
350
 
@@ -1447,6 +1450,9 @@ msgstr "自动保存主机密钥"
1447
1450
  msgid "Auto save host key on first connection on Remote access tab."
1448
1451
  msgstr "在“远程访问”选项卡上自动保存第一个连接的主机密钥。"
1449
1452
 
1453
+ msgid "Auto-scroll"
1454
+ msgstr "自动滚动"
1455
+
1450
1456
  msgid "Autodiscovery"
1451
1457
  msgstr "自动发现"
1452
1458
 
@@ -1465,6 +1471,9 @@ msgstr "自动发现正在进行中。"
1465
1471
  msgid "Autodiscovery request"
1466
1472
  msgstr "自动发现请求"
1467
1473
 
1474
+ msgid "Automatically scrolls to the latest value"
1475
+ msgstr "自动滚动到最新值"
1476
+
1468
1477
  msgid "Availability"
1469
1478
  msgstr "可用性"
1470
1479
 
@@ -1691,9 +1700,6 @@ msgstr "浏览路径"
1691
1700
  msgid "Browse the manual"
1692
1701
  msgstr "浏览手册"
1693
1702
 
1694
- msgid "Browse the manual <a c8y-guide-href=\"users-guide/cockpit/\">here</a>."
1695
- msgstr "在<a c8y-guide-href=\"users-guide/cockpit/\">此处</a>浏览手册。"
1696
-
1697
1703
  msgid "Building {{number}}"
1698
1704
  msgstr "正在构建 {{number}}"
1699
1705
 
@@ -1764,6 +1770,9 @@ msgstr "CAN 总线"
1764
1770
  msgid "CAN Bus communication"
1765
1771
  msgstr "CAN 总线通信"
1766
1772
 
1773
+ msgid "CANCELED"
1774
+ msgstr "已取消"
1775
+
1767
1776
  msgid "CANCELLED"
1768
1777
  msgstr "已取消"
1769
1778
 
@@ -1809,6 +1818,9 @@ msgstr "已清除"
1809
1818
  msgid "CLEARED: was active for {{alarmDuration}}"
1810
1819
  msgstr "已清除:在 {{alarmDuration}} 内处于活动状态"
1811
1820
 
1821
+ msgid "COMPLETED"
1822
+ msgstr "已完成"
1823
+
1812
1824
  msgid "COMPLETED SUCCESSFULLY"
1813
1825
  msgstr "已成功完成"
1814
1826
 
@@ -2195,9 +2207,6 @@ msgstr "清除"
2195
2207
  msgid "Clear`selection`"
2196
2208
  msgstr "清除"
2197
2209
 
2198
- msgid "Click <strong>Next</strong> once you have the app installed."
2199
- msgstr "安装应用程序后单击<strong>下一步</strong>。"
2200
-
2201
2210
  msgid "Click below to add the first one."
2202
2211
  msgstr "在下面单击以添加第一个。"
2203
2212
 
@@ -2813,6 +2822,9 @@ msgstr "无法部署模块 \"{{moduleName}}\"。表达式 \"{{expression}}\" 编
2813
2822
  msgid "Could not deploy module \"{{moduleName}}\". Compilation failed in expression \"{{expression}}\": incorrect syntax near \"{{incorrectExpression}}\" at line {{line}} column {{column}}."
2814
2823
  msgstr "无法部署模块 \"{{moduleName}}\"。表达式 \"{{expression}}\" 编译失败:行 {{line}} 列 {{column}} \"{{incorrectExpression}}\" 附近的语法不正确。"
2815
2824
 
2825
+ msgid "Could not download the file: object with ID \"{{ id }}\" is not a valid binary."
2826
+ msgstr "无法下载文件:ID 为 \"{{ id }}\" 的对象不是有效的二进制文件。"
2827
+
2816
2828
  msgid "Could not download the log file."
2817
2829
  msgstr "无法下载日志文件。"
2818
2830
 
@@ -3148,13 +3160,6 @@ msgstr "创建时间"
3148
3160
  msgid "Credentials"
3149
3161
  msgstr "证书"
3150
3162
 
3151
- msgid ""
3152
- "Credentials already provided.<br>\n"
3153
- " Click \"Replace credentials\" below to overwrite them."
3154
- msgstr ""
3155
- "已提供凭据。<br>\n"
3156
- "单击下面的 \"替换证书\" 予以覆盖。"
3157
-
3158
3163
  msgid "Credentials deleted."
3159
3164
  msgstr "已删除凭据。"
3160
3165
 
@@ -3321,6 +3326,9 @@ msgstr "停用"
3321
3326
  msgid "DEACTIVATED"
3322
3327
  msgstr "已停用"
3323
3328
 
3329
+ msgid "DELETED"
3330
+ msgstr "已删除"
3331
+
3324
3332
  msgid "DES"
3325
3333
  msgstr "DES"
3326
3334
 
@@ -4449,6 +4457,9 @@ msgstr "EVENT"
4449
4457
  msgid "EXECUTING"
4450
4458
  msgstr "正在执行"
4451
4459
 
4460
+ msgid "EXECUTING_WITH_ERROR"
4461
+ msgstr "正在执行_但显示_错误"
4462
+
4452
4463
  msgid "Each support user request from subtenant user will prolong support user access by the given number of hours (default: 24 hours)"
4453
4464
  msgstr "来自子租户用户的每个支持用户请求会将支持用户的访问延长指定小时数(默认:24 小时)"
4454
4465
 
@@ -4997,6 +5008,9 @@ msgstr "未能断开设备连接。"
4997
5008
  msgid "Failed to extract certificate from PKCS12."
4998
5009
  msgstr "从 PKCS12 提取证书失败。"
4999
5010
 
5011
+ msgid "Failed to generate a QR code."
5012
+ msgstr "无法生成二维码。"
5013
+
5000
5014
  msgid "Failed to open the relay due to: \"{{failureReason | translate}}\"."
5001
5015
  msgstr "无法打开中继,原因是:\"{{failureReason | translate}}\"。"
5002
5016
 
@@ -5187,9 +5201,6 @@ msgstr "过滤器"
5187
5201
  msgid "Filter…"
5188
5202
  msgstr "过滤…"
5189
5203
 
5190
- msgid "Find and install <strong>Cumulocity IoT Sensor App</strong>."
5191
- msgstr "找到并安装 <strong>Cumulocity IoT 传感器应用程序</strong>。"
5192
-
5193
5204
  msgid "Find by external ID"
5194
5205
  msgstr "按外部 ID 查找"
5195
5206
 
@@ -5276,13 +5287,6 @@ msgstr ""
5276
5287
  "在\n"
5277
5288
  "<a c8y-guide-href=\"users-guide/cockpit/#adding-alarms-or-events\">User guide</a>中详细了解。"
5278
5289
 
5279
- msgid ""
5280
- "Find out more in the\n"
5281
- " <a c8y-guide-href=\"users-guide/cockpit/#dashboards\">User guide`KEEP_ORIGINAL`</a>."
5282
- msgstr ""
5283
- "在\n"
5284
- "<a c8y-guide-href=\"users-guide/cockpit/#dashboards\">User guide</a>中详细了解。"
5285
-
5286
5290
  msgid ""
5287
5291
  "Find out more in the\n"
5288
5292
  " <a c8y-guide-href=\"users-guide/cockpit/#export\">User guide`KEEP_ORIGINAL`</a>."
@@ -5311,13 +5315,6 @@ msgstr ""
5311
5315
  "在\n"
5312
5316
  " <a c8y-guide-href=\"users-guide/administration/#event-processing\">User guide</a>中详细了解。"
5313
5317
 
5314
- msgid ""
5315
- "Find out more in the\n"
5316
- " <a c8y-guide-href=\"users-guide/device-management/#configuration-repository\">User guide`KEEP_ORIGINAL`</a>."
5317
- msgstr ""
5318
- "在\n"
5319
- "<a c8y-guide-href=\"users-guide/device-management/#configuration-repository\">User guide</a>中详细了解。"
5320
-
5321
5318
  msgid ""
5322
5319
  "Find out more in the\n"
5323
5320
  " <a c8y-guide-href=\"users-guide/device-management/#simulator\">User guide`KEEP_ORIGINAL`</a>."
@@ -6175,6 +6172,12 @@ msgstr "负重模式"
6175
6172
  msgid "Heavy mode GPS"
6176
6173
  msgstr "重型 GPS"
6177
6174
 
6175
+ msgid "Height for setting the right proportion for the logo: height / width x 100"
6176
+ msgstr "用于设置徽标正确比例的高度:高度/宽度 x 100"
6177
+
6178
+ msgid "Height for setting the right proportion for the navigator logo: height / width x 100 - should be 230px wide"
6179
+ msgstr "用于为导航器徽标设置正确比例的高度:高度/宽度 x 100 - 应为 230 像素宽"
6180
+
6178
6181
  msgid "Hello"
6179
6182
  msgstr "您好"
6180
6183
 
@@ -6290,12 +6293,18 @@ msgstr "IMPACT 提供商设置"
6290
6293
  msgid "IMSI"
6291
6294
  msgstr "IMSI"
6292
6295
 
6296
+ msgid "INCORRECT"
6297
+ msgstr "不正确"
6298
+
6293
6299
  msgid "INTEGER"
6294
6300
  msgstr "整数"
6295
6301
 
6296
6302
  msgid "INVENTORY"
6297
6303
  msgstr "库存"
6298
6304
 
6305
+ msgid "IN_PROGRESS"
6306
+ msgstr "进行_中"
6307
+
6299
6308
  msgid "IP"
6300
6309
  msgstr "IP"
6301
6310
 
@@ -7147,6 +7156,9 @@ msgstr "主要"
7147
7156
  msgid "MANAGED_OBJECT"
7148
7157
  msgstr "MANAGED_OBJECT"
7149
7158
 
7159
+ msgid "MARKET"
7160
+ msgstr "市场"
7161
+
7150
7162
  msgid "MCC"
7151
7163
  msgstr "MCC"
7152
7164
 
@@ -8664,13 +8676,6 @@ msgstr "仅分钟或小时的完整值有效。"
8664
8676
  msgid "Open"
8665
8677
  msgstr "打开"
8666
8678
 
8667
- msgid ""
8668
- "Open <strong>Google Play Store</strong> or <strong>Apple App Store</strong> on your\n"
8669
- " smartphone."
8670
- msgstr ""
8671
- "打开您智能手机上的 <strong>Google Play Store</strong>\n"
8672
- " 或 <strong>Apple App Store</strong>。"
8673
-
8674
8679
  msgid "Open branded apps preview"
8675
8680
  msgstr "打开品牌应用程序预览"
8676
8681
 
@@ -8876,6 +8881,12 @@ msgstr "待处理"
8876
8881
  msgid "PENDING ACCEPTANCE"
8877
8882
  msgstr "等待接受"
8878
8883
 
8884
+ msgid "PENDING_ACCEPTANCE"
8885
+ msgstr "待处理_接受"
8886
+
8887
+ msgid "PRIVATE"
8888
+ msgstr "私人"
8889
+
8879
8890
  msgid "PURGED"
8880
8891
  msgstr "已清除"
8881
8892
 
@@ -9200,16 +9211,6 @@ msgstr "首选登录模式"
9200
9211
  msgid "Presets"
9201
9212
  msgstr "预设"
9202
9213
 
9203
- msgid ""
9204
- "Press <strong>Manual registration</strong> and enter the following data in your\n"
9205
- " smartphone."
9206
- msgstr ""
9207
- "按<strong>手动注册</strong>,\n"
9208
- "然后在您的智能手机中输入以下数据。"
9209
-
9210
- msgid "Press <strong>Scan QR code</strong> and use the code below."
9211
- msgstr "按<strong>扫描二维码</strong>并使用下面的代码。"
9212
-
9213
9214
  msgid "Preview"
9214
9215
  msgstr "预览"
9215
9216
 
@@ -9450,6 +9451,9 @@ msgstr "重新激活"
9450
9451
  msgid "READ"
9451
9452
  msgstr "读取"
9452
9453
 
9454
+ msgid "REMOVED"
9455
+ msgstr "已删除"
9456
+
9453
9457
  msgid "REPLACED"
9454
9458
  msgstr "已更换"
9455
9459
 
@@ -10215,6 +10219,9 @@ msgstr "成功"
10215
10219
  msgid "SUPPORT"
10216
10220
  msgstr "支持"
10217
10221
 
10222
+ msgid "SUSPENDED"
10223
+ msgstr "已暂停"
10224
+
10218
10225
  msgid "SUSPENDED`tenant`"
10219
10226
  msgstr "已暂停"
10220
10227
 
@@ -10302,6 +10309,9 @@ msgstr "ScanWLAN"
10302
10309
  msgid "Schedule device restart every day at 1am"
10303
10310
  msgstr "安排设备在每天凌晨 1 点重新启动"
10304
10311
 
10312
+ msgid "Schedule export"
10313
+ msgstr "计划导出"
10314
+
10305
10315
  msgid "Schedule interval"
10306
10316
  msgstr "安排间隔时间"
10307
10317
 
@@ -12133,9 +12143,6 @@ msgstr "选项卡和布局"
12133
12143
  msgid "Table of device properties, e.g. name, type or notes."
12134
12144
  msgstr "设备属性表,例如名称、类型或备注。"
12135
12145
 
12136
- msgid "Take your phone and click <strong>Next</strong>."
12137
- msgstr "拿起手机并单击<strong>下一步</strong>。"
12138
-
12139
12146
  msgid "Target"
12140
12147
  msgstr "目标"
12141
12148
 
@@ -12666,6 +12673,9 @@ msgstr "这是令牌中字段的名称,其值将用于选择以下具有匹配
12666
12673
  msgid "This less than attribute defines a threshold low value."
12667
12674
  msgstr "此小于属性定义阈值的低值。"
12668
12675
 
12676
+ msgid "This login mode was already set by another administrator. Refresh the page to update the data."
12677
+ msgstr "此登录模式已由另一位管理员设置。请刷新页面以更新数据。"
12678
+
12669
12679
  msgid "This node id is already in use."
12670
12680
  msgstr "此节点 ID 已被占用。"
12671
12681
 
@@ -12974,6 +12984,9 @@ msgstr "Twitter 的小组件 ID"
12974
12984
  msgid "Two-factor authentication"
12975
12985
  msgstr "双重身份验证"
12976
12986
 
12987
+ msgid "Two-factor authentication has been turned on for this account. Provide your phone number above to save it in your user profile and start receiving verification codes via SMS."
12988
+ msgstr "此帐户已打开双重身份验证。在上方提供您的电话号码,以将其保存在用户配置文件中,并开始通过 SMS 接收验证代码。"
12989
+
12977
12990
  msgid "Two-factor authentication token expired."
12978
12991
  msgstr "双重身份验证令牌已过期。"
12979
12992
 
@@ -13604,6 +13617,9 @@ msgstr "验证代码"
13604
13617
  msgid "Verification code SMS resent."
13605
13618
  msgstr "已重新发送验证代码 SMS。"
13606
13619
 
13620
+ msgid "Verification code SMS sent."
13621
+ msgstr "验证代码 SMS 已发送。"
13622
+
13607
13623
  msgid "Verification token SMS template"
13608
13624
  msgstr "验证令牌 SMS 模板"
13609
13625
 
@@ -13658,6 +13674,9 @@ msgstr "语音使用情况(秒)"
13658
13674
  msgid "WAITING FOR CONNECTION"
13659
13675
  msgstr "正在等待连接"
13660
13676
 
13677
+ msgid "WAITING_FOR_CONNECTION"
13678
+ msgstr "正在_等待_连接"
13679
+
13661
13680
  msgid "WAN"
13662
13681
  msgstr "WAN"
13663
13682
 
@@ -13718,6 +13737,13 @@ msgstr "警告:已选择具有不同单位的测量。"
13718
13737
  msgid "Warnings"
13719
13738
  msgstr "警告"
13720
13739
 
13740
+ msgid ""
13741
+ "We don't collect any personal data.\n"
13742
+ " The only data we retrieve from your phone is sensor data and anonymized app usage data."
13743
+ msgstr ""
13744
+ "我们不收集任何个人数据。\n"
13745
+ " 我们从您的手机中检索的唯一数据是传感器数据和匿名的应用使用情况数据。"
13746
+
13721
13747
  msgid "We will now log you out and redirect to your new domain {{vm.redirectUrl}} in <b>1</b> second."
13722
13748
  msgid_plural "We will now log you out and redirect to your new domain {{vm.redirectUrl}} in <b>{{$count}}</b> seconds."
13723
13749
  msgstr[0] "我们现将您注销并在 <b>{{$count}}</b> 秒内重定向到您的新域 {{vm.redirectUrl}}。"
@@ -14034,7 +14060,7 @@ msgid ""
14034
14060
  " Do you want to proceed?"
14035
14061
  msgstr ""
14036
14062
  "您将要从所有 \"{{ deviceType }}\" 类型的设备中删除面板 \"{{ dashboardName }}\"。\n"
14037
- "是否要继续?"
14063
+ ". 是否要继续?"
14038
14064
 
14039
14065
  msgid "You are about to delete the dashboard \"{{ dashboardName }}\". Do you want to proceed?"
14040
14066
  msgstr "您将要删除面板 \"{{ dashboardName }}\"。是否要继续?"
@@ -14072,6 +14098,9 @@ msgstr "您将要删除用户 \"{{userName}}\"。是否要继续?"
14072
14098
  msgid "You are about to delete your IMPACT credentials. Deleting credentials will break connection to IMPACT instance. Do you want to proceed?"
14073
14099
  msgstr "您将要删除 IMPACT 证书。删除证书将中断与 IMPACT 实例的连接。是否要继续?"
14074
14100
 
14101
+ msgid "You are about to download file \"{{ fileName }}\". Do you want to proceed?"
14102
+ msgstr "您即将下载文件 \"{{ fileName }}\"。是否要继续?"
14103
+
14075
14104
  msgid "You are about to edit the global role. Enter \"{{ ctrl.randomString }}\" to confirm:"
14076
14105
  msgstr "您将要编辑全局角色。输入 \"{{ ctrl.randomString }}\" 以确认:"
14077
14106
 
@@ -14166,6 +14195,12 @@ msgstr "您没有启用/禁用此所有者用户的权限。"
14166
14195
  msgid "You don't have permission to execute this operation."
14167
14196
  msgstr "您没有执行此操作的权限。"
14168
14197
 
14198
+ msgid "You don't have the permission required to manage application access for {{ user.userName }}."
14199
+ msgstr "您没有管理 {{ user.userName }} 的应用程序访问权限所需的权限。"
14200
+
14201
+ msgid "You don't have the permission required to manage inventory roles for {{ vm.user }}."
14202
+ msgstr "您没有管理 {{ vm.user }} 的库存角色所需的权限。"
14203
+
14169
14204
  msgid "You have to define at least 1 instance."
14170
14205
  msgstr "您必须定义至少 1 个实例。"
14171
14206
 
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@c8y/ngx-components",
3
- "version": "1006.6.36",
3
+ "version": "1006.6.40",
4
4
  "license": "Apache-2.0",
5
5
  "author": "Cumulocity",
6
6
  "description": "Angular modules for Cumulocity IoT applications",
@@ -23,7 +23,7 @@
23
23
  "rxjs": "~6.4.0"
24
24
  },
25
25
  "dependencies": {
26
- "@c8y/client": "1006.6.36",
26
+ "@c8y/client": "1006.6.40",
27
27
  "@ngx-translate/core": "12.1.1",
28
28
  "@ngx-translate/http-loader": "4.0.0",
29
29
  "libphonenumber-js": "1.7.14",
@@ -1 +1 @@
1
- {"__symbolic":"module","version":4,"metadata":{"RepositoryModule":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"NgModule","line":13,"character":1},"arguments":[{"imports":[{"__symbolic":"reference","module":"@c8y/ngx-components","name":"CoreModule","line":14,"character":12},{"__symbolic":"reference","module":"ngx-bootstrap/tooltip","name":"TooltipModule","line":14,"character":24}],"exports":[],"entryComponents":[{"__symbolic":"reference","name":"ɵa"},{"__symbolic":"reference","name":"ɵc"}],"declarations":[{"__symbolic":"reference","name":"ɵa"},{"__symbolic":"reference","name":"ɵc"}],"providers":[{"__symbolic":"reference","name":"ɵb"},{"provide":{"__symbolic":"reference","module":"@c8y/ngx-components","name":"HOOK_NAVIGATOR_NODES","line":21,"character":15},"useClass":{"__symbolic":"reference","name":"ɵd"},"multi":true},{"provide":{"__symbolic":"reference","module":"@c8y/ngx-components","name":"HOOK_ONCE_ROUTE","line":26,"character":15},"useValue":[{"path":"configuration-new","component":{"__symbolic":"reference","name":"ɵa"}}],"multi":true}]}]}],"members":{}},"ɵa":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Component","line":10,"character":1},"arguments":[{"selector":"c8y-configuration-list","template":"<c8y-title>\n <span translate>Configuration snapshots repository</span>&nbsp;\n <small *ngIf=\"(configurations$ | async)?.paging.totalPages === 1 && !filterTerm\"\n >{{ (configurations$ | async).data.length }} <span translate>snapshots</span></small\n >\n <small\n *ngIf=\"(configurations$ | async)?.paging.totalPages > 1 && !filterTerm\"\n [tooltip]=\"'More data available. Scroll to the bottom of the list to load it.' | translate\"\n container=\"body\"\n >{{ (configurations$ | async).paging.pageSize }}+ <span translate>snapshots</span></small\n >\n <small *ngIf=\"filterTerm\"\n ><span translate>Search results for</span>&nbsp;\"{{ this.filterTerm }}\"</small\n >\n</c8y-title>\n\n<c8y-action-bar-item itemClass=\"navbar-form\">\n <div class=\"input-group input-group-search\">\n <input\n class=\"form-control\"\n placeholder=\"{{ 'Filter…' | translate }}\"\n type=\"text\"\n [value]=\"filterTerm\"\n (keyup)=\"filterChange$.next($event)\"\n />\n <span class=\"input-group-btn\">\n <button class=\"btn btn-clean\" (click)=\"filterTerm = ''; setPipe('')\">\n <i [c8yIcon]=\"filterTerm.length === 0 ? 'filter' : 'close'\"></i>\n </button>\n </span>\n </div>\n</c8y-action-bar-item>\n\n<c8y-action-bar-item [placement]=\"'right'\">\n <button class=\"btn btn-link\" (click)=\"add()\">\n <i c8yIcon=\"plus-square\"></i> {{ 'Add configuration snapshot' | translate }}\n </button>\n</c8y-action-bar-item>\n\n<div\n class=\"c8y-empty-state text-center\"\n *ngIf=\"!filterTerm && (configurations$ | async)?.data.length === 0\"\n>\n <h1 c8yIcon=\"gears\"></h1>\n <h3 translate>There are no configuration snapshots defined</h3>\n <p translate>Add a configuration snapshot first.</p>\n <div>\n <button (click)=\"add()\" class=\"btn btn-primary\" translate>\n Add configuration snapshot\n </button>\n </div>\n <p c8y-guide-docs>\n <small translate\n >Find out more in the\n <a c8y-guide-href=\"users-guide/device-management/#configuration-repository\"\n >User guide`KEEP_ORIGINAL`</a\n >.</small\n >\n </p>\n</div>\n\n<ng-template #notFound>\n <c8y-li class=\"p-8 text-center\">\n <p>\n <span translate>No more entries found for filter:</span>&nbsp;<strong>{{\n filterTerm\n }}</strong>\n </p>\n <button class=\"btn btn-primary btn-xs m-t-8\" translate (click)=\"filterTerm = ''; setPipe('')\">\n Reset filter\n </button>\n </c8y-li>\n</ng-template>\n<div class=\"p-b-32\">\n <c8y-list-group>\n <c8y-li\n *c8yFor=\"\n let configuration of configurations$;\n pipe: filterPipe;\n notFound: this.filterTerm ? notFound : undefined\n \"\n >\n <c8y-li-icon icon=\"gears\"></c8y-li-icon>\n <div class=\"row flex-row\">\n <div class=\"col-xs-3\">\n <c8y-highlight\n [text]=\"configuration.name || '-'\"\n elementClass=\"text-info\"\n [pattern]=\"filterTerm\"\n ></c8y-highlight>\n </div>\n <div class=\"col-xs-3\">\n <span class=\"text-muted text-truncate\" [title]=\"configuration.description\">{{\n configuration.description\n }}</span>\n </div>\n <div class=\"col-xs-3\">\n <small translate class=\"text-muted text-uppercase\">Device type:</small>&nbsp;\n {{ configuration.deviceType || '-' }}\n </div>\n <div class=\"col-xs-3 text-right\">\n <span class=\"label label-primary\" *ngIf=\"configuration.configurationType\">\n <c8y-highlight\n [text]=\"configuration.configurationType\"\n elementClass=\"text-info\"\n [pattern]=\"filterTerm\"\n ></c8y-highlight>\n </span>\n </div>\n </div>\n <c8y-li-action (click)=\"edit(configuration)\" icon=\"pencil\">\n Edit\n </c8y-li-action>\n <c8y-li-action (click)=\"delete(configuration)\" icon=\"trash-o\">\n Delete\n </c8y-li-action>\n </c8y-li>\n </c8y-list-group>\n</div>\n"}]}],"members":{"__ctor__":[{"__symbolic":"constructor","parameters":[{"__symbolic":"reference","module":"@c8y/ngx-components","name":"AlertService","line":24,"character":19},{"__symbolic":"reference","name":"ɵb"},{"__symbolic":"reference","module":"ngx-bootstrap/modal","name":"BsModalService","line":26,"character":26}]}],"ngOnInit":[{"__symbolic":"method"}],"ngOnDestroy":[{"__symbolic":"method"}],"add":[{"__symbolic":"method"}],"edit":[{"__symbolic":"method"}],"delete":[{"__symbolic":"method"}],"setPipe":[{"__symbolic":"method"}],"filterContainString":[{"__symbolic":"method"}],"reset":[{"__symbolic":"method"}]}},"ɵb":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Injectable","line":4,"character":1}}],"members":{"__ctor__":[{"__symbolic":"constructor","parameters":[{"__symbolic":"reference","module":"@c8y/client","name":"InventoryService","line":7,"character":23},{"__symbolic":"reference","module":"@c8y/client","name":"InventoryBinaryService","line":8,"character":29}]}],"listConfigurations":[{"__symbolic":"method"}],"delete":[{"__symbolic":"method"}],"save":[{"__symbolic":"method"}],"createEntry":[{"__symbolic":"method"}],"updateEntry":[{"__symbolic":"method"}]}},"ɵc":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Component","line":11,"character":1},"arguments":[{"selector":"c8y-configuration-new-modal","template":"<div class=\"modal-header bg-primary text-white text-center\">\n <h1 c8yIcon=\"cogs\" style=\"font-size: 55px;\"></h1>\n <h4 class=\"p-t-16 text-uppercase\" translate *ngIf=\"mo.id\">Update configuration</h4>\n <h4 class=\"p-t-16 text-uppercase\" translate *ngIf=\"!mo.id\">Add configuration</h4>\n</div>\n\n<form #configurationForm=\"ngForm\" (ngSubmit)=\"configurationForm.form.valid && save()\">\n <div class=\"modal-body\">\n <c8y-form-group>\n <label translate>Name</label>\n <input\n type=\"text\"\n class=\"form-control\"\n placeholder=\"e.g. hosts\"\n autocomplete=\"off\"\n required\n maxlength=\"254\"\n [(ngModel)]=\"versionOrName\"\n name=\"versionOrName\"\n />\n </c8y-form-group>\n\n <c8y-form-group>\n <label translate>Device type</label>\n <input\n type=\"text\"\n class=\"form-control\"\n placeholder=\"e.g. Posix\"\n maxlength=\"254\"\n autocomplete=\"off\"\n [(ngModel)]=\"deviceType\"\n name=\"deviceType\"\n />\n </c8y-form-group>\n\n <c8y-form-group>\n <label translate>Description</label>\n <input\n type=\"text\"\n class=\"form-control\"\n placeholder=\"e.g. Host configuration Posix\"\n maxlength=\"254\"\n autocomplete=\"off\"\n [(ngModel)]=\"description\"\n name=\"description\"\n />\n </c8y-form-group>\n\n <c8y-form-group>\n <label translate>Configuration type</label>\n <c8y-typeahead\n [(selected)]=\"selected\"\n placeholder=\"e.g. ssh\"\n (onSearch)=\"setPipe($event)\"\n displayProperty=\"configurationType\"\n >\n <c8y-li\n *c8yFor=\"let config of configs; pipe: filterPipe; notFound: notFoundTemplate\"\n class=\"p-l-8 p-r-8 c8y-list__item--link\"\n (click)=\"selected = config; setPipe('')\"\n [active]=\"selected === config\"\n >\n <c8y-highlight\n [text]=\"config.configurationType || '--'\"\n [pattern]=\"pattern\"\n ></c8y-highlight>\n </c8y-li>\n <ng-template #notFoundTemplate>\n <c8y-li class=\"bg-gray-lighter p-8\" *ngIf=\"pattern.length > 0\">\n <span translate>No match found, add new`configuration`?</span>\n <button type=\"button\" class=\"btn btn-primary btn-xs m-l-16\" translate>\n Create new`configuration`\n </button>\n </c8y-li>\n </ng-template>\n </c8y-typeahead>\n </c8y-form-group>\n\n <c8y-drop-area\n (dropped)=\"uploadFile($event, configurationForm)\"\n [loadingMessage]=\"'Importing, please wait.' | translate\"\n [title]=\"'Add a configuration file' | translate\"\n [loading]=\"isLoading\"\n >\n </c8y-drop-area>\n </div>\n\n <div class=\"modal-footer\">\n <button (click)=\"cancel()\" type=\"button\" class=\"btn btn-default\" [disabled]=\"isLoading\">\n <span translate>Cancel</span>\n </button>\n <button\n type=\"button\"\n class=\"btn btn-primary\"\n type=\"submit\"\n [disabled]=\"!configurationForm.valid || configurationForm.pristine || isLoading\"\n >\n <span translate *ngIf=\"!mo.id\">Add configuration</span>\n <span translate *ngIf=\"mo.id\">Update configuration</span>\n </button>\n </div>\n</form>\n"}]}],"members":{"__ctor__":[{"__symbolic":"constructor","parameters":[{"__symbolic":"reference","name":"ɵb"},{"__symbolic":"reference","module":"ngx-bootstrap/modal","name":"BsModalRef","line":41,"character":24},{"__symbolic":"reference","module":"@c8y/ngx-components","name":"AlertService","line":42,"character":19}]}],"ngOnInit":[{"__symbolic":"method"}],"cancel":[{"__symbolic":"method"}],"setPipe":[{"__symbolic":"method"}],"uploadFile":[{"__symbolic":"method"}],"save":[{"__symbolic":"method"}]}},"ɵd":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Injectable","line":3,"character":1}}],"members":{"__ctor__":[{"__symbolic":"constructor","parameters":[{"__symbolic":"reference","module":"@c8y/ngx-components","name":"OptionsService","line":7,"character":38}]}],"get":[{"__symbolic":"method"}]}}},"origins":{"RepositoryModule":"./repository.module","ɵa":"./configuration/configuration-list.component","ɵb":"./repository.service","ɵc":"./configuration/configuration-new-modal.component","ɵd":"./repository-navigation-factory"},"importAs":"@c8y/ngx-components/repository"}
1
+ {"__symbolic":"module","version":4,"metadata":{"RepositoryModule":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"NgModule","line":13,"character":1},"arguments":[{"imports":[{"__symbolic":"reference","module":"@c8y/ngx-components","name":"CoreModule","line":14,"character":12},{"__symbolic":"reference","module":"ngx-bootstrap/tooltip","name":"TooltipModule","line":14,"character":24}],"exports":[],"entryComponents":[{"__symbolic":"reference","name":"ɵa"},{"__symbolic":"reference","name":"ɵc"}],"declarations":[{"__symbolic":"reference","name":"ɵa"},{"__symbolic":"reference","name":"ɵc"}],"providers":[{"__symbolic":"reference","name":"ɵb"},{"provide":{"__symbolic":"reference","module":"@c8y/ngx-components","name":"HOOK_NAVIGATOR_NODES","line":21,"character":15},"useClass":{"__symbolic":"reference","name":"ɵd"},"multi":true},{"provide":{"__symbolic":"reference","module":"@c8y/ngx-components","name":"HOOK_ONCE_ROUTE","line":26,"character":15},"useValue":[{"path":"configuration-new","component":{"__symbolic":"reference","name":"ɵa"}}],"multi":true}]}]}],"members":{}},"ɵa":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Component","line":10,"character":1},"arguments":[{"selector":"c8y-configuration-list","template":"<c8y-title>\n <span translate>Configuration snapshots repository</span>&nbsp;\n <small *ngIf=\"(configurations$ | async)?.paging.totalPages === 1 && !filterTerm\"\n >{{ (configurations$ | async).data.length }} <span translate>snapshots</span></small\n >\n <small\n *ngIf=\"(configurations$ | async)?.paging.totalPages > 1 && !filterTerm\"\n [tooltip]=\"'More data available. Scroll to the bottom of the list to load it.' | translate\"\n container=\"body\"\n >{{ (configurations$ | async).paging.pageSize }}+ <span translate>snapshots</span></small\n >\n <small *ngIf=\"filterTerm\"\n ><span translate>Search results for</span>&nbsp;\"{{ this.filterTerm }}\"</small\n >\n</c8y-title>\n\n<c8y-action-bar-item itemClass=\"navbar-form\">\n <div class=\"input-group input-group-search\">\n <input\n class=\"form-control\"\n placeholder=\"{{ 'Filter…' | translate }}\"\n type=\"text\"\n [value]=\"filterTerm\"\n (keyup)=\"filterChange$.next($event)\"\n />\n <span class=\"input-group-btn\">\n <button class=\"btn btn-clean\" (click)=\"filterTerm = ''; setPipe('')\">\n <i [c8yIcon]=\"filterTerm.length === 0 ? 'filter' : 'close'\"></i>\n </button>\n </span>\n </div>\n</c8y-action-bar-item>\n\n<c8y-action-bar-item [placement]=\"'right'\">\n <button class=\"btn btn-link\" (click)=\"add()\">\n <i c8yIcon=\"plus-square\"></i> {{ 'Add configuration snapshot' | translate }}\n </button>\n</c8y-action-bar-item>\n\n<div\n class=\"c8y-empty-state text-center\"\n *ngIf=\"!filterTerm && (configurations$ | async)?.data.length === 0\"\n>\n <h1 c8yIcon=\"gears\"></h1>\n <h3 translate>There are no configuration snapshots defined</h3>\n <p translate>Add a configuration snapshot first.</p>\n <div>\n <button (click)=\"add()\" class=\"btn btn-primary\" translate>\n Add configuration snapshot\n </button>\n </div>\n <p c8y-guide-docs>\n <small forceHtmlTranslate ngNonBindable\n >Find out more in the\n <a c8y-guide-href=\"users-guide/device-management/#configuration-repository\"\n >User guide`KEEP_ORIGINAL`</a\n >.</small\n >\n </p>\n</div>\n\n<ng-template #notFound>\n <c8y-li class=\"p-8 text-center\">\n <p>\n <span translate>No more entries found for filter:</span>&nbsp;<strong>{{\n filterTerm\n }}</strong>\n </p>\n <button class=\"btn btn-primary btn-xs m-t-8\" translate (click)=\"filterTerm = ''; setPipe('')\">\n Reset filter\n </button>\n </c8y-li>\n</ng-template>\n<div class=\"p-b-32\">\n <c8y-list-group>\n <c8y-li\n *c8yFor=\"\n let configuration of configurations$;\n pipe: filterPipe;\n notFound: this.filterTerm ? notFound : undefined\n \"\n >\n <c8y-li-icon icon=\"gears\"></c8y-li-icon>\n <div class=\"row flex-row\">\n <div class=\"col-xs-3\">\n <c8y-highlight\n [text]=\"configuration.name || '-'\"\n elementClass=\"text-info\"\n [pattern]=\"filterTerm\"\n ></c8y-highlight>\n </div>\n <div class=\"col-xs-3\">\n <span class=\"text-muted text-truncate\" [title]=\"configuration.description\">{{\n configuration.description\n }}</span>\n </div>\n <div class=\"col-xs-3\">\n <small translate class=\"text-muted text-uppercase\">Device type:</small>&nbsp;\n {{ configuration.deviceType || '-' }}\n </div>\n <div class=\"col-xs-3 text-right\">\n <span class=\"label label-primary\" *ngIf=\"configuration.configurationType\">\n <c8y-highlight\n [text]=\"configuration.configurationType\"\n elementClass=\"text-info\"\n [pattern]=\"filterTerm\"\n ></c8y-highlight>\n </span>\n </div>\n </div>\n <c8y-li-action (click)=\"edit(configuration)\" icon=\"pencil\">\n Edit\n </c8y-li-action>\n <c8y-li-action (click)=\"delete(configuration)\" icon=\"trash-o\">\n Delete\n </c8y-li-action>\n </c8y-li>\n </c8y-list-group>\n</div>\n"}]}],"members":{"__ctor__":[{"__symbolic":"constructor","parameters":[{"__symbolic":"reference","module":"@c8y/ngx-components","name":"AlertService","line":24,"character":19},{"__symbolic":"reference","name":"ɵb"},{"__symbolic":"reference","module":"ngx-bootstrap/modal","name":"BsModalService","line":26,"character":26}]}],"ngOnInit":[{"__symbolic":"method"}],"ngOnDestroy":[{"__symbolic":"method"}],"add":[{"__symbolic":"method"}],"edit":[{"__symbolic":"method"}],"delete":[{"__symbolic":"method"}],"setPipe":[{"__symbolic":"method"}],"filterContainString":[{"__symbolic":"method"}],"reset":[{"__symbolic":"method"}]}},"ɵb":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Injectable","line":4,"character":1}}],"members":{"__ctor__":[{"__symbolic":"constructor","parameters":[{"__symbolic":"reference","module":"@c8y/client","name":"InventoryService","line":7,"character":23},{"__symbolic":"reference","module":"@c8y/client","name":"InventoryBinaryService","line":8,"character":29}]}],"listConfigurations":[{"__symbolic":"method"}],"delete":[{"__symbolic":"method"}],"save":[{"__symbolic":"method"}],"createEntry":[{"__symbolic":"method"}],"updateEntry":[{"__symbolic":"method"}]}},"ɵc":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Component","line":11,"character":1},"arguments":[{"selector":"c8y-configuration-new-modal","template":"<div class=\"modal-header bg-primary text-white text-center\">\n <h1 c8yIcon=\"cogs\" style=\"font-size: 55px;\"></h1>\n <h4 class=\"p-t-16 text-uppercase\" translate *ngIf=\"mo.id\">Update configuration</h4>\n <h4 class=\"p-t-16 text-uppercase\" translate *ngIf=\"!mo.id\">Add configuration</h4>\n</div>\n\n<form #configurationForm=\"ngForm\" (ngSubmit)=\"configurationForm.form.valid && save()\">\n <div class=\"modal-body\">\n <c8y-form-group>\n <label translate>Name</label>\n <input\n type=\"text\"\n class=\"form-control\"\n placeholder=\"e.g. hosts\"\n autocomplete=\"off\"\n required\n maxlength=\"254\"\n [(ngModel)]=\"versionOrName\"\n name=\"versionOrName\"\n />\n </c8y-form-group>\n\n <c8y-form-group>\n <label translate>Device type</label>\n <input\n type=\"text\"\n class=\"form-control\"\n placeholder=\"e.g. Posix\"\n maxlength=\"254\"\n autocomplete=\"off\"\n [(ngModel)]=\"deviceType\"\n name=\"deviceType\"\n />\n </c8y-form-group>\n\n <c8y-form-group>\n <label translate>Description</label>\n <input\n type=\"text\"\n class=\"form-control\"\n placeholder=\"e.g. Host configuration Posix\"\n maxlength=\"254\"\n autocomplete=\"off\"\n [(ngModel)]=\"description\"\n name=\"description\"\n />\n </c8y-form-group>\n\n <c8y-form-group>\n <label translate>Configuration type</label>\n <c8y-typeahead\n [(selected)]=\"selected\"\n placeholder=\"e.g. ssh\"\n (onSearch)=\"setPipe($event)\"\n displayProperty=\"configurationType\"\n >\n <c8y-li\n *c8yFor=\"let config of configs; pipe: filterPipe; notFound: notFoundTemplate\"\n class=\"p-l-8 p-r-8 c8y-list__item--link\"\n (click)=\"selected = config; setPipe('')\"\n [active]=\"selected === config\"\n >\n <c8y-highlight\n [text]=\"config.configurationType || '--'\"\n [pattern]=\"pattern\"\n ></c8y-highlight>\n </c8y-li>\n <ng-template #notFoundTemplate>\n <c8y-li class=\"bg-gray-lighter p-8\" *ngIf=\"pattern.length > 0\">\n <span translate>No match found, add new`configuration`?</span>\n <button type=\"button\" class=\"btn btn-primary btn-xs m-l-16\" translate>\n Create new`configuration`\n </button>\n </c8y-li>\n </ng-template>\n </c8y-typeahead>\n </c8y-form-group>\n\n <c8y-drop-area\n (dropped)=\"uploadFile($event, configurationForm)\"\n [loadingMessage]=\"'Importing, please wait.' | translate\"\n [title]=\"'Add a configuration file' | translate\"\n [loading]=\"isLoading\"\n >\n </c8y-drop-area>\n </div>\n\n <div class=\"modal-footer\">\n <button (click)=\"cancel()\" type=\"button\" class=\"btn btn-default\" [disabled]=\"isLoading\">\n <span translate>Cancel</span>\n </button>\n <button\n type=\"button\"\n class=\"btn btn-primary\"\n type=\"submit\"\n [disabled]=\"!configurationForm.valid || configurationForm.pristine || isLoading\"\n >\n <span translate *ngIf=\"!mo.id\">Add configuration</span>\n <span translate *ngIf=\"mo.id\">Update configuration</span>\n </button>\n </div>\n</form>\n"}]}],"members":{"__ctor__":[{"__symbolic":"constructor","parameters":[{"__symbolic":"reference","name":"ɵb"},{"__symbolic":"reference","module":"ngx-bootstrap/modal","name":"BsModalRef","line":41,"character":24},{"__symbolic":"reference","module":"@c8y/ngx-components","name":"AlertService","line":42,"character":19}]}],"ngOnInit":[{"__symbolic":"method"}],"cancel":[{"__symbolic":"method"}],"setPipe":[{"__symbolic":"method"}],"uploadFile":[{"__symbolic":"method"}],"save":[{"__symbolic":"method"}]}},"ɵd":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Injectable","line":3,"character":1}}],"members":{"__ctor__":[{"__symbolic":"constructor","parameters":[{"__symbolic":"reference","module":"@c8y/ngx-components","name":"OptionsService","line":7,"character":38}]}],"get":[{"__symbolic":"method"}]}}},"origins":{"RepositoryModule":"./repository.module","ɵa":"./configuration/configuration-list.component","ɵb":"./repository.service","ɵc":"./configuration/configuration-new-modal.component","ɵd":"./repository-navigation-factory"},"importAs":"@c8y/ngx-components/repository"}