chore: fix vue/attribute-hyphenation ESLint rule

Signed-off-by: Ferdinand Thiessen <opensource@fthiessen.de>
This commit is contained in:
Ferdinand Thiessen 2026-01-25 23:30:37 +01:00
parent 12f1b91ee1
commit 59b68e1248
No known key found for this signature in database
GPG key ID: 7E849AE05218500F
50 changed files with 209 additions and 209 deletions

View file

@ -22,7 +22,7 @@
<label for="replacement-search-input">{{ t('dav', 'Out of office replacement (optional)') }}</label>
<NcSelectUsers
v-model="replacementUser"
input-id="replacement-search-input"
inputId="replacement-search-input"
:loading="searchLoading"
:placeholder="t('dav', 'Name of the replacement')"
:options="options"

View file

@ -76,20 +76,20 @@ async function save() {
<CalendarAvailability
v-model:slots="slots"
:loading="loading"
:l10n-to="t('dav', 'to')"
:l10n-delete-slot="t('dav', 'Delete slot')"
:l10n-empty-day="t('dav', 'No working hours set')"
:l10n-add-slot="t('dav', 'Add slot')"
:l10n-week-day-list-label="t('dav', 'Weekdays')"
:l10n-monday="t('dav', 'Monday')"
:l10n-tuesday="t('dav', 'Tuesday')"
:l10n-wednesday="t('dav', 'Wednesday')"
:l10n-thursday="t('dav', 'Thursday')"
:l10n-friday="t('dav', 'Friday')"
:l10n-saturday="t('dav', 'Saturday')"
:l10n-sunday="t('dav', 'Sunday')"
:l10n-start-picker-label="(dayName) => t('dav', 'Pick a start time for {dayName}', { dayName })"
:l10n-end-picker-label="(dayName) => t('dav', 'Pick a end time for {dayName}', { dayName })" />
:l10nTo="t('dav', 'to')"
:l10nDeleteSlot="t('dav', 'Delete slot')"
:l10nEmptyDay="t('dav', 'No working hours set')"
:l10nAddSlot="t('dav', 'Add slot')"
:l10nWeekDayListLabel="t('dav', 'Weekdays')"
:l10nMonday="t('dav', 'Monday')"
:l10nTuesday="t('dav', 'Tuesday')"
:l10nWednesday="t('dav', 'Wednesday')"
:l10nThursday="t('dav', 'Thursday')"
:l10nFriday="t('dav', 'Friday')"
:l10nSaturday="t('dav', 'Saturday')"
:l10nSunday="t('dav', 'Sunday')"
:l10nStartPickerLabel="(dayName) => t('dav', 'Pick a start time for {dayName}', { dayName })"
:l10nEndPickerLabel="(dayName) => t('dav', 'Pick a end time for {dayName}', { dayName })" />
<NcCheckboxRadioSwitch v-model="automated">
{{ t('dav', 'Automatically set user status to "Do not disturb" outside of availability to mute all notifications.') }}

View file

@ -6,7 +6,7 @@
<template>
<div class="example-contact-settings">
<NcCheckboxRadioSwitch
:model-value="enableDefaultContact"
:modelValue="enableDefaultContact"
type="switch"
@update:modelValue="updateEnableDefaultContact">
{{ t('dav', "Add example contact to user's address book when they first log in") }}

View file

@ -6,7 +6,7 @@
<template>
<div class="example-event-settings">
<NcCheckboxRadioSwitch
:model-value="createExampleEvent"
:modelValue="createExampleEvent"
:disabled="savingConfig"
type="switch"
@update:modelValue="updateCreateExampleEvent">

View file

@ -5,7 +5,7 @@
<template>
<NcSettingsSection
:name="t('dav', 'Calendar server')"
:doc-url="userSyncCalendarsDocUrl">
:docUrl="userSyncCalendarsDocUrl">
<!-- Can use v-html as:
- t passes the translated string through DOMPurify.sanitize,
- replacement strings are not user-controlled. -->

View file

@ -78,7 +78,7 @@ async function onSubmit() {
required
name="confirmPassword"
:error="!!confirmPassword && !passwordMatch"
:helper-text="(passwordMatch || !confirmPassword) ? '' : t('encryption', 'Passwords fields do not match')"
:helperText="(passwordMatch || !confirmPassword) ? '' : t('encryption', 'Passwords fields do not match')"
:label="t('encryption', 'Repeat recovery key password')" />
<NcButton type="submit" :variant="recoveryEnabled ? 'error' : 'primary'">

View file

@ -77,7 +77,7 @@ async function onSubmit() {
required
name="confirmPassword"
:error="!passwordMatch && !!confirmPassword"
:helper-text="(passwordMatch || !confirmPassword) ? '' : t('encryption', 'Passwords fields do not match')"
:helperText="(passwordMatch || !confirmPassword) ? '' : t('encryption', 'Passwords fields do not match')"
:label="t('encryption', 'Repeat new recovery key password')" />
<NcButton type="submit" variant="primary">

View file

@ -51,7 +51,7 @@ async function reloadStatus() {
<SettingsPersonalChangePrivateKey
v-else-if="initialized === InitStatus.InitExecuted"
:recovery-enabled-for-user
:recoveryEnabledForUser
@updated="reloadStatus" />
<SettingsPersonalEnableRecovery
v-else-if="personalSettings.recoveryEnabled && personalSettings.privateKeySet"

View file

@ -156,7 +156,7 @@ async function updateAppConfig(key: string, value: boolean) {
<NcSettingsSection
:name="t('federatedfilesharing', 'Federated Cloud Sharing')"
:description="t('federatedfilesharing', 'Adjust how people can share between servers. This includes shares between people on this server as well if they are using federated sharing.')"
:doc-url="sharingFederatedDocUrl">
:docUrl="sharingFederatedDocUrl">
<NcCheckboxRadioSwitch
v-model="state.outgoingServer2serverShareEnabled"
type="switch">
@ -188,7 +188,7 @@ async function updateAppConfig(key: string, value: boolean) {
<NcCheckboxRadioSwitch
type="switch"
:model-value="state.lookupServerEnabled"
:modelValue="state.lookupServerEnabled"
disabled
@update:modelValue="showLookupServerConfirmation">
{{ t('federatedfilesharing', 'Search global and public address book for people') }}
@ -196,7 +196,7 @@ async function updateAppConfig(key: string, value: boolean) {
<NcCheckboxRadioSwitch
type="switch"
:model-value="state.lookupServerUploadEnabled"
:modelValue="state.lookupServerUploadEnabled"
disabled
@update:modelValue="showLookupServerUploadConfirmation">
{{ t('federatedfilesharing', 'Allow people to publish their data to a global and public address book') }}

View file

@ -76,18 +76,18 @@ async function copyCloudId(): Promise<void> {
<NcSettingsSection
:name="t('federatedfilesharing', 'Federated Cloud')"
:description="t('federatedfilesharing', 'You can share with anyone who uses a {productName} server or other Open Cloud Mesh (OCM) compatible servers and services! Just put their Federated Cloud ID in the share dialog. It looks like person@cloud.example.com', { productName })"
:doc-url="docUrlFederated">
:docUrl="docUrlFederated">
<NcInputField
class="federated-cloud__cloud-id"
readonly
:label="t('federatedfilesharing', 'Your Federated Cloud ID')"
:model-value="cloudId"
:modelValue="cloudId"
:success="isCopied"
show-trailing-button
:trailing-button-label="copyLinkTooltip"
showTrailingButton
:trailingButtonLabel="copyLinkTooltip"
@trailingButtonClick="copyCloudId">
<template #trailing-button-icon>
<IconCheck v-if="isCopied" :size="20" fill-color="var(--color-border-success)" />
<IconCheck v-if="isCopied" :size="20" fillColor="var(--color-border-success)" />
<IconClipboard v-else :size="20" />
</template>
</NcInputField>

View file

@ -47,7 +47,7 @@ const buttons = computed<INcDialogButtons>(() => [
<template>
<NcDialog
:buttons="buttons"
:is-form="passwordRequired"
:isForm="passwordRequired"
:name="t('federatedfilesharing', 'Remote share')"
@submit="emit('close', true, password)">
<p>

View file

@ -41,7 +41,7 @@ function onDelete(server: ITrustedServer) {
<template>
<NcSettingsSection
:name="t('federation', 'Trusted servers')"
:doc-url="adminSettings.docUrl"
:docUrl="adminSettings.docUrl"
:description="t('federation', 'Federation allows you to connect with other trusted servers to exchange the account directory. For example this will be used to auto-complete external accounts for federated sharing. It is not necessary to add a server as trusted server in order to create a federated share.')">
<NcNoteCard
v-if="showPendingServerInfo"
@ -52,10 +52,10 @@ function onDelete(server: ITrustedServer) {
:class="$style.federationAdminSettings__trustedServersList"
:aria-label="t('federation', 'Trusted servers')"
tag="ul"
:enter-from-class="$style.transition_hidden"
:enter-active-class="$style.transition_active"
:leave-active-class="$style.transition_active"
:leave-to-class="$style.transition_hidden">
:enterFromClass="$style.transition_hidden"
:enterActiveClass="$style.transition_active"
:leaveActiveClass="$style.transition_active"
:leaveToClass="$style.transition_hidden">
<TrustedServer
v-for="server in trustedServers"
:key="server.id"

View file

@ -78,8 +78,8 @@ watch(authMechanisms, () => {
<template>
<NcDialog
v-model:open="open"
is-form
:content-classes="$style.externalStorageDialog"
isForm
:contentClasses="$style.externalStorageDialog"
:name="internalStorage.id ? t('files_external', 'Edit storage') : t('files_external', 'Add storage')"
@submit="$emit('close', internalStorage)"
@update:open="$event || $emit('close')">
@ -99,7 +99,7 @@ watch(authMechanisms, () => {
v-model="backend"
:options="backends"
:disabled="!!(internalStorage.id && internalStorage.backend)"
:input-label="t('files_external', 'External storage')"
:inputLabel="t('files_external', 'External storage')"
label="name"
required />
@ -107,7 +107,7 @@ watch(authMechanisms, () => {
v-model="authMechanism"
:options="authMechanisms"
:disabled="!internalStorage.backend || authMechanisms.length <= 1 || !!(internalStorage.id && internalStorage.authMechanism)"
:input-label="t('files_external', 'Authentication')"
:inputLabel="t('files_external', 'Authentication')"
label="name"
required />
@ -121,7 +121,7 @@ watch(authMechanisms, () => {
v-if="authMechanism"
v-model="internalStorage.backendOptions"
:class="$style.externalStorageDialog__configuration"
:auth-mechanism="authMechanism" />
:authMechanism="authMechanism" />
<template #actions>
<NcButton v-if="storage.id" @click="$emit('close')">

View file

@ -59,9 +59,9 @@ async function onSearch(pattern: string) {
<template>
<NcSelectUsers
v-model="model"
keep-open
keepOpen
multiple
:options="entities"
:input-label="t('files_external', 'Restrict to')"
:inputLabel="t('files_external', 'Restrict to')"
@search="debouncedSearch" />
</template>

View file

@ -39,8 +39,8 @@ watch(() => props.configuration, () => {
v-show="!(configOption.flags & ConfigurationFlag.Hidden)"
:key="configOption.value"
v-model="modelValue[configKey]!"
:config-key="configKey"
:config-option="configOption" />
:configKey="configKey"
:configOption="configOption" />
</fieldset>
</template>

View file

@ -81,7 +81,7 @@ const checkFilesystem = computed({
:aria-labelledby="idButton">
<NcSelect
v-model="checkFilesystem"
:input-label="t('files_external', 'Check filesystem changes')"
:inputLabel="t('files_external', 'Check filesystem changes')"
:options="checkFilesystemOptions" />
<NcCheckboxRadioSwitch v-model="modelValue.readonly" type="switch">

View file

@ -56,7 +56,7 @@ const storages = computed(() => {
<ExternalStorageTableRow
v-for="storage in storages"
:key="storage.id"
:is-admin
:isAdmin
:storage="storage" />
</tbody>
</table>

View file

@ -115,13 +115,13 @@ async function reloadStatus() {
<NcChip
v-for="group of storage.applicableGroups"
:key="group"
:icon-path="mdiAccountGroupOutline"
no-close
:iconPath="mdiAccountGroupOutline"
noClose
:text="group" />
<NcUserBubble
v-for="user of users"
:key="user.user"
:display-name="user.displayName"
:displayName="user.displayName"
:size="24"
:user="user.user" />
</div>

View file

@ -57,13 +57,13 @@ async function generateKeys() {
v-show="!(configOption.flags & ConfigurationFlag.Hidden)"
:key="configOption.value"
v-model="modelValue[configKey]!"
:config-key="configKey"
:config-option="configOption" />
:configKey="configKey"
:configOption="configOption" />
<NcSelect
v-model="keySize"
:clearable="false"
:input-label="t('files_external', 'Key size')"
:inputLabel="t('files_external', 'Key size')"
:options="[1024, 2048, 4096]"
required />

View file

@ -29,11 +29,11 @@ const dialogButtons: InstanceType<typeof NcDialog>['buttons'] = [{
<NcDialog
:buttons="dialogButtons"
class="external-storage-auth"
close-on-click-outside
closeOnClickOutside
data-cy-external-storage-auth
is-form
isForm
:name="t('files_external', 'Storage credentials')"
out-transition
outTransition
@submit="$emit('close', { login, password })"
@update:open="$emit('close')">
<!-- Header -->

View file

@ -67,7 +67,7 @@ async function addStorage(storage?: Partial<IStorage>) {
<template>
<NcSettingsSection
:doc-url="settings.docUrl"
:docUrl="settings.docUrl"
:name="t('files_external', 'External storage')"
:description="
t('files_external', 'External storage enables you to mount external storage services and devices as secondary Nextcloud storage devices.')

View file

@ -114,9 +114,9 @@ function onInput(): void {
<NcDialog
v-if="opened"
:name="t('files_reminders', `Set reminder for '{fileName}'`, { fileName: node.displayname })"
out-transition
outTransition
size="small"
close-on-click-outside
closeOnClickOutside
@closing="onClose">
<form
id="set-custom-reminder-form"

View file

@ -5,7 +5,7 @@
<template>
<NcListItem
class="version"
:force-display-actions="true"
:forceDisplayActions="true"
:actions-aria-label="t('files_versions', 'Actions for version from {versionHumanExplicitDate}', { versionHumanExplicitDate })"
:data-files-versions-version="version.fileVersion"
:href="downloadURL"
@ -49,9 +49,9 @@
class="avatar"
:user="version.author ?? undefined"
:size="20"
disable-menu
disable-tooltip
hide-status />
disableMenu
disableTooltip
hideStatus />
<div
class="version__info__author_name"
:title="versionAuthor">
@ -66,7 +66,7 @@
<div class="version__info version__info__subline">
<NcDateTime
class="version__info__date"
relative-time="short"
relativeTime="short"
:timestamp="version.mtime" />
<!-- Separate dot to improve alignment -->
<span></span>
@ -79,7 +79,7 @@
<NcActionButton
v-if="enableLabeling && hasUpdatePermissions"
data-cy-files-versions-version-action="label"
:close-after-click="true"
:closeAfterClick="true"
@click="labelUpdate">
<template #icon>
<Pencil :size="22" />
@ -89,7 +89,7 @@
<NcActionButton
v-if="!isCurrent && canView && canCompare"
data-cy-files-versions-version-action="compare"
:close-after-click="true"
:closeAfterClick="true"
@click="compareVersion">
<template #icon>
<FileCompare :size="22" />
@ -99,7 +99,7 @@
<NcActionButton
v-if="!isCurrent && hasUpdatePermissions"
data-cy-files-versions-version-action="restore"
:close-after-click="true"
:closeAfterClick="true"
@click="restoreVersion">
<template #icon>
<BackupRestore :size="22" />
@ -110,7 +110,7 @@
v-if="isDownloadable"
data-cy-files-versions-version-action="download"
:href="downloadURL"
:close-after-click="true"
:closeAfterClick="true"
:download="downloadURL">
<template #icon>
<Download :size="22" />
@ -120,7 +120,7 @@
<NcActionButton
v-if="!isCurrent && enableDeletion && hasDeletePermissions"
data-cy-files-versions-version-action="delete"
:close-after-click="true"
:closeAfterClick="true"
@click="deleteVersion">
<template #icon>
<Delete :size="22" />

View file

@ -5,8 +5,8 @@
<template>
<NcDialog
:buttons="dialogButtons"
content-classes="version-label-modal"
is-form
contentClasses="version-label-modal"
isForm
:open="open"
size="normal"
:name="t('files_versions', 'Name this version')"

View file

@ -8,7 +8,7 @@
ref="rowsContainer"
class="vs-rows-container"
:style="rowsContainerStyle">
<slot :visible-sections="visibleSections" />
<slot :visibleSections="visibleSections" />
<slot name="loader" />
</div>
</div>
@ -17,7 +17,7 @@
ref="rowsContainer"
class="vs-rows-container"
:style="rowsContainerStyle">
<slot :visible-sections="visibleSections" />
<slot :visibleSections="visibleSections" />
<slot name="loader" />
</div>
</template>

View file

@ -6,20 +6,20 @@
<div v-if="node" class="versions-tab__container">
<VirtualScrolling
:sections="sections"
:header-height="0">
:headerHeight="0">
<template #default="{ visibleSections }">
<ul :aria-label="t('files_versions', 'File versions')" data-files-versions-versions-list>
<template v-if="visibleSections.length === 1">
<VersionEntry
v-for="(row) of visibleSections[0].rows"
:key="row.items[0].version.mtime"
:can-view="canView"
:can-compare="canCompare"
:load-preview="active"
:canView="canView"
:canCompare="canCompare"
:loadPreview="active"
:version="row.items[0].version"
:node="node"
:is-current="row.items[0].version.mtime === currentVersionMtime"
:is-first-version="row.items[0].version.mtime === initialVersionMtime"
:isCurrent="row.items[0].version.mtime === currentVersionMtime"
:isFirstVersion="row.items[0].version.mtime === initialVersionMtime"
@click="openVersion"
@compare="compareVersion"
@restore="handleRestore"

View file

@ -37,9 +37,9 @@ defineEmits<{
v-if="client.clientSecret"
:class="$style.oAuthItem__clientSecret"
:aria-label="t('oauth2', 'Secret key')"
as-text
:model-value="client.clientSecret"
show-trailing-button />
asText
:modelValue="client.clientSecret"
showTrailingButton />
<span v-else>*****</span>
</td>
<td>

View file

@ -77,7 +77,7 @@ async function addClient() {
<NcSettingsSection
:name="t('oauth2', 'OAuth 2.0 clients')"
:description="t('oauth2', 'OAuth 2.0 allows external services to request access to {instanceName}.', { instanceName })"
:doc-url="oauthDocLink">
:docUrl="oauthDocLink">
<table v-if="clients.length > 0" :class="[$style.oauthApp__table, { [$style.oauthApp__table_withSecret]: showSecretWarning }]">
<thead>
<tr>

View file

@ -109,7 +109,7 @@ function openStatusModal() {
</script>
<template>
<NcContent app-name="profile">
<NcContent appName="profile">
<NcAppContent>
<div class="profile__header">
<div class="profile__header__container">
@ -146,9 +146,9 @@ function openStatusModal() {
:class="{ interactive: isCurrentUser }"
:user="profileParameters.userId"
:size="180"
:disable-menu="true"
:disable-tooltip="true"
:is-no-user="!profileParameters.isUserAvatarVisible"
:disableMenu="true"
:disableTooltip="true"
:isNoUser="!profileParameters.isUserAvatarVisible"
@click.prevent.stop="openStatusModal" />
<div class="user-actions">
@ -170,7 +170,7 @@ function openStatusModal() {
<NcActionLink
v-for="action in otherActions"
:key="action.id"
:close-after-click="true"
:closeAfterClick="true"
:href="action.target"
:target="action.id === 'phone' ? '_self' : '_blank'">
<template #icon>
@ -201,14 +201,14 @@ function openStatusModal() {
<h3 v-if="profileParameters.headline" class="profile__blocks-headline">
{{ profileParameters.headline }}
</h3>
<NcRichText v-if="profileParameters.biography" :text="profileParameters.biography" use-extended-markdown />
<NcRichText v-if="profileParameters.biography" :text="profileParameters.biography" useExtendedMarkdown />
<!-- additional entries, use it with cautious -->
<ProfileSection
v-for="section in sortedSections"
:key="section.id"
:section="section"
:user-id="profileParameters.userId" />
:userId="profileParameters.userId" />
</template>
<NcEmptyContent
v-else

View file

@ -78,7 +78,7 @@ async function saveSetting(key: string, value: unknown) {
</h4>
<NcSelect
v-model="selectedApps"
keep-open
keepOpen
multiple
:placeholder="t('theming', 'Global default apps')"
:options="allApps" />

View file

@ -18,40 +18,40 @@ const ADMIN_INFO = loadState<AdminThemingInfo>('theming', 'adminThemingInfo')
<NcSettingsSection
:name="t('theming', 'Theming')"
:description="t('theming', 'Theming makes it possible to easily customize the look and feel of your instance and supported clients. This will be visible for all users.')"
:doc-url="ADMIN_INFO.docUrl"
:docUrl="ADMIN_INFO.docUrl"
data-admin-theming-settings>
<div :class="$style.adminSectionTheming">
<!-- Name, web link, slogan... fields -->
<TextField
name="name"
:label="t('theming', 'Name')"
default-value="Nextcloud"
defaultValue="Nextcloud"
maxlength="250" />
<TextField
name="url"
:label="t('theming', 'Web link')"
default-value="https://nextcloud.com"
defaultValue="https://nextcloud.com"
placeholder="https://…"
type="url"
maxlength="500" />
<TextField
name="slogan"
:label="t('theming', 'Slogan')"
:default-value="t('settings', 'a safe home for all your data')"
:defaultValue="t('settings', 'a safe home for all your data')"
maxlength="500" />
<hr>
<TextField
name="legalNoticeUrl"
:label="t('theming', 'Legal notice link')"
default-value=""
defaultValue=""
type="url"
placeholder="https://…"
maxlength="500" />
<TextField
name="privacyPolicyUrl"
:label="t('theming', 'Privacy policy link')"
default-value=""
defaultValue=""
type="url"
placeholder="https://…"
maxlength="500" />

View file

@ -72,7 +72,7 @@ async function toggleBackground(value: boolean) {
<ColorPickerField
name="primaryColor"
:label="t('theming', 'Primary color')"
default-value="#00679e"
defaultValue="#00679e"
@updated="refreshStyles">
<template #description>
{{ t('theming', 'Set the default primary color, used to highlight important elements.') }}
@ -83,7 +83,7 @@ async function toggleBackground(value: boolean) {
<ColorPickerField
name="backgroundColor"
:label="t('theming', 'Background color')"
:default-value="defaultBackgroundColor"
:defaultValue="defaultBackgroundColor"
@updated="refreshStyles">
<template #description>
{{ t('theming', 'When no background image is set the background color will be used.') }}

View file

@ -151,8 +151,8 @@ function updateStatusInfo(index: number) {
:app="app"
:aria-details="ariaDetails"
:aria-describedby="statusInfoId"
:is-first="index === 0 || !!appList[index - 1]!.default"
:is-last="index === appList.length - 1"
:isFirst="index === 0 || !!appList[index - 1]!.default"
:isLast="index === appList.length - 1"
v-on="app.default
? {}
: {

View file

@ -144,7 +144,7 @@ async function saveSetting(key: string, value: unknown) {
<AppOrderSelector
:class="$style.userSectionAppMenu__selector"
:aria-details="ariaDetailsAppOrder"
:model-value="appOrder"
:modelValue="appOrder"
@update:modelValue="updateAppOrder" />
<NcButton

View file

@ -50,7 +50,7 @@ const textColor = computed(() => getTextColor(previewColor.value))
<NcColorPicker
:id
v-model="previewColor"
advanced-fields
advancedFields
@submit="modelValue = $event!">
<NcButton
:class="$style.colorPickerField__button"

View file

@ -51,8 +51,8 @@ watchDebounced(modelValue, (value) => {
:readonly="isSaving"
:success="isSaved"
:type
:show-trailing-button="modelValue !== defaultValue"
:trailing-button-icon="defaultValue ? 'undo' : 'close'"
:showTrailingButton="modelValue !== defaultValue"
:trailingButtonIcon="defaultValue ? 'undo' : 'close'"
@trailingButtonClick="reset">
<template v-if="isSaving" #icon>
<NcLoadingIcon />

View file

@ -7,7 +7,7 @@
<NcNoteCard
v-if="!isThemeable"
:text="notThemeableErrorMessage"
show-alert
showAlert
type="error" />
<template v-else>
<AdminSectionTheming />

View file

@ -38,7 +38,7 @@
<h3>{{ t('theming', 'Misc accessibility options') }}</h3>
<NcCheckboxRadioSwitch
type="checkbox"
:model-value="enableBlurFilter === 'yes'"
:modelValue="enableBlurFilter === 'yes'"
:indeterminate="enableBlurFilter === ''"
@update:modelValue="changeEnableBlurFilter">
{{ t('theming', 'Enable blur background filter (may increase GPU load)') }}

View file

@ -10,18 +10,18 @@
<NcTextField
autocomplete="off"
:label="t('user_ldap', 'Backup (Replica) Host')"
:model-value="ldapConfigProxy.ldapBackupHost"
:helper-text="t('user_ldap', 'Give an optional backup host. It must be a replica of the main LDAP/AD server.')"
:modelValue="ldapConfigProxy.ldapBackupHost"
:helperText="t('user_ldap', 'Give an optional backup host. It must be a replica of the main LDAP/AD server.')"
@change="(event) => ldapConfigProxy.ldapBackupHost = event.target.value" />
<NcTextField
type="number"
:model-value="ldapConfigProxy.ldapBackupPort"
:modelValue="ldapConfigProxy.ldapBackupPort"
:label="t('user_ldap', 'Backup (Replica) Port')"
@change="(event) => ldapConfigProxy.ldapBackupPort = event.target.value" />
<NcCheckboxRadioSwitch
:model-value="ldapConfigProxy.ldapOverrideMainServer === '1'"
:modelValue="ldapConfigProxy.ldapOverrideMainServer === '1'"
type="switch"
:aria-label="t('user_ldap', 'Only connect to the replica server.')"
@update:modelValue="ldapConfigProxy.ldapOverrideMainServer = $event ? '1' : '0'">
@ -29,7 +29,7 @@
</NcCheckboxRadioSwitch>
<NcCheckboxRadioSwitch
:model-value="ldapConfigProxy.turnOffCertCheck === '1'"
:modelValue="ldapConfigProxy.turnOffCertCheck === '1'"
:aria-label="t('user_ldap', 'Not recommended, use it for testing only! If connection only works with this option, import the LDAP server\'s SSL certificate in your {instanceName} server.', { instanceName })"
@update:modelValue="ldapConfigProxy.turnOffCertCheck = $event ? '1' : '0'">
{{ t('user_ldap', 'Turn off SSL certificate validation.') }}
@ -38,8 +38,8 @@
<NcTextField
type="number"
:label="t('user_ldap', 'Cache Time-To-Live')"
:model-value="ldapConfigProxy.ldapCacheTTL"
:helper-text="t('user_ldap', 'in seconds. A change empties the cache.')"
:modelValue="ldapConfigProxy.ldapCacheTTL"
:helperText="t('user_ldap', 'in seconds. A change empties the cache.')"
@change="(event) => ldapConfigProxy.ldapCacheTTL = event.target.value" />
</details>
@ -48,32 +48,32 @@
<NcTextField
autocomplete="off"
:model-value="ldapConfigProxy.ldapUserDisplayName"
:modelValue="ldapConfigProxy.ldapUserDisplayName"
:label="t('user_ldap', 'User Display Name Field')"
:helper-text="t('user_ldap', 'The LDAP attribute to use to generate the user\'s display name.')"
:helperText="t('user_ldap', 'The LDAP attribute to use to generate the user\'s display name.')"
@change="(event) => ldapConfigProxy.ldapUserDisplayName = event.target.value" />
<NcTextField
autocomplete="off"
:model-value="ldapConfigProxy.ldapUserDisplayName2"
:modelValue="ldapConfigProxy.ldapUserDisplayName2"
:label="t('user_ldap', '2nd User Display Name Field')"
:helper-text="t('user_ldap', 'Optional. An LDAP attribute to be added to the display name in brackets. Results in e.g. »John Doe (john.doe@example.org)«.')"
:helperText="t('user_ldap', 'Optional. An LDAP attribute to be added to the display name in brackets. Results in e.g. »John Doe (john.doe@example.org)«.')"
@change="(event) => ldapConfigProxy.ldapUserDisplayName2 = event.target.value" />
<NcTextArea
:model-value="ldapConfigProxy.ldapBaseUsers"
:modelValue="ldapConfigProxy.ldapBaseUsers"
:placeholder="t('user_ldap', 'One User Base DN per line')"
:label="t('user_ldap', 'Base User Tree')"
@change="(event) => ldapConfigProxy.ldapBaseUsers = event.target.value" />
<NcTextArea
:model-value="ldapConfigProxy.ldapAttributesForUserSearch"
:modelValue="ldapConfigProxy.ldapAttributesForUserSearch"
:placeholder="t('user_ldap', 'Optional; one attribute per line')"
:label="t('user_ldap', 'User Search Attributes')"
@change="(event) => ldapConfigProxy.ldapAttributesForUserSearch = event.target.value" />
<NcCheckboxRadioSwitch
:model-value="ldapConfigProxy.markRemnantsAsDisabled === '1'"
:modelValue="ldapConfigProxy.markRemnantsAsDisabled === '1'"
:aria-label="t('user_ldap', 'When switched on, users imported from LDAP which are then missing will be disabled')"
@update:modelValue="ldapConfigProxy.markRemnantsAsDisabled = $event ? '1' : '0'">
{{ t('user_ldap', 'Disable users missing from LDAP') }}
@ -81,19 +81,19 @@
<NcTextField
autocomplete="off"
:model-value="ldapConfigProxy.ldapGroupDisplayName"
:modelValue="ldapConfigProxy.ldapGroupDisplayName"
:label="t('user_ldap', 'Group Display Name Field')"
:title="t('user_ldap', 'The LDAP attribute to use to generate the groups\'s display name.')"
@change="(event) => ldapConfigProxy.ldapGroupDisplayName = event.target.value" />
<NcTextArea
:model-value="ldapConfigProxy.ldapBaseGroups"
:modelValue="ldapConfigProxy.ldapBaseGroups"
:placeholder="t('user_ldap', 'One Group Base DN per line')"
:label="t('user_ldap', 'Base Group Tree')"
@change="(event) => ldapConfigProxy.ldapBaseGroups = event.target.value" />
<NcTextArea
:model-value="ldapConfigProxy.ldapAttributesForGroupSearch"
:modelValue="ldapConfigProxy.ldapAttributesForGroupSearch"
:placeholder="t('user_ldap', 'Optional; one attribute per line')"
:label="t('user_ldap', 'Group Search Attributes')"
@change="(event) => ldapConfigProxy.ldapAttributesForGroupSearch = event.target.value" />
@ -101,7 +101,7 @@
<NcSelect
v-model="ldapConfigProxy.ldapGroupMemberAssocAttr"
:options="Object.keys(groupMemberAssociation)"
:input-label="t('user_ldap', 'Group-Member association')">
:inputLabel="t('user_ldap', 'Group-Member association')">
<template #option="{ label: configId }">
{{ groupMemberAssociation[configId] }}
</template>
@ -113,12 +113,12 @@
<NcTextField
autocomplete="off"
:label="t('user_ldap', 'Dynamic Group Member URL')"
:model-value="ldapConfigProxy.ldapDynamicGroupMemberURL"
:helper-text="t('user_ldap', 'The LDAP attribute that on group objects contains an LDAP search URL that determines what objects belong to the group. (An empty setting disables dynamic group membership functionality.)')"
:modelValue="ldapConfigProxy.ldapDynamicGroupMemberURL"
:helperText="t('user_ldap', 'The LDAP attribute that on group objects contains an LDAP search URL that determines what objects belong to the group. (An empty setting disables dynamic group membership functionality.)')"
@change="(event) => ldapConfigProxy.ldapDynamicGroupMemberURL = event.target.value" />
<NcCheckboxRadioSwitch
:model-value="ldapConfigProxy.ldapNestedGroups === '1'"
:modelValue="ldapConfigProxy.ldapNestedGroups === '1'"
:aria-label="t('user_ldap', 'When switched on, groups that contain groups are supported. (Only works if the group member attribute contains DNs.)')"
@update:modelValue="ldapConfigProxy.ldapNestedGroups = $event ? '1' : '0'">
{{ t('user_ldap', 'Nested Groups') }}
@ -127,12 +127,12 @@
<NcTextField
type="number"
:label="t('user_ldap', 'Paging chunksize')"
:model-value="ldapConfigProxy.ldapPagingSize"
:helper-text="t('user_ldap', 'Chunksize used for paged LDAP searches that may return bulky results like user or group enumeration. (Setting it 0 disables paged LDAP searches in those situations.)')"
:modelValue="ldapConfigProxy.ldapPagingSize"
:helperText="t('user_ldap', 'Chunksize used for paged LDAP searches that may return bulky results like user or group enumeration. (Setting it 0 disables paged LDAP searches in those situations.)')"
@change="(event) => ldapConfigProxy.ldapPagingSize = event.target.value" />
<NcCheckboxRadioSwitch
:model-value="ldapConfigProxy.turnOnPasswordChange === '1'"
:modelValue="ldapConfigProxy.turnOnPasswordChange === '1'"
:aria-label="t('user_ldap', 'Allow LDAP users to change their password and allow Super Administrators and Group Administrators to change the password of their LDAP users. Only works when access control policies are configured accordingly on the LDAP server. As passwords are sent in plaintext to the LDAP server, transport encryption must be used and password hashing should be configured on the LDAP server.')"
@update:modelValue="ldapConfigProxy.turnOnPasswordChange = $event ? '1' : '0'">
{{ t('user_ldap', 'Enable LDAP password changes per user') }}
@ -144,8 +144,8 @@
<NcTextField
autocomplete="off"
:label="t('user_ldap', 'Default password policy DN')"
:model-value="ldapConfigProxy.ldapDefaultPPolicyDN"
:helper-text="t('user_ldap', 'The DN of a default password policy that will be used for password expiry handling. Works only when LDAP password changes per user are enabled and is only supported by OpenLDAP. Leave empty to disable password expiry handling.')"
:modelValue="ldapConfigProxy.ldapDefaultPPolicyDN"
:helperText="t('user_ldap', 'The DN of a default password policy that will be used for password expiry handling. Works only when LDAP password changes per user are enabled and is only supported by OpenLDAP. Leave empty to disable password expiry handling.')"
@change="(event) => ldapConfigProxy.ldapDefaultPPolicyDN = event.target.value" />
</details>
@ -154,37 +154,37 @@
<NcTextField
autocomplete="off"
:model-value="ldapConfigProxy.ldapQuotaAttribute"
:modelValue="ldapConfigProxy.ldapQuotaAttribute"
:label="t('user_ldap', 'Quota Field')"
:helper-text="t('user_ldap', 'Leave empty for user\'s default quota. Otherwise, specify an LDAP/AD attribute.')"
:helperText="t('user_ldap', 'Leave empty for user\'s default quota. Otherwise, specify an LDAP/AD attribute.')"
@change="(event) => ldapConfigProxy.ldapQuotaAttribute = event.target.value" />
<NcTextField
autocomplete="off"
:model-value="ldapConfigProxy.ldapQuotaDefault"
:modelValue="ldapConfigProxy.ldapQuotaDefault"
:label="t('user_ldap', 'Quota Default')"
:helper-text="t('user_ldap', 'Override default quota for LDAP users who do not have a quota set in the Quota Field.')"
:helperText="t('user_ldap', 'Override default quota for LDAP users who do not have a quota set in the Quota Field.')"
@change="(event) => ldapConfigProxy.ldapQuotaDefault = event.target.value" />
<NcTextField
autocomplete="off"
:model-value="ldapConfigProxy.ldapEmailAttribute"
:modelValue="ldapConfigProxy.ldapEmailAttribute"
:label="t('user_ldap', 'Email Field')"
:helper-text="t('user_ldap', 'Set the user\'s email from their LDAP attribute. Leave it empty for default behaviour.')"
:helperText="t('user_ldap', 'Set the user\'s email from their LDAP attribute. Leave it empty for default behaviour.')"
@change="(event) => ldapConfigProxy.ldapEmailAttribute = event.target.value" />
<NcTextField
autocomplete="off"
:label="t('user_ldap', 'User Home Folder Naming Rule')"
:model-value="ldapConfigProxy.homeFolderNamingRule"
:helper-text="t('user_ldap', 'Leave empty for username (default). Otherwise, specify an LDAP/AD attribute.')"
:modelValue="ldapConfigProxy.homeFolderNamingRule"
:helperText="t('user_ldap', 'Leave empty for username (default). Otherwise, specify an LDAP/AD attribute.')"
@change="(event) => ldapConfigProxy.homeFolderNamingRule = event.target.value" />
<NcTextField
autocomplete="off"
:label="t('user_ldap', '`$home` Placeholder Field')"
:model-value="ldapConfigProxy.ldapExtStorageHomeAttribute"
:helper-text="t('user_ldap', '$home in an external storage configuration will be replaced with the value of the specified attribute')"
:modelValue="ldapConfigProxy.ldapExtStorageHomeAttribute"
:helperText="t('user_ldap', '$home in an external storage configuration will be replaced with the value of the specified attribute')"
@change="(event) => ldapConfigProxy.ldapExtStorageHomeAttribute = event.target.value" />
</details>
@ -194,71 +194,71 @@
<NcTextField
autocomplete="off"
:label="t('user_ldap', 'Phone Field')"
:model-value="ldapConfigProxy.ldapAttributePhone"
:helper-text="t('user_ldap', 'User profile Phone will be set from the specified attribute')"
:modelValue="ldapConfigProxy.ldapAttributePhone"
:helperText="t('user_ldap', 'User profile Phone will be set from the specified attribute')"
@change="(event) => ldapConfigProxy.ldapAttributePhone = event.target.value" />
<NcTextField
autocomplete="off"
:label="t('user_ldap', 'Website Field')"
:model-value="ldapConfigProxy.ldapAttributeWebsite"
:helper-text="t('user_ldap', 'User profile Website will be set from the specified attribute')"
:modelValue="ldapConfigProxy.ldapAttributeWebsite"
:helperText="t('user_ldap', 'User profile Website will be set from the specified attribute')"
@change="(event) => ldapConfigProxy.ldapAttributeWebsite = event.target.value" />
<NcTextField
autocomplete="off"
:label="t('user_ldap', 'Address Field')"
:model-value="ldapConfigProxy.ldapAttributeAddress"
:helper-text="t('user_ldap', 'User profile Address will be set from the specified attribute')"
:modelValue="ldapConfigProxy.ldapAttributeAddress"
:helperText="t('user_ldap', 'User profile Address will be set from the specified attribute')"
@change="(event) => ldapConfigProxy.ldapAttributeAddress = event.target.value" />
<NcTextField
autocomplete="off"
:label="t('user_ldap', 'Twitter Field')"
:model-value="ldapConfigProxy.ldapAttributeTwitter"
:helper-text="t('user_ldap', 'User profile Twitter will be set from the specified attribute')"
:modelValue="ldapConfigProxy.ldapAttributeTwitter"
:helperText="t('user_ldap', 'User profile Twitter will be set from the specified attribute')"
@change="(event) => ldapConfigProxy.ldapAttributeTwitter = event.target.value" />
<NcTextField
autocomplete="off"
:label="t('user_ldap', 'Fediverse Field')"
:model-value="ldapConfigProxy.ldapAttributeFediverse"
:helper-text="t('user_ldap', 'User profile Fediverse will be set from the specified attribute')"
:modelValue="ldapConfigProxy.ldapAttributeFediverse"
:helperText="t('user_ldap', 'User profile Fediverse will be set from the specified attribute')"
@change="(event) => ldapConfigProxy.ldapAttributeFediverse = event.target.value" />
<NcTextField
autocomplete="off"
:label="t('user_ldap', 'Organisation Field')"
:model-value="ldapConfigProxy.ldapAttributeOrganisation"
:helper-text="t('user_ldap', 'User profile Organisation will be set from the specified attribute')"
:modelValue="ldapConfigProxy.ldapAttributeOrganisation"
:helperText="t('user_ldap', 'User profile Organisation will be set from the specified attribute')"
@change="(event) => ldapConfigProxy.ldapAttributeOrganisation = event.target.value" />
<NcTextField
autocomplete="off"
:label="t('user_ldap', 'Role Field')"
:model-value="ldapConfigProxy.ldapAttributeRole"
:helper-text="t('user_ldap', 'User profile Role will be set from the specified attribute')"
:modelValue="ldapConfigProxy.ldapAttributeRole"
:helperText="t('user_ldap', 'User profile Role will be set from the specified attribute')"
@change="(event) => ldapConfigProxy.ldapAttributeRole = event.target.value" />
<NcTextField
autocomplete="off"
:label="t('user_ldap', 'Headline Field')"
:model-value="ldapConfigProxy.ldapAttributeHeadline"
:helper-text="t('user_ldap', 'User profile Headline will be set from the specified attribute')"
:modelValue="ldapConfigProxy.ldapAttributeHeadline"
:helperText="t('user_ldap', 'User profile Headline will be set from the specified attribute')"
@change="(event) => ldapConfigProxy.ldapAttributeHeadline = event.target.value" />
<NcTextField
autocomplete="off"
:label="t('user_ldap', 'Biography Field')"
:model-value="ldapConfigProxy.ldapAttributeBiography"
:helper-text="t('user_ldap', 'User profile Biography will be set from the specified attribute')"
:modelValue="ldapConfigProxy.ldapAttributeBiography"
:helperText="t('user_ldap', 'User profile Biography will be set from the specified attribute')"
@change="(event) => ldapConfigProxy.ldapAttributeBiography = event.target.value" />
<NcTextField
autocomplete="off"
:label="t('user_ldap', 'Birthdate Field')"
:model-value="ldapConfigProxy.ldapAttributeBirthDate"
:helper-text="t('user_ldap', 'User profile Date of birth will be set from the specified attribute')"
:modelValue="ldapConfigProxy.ldapAttributeBirthDate"
:helperText="t('user_ldap', 'User profile Date of birth will be set from the specified attribute')"
@change="(event) => ldapConfigProxy.ldapAttributeBirthDate = event.target.value" />
</details>
</fieldset>

View file

@ -13,7 +13,7 @@
aria-describedby="ldap_expert_username_attr"
autocomplete="off"
:label="t('user_ldap', 'Internal Username Attribute:')"
:model-value="ldapConfigProxy.ldapExpertUsernameAttr"
:modelValue="ldapConfigProxy.ldapExpertUsernameAttr"
@change="(event) => ldapConfigProxy.ldapExpertUsernameAttr = event.target.value" />
</div>
@ -26,12 +26,12 @@
aria-describedby="ldap_expert_uuid_user_attr"
autocomplete="off"
:label="t('user_ldap', 'UUID Attribute for Users')"
:model-value="ldapConfigProxy.ldapExpertUUIDUserAttr"
:modelValue="ldapConfigProxy.ldapExpertUUIDUserAttr"
@change="(event) => ldapConfigProxy.ldapExpertUUIDUserAttr = event.target.value" />
<NcTextField
autocomplete="off"
:label="t('user_ldap', 'UUID Attribute for Groups')"
:model-value="ldapConfigProxy.ldapExpertUUIDGroupAttr"
:modelValue="ldapConfigProxy.ldapExpertUUIDGroupAttr"
@change="(event) => ldapConfigProxy.ldapExpertUUIDGroupAttr = event.target.value" />
</div>
</fieldset>

View file

@ -14,7 +14,7 @@
class="ldap-wizard__groups__group-filter-groups__select"
:options="groupObjectClasses"
:disabled="ldapConfigProxy.ldapGroupFilterMode === '1'"
:input-label="t('user_ldap', 'Only these object classes:')"
:inputLabel="t('user_ldap', 'Only these object classes:')"
:multiple="true" />
<NcSelect
@ -22,13 +22,13 @@
class="ldap-wizard__groups__group-filter-groups__select"
:options="groupGroups"
:disabled="ldapConfigProxy.ldapGroupFilterMode === '1'"
:input-label="t('user_ldap', 'Only from these groups:')"
:inputLabel="t('user_ldap', 'Only from these groups:')"
:multiple="true" />
</div>
<div class="ldap-wizard__groups__line ldap-wizard__groups__groups-filter">
<NcCheckboxRadioSwitch
:model-value="ldapConfigProxy.ldapGroupFilterMode === '1'"
:modelValue="ldapConfigProxy.ldapGroupFilterMode === '1'"
@update:modelValue="toggleFilterMode">
{{ t('user_ldap', 'Edit LDAP Query') }}
</NcCheckboxRadioSwitch>
@ -37,7 +37,7 @@
<NcTextArea
v-model="ldapConfigProxy.ldapGroupFilter"
:placeholder="t('user_ldap', 'Edit LDAP Query')"
:helper-text="t('user_ldap', 'The filter specifies which LDAP groups shall have access to the {instanceName} instance.', { instanceName })" />
:helperText="t('user_ldap', 'The filter specifies which LDAP groups shall have access to the {instanceName} instance.', { instanceName })" />
</div>
<div v-else>
<span>{{ t('user_ldap', 'LDAP Filter:') }}</span>

View file

@ -9,14 +9,14 @@
</legend>
<NcCheckboxRadioSwitch
:model-value="ldapConfigProxy.ldapLoginFilterUsername === '1'"
:modelValue="ldapConfigProxy.ldapLoginFilterUsername === '1'"
:description="t('user_ldap', 'Allows login against the LDAP/AD username, which is either \'uid\' or \'sAMAccountName\' and will be detected.')"
@update:modelValue="ldapConfigProxy.ldapLoginFilterUsername = $event ? '1' : '0'">
{{ t('user_ldap', 'LDAP/AD Username:') }}
</NcCheckboxRadioSwitch>
<NcCheckboxRadioSwitch
:model-value="ldapConfigProxy.ldapLoginFilterEmail === '1'"
:modelValue="ldapConfigProxy.ldapLoginFilterEmail === '1'"
:description="t('user_ldap', 'Allows login against an email attribute. \'mail\' and \'mailPrimaryAddress\' allowed.')"
@update:modelValue="ldapConfigProxy.ldapLoginFilterEmail = $event ? '1' : '0'">
{{ t('user_ldap', 'LDAP/AD Email Address:') }}
@ -25,25 +25,25 @@
<div class="ldap-wizard__login__line ldap-wizard__login__login-attributes">
<NcSelect
v-model="ldapLoginFilterAttributes"
keep-open
keepOpen
:disabled="ldapLoginFilterMode"
:options="filteredLoginFilterOptions"
:input-label="t('user_ldap', 'Other Attributes:')"
:inputLabel="t('user_ldap', 'Other Attributes:')"
:multiple="true" />
</div>
<div class="ldap-wizard__login__line ldap-wizard__login__user-login-filter">
<NcCheckboxRadioSwitch
:model-value="ldapLoginFilterMode"
:modelValue="ldapLoginFilterMode"
@update:modelValue="toggleFilterMode">
{{ t('user_ldap', 'Edit LDAP Query') }}
</NcCheckboxRadioSwitch>
<NcTextArea
v-if="ldapLoginFilterMode"
:model-value="ldapConfigProxy.ldapLoginFilter"
:modelValue="ldapConfigProxy.ldapLoginFilter"
:placeholder="t('user_ldap', 'Edit LDAP Query')"
:helper-text="t('user_ldap', 'Defines the filter to apply, when login is attempted. `%%uid` replaces the username in the login action. Example: `uid=%%uid`')"
:helperText="t('user_ldap', 'Defines the filter to apply, when login is attempted. `%%uid` replaces the username in the login action. Example: `uid=%%uid`')"
@change="(event) => ldapConfigProxy.ldapLoginFilter = event.target.value" />
<div v-else>
<span>{{ t('user_ldap', 'LDAP Filter:') }}</span>
@ -54,7 +54,7 @@
<div class="ldap-wizard__login__line">
<NcTextField
v-model="testUsername"
:helper-text="t('user_ldap', 'Attempts to receive a DN for the given login name and the current login filter')"
:helperText="t('user_ldap', 'Attempts to receive a DN for the given login name and the current login filter')"
:label="t('user_ldap', 'Test Login name')"
autocomplete="off" />

View file

@ -6,7 +6,7 @@
<fieldset class="ldap-wizard__server">
<div class="ldap-wizard__server__line">
<NcCheckboxRadioSwitch
:model-value="ldapConfigProxy.ldapConfigurationActive === '1'"
:modelValue="ldapConfigProxy.ldapConfigurationActive === '1'"
type="switch"
:aria-label="t('user_ldap', 'When unchecked, this configuration will be skipped.')"
@update:modelValue="ldapConfigProxy.ldapConfigurationActive = $event ? '1' : '0'">
@ -33,15 +33,15 @@
<div class="ldap-wizard__server__line">
<NcTextField
:model-value="ldapConfigProxy.ldapHost"
:helper-text="t('user_ldap', 'You can omit the protocol, unless you require SSL. If so, start with ldaps://')"
:modelValue="ldapConfigProxy.ldapHost"
:helperText="t('user_ldap', 'You can omit the protocol, unless you require SSL. If so, start with ldaps://')"
:label="t('user_ldap', 'Host')"
placeholder="ldaps://localhost"
autocomplete="off"
@change="(event) => ldapConfigProxy.ldapHost = event.target.value" />
<div class="ldap-wizard__server__host__port">
<NcTextField
:model-value="ldapConfigProxy.ldapPort"
:modelValue="ldapConfigProxy.ldapPort"
:label="t('user_ldap', 'Port')"
placeholder="389"
type="number"
@ -56,7 +56,7 @@
<div class="ldap-wizard__server__line">
<NcTextField
v-model="localLdapAgentName"
:helper-text="t('user_ldap', 'The DN of the client user with which the bind shall be done. For anonymous access, leave DN and Password empty.')"
:helperText="t('user_ldap', 'The DN of the client user with which the bind shall be done. For anonymous access, leave DN and Password empty.')"
:label="t('user_ldap', 'User DN')"
placeholder="uid=agent,dc=example,dc=com"
autocomplete="off" />
@ -66,7 +66,7 @@
<NcTextField
v-model="localLdapAgentPassword"
type="password"
:helper-text="t('user_ldap', 'For anonymous access, leave DN and Password empty.')"
:helperText="t('user_ldap', 'For anonymous access, leave DN and Password empty.')"
:label="t('user_ldap', 'Password')"
autocomplete="off" />
@ -78,9 +78,9 @@
<div class="ldap-wizard__server__line">
<NcTextArea
:label="t('user_ldap', 'Base DN')"
:model-value="ldapConfigProxy.ldapBase"
:modelValue="ldapConfigProxy.ldapBase"
:placeholder="t('user_ldap', 'One Base DN per line')"
:helper-text="t('user_ldap', 'You can specify Base DN for users and groups in the Advanced tab')"
:helperText="t('user_ldap', 'You can specify Base DN for users and groups in the Advanced tab')"
@change="(event) => ldapConfigProxy.ldapBase = event.target.value" />
<NcButton :disabled="loadingGuessBaseDN || needsToSaveCredentials" @click="guessBaseDN">

View file

@ -12,7 +12,7 @@
:disabled="ldapConfigProxy.ldapUserFilterMode === '1'"
class="ldap-wizard__users__user-filter-object-class__select"
:options="userObjectClasses"
:input-label="t('user_ldap', 'Only these object classes:')"
:inputLabel="t('user_ldap', 'Only these object classes:')"
:multiple="true" />
{{ t('user_ldap', 'The most common object classes for users are organizationalPerson, person, user, and inetOrgPerson. If you are not sure which object class to select, please consult your directory admin.') }}
</div>
@ -23,13 +23,13 @@
class="ldap-wizard__users__user-filter-groups__select"
:disabled="ldapConfigProxy.ldapUserFilterMode === '1'"
:options="userGroups"
:input-label="t('user_ldap', 'Only from these groups:')"
:inputLabel="t('user_ldap', 'Only from these groups:')"
:multiple="true" />
</div>
<div class="ldap-wizard__users__line ldap-wizard__users__user-filter">
<NcCheckboxRadioSwitch
:model-value="ldapConfigProxy.ldapUserFilterMode === '1'"
:modelValue="ldapConfigProxy.ldapUserFilterMode === '1'"
@update:modelValue="toggleFilterMode">
{{ t('user_ldap', 'Edit LDAP Query') }}
</NcCheckboxRadioSwitch>
@ -38,7 +38,7 @@
<NcTextArea
v-model="ldapConfigProxy.ldapUserFilter"
:placeholder="t('user_ldap', 'Edit LDAP Query')"
:helper-text="t('user_ldap', 'The filter specifies which LDAP users shall have access to the {instanceName} instance.', { instanceName })" />
:helperText="t('user_ldap', 'The filter specifies which LDAP users shall have access to the {instanceName} instance.', { instanceName })" />
</div>
<div v-else>
<label>{{ t('user_ldap', 'LDAP Filter:') }}</label>

View file

@ -17,7 +17,7 @@
v-if="selectedConfigId !== undefined"
v-model="selectedConfigId"
:options="Object.keys(ldapConfigs)"
:input-label="t('user_ldap', 'Select LDAP Config')">
:inputLabel="t('user_ldap', 'Select LDAP Config')">
<template #option="{ label: configId }">
{{ `${configId}: ${ldapConfigs[configId]?.ldapHost ?? ''}` }}
</template>
@ -43,24 +43,24 @@
v-for="(tabLabel, tabId) in tabs"
:key="tabId"
v-model="selectedTab"
:button-variant="true"
:buttonVariant="true"
:value="tabId"
type="radio"
:disabled="tabId !== 'server' && !selectedConfigHasServerInfo"
button-variant-grouped="horizontal">
buttonVariantGrouped="horizontal">
{{ tabLabel }}
</NcCheckboxRadioSwitch>
</div>
</div>
<ServerTab v-if="selectedTab === 'server'" :config-id="selectedConfigId" />
<UsersTab v-else-if="selectedTab === 'users'" :config-id="selectedConfigId" />
<LoginTab v-else-if="selectedTab === 'login'" :config-id="selectedConfigId" />
<GroupsTab v-else-if="selectedTab === 'groups'" :config-id="selectedConfigId" />
<ExpertTab v-else-if="selectedTab === 'expert'" :config-id="selectedConfigId" />
<AdvancedTab v-else-if="selectedTab === 'advanced'" :config-id="selectedConfigId" />
<ServerTab v-if="selectedTab === 'server'" :configId="selectedConfigId" />
<UsersTab v-else-if="selectedTab === 'users'" :configId="selectedConfigId" />
<LoginTab v-else-if="selectedTab === 'login'" :configId="selectedConfigId" />
<GroupsTab v-else-if="selectedTab === 'groups'" :configId="selectedConfigId" />
<ExpertTab v-else-if="selectedTab === 'expert'" :configId="selectedConfigId" />
<AdvancedTab v-else-if="selectedTab === 'advanced'" :configId="selectedConfigId" />
<WizardControls class="ldap-wizard__controls" :config-id="selectedConfigId" />
<WizardControls class="ldap-wizard__controls" :configId="selectedConfigId" />
</div>
<div class="ldap-wizard__clear-mapping">

View file

@ -58,7 +58,7 @@ function onSubmit() {
autocomplete="off"
autocapitalize="off"
:error="hasInvalidPassword"
:helper-text="hasInvalidPassword ? t('user_ldap', 'Wrong password.') : ''"
:helperText="hasInvalidPassword ? t('user_ldap', 'Wrong password.') : ''"
:label="t('user_ldap', 'Current password')"
required
spellcheck="false"

View file

@ -9,13 +9,13 @@
{{ t('user_status', 'Clear status after') }}
</label>
<NcSelect
input-id="clearStatus"
inputId="clearStatus"
class="clear-at-select__select"
:options="options"
:model-value="option"
:modelValue="option"
:clearable="false"
placement="top"
label-outside
labelOutside
@option:selected="select" />
</div>
</template>

View file

@ -19,7 +19,7 @@
maxlength="80"
:disabled="disabled"
:placeholder="t('user_status', 'What is your status?')"
:model-value="message"
:modelValue="message"
type="text"
:label="t('user_status', 'What is your status?')"
@update:modelValue="onChange" />

View file

@ -11,10 +11,10 @@
<PredefinedStatus
v-for="status in predefinedStatuses"
:key="status.id"
:message-id="status.id"
:messageId="status.id"
:icon="status.icon"
:message="status.message"
:clear-at="status.clearAt"
:clearAt="status.clearAt"
:selected="lastSelected === status.id"
@select="selectStatus(status)" />
</ul>

View file

@ -6,9 +6,9 @@
<template>
<NcModal
size="normal"
label-id="user_status-set-dialog"
labelId="user_status-set-dialog"
dark
:set-return-focus="setReturnFocus"
:setReturnFocus="setReturnFocus"
@close="closeModal">
<div class="set-status-modal">
<!-- Status selector -->
@ -60,7 +60,7 @@
@select="revertBackupFromServer" />
<PredefinedStatusesList @selectStatus="selectPredefinedMessage" />
<ClearAtSelect
:clear-at="clearAt"
:clearAt="clearAt"
@selectClearAt="setClearAt" />
<div class="status-buttons">
<NcButton