@umbraco-cms/backoffice 14.0.0--preview004-b3446294 → 14.0.0--preview003
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/dist-cms/apps/app/app.element.js +3 -0
- package/dist-cms/assets/lang/da-dk.js +0 -3
- package/dist-cms/assets/lang/da-dk.ts +0 -3
- package/dist-cms/assets/lang/en-us.js +18 -21
- package/dist-cms/assets/lang/en-us.ts +18 -21
- package/dist-cms/custom-elements.json +19 -288
- package/dist-cms/external/tinymce/index.js +36 -36
- package/dist-cms/mocks/browser-handlers.js +1 -1
- package/dist-cms/mocks/data/entity.data.d.ts +1 -1
- package/dist-cms/mocks/data/entity.data.js +9 -1
- package/dist-cms/mocks/data/media.data.d.ts +1 -2
- package/dist-cms/mocks/data/media.data.js +0 -11
- package/dist-cms/mocks/data/user-groups.data.d.ts +9 -0
- package/dist-cms/mocks/data/user-groups.data.js +21 -0
- package/dist-cms/mocks/data/users.data.d.ts +16 -0
- package/dist-cms/mocks/data/{user.data.js → users.data.js} +41 -27
- package/dist-cms/mocks/handlers/dictionary.handlers.js +2 -2
- package/dist-cms/mocks/handlers/media.handlers.js +0 -8
- package/dist-cms/mocks/handlers/partial-views.handlers.js +3 -3
- package/dist-cms/mocks/handlers/user-group.handlers.js +17 -0
- package/dist-cms/mocks/handlers/user.handlers.js +1 -15
- package/dist-cms/packages/core/components/input-list-base/input-list-base.js +1 -1
- package/dist-cms/packages/core/components/input-section/input-section.element.d.ts +2 -2
- package/dist-cms/packages/core/components/input-section/input-section.element.js +5 -5
- package/dist-cms/packages/core/extension-registry/conditions/types.d.ts +2 -3
- package/dist-cms/packages/core/extension-registry/models/index.d.ts +1 -5
- package/dist-cms/packages/core/extension-registry/models/index.js +0 -2
- package/dist-cms/packages/core/localization/index.d.ts +0 -3
- package/dist-cms/packages/core/localization/index.js +0 -3
- package/dist-cms/packages/core/localization/localize.element.js +1 -1
- package/dist-cms/packages/core/modal/common/manifests.js +0 -6
- package/dist-cms/packages/core/modal/common/tree-picker/tree-picker-modal.element.js +3 -5
- package/dist-cms/packages/core/modal/token/index.d.ts +0 -1
- package/dist-cms/packages/core/modal/token/index.js +0 -1
- package/dist-cms/packages/core/picker-input/picker-input.context.js +3 -1
- package/dist-cms/packages/core/tree/tree.context.js +2 -3
- package/dist-cms/packages/documents/documents/components/index.d.ts +0 -1
- package/dist-cms/packages/documents/documents/components/index.js +0 -1
- package/dist-cms/packages/documents/documents/components/input-document/input-document.element.d.ts +12 -7
- package/dist-cms/packages/documents/documents/components/input-document/input-document.element.js +64 -51
- package/dist-cms/packages/documents/documents/entity-actions/create/manifests.js +0 -9
- package/dist-cms/packages/documents/documents/entity-actions/manifests.js +1 -1
- package/dist-cms/packages/documents/documents/entity-actions/permissions.action.d.ts +1 -2
- package/dist-cms/packages/documents/documents/entity-actions/permissions.action.js +2 -22
- package/dist-cms/packages/documents/documents/index.d.ts +0 -2
- package/dist-cms/packages/documents/documents/index.js +0 -2
- package/dist-cms/packages/documents/documents/manifests.d.ts +0 -4
- package/dist-cms/packages/documents/documents/manifests.js +0 -2
- package/dist-cms/packages/documents/documents/recycle-bin/entity-action/manifests.d.ts +0 -4
- package/dist-cms/packages/documents/documents/recycle-bin/entity-action/manifests.js +0 -6
- package/dist-cms/packages/documents/documents/recycle-bin/manifests.d.ts +0 -4
- package/dist-cms/packages/documents/documents/repository/document.repository.js +4 -4
- package/dist-cms/packages/documents/documents/repository/manifests.d.ts +2 -3
- package/dist-cms/packages/documents/documents/repository/manifests.js +1 -9
- package/dist-cms/packages/documents/documents/workspace/views/info/document-info-workspace-view.element.js +28 -29
- package/dist-cms/packages/documents/manifests.d.ts +0 -4
- package/dist-cms/packages/log-viewer/workspace/views/overview/components/log-viewer-saved-searches-overview.element.js +1 -1
- package/dist-cms/packages/media/manifests.d.ts +1 -2
- package/dist-cms/packages/media/manifests.js +0 -1
- package/dist-cms/packages/media/media/components/index.d.ts +0 -1
- package/dist-cms/packages/media/media/components/index.js +0 -1
- package/dist-cms/packages/media/media/components/input-media/input-media.element.d.ts +15 -7
- package/dist-cms/packages/media/media/components/input-media/input-media.element.js +72 -50
- package/dist-cms/packages/media/media/index.d.ts +0 -2
- package/dist-cms/packages/media/media/index.js +1 -1
- package/dist-cms/packages/media/media/manifests.d.ts +1 -1
- package/dist-cms/packages/media/media/manifests.js +0 -2
- package/dist-cms/packages/media/media/repository/manifests.d.ts +2 -3
- package/dist-cms/packages/media/media/repository/manifests.js +1 -9
- package/dist-cms/packages/media/media/repository/media.repository.d.ts +0 -6
- package/dist-cms/packages/media/media/repository/media.repository.js +0 -22
- package/dist-cms/packages/users/current-user/index.d.ts +0 -1
- package/dist-cms/packages/users/current-user/index.js +0 -1
- package/dist-cms/packages/users/current-user/manifests.js +1 -7
- package/dist-cms/packages/users/current-user/modals/current-user/current-user-modal.element.js +7 -7
- package/dist-cms/packages/users/index.d.ts +2 -4
- package/dist-cms/packages/users/index.js +2 -4
- package/dist-cms/packages/users/manifests.d.ts +0 -2
- package/dist-cms/packages/users/manifests.js +0 -3
- package/dist-cms/packages/users/user-groups/collection/user-group-collection-header.element.js +2 -2
- package/dist-cms/packages/users/user-groups/collection/user-group-collection-view.element.js +6 -6
- package/dist-cms/packages/users/user-groups/components/index.d.ts +0 -1
- package/dist-cms/packages/users/user-groups/components/index.js +0 -1
- package/dist-cms/packages/users/user-groups/index.d.ts +0 -2
- package/dist-cms/packages/users/user-groups/index.js +0 -2
- package/dist-cms/packages/users/user-groups/manifests.d.ts +1 -1
- package/dist-cms/packages/users/user-groups/manifests.js +0 -2
- package/dist-cms/packages/users/user-groups/workspace/user-group-workspace-editor.element.d.ts +0 -2
- package/dist-cms/packages/users/user-groups/workspace/user-group-workspace-editor.element.js +56 -57
- package/dist-cms/packages/users/user-groups/workspace/user-group-workspace.context.d.ts +0 -12
- package/dist-cms/packages/users/user-groups/workspace/user-group-workspace.context.js +0 -20
- package/dist-cms/packages/users/user-groups/workspace/user-group-workspace.element.js +1 -1
- package/dist-cms/packages/users/users/collection/user-collection-header.element.js +11 -18
- package/dist-cms/packages/users/users/collection/views/grid/user-collection-grid-view.element.js +6 -6
- package/dist-cms/packages/users/users/collection/views/table/column-layouts/status/user-table-status-column-layout.element.js +3 -3
- package/dist-cms/packages/users/users/components/index.d.ts +0 -3
- package/dist-cms/packages/users/users/components/index.js +0 -3
- package/dist-cms/packages/users/users/components/user-input/user-input.element.js +2 -2
- package/dist-cms/packages/users/users/index.d.ts +0 -2
- package/dist-cms/packages/users/users/index.js +0 -2
- package/dist-cms/packages/users/users/modals/user-picker/user-picker-modal.element.d.ts +1 -3
- package/dist-cms/packages/users/users/modals/user-picker/user-picker-modal.element.js +25 -20
- package/dist-cms/packages/users/users/repository/user.repository.js +1 -1
- package/dist-cms/packages/users/users/workspace/user-workspace-editor.element.js +56 -73
- package/dist-cms/packages/users/utils.d.ts +2 -5
- package/dist-cms/packages/users/utils.js +14 -14
- package/dist-cms/shared/auth/auth-flow.d.ts +4 -0
- package/dist-cms/shared/auth/auth-flow.js +25 -6
- package/dist-cms/shared/repository/repository-items.manager.js +0 -5
- package/dist-cms/shared/umb-events/index.d.ts +0 -1
- package/dist-cms/shared/umb-events/index.js +0 -1
- package/dist-cms/tinymce/CHANGELOG.md +0 -48
- package/dist-cms/tinymce/composer.json +1 -1
- package/dist-cms/tinymce/models/dom/model.js +1 -1
- package/dist-cms/tinymce/models/dom/model.min.js +1 -1
- package/dist-cms/tinymce/package.json +1 -1
- package/dist-cms/tinymce/plugins/accordion/plugin.js +1 -1
- package/dist-cms/tinymce/plugins/accordion/plugin.min.js +1 -1
- package/dist-cms/tinymce/plugins/advlist/plugin.js +1 -1
- package/dist-cms/tinymce/plugins/advlist/plugin.min.js +1 -1
- package/dist-cms/tinymce/plugins/anchor/plugin.js +1 -1
- package/dist-cms/tinymce/plugins/anchor/plugin.min.js +1 -1
- package/dist-cms/tinymce/plugins/autolink/plugin.js +1 -1
- package/dist-cms/tinymce/plugins/autolink/plugin.min.js +1 -1
- package/dist-cms/tinymce/plugins/autoresize/plugin.js +1 -1
- package/dist-cms/tinymce/plugins/autoresize/plugin.min.js +1 -1
- package/dist-cms/tinymce/plugins/autosave/plugin.js +1 -1
- package/dist-cms/tinymce/plugins/autosave/plugin.min.js +1 -1
- package/dist-cms/tinymce/plugins/charmap/plugin.js +1 -1
- package/dist-cms/tinymce/plugins/charmap/plugin.min.js +1 -1
- package/dist-cms/tinymce/plugins/code/plugin.js +1 -1
- package/dist-cms/tinymce/plugins/code/plugin.min.js +1 -1
- package/dist-cms/tinymce/plugins/codesample/plugin.js +1 -1
- package/dist-cms/tinymce/plugins/codesample/plugin.min.js +1 -1
- package/dist-cms/tinymce/plugins/directionality/plugin.js +1 -1
- package/dist-cms/tinymce/plugins/directionality/plugin.min.js +1 -1
- package/dist-cms/tinymce/plugins/emoticons/plugin.js +1 -1
- package/dist-cms/tinymce/plugins/emoticons/plugin.min.js +1 -1
- package/dist-cms/tinymce/plugins/fullscreen/plugin.js +1 -1
- package/dist-cms/tinymce/plugins/fullscreen/plugin.min.js +1 -1
- package/dist-cms/tinymce/plugins/help/plugin.js +5 -5
- package/dist-cms/tinymce/plugins/help/plugin.min.js +2 -2
- package/dist-cms/tinymce/plugins/image/plugin.js +1 -1
- package/dist-cms/tinymce/plugins/image/plugin.min.js +1 -1
- package/dist-cms/tinymce/plugins/importcss/plugin.js +1 -1
- package/dist-cms/tinymce/plugins/importcss/plugin.min.js +1 -1
- package/dist-cms/tinymce/plugins/insertdatetime/plugin.js +1 -1
- package/dist-cms/tinymce/plugins/insertdatetime/plugin.min.js +1 -1
- package/dist-cms/tinymce/plugins/link/plugin.js +1 -1
- package/dist-cms/tinymce/plugins/link/plugin.min.js +1 -1
- package/dist-cms/tinymce/plugins/lists/plugin.js +8 -63
- package/dist-cms/tinymce/plugins/lists/plugin.min.js +2 -2
- package/dist-cms/tinymce/plugins/media/plugin.js +23 -3
- package/dist-cms/tinymce/plugins/media/plugin.min.js +2 -2
- package/dist-cms/tinymce/plugins/nonbreaking/plugin.js +1 -1
- package/dist-cms/tinymce/plugins/nonbreaking/plugin.min.js +1 -1
- package/dist-cms/tinymce/plugins/pagebreak/plugin.js +1 -1
- package/dist-cms/tinymce/plugins/pagebreak/plugin.min.js +1 -1
- package/dist-cms/tinymce/plugins/preview/plugin.js +1 -1
- package/dist-cms/tinymce/plugins/preview/plugin.min.js +1 -1
- package/dist-cms/tinymce/plugins/quickbars/plugin.js +4 -13
- package/dist-cms/tinymce/plugins/quickbars/plugin.min.js +2 -2
- package/dist-cms/tinymce/plugins/save/plugin.js +1 -1
- package/dist-cms/tinymce/plugins/save/plugin.min.js +1 -1
- package/dist-cms/tinymce/plugins/searchreplace/plugin.js +1 -1
- package/dist-cms/tinymce/plugins/searchreplace/plugin.min.js +1 -1
- package/dist-cms/tinymce/plugins/table/plugin.js +2 -2
- package/dist-cms/tinymce/plugins/table/plugin.min.js +2 -2
- package/dist-cms/tinymce/plugins/template/plugin.js +1 -1
- package/dist-cms/tinymce/plugins/template/plugin.min.js +1 -1
- package/dist-cms/tinymce/plugins/visualblocks/plugin.js +1 -1
- package/dist-cms/tinymce/plugins/visualblocks/plugin.min.js +1 -1
- package/dist-cms/tinymce/plugins/visualchars/plugin.js +1 -1
- package/dist-cms/tinymce/plugins/visualchars/plugin.min.js +1 -1
- package/dist-cms/tinymce/plugins/wordcount/plugin.js +1 -1
- package/dist-cms/tinymce/plugins/wordcount/plugin.min.js +1 -1
- package/dist-cms/tinymce/skins/ui/oxide/content.css +1 -1
- package/dist-cms/tinymce/skins/ui/oxide/content.inline.css +1 -1
- package/dist-cms/tinymce/skins/ui/oxide/content.inline.min.css +1 -1
- package/dist-cms/tinymce/skins/ui/oxide/content.min.css +1 -1
- package/dist-cms/tinymce/skins/ui/oxide/skin.css +11 -51
- package/dist-cms/tinymce/skins/ui/oxide/skin.min.css +1 -1
- package/dist-cms/tinymce/skins/ui/oxide-dark/content.css +1 -1
- package/dist-cms/tinymce/skins/ui/oxide-dark/content.inline.css +1 -1
- package/dist-cms/tinymce/skins/ui/oxide-dark/content.inline.min.css +1 -1
- package/dist-cms/tinymce/skins/ui/oxide-dark/content.min.css +1 -1
- package/dist-cms/tinymce/skins/ui/oxide-dark/skin.css +14 -54
- package/dist-cms/tinymce/skins/ui/oxide-dark/skin.min.css +1 -1
- package/dist-cms/tinymce/skins/ui/tinymce-5/content.css +1 -1
- package/dist-cms/tinymce/skins/ui/tinymce-5/content.inline.css +1 -1
- package/dist-cms/tinymce/skins/ui/tinymce-5/content.inline.min.css +1 -1
- package/dist-cms/tinymce/skins/ui/tinymce-5/content.min.css +1 -1
- package/dist-cms/tinymce/skins/ui/tinymce-5/skin.css +11 -51
- package/dist-cms/tinymce/skins/ui/tinymce-5/skin.min.css +1 -1
- package/dist-cms/tinymce/skins/ui/tinymce-5-dark/content.css +1 -1
- package/dist-cms/tinymce/skins/ui/tinymce-5-dark/content.inline.css +1 -1
- package/dist-cms/tinymce/skins/ui/tinymce-5-dark/content.inline.min.css +1 -1
- package/dist-cms/tinymce/skins/ui/tinymce-5-dark/content.min.css +1 -1
- package/dist-cms/tinymce/skins/ui/tinymce-5-dark/skin.css +11 -51
- package/dist-cms/tinymce/skins/ui/tinymce-5-dark/skin.min.css +1 -1
- package/dist-cms/tinymce/themes/silver/theme.js +55 -158
- package/dist-cms/tinymce/themes/silver/theme.min.js +2 -2
- package/dist-cms/tinymce/tinymce.d.ts +6 -4
- package/dist-cms/tinymce/tinymce.js +644 -864
- package/dist-cms/tinymce/tinymce.min.js +2 -2
- package/dist-cms/tsconfig.build.tsbuildinfo +1 -1
- package/dist-cms/umbraco-package-schema.json +0 -154
- package/dist-cms/vscode-html-custom-data.json +18 -167
- package/package.json +2 -2
- package/dist-cms/mocks/data/user-group.data.d.ts +0 -17
- package/dist-cms/mocks/data/user-group.data.js +0 -61
- package/dist-cms/mocks/data/user.data.d.ts +0 -15
- package/dist-cms/mocks/handlers/user-group/collection.handlers.d.ts +0 -1
- package/dist-cms/mocks/handlers/user-group/collection.handlers.js +0 -10
- package/dist-cms/mocks/handlers/user-group/detail.handlers.d.ts +0 -1
- package/dist-cms/mocks/handlers/user-group/detail.handlers.js +0 -37
- package/dist-cms/mocks/handlers/user-group/index.js +0 -4
- package/dist-cms/mocks/handlers/user-group/item.handlers.d.ts +0 -1
- package/dist-cms/mocks/handlers/user-group/item.handlers.js +0 -13
- package/dist-cms/mocks/handlers/user-group/slug.d.ts +0 -1
- package/dist-cms/mocks/handlers/user-group/slug.js +0 -1
- package/dist-cms/packages/core/extension-registry/models/user-granular-permission.model.d.ts +0 -8
- package/dist-cms/packages/core/extension-registry/models/user-granular-permission.model.js +0 -1
- package/dist-cms/packages/core/extension-registry/models/user-permission.model.d.ts +0 -11
- package/dist-cms/packages/core/extension-registry/models/user-permission.model.js +0 -1
- package/dist-cms/packages/core/localization/localize-date.element.d.ts +0 -28
- package/dist-cms/packages/core/localization/localize-date.element.js +0 -42
- package/dist-cms/packages/core/localization/localize-number.element.d.ts +0 -28
- package/dist-cms/packages/core/localization/localize-number.element.js +0 -42
- package/dist-cms/packages/core/localization/localize-relative-time.element.d.ts +0 -34
- package/dist-cms/packages/core/localization/localize-relative-time.element.js +0 -54
- package/dist-cms/packages/core/modal/common/entity-user-permission-settings/entity-user-permission-settings-modal.element.d.ts +0 -19
- package/dist-cms/packages/core/modal/common/entity-user-permission-settings/entity-user-permission-settings-modal.element.js +0 -97
- package/dist-cms/packages/core/modal/token/entity-user-permission-settings-modal.token.d.ts +0 -7
- package/dist-cms/packages/core/modal/token/entity-user-permission-settings-modal.token.js +0 -4
- package/dist-cms/packages/documents/documents/components/input-document/input-document.context.d.ts +0 -6
- package/dist-cms/packages/documents/documents/components/input-document/input-document.context.js +0 -7
- package/dist-cms/packages/documents/documents/components/input-document-granular-permission/input-document-granular-permission.element.d.ts +0 -23
- package/dist-cms/packages/documents/documents/components/input-document-granular-permission/input-document-granular-permission.element.js +0 -102
- package/dist-cms/packages/documents/documents/user-permissions/index.d.ts +0 -1
- package/dist-cms/packages/documents/documents/user-permissions/index.js +0 -1
- package/dist-cms/packages/documents/documents/user-permissions/manifests.d.ts +0 -19
- package/dist-cms/packages/documents/documents/user-permissions/manifests.js +0 -196
- package/dist-cms/packages/media/media/components/input-media/input-media.context.d.ts +0 -6
- package/dist-cms/packages/media/media/components/input-media/input-media.context.js +0 -7
- package/dist-cms/packages/media/media/repository/media-item.store.d.ts +0 -20
- package/dist-cms/packages/media/media/repository/media-item.store.js +0 -23
- package/dist-cms/packages/media/media/repository/sources/media-item.server.data.d.ts +0 -24
- package/dist-cms/packages/media/media/repository/sources/media-item.server.data.js +0 -31
- package/dist-cms/packages/media/media/user-permissions/index.d.ts +0 -1
- package/dist-cms/packages/media/media/user-permissions/index.js +0 -1
- package/dist-cms/packages/media/media/user-permissions/manifests.d.ts +0 -4
- package/dist-cms/packages/media/media/user-permissions/manifests.js +0 -27
- package/dist-cms/packages/users/current-user/conditions/index.d.ts +0 -1
- package/dist-cms/packages/users/current-user/conditions/index.js +0 -1
- package/dist-cms/packages/users/current-user/conditions/user-permission.condition.d.ts +0 -18
- package/dist-cms/packages/users/current-user/conditions/user-permission.condition.js +0 -23
- package/dist-cms/packages/users/user-groups/entity-actions/manifests.d.ts +0 -2
- package/dist-cms/packages/users/user-groups/entity-actions/manifests.js +0 -19
- package/dist-cms/packages/users/user-groups/workspace/components/user-group-default-permission-list.element.d.ts +0 -16
- package/dist-cms/packages/users/user-groups/workspace/components/user-group-default-permission-list.element.js +0 -69
- package/dist-cms/packages/users/user-groups/workspace/components/user-group-granular-permission-list.element.d.ts +0 -14
- package/dist-cms/packages/users/user-groups/workspace/components/user-group-granular-permission-list.element.js +0 -31
- package/dist-cms/packages/users/users/components/user-permission-setting/user-permission-setting.element.d.ts +0 -15
- package/dist-cms/packages/users/users/components/user-permission-setting/user-permission-setting.element.js +0 -66
- package/dist-cms/packages/users/users/repository/index.d.ts +0 -1
- package/dist-cms/packages/users/users/repository/index.js +0 -1
- package/dist-cms/shared/umb-events/selected.event.d.ts +0 -3
- package/dist-cms/shared/umb-events/selected.event.js +0 -6
- /package/dist-cms/mocks/handlers/{user-group/index.d.ts → user-group.handlers.d.ts} +0 -0
|
@@ -4,8 +4,7 @@ var __decorate = (this && this.__decorate) || function (decorators, target, key,
|
|
|
4
4
|
else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
|
|
5
5
|
return c > 3 && r && Object.defineProperty(target, key, r), r;
|
|
6
6
|
};
|
|
7
|
-
import {
|
|
8
|
-
import { UmbUserRepository } from '../index.js';
|
|
7
|
+
import { getLookAndColorFromUserStatus } from '../../utils.js';
|
|
9
8
|
import { UUIInputEvent } from '../../../../external/uui/index.js';
|
|
10
9
|
import { css, html, nothing, customElement, state, ifDefined, repeat, } from '../../../../external/lit/index.js';
|
|
11
10
|
import { firstValueFrom } from '../../../../external/rxjs/index.js';
|
|
@@ -13,7 +12,9 @@ import { UMB_CHANGE_PASSWORD_MODAL } from '../../../core/modal/index.js';
|
|
|
13
12
|
import { UmbLitElement } from '../../../../shared/lit-element/index.js';
|
|
14
13
|
import { UMB_WORKSPACE_CONTEXT } from '../../../core/workspace/index.js';
|
|
15
14
|
import { UserStateModel } from '../../../../external/backend-api/index.js';
|
|
15
|
+
import { createExtensionClass } from '../../../../libs/extension-api/index.js';
|
|
16
16
|
import { umbExtensionsRegistry } from '../../../core/extension-registry/index.js';
|
|
17
|
+
import { UmbObserverController } from '../../../../libs/observable-api/index.js';
|
|
17
18
|
import { UMB_AUTH } from '../../../../shared/auth/index.js';
|
|
18
19
|
import { UmbTextStyles } from '../../../../shared/style/index.js';
|
|
19
20
|
export let UmbUserWorkspaceEditorElement = class UmbUserWorkspaceEditorElement extends UmbLitElement {
|
|
@@ -24,7 +25,6 @@ export let UmbUserWorkspaceEditorElement = class UmbUserWorkspaceEditorElement e
|
|
|
24
25
|
constructor() {
|
|
25
26
|
super();
|
|
26
27
|
this.languages = [];
|
|
27
|
-
this.#userRepository = new UmbUserRepository(this);
|
|
28
28
|
this.consumeContext(UMB_AUTH, (instance) => {
|
|
29
29
|
this.#auth = instance;
|
|
30
30
|
this.#observeCurrentUser();
|
|
@@ -33,6 +33,18 @@ export let UmbUserWorkspaceEditorElement = class UmbUserWorkspaceEditorElement e
|
|
|
33
33
|
this.#workspaceContext = workspaceContext;
|
|
34
34
|
this.#observeUser();
|
|
35
35
|
});
|
|
36
|
+
// TODO: this code is reused in multiple places, so it should be extracted to a function
|
|
37
|
+
new UmbObserverController(this, umbExtensionsRegistry.getByTypeAndAlias('repository', 'Umb.Repository.User'), async (repositoryManifest) => {
|
|
38
|
+
if (!repositoryManifest)
|
|
39
|
+
return;
|
|
40
|
+
try {
|
|
41
|
+
const result = await createExtensionClass(repositoryManifest, [this]);
|
|
42
|
+
this.#userRepository = result;
|
|
43
|
+
}
|
|
44
|
+
catch (error) {
|
|
45
|
+
throw new Error('Could not create repository with alias: Umb.Repository.User');
|
|
46
|
+
}
|
|
47
|
+
});
|
|
36
48
|
}
|
|
37
49
|
#observeUser() {
|
|
38
50
|
if (!this.#workspaceContext)
|
|
@@ -140,63 +152,52 @@ export let UmbUserWorkspaceEditorElement = class UmbUserWorkspaceEditorElement e
|
|
|
140
152
|
return nothing;
|
|
141
153
|
return html ` <uui-box>
|
|
142
154
|
<div slot="headline"><umb-localize key="user_profile">Profile</umb-localize></div>
|
|
143
|
-
<umb-workspace-property-layout label="
|
|
144
|
-
<uui-input
|
|
145
|
-
slot="editor"
|
|
146
|
-
name="email"
|
|
147
|
-
label="${this.localize.term('general_email')}"
|
|
148
|
-
readonly
|
|
149
|
-
value=${ifDefined(this._user.email)}></uui-input>
|
|
155
|
+
<umb-workspace-property-layout label="Email">
|
|
156
|
+
<uui-input slot="editor" name="email" label="email" readonly value=${ifDefined(this._user.email)}></uui-input>
|
|
150
157
|
</umb-workspace-property-layout>
|
|
151
|
-
<umb-workspace-property-layout
|
|
152
|
-
label="${this.localize.term('user_language')}"
|
|
153
|
-
description=${this.localize.term('user_languageHelp')}>
|
|
158
|
+
<umb-workspace-property-layout label="Language" description="The language of the UI in the Backoffice">
|
|
154
159
|
<uui-select
|
|
155
160
|
slot="editor"
|
|
156
161
|
name="language"
|
|
157
|
-
label="
|
|
162
|
+
label="language"
|
|
158
163
|
.options=${this.languages}
|
|
159
164
|
@change="${this.#onLanguageChange}">
|
|
160
165
|
</uui-select>
|
|
161
166
|
</umb-workspace-property-layout>
|
|
162
167
|
</uui-box>
|
|
163
168
|
<uui-box>
|
|
164
|
-
<div slot="headline"
|
|
169
|
+
<div slot="headline">Assign access</div>
|
|
165
170
|
<div id="assign-access">
|
|
166
|
-
<umb-workspace-property-layout
|
|
167
|
-
label="${this.localize.term('general_groups')}"
|
|
168
|
-
description="${this.localize.term('user_groupsHelp')}">
|
|
171
|
+
<umb-workspace-property-layout label="Groups" description="Add groups to assign access and permissions">
|
|
169
172
|
<umb-user-group-input
|
|
170
173
|
slot="editor"
|
|
171
174
|
.selectedIds=${this._user.userGroupIds ?? []}
|
|
172
175
|
@change=${(e) => this.#onUserGroupsChange(e.target.selectedIds)}></umb-user-group-input>
|
|
173
176
|
</umb-workspace-property-layout>
|
|
174
177
|
<umb-workspace-property-layout
|
|
175
|
-
label
|
|
176
|
-
description
|
|
178
|
+
label="Content start node"
|
|
179
|
+
description="Limit the content tree to specific start nodes">
|
|
177
180
|
<umb-property-editor-ui-document-picker
|
|
178
181
|
.value=${this._user.contentStartNodeIds ?? []}
|
|
179
182
|
@property-value-change=${(e) => this.#workspaceContext?.updateProperty('contentStartNodeIds', e.target.value)}
|
|
180
183
|
slot="editor"></umb-property-editor-ui-document-picker>
|
|
181
184
|
</umb-workspace-property-layout>
|
|
182
185
|
<umb-workspace-property-layout
|
|
183
|
-
label
|
|
184
|
-
description
|
|
186
|
+
label="Media start nodes"
|
|
187
|
+
description="Limit the media library to specific start nodes">
|
|
185
188
|
<b slot="editor">NEED MEDIA PICKER</b>
|
|
186
189
|
</umb-workspace-property-layout>
|
|
187
190
|
</div>
|
|
188
191
|
</uui-box>
|
|
189
|
-
<uui-box headline
|
|
192
|
+
<uui-box headline="Access">
|
|
190
193
|
<div slot="header" class="faded-text">
|
|
191
|
-
|
|
192
|
-
>Based on the assigned groups and start nodes, the user has access to the following nodes</umb-localize
|
|
193
|
-
>
|
|
194
|
+
Based on the assigned groups and start nodes, the user has access to the following nodes
|
|
194
195
|
</div>
|
|
195
196
|
|
|
196
|
-
<b
|
|
197
|
+
<b>Content</b>
|
|
197
198
|
${this.#renderContentStartNodes()}
|
|
198
199
|
<hr />
|
|
199
|
-
<b
|
|
200
|
+
<b>Media</b>
|
|
200
201
|
<uui-ref-node name="Media Root">
|
|
201
202
|
<uui-icon slot="icon" name="folder"></uui-icon>
|
|
202
203
|
</uui-ref-node>
|
|
@@ -205,42 +206,41 @@ export let UmbUserWorkspaceEditorElement = class UmbUserWorkspaceEditorElement e
|
|
|
205
206
|
#renderRightColumn() {
|
|
206
207
|
if (!this._user || !this.#workspaceContext)
|
|
207
208
|
return nothing;
|
|
208
|
-
const
|
|
209
|
+
const statusLook = getLookAndColorFromUserStatus(this._user.state);
|
|
209
210
|
return html ` <uui-box>
|
|
210
211
|
<div id="user-info">
|
|
211
212
|
<uui-avatar .name=${this._user?.name || ''}></uui-avatar>
|
|
212
|
-
<uui-button label
|
|
213
|
+
<uui-button label="Change photo"></uui-button>
|
|
213
214
|
<hr />
|
|
214
215
|
${this.#renderActionButtons()}
|
|
215
216
|
|
|
216
217
|
<div>
|
|
217
|
-
<b
|
|
218
|
-
<uui-tag look="${ifDefined(
|
|
219
|
-
${this.
|
|
218
|
+
<b>Status:</b>
|
|
219
|
+
<uui-tag look="${ifDefined(statusLook?.look)}" color="${ifDefined(statusLook?.color)}">
|
|
220
|
+
${this._user.state}
|
|
220
221
|
</uui-tag>
|
|
221
222
|
</div>
|
|
222
223
|
|
|
223
224
|
${this._user?.state === UserStateModel.INVITED
|
|
224
225
|
? html `
|
|
225
|
-
<uui-textarea placeholder
|
|
226
|
-
<uui-button look="primary" label
|
|
226
|
+
<uui-textarea placeholder="Enter a message..."> </uui-textarea>
|
|
227
|
+
<uui-button look="primary" label="Resend invitation"></uui-button>
|
|
227
228
|
`
|
|
228
229
|
: nothing}
|
|
229
|
-
${this.#renderInfoItem('
|
|
230
|
-
|
|
231
|
-
${this.#renderInfoItem('
|
|
232
|
-
${this.#renderInfoItem('
|
|
233
|
-
${this.#renderInfoItem('
|
|
234
|
-
${this.#renderInfoItem('
|
|
235
|
-
${this.#renderInfoItem('
|
|
236
|
-
${this.#renderInfoItem('general_id', this._user.id)}
|
|
230
|
+
${this.#renderInfoItem('Last login', this._user.lastLoginDate || `${this._user.name} has not logged in yet`)}
|
|
231
|
+
${this.#renderInfoItem('Failed login attempts', this._user.failedLoginAttempts)}
|
|
232
|
+
${this.#renderInfoItem('Last lockout date', this._user.lastLockoutDate || `${this._user.name} has not been locked out`)}
|
|
233
|
+
${this.#renderInfoItem('Password last changed', this._user.lastLoginDate || `${this._user.name} has not changed password`)}
|
|
234
|
+
${this.#renderInfoItem('User created', this._user.createDate)}
|
|
235
|
+
${this.#renderInfoItem('User last updated', this._user.updateDate)}
|
|
236
|
+
${this.#renderInfoItem('Key', this._user.id)}
|
|
237
237
|
</div>
|
|
238
238
|
</uui-box>`;
|
|
239
239
|
}
|
|
240
|
-
#renderInfoItem(
|
|
240
|
+
#renderInfoItem(label, value) {
|
|
241
241
|
return html `
|
|
242
242
|
<div>
|
|
243
|
-
<b
|
|
243
|
+
<b>${label}</b>
|
|
244
244
|
<span>${value}</span>
|
|
245
245
|
</div>
|
|
246
246
|
`;
|
|
@@ -251,40 +251,23 @@ export let UmbUserWorkspaceEditorElement = class UmbUserWorkspaceEditorElement e
|
|
|
251
251
|
//TODO: Find out if the current user is an admin. If not, show no buttons.
|
|
252
252
|
// if (this._currentUserStore?.isAdmin === false) return nothing;
|
|
253
253
|
const buttons = [];
|
|
254
|
-
if (this._user.
|
|
255
|
-
|
|
256
|
-
|
|
257
|
-
|
|
258
|
-
|
|
259
|
-
|
|
260
|
-
|
|
261
|
-
|
|
262
|
-
|
|
263
|
-
}
|
|
264
|
-
if (this._user.state === UserStateModel.ACTIVE || this._user.state === UserStateModel.INACTIVE) {
|
|
265
|
-
buttons.push(html `
|
|
266
|
-
<uui-button
|
|
267
|
-
@click=${this.#onUserStatusChange}
|
|
268
|
-
look="secondary"
|
|
269
|
-
color="warning"
|
|
270
|
-
label=${this.localize.term('actions_disable')}></uui-button>
|
|
271
|
-
`);
|
|
272
|
-
}
|
|
254
|
+
if (this._user.state === UserStateModel.DISABLED) {
|
|
255
|
+
buttons.push(html `
|
|
256
|
+
<uui-button @click=${this.#onUserStatusChange} look="secondary" color="positive" label="Enable"></uui-button>
|
|
257
|
+
`);
|
|
258
|
+
}
|
|
259
|
+
if (this._user.state === UserStateModel.ACTIVE || this._user.state === UserStateModel.INACTIVE) {
|
|
260
|
+
buttons.push(html `
|
|
261
|
+
<uui-button @click=${this.#onUserStatusChange} look="secondary" color="warning" label="Disable"></uui-button>
|
|
262
|
+
`);
|
|
273
263
|
}
|
|
274
264
|
if (this._currentUser?.id !== this._user?.id) {
|
|
275
265
|
const button = html `
|
|
276
|
-
<uui-button
|
|
277
|
-
@click=${this.#onUserDelete}
|
|
278
|
-
look="secondary"
|
|
279
|
-
color="danger"
|
|
280
|
-
label=${this.localize.term('user_deleteUser')}></uui-button>
|
|
266
|
+
<uui-button @click=${this.#onUserDelete} look="secondary" color="danger" label="Delete User"></uui-button>
|
|
281
267
|
`;
|
|
282
268
|
buttons.push(button);
|
|
283
269
|
}
|
|
284
|
-
buttons.push(html `<uui-button
|
|
285
|
-
@click=${this.#onPasswordChange}
|
|
286
|
-
look="secondary"
|
|
287
|
-
label=${this.localize.term('general_changePassword')}></uui-button>`);
|
|
270
|
+
buttons.push(html `<uui-button @click=${this.#onPasswordChange} look="secondary" label="Change password"></uui-button>`);
|
|
288
271
|
return buttons;
|
|
289
272
|
}
|
|
290
273
|
#renderContentStartNodes() {
|
|
@@ -1,9 +1,6 @@
|
|
|
1
1
|
import { InterfaceColor, InterfaceLook } from '../../external/uui/index.js';
|
|
2
2
|
import { UserStateModel } from '../../external/backend-api/index.js';
|
|
3
|
-
|
|
3
|
+
export declare const getLookAndColorFromUserStatus: (status?: UserStateModel) => {
|
|
4
4
|
look: InterfaceLook;
|
|
5
5
|
color: InterfaceColor;
|
|
6
|
-
|
|
7
|
-
}
|
|
8
|
-
export declare const getDisplayStateFromUserStatus: (status?: UserStateModel) => DisplayStatus;
|
|
9
|
-
export {};
|
|
6
|
+
};
|
|
@@ -1,14 +1,14 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
}
|
|
1
|
+
import { UserStateModel } from '../../external/backend-api/index.js';
|
|
2
|
+
export const getLookAndColorFromUserStatus = (status) => {
|
|
3
|
+
switch (status) {
|
|
4
|
+
case UserStateModel.INACTIVE:
|
|
5
|
+
case UserStateModel.INVITED:
|
|
6
|
+
return { look: 'primary', color: 'warning' };
|
|
7
|
+
case UserStateModel.ACTIVE:
|
|
8
|
+
return { look: 'primary', color: 'positive' };
|
|
9
|
+
case UserStateModel.DISABLED:
|
|
10
|
+
return { look: 'primary', color: 'danger' };
|
|
11
|
+
default:
|
|
12
|
+
return { look: 'secondary', color: 'default' };
|
|
13
|
+
}
|
|
14
|
+
};
|
|
@@ -59,6 +59,10 @@ export declare class UmbAuthFlow {
|
|
|
59
59
|
* saved the state in local storage before redirecting the user to the login page.
|
|
60
60
|
*/
|
|
61
61
|
completeAuthorizationIfPossible(): Promise<void>;
|
|
62
|
+
/**
|
|
63
|
+
* This method will query the server for the service configuration usually found at /.well-known/openid-configuration.
|
|
64
|
+
*/
|
|
65
|
+
fetchServiceConfiguration(): Promise<void>;
|
|
62
66
|
/**
|
|
63
67
|
* This method will make an authorization request to the server.
|
|
64
68
|
*
|
|
@@ -69,6 +69,7 @@ export class UmbAuthFlow {
|
|
|
69
69
|
#storageBackend;
|
|
70
70
|
// state
|
|
71
71
|
#configuration;
|
|
72
|
+
#openIdConnectUrl;
|
|
72
73
|
#redirectUri;
|
|
73
74
|
#clientId;
|
|
74
75
|
#scope;
|
|
@@ -76,15 +77,10 @@ export class UmbAuthFlow {
|
|
|
76
77
|
#refreshToken;
|
|
77
78
|
#accessTokenResponse;
|
|
78
79
|
constructor(openIdConnectUrl, redirectUri, clientId = 'umbraco-back-office', scope = 'offline_access') {
|
|
80
|
+
this.#openIdConnectUrl = openIdConnectUrl;
|
|
79
81
|
this.#redirectUri = redirectUri;
|
|
80
82
|
this.#clientId = clientId;
|
|
81
83
|
this.#scope = scope;
|
|
82
|
-
this.#configuration = new AuthorizationServiceConfiguration({
|
|
83
|
-
authorization_endpoint: `${openIdConnectUrl}/umbraco/management/api/v1/security/back-office/authorize`,
|
|
84
|
-
token_endpoint: `${openIdConnectUrl}/umbraco/management/api/v1/security/back-office/token`,
|
|
85
|
-
revocation_endpoint: `${openIdConnectUrl}/umbraco/management/api/v1/security/back-office/revoke`,
|
|
86
|
-
end_session_endpoint: `${openIdConnectUrl}/umbraco/management/api/v1/security/back-office/signout`,
|
|
87
|
-
});
|
|
88
84
|
this.#notifier = new AuthorizationNotifier();
|
|
89
85
|
this.#tokenHandler = new BaseTokenRequestHandler(requestor);
|
|
90
86
|
this.#storageBackend = new LocalStorageBackend();
|
|
@@ -122,6 +118,10 @@ export class UmbAuthFlow {
|
|
|
122
118
|
* - If there is no new authorization to be made, do nothing
|
|
123
119
|
*/
|
|
124
120
|
async setInitialState() {
|
|
121
|
+
// Ensure there is a connection to the server
|
|
122
|
+
if (!this.#configuration) {
|
|
123
|
+
await this.fetchServiceConfiguration();
|
|
124
|
+
}
|
|
125
125
|
const tokenResponseJson = await this.#storageBackend.getItem(TOKEN_RESPONSE_NAME);
|
|
126
126
|
if (tokenResponseJson) {
|
|
127
127
|
const response = new TokenResponse(JSON.parse(tokenResponseJson));
|
|
@@ -142,12 +142,23 @@ export class UmbAuthFlow {
|
|
|
142
142
|
completeAuthorizationIfPossible() {
|
|
143
143
|
return this.#authorizationHandler.completeAuthorizationRequestIfPossible();
|
|
144
144
|
}
|
|
145
|
+
/**
|
|
146
|
+
* This method will query the server for the service configuration usually found at /.well-known/openid-configuration.
|
|
147
|
+
*/
|
|
148
|
+
async fetchServiceConfiguration() {
|
|
149
|
+
const response = await AuthorizationServiceConfiguration.fetchFromIssuer(this.#openIdConnectUrl, requestor);
|
|
150
|
+
this.#configuration = response;
|
|
151
|
+
}
|
|
145
152
|
/**
|
|
146
153
|
* This method will make an authorization request to the server.
|
|
147
154
|
*
|
|
148
155
|
* @param username The username to use for the authorization request. It will be provided to the OpenID server as a hint.
|
|
149
156
|
*/
|
|
150
157
|
makeAuthorizationRequest(username) {
|
|
158
|
+
if (!this.#configuration) {
|
|
159
|
+
console.log('Unknown service configuration');
|
|
160
|
+
throw new Error('Unknown service configuration');
|
|
161
|
+
}
|
|
151
162
|
const extras = { prompt: 'consent', access_type: 'offline' };
|
|
152
163
|
if (username) {
|
|
153
164
|
extras['login_hint'] = username;
|
|
@@ -188,6 +199,10 @@ export class UmbAuthFlow {
|
|
|
188
199
|
* @returns The access token for the user.
|
|
189
200
|
*/
|
|
190
201
|
async performWithFreshTokens() {
|
|
202
|
+
if (!this.#configuration) {
|
|
203
|
+
console.log('Unknown service configuration');
|
|
204
|
+
return Promise.reject('Unknown service configuration');
|
|
205
|
+
}
|
|
191
206
|
if (!this.#refreshToken) {
|
|
192
207
|
console.log('Missing refreshToken.');
|
|
193
208
|
return Promise.resolve('Missing refreshToken.');
|
|
@@ -220,6 +235,10 @@ export class UmbAuthFlow {
|
|
|
220
235
|
* This method will make a token request to the server using the authorization code.
|
|
221
236
|
*/
|
|
222
237
|
async #makeRefreshTokenRequest(code, codeVerifier) {
|
|
238
|
+
if (!this.#configuration) {
|
|
239
|
+
console.log('Unknown service configuration');
|
|
240
|
+
return Promise.reject();
|
|
241
|
+
}
|
|
223
242
|
const extras = {};
|
|
224
243
|
if (codeVerifier) {
|
|
225
244
|
extras.code_verifier = codeVerifier;
|
|
@@ -29,11 +29,6 @@ export class UmbRepositoryItemsManager {
|
|
|
29
29
|
setUniques(uniques) {
|
|
30
30
|
this.#uniques.next(uniques);
|
|
31
31
|
//TODO: Check if it's safe to call requestItems here.
|
|
32
|
-
// We don't have to request items if there is no uniques.
|
|
33
|
-
if (uniques.length === 0) {
|
|
34
|
-
this.#items.next([]);
|
|
35
|
-
return;
|
|
36
|
-
}
|
|
37
32
|
this.#requestItems();
|
|
38
33
|
}
|
|
39
34
|
getItems() {
|
|
@@ -6,54 +6,6 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
|
|
|
6
6
|
|
|
7
7
|
## Unreleased
|
|
8
8
|
|
|
9
|
-
## 6.7.0 - 2023-08-30
|
|
10
|
-
|
|
11
|
-
### Added
|
|
12
|
-
- New `help_accessibility` option displays the keyboard shortcut to open the in-application help in the status bar. #TINY-9379
|
|
13
|
-
- Added a new `InsertNewBlockBefore` command which inserts an empty block before the block containing the current selection. #TINY-10022
|
|
14
|
-
- Added a new `InsertNewBlockAfter` command which inserts an empty block after the block containing the current selection. #TINY-10022
|
|
15
|
-
|
|
16
|
-
### Improved
|
|
17
|
-
- Adding a newline after a table would, in some specific cases, not work. #TINY-9863
|
|
18
|
-
- Menus now have a slight margin at the top and bottom to more clearly separate them from the frame edge. #TINY-9978
|
|
19
|
-
- Updated **More** toolbar button tooltip text from *More...* to *Reveal or hide additional toolbar items*. #TINY-9629
|
|
20
|
-
- Where multiple case sensitive variants of a translation key are provided, they will now all be preserved in the translation object instead of just the lowercase variant. #TINY-10115
|
|
21
|
-
- Improved screen reader announcements of the column and row selection in the grid presented by the **Table** menu and toolbar item. #TINY-10140
|
|
22
|
-
- Improved the keyboard focus visibility for links inside dialogs. #TINY-10124
|
|
23
|
-
|
|
24
|
-
### Changed
|
|
25
|
-
- Change `UndoLevelType` from `enum` to union type so that it is easier to use. #TINY-9764
|
|
26
|
-
- The pattern replacement removed spaces if they were contained within a tag that only contained a space and the text to replace. #TINY-9744
|
|
27
|
-
- If loading content CSS takes more than 500ms, the editor will be set to an *in progress* state until the CSS is ready. #TINY-10008
|
|
28
|
-
|
|
29
|
-
### Fixed
|
|
30
|
-
- Applying an ordered or unordered list to a selected checklist incorrectly turned the list into paragraphs. #TINY-9975
|
|
31
|
-
- Returning an empty string in a custom context menu update function resulted in a small white line appearing on right-click and the browser-native context menu would not present. #TINY-9842
|
|
32
|
-
- For sufficiently long URLs and sufficiently wide windows, URL autocompletion hid middle portions of the URL from view. #TINY-10017
|
|
33
|
-
- Numeric input in toolbar items did not disable when a switching from edit to read-only mode. #TINY-10129
|
|
34
|
-
- The Quick Toolbars plugin showed text alignment buttons on pagebreaks. #TINY-10054
|
|
35
|
-
- Creating lists in empty blocks sometimes, and incorrectly, converted adjacent block elements into list items. #TINY-10136
|
|
36
|
-
- Creating a list from multiple `<div>` elements only created a partial list. #TINY-9872
|
|
37
|
-
- Tab navigation incorrectly stopped around `iframe` dialog components. #TINY-9815
|
|
38
|
-
- It was possible to delete the sole empty block immediately before a `<details>` element if it was nested within another `<details>` element. #TINY-9965
|
|
39
|
-
- Deleting `<li>` elements that only contained `<br>` tags sometimes caused a crash. #TINY-6888
|
|
40
|
-
- It was possible to remove the `<summary>` element from a `<details>` element by dragging and dropping. #TINY-9960
|
|
41
|
-
- It was possible to break `<summary>` elements if content containing block elements was dragged-and-dropped inside them. #TINY-9960
|
|
42
|
-
- Contents were not removed from the drag start source if dragging and dropping internally into a transparent block element. #TINY-9960
|
|
43
|
-
- Using the Media plugin unexpectedly changed `<script>` tags in the editor body to `<image>` tags. #TINY-10007
|
|
44
|
-
- In some circumstances, pressing the **Enter** key scrolled the entire page. #TINY-9828
|
|
45
|
-
- The border styles of a table were incorrectly split into a longhand form after table dialog updates. #TINY-9843
|
|
46
|
-
- Links in **Help → Help → Plugins** and **Help → Help → Version** were not navigable by keyboard. #TINY-10071
|
|
47
|
-
- Fixed the inability to insert content next to the `<details>` element when it is the first or last content element. Pressing the **Up** or **Down** arrow key now inserts a block element before or after the `<details>` element. #TINY-9827
|
|
48
|
-
- An empty element with a `contenteditable="true"` attribute within a noneditable root was deleted when the Backspace key was pressed. #TINY-10011
|
|
49
|
-
- The `color_cols` option was not respected when set to the value 5 with a custom `color_map` specified. #TINY-10126
|
|
50
|
-
- In Safari on macOS, deleting backwards within a `<summary>` element removed the entire `<details>` element if it had no other content. #TINY-10123
|
|
51
|
-
|
|
52
|
-
## 6.6.2 - 2023-08-09
|
|
53
|
-
|
|
54
|
-
### Fixed
|
|
55
|
-
- An "Uncaught TypeError: Cannot read properties of null" error would sometimes be thrown when updating the content of a `streamContent: true` iframe dialog component. #TINY-10128
|
|
56
|
-
|
|
57
9
|
## 6.6.1 - 2023-08-02
|
|
58
10
|
|
|
59
11
|
### Added
|