@nextcloud/vue 3.10.2 → 4.1.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +114 -19
- package/README.md +9 -10
- package/dist/Components/ActionButton.js +24 -3
- package/dist/Components/ActionButton.js.map +1 -1
- package/dist/Components/ActionCaption.js +23 -0
- package/dist/Components/ActionCaption.js.map +1 -0
- package/dist/Components/ActionCheckbox.js +24 -3
- package/dist/Components/ActionCheckbox.js.map +1 -1
- package/dist/Components/ActionInput.js +124 -21
- package/dist/Components/ActionInput.js.map +1 -1
- package/dist/Components/ActionLink.js +24 -3
- package/dist/Components/ActionLink.js.map +1 -1
- package/dist/Components/ActionRadio.js +24 -3
- package/dist/Components/ActionRadio.js.map +1 -1
- package/dist/Components/ActionRouter.js +23 -2
- package/dist/Components/ActionRouter.js.map +1 -1
- package/dist/Components/ActionSeparator.js +1 -1
- package/dist/Components/ActionSeparator.js.map +1 -1
- package/dist/Components/ActionText.js +23 -2
- package/dist/Components/ActionText.js.map +1 -1
- package/dist/Components/ActionTextEditable.js +45 -3
- package/dist/Components/ActionTextEditable.js.map +1 -1
- package/dist/Components/Actions.js +25 -4
- package/dist/Components/Actions.js.map +1 -1
- package/dist/Components/AppContent.js +21 -1
- package/dist/Components/AppContent.js.map +1 -1
- package/dist/Components/AppContentDetails.js +1 -1
- package/dist/Components/AppContentDetails.js.map +1 -1
- package/dist/Components/AppContentList.js +1 -1
- package/dist/Components/AppContentList.js.map +1 -1
- package/dist/Components/AppNavigation.js +109 -2
- package/dist/Components/AppNavigation.js.map +1 -1
- package/dist/Components/AppNavigationCaption.js +66 -1
- package/dist/Components/AppNavigationCaption.js.map +1 -1
- package/dist/Components/AppNavigationCounter.js +2 -2
- package/dist/Components/AppNavigationCounter.js.map +1 -1
- package/dist/Components/AppNavigationIconBullet.js +2 -2
- package/dist/Components/AppNavigationIconBullet.js.map +1 -1
- package/dist/Components/AppNavigationItem.js +49 -7
- package/dist/Components/AppNavigationItem.js.map +1 -1
- package/dist/Components/AppNavigationNew.js +1 -1
- package/dist/Components/AppNavigationNew.js.map +1 -1
- package/dist/Components/AppNavigationNewItem.js +2 -2
- package/dist/Components/AppNavigationNewItem.js.map +1 -1
- package/dist/Components/AppNavigationSettings.js +5 -5
- package/dist/Components/AppNavigationSettings.js.map +1 -1
- package/dist/Components/AppNavigationSpacer.js +1 -1
- package/dist/Components/AppNavigationSpacer.js.map +1 -1
- package/dist/Components/AppNavigationToggle.js +109 -2
- package/dist/Components/AppNavigationToggle.js.map +1 -1
- package/dist/Components/AppSettingsDialog.js +64 -22
- package/dist/Components/AppSettingsDialog.js.map +1 -1
- package/dist/Components/AppSettingsSection.js +1 -1
- package/dist/Components/AppSettingsSection.js.map +1 -1
- package/dist/Components/AppSidebar.js +38 -17
- package/dist/Components/AppSidebar.js.map +1 -1
- package/dist/Components/AppSidebarTab.js +1 -1
- package/dist/Components/AppSidebarTab.js.map +1 -1
- package/dist/Components/Avatar.js +9 -10
- package/dist/Components/Avatar.js.map +1 -1
- package/dist/Components/Breadcrumb.js +33 -12
- package/dist/Components/Breadcrumb.js.map +1 -1
- package/dist/Components/Breadcrumbs.js +59 -17
- package/dist/Components/Breadcrumbs.js.map +1 -1
- package/dist/Components/CheckboxRadioSwitch.js +44 -0
- package/dist/Components/CheckboxRadioSwitch.js.map +1 -0
- package/dist/Components/ColorPicker.js +6 -7
- package/dist/Components/ColorPicker.js.map +1 -1
- package/dist/Components/Content.js +2 -2
- package/dist/Components/Content.js.map +1 -1
- package/dist/Components/CounterBubble.js +23 -0
- package/dist/Components/CounterBubble.js.map +1 -0
- package/dist/Components/DatetimePicker.js +341 -3
- package/dist/Components/DatetimePicker.js.map +1 -1
- package/dist/Components/EmojiPicker.js +14 -14
- package/dist/Components/EmojiPicker.js.map +1 -1
- package/dist/Components/EmptyContent.js +2 -2
- package/dist/Components/EmptyContent.js.map +1 -1
- package/dist/Components/Highlight.js +3 -3
- package/dist/Components/Highlight.js.map +1 -1
- package/dist/Components/ListItem.js +130 -0
- package/dist/Components/ListItem.js.map +1 -0
- package/dist/Components/ListItemIcon.js +20 -21
- package/dist/Components/ListItemIcon.js.map +1 -1
- package/dist/Components/Modal.js +53 -11
- package/dist/Components/Modal.js.map +1 -1
- package/dist/Components/Multiselect.js +22 -23
- package/dist/Components/Multiselect.js.map +1 -1
- package/dist/Components/MultiselectTags.js +24 -25
- package/dist/Components/MultiselectTags.js.map +1 -1
- package/dist/Components/Popover.js +2 -2
- package/dist/Components/Popover.js.map +1 -1
- package/dist/Components/PopoverMenu.js +1 -1
- package/dist/Components/PopoverMenu.js.map +1 -1
- package/dist/Components/ProgressBar.js +2 -2
- package/dist/Components/ProgressBar.js.map +1 -1
- package/dist/Components/RichContenteditable.js +2 -2
- package/dist/Components/RichContenteditable.js.map +1 -1
- package/dist/Components/SettingsInputText.js +22 -1
- package/dist/Components/SettingsInputText.js.map +1 -1
- package/dist/Components/SettingsSection.js +2 -2
- package/dist/Components/SettingsSection.js.map +1 -1
- package/dist/Components/SettingsSelectGroup.js +41 -21
- package/dist/Components/SettingsSelectGroup.js.map +1 -1
- package/dist/Components/TimezonePicker.js +340 -0
- package/dist/Components/TimezonePicker.js.map +1 -0
- package/dist/Components/UserBubble.js +35 -36
- package/dist/Components/UserBubble.js.map +1 -1
- package/dist/Directives/Focus.js +1 -1
- package/dist/Directives/Focus.js.map +1 -1
- package/dist/Directives/Linkify.js +1 -1
- package/dist/Directives/Linkify.js.map +1 -1
- package/dist/Directives/Tooltip.js +2 -2
- package/dist/Directives/Tooltip.js.map +1 -1
- package/dist/Functions/usernameToColor.js +2 -3
- package/dist/Functions/usernameToColor.js.map +1 -1
- package/dist/Mixins/excludeClickOutsideClasses.js +2 -2
- package/dist/Mixins/excludeClickOutsideClasses.js.map +1 -1
- package/dist/Mixins/isFullscreen.js +1 -1
- package/dist/Mixins/isFullscreen.js.map +1 -1
- package/dist/Mixins/isMobile.js +1 -1
- package/dist/Mixins/isMobile.js.map +1 -1
- package/dist/Mixins/richEditor.js +1 -1
- package/dist/Mixins/richEditor.js.map +1 -1
- package/dist/ncvuecomponents.js +276 -69
- package/dist/ncvuecomponents.js.map +1 -1
- package/package.json +28 -43
- package/src/assets/action.scss +0 -132
- package/src/assets/iconfont/README.md +0 -30
- package/src/assets/iconfont/arrow-left-double.svg +0 -3
- package/src/assets/iconfont/arrow-left.svg +0 -3
- package/src/assets/iconfont/arrow-right-double.svg +0 -3
- package/src/assets/iconfont/arrow-right.svg +0 -3
- package/src/assets/iconfont/breadcrumb.svg +0 -1
- package/src/assets/iconfont/checkmark.svg +0 -1
- package/src/assets/iconfont/close.svg +0 -1
- package/src/assets/iconfont/confirm.svg +0 -1
- package/src/assets/iconfont/info.svg +0 -1
- package/src/assets/iconfont/menu.svg +0 -1
- package/src/assets/iconfont/more.svg +0 -1
- package/src/assets/iconfont/pause.svg +0 -1
- package/src/assets/iconfont/play.svg +0 -1
- package/src/assets/iconfont/triangle-s.svg +0 -1
- package/src/assets/iconfont/user-status-away.svg +0 -2
- package/src/assets/iconfont/user-status-dnd.svg +0 -2
- package/src/assets/iconfont/user-status-invisible.svg +0 -2
- package/src/assets/iconfont/user-status-online.svg +0 -2
- package/src/assets/inputs.scss +0 -104
- package/src/assets/variables.scss +0 -57
- package/src/components/ActionButton/ActionButton.vue +0 -160
- package/src/components/ActionButton/index.js +0 -24
- package/src/components/ActionCheckbox/ActionCheckbox.vue +0 -220
- package/src/components/ActionCheckbox/index.js +0 -24
- package/src/components/ActionInput/ActionInput.vue +0 -418
- package/src/components/ActionInput/index.js +0 -24
- package/src/components/ActionLink/ActionLink.vue +0 -132
- package/src/components/ActionLink/index.js +0 -24
- package/src/components/ActionRadio/ActionRadio.vue +0 -219
- package/src/components/ActionRadio/index.js +0 -24
- package/src/components/ActionRouter/ActionRouter.vue +0 -100
- package/src/components/ActionRouter/index.js +0 -24
- package/src/components/ActionSeparator/ActionSeparator.vue +0 -43
- package/src/components/ActionSeparator/index.js +0 -24
- package/src/components/ActionText/ActionText.vue +0 -87
- package/src/components/ActionText/index.js +0 -24
- package/src/components/ActionTextEditable/ActionTextEditable.vue +0 -306
- package/src/components/ActionTextEditable/index.js +0 -24
- package/src/components/Actions/Actions.vue +0 -764
- package/src/components/Actions/index.js +0 -24
- package/src/components/AppContent/AppContent.vue +0 -93
- package/src/components/AppContent/index.js +0 -23
- package/src/components/AppContentDetails/AppContentDetails.vue +0 -34
- package/src/components/AppContentDetails/index.js +0 -23
- package/src/components/AppContentList/AppContentList.vue +0 -44
- package/src/components/AppContentList/index.js +0 -23
- package/src/components/AppNavigation/AppNavigation.vue +0 -190
- package/src/components/AppNavigation/index.js +0 -23
- package/src/components/AppNavigationCaption/AppNavigationCaption.vue +0 -39
- package/src/components/AppNavigationCaption/index.js +0 -3
- package/src/components/AppNavigationCounter/AppNavigationCounter.vue +0 -82
- package/src/components/AppNavigationCounter/index.js +0 -25
- package/src/components/AppNavigationIconBullet/AppNavigationIconBullet.vue +0 -95
- package/src/components/AppNavigationIconBullet/index.js +0 -24
- package/src/components/AppNavigationItem/AppNavigationIconCollapsible.vue +0 -90
- package/src/components/AppNavigationItem/AppNavigationItem.vue +0 -629
- package/src/components/AppNavigationItem/InputConfirmCancel.vue +0 -134
- package/src/components/AppNavigationItem/index.js +0 -24
- package/src/components/AppNavigationNew/AppNavigationNew.vue +0 -76
- package/src/components/AppNavigationNew/index.js +0 -23
- package/src/components/AppNavigationNewItem/AppNavigationNewItem.vue +0 -165
- package/src/components/AppNavigationNewItem/index.js +0 -24
- package/src/components/AppNavigationSettings/AppNavigationSettings.vue +0 -105
- package/src/components/AppNavigationSettings/index.js +0 -23
- package/src/components/AppNavigationSpacer/AppNavigationSpacer.vue +0 -39
- package/src/components/AppNavigationSpacer/index.js +0 -23
- package/src/components/AppNavigationToggle/AppNavigationToggle.vue +0 -78
- package/src/components/AppNavigationToggle/index.js +0 -24
- package/src/components/AppSettingsDialog/AppSettingsDialog.vue +0 -331
- package/src/components/AppSettingsDialog/index.js +0 -25
- package/src/components/AppSettingsSection/AppSettingsSection.vue +0 -64
- package/src/components/AppSettingsSection/index.js +0 -25
- package/src/components/AppSidebar/AppSidebar.vue +0 -802
- package/src/components/AppSidebar/AppSidebarTabs.vue +0 -348
- package/src/components/AppSidebar/index.js +0 -23
- package/src/components/AppSidebarTab/AppSidebarTab.vue +0 -103
- package/src/components/AppSidebarTab/index.js +0 -23
- package/src/components/Avatar/Avatar.vue +0 -758
- package/src/components/Avatar/index.js +0 -25
- package/src/components/Breadcrumb/Breadcrumb.vue +0 -262
- package/src/components/Breadcrumb/index.js +0 -25
- package/src/components/Breadcrumbs/Breadcrumbs.vue +0 -537
- package/src/components/Breadcrumbs/index.js +0 -25
- package/src/components/ColorPicker/ColorPicker.vue +0 -380
- package/src/components/ColorPicker/index.js +0 -25
- package/src/components/Content/Content.vue +0 -77
- package/src/components/Content/index.js +0 -23
- package/src/components/DatetimePicker/DatetimePicker.vue +0 -195
- package/src/components/DatetimePicker/index.js +0 -28
- package/src/components/DatetimePicker/index.scss +0 -405
- package/src/components/EmojiPicker/EmojiPicker.vue +0 -302
- package/src/components/EmojiPicker/index.js +0 -23
- package/src/components/EmptyContent/EmptyContent.vue +0 -120
- package/src/components/EmptyContent/index.js +0 -24
- package/src/components/Highlight/Highlight.vue +0 -183
- package/src/components/Highlight/index.js +0 -25
- package/src/components/ListItemIcon/ListItemIcon.vue +0 -277
- package/src/components/ListItemIcon/index.js +0 -25
- package/src/components/Modal/Modal.vue +0 -833
- package/src/components/Modal/index.js +0 -27
- package/src/components/Multiselect/EllipsisedOption.vue +0 -141
- package/src/components/Multiselect/Multiselect.vue +0 -430
- package/src/components/Multiselect/index.js +0 -28
- package/src/components/Multiselect/index.scss +0 -290
- package/src/components/MultiselectTags/MultiselectTags.vue +0 -179
- package/src/components/MultiselectTags/api.js +0 -115
- package/src/components/MultiselectTags/index.js +0 -23
- package/src/components/Popover/Popover.vue +0 -208
- package/src/components/Popover/index.js +0 -25
- package/src/components/PopoverMenu/PopoverMenu.vue +0 -62
- package/src/components/PopoverMenu/PopoverMenuItem.vue +0 -382
- package/src/components/PopoverMenu/index.js +0 -24
- package/src/components/ProgressBar/ProgressBar.vue +0 -135
- package/src/components/ProgressBar/index.js +0 -25
- package/src/components/RichContenteditable/AutoCompleteResult.vue +0 -191
- package/src/components/RichContenteditable/MentionBubble.vue +0 -165
- package/src/components/RichContenteditable/RichContenteditable.vue +0 -517
- package/src/components/RichContenteditable/index.js +0 -25
- package/src/components/SettingsInputText/SettingsInputText.vue +0 -207
- package/src/components/SettingsInputText/index.js +0 -24
- package/src/components/SettingsSection/SettingsSection.vue +0 -151
- package/src/components/SettingsSection/index.js +0 -24
- package/src/components/SettingsSelectGroup/SettingsSelectGroup.vue +0 -149
- package/src/components/SettingsSelectGroup/index.js +0 -25
- package/src/components/UserBubble/UserBubble.vue +0 -319
- package/src/components/UserBubble/index.js +0 -25
- package/src/components/index.js +0 -110
- package/src/directives/Focus/index.js +0 -29
- package/src/directives/Linkify/index.js +0 -31
- package/src/directives/Tooltip/index.js +0 -32
- package/src/directives/Tooltip/index.scss +0 -117
- package/src/directives/index.js +0 -31
- package/src/fonts/iconfont-vue-f56d517.eot +0 -0
- package/src/fonts/iconfont-vue-f56d517.svg +0 -1
- package/src/fonts/iconfont-vue-f56d517.ttf +0 -0
- package/src/fonts/iconfont-vue-f56d517.woff +0 -0
- package/src/fonts/scss/iconfont-vue.scss +0 -115
- package/src/functions/usernameToColor/index.js +0 -25
- package/src/functions/usernameToColor/usernameToColor.js +0 -68
- package/src/index.js +0 -40
- package/src/l10n.js +0 -42
- package/src/mixins/actionGlobal.js +0 -59
- package/src/mixins/actionText.js +0 -85
- package/src/mixins/excludeClickOutsideClasses/index.js +0 -72
- package/src/mixins/index.js +0 -35
- package/src/mixins/isFullscreen/index.js +0 -46
- package/src/mixins/isMobile/index.js +0 -43
- package/src/mixins/l10n.js +0 -8
- package/src/mixins/richEditor/index.js +0 -160
- package/src/mixins/userStatus.js +0 -76
- package/src/utils/FindRanges.js +0 -47
- package/src/utils/GenColors.js +0 -79
- package/src/utils/GenRandomId.js +0 -31
- package/src/utils/GetChildren.js +0 -47
- package/src/utils/GetParent.js +0 -41
- package/src/utils/IsMobileState.js +0 -49
- package/src/utils/IsOutOfViewport.js +0 -36
- package/src/utils/ScopeComponent.js +0 -37
- package/src/utils/Timer.js +0 -61
- package/src/utils/ValidateChildren.js +0 -50
- package/src/utils/ValidateSlot.js +0 -57
|
@@ -1,25 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* @copyright Copyright (c) 2020 John Molakvoæ <skjnldsv@protonmail.com>
|
|
3
|
-
*
|
|
4
|
-
* @author John Molakvoæ <skjnldsv@protonmail.com>
|
|
5
|
-
*
|
|
6
|
-
* @license GNU AGPL version 3 or any later version
|
|
7
|
-
*
|
|
8
|
-
* This program is free software: you can redistribute it and/or modify
|
|
9
|
-
* it under the terms of the GNU Affero General Public License as
|
|
10
|
-
* published by the Free Software Foundation, either version 3 of the
|
|
11
|
-
* License, or (at your option) any later version.
|
|
12
|
-
*
|
|
13
|
-
* This program is distributed in the hope that it will be useful,
|
|
14
|
-
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
15
|
-
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
|
16
|
-
* GNU Affero General Public License for more details.
|
|
17
|
-
*
|
|
18
|
-
* You should have received a copy of the GNU Affero General Public License
|
|
19
|
-
* along with this program. If not, see <http://www.gnu.org/licenses/>.
|
|
20
|
-
*
|
|
21
|
-
*/
|
|
22
|
-
|
|
23
|
-
import RichContenteditable from './RichContenteditable'
|
|
24
|
-
|
|
25
|
-
export default RichContenteditable
|
|
@@ -1,207 +0,0 @@
|
|
|
1
|
-
<!--
|
|
2
|
-
-
|
|
3
|
-
- @author Julius Härtl <jus@bitgrid.net>
|
|
4
|
-
- @author Greta Doci <gretadoci@gmail.com>
|
|
5
|
-
-
|
|
6
|
-
- @license GNU AGPL version 3 or any later version
|
|
7
|
-
-
|
|
8
|
-
- This program is free software: you can redistribute it and/or modify
|
|
9
|
-
- it under the terms of the GNU Affero General Public License as
|
|
10
|
-
- published by the Free Software Foundation, either version 3 of the
|
|
11
|
-
- License, or (at your option) any later version.
|
|
12
|
-
-
|
|
13
|
-
- This program is distributed in the hope that it will be useful,
|
|
14
|
-
- but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
15
|
-
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
|
16
|
-
- GNU Affero General Public License for more details.
|
|
17
|
-
-
|
|
18
|
-
- You should have received a copy of the GNU Affero General Public License
|
|
19
|
-
- along with this program. If not, see <http://www.gnu.org/licenses/>.
|
|
20
|
-
-
|
|
21
|
-
-->
|
|
22
|
-
|
|
23
|
-
<template>
|
|
24
|
-
<form ref="form"
|
|
25
|
-
:disabled="disabled"
|
|
26
|
-
@submit.prevent.stop="onSubmit">
|
|
27
|
-
<div class="input-wrapper">
|
|
28
|
-
<label :for="id" class="action-input__label">{{ label }}</label>
|
|
29
|
-
<input :id="id"
|
|
30
|
-
type="text"
|
|
31
|
-
:value="value"
|
|
32
|
-
:disabled="disabled"
|
|
33
|
-
@input="onInput"
|
|
34
|
-
@change="onChange">
|
|
35
|
-
<input :id="idSubmit"
|
|
36
|
-
:value="submitTranslated"
|
|
37
|
-
type="submit"
|
|
38
|
-
class="action-input__submit">
|
|
39
|
-
<label v-show="!disabled" :for="idSubmit" class="action-input__label" />
|
|
40
|
-
<p v-if="hint" class="hint">
|
|
41
|
-
{{ hint }}
|
|
42
|
-
</p>
|
|
43
|
-
</div>
|
|
44
|
-
</form>
|
|
45
|
-
</template>
|
|
46
|
-
|
|
47
|
-
<script>
|
|
48
|
-
import { t } from '../../l10n'
|
|
49
|
-
import GenRandomId from '../../utils/GenRandomId'
|
|
50
|
-
|
|
51
|
-
export default {
|
|
52
|
-
name: 'SettingsInputText',
|
|
53
|
-
props: {
|
|
54
|
-
/**
|
|
55
|
-
* label of the select group element
|
|
56
|
-
*/
|
|
57
|
-
label: {
|
|
58
|
-
type: String,
|
|
59
|
-
required: true,
|
|
60
|
-
},
|
|
61
|
-
|
|
62
|
-
/**
|
|
63
|
-
* hint of the select group input
|
|
64
|
-
*/
|
|
65
|
-
hint: {
|
|
66
|
-
type: String,
|
|
67
|
-
default: '',
|
|
68
|
-
},
|
|
69
|
-
|
|
70
|
-
/**
|
|
71
|
-
* value of the select group input
|
|
72
|
-
*/
|
|
73
|
-
value: {
|
|
74
|
-
type: String,
|
|
75
|
-
default: '',
|
|
76
|
-
},
|
|
77
|
-
|
|
78
|
-
/**
|
|
79
|
-
* disabled state of the settings select group input
|
|
80
|
-
*/
|
|
81
|
-
disabled: {
|
|
82
|
-
type: Boolean,
|
|
83
|
-
default: false,
|
|
84
|
-
},
|
|
85
|
-
|
|
86
|
-
/**
|
|
87
|
-
* id attribute of the select group element
|
|
88
|
-
*/
|
|
89
|
-
id: {
|
|
90
|
-
type: String,
|
|
91
|
-
default: () => 'settings-input-text-' + GenRandomId(),
|
|
92
|
-
validator: id => id.trim() !== '',
|
|
93
|
-
},
|
|
94
|
-
},
|
|
95
|
-
|
|
96
|
-
data() {
|
|
97
|
-
return {
|
|
98
|
-
submitTranslated: t('Submit'),
|
|
99
|
-
}
|
|
100
|
-
},
|
|
101
|
-
|
|
102
|
-
computed: {
|
|
103
|
-
/**
|
|
104
|
-
* @returns {string}
|
|
105
|
-
*/
|
|
106
|
-
idSubmit() {
|
|
107
|
-
return this.id + '-submit'
|
|
108
|
-
},
|
|
109
|
-
},
|
|
110
|
-
methods: {
|
|
111
|
-
onInput(event) {
|
|
112
|
-
this.$emit('input', event)
|
|
113
|
-
/**
|
|
114
|
-
* Emitted when the inputs value changes
|
|
115
|
-
* @type {string}
|
|
116
|
-
*/
|
|
117
|
-
this.$emit('update:value', event.target.value)
|
|
118
|
-
},
|
|
119
|
-
onSubmit(event) {
|
|
120
|
-
if (!this.disabled) {
|
|
121
|
-
/**
|
|
122
|
-
* Emitted on submit of the input field
|
|
123
|
-
* @type {Event}
|
|
124
|
-
*/
|
|
125
|
-
this.$emit('submit', event)
|
|
126
|
-
}
|
|
127
|
-
},
|
|
128
|
-
onChange(event) {
|
|
129
|
-
/**
|
|
130
|
-
* Emitted on change of the input field
|
|
131
|
-
* @type {Event}
|
|
132
|
-
*/
|
|
133
|
-
this.$emit('change', event)
|
|
134
|
-
},
|
|
135
|
-
},
|
|
136
|
-
}
|
|
137
|
-
</script>
|
|
138
|
-
|
|
139
|
-
<style lang="scss" scoped>
|
|
140
|
-
|
|
141
|
-
$input-margin: 4px;
|
|
142
|
-
|
|
143
|
-
.input-wrapper {
|
|
144
|
-
display: flex;
|
|
145
|
-
align-items: flex-start;
|
|
146
|
-
flex-wrap: wrap;
|
|
147
|
-
width: 100%;
|
|
148
|
-
max-width: 400px;
|
|
149
|
-
&__form {
|
|
150
|
-
display: flex;
|
|
151
|
-
align-items: center;
|
|
152
|
-
flex: 1 1 auto;
|
|
153
|
-
|
|
154
|
-
margin: $input-margin 0;
|
|
155
|
-
padding-right: $icon-margin;
|
|
156
|
-
}
|
|
157
|
-
|
|
158
|
-
&__submit {
|
|
159
|
-
position: absolute;
|
|
160
|
-
left: -10000px;
|
|
161
|
-
top: auto;
|
|
162
|
-
width: 1px;
|
|
163
|
-
height: 1px;
|
|
164
|
-
overflow: hidden;
|
|
165
|
-
}
|
|
166
|
-
|
|
167
|
-
&__label {
|
|
168
|
-
display: flex;
|
|
169
|
-
align-items: center;
|
|
170
|
-
justify-content: center;
|
|
171
|
-
|
|
172
|
-
width: #{$clickable-area - $input-margin * 2};
|
|
173
|
-
height: #{$clickable-area - $input-margin * 2};
|
|
174
|
-
|
|
175
|
-
cursor: pointer;
|
|
176
|
-
|
|
177
|
-
opacity: $opacity_full;
|
|
178
|
-
color: var(--color-text-lighter);
|
|
179
|
-
border: 1px solid var(--color-border-dark);
|
|
180
|
-
border-left-color: transparent;
|
|
181
|
-
border-radius: 0 var(--border-radius) var(--border-radius) 0;
|
|
182
|
-
/* Avoid background under border */
|
|
183
|
-
background-color: var(--color-main-background);
|
|
184
|
-
background-clip: padding-box;
|
|
185
|
-
|
|
186
|
-
font-size: $icon-size;
|
|
187
|
-
}
|
|
188
|
-
|
|
189
|
-
&__input[type=text] {
|
|
190
|
-
flex-grow: 1;
|
|
191
|
-
white-space: nowrap;
|
|
192
|
-
text-overflow: ellipsis;
|
|
193
|
-
overflow: hidden;
|
|
194
|
-
cursor: text;
|
|
195
|
-
}
|
|
196
|
-
|
|
197
|
-
// if disabled, change cursor
|
|
198
|
-
&:disabled {
|
|
199
|
-
cursor: default;
|
|
200
|
-
}
|
|
201
|
-
|
|
202
|
-
.hint {
|
|
203
|
-
color: var(--color-text-lighter);
|
|
204
|
-
}
|
|
205
|
-
}
|
|
206
|
-
|
|
207
|
-
</style>
|
|
@@ -1,24 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* @copyright Copyright (c) 2019 Greta Doci <gretadoci@gmail.com>
|
|
3
|
-
*
|
|
4
|
-
* @author Greta Doci <gretadoci@gmail.com>
|
|
5
|
-
*
|
|
6
|
-
* @license GNU AGPL version 3 or any later version
|
|
7
|
-
*
|
|
8
|
-
* This program is free software: you can redistribute it and/or modify
|
|
9
|
-
* it under the terms of the GNU Affero General Public License as
|
|
10
|
-
* published by the Free Software Foundation, either version 3 of the
|
|
11
|
-
* License, or (at your option) any later version.
|
|
12
|
-
*
|
|
13
|
-
* This program is distributed in the hope that it will be useful,
|
|
14
|
-
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
15
|
-
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
|
16
|
-
* GNU Affero General Public License for more details.
|
|
17
|
-
*
|
|
18
|
-
* You should have received a copy of the GNU Affero General Public License
|
|
19
|
-
* along with this program. If not, see <http://www.gnu.org/licenses/>.
|
|
20
|
-
*
|
|
21
|
-
*/
|
|
22
|
-
import SettingsInputText from './SettingsInputText'
|
|
23
|
-
|
|
24
|
-
export default SettingsInputText
|
|
@@ -1,151 +0,0 @@
|
|
|
1
|
-
<!--
|
|
2
|
-
- @copyright Copyright (c) 2019 Julius Härtl <jus@bitgrid.net>
|
|
3
|
-
-
|
|
4
|
-
- @author Julius Härtl <jus@bitgrid.net>
|
|
5
|
-
- @author Greta Doci <gretadoci@gmail.com>
|
|
6
|
-
-
|
|
7
|
-
- @license GNU AGPL version 3 or any later version
|
|
8
|
-
-
|
|
9
|
-
- This program is free software: you can redistribute it and/or modify
|
|
10
|
-
- it under the terms of the GNU Affero General Public License as
|
|
11
|
-
- published by the Free Software Foundation, either version 3 of the
|
|
12
|
-
- License, or (at your option) any later version.
|
|
13
|
-
-
|
|
14
|
-
- This program is distributed in the hope that it will be useful,
|
|
15
|
-
- but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
16
|
-
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
|
17
|
-
- GNU Affero General Public License for more details.
|
|
18
|
-
-
|
|
19
|
-
- You should have received a copy of the GNU Affero General Public License
|
|
20
|
-
- along with this program. If not, see <http://www.gnu.org/licenses/>.
|
|
21
|
-
-
|
|
22
|
-
-->
|
|
23
|
-
|
|
24
|
-
<docs>
|
|
25
|
-
### General description
|
|
26
|
-
|
|
27
|
-
This component is to be used in the settings section of nextcloud.
|
|
28
|
-
|
|
29
|
-
### Examples
|
|
30
|
-
|
|
31
|
-
```vue
|
|
32
|
-
<template>
|
|
33
|
-
<SettingsSection
|
|
34
|
-
title="Two-Factor Authentication"
|
|
35
|
-
description="Two-factor authentication can be enforced for all users and specific groups."
|
|
36
|
-
doc-url="https://docs.nextcloud.com/server/19/go.php?to=admin-2fa">
|
|
37
|
-
Your settings here
|
|
38
|
-
</SettingsSection>
|
|
39
|
-
</template>
|
|
40
|
-
```
|
|
41
|
-
</docs>
|
|
42
|
-
|
|
43
|
-
<template>
|
|
44
|
-
<div class="settings-section">
|
|
45
|
-
<h2 class="settings-section__title">
|
|
46
|
-
{{ title }}
|
|
47
|
-
<a v-if="hasDocUrl"
|
|
48
|
-
:href="docUrl"
|
|
49
|
-
class="settings-section__info"
|
|
50
|
-
role=""
|
|
51
|
-
:title="docTitleTranslated" />
|
|
52
|
-
</h2>
|
|
53
|
-
<p v-if="hasDescription"
|
|
54
|
-
class="settings-section__desc">
|
|
55
|
-
{{ description }}
|
|
56
|
-
</p>
|
|
57
|
-
<slot />
|
|
58
|
-
</div>
|
|
59
|
-
</template>
|
|
60
|
-
|
|
61
|
-
<script>
|
|
62
|
-
import { t } from '../../l10n'
|
|
63
|
-
|
|
64
|
-
export default {
|
|
65
|
-
name: 'SettingsSection',
|
|
66
|
-
components: {
|
|
67
|
-
|
|
68
|
-
},
|
|
69
|
-
|
|
70
|
-
props: {
|
|
71
|
-
title: {
|
|
72
|
-
type: String,
|
|
73
|
-
required: true,
|
|
74
|
-
},
|
|
75
|
-
description: {
|
|
76
|
-
type: String,
|
|
77
|
-
default: '',
|
|
78
|
-
},
|
|
79
|
-
docUrl: {
|
|
80
|
-
type: String,
|
|
81
|
-
default: '',
|
|
82
|
-
},
|
|
83
|
-
},
|
|
84
|
-
|
|
85
|
-
data() {
|
|
86
|
-
return {
|
|
87
|
-
docTitleTranslated: t('External documentation for {title}', {
|
|
88
|
-
title: this.title,
|
|
89
|
-
}),
|
|
90
|
-
}
|
|
91
|
-
},
|
|
92
|
-
|
|
93
|
-
computed: {
|
|
94
|
-
hasDescription() {
|
|
95
|
-
return this.description.length > 0
|
|
96
|
-
},
|
|
97
|
-
hasDocUrl() {
|
|
98
|
-
return this.docUrl.length > 0
|
|
99
|
-
},
|
|
100
|
-
},
|
|
101
|
-
}
|
|
102
|
-
|
|
103
|
-
</script>
|
|
104
|
-
|
|
105
|
-
<style lang="scss" scoped>
|
|
106
|
-
@import '../../fonts/scss/iconfont-vue';
|
|
107
|
-
|
|
108
|
-
.settings-section {
|
|
109
|
-
display: block;
|
|
110
|
-
margin-bottom: auto;
|
|
111
|
-
padding: 30px;
|
|
112
|
-
|
|
113
|
-
&:not(:last-child) {
|
|
114
|
-
border-bottom: 1px solid var(--color-border);
|
|
115
|
-
}
|
|
116
|
-
|
|
117
|
-
&__title {
|
|
118
|
-
display: inline-flex;
|
|
119
|
-
align-items: center;
|
|
120
|
-
justify-content: center;
|
|
121
|
-
font-size: 20px;
|
|
122
|
-
font-weight: bold;
|
|
123
|
-
}
|
|
124
|
-
|
|
125
|
-
&__info {
|
|
126
|
-
display: flex;
|
|
127
|
-
align-items: center;
|
|
128
|
-
justify-content: center;
|
|
129
|
-
width: $clickable-area;
|
|
130
|
-
height: $clickable-area;
|
|
131
|
-
// make sure to properly align the icon with the text
|
|
132
|
-
margin: -$icon-margin;
|
|
133
|
-
margin-left: 0;
|
|
134
|
-
opacity: $opacity_normal;
|
|
135
|
-
font-size: $icon-size;
|
|
136
|
-
|
|
137
|
-
@include iconfont('info');
|
|
138
|
-
|
|
139
|
-
&:hover, &:focus, &:active {
|
|
140
|
-
opacity: $opacity_full;
|
|
141
|
-
}
|
|
142
|
-
}
|
|
143
|
-
|
|
144
|
-
&__desc {
|
|
145
|
-
margin-top: -0.2em;
|
|
146
|
-
margin-bottom: 1em;
|
|
147
|
-
opacity: $opacity_normal;
|
|
148
|
-
}
|
|
149
|
-
}
|
|
150
|
-
|
|
151
|
-
</style>
|
|
@@ -1,24 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* @copyright Copyright (c) 2019 Greta Doci <gretadoci@gmail.com>
|
|
3
|
-
*
|
|
4
|
-
* @author Greta Doci <gretadoci@gmail.com>
|
|
5
|
-
*
|
|
6
|
-
* @license GNU AGPL version 3 or any later version
|
|
7
|
-
*
|
|
8
|
-
* This program is free software: you can redistribute it and/or modify
|
|
9
|
-
* it under the terms of the GNU Affero General Public License as
|
|
10
|
-
* published by the Free Software Foundation, either version 3 of the
|
|
11
|
-
* License, or (at your option) any later version.
|
|
12
|
-
*
|
|
13
|
-
* This program is distributed in the hope that it will be useful,
|
|
14
|
-
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
15
|
-
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
|
16
|
-
* GNU Affero General Public License for more details.
|
|
17
|
-
*
|
|
18
|
-
* You should have received a copy of the GNU Affero General Public License
|
|
19
|
-
* along with this program. If not, see <http://www.gnu.org/licenses/>.
|
|
20
|
-
*
|
|
21
|
-
*/
|
|
22
|
-
import SettingsSection from './SettingsSection'
|
|
23
|
-
|
|
24
|
-
export default SettingsSection
|
|
@@ -1,149 +0,0 @@
|
|
|
1
|
-
<!--
|
|
2
|
-
- @copyright Copyright (c) 2019 Julius Härtl <jus@bitgrid.net>
|
|
3
|
-
-
|
|
4
|
-
- @author Julius Härtl <jus@bitgrid.net>
|
|
5
|
-
- @author Greta Doci <gretadoci@gmail.com>
|
|
6
|
-
-
|
|
7
|
-
- @license GNU AGPL version 3 or any later version
|
|
8
|
-
-
|
|
9
|
-
- This program is free software: you can redistribute it and/or modify
|
|
10
|
-
- it under the terms of the GNU Affero General Public License as
|
|
11
|
-
- published by the Free Software Foundation, either version 3 of the
|
|
12
|
-
- License, or (at your option) any later version.
|
|
13
|
-
-
|
|
14
|
-
- This program is distributed in the hope that it will be useful,
|
|
15
|
-
- but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
16
|
-
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
|
17
|
-
- GNU Affero General Public License for more details.
|
|
18
|
-
-
|
|
19
|
-
- You should have received a copy of the GNU Affero General Public License
|
|
20
|
-
- along with this program. If not, see <http://www.gnu.org/licenses/>.
|
|
21
|
-
-
|
|
22
|
-
-->
|
|
23
|
-
|
|
24
|
-
<template>
|
|
25
|
-
<Multiselect :value="inputValue"
|
|
26
|
-
:options="groupsArray"
|
|
27
|
-
:options-limit="5"
|
|
28
|
-
:placeholder="label"
|
|
29
|
-
track-by="id"
|
|
30
|
-
label="displayname"
|
|
31
|
-
class="multiselect-vue"
|
|
32
|
-
:multiple="true"
|
|
33
|
-
:close-on-select="false"
|
|
34
|
-
:tag-width="60"
|
|
35
|
-
:disabled="disabled"
|
|
36
|
-
@input="update"
|
|
37
|
-
@search-change="findGroup">
|
|
38
|
-
<span slot="noResult">{{ t( 'No results') }}</span>
|
|
39
|
-
</Multiselect>
|
|
40
|
-
</template>
|
|
41
|
-
|
|
42
|
-
<script>
|
|
43
|
-
import axios from '@nextcloud/axios'
|
|
44
|
-
import Multiselect from '../../components/Multiselect/Multiselect'
|
|
45
|
-
import GenRandomId from '../../utils/GenRandomId'
|
|
46
|
-
import { generateOcsUrl } from '@nextcloud/router'
|
|
47
|
-
import { showError } from '@nextcloud/dialogs'
|
|
48
|
-
import l10n from '../../mixins/l10n'
|
|
49
|
-
export default {
|
|
50
|
-
name: 'SettingsSelectGroup',
|
|
51
|
-
components: {
|
|
52
|
-
Multiselect,
|
|
53
|
-
},
|
|
54
|
-
mixins: [l10n],
|
|
55
|
-
props: {
|
|
56
|
-
/**
|
|
57
|
-
* label of the select group element
|
|
58
|
-
*/
|
|
59
|
-
label: {
|
|
60
|
-
type: String,
|
|
61
|
-
required: true,
|
|
62
|
-
},
|
|
63
|
-
|
|
64
|
-
/**
|
|
65
|
-
* hint of the select group input
|
|
66
|
-
*/
|
|
67
|
-
hint: {
|
|
68
|
-
type: String,
|
|
69
|
-
default: '',
|
|
70
|
-
},
|
|
71
|
-
|
|
72
|
-
/**
|
|
73
|
-
* id attribute of the select group element
|
|
74
|
-
*/
|
|
75
|
-
id: {
|
|
76
|
-
type: String,
|
|
77
|
-
default: () => 'action-' + GenRandomId(),
|
|
78
|
-
validator: id => id.trim() !== '',
|
|
79
|
-
},
|
|
80
|
-
|
|
81
|
-
/**
|
|
82
|
-
* value of the select group input
|
|
83
|
-
*/
|
|
84
|
-
value: {
|
|
85
|
-
type: Array,
|
|
86
|
-
default: () => [],
|
|
87
|
-
},
|
|
88
|
-
|
|
89
|
-
/**
|
|
90
|
-
* disabled state of the settings select group input
|
|
91
|
-
*/
|
|
92
|
-
disabled: {
|
|
93
|
-
type: Boolean,
|
|
94
|
-
default: false,
|
|
95
|
-
},
|
|
96
|
-
},
|
|
97
|
-
data() {
|
|
98
|
-
return {
|
|
99
|
-
groups: {},
|
|
100
|
-
randId: GenRandomId(),
|
|
101
|
-
}
|
|
102
|
-
},
|
|
103
|
-
computed: {
|
|
104
|
-
inputValue() {
|
|
105
|
-
return this.getValueObject()
|
|
106
|
-
},
|
|
107
|
-
getValueObject() {
|
|
108
|
-
return this.value.filter((group) => group !== '' && typeof group !== 'undefined').map(
|
|
109
|
-
(id) => {
|
|
110
|
-
if (typeof this.groups[id] === 'undefined') {
|
|
111
|
-
return {
|
|
112
|
-
id,
|
|
113
|
-
displayname: id,
|
|
114
|
-
}
|
|
115
|
-
}
|
|
116
|
-
return this.groups[id]
|
|
117
|
-
}
|
|
118
|
-
)
|
|
119
|
-
},
|
|
120
|
-
groupsArray() {
|
|
121
|
-
return Object.values(this.groups)
|
|
122
|
-
},
|
|
123
|
-
},
|
|
124
|
-
methods: {
|
|
125
|
-
update() {
|
|
126
|
-
this.$emit('input', this.inputValue.map((element) => element.id))
|
|
127
|
-
},
|
|
128
|
-
async findGroup(query) {
|
|
129
|
-
try {
|
|
130
|
-
query = typeof query === 'string' ? encodeURI(query) : ''
|
|
131
|
-
const response = await axios.get(generateOcsUrl(`cloud/groups/details?search=${query}&limit=10`, 2))
|
|
132
|
-
|
|
133
|
-
if (Object.keys(response.data.ocs.data.groups).length > 0) {
|
|
134
|
-
response.data.ocs.data.groups.forEach((element) => {
|
|
135
|
-
if (typeof this.groups[element.id] === 'undefined') {
|
|
136
|
-
this.$set(this.groups, element.id, element)
|
|
137
|
-
}
|
|
138
|
-
})
|
|
139
|
-
return true
|
|
140
|
-
}
|
|
141
|
-
} catch (error) {
|
|
142
|
-
this.$emit('error', error)
|
|
143
|
-
showError(t('Unable to search the group'))
|
|
144
|
-
}
|
|
145
|
-
return false
|
|
146
|
-
},
|
|
147
|
-
},
|
|
148
|
-
}
|
|
149
|
-
</script>
|