Update
This commit is contained in:
154
core/bitrix/js/ui/accessrights/v2/dist/v2.bundle.css
vendored
154
core/bitrix/js/ui/accessrights/v2/dist/v2.bundle.css
vendored
@@ -1,6 +1,11 @@
|
||||
.ui-access-rights-v2 {
|
||||
}
|
||||
|
||||
.ui-access-rights-v2-section:last-child .ui-access-rights-v2-section-container {
|
||||
border-bottom-left-radius: var(--ui-border-radius-xl);
|
||||
border-bottom-right-radius: var(--ui-border-radius-xl);
|
||||
}
|
||||
|
||||
.ui-access-rights-v2-block {
|
||||
position: relative;
|
||||
pointer-events: none;
|
||||
@@ -30,6 +35,14 @@
|
||||
font-size: var(--ui-font-size-lg);
|
||||
}
|
||||
|
||||
.ui-access-rights-v2--head-section::before {
|
||||
content: "";
|
||||
position: absolute;
|
||||
inset: 0;
|
||||
background: var(--ui-color-gray-05) ;
|
||||
z-index: -1;
|
||||
}
|
||||
|
||||
.ui-access-rights-v2--head-section .ui-access-rights-v2-column-item-text {
|
||||
font-size: var(--ui-font-size-lg);
|
||||
}
|
||||
@@ -45,8 +58,8 @@
|
||||
|
||||
.ui-access-rights-v2--head-section .ui-access-rights-v2-section-container {
|
||||
height: 82px;
|
||||
border-top-right-radius: var(--ui-border-radius-xs);
|
||||
border-top-left-radius: var(--ui-border-radius-xs);
|
||||
border-top-right-radius: var(--ui-border-radius-xl);
|
||||
border-top-left-radius: var(--ui-border-radius-xl);
|
||||
}
|
||||
|
||||
.ui-access-rights-v2-section-head {
|
||||
@@ -174,7 +187,7 @@
|
||||
text-overflow: ellipsis;
|
||||
white-space: nowrap;
|
||||
font-size: var(--ui-font-size-sm);
|
||||
color: var(--ui-color-palette-black-base);
|
||||
color: var(--ui-color-base-90);
|
||||
line-height: var(--ui-font-line-height-2xs);
|
||||
cursor: default;
|
||||
}
|
||||
@@ -188,6 +201,8 @@
|
||||
.ui-access-rights-v2-column-item-title-block {
|
||||
display: flex;
|
||||
flex-direction: column;
|
||||
flex: 1;
|
||||
min-width: 0;
|
||||
}
|
||||
|
||||
.ui-access-rights-v2-column-item-title-icon {
|
||||
@@ -206,8 +221,8 @@
|
||||
color: var(--ui-color-palette-gray-90);
|
||||
}
|
||||
|
||||
.ui-access-rights-v2-column-item-title .--plus-in-circle, .ui-access-rights-v2-column-item-title .--minus-in-circle {
|
||||
--ui-icon-set__icon-color: var(--ui-color-palette-gray-50);
|
||||
.ui-access-rights-v2-column-item-title .--o-circle-plus, .ui-access-rights-v2-column-item-title .--o-circle-minus {
|
||||
--ui-icon-set__icon-color: var(--ui-color-palette-gray-30);
|
||||
--ui-icon-set__icon-size: 18px;
|
||||
margin-right: 5px;
|
||||
}
|
||||
@@ -217,14 +232,25 @@
|
||||
}
|
||||
|
||||
.ui-access-rights-v2-column-item-title .ui-access-rights-v2-hint-container {
|
||||
display: inline;
|
||||
vertical-align: middle;
|
||||
position: relative;
|
||||
top: 2px;
|
||||
top: 1px;
|
||||
white-space: nowrap;
|
||||
}
|
||||
|
||||
.ui-access-rights-v2-hint-container::before {
|
||||
content: "\00a0";
|
||||
}
|
||||
|
||||
.ui-access-rights-v2-column-item-title .ui-hint {
|
||||
line-height: normal;
|
||||
width: 13px;
|
||||
height: 13px;
|
||||
width: 16px;
|
||||
height: 16px;
|
||||
}
|
||||
|
||||
.ui-access-rights-v2-hint-container .ui-icon-set {
|
||||
--ui-icon-set__icon-size: 16px;
|
||||
}
|
||||
|
||||
.ui-access-rights-v2-column-item-title .ui-hint-icon {
|
||||
@@ -249,7 +275,7 @@
|
||||
}
|
||||
|
||||
.ui-access-rights-v2-header-role-cell {
|
||||
padding: 10px;
|
||||
padding: 16px 10px 10px 10px;
|
||||
height: calc(100% - 20px);
|
||||
display: flex;
|
||||
flex-direction: column;
|
||||
@@ -269,13 +295,15 @@
|
||||
display: flex;
|
||||
justify-content: center;
|
||||
align-items: center;
|
||||
margin-right: -16px; /* because of menu */
|
||||
}
|
||||
|
||||
.ui-access-rights-v2-role-input,
|
||||
.ui-access-rights-v2-role-value {
|
||||
font-size: var(--ui-font-size-lg);
|
||||
line-height: var(--ui-font-line-height-3xs);
|
||||
color: var(--ui-color-gray-90);
|
||||
font-weight: var(--ui-font-weight-normal);
|
||||
line-height: 20px;
|
||||
|
||||
overflow: hidden;
|
||||
text-overflow: ellipsis;
|
||||
white-space: nowrap;
|
||||
@@ -306,11 +334,14 @@
|
||||
.ui-access-rights-v2-members {
|
||||
display: flex;
|
||||
align-items: center;
|
||||
border: var(--ui-border-width-thin) solid #525C6929;
|
||||
border-radius: var(--ui-border-radius-pill);
|
||||
padding: 4px;
|
||||
}
|
||||
|
||||
.ui-access-rights-v2-members-air-template {
|
||||
border: none;
|
||||
}
|
||||
|
||||
.ui-access-rights-v2-members-item {
|
||||
display: inline-block;
|
||||
margin-left: -9px;
|
||||
@@ -328,15 +359,18 @@
|
||||
.ui-access-rights-v2-members-item-add {
|
||||
height: 24px;
|
||||
width: 24px;
|
||||
border: none;
|
||||
background: #fff;
|
||||
box-shadow: 0 2px 4px 0 rgba(0,0,0,.14);
|
||||
border-radius: 100%;
|
||||
cursor: pointer;
|
||||
border: 1px solid var(--ui-color-base-7)
|
||||
}
|
||||
|
||||
.ui-access-rights-v2-members-item-add:hover {
|
||||
background-color: var(--ui-color-base-7);
|
||||
}
|
||||
|
||||
.ui-access-rights-v2-members-item-add .ui-icon-set {
|
||||
--ui-icon-set__icon-color: var(--ui-color-palette-blue-50);
|
||||
--ui-icon-set__icon-color: var(--ui-color-accent-main-primary);
|
||||
}
|
||||
|
||||
.ui-access-rights-v2-members-item-add:hover .ui-icon-set {
|
||||
@@ -438,6 +472,12 @@ div.ui-access-rights-v2-members-item-new:last-of-type {
|
||||
overflow: visible;
|
||||
text-overflow: clip;
|
||||
word-break: break-word;
|
||||
|
||||
width: 100%;
|
||||
justify-content: space-between;
|
||||
|
||||
font-weight: 400;
|
||||
font-size: var(--ui-font-size-sm);
|
||||
}
|
||||
|
||||
.ui-access-rights-v2-text-center {
|
||||
@@ -456,13 +496,23 @@ div.ui-access-rights-v2-members-item-new:last-of-type {
|
||||
|
||||
.ui-access-rights-v2-icon-more {
|
||||
--ui-icon-set__icon-size: 16px;
|
||||
--ui-icon-set__icon-color: var(--ui-color-base-5);
|
||||
opacity: var(--ui-opacity-40);
|
||||
cursor: pointer;
|
||||
}
|
||||
|
||||
.ui-access-rights-v2-search {
|
||||
max-width: 290px;
|
||||
--ui-field-size: 34px
|
||||
}
|
||||
|
||||
.ui-access-rights-v2-search-input {
|
||||
background-color: #F6F7F9;
|
||||
border: none;
|
||||
border-radius: var(--ui-border-radius-sm);
|
||||
border: 1px solid var(--ui-color-bg-content-primary);
|
||||
}
|
||||
|
||||
.ui-access-rights-v2-search .ui-ctl-element:hover, .ui-access-rights-v2-search .ui-ctl-element:focus {
|
||||
border-color: var(--ui-color-bg-content-primary);
|
||||
}
|
||||
|
||||
.ui-access-rights-v2-search-input:focus {
|
||||
@@ -486,8 +536,7 @@ div.ui-access-rights-v2-members-item-new:last-of-type {
|
||||
}
|
||||
|
||||
.ui-access-rights-v2-header-role-add .ui-btn:hover:not(.ui-btn-disabled) {
|
||||
border-color: var(--ui-color-palette-blue-30);
|
||||
background: unset;
|
||||
background-color: var(--ui-color-base-7);
|
||||
}
|
||||
|
||||
.ui-access-rights-v2-header-role-add .ui-btn.ui-btn-disabled {
|
||||
@@ -497,6 +546,19 @@ div.ui-access-rights-v2-members-item-new:last-of-type {
|
||||
.ui-access-rights-v2-header-role-add .ui-icon-set {
|
||||
--ui-icon-set__icon-color: var(--ui-color-base-50);
|
||||
}
|
||||
|
||||
.ui-access-rights-v2-search-icon {
|
||||
position: absolute;
|
||||
z-index: 10;
|
||||
display: block;
|
||||
width: 22px;
|
||||
height: calc(var(--ui-field-size) - 2px);
|
||||
right: 12px;
|
||||
cursor: pointer;
|
||||
|
||||
--ui-icon-set__icon-size: 20px;
|
||||
--ui-icon-set__icon-color: var(--ui-color-base-5);
|
||||
}
|
||||
.ui-access-rights-v2-column-item.ui-access-rights-v2-header-roles-control {
|
||||
display: flex;
|
||||
flex-direction: column;
|
||||
@@ -523,10 +585,18 @@ div.ui-access-rights-v2-members-item-new:last-of-type {
|
||||
align-items: center;
|
||||
cursor: pointer;
|
||||
font-size: var(--ui-font-size-sm);
|
||||
border: 1px solid var(--design-outline-default-design-outline-stroke, var(--ui-color-base-7));
|
||||
border-radius: var(--ui-border-radius-pill);
|
||||
box-shadow: var(--ui-shadow-bottom-s);
|
||||
padding: 5px 10px 5px 10px;
|
||||
border: var(--ui-border-width-thin) solid rgba(var(--ui-color-palette-black-solid-rgb), 0.07)
|
||||
}
|
||||
|
||||
.ui-access-rights-v2-header-roles-control-counter:hover {
|
||||
background-color: var(--ui-color-base-7);
|
||||
}
|
||||
|
||||
.ui-access-rights-v2-header-roles-control-counter .ui-icon-set {
|
||||
--ui-icon-set__icon-color: var(--ui-color-accent-main-primary);
|
||||
margin-right: 2px;
|
||||
}
|
||||
|
||||
.ui-access-rights-v2-header-roles-control-chevron {
|
||||
@@ -546,6 +616,27 @@ div.ui-access-rights-v2-members-item-new:last-of-type {
|
||||
cursor: pointer;
|
||||
}
|
||||
|
||||
.ui-access-rights-v2-header-roles-control-expander-button {
|
||||
height: 24px;
|
||||
width: 24px;
|
||||
border: 1px solid var(--design-outline-default-design-outline-stroke, var(--ui-color-base-7));
|
||||
border-radius: var(--ui-border-radius-xs);
|
||||
|
||||
display: flex;
|
||||
justify-content: center;
|
||||
align-items: center;
|
||||
|
||||
margin-left: 4px;
|
||||
}
|
||||
|
||||
.ui-access-rights-v2-header-roles-control-expander-button:hover {
|
||||
background-color: var(--ui-color-base-7);
|
||||
}
|
||||
|
||||
.ui-access-rights-v2-header-roles-control-expander-button .ui-icon-set {
|
||||
--ui-icon-set__icon-size: 18px;
|
||||
}
|
||||
|
||||
.ui-access-rights-v2-section-header {
|
||||
display: flex;
|
||||
align-items: center;
|
||||
@@ -570,23 +661,22 @@ div.ui-access-rights-v2-members-item-new:last-of-type {
|
||||
.ui-access-rights-v2-section-header-expander {
|
||||
width: 18px;
|
||||
height: 18px;
|
||||
background-color: var(--ui-color-palette-white-base);
|
||||
border: 1px solid var(--ui-color-base-7);
|
||||
border-radius: var(--ui-border-radius-circle);
|
||||
box-shadow: var(--ui-shadow-bottom-s);
|
||||
display: flex;
|
||||
align-items: center;
|
||||
justify-content: center;
|
||||
margin-right: 9px;
|
||||
background-color: var(--ui-color-bg-content-primary);
|
||||
}
|
||||
|
||||
.ui-access-rights-v2-section-header-expander:hover {
|
||||
background-color: var(--ui-color-base-7);
|
||||
}
|
||||
|
||||
.ui-access-rights-v2-section-header-expander .ui-icon-set {
|
||||
--ui-icon-set__icon-size: 12px;
|
||||
--ui-icon-set__icon-color: var(--ui-color-palette-gray-40);
|
||||
}
|
||||
|
||||
.ui-access-rights-v2-section-header.--expanded .ui-access-rights-v2-section-header-expander .ui-icon-set {
|
||||
--ui-icon-set__icon-size: 12px;
|
||||
--ui-icon-set__icon-color: var(--ui-color-palette-black-base);
|
||||
--ui-icon-set__icon-color: var(--ui-color-accent-main-primary);
|
||||
}
|
||||
|
||||
.ui-access-rights-v2-section-header-icon {
|
||||
@@ -603,16 +693,16 @@ div.ui-access-rights-v2-members-item-new:last-of-type {
|
||||
}
|
||||
|
||||
.ui-access-rights-v2-section-title {
|
||||
color: var(--ui-color-palette-gray-80);
|
||||
color: var(--ui-color-palette-gray-90);
|
||||
max-width: 70%;
|
||||
}
|
||||
|
||||
.ui-access-rights-v2-section-header.--expanded .ui-access-rights-v2-section-title {
|
||||
color: var(--ui-color-palette-black-base);
|
||||
color: var(--ui-color-palette-gray-90);
|
||||
}
|
||||
|
||||
.ui-access-rights-v2-section-subtitle {
|
||||
color: var(--ui-color-palette-gray-70);
|
||||
color: var(--ui-color-palette-gray-90);
|
||||
margin-left: 3px;
|
||||
max-width: 200px;
|
||||
}
|
||||
|
||||
163
core/bitrix/js/ui/accessrights/v2/dist/v2.bundle.js
vendored
163
core/bitrix/js/ui/accessrights/v2/dist/v2.bundle.js
vendored
@@ -96,6 +96,7 @@ this.BX.UI.AccessRights = this.BX.UI.AccessRights || {};
|
||||
return babelHelpers.classPrivateFieldLooseBase(this, _cache)[_cache].remember(`hint-${appGuid}`, () => {
|
||||
return BX.UI.Hint.createInstance({
|
||||
id: `ui-access-rights-v2-hint-${appGuid}`,
|
||||
classNameIcon: 'ui-icon-set --o-question',
|
||||
popupParameters: {
|
||||
className: 'ui-access-rights-v2-popup-pointer-events ui-hint-popup',
|
||||
autoHide: true,
|
||||
@@ -173,7 +174,8 @@ this.BX.UI.AccessRights = this.BX.UI.AccessRights || {};
|
||||
options: state => state.application.options,
|
||||
addUserGroupsProviderTab: state => state.application.options.additionalMembersParams.addUserGroupsProviderTab,
|
||||
addProjectsProviderTab: state => state.application.options.additionalMembersParams.addProjectsProviderTab,
|
||||
addStructureTeamsProviderTab: state => state.application.options.additionalMembersParams.addStructureTeamsProviderTab
|
||||
addStructureTeamsProviderTab: state => state.application.options.additionalMembersParams.addStructureTeamsProviderTab,
|
||||
addStructureRolesProviderTab: state => state.application.options.additionalMembersParams.addStructureRolesProviderTab
|
||||
})
|
||||
},
|
||||
mounted() {
|
||||
@@ -218,6 +220,9 @@ this.BX.UI.AccessRights = this.BX.UI.AccessRights || {};
|
||||
const groupId = match ? match[1] : null;
|
||||
return ['site-groups', groupId];
|
||||
}
|
||||
if (/^(?:ATD|ATE|ATT|AD|AE|AT)[1-9]\d*$/.test(accessCode)) {
|
||||
return ['structure-role', accessCode];
|
||||
}
|
||||
if (accessCode.at(0) === 'A') {
|
||||
return ['user-groups', accessCode];
|
||||
}
|
||||
@@ -294,6 +299,9 @@ this.BX.UI.AccessRights = this.BX.UI.AccessRights || {};
|
||||
if (entityId === 'user-groups') {
|
||||
return item.id;
|
||||
}
|
||||
if (entityId === 'structure-role') {
|
||||
return item.id;
|
||||
}
|
||||
if (entityId === 'project-access-codes') {
|
||||
return item.id;
|
||||
}
|
||||
@@ -315,6 +323,7 @@ this.BX.UI.AccessRights = this.BX.UI.AccessRights || {};
|
||||
return 'structureteams';
|
||||
case 'site-groups':
|
||||
case 'user-groups':
|
||||
case 'structure-role':
|
||||
return 'usergroups';
|
||||
default:
|
||||
return '';
|
||||
@@ -341,14 +350,24 @@ this.BX.UI.AccessRights = this.BX.UI.AccessRights || {};
|
||||
dynamicLoad: true,
|
||||
dynamicSearch: true
|
||||
}];
|
||||
if (this.addStructureRolesProviderTab) {
|
||||
entities.push({
|
||||
id: 'structure-role',
|
||||
options: {
|
||||
includedNodeEntityTypes: ['team', 'department']
|
||||
},
|
||||
dynamicLoad: true,
|
||||
dynamicSearch: true
|
||||
});
|
||||
}
|
||||
if (this.addStructureTeamsProviderTab) {
|
||||
entities.push({
|
||||
id: 'structure-node',
|
||||
options: {
|
||||
selectMode: 'usersAndDepartments',
|
||||
includedNodeEntityTypes: ['team'],
|
||||
allowSelectRootDepartment: true,
|
||||
allowFlatDepartments: true,
|
||||
includedNodeEntityTypes: ['team'],
|
||||
useMultipleTabs: true,
|
||||
visual: {
|
||||
avatarMode: 'node',
|
||||
@@ -472,7 +491,7 @@ this.BX.UI.AccessRights = this.BX.UI.AccessRights || {};
|
||||
'--has-siblings': userGroup.members.size > 0,
|
||||
}"
|
||||
>
|
||||
<div class="ui-icon-set --plus-30"></div>
|
||||
<div class="ui-icon-set --plus-m"></div>
|
||||
</div>
|
||||
<Selector
|
||||
v-if="isSelectorShown"
|
||||
@@ -506,7 +525,7 @@ this.BX.UI.AccessRights = this.BX.UI.AccessRights || {};
|
||||
computed: {
|
||||
RichMenuItemIcon: () => ui_vue3_components_richMenu.RichMenuItemIcon,
|
||||
...ui_vue3_vuex.mapState({
|
||||
isSaving: state => state.application.isSaving,
|
||||
isProgress: state => state.application.isProgress,
|
||||
guid: state => state.application.guid,
|
||||
maxVisibleUserGroups: state => state.application.options.maxVisibleUserGroups
|
||||
}),
|
||||
@@ -594,6 +613,7 @@ this.BX.UI.AccessRights = this.BX.UI.AccessRights || {};
|
||||
}
|
||||
}
|
||||
}), new ui_buttons.CancelButton({
|
||||
text: this.$Bitrix.Loc.getMessage('JS_UI_ACCESSRIGHTS_V2_CANCEL'),
|
||||
size: ui_buttons.ButtonSize.SMALL,
|
||||
events: {
|
||||
click: () => {
|
||||
@@ -605,7 +625,7 @@ this.BX.UI.AccessRights = this.BX.UI.AccessRights || {};
|
||||
popup.show();
|
||||
},
|
||||
showActionsMenu() {
|
||||
if (!this.isSaving) {
|
||||
if (!this.isProgress) {
|
||||
this.isPopupShown = true;
|
||||
}
|
||||
},
|
||||
@@ -643,7 +663,7 @@ this.BX.UI.AccessRights = this.BX.UI.AccessRights || {};
|
||||
<div ref="container" class='ui-access-rights-v2-role'>
|
||||
<div class="ui-access-rights-v2-role-value-container">
|
||||
<input
|
||||
v-if="isEdit && !isSaving"
|
||||
v-if="isEdit && !isProgress"
|
||||
ref="input"
|
||||
type='text'
|
||||
class='ui-access-rights-v2-role-input'
|
||||
@@ -655,7 +675,8 @@ this.BX.UI.AccessRights = this.BX.UI.AccessRights || {};
|
||||
</div>
|
||||
<div
|
||||
ref="menu"
|
||||
class="ui-icon-set --more ui-access-rights-v2-icon-more"
|
||||
class="ui-icon-set --more-l ui-access-rights-v2-icon-more"
|
||||
style="position: absolute; right: 11px; top: 5px;"
|
||||
@click="showActionsMenu"
|
||||
>
|
||||
<RichMenuPopup v-if="isPopupShown" @close="isPopupShown = false" :popup-options="{bindElement: $refs.menu}">
|
||||
@@ -898,7 +919,8 @@ this.BX.UI.AccessRights = this.BX.UI.AccessRights || {};
|
||||
<div>{{ $Bitrix.Loc.getMessage('JS_UI_ACCESSRIGHTS_V2_ROLES') }}</div>
|
||||
<div
|
||||
ref="configure"
|
||||
class="ui-icon-set --more ui-access-rights-v2-icon-more"
|
||||
class="ui-icon-set --more-l ui-access-rights-v2-icon-more"
|
||||
style="position: absolute; right: 11px; top: 5px;"
|
||||
@click="isPopupShown = true"
|
||||
>
|
||||
<RichMenuPopup v-if="isPopupShown" @close="isPopupShown = false" :popup-options="{bindElement: $refs.configure}">
|
||||
@@ -945,21 +967,25 @@ this.BX.UI.AccessRights = this.BX.UI.AccessRights || {};
|
||||
class="ui-access-rights-v2-header-roles-control-counter"
|
||||
@click="toggleViewDialog($refs.counter)"
|
||||
>
|
||||
<div class="ui-icon-set --opened-eye" style="--ui-icon-set__icon-size: 15px;"></div>
|
||||
<div class="ui-icon-set --o-observer" style="--ui-icon-set__icon-size: 18px;"></div>
|
||||
<span v-html="shownGroupsCounter"></span>
|
||||
<div class="ui-icon-set --chevron-down ui-access-rights-v2-header-roles-control-chevron"></div>
|
||||
</div>
|
||||
<div class="ui-access-rights-v2-header-roles-control-expander">
|
||||
<div
|
||||
class="ui-icon-set --collapse"
|
||||
:title="$Bitrix.Loc.getMessage('JS_UI_ACCESSRIGHTS_V2_COLLAPSE_ALL_SECTIONS')"
|
||||
@click="$store.dispatch('accessRights/collapseAllSections')"
|
||||
></div>
|
||||
<div
|
||||
class="ui-icon-set --expand-1"
|
||||
:title="$Bitrix.Loc.getMessage('JS_UI_ACCESSRIGHTS_V2_EXPAND_ALL_SECTIONS')"
|
||||
@click="$store.dispatch('accessRights/expandAllSections')"
|
||||
></div>
|
||||
<div class="ui-access-rights-v2-header-roles-control-expander-button">
|
||||
<div
|
||||
class="ui-icon-set --collapse"
|
||||
:title="$Bitrix.Loc.getMessage('JS_UI_ACCESSRIGHTS_V2_COLLAPSE_ALL_SECTIONS')"
|
||||
@click="$store.dispatch('accessRights/collapseAllSections')"
|
||||
></div>
|
||||
</div>
|
||||
<div class="ui-access-rights-v2-header-roles-control-expander-button">
|
||||
<div
|
||||
class="ui-icon-set --expand-1"
|
||||
:title="$Bitrix.Loc.getMessage('JS_UI_ACCESSRIGHTS_V2_EXPAND_ALL_SECTIONS')"
|
||||
@click="$store.dispatch('accessRights/expandAllSections')"
|
||||
></div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</CellLayout>
|
||||
@@ -1179,14 +1205,19 @@ this.BX.UI.AccessRights = this.BX.UI.AccessRights || {};
|
||||
}
|
||||
},
|
||||
template: `
|
||||
<div class="ui-ctl ui-ctl-after-icon ui-ctl-w100 ui-access-rights-v2-search">
|
||||
<div
|
||||
class="ui-ctl ui-ctl-after-icon ui-access-rights-v2-search">
|
||||
<input
|
||||
type="text"
|
||||
class="ui-ctl-element ui-ctl-textbox ui-access-rights-v2-search-input"
|
||||
:placeholder="$Bitrix.Loc.getMessage('JS_UI_ACCESSRIGHTS_V2_SEARCH_PLACEHOLDER')"
|
||||
v-model="searchQuery"
|
||||
ref="searchInput"
|
||||
>
|
||||
<a class="ui-ctl-after ui-ctl-icon-search ui-access-rights-v2-search-icon"></a>
|
||||
<a
|
||||
class="ui-icon-set --o-search ui-access-rights-v2-search-icon"
|
||||
@click="this.$refs.searchInput.focus()"
|
||||
></a>
|
||||
</div>
|
||||
`
|
||||
};
|
||||
@@ -2033,7 +2064,7 @@ this.BX.UI.AccessRights = this.BX.UI.AccessRights || {};
|
||||
<CellLayout class="ui-access-rights-v2-menu-cell" style="cursor: pointer" @click="toggleMenu">
|
||||
<div
|
||||
ref="icon"
|
||||
class="ui-icon-set --more ui-access-rights-v2-icon-more"
|
||||
class="ui-icon-set --more-l ui-access-rights-v2-icon-more"
|
||||
>
|
||||
<RichMenuPopup
|
||||
v-if="isMenuShown"
|
||||
@@ -2554,7 +2585,8 @@ this.BX.UI.AccessRights = this.BX.UI.AccessRights || {};
|
||||
const cancelButton = new ui_buttons.CancelButton({
|
||||
onclick: () => {
|
||||
this.$emit('close');
|
||||
}
|
||||
},
|
||||
text: this.$Bitrix.Loc.getMessage('JS_UI_ACCESSRIGHTS_V2_CANCEL')
|
||||
});
|
||||
cancelButton.renderTo(this.$refs['button-container']);
|
||||
});
|
||||
@@ -3757,8 +3789,8 @@ this.BX.UI.AccessRights = this.BX.UI.AccessRights || {};
|
||||
v-if="right.groupHead"
|
||||
class="ui-icon-set"
|
||||
:class="{
|
||||
'--minus-in-circle': right.isGroupExpanded,
|
||||
'--plus-in-circle': !right.isGroupExpanded,
|
||||
'--o-circle-minus': right.isGroupExpanded,
|
||||
'--o-circle-plus': !right.isGroupExpanded,
|
||||
}"
|
||||
></span>
|
||||
<div
|
||||
@@ -3772,15 +3804,13 @@ this.BX.UI.AccessRights = this.BX.UI.AccessRights || {};
|
||||
class="ui-access-rights-v2-column-item-title-link ui-access-rights-v2-text-ellipsis"
|
||||
@click="onRightClick"
|
||||
>
|
||||
{{ right.title }}
|
||||
<Hint v-once v-if="right.hint" :html="right.hint"/>
|
||||
{{ right.title }}<Hint v-once v-if="right.hint" :html="right.hint"/>
|
||||
</span>
|
||||
<span
|
||||
v-else
|
||||
class="ui-access-rights-v2-text-wrap"
|
||||
>
|
||||
{{ right.title }}
|
||||
<Hint v-once v-if="right.hint" :html="right.hint"/>
|
||||
{{ right.title }}<Hint v-once v-if="right.hint" :html="right.hint"/>
|
||||
</span>
|
||||
<span
|
||||
v-if="right.subtitle"
|
||||
@@ -3790,7 +3820,7 @@ this.BX.UI.AccessRights = this.BX.UI.AccessRights || {};
|
||||
</div>
|
||||
<div
|
||||
ref="icon"
|
||||
class="ui-icon-set --more ui-access-rights-v2-icon-more ui-access-rights-v2-title-column-menu"
|
||||
class="ui-icon-set --more-l ui-access-rights-v2-icon-more ui-access-rights-v2-title-column-menu"
|
||||
@click="toggleMenu"
|
||||
>
|
||||
<RichMenuPopup
|
||||
@@ -3959,7 +3989,7 @@ this.BX.UI.AccessRights = this.BX.UI.AccessRights || {};
|
||||
loader: null,
|
||||
computed: {
|
||||
...ui_vue3_vuex.mapState({
|
||||
isSaving: state => state.application.isSaving,
|
||||
isProgress: state => state.application.isProgress,
|
||||
guid: state => state.application.guid,
|
||||
searchContainerSelector: state => state.application.options.searchContainerSelector
|
||||
}),
|
||||
@@ -4071,7 +4101,7 @@ this.BX.UI.AccessRights = this.BX.UI.AccessRights || {};
|
||||
<SearchBox/>
|
||||
</Teleport>
|
||||
<div ref="container" class='ui-access-rights-v2' :class="{
|
||||
'ui-access-rights-v2-block': isSaving,
|
||||
'ui-access-rights-v2-block': isProgress,
|
||||
}">
|
||||
<Header :user-groups="shownUserGroups"/>
|
||||
<Section
|
||||
@@ -4153,25 +4183,6 @@ this.BX.UI.AccessRights = this.BX.UI.AccessRights || {};
|
||||
// 'event' field is provided by AnalyticsManager
|
||||
babelHelpers.classPrivateFieldLooseBase(this, _isEnabled)[_isEnabled] = Object.hasOwn(babelHelpers.classPrivateFieldLooseBase(this, _data)[_data], 'tool') && Object.hasOwn(babelHelpers.classPrivateFieldLooseBase(this, _data)[_data], 'category');
|
||||
}
|
||||
onSaveAttempt() {
|
||||
if (!babelHelpers.classPrivateFieldLooseBase(this, _isEnabled)[_isEnabled]) {
|
||||
return;
|
||||
}
|
||||
const {
|
||||
createdRoles,
|
||||
editedRoles,
|
||||
deletedRoles
|
||||
} = babelHelpers.classPrivateFieldLooseBase(this, _analyzeRoles)[_analyzeRoles]();
|
||||
for (let i = 0; i < createdRoles; i++) {
|
||||
babelHelpers.classPrivateFieldLooseBase(this, _registerRoleCreateEvent)[_registerRoleCreateEvent]('attempt');
|
||||
}
|
||||
for (let i = 0; i < editedRoles; i++) {
|
||||
babelHelpers.classPrivateFieldLooseBase(this, _registerRoleEditEvent)[_registerRoleEditEvent]('attempt');
|
||||
}
|
||||
for (let i = 0; i < deletedRoles; i++) {
|
||||
babelHelpers.classPrivateFieldLooseBase(this, _registerRoleDeleteEvent)[_registerRoleDeleteEvent]('attempt');
|
||||
}
|
||||
}
|
||||
onSaveSuccess() {
|
||||
if (!babelHelpers.classPrivateFieldLooseBase(this, _isEnabled)[_isEnabled]) {
|
||||
return;
|
||||
@@ -4343,7 +4354,7 @@ this.BX.UI.AccessRights = this.BX.UI.AccessRights || {};
|
||||
return {
|
||||
options: babelHelpers.classPrivateFieldLooseBase(this, _options)[_options],
|
||||
guid: babelHelpers.classPrivateFieldLooseBase(this, _guid)[_guid],
|
||||
isSaving: false
|
||||
isProgress: false
|
||||
};
|
||||
}
|
||||
getGetters() {
|
||||
@@ -4361,9 +4372,9 @@ this.BX.UI.AccessRights = this.BX.UI.AccessRights || {};
|
||||
}
|
||||
getMutations() {
|
||||
return {
|
||||
setSaving: (state, isSaving) => {
|
||||
setProgress: (state, isProgress) => {
|
||||
// eslint-disable-next-line no-param-reassign
|
||||
state.isSaving = Boolean(isSaving);
|
||||
state.isProgress = Boolean(isProgress);
|
||||
}
|
||||
};
|
||||
}
|
||||
@@ -5236,7 +5247,7 @@ this.BX.UI.AccessRights = this.BX.UI.AccessRights || {};
|
||||
}
|
||||
// noinspection OverlyComplexFunctionJS
|
||||
transform(externalSource) {
|
||||
var _externalSource$addit, _externalSource$addit2, _externalSource$addit3, _externalSource$addit4, _externalSource$addit5, _externalSource$addit6;
|
||||
var _externalSource$addit, _externalSource$addit2, _externalSource$addit3, _externalSource$addit4, _externalSource$addit5, _externalSource$addit6, _externalSource$addit7, _externalSource$addit8;
|
||||
// freeze tells vue that we don't need reactivity on this state
|
||||
// and prevents accidental modification as well
|
||||
return babelHelpers.classPrivateFieldLooseBase(this, _deepFreeze)[_deepFreeze]({
|
||||
@@ -5251,11 +5262,13 @@ this.BX.UI.AccessRights = this.BX.UI.AccessRights || {};
|
||||
additionalMembersParams: main_core.Type.isPlainObject(externalSource.additionalMembersParams) ? {
|
||||
addUserGroupsProviderTab: Boolean((_externalSource$addit = (_externalSource$addit2 = externalSource.additionalMembersParams) == null ? void 0 : _externalSource$addit2.addUserGroupsProviderTab) != null ? _externalSource$addit : false),
|
||||
addProjectsProviderTab: Boolean((_externalSource$addit3 = (_externalSource$addit4 = externalSource.additionalMembersParams) == null ? void 0 : _externalSource$addit4.addProjectsProviderTab) != null ? _externalSource$addit3 : true),
|
||||
addStructureTeamsProviderTab: Boolean((_externalSource$addit5 = (_externalSource$addit6 = externalSource.additionalMembersParams) == null ? void 0 : _externalSource$addit6.addStructureTeamsProviderTab) != null ? _externalSource$addit5 : false)
|
||||
addStructureTeamsProviderTab: Boolean((_externalSource$addit5 = (_externalSource$addit6 = externalSource.additionalMembersParams) == null ? void 0 : _externalSource$addit6.addStructureTeamsProviderTab) != null ? _externalSource$addit5 : false),
|
||||
addStructureRolesProviderTab: Boolean((_externalSource$addit7 = (_externalSource$addit8 = externalSource.additionalMembersParams) == null ? void 0 : _externalSource$addit8.addStructureRolesProviderTab) != null ? _externalSource$addit7 : false)
|
||||
} : {
|
||||
addUserGroupsProviderTab: false,
|
||||
addProjectsProviderTab: true,
|
||||
addStructureTeamsProviderTab: false
|
||||
addStructureTeamsProviderTab: false,
|
||||
addStructureRolesProviderTab: false
|
||||
},
|
||||
isSaveAccessRightsList: main_core.Type.isBoolean(externalSource.isSaveAccessRightsList) ? externalSource.isSaveAccessRightsList : false
|
||||
});
|
||||
@@ -5431,6 +5444,7 @@ this.BX.UI.AccessRights = this.BX.UI.AccessRights || {};
|
||||
var _userGroupsModel = /*#__PURE__*/babelHelpers.classPrivateFieldLooseKey("userGroupsModel");
|
||||
var _accessRightsModel = /*#__PURE__*/babelHelpers.classPrivateFieldLooseKey("accessRightsModel");
|
||||
var _analyticsManager = /*#__PURE__*/babelHelpers.classPrivateFieldLooseKey("analyticsManager");
|
||||
var _confirmationPopup = /*#__PURE__*/babelHelpers.classPrivateFieldLooseKey("confirmationPopup");
|
||||
var _bindEvents = /*#__PURE__*/babelHelpers.classPrivateFieldLooseKey("bindEvents");
|
||||
var _unbindEvents = /*#__PURE__*/babelHelpers.classPrivateFieldLooseKey("unbindEvents");
|
||||
var _tryShowFeaturePromoter = /*#__PURE__*/babelHelpers.classPrivateFieldLooseKey("tryShowFeaturePromoter");
|
||||
@@ -5516,6 +5530,10 @@ this.BX.UI.AccessRights = this.BX.UI.AccessRights || {};
|
||||
writable: true,
|
||||
value: void 0
|
||||
});
|
||||
Object.defineProperty(this, _confirmationPopup, {
|
||||
writable: true,
|
||||
value: null
|
||||
});
|
||||
babelHelpers.classPrivateFieldLooseBase(this, _options$1)[_options$1] = options || {};
|
||||
babelHelpers.classPrivateFieldLooseBase(this, _renderTo)[_renderTo] = babelHelpers.classPrivateFieldLooseBase(this, _options$1)[_options$1].renderTo;
|
||||
babelHelpers.classPrivateFieldLooseBase(this, _buttonPanel)[_buttonPanel] = BX.UI.ButtonPanel || null;
|
||||
@@ -5548,12 +5566,11 @@ this.BX.UI.AccessRights = this.BX.UI.AccessRights || {};
|
||||
}
|
||||
sendActionRequest() {
|
||||
return new Promise((resolve, reject) => {
|
||||
if (babelHelpers.classPrivateFieldLooseBase(this, _store$1)[_store$1].state.application.isSaving || !babelHelpers.classPrivateFieldLooseBase(this, _store$1)[_store$1].getters['application/isModified']) {
|
||||
if (babelHelpers.classPrivateFieldLooseBase(this, _store$1)[_store$1].state.application.isProgress || !babelHelpers.classPrivateFieldLooseBase(this, _store$1)[_store$1].getters['application/isModified']) {
|
||||
resolve();
|
||||
return;
|
||||
}
|
||||
babelHelpers.classPrivateFieldLooseBase(this, _store$1)[_store$1].commit('application/setSaving', true);
|
||||
babelHelpers.classPrivateFieldLooseBase(this, _analyticsManager)[_analyticsManager].onSaveAttempt();
|
||||
babelHelpers.classPrivateFieldLooseBase(this, _store$1)[_store$1].commit('application/setProgress', true);
|
||||
babelHelpers.classPrivateFieldLooseBase(this, _runSaveAjaxRequest)[_runSaveAjaxRequest]().then(({
|
||||
userGroups,
|
||||
accessRights
|
||||
@@ -5590,7 +5607,7 @@ this.BX.UI.AccessRights = this.BX.UI.AccessRights || {};
|
||||
var _babelHelpers$classPr;
|
||||
const waitContainer = (_babelHelpers$classPr = babelHelpers.classPrivateFieldLooseBase(this, _buttonPanel)[_buttonPanel]) == null ? void 0 : _babelHelpers$classPr.getContainer().querySelector('.ui-btn-wait');
|
||||
main_core.Dom.removeClass(waitContainer, 'ui-btn-wait');
|
||||
babelHelpers.classPrivateFieldLooseBase(this, _store$1)[_store$1].commit('application/setSaving', false);
|
||||
babelHelpers.classPrivateFieldLooseBase(this, _store$1)[_store$1].commit('application/setProgress', false);
|
||||
resolve();
|
||||
});
|
||||
});
|
||||
@@ -5636,6 +5653,11 @@ this.BX.UI.AccessRights = this.BX.UI.AccessRights || {};
|
||||
babelHelpers.classPrivateFieldLooseBase(this, _buttonPanel)[_buttonPanel] = null;
|
||||
main_core.Dom.clean(babelHelpers.classPrivateFieldLooseBase(this, _renderTo)[_renderTo]);
|
||||
babelHelpers.classPrivateFieldLooseBase(this, _renderTo)[_renderTo] = null;
|
||||
if (babelHelpers.classPrivateFieldLooseBase(this, _confirmationPopup)[_confirmationPopup]) {
|
||||
babelHelpers.classPrivateFieldLooseBase(this, _confirmationPopup)[_confirmationPopup].close();
|
||||
babelHelpers.classPrivateFieldLooseBase(this, _confirmationPopup)[_confirmationPopup].getPopupWindow().destroy();
|
||||
babelHelpers.classPrivateFieldLooseBase(this, _confirmationPopup)[_confirmationPopup] = null;
|
||||
}
|
||||
}
|
||||
hasUnsavedChanges() {
|
||||
return !(!babelHelpers.classPrivateFieldLooseBase(this, _store$1)[_store$1].getters['application/isModified'] || babelHelpers.classPrivateFieldLooseBase(this, _isUserConfirmedClose)[_isUserConfirmedClose]);
|
||||
@@ -5739,7 +5761,10 @@ this.BX.UI.AccessRights = this.BX.UI.AccessRights || {};
|
||||
return;
|
||||
}
|
||||
sliderEvent.denyAction();
|
||||
const box = ui_dialogs_messagebox.MessageBox.create({
|
||||
if (babelHelpers.classPrivateFieldLooseBase(this, _confirmationPopup)[_confirmationPopup] && babelHelpers.classPrivateFieldLooseBase(this, _confirmationPopup)[_confirmationPopup].getPopupWindow().isShown()) {
|
||||
return;
|
||||
}
|
||||
babelHelpers.classPrivateFieldLooseBase(this, _confirmationPopup)[_confirmationPopup] = ui_dialogs_messagebox.MessageBox.create({
|
||||
mediumButtonSize: false,
|
||||
title: main_core.Loc.getMessage('JS_UI_ACCESSRIGHTS_V2_MODIFIED_CLOSE_WARNING_TITLE'),
|
||||
message: main_core.Loc.getMessage('JS_UI_ACCESSRIGHTS_V2_MODIFIED_CLOSE_WARNING'),
|
||||
@@ -5751,19 +5776,25 @@ this.BX.UI.AccessRights = this.BX.UI.AccessRights || {};
|
||||
onclick: () => {
|
||||
babelHelpers.classPrivateFieldLooseBase(this, _analyticsManager)[_analyticsManager].onCloseWithoutSave();
|
||||
babelHelpers.classPrivateFieldLooseBase(this, _isUserConfirmedClose)[_isUserConfirmedClose] = true;
|
||||
box.close();
|
||||
babelHelpers.classPrivateFieldLooseBase(this, _confirmationPopup)[_confirmationPopup].close();
|
||||
babelHelpers.classPrivateFieldLooseBase(this, _confirmationPopup)[_confirmationPopup] = null;
|
||||
setTimeout(() => {
|
||||
sliderEvent.getSlider().close();
|
||||
});
|
||||
}
|
||||
}), new ui_buttons.CancelButton({
|
||||
size: ui_buttons.ButtonSize.SMALL,
|
||||
text: main_core.Loc.getMessage('JS_UI_ACCESSRIGHTS_V2_CANCEL'),
|
||||
onclick: () => {
|
||||
box.close();
|
||||
babelHelpers.classPrivateFieldLooseBase(this, _confirmationPopup)[_confirmationPopup].close();
|
||||
babelHelpers.classPrivateFieldLooseBase(this, _confirmationPopup)[_confirmationPopup] = null;
|
||||
}
|
||||
})]
|
||||
})],
|
||||
popupOptions: {
|
||||
fixed: true
|
||||
}
|
||||
});
|
||||
box.show();
|
||||
babelHelpers.classPrivateFieldLooseBase(this, _confirmationPopup)[_confirmationPopup].show();
|
||||
}
|
||||
|
||||
exports.App = App;
|
||||
|
||||
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
@@ -7,6 +7,7 @@ $MESS["JS_UI_ACCESSRIGHTS_V2_ALL_ROLES"] = "Alle Rollen";
|
||||
$MESS["JS_UI_ACCESSRIGHTS_V2_ALL_SELECT_LABEL"] = "alle auswählen";
|
||||
$MESS["JS_UI_ACCESSRIGHTS_V2_APPLY_TO_ROLE"] = "In eine andere Rolle kopieren";
|
||||
$MESS["JS_UI_ACCESSRIGHTS_V2_APPLY_TO_ROLE_SUBTITLE"] = "Kopiert Zugriffsrechte von dieser Rolle in eine andere.";
|
||||
$MESS["JS_UI_ACCESSRIGHTS_V2_CANCEL"] = "Abbrechen";
|
||||
$MESS["JS_UI_ACCESSRIGHTS_V2_COLLAPSE_ALL_SECTIONS"] = "Alle Bereiche minimieren";
|
||||
$MESS["JS_UI_ACCESSRIGHTS_V2_COPIED_ROLE_NAME"] = "Kopie von #ORIGINAL#";
|
||||
$MESS["JS_UI_ACCESSRIGHTS_V2_COPY"] = "Kopieren";
|
||||
|
||||
@@ -7,6 +7,7 @@ $MESS["JS_UI_ACCESSRIGHTS_V2_ALL_ROLES"] = "All roles";
|
||||
$MESS["JS_UI_ACCESSRIGHTS_V2_ALL_SELECT_LABEL"] = "select all";
|
||||
$MESS["JS_UI_ACCESSRIGHTS_V2_APPLY_TO_ROLE"] = "Copy to existing role";
|
||||
$MESS["JS_UI_ACCESSRIGHTS_V2_APPLY_TO_ROLE_SUBTITLE"] = "Copies access permissions from this role to another one.";
|
||||
$MESS["JS_UI_ACCESSRIGHTS_V2_CANCEL"] = "Cancel";
|
||||
$MESS["JS_UI_ACCESSRIGHTS_V2_COLLAPSE_ALL_SECTIONS"] = "Collapse all sections";
|
||||
$MESS["JS_UI_ACCESSRIGHTS_V2_COPIED_ROLE_NAME"] = "Copy of #ORIGINAL#";
|
||||
$MESS["JS_UI_ACCESSRIGHTS_V2_COPY"] = "Clone";
|
||||
|
||||
@@ -7,6 +7,7 @@ $MESS["JS_UI_ACCESSRIGHTS_V2_ALL_ROLES"] = "Барлық рөлдер";
|
||||
$MESS["JS_UI_ACCESSRIGHTS_V2_ALL_SELECT_LABEL"] = "барлығын таңдаңыз";
|
||||
$MESS["JS_UI_ACCESSRIGHTS_V2_APPLY_TO_ROLE"] = "Басқа рөлге көшіру";
|
||||
$MESS["JS_UI_ACCESSRIGHTS_V2_APPLY_TO_ROLE_SUBTITLE"] = "Орнатылған қолжетімділік құқықтары басқа рөлге көшіріледі.";
|
||||
$MESS["JS_UI_ACCESSRIGHTS_V2_CANCEL"] = "Болдырмау";
|
||||
$MESS["JS_UI_ACCESSRIGHTS_V2_COLLAPSE_ALL_SECTIONS"] = "Барлық бөлімдерді орау";
|
||||
$MESS["JS_UI_ACCESSRIGHTS_V2_COPIED_ROLE_NAME"] = "#ORIGINAL# көшірмесі";
|
||||
$MESS["JS_UI_ACCESSRIGHTS_V2_COPY"] = "Көшіру";
|
||||
@@ -40,10 +41,8 @@ $MESS["JS_UI_ACCESSRIGHTS_V2_ROLE_COUNTER"] = " #ALL_ROLES##GREY_FINISH# -дан
|
||||
$MESS["JS_UI_ACCESSRIGHTS_V2_ROLE_NAME"] = "Рөл атауы";
|
||||
$MESS["JS_UI_ACCESSRIGHTS_V2_ROLE_SELECTOR_MAX_VISIBLE_WARNING"] = "Кіру құқығында бір уақытта #COUNT# рөл көрсетілуі мүмкін";
|
||||
$MESS["JS_UI_ACCESSRIGHTS_V2_ROLE_VIEW"] = "Рөлдерді көрсету";
|
||||
$MESS["JS_UI_ACCESSRIGHTS_V2_ROLE_VIEW_SUBTITLE"] = "Маңызды емес рөлдер жасырылады";
|
||||
$MESS["JS_UI_ACCESSRIGHTS_V2_ROLE_VIEW_SUBTITLE_MSGVER_1"] = "Қандай рөлдерді көрсету немесе жасыру керектігін таңдаңыз.";
|
||||
$MESS["JS_UI_ACCESSRIGHTS_V2_SEARCH_PLACEHOLDER"] = "Іздеу";
|
||||
$MESS["JS_UI_ACCESSRIGHTS_V2_SEARCH_PLACEHOLDER_1"] = "элемент немесе ереже атауы бойынша іздеу";
|
||||
$MESS["JS_UI_ACCESSRIGHTS_V2_SELECTED_ITEMS_TITLE"] = "Таңдалған:";
|
||||
$MESS["JS_UI_ACCESSRIGHTS_V2_SETTINGS_HAVE_BEEN_SAVED"] = "Баптаулар сақталды";
|
||||
$MESS["JS_UI_ACCESSRIGHTS_V2_SET_MAX_ACCESS_RIGHTS"] = "Барлығына қолжетімділікті ашыңыз";
|
||||
|
||||
@@ -56,3 +56,4 @@ $MESS["JS_UI_ACCESSRIGHTS_V2_SET_MIN_ACCESS_RIGHTS_ROW_SUBTITLE"] = "Досту
|
||||
$MESS["JS_UI_ACCESSRIGHTS_V2_ACTIONS"] = "Действия";
|
||||
$MESS['JS_UI_ACCESSRIGHTS_V2_EXPAND_ALL_SECTIONS'] = 'Развернуть все разделы';
|
||||
$MESS['JS_UI_ACCESSRIGHTS_V2_COLLAPSE_ALL_SECTIONS'] = 'Свернуть все разделы';
|
||||
$MESS["JS_UI_ACCESSRIGHTS_V2_CANCEL"] = "Отмена";
|
||||
|
||||
@@ -8,6 +8,7 @@ import { Grid } from './components/grid';
|
||||
import 'ui.notification';
|
||||
import { AnalyticsManager } from './integration/analytics-manager';
|
||||
import { createStore } from './store/index';
|
||||
import type { AccessRightsModel } from './store/model/access-rights-model';
|
||||
import type { Options } from './store/model/application-model';
|
||||
import { AccessRightsExporter } from './store/model/transformation/backend-exporter/access-rights-exporter';
|
||||
import { AllUserGroupsExporter } from './store/model/transformation/backend-exporter/user-groups/all-user-groups-exporter';
|
||||
@@ -19,7 +20,6 @@ import type { ExternalUserGroup } from './store/model/transformation/internalize
|
||||
import { UserGroupsInternalizer } from './store/model/transformation/internalizer/user-groups-internalizer';
|
||||
import { ShownUserGroupsCopier } from './store/model/transformation/shown-user-groups-copier';
|
||||
import type { UserGroupsCollection, UserGroupsModel } from './store/model/user-groups-model';
|
||||
import type { AccessRightsModel } from './store/model/access-rights-model';
|
||||
|
||||
export type AppConstructOptions = Options & {
|
||||
renderTo: HTMLElement;
|
||||
@@ -51,6 +51,7 @@ export class App
|
||||
#userGroupsModel: UserGroupsModel;
|
||||
#accessRightsModel: AccessRightsModel;
|
||||
#analyticsManager: AnalyticsManager;
|
||||
#confirmationPopup: MessageBox | null = null;
|
||||
|
||||
constructor(options: AppConstructOptions)
|
||||
{
|
||||
@@ -155,16 +156,14 @@ export class App
|
||||
sendActionRequest(): Promise
|
||||
{
|
||||
return new Promise((resolve, reject) => {
|
||||
if (this.#store.state.application.isSaving || !this.#store.getters['application/isModified'])
|
||||
if (this.#store.state.application.isProgress || !this.#store.getters['application/isModified'])
|
||||
{
|
||||
resolve();
|
||||
|
||||
return;
|
||||
}
|
||||
|
||||
this.#store.commit('application/setSaving', true);
|
||||
|
||||
this.#analyticsManager.onSaveAttempt();
|
||||
this.#store.commit('application/setProgress', true);
|
||||
|
||||
this.#runSaveAjaxRequest()
|
||||
.then(({ userGroups, accessRights }) => {
|
||||
@@ -203,7 +202,7 @@ export class App
|
||||
.finally(() => {
|
||||
const waitContainer = this.#buttonPanel?.getContainer().querySelector('.ui-btn-wait');
|
||||
Dom.removeClass(waitContainer, 'ui-btn-wait');
|
||||
this.#store.commit('application/setSaving', false);
|
||||
this.#store.commit('application/setProgress', false);
|
||||
|
||||
resolve();
|
||||
});
|
||||
@@ -287,7 +286,12 @@ export class App
|
||||
|
||||
sliderEvent.denyAction();
|
||||
|
||||
const box = MessageBox.create({
|
||||
if (this.#confirmationPopup && this.#confirmationPopup.getPopupWindow().isShown())
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
this.#confirmationPopup = MessageBox.create({
|
||||
mediumButtonSize: false,
|
||||
title: Loc.getMessage('JS_UI_ACCESSRIGHTS_V2_MODIFIED_CLOSE_WARNING_TITLE'),
|
||||
message: Loc.getMessage('JS_UI_ACCESSRIGHTS_V2_MODIFIED_CLOSE_WARNING'),
|
||||
@@ -300,7 +304,8 @@ export class App
|
||||
onclick: () => {
|
||||
this.#analyticsManager.onCloseWithoutSave();
|
||||
this.#isUserConfirmedClose = true;
|
||||
box.close();
|
||||
this.#confirmationPopup.close();
|
||||
this.#confirmationPopup = null;
|
||||
|
||||
setTimeout(() => {
|
||||
sliderEvent.getSlider().close();
|
||||
@@ -309,14 +314,19 @@ export class App
|
||||
}),
|
||||
new CancelButton({
|
||||
size: ButtonSize.SMALL,
|
||||
text: Loc.getMessage('JS_UI_ACCESSRIGHTS_V2_CANCEL'),
|
||||
onclick: () => {
|
||||
box.close();
|
||||
this.#confirmationPopup.close();
|
||||
this.#confirmationPopup = null;
|
||||
},
|
||||
}),
|
||||
],
|
||||
popupOptions: {
|
||||
fixed: true,
|
||||
},
|
||||
});
|
||||
|
||||
box.show();
|
||||
this.#confirmationPopup.show();
|
||||
}
|
||||
|
||||
draw(): void
|
||||
@@ -377,6 +387,13 @@ export class App
|
||||
|
||||
Dom.clean(this.#renderTo);
|
||||
this.#renderTo = null;
|
||||
|
||||
if (this.#confirmationPopup)
|
||||
{
|
||||
this.#confirmationPopup.close();
|
||||
this.#confirmationPopup.getPopupWindow().destroy();
|
||||
this.#confirmationPopup = null;
|
||||
}
|
||||
}
|
||||
|
||||
hasUnsavedChanges(): boolean
|
||||
|
||||
@@ -12,7 +12,7 @@ export const Grid = {
|
||||
loader: null,
|
||||
computed: {
|
||||
...mapState({
|
||||
isSaving: (state) => state.application.isSaving,
|
||||
isProgress: (state) => state.application.isProgress,
|
||||
guid: (state) => state.application.guid,
|
||||
searchContainerSelector: (state) => state.application.options.searchContainerSelector,
|
||||
}),
|
||||
@@ -109,7 +109,7 @@ export const Grid = {
|
||||
<SearchBox/>
|
||||
</Teleport>
|
||||
<div ref="container" class='ui-access-rights-v2' :class="{
|
||||
'ui-access-rights-v2-block': isSaving,
|
||||
'ui-access-rights-v2-block': isProgress,
|
||||
}">
|
||||
<Header :user-groups="shownUserGroups"/>
|
||||
<Section
|
||||
|
||||
@@ -1,3 +1,4 @@
|
||||
import { Extension } from 'main.core';
|
||||
import type { MemberCollection } from '../../store/model/user-groups-model';
|
||||
import { Selector } from './members/selector';
|
||||
import { SingleMember } from './members/single-member';
|
||||
@@ -62,7 +63,7 @@ export const Members = {
|
||||
'--has-siblings': userGroup.members.size > 0,
|
||||
}"
|
||||
>
|
||||
<div class="ui-icon-set --plus-30"></div>
|
||||
<div class="ui-icon-set --plus-m"></div>
|
||||
</div>
|
||||
<Selector
|
||||
v-if="isSelectorShown"
|
||||
|
||||
@@ -32,6 +32,7 @@ export const Selector = {
|
||||
addUserGroupsProviderTab: (state) => state.application.options.additionalMembersParams.addUserGroupsProviderTab,
|
||||
addProjectsProviderTab: (state) => state.application.options.additionalMembersParams.addProjectsProviderTab,
|
||||
addStructureTeamsProviderTab: (state) => state.application.options.additionalMembersParams.addStructureTeamsProviderTab,
|
||||
addStructureRolesProviderTab: (state) => state.application.options.additionalMembersParams.addStructureRolesProviderTab,
|
||||
}),
|
||||
},
|
||||
mounted()
|
||||
@@ -90,6 +91,11 @@ export const Selector = {
|
||||
return ['site-groups', groupId];
|
||||
}
|
||||
|
||||
if (/^(?:ATD|ATE|ATT|AD|AE|AT)[1-9]\d*$/.test(accessCode))
|
||||
{
|
||||
return ['structure-role', accessCode];
|
||||
}
|
||||
|
||||
if (accessCode.at(0) === 'A')
|
||||
{
|
||||
return ['user-groups', accessCode];
|
||||
@@ -192,6 +198,11 @@ export const Selector = {
|
||||
return item.id;
|
||||
}
|
||||
|
||||
if (entityId === 'structure-role')
|
||||
{
|
||||
return item.id;
|
||||
}
|
||||
|
||||
if (entityId === 'project-access-codes')
|
||||
{
|
||||
return item.id;
|
||||
@@ -216,6 +227,7 @@ export const Selector = {
|
||||
return 'structureteams';
|
||||
case 'site-groups':
|
||||
case 'user-groups':
|
||||
case 'structure-role':
|
||||
return 'usergroups';
|
||||
default:
|
||||
return '';
|
||||
@@ -247,15 +259,27 @@ export const Selector = {
|
||||
},
|
||||
];
|
||||
|
||||
if (this.addStructureRolesProviderTab)
|
||||
{
|
||||
entities.push({
|
||||
id: 'structure-role',
|
||||
options: {
|
||||
includedNodeEntityTypes: ['team', 'department'],
|
||||
},
|
||||
dynamicLoad: true,
|
||||
dynamicSearch: true,
|
||||
});
|
||||
}
|
||||
|
||||
if (this.addStructureTeamsProviderTab)
|
||||
{
|
||||
entities.push({
|
||||
id: 'structure-node',
|
||||
options: {
|
||||
selectMode: 'usersAndDepartments',
|
||||
includedNodeEntityTypes: ['team'],
|
||||
allowSelectRootDepartment: true,
|
||||
allowFlatDepartments: true,
|
||||
includedNodeEntityTypes: ['team'],
|
||||
useMultipleTabs: true,
|
||||
visual: {
|
||||
avatarMode: 'node',
|
||||
|
||||
@@ -23,7 +23,7 @@ export const RoleHeading = {
|
||||
computed: {
|
||||
RichMenuItemIcon: () => RichMenuItemIcon,
|
||||
...mapState({
|
||||
isSaving: (state) => state.application.isSaving,
|
||||
isProgress: (state) => state.application.isProgress,
|
||||
guid: (state) => state.application.guid,
|
||||
maxVisibleUserGroups: (state) => state.application.options.maxVisibleUserGroups,
|
||||
}),
|
||||
@@ -122,6 +122,7 @@ export const RoleHeading = {
|
||||
},
|
||||
}),
|
||||
new CancelButton({
|
||||
text: this.$Bitrix.Loc.getMessage('JS_UI_ACCESSRIGHTS_V2_CANCEL'),
|
||||
size: ButtonSize.SMALL,
|
||||
events: {
|
||||
click: () => {
|
||||
@@ -135,7 +136,7 @@ export const RoleHeading = {
|
||||
popup.show();
|
||||
},
|
||||
showActionsMenu(): void {
|
||||
if (!this.isSaving)
|
||||
if (!this.isProgress)
|
||||
{
|
||||
this.isPopupShown = true;
|
||||
}
|
||||
@@ -179,7 +180,7 @@ export const RoleHeading = {
|
||||
<div ref="container" class='ui-access-rights-v2-role'>
|
||||
<div class="ui-access-rights-v2-role-value-container">
|
||||
<input
|
||||
v-if="isEdit && !isSaving"
|
||||
v-if="isEdit && !isProgress"
|
||||
ref="input"
|
||||
type='text'
|
||||
class='ui-access-rights-v2-role-input'
|
||||
@@ -191,7 +192,8 @@ export const RoleHeading = {
|
||||
</div>
|
||||
<div
|
||||
ref="menu"
|
||||
class="ui-icon-set --more ui-access-rights-v2-icon-more"
|
||||
class="ui-icon-set --more-l ui-access-rights-v2-icon-more"
|
||||
style="position: absolute; right: 11px; top: 5px;"
|
||||
@click="showActionsMenu"
|
||||
>
|
||||
<RichMenuPopup v-if="isPopupShown" @close="isPopupShown = false" :popup-options="{bindElement: $refs.menu}">
|
||||
|
||||
@@ -169,7 +169,8 @@ export const RolesControl = {
|
||||
<div>{{ $Bitrix.Loc.getMessage('JS_UI_ACCESSRIGHTS_V2_ROLES') }}</div>
|
||||
<div
|
||||
ref="configure"
|
||||
class="ui-icon-set --more ui-access-rights-v2-icon-more"
|
||||
class="ui-icon-set --more-l ui-access-rights-v2-icon-more"
|
||||
style="position: absolute; right: 11px; top: 5px;"
|
||||
@click="isPopupShown = true"
|
||||
>
|
||||
<RichMenuPopup v-if="isPopupShown" @close="isPopupShown = false" :popup-options="{bindElement: $refs.configure}">
|
||||
@@ -216,21 +217,25 @@ export const RolesControl = {
|
||||
class="ui-access-rights-v2-header-roles-control-counter"
|
||||
@click="toggleViewDialog($refs.counter)"
|
||||
>
|
||||
<div class="ui-icon-set --opened-eye" style="--ui-icon-set__icon-size: 15px;"></div>
|
||||
<div class="ui-icon-set --o-observer" style="--ui-icon-set__icon-size: 18px;"></div>
|
||||
<span v-html="shownGroupsCounter"></span>
|
||||
<div class="ui-icon-set --chevron-down ui-access-rights-v2-header-roles-control-chevron"></div>
|
||||
</div>
|
||||
<div class="ui-access-rights-v2-header-roles-control-expander">
|
||||
<div
|
||||
class="ui-icon-set --collapse"
|
||||
:title="$Bitrix.Loc.getMessage('JS_UI_ACCESSRIGHTS_V2_COLLAPSE_ALL_SECTIONS')"
|
||||
@click="$store.dispatch('accessRights/collapseAllSections')"
|
||||
></div>
|
||||
<div
|
||||
class="ui-icon-set --expand-1"
|
||||
:title="$Bitrix.Loc.getMessage('JS_UI_ACCESSRIGHTS_V2_EXPAND_ALL_SECTIONS')"
|
||||
@click="$store.dispatch('accessRights/expandAllSections')"
|
||||
></div>
|
||||
<div class="ui-access-rights-v2-header-roles-control-expander-button">
|
||||
<div
|
||||
class="ui-icon-set --collapse"
|
||||
:title="$Bitrix.Loc.getMessage('JS_UI_ACCESSRIGHTS_V2_COLLAPSE_ALL_SECTIONS')"
|
||||
@click="$store.dispatch('accessRights/collapseAllSections')"
|
||||
></div>
|
||||
</div>
|
||||
<div class="ui-access-rights-v2-header-roles-control-expander-button">
|
||||
<div
|
||||
class="ui-icon-set --expand-1"
|
||||
:title="$Bitrix.Loc.getMessage('JS_UI_ACCESSRIGHTS_V2_EXPAND_ALL_SECTIONS')"
|
||||
@click="$store.dispatch('accessRights/expandAllSections')"
|
||||
></div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</CellLayout>
|
||||
|
||||
@@ -22,14 +22,19 @@ export const SearchBox = {
|
||||
},
|
||||
},
|
||||
template: `
|
||||
<div class="ui-ctl ui-ctl-after-icon ui-ctl-w100 ui-access-rights-v2-search">
|
||||
<div
|
||||
class="ui-ctl ui-ctl-after-icon ui-access-rights-v2-search">
|
||||
<input
|
||||
type="text"
|
||||
class="ui-ctl-element ui-ctl-textbox ui-access-rights-v2-search-input"
|
||||
:placeholder="$Bitrix.Loc.getMessage('JS_UI_ACCESSRIGHTS_V2_SEARCH_PLACEHOLDER')"
|
||||
v-model="searchQuery"
|
||||
ref="searchInput"
|
||||
>
|
||||
<a class="ui-ctl-after ui-ctl-icon-search ui-access-rights-v2-search-icon"></a>
|
||||
<a
|
||||
class="ui-icon-set --o-search ui-access-rights-v2-search-icon"
|
||||
@click="this.$refs.searchInput.focus()"
|
||||
></a>
|
||||
</div>
|
||||
`,
|
||||
};
|
||||
|
||||
@@ -106,7 +106,7 @@ export const MenuCell = {
|
||||
<CellLayout class="ui-access-rights-v2-menu-cell" style="cursor: pointer" @click="toggleMenu">
|
||||
<div
|
||||
ref="icon"
|
||||
class="ui-icon-set --more ui-access-rights-v2-icon-more"
|
||||
class="ui-icon-set --more-l ui-access-rights-v2-icon-more"
|
||||
>
|
||||
<RichMenuPopup
|
||||
v-if="isMenuShown"
|
||||
|
||||
@@ -129,8 +129,8 @@ export const TitleCell = {
|
||||
v-if="right.groupHead"
|
||||
class="ui-icon-set"
|
||||
:class="{
|
||||
'--minus-in-circle': right.isGroupExpanded,
|
||||
'--plus-in-circle': !right.isGroupExpanded,
|
||||
'--o-circle-minus': right.isGroupExpanded,
|
||||
'--o-circle-plus': !right.isGroupExpanded,
|
||||
}"
|
||||
></span>
|
||||
<div
|
||||
@@ -144,15 +144,13 @@ export const TitleCell = {
|
||||
class="ui-access-rights-v2-column-item-title-link ui-access-rights-v2-text-ellipsis"
|
||||
@click="onRightClick"
|
||||
>
|
||||
{{ right.title }}
|
||||
<Hint v-once v-if="right.hint" :html="right.hint"/>
|
||||
{{ right.title }}<Hint v-once v-if="right.hint" :html="right.hint"/>
|
||||
</span>
|
||||
<span
|
||||
v-else
|
||||
class="ui-access-rights-v2-text-wrap"
|
||||
>
|
||||
{{ right.title }}
|
||||
<Hint v-once v-if="right.hint" :html="right.hint"/>
|
||||
{{ right.title }}<Hint v-once v-if="right.hint" :html="right.hint"/>
|
||||
</span>
|
||||
<span
|
||||
v-if="right.subtitle"
|
||||
@@ -162,7 +160,7 @@ export const TitleCell = {
|
||||
</div>
|
||||
<div
|
||||
ref="icon"
|
||||
class="ui-icon-set --more ui-access-rights-v2-icon-more ui-access-rights-v2-title-column-menu"
|
||||
class="ui-icon-set --more-l ui-access-rights-v2-icon-more ui-access-rights-v2-title-column-menu"
|
||||
@click="toggleMenu"
|
||||
>
|
||||
<RichMenuPopup
|
||||
|
||||
@@ -47,6 +47,7 @@ export const ValuePopup = {
|
||||
onclick: () => {
|
||||
this.$emit('close');
|
||||
},
|
||||
text: this.$Bitrix.Loc.getMessage('JS_UI_ACCESSRIGHTS_V2_CANCEL'),
|
||||
});
|
||||
cancelButton.renderTo(this.$refs['button-container']);
|
||||
});
|
||||
|
||||
@@ -24,10 +24,18 @@
|
||||
align-items: center;
|
||||
cursor: pointer;
|
||||
font-size: var(--ui-font-size-sm);
|
||||
border: 1px solid var(--design-outline-default-design-outline-stroke, var(--ui-color-base-7));
|
||||
border-radius: var(--ui-border-radius-pill);
|
||||
box-shadow: var(--ui-shadow-bottom-s);
|
||||
padding: 5px 10px 5px 10px;
|
||||
border: var(--ui-border-width-thin) solid rgba(var(--ui-color-palette-black-solid-rgb), 0.07)
|
||||
}
|
||||
|
||||
.ui-access-rights-v2-header-roles-control-counter:hover {
|
||||
background-color: var(--ui-color-base-7);
|
||||
}
|
||||
|
||||
.ui-access-rights-v2-header-roles-control-counter .ui-icon-set {
|
||||
--ui-icon-set__icon-color: var(--ui-color-accent-main-primary);
|
||||
margin-right: 2px;
|
||||
}
|
||||
|
||||
.ui-access-rights-v2-header-roles-control-chevron {
|
||||
@@ -46,3 +54,24 @@
|
||||
opacity: var(--ui-opacity-60);
|
||||
cursor: pointer;
|
||||
}
|
||||
|
||||
.ui-access-rights-v2-header-roles-control-expander-button {
|
||||
height: 24px;
|
||||
width: 24px;
|
||||
border: 1px solid var(--design-outline-default-design-outline-stroke, var(--ui-color-base-7));
|
||||
border-radius: var(--ui-border-radius-xs);
|
||||
|
||||
display: flex;
|
||||
justify-content: center;
|
||||
align-items: center;
|
||||
|
||||
margin-left: 4px;
|
||||
}
|
||||
|
||||
.ui-access-rights-v2-header-roles-control-expander-button:hover {
|
||||
background-color: var(--ui-color-base-7);
|
||||
}
|
||||
|
||||
.ui-access-rights-v2-header-roles-control-expander-button .ui-icon-set {
|
||||
--ui-icon-set__icon-size: 18px;
|
||||
}
|
||||
|
||||
@@ -22,23 +22,22 @@
|
||||
.ui-access-rights-v2-section-header-expander {
|
||||
width: 18px;
|
||||
height: 18px;
|
||||
background-color: var(--ui-color-palette-white-base);
|
||||
border: 1px solid var(--ui-color-base-7);
|
||||
border-radius: var(--ui-border-radius-circle);
|
||||
box-shadow: var(--ui-shadow-bottom-s);
|
||||
display: flex;
|
||||
align-items: center;
|
||||
justify-content: center;
|
||||
margin-right: 9px;
|
||||
background-color: var(--ui-color-bg-content-primary);
|
||||
}
|
||||
|
||||
.ui-access-rights-v2-section-header-expander:hover {
|
||||
background-color: var(--ui-color-base-7);
|
||||
}
|
||||
|
||||
.ui-access-rights-v2-section-header-expander .ui-icon-set {
|
||||
--ui-icon-set__icon-size: 12px;
|
||||
--ui-icon-set__icon-color: var(--ui-color-palette-gray-40);
|
||||
}
|
||||
|
||||
.ui-access-rights-v2-section-header.--expanded .ui-access-rights-v2-section-header-expander .ui-icon-set {
|
||||
--ui-icon-set__icon-size: 12px;
|
||||
--ui-icon-set__icon-color: var(--ui-color-palette-black-base);
|
||||
--ui-icon-set__icon-color: var(--ui-color-accent-main-primary);
|
||||
}
|
||||
|
||||
.ui-access-rights-v2-section-header-icon {
|
||||
@@ -55,16 +54,16 @@
|
||||
}
|
||||
|
||||
.ui-access-rights-v2-section-title {
|
||||
color: var(--ui-color-palette-gray-80);
|
||||
color: var(--ui-color-palette-gray-90);
|
||||
max-width: 70%;
|
||||
}
|
||||
|
||||
.ui-access-rights-v2-section-header.--expanded .ui-access-rights-v2-section-title {
|
||||
color: var(--ui-color-palette-black-base);
|
||||
color: var(--ui-color-palette-gray-90);
|
||||
}
|
||||
|
||||
.ui-access-rights-v2-section-subtitle {
|
||||
color: var(--ui-color-palette-gray-70);
|
||||
color: var(--ui-color-palette-gray-90);
|
||||
margin-left: 3px;
|
||||
max-width: 200px;
|
||||
}
|
||||
|
||||
@@ -1,6 +1,11 @@
|
||||
.ui-access-rights-v2 {
|
||||
}
|
||||
|
||||
.ui-access-rights-v2-section:last-child .ui-access-rights-v2-section-container {
|
||||
border-bottom-left-radius: var(--ui-border-radius-xl);
|
||||
border-bottom-right-radius: var(--ui-border-radius-xl);
|
||||
}
|
||||
|
||||
.ui-access-rights-v2-block {
|
||||
position: relative;
|
||||
pointer-events: none;
|
||||
@@ -29,6 +34,14 @@
|
||||
font-size: var(--ui-font-size-lg);
|
||||
}
|
||||
|
||||
.ui-access-rights-v2--head-section::before {
|
||||
content: "";
|
||||
position: absolute;
|
||||
inset: 0;
|
||||
background: var(--ui-color-gray-05) ;
|
||||
z-index: -1;
|
||||
}
|
||||
|
||||
.ui-access-rights-v2--head-section .ui-access-rights-v2-column-item-text {
|
||||
font-size: var(--ui-font-size-lg);
|
||||
}
|
||||
@@ -44,8 +57,8 @@
|
||||
|
||||
.ui-access-rights-v2--head-section .ui-access-rights-v2-section-container {
|
||||
height: 82px;
|
||||
border-top-right-radius: var(--ui-border-radius-xs);
|
||||
border-top-left-radius: var(--ui-border-radius-xs);
|
||||
border-top-right-radius: var(--ui-border-radius-xl);
|
||||
border-top-left-radius: var(--ui-border-radius-xl);
|
||||
}
|
||||
|
||||
.ui-access-rights-v2-section-head {
|
||||
@@ -173,7 +186,7 @@
|
||||
text-overflow: ellipsis;
|
||||
white-space: nowrap;
|
||||
font-size: var(--ui-font-size-sm);
|
||||
color: var(--ui-color-palette-black-base);
|
||||
color: var(--ui-color-base-90);
|
||||
line-height: var(--ui-font-line-height-2xs);
|
||||
cursor: default;
|
||||
}
|
||||
@@ -187,6 +200,8 @@
|
||||
.ui-access-rights-v2-column-item-title-block {
|
||||
display: flex;
|
||||
flex-direction: column;
|
||||
flex: 1;
|
||||
min-width: 0;
|
||||
}
|
||||
|
||||
.ui-access-rights-v2-column-item-title-icon {
|
||||
@@ -205,8 +220,8 @@
|
||||
color: var(--ui-color-palette-gray-90);
|
||||
}
|
||||
|
||||
.ui-access-rights-v2-column-item-title .--plus-in-circle, .ui-access-rights-v2-column-item-title .--minus-in-circle {
|
||||
--ui-icon-set__icon-color: var(--ui-color-palette-gray-50);
|
||||
.ui-access-rights-v2-column-item-title .--o-circle-plus, .ui-access-rights-v2-column-item-title .--o-circle-minus {
|
||||
--ui-icon-set__icon-color: var(--ui-color-palette-gray-30);
|
||||
--ui-icon-set__icon-size: 18px;
|
||||
margin-right: 5px;
|
||||
}
|
||||
@@ -216,14 +231,25 @@
|
||||
}
|
||||
|
||||
.ui-access-rights-v2-column-item-title .ui-access-rights-v2-hint-container {
|
||||
display: inline;
|
||||
vertical-align: middle;
|
||||
position: relative;
|
||||
top: 2px;
|
||||
top: 1px;
|
||||
white-space: nowrap;
|
||||
}
|
||||
|
||||
.ui-access-rights-v2-hint-container::before {
|
||||
content: "\00a0";
|
||||
}
|
||||
|
||||
.ui-access-rights-v2-column-item-title .ui-hint {
|
||||
line-height: normal;
|
||||
width: 13px;
|
||||
height: 13px;
|
||||
width: 16px;
|
||||
height: 16px;
|
||||
}
|
||||
|
||||
.ui-access-rights-v2-hint-container .ui-icon-set {
|
||||
--ui-icon-set__icon-size: 16px;
|
||||
}
|
||||
|
||||
.ui-access-rights-v2-column-item-title .ui-hint-icon {
|
||||
@@ -248,7 +274,7 @@
|
||||
}
|
||||
|
||||
.ui-access-rights-v2-header-role-cell {
|
||||
padding: 10px;
|
||||
padding: 16px 10px 10px 10px;
|
||||
height: calc(100% - 20px);
|
||||
display: flex;
|
||||
flex-direction: column;
|
||||
@@ -268,13 +294,15 @@
|
||||
display: flex;
|
||||
justify-content: center;
|
||||
align-items: center;
|
||||
margin-right: -16px; /* because of menu */
|
||||
}
|
||||
|
||||
.ui-access-rights-v2-role-input,
|
||||
.ui-access-rights-v2-role-value {
|
||||
font-size: var(--ui-font-size-lg);
|
||||
line-height: var(--ui-font-line-height-3xs);
|
||||
color: var(--ui-color-gray-90);
|
||||
font-weight: var(--ui-font-weight-normal);
|
||||
line-height: 20px;
|
||||
|
||||
overflow: hidden;
|
||||
text-overflow: ellipsis;
|
||||
white-space: nowrap;
|
||||
@@ -305,11 +333,14 @@
|
||||
.ui-access-rights-v2-members {
|
||||
display: flex;
|
||||
align-items: center;
|
||||
border: var(--ui-border-width-thin) solid #525C6929;
|
||||
border-radius: var(--ui-border-radius-pill);
|
||||
padding: 4px;
|
||||
}
|
||||
|
||||
.ui-access-rights-v2-members-air-template {
|
||||
border: none;
|
||||
}
|
||||
|
||||
.ui-access-rights-v2-members-item {
|
||||
display: inline-block;
|
||||
margin-left: -9px;
|
||||
@@ -327,15 +358,18 @@
|
||||
.ui-access-rights-v2-members-item-add {
|
||||
height: 24px;
|
||||
width: 24px;
|
||||
border: none;
|
||||
background: #fff;
|
||||
box-shadow: 0 2px 4px 0 rgba(0,0,0,.14);
|
||||
border-radius: 100%;
|
||||
cursor: pointer;
|
||||
border: 1px solid var(--ui-color-base-7)
|
||||
}
|
||||
|
||||
.ui-access-rights-v2-members-item-add:hover {
|
||||
background-color: var(--ui-color-base-7);
|
||||
}
|
||||
|
||||
.ui-access-rights-v2-members-item-add .ui-icon-set {
|
||||
--ui-icon-set__icon-color: var(--ui-color-palette-blue-50);
|
||||
--ui-icon-set__icon-color: var(--ui-color-accent-main-primary);
|
||||
}
|
||||
|
||||
.ui-access-rights-v2-members-item-add:hover .ui-icon-set {
|
||||
@@ -437,6 +471,12 @@ div.ui-access-rights-v2-members-item-new:last-of-type {
|
||||
overflow: visible;
|
||||
text-overflow: clip;
|
||||
word-break: break-word;
|
||||
|
||||
width: 100%;
|
||||
justify-content: space-between;
|
||||
|
||||
font-weight: 400;
|
||||
font-size: var(--ui-font-size-sm);
|
||||
}
|
||||
|
||||
.ui-access-rights-v2-text-center {
|
||||
@@ -455,13 +495,23 @@ div.ui-access-rights-v2-members-item-new:last-of-type {
|
||||
|
||||
.ui-access-rights-v2-icon-more {
|
||||
--ui-icon-set__icon-size: 16px;
|
||||
--ui-icon-set__icon-color: var(--ui-color-base-5);
|
||||
opacity: var(--ui-opacity-40);
|
||||
cursor: pointer;
|
||||
}
|
||||
|
||||
.ui-access-rights-v2-search {
|
||||
max-width: 290px;
|
||||
--ui-field-size: 34px
|
||||
}
|
||||
|
||||
.ui-access-rights-v2-search-input {
|
||||
background-color: #F6F7F9;
|
||||
border: none;
|
||||
border-radius: var(--ui-border-radius-sm);
|
||||
border: 1px solid var(--ui-color-bg-content-primary);
|
||||
}
|
||||
|
||||
.ui-access-rights-v2-search .ui-ctl-element:hover, .ui-access-rights-v2-search .ui-ctl-element:focus {
|
||||
border-color: var(--ui-color-bg-content-primary);
|
||||
}
|
||||
|
||||
.ui-access-rights-v2-search-input:focus {
|
||||
@@ -485,8 +535,7 @@ div.ui-access-rights-v2-members-item-new:last-of-type {
|
||||
}
|
||||
|
||||
.ui-access-rights-v2-header-role-add .ui-btn:hover:not(.ui-btn-disabled) {
|
||||
border-color: var(--ui-color-palette-blue-30);
|
||||
background: unset;
|
||||
background-color: var(--ui-color-base-7);
|
||||
}
|
||||
|
||||
.ui-access-rights-v2-header-role-add .ui-btn.ui-btn-disabled {
|
||||
@@ -495,4 +544,17 @@ div.ui-access-rights-v2-members-item-new:last-of-type {
|
||||
|
||||
.ui-access-rights-v2-header-role-add .ui-icon-set {
|
||||
--ui-icon-set__icon-color: var(--ui-color-base-50);
|
||||
}
|
||||
|
||||
.ui-access-rights-v2-search-icon {
|
||||
position: absolute;
|
||||
z-index: 10;
|
||||
display: block;
|
||||
width: 22px;
|
||||
height: calc(var(--ui-field-size) - 2px);
|
||||
right: 12px;
|
||||
cursor: pointer;
|
||||
|
||||
--ui-icon-set__icon-size: 20px;
|
||||
--ui-icon-set__icon-color: var(--ui-color-base-5);
|
||||
}
|
||||
@@ -21,31 +21,6 @@ export class AnalyticsManager
|
||||
this.#isEnabled = Object.hasOwn(this.#data, 'tool') && Object.hasOwn(this.#data, 'category');
|
||||
}
|
||||
|
||||
onSaveAttempt(): void
|
||||
{
|
||||
if (!this.#isEnabled)
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
const { createdRoles, editedRoles, deletedRoles } = this.#analyzeRoles();
|
||||
|
||||
for (let i = 0; i < createdRoles; i++)
|
||||
{
|
||||
this.#registerRoleCreateEvent('attempt');
|
||||
}
|
||||
|
||||
for (let i = 0; i < editedRoles; i++)
|
||||
{
|
||||
this.#registerRoleEditEvent('attempt');
|
||||
}
|
||||
|
||||
for (let i = 0; i < deletedRoles; i++)
|
||||
{
|
||||
this.#registerRoleDeleteEvent('attempt');
|
||||
}
|
||||
}
|
||||
|
||||
onSaveSuccess(): void
|
||||
{
|
||||
if (!this.#isEnabled)
|
||||
|
||||
@@ -20,6 +20,7 @@ export class ServiceLocator
|
||||
return this.#cache.remember(`hint-${appGuid}`, () => {
|
||||
return BX.UI.Hint.createInstance({
|
||||
id: `ui-access-rights-v2-hint-${appGuid}`,
|
||||
classNameIcon: 'ui-icon-set --o-question',
|
||||
popupParameters: {
|
||||
className: 'ui-access-rights-v2-popup-pointer-events ui-hint-popup',
|
||||
autoHide: true,
|
||||
|
||||
@@ -3,7 +3,7 @@ import { BuilderModel, type GetterTree, type MutationTree } from 'ui.vue3.vuex';
|
||||
export type ApplicationState = {
|
||||
options: Readonly<Options>,
|
||||
guid: string,
|
||||
isSaving: boolean,
|
||||
isProgress: boolean,
|
||||
}
|
||||
|
||||
export type Options = {
|
||||
@@ -58,7 +58,7 @@ export class ApplicationModel extends BuilderModel
|
||||
return {
|
||||
options: this.#options,
|
||||
guid: this.#guid,
|
||||
isSaving: false,
|
||||
isProgress: false,
|
||||
};
|
||||
}
|
||||
|
||||
@@ -80,9 +80,9 @@ export class ApplicationModel extends BuilderModel
|
||||
getMutations(): MutationTree<ApplicationState>
|
||||
{
|
||||
return {
|
||||
setSaving: (state, isSaving: boolean): void => {
|
||||
setProgress: (state, isProgress: boolean): void => {
|
||||
// eslint-disable-next-line no-param-reassign
|
||||
state.isSaving = Boolean(isSaving);
|
||||
state.isProgress = Boolean(isProgress);
|
||||
},
|
||||
};
|
||||
}
|
||||
|
||||
@@ -31,11 +31,13 @@ export class ApplicationInternalizer implements Transformer<Options, Readonly<Op
|
||||
addUserGroupsProviderTab: Boolean(externalSource.additionalMembersParams?.addUserGroupsProviderTab ?? false),
|
||||
addProjectsProviderTab: Boolean(externalSource.additionalMembersParams?.addProjectsProviderTab ?? true),
|
||||
addStructureTeamsProviderTab: Boolean(externalSource.additionalMembersParams?.addStructureTeamsProviderTab ?? false),
|
||||
addStructureRolesProviderTab: Boolean(externalSource.additionalMembersParams?.addStructureRolesProviderTab ?? false),
|
||||
}
|
||||
: {
|
||||
addUserGroupsProviderTab: false,
|
||||
addProjectsProviderTab: true,
|
||||
addStructureTeamsProviderTab: false,
|
||||
addStructureRolesProviderTab: false,
|
||||
},
|
||||
isSaveAccessRightsList: Type.isBoolean(externalSource.isSaveAccessRightsList)
|
||||
? externalSource.isSaveAccessRightsList
|
||||
|
||||
Reference in New Issue
Block a user