@umbraco-cms/backoffice 18.0.0-rc1 → 18.0.0-rc3

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 (45) hide show
  1. package/dist-cms/apps/app/app.element.js +6 -1
  2. package/dist-cms/assets/lang/ar.js +1 -0
  3. package/dist-cms/assets/lang/bs.js +1 -8
  4. package/dist-cms/assets/lang/cs.js +1 -8
  5. package/dist-cms/assets/lang/cy.js +2 -2
  6. package/dist-cms/assets/lang/da.js +1 -0
  7. package/dist-cms/assets/lang/de.js +2 -2
  8. package/dist-cms/assets/lang/es.js +2 -8
  9. package/dist-cms/assets/lang/fr.js +2 -2
  10. package/dist-cms/assets/lang/he.js +1 -6
  11. package/dist-cms/assets/lang/hr.js +1 -8
  12. package/dist-cms/assets/lang/it.js +1 -1
  13. package/dist-cms/assets/lang/ja.js +1 -8
  14. package/dist-cms/assets/lang/ko.js +1 -6
  15. package/dist-cms/assets/lang/nb.js +2 -9
  16. package/dist-cms/assets/lang/nl.js +2 -2
  17. package/dist-cms/assets/lang/pl.js +1 -8
  18. package/dist-cms/assets/lang/pt-br.js +0 -6
  19. package/dist-cms/assets/lang/pt.js +1 -0
  20. package/dist-cms/assets/lang/ro.js +1 -1
  21. package/dist-cms/assets/lang/ru.js +1 -8
  22. package/dist-cms/assets/lang/sv.js +2 -9
  23. package/dist-cms/assets/lang/tr.js +1 -8
  24. package/dist-cms/assets/lang/uk.js +1 -8
  25. package/dist-cms/assets/lang/vi.js +1 -0
  26. package/dist-cms/assets/lang/zh-tw.js +1 -8
  27. package/dist-cms/assets/lang/zh.js +1 -8
  28. package/dist-cms/external/uui/package.json +1 -1
  29. package/dist-cms/libs/extension-api/initializers/extension-initializer-base.js +26 -2
  30. package/dist-cms/packages/content/content-type/workspace/views/design/content-type-design-editor-tab.element.js +1 -0
  31. package/dist-cms/packages/core/collection/components/pagination/collection-pagination.element.js +1 -2
  32. package/dist-cms/packages/core/components/multiple-text-string-input/input-multiple-text-string-item.element.js +18 -1
  33. package/dist-cms/packages/core/picker/search/picker-search-result.element.js +1 -2
  34. package/dist-cms/packages/documents/document-redirect-management/dashboard-redirect-management.element.js +0 -4
  35. package/dist-cms/packages/documents/documents/audit-log/info-app/document-history-workspace-info-app.element.js +0 -3
  36. package/dist-cms/packages/log-viewer/workspace/views/search/components/log-viewer-messages-list.element.js +0 -1
  37. package/dist-cms/packages/media/media/audit-log/info-app/media-history-workspace-info-app.element.js +0 -3
  38. package/dist-cms/packages/media/media/modals/media-picker/media-picker-modal.element.js +0 -1
  39. package/dist-cms/packages/members/member-group/components/member-group-picker-modal/member-group-picker-modal.element.js +0 -1
  40. package/dist-cms/packages/packages/package-section/views/created/packages-created-overview.element.js +0 -3
  41. package/dist-cms/packages/relations/relation-types/workspace/relation-type/views/relation-type-detail-workspace-view.element.js +0 -1
  42. package/dist-cms/packages/relations/relations/reference/workspace-info-app/entity-references-workspace-view-info.element.js +0 -5
  43. package/dist-cms/packages/user/current-user/history/current-user-history-user-profile-app.element.js +0 -2
  44. package/dist-cms/tsconfig.build.tsbuildinfo +1 -1
  45. package/package.json +2 -2
@@ -219,7 +219,7 @@ let UmbAppElement = class UmbAppElement extends UmbLitElement {
219
219
  onInit(this, umbExtensionsRegistry);
220
220
  // Register public extensions (login extensions)
221
221
  await new UmbServerExtensionRegistrator(this, umbExtensionsRegistry).registerPublicExtensions();
222
- new UmbAppEntryPointExtensionInitializer(this, umbExtensionsRegistry);
222
+ const entryPointInitializer = new UmbAppEntryPointExtensionInitializer(this, umbExtensionsRegistry);
223
223
  // Try to initialise the auth flow and get the runtime status
224
224
  try {
225
225
  // If the runtime level is "install" or ?status=false is set, we should clear any cached tokens
@@ -232,6 +232,11 @@ let UmbAppElement = class UmbAppElement extends UmbLitElement {
232
232
  else {
233
233
  await this.#setAuthStatus();
234
234
  }
235
+ // The login screen decides which auth provider to use from the registered
236
+ // `authProvider` extensions. App-entry-points may register or unregister those during
237
+ // their async onInit, so wait for them to settle before routing — otherwise on a slow
238
+ // connection the decision races and falls back to the local login.
239
+ await this.observe(entryPointInitializer.loaded).asPromise();
235
240
  // Initialise the router
236
241
  this.#redirect();
237
242
  }
@@ -1193,6 +1193,7 @@ export default {
1193
1193
  },
1194
1194
  sections: {
1195
1195
  content: 'المحتوى',
1196
+ library: 'المكتبة',
1196
1197
  media: 'الوسائط',
1197
1198
  member: 'الأعضاء',
1198
1199
  packages: 'الحزم',
@@ -1088,20 +1088,13 @@ export default {
1088
1088
  editscript: 'Uredite datoteku skripte',
1089
1089
  },
1090
1090
  sections: {
1091
- concierge: 'Portirnica',
1092
1091
  content: 'Sadržaj',
1093
- courier: 'Kurir',
1094
- developer: 'Developer',
1095
- forms: 'Forme',
1096
- help: 'Pomoć',
1097
- installer: 'Umbraco Konfiguracijski Čarobnjak',
1092
+ library: 'Biblioteka',
1098
1093
  media: 'Mediji',
1099
1094
  member: 'Članovi',
1100
- newsletters: 'Bilteni',
1101
1095
  packages: 'Paketi',
1102
1096
  marketplace: 'Marketplace',
1103
1097
  settings: 'Postavke',
1104
- statistics: 'Statistika',
1105
1098
  translation: 'Prevodi',
1106
1099
  users: 'Korisnici',
1107
1100
  },
@@ -1011,20 +1011,13 @@ export default {
1011
1011
  },
1012
1012
  sections: {
1013
1013
  content: 'Obsah',
1014
- forms: 'Formuláře',
1014
+ library: 'Knihovna',
1015
1015
  media: 'Média',
1016
1016
  member: 'Členové',
1017
1017
  packages: 'Balíčky',
1018
1018
  settings: 'Nastavení',
1019
1019
  translation: 'Překlad',
1020
1020
  users: 'Uživatelé',
1021
- concierge: 'Domovník',
1022
- courier: 'Kurýr',
1023
- developer: 'Vývojář',
1024
- installer: 'Průvodce nastavením Umbraca',
1025
- newsletters: 'Zpravodaje',
1026
- statistics: 'Statistiky',
1027
- help: 'Nápověda',
1028
1021
  },
1029
1022
  settings: {
1030
1023
  defaulttemplate: 'Výchozí šablona',
@@ -1181,14 +1181,14 @@ export default {
1181
1181
  },
1182
1182
  sections: {
1183
1183
  content: 'Cynnwys',
1184
- forms: 'Ffurflenni',
1184
+ library: 'Llyfrgell',
1185
1185
  media: 'Cyfrwng',
1186
1186
  member: 'Aelodau',
1187
1187
  packages: 'Pecynnau',
1188
+ marketplace: 'Marchnad',
1188
1189
  settings: 'Gosodiadau',
1189
1190
  translation: 'Cyfieithiad',
1190
1191
  users: 'Defnyddwyr',
1191
- marketplace: 'Marchnad',
1192
1192
  },
1193
1193
  settings: {
1194
1194
  defaulttemplate: 'Templed diofyn',
@@ -1363,6 +1363,7 @@ export default {
1363
1363
  },
1364
1364
  sections: {
1365
1365
  content: 'Indhold',
1366
+ library: 'Bibliotek',
1366
1367
  media: 'Mediearkiv',
1367
1368
  member: 'Medlemmer',
1368
1369
  packages: 'Pakker',
@@ -967,7 +967,7 @@ export default {
967
967
  greeting5: 'Willkommen',
968
968
  greeting6: 'Willkommen',
969
969
  instruction: 'Hier anmelden:',
970
- signInWith: 'Anmelden mit',
970
+ signInWith: 'Anmelden mit {0}',
971
971
  timeout: 'Sitzung abgelaufen',
972
972
  forgottenPassword: 'Kennwort vergessen?',
973
973
  forgottenPasswordInstruction: 'Es wird eine E-Mail mit einem Kennwort-Zurücksetzen-Link an die angegebene Adresse geschickt.',
@@ -1192,7 +1192,7 @@ export default {
1192
1192
  },
1193
1193
  sections: {
1194
1194
  content: 'Inhalte',
1195
- forms: 'Formulare',
1195
+ library: 'Bibliothek',
1196
1196
  media: 'Medien',
1197
1197
  member: 'Mitglieder',
1198
1198
  packages: 'Pakete',
@@ -823,20 +823,14 @@ export default {
823
823
  editscript: 'Editar fichero de script',
824
824
  },
825
825
  sections: {
826
- concierge: 'Conserje',
827
826
  content: 'Contenido',
828
- courier: 'Mensajero',
829
- developer: 'Desarrollador',
830
- installer: 'Asistente de configuración de Umbraco',
827
+ library: 'Biblioteca',
831
828
  media: 'Media',
832
829
  member: 'Miembros',
833
- newsletters: 'Boletín informativo',
830
+ packages: 'Paquetes',
834
831
  settings: 'Ajustes',
835
- statistics: 'Estadísticas',
836
832
  translation: 'Traducción',
837
833
  users: 'Usuarios',
838
- help: 'Ayuda',
839
- packages: 'Paquetes',
840
834
  },
841
835
  settings: {
842
836
  defaulttemplate: 'Plantilla por defecto',
@@ -848,7 +848,7 @@ export default {
848
848
  greeting5: 'Bienvenue',
849
849
  greeting6: 'Bienvenue',
850
850
  instruction: 'Connectez-vous ci-dessous',
851
- signInWith: 'Identifiez-vous avec',
851
+ signInWith: 'Identifiez-vous avec {0}',
852
852
  timeout: 'La session a expiré',
853
853
  forgottenPassword: 'Mot de passe oublié?',
854
854
  forgottenPasswordInstruction: "Un email contenant un lien pour ré-initialiser votre mot de passe sera envoyé à l'adresse spécifiée",
@@ -1023,7 +1023,7 @@ export default {
1023
1023
  },
1024
1024
  sections: {
1025
1025
  content: 'Contenu',
1026
- forms: 'Formulaires',
1026
+ library: 'Bibliothèque',
1027
1027
  media: 'Medias',
1028
1028
  member: 'Membres',
1029
1029
  packages: 'Packages',
@@ -503,16 +503,11 @@ export default {
503
503
  editscript: 'ערוך קובץ סקריפט',
504
504
  },
505
505
  sections: {
506
- concierge: 'Concierge',
507
506
  content: 'תוכן',
508
- courier: 'Courier',
509
- developer: 'מפתח',
510
- installer: 'אשף הגדרת אומברקו',
507
+ library: 'ספרייה',
511
508
  media: 'מדיה',
512
509
  member: 'חברים',
513
- newsletters: 'עיתון',
514
510
  settings: 'הגדרות',
515
- statistics: 'סטטיסטיקות',
516
511
  translation: 'תירגום',
517
512
  users: 'משתמשים',
518
513
  },
@@ -1127,20 +1127,13 @@ export default {
1127
1127
  editscript: 'Uredite datoteku skripte',
1128
1128
  },
1129
1129
  sections: {
1130
- concierge: 'Portirnica',
1131
1130
  content: 'Sadržaj',
1132
- courier: 'Kurir',
1133
- developer: 'Developer',
1134
- forms: 'Forme',
1135
- help: 'Pomoć',
1136
- installer: 'Umbraco Konfiguracijski Čarobnjak',
1131
+ library: 'Knjižnica',
1137
1132
  media: 'Mediji',
1138
1133
  member: 'Članovi',
1139
- newsletters: 'Newsletteri',
1140
1134
  packages: 'Paketi',
1141
1135
  marketplace: 'Marketplace',
1142
1136
  settings: 'Postavke',
1143
- statistics: 'Statistika',
1144
1137
  translation: 'Prijevodi',
1145
1138
  users: 'Korisnici',
1146
1139
  },
@@ -1136,7 +1136,7 @@ export default {
1136
1136
  },
1137
1137
  sections: {
1138
1138
  content: 'Contenuto',
1139
- forms: 'Forms',
1139
+ library: 'Biblioteca',
1140
1140
  media: 'Media',
1141
1141
  member: 'Membri',
1142
1142
  packages: 'Pacchetti',
@@ -667,20 +667,13 @@ export default {
667
667
  editscript: 'スクリプトファイルの編集',
668
668
  },
669
669
  sections: {
670
- concierge: '管理人',
671
670
  content: 'コンテンツ',
672
- courier: 'Courier',
673
- developer: '開発',
674
- installer: 'Umbraco 設定ウィザード',
671
+ library: 'ライブラリ',
675
672
  media: 'メディア',
676
673
  member: 'メンバー',
677
- newsletters: 'ニュースレター',
678
674
  settings: '設定',
679
- statistics: '統計',
680
675
  translation: '翻訳',
681
676
  users: 'ユーザー',
682
- help: 'ヘルプ',
683
- forms: 'フォーム',
684
677
  },
685
678
  settings: {
686
679
  defaulttemplate: '既定のテンプレート',
@@ -503,16 +503,11 @@ export default {
503
503
  editscript: '스크립트 파일 편집',
504
504
  },
505
505
  sections: {
506
- concierge: '안내',
507
506
  content: '컨텐츠',
508
- courier: '가이드',
509
- developer: '개발도구',
510
- installer: 'Umbraco 설치마법사',
507
+ library: '라이브러리',
511
508
  media: '미디어',
512
509
  member: '구성원',
513
- newsletters: '뉴스레터',
514
510
  settings: '세팅',
515
- statistics: '통계',
516
511
  translation: '변환',
517
512
  users: '사용자',
518
513
  },
@@ -660,7 +660,7 @@ export default {
660
660
  greeting5: 'Velkommen',
661
661
  greeting6: 'Velkommen',
662
662
  instruction: 'Logg på nedenfor',
663
- signInWith: 'Logg på med',
663
+ signInWith: 'Logg på med {0}',
664
664
  timeout: 'Din sesjon er utløpt',
665
665
  continue: 'Fortsett',
666
666
  validate: 'Valider',
@@ -808,20 +808,13 @@ export default {
808
808
  editscript: 'Rediger scriptfilen',
809
809
  },
810
810
  sections: {
811
- concierge: 'Concierge',
812
811
  content: 'Innhold',
813
- courier: 'Courier',
814
- developer: 'Utvikler',
815
- installer: 'Umbraco konfigurasjonsveiviser',
812
+ library: 'Bibliotek',
816
813
  media: 'Mediaarkiv',
817
814
  member: 'Medlemmer',
818
- newsletters: 'Nyhetsbrev',
819
815
  settings: 'Innstillinger',
820
- statistics: 'Statistikk',
821
816
  translation: 'Oversettelse',
822
817
  users: 'Brukere',
823
- help: 'Hjelp',
824
- forms: 'Skjemaer',
825
818
  },
826
819
  settings: {
827
820
  defaulttemplate: 'Standardmal',
@@ -866,7 +866,7 @@ export default {
866
866
  greeting5: 'Welkom',
867
867
  greeting6: 'Welkom',
868
868
  instruction: 'log hieronder in',
869
- signInWith: 'Inloggen met',
869
+ signInWith: 'Inloggen met {0}',
870
870
  timeout: 'Sessie is verlopen',
871
871
  forgottenPassword: 'Wachtwoord vergeten?',
872
872
  forgottenPasswordInstruction: 'Er zal een e-mail worden gestuurd naar het e-mailadres van jouw account.\n Hierin staat een link om je wachtwoord te resetten\n ',
@@ -1080,7 +1080,7 @@ export default {
1080
1080
  },
1081
1081
  sections: {
1082
1082
  content: 'Inhoud',
1083
- forms: 'Formulieren',
1083
+ library: 'Bibliotheek',
1084
1084
  media: 'Media',
1085
1085
  member: 'Leden',
1086
1086
  packages: 'Packages',
@@ -779,20 +779,13 @@ export default {
779
779
  editscript: 'Edytuj skrypt',
780
780
  },
781
781
  sections: {
782
- concierge: 'Concierge',
783
782
  content: 'Treść',
784
- courier: 'Kurier',
785
- developer: 'Deweloper',
786
- installer: 'Konfigurator Umbraco',
783
+ library: 'Biblioteka',
787
784
  media: 'Media',
788
785
  member: 'Członkowie',
789
- newsletters: 'Biuletyny',
790
786
  settings: 'Ustawienia',
791
- statistics: 'Statystyki',
792
787
  translation: 'Tłumaczenie',
793
788
  users: 'Użytkownicy',
794
- help: 'Pomoc',
795
- forms: 'Formularze',
796
789
  },
797
790
  settings: {
798
791
  defaulttemplate: 'Domyślny szablon',
@@ -321,14 +321,8 @@ export default {
321
321
  editscript: 'Editar arquivo de script',
322
322
  },
323
323
  sections: {
324
- concierge: 'Porteiro',
325
- courier: 'Mensageiro',
326
- developer: 'Desenvolvedor',
327
- installer: 'Assistente de Configuração Umbraco',
328
324
  media: 'Mídia',
329
- newsletters: 'Boletins Informativos',
330
325
  settings: 'Configurações',
331
- statistics: 'Estatísticas',
332
326
  users: 'Usuários',
333
327
  },
334
328
  settings: {
@@ -1293,6 +1293,7 @@ export default {
1293
1293
  },
1294
1294
  sections: {
1295
1295
  content: 'Conteúdo',
1296
+ library: 'Biblioteca',
1296
1297
  media: 'Multimédia',
1297
1298
  member: 'Membros',
1298
1299
  packages: 'Pacotes',
@@ -1,7 +1,7 @@
1
1
  export default {
2
2
  sections: {
3
3
  content: 'Conţinut',
4
- forms: 'Formulare',
4
+ library: 'Bibliotecă',
5
5
  media: 'Media',
6
6
  member: 'Membrii',
7
7
  packages: 'Pachete',
@@ -927,18 +927,11 @@ export default {
927
927
  editscript: 'Править файл скрипта',
928
928
  },
929
929
  sections: {
930
- concierge: 'Смотритель',
931
930
  content: 'Содержимое',
932
- courier: 'Курьер',
933
- developer: 'Разработка',
934
- forms: 'Формы',
935
- help: 'Помощь',
936
- installer: 'Мастер конфигурирования Umbraco',
931
+ library: 'Библиотека',
937
932
  media: 'Медиа-материалы',
938
933
  member: 'Участники',
939
- newsletters: 'Рассылки',
940
934
  settings: 'Установки',
941
- statistics: 'Статистика',
942
935
  translation: 'Перевод',
943
936
  users: 'Пользователи',
944
937
  },
@@ -643,7 +643,7 @@ export default {
643
643
  greeting5: 'Välkommen',
644
644
  greeting6: 'Välkommen',
645
645
  instruction: 'Logga in nedan',
646
- signInWith: 'Logga in med',
646
+ signInWith: 'Logga in med {0}',
647
647
  timeout: 'Sessionen har nått sin maxgräns',
648
648
  continue: 'Fortsätt',
649
649
  validate: 'Validera',
@@ -814,19 +814,12 @@ export default {
814
814
  editscript: 'Redigera script',
815
815
  },
816
816
  sections: {
817
- concierge: 'Concierge',
818
817
  content: 'Innehåll',
819
- courier: 'Courier',
820
- developer: 'Utvecklare',
821
- forms: 'Formulär',
822
- help: 'Hjälp',
823
- installer: 'Umbraco konfigurationsguide',
818
+ library: 'Bibliotek',
824
819
  media: 'Media',
825
820
  member: 'Medlemmar',
826
- newsletters: 'Nyhetsbrev',
827
821
  packages: 'Paket',
828
822
  settings: 'Inställningar',
829
- statistics: 'Statistik',
830
823
  translation: 'Översättning',
831
824
  users: 'Användare',
832
825
  },
@@ -1015,19 +1015,12 @@ export default {
1015
1015
  editscript: 'Komut dosyasını düzenle',
1016
1016
  },
1017
1017
  sections: {
1018
- concierge: 'Konsiyerj',
1019
1018
  content: 'İçerik',
1020
- courier: 'Kurye',
1021
- developer: 'Geliştirici',
1022
- forms: 'Formlar',
1023
- help: 'Yardım',
1024
- installer: 'Umbraco Yapılandırma Sihirbazı',
1019
+ library: 'Kitaplık',
1025
1020
  media: 'Medya',
1026
1021
  member: 'Üyeler',
1027
- newsletters: 'Bültenler',
1028
1022
  packages: 'Paketler',
1029
1023
  settings: 'Ayarlar',
1030
- statistics: 'İstatistikler',
1031
1024
  translation: 'Çeviri',
1032
1025
  users: 'Kullanıcılar',
1033
1026
  },
@@ -927,18 +927,11 @@ export default {
927
927
  editscript: 'Редагувати файл скрипта',
928
928
  },
929
929
  sections: {
930
- concierge: 'Консьєрж',
931
930
  content: 'Вміст',
932
- courier: "Кур'єр",
933
- developer: 'Розробка',
934
- forms: 'Форми',
935
- help: 'Допомога',
936
- installer: 'Майстер конфігурування Umbraco',
931
+ library: 'Бібліотека',
937
932
  media: 'Медіа-матеріали',
938
933
  member: 'Учасники',
939
- newsletters: 'Розсилки',
940
934
  settings: 'Налаштування',
941
- statistics: 'Статистика',
942
935
  translation: 'Переклад',
943
936
  users: 'Користувачі',
944
937
  },
@@ -1309,6 +1309,7 @@ export default {
1309
1309
  },
1310
1310
  sections: {
1311
1311
  content: 'Nội dung',
1312
+ library: 'Thư viện',
1312
1313
  media: 'Phương tiện',
1313
1314
  member: 'Thành viên',
1314
1315
  packages: 'Gói mở rộng',
@@ -657,20 +657,13 @@ export default {
657
657
  editscript: '編輯腳本',
658
658
  },
659
659
  sections: {
660
- concierge: 'Concierge',
661
660
  content: '內容',
662
- courier: 'Courier',
663
- developer: '開發',
664
- installer: '設定精靈',
661
+ library: '資源庫',
665
662
  media: '媒體',
666
663
  member: '會員',
667
- newsletters: '消息',
668
664
  settings: '設置',
669
- statistics: '統計',
670
665
  translation: '翻譯',
671
666
  users: '用戶',
672
- help: '說明',
673
- forms: '表單',
674
667
  },
675
668
  settings: {
676
669
  defaulttemplate: '預設範本',
@@ -661,20 +661,13 @@ export default {
661
661
  editscript: '编辑脚本',
662
662
  },
663
663
  sections: {
664
- concierge: '礼宾',
665
664
  content: '内容',
666
- courier: '导游',
667
- developer: '开发',
668
- installer: 'Umbraco配置向导',
665
+ library: '资源库',
669
666
  media: '媒体',
670
667
  member: '会员',
671
- newsletters: '消息',
672
668
  settings: '设置',
673
- statistics: '统计',
674
669
  translation: '翻译',
675
670
  users: '用户',
676
- help: '帮助',
677
- forms: '窗体',
678
671
  },
679
672
  settings: {
680
673
  defaulttemplate: '默认模板',
@@ -6,6 +6,6 @@
6
6
  "build": "vite build"
7
7
  },
8
8
  "dependencies": {
9
- "@umbraco-ui/uui": "^2.0.0-rc.1"
9
+ "@umbraco-ui/uui": "^2.0.0-rc.2"
10
10
  }
11
11
  }
@@ -7,28 +7,52 @@ export class UmbExtensionInitializerBase extends UmbControllerBase {
7
7
  #extensionMap;
8
8
  // Use the value `undefined`, as that would not resolve a observation promise. [NL]
9
9
  #loaded;
10
+ // Identifies the current processing pass. The observer callback is async, so passes can
11
+ // overlap; only the latest pass is allowed to settle `loaded`, so a slower earlier pass
12
+ // cannot unblock waiters before the newest set of extensions has finished instantiating.
13
+ #loadPass;
10
14
  constructor(host, extensionRegistry, manifestType) {
11
15
  super(host);
12
16
  this.#extensionMap = new Map();
13
17
  // Use the value `undefined`, as that would not resolve a observation promise. [NL]
14
18
  this.#loaded = new UmbBooleanState(undefined);
15
19
  this.loaded = this.#loaded.asObservable();
20
+ // Identifies the current processing pass. The observer callback is async, so passes can
21
+ // overlap; only the latest pass is allowed to settle `loaded`, so a slower earlier pass
22
+ // cannot unblock waiters before the newest set of extensions has finished instantiating.
23
+ this.#loadPass = 0;
16
24
  this.host = host;
17
25
  this.extensionRegistry = extensionRegistry;
18
26
  this.observe(extensionRegistry.byType(manifestType), async (extensions) => {
27
+ const pass = ++this.#loadPass;
28
+ // Re-arm while this pass is in flight so a consumer awaiting `loaded` waits for it to
29
+ // finish instead of resolving on a stale `true` from a previous pass. `undefined`
30
+ // rather than `false` because `asPromise()` resolves on the first non-undefined value.
31
+ this.#loaded.setValue(undefined);
19
32
  this.#extensionMap.forEach((existingExt) => {
20
33
  if (!extensions.find((b) => b.alias === existingExt.alias)) {
21
34
  this.unloadExtension(existingExt);
22
35
  this.#extensionMap.delete(existingExt.alias);
23
36
  }
24
37
  });
25
- await Promise.all(extensions.map((extension) => {
38
+ // `allSettled` so a throwing/rejecting `instantiateExtension` cannot leave `loaded`
39
+ // stuck at `undefined` and hang a waiter (e.g. the app boot gate). Failures are
40
+ // surfaced rather than swallowed.
41
+ const results = await Promise.allSettled(extensions.map((extension) => {
26
42
  if (this.#extensionMap.has(extension.alias))
27
43
  return;
28
44
  this.#extensionMap.set(extension.alias, extension);
29
45
  return this.instantiateExtension(extension);
30
46
  }));
31
- if (extensions.length > 0) {
47
+ for (const result of results) {
48
+ if (result.status === 'rejected') {
49
+ console.error('[UmbExtensionInitializer] Failed to instantiate extension', result.reason);
50
+ }
51
+ }
52
+ // Only the latest pass settles `loaded`. Resolving unconditionally — including for
53
+ // zero extensions — so a consumer awaiting `loaded` (the app-entry-point boot gate,
54
+ // the bundle guard) never hangs on a default install that registers none of this type.
55
+ if (pass === this.#loadPass) {
32
56
  this.#loaded.setValue(true);
33
57
  }
34
58
  });
@@ -242,6 +242,7 @@ let UmbContentTypeDesignEditorTabElement = class UmbContentTypeDesignEditorTabEl
242
242
  uui-box.opaque {
243
243
  background-color: transparent;
244
244
  border-color: transparent;
245
+ --uui-box-default-padding: 0;
245
246
  }
246
247
 
247
248
  .container-list {
@@ -67,8 +67,7 @@ let UmbCollectionPaginationElement = class UmbCollectionPaginationElement extend
67
67
  }
68
68
 
69
69
  uui-pagination {
70
- display: block;
71
- margin-top: var(--uui-size-layout-1);
70
+ margin-top: var(--uui-size-space-3);
72
71
  }
73
72
  `,
74
73
  ]; }
@@ -95,7 +95,6 @@ let UmbInputMultipleTextStringItemElement = class UmbInputMultipleTextStringItem
95
95
  <uui-button
96
96
  compact
97
97
  label="${this.localize.term('general_remove')} ${this.value}"
98
- look="outline"
99
98
  ?disabled=${this.disabled}
100
99
  @click=${this.#onDelete}>
101
100
  <uui-icon name="icon-trash"></uui-icon>
@@ -114,6 +113,7 @@ let UmbInputMultipleTextStringItemElement = class UmbInputMultipleTextStringItem
114
113
 
115
114
  #validation-message {
116
115
  flex: 1;
116
+ margin-bottom: calc(var(--uui-size-1) * -1);
117
117
  }
118
118
 
119
119
  #input {
@@ -122,11 +122,28 @@ let UmbInputMultipleTextStringItemElement = class UmbInputMultipleTextStringItem
122
122
 
123
123
  .handle {
124
124
  cursor: grab;
125
+ opacity: 0.6;
126
+ transition: opacity 120ms;
125
127
  }
126
128
 
127
129
  .handle:active {
128
130
  cursor: grabbing;
129
131
  }
132
+
133
+ uui-button {
134
+ opacity: 0;
135
+ transition: opacity 120ms;
136
+ }
137
+
138
+ :host(:hover),
139
+ :host(:focus-within) {
140
+ uui-button {
141
+ opacity: 1;
142
+ }
143
+ .handle {
144
+ opacity: 1;
145
+ }
146
+ }
130
147
  `,
131
148
  ]; }
132
149
  };