@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,132 +0,0 @@
|
|
|
1
|
-
<!--
|
|
2
|
-
- @copyright Copyright (c) 2019 John Molakvoæ <skjnldsv@protonmail.com>
|
|
3
|
-
-
|
|
4
|
-
- @author John Molakvoæ <skjnldsv@protonmail.com>
|
|
5
|
-
- @author Marco Ambrosini <marcoambrosini@pm.me>
|
|
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
|
-
This component is made to be used inside of the [Actions](#Actions) component slots.
|
|
26
|
-
|
|
27
|
-
```
|
|
28
|
-
<Actions>
|
|
29
|
-
<ActionLink icon="icon-external" href="https://nextcloud.com">
|
|
30
|
-
Nextcloud website
|
|
31
|
-
</ActionLink>
|
|
32
|
-
</Actions>
|
|
33
|
-
```
|
|
34
|
-
</docs>
|
|
35
|
-
|
|
36
|
-
<template>
|
|
37
|
-
<li class="action">
|
|
38
|
-
<a
|
|
39
|
-
:download="download"
|
|
40
|
-
:href="href"
|
|
41
|
-
:aria-label="ariaLabel"
|
|
42
|
-
:target="target"
|
|
43
|
-
class="action-link focusable"
|
|
44
|
-
rel="noreferrer noopener"
|
|
45
|
-
@click="onClick">
|
|
46
|
-
|
|
47
|
-
<!-- @slot Manually provide icon -->
|
|
48
|
-
<slot name="icon">
|
|
49
|
-
<span :class="[isIconUrl ? 'action-link__icon--url' : icon]"
|
|
50
|
-
:style="{ backgroundImage: isIconUrl ? `url(${icon})` : null }"
|
|
51
|
-
class="action-link__icon" />
|
|
52
|
-
</slot>
|
|
53
|
-
|
|
54
|
-
<!-- long text with title -->
|
|
55
|
-
<p v-if="title">
|
|
56
|
-
<strong class="action-link__title">
|
|
57
|
-
{{ title }}
|
|
58
|
-
</strong>
|
|
59
|
-
<br>
|
|
60
|
-
<!-- white space is shown on longtext, so we can't
|
|
61
|
-
put {{ text }} on a new line for code readability -->
|
|
62
|
-
<span class="action-link__longtext" v-text="text" />
|
|
63
|
-
</p>
|
|
64
|
-
|
|
65
|
-
<!-- long text only -->
|
|
66
|
-
<!-- white space is shown on longtext, so we can't
|
|
67
|
-
put {{ text }} on a new line for code readability -->
|
|
68
|
-
<p v-else-if="isLongText"
|
|
69
|
-
class="action-link__longtext"
|
|
70
|
-
v-text="text" />
|
|
71
|
-
|
|
72
|
-
<!-- default text display -->
|
|
73
|
-
<span v-else class="action-link__text">{{ text }}</span>
|
|
74
|
-
|
|
75
|
-
<!-- fake slot to gather inner text -->
|
|
76
|
-
<slot v-if="false" />
|
|
77
|
-
</a>
|
|
78
|
-
</li>
|
|
79
|
-
</template>
|
|
80
|
-
|
|
81
|
-
<script>
|
|
82
|
-
import ActionTextMixin from '../../mixins/actionText'
|
|
83
|
-
|
|
84
|
-
export default {
|
|
85
|
-
name: 'ActionLink',
|
|
86
|
-
|
|
87
|
-
mixins: [ActionTextMixin],
|
|
88
|
-
|
|
89
|
-
props: {
|
|
90
|
-
/**
|
|
91
|
-
* destionation to link to
|
|
92
|
-
*/
|
|
93
|
-
href: {
|
|
94
|
-
type: String,
|
|
95
|
-
default: '#',
|
|
96
|
-
required: true,
|
|
97
|
-
validator: value => {
|
|
98
|
-
// href is either an anchor or a valid url starting with a scheme or a relative path
|
|
99
|
-
try {
|
|
100
|
-
return new URL(value)
|
|
101
|
-
} catch (error) {
|
|
102
|
-
return value.startsWith('#') || value.startsWith('/')
|
|
103
|
-
}
|
|
104
|
-
},
|
|
105
|
-
},
|
|
106
|
-
/**
|
|
107
|
-
* download the link instead of opening
|
|
108
|
-
*/
|
|
109
|
-
download: {
|
|
110
|
-
type: String,
|
|
111
|
-
default: null,
|
|
112
|
-
},
|
|
113
|
-
/**
|
|
114
|
-
* target to open the link
|
|
115
|
-
*/
|
|
116
|
-
target: {
|
|
117
|
-
type: String,
|
|
118
|
-
default: '_self',
|
|
119
|
-
validator: value => {
|
|
120
|
-
return ['_blank', '_self', '_parent', '_top'].indexOf(value) > -1
|
|
121
|
-
},
|
|
122
|
-
},
|
|
123
|
-
},
|
|
124
|
-
}
|
|
125
|
-
</script>
|
|
126
|
-
|
|
127
|
-
<style lang="scss" scoped>
|
|
128
|
-
@import '../../assets/action';
|
|
129
|
-
@include action-active;
|
|
130
|
-
@include action-item('link');
|
|
131
|
-
|
|
132
|
-
</style>
|
|
@@ -1,24 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* @copyright Copyright (c) 2019 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
|
-
import ActionLink from './ActionLink'
|
|
23
|
-
|
|
24
|
-
export default ActionLink
|
|
@@ -1,219 +0,0 @@
|
|
|
1
|
-
<!--
|
|
2
|
-
- @copyright Copyright (c) 2019 John Molakvoæ <skjnldsv@protonmail.com>
|
|
3
|
-
-
|
|
4
|
-
- @author John Molakvoæ <skjnldsv@protonmail.com>
|
|
5
|
-
- @author Marco Ambrosini <marcoambrosini@pm.me>
|
|
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
|
-
This component is made to be used inside of the [Actions](#Actions) component slots.
|
|
26
|
-
Usually, you will provide a name prop to bind the radio together.
|
|
27
|
-
So that only one of each name set can be selected at the same time.
|
|
28
|
-
|
|
29
|
-
```vue
|
|
30
|
-
<Actions>
|
|
31
|
-
<ActionRadio @change="alert('(un)checked !')" name="uniqueId">First choice</ActionRadio>
|
|
32
|
-
<ActionRadio value="second" name="uniqueId" @change="alert('(un)checked !')">Second choice</ActionRadio>
|
|
33
|
-
<ActionRadio :checked="true" name="uniqueId" @change="alert('(un)checked !')">Third choice (checked)</ActionRadio>
|
|
34
|
-
<ActionRadio :disabled="true" name="uniqueId" @change="alert('(un)checked !')">Second choice (disabled)</ActionRadio>
|
|
35
|
-
</Actions>
|
|
36
|
-
```
|
|
37
|
-
</docs>
|
|
38
|
-
|
|
39
|
-
<template>
|
|
40
|
-
<li class="action" :class="{ 'action--disabled': disabled }">
|
|
41
|
-
<span class="action-radio">
|
|
42
|
-
<input :id="id"
|
|
43
|
-
ref="radio"
|
|
44
|
-
:disabled="disabled"
|
|
45
|
-
:checked="checked"
|
|
46
|
-
:name="name"
|
|
47
|
-
:value="value"
|
|
48
|
-
:class="{ focusable: isFocusable }"
|
|
49
|
-
type="radio"
|
|
50
|
-
class="radio action-radio__radio"
|
|
51
|
-
@keydown.enter.exact.prevent="toggleInput"
|
|
52
|
-
@change="onChange">
|
|
53
|
-
<label ref="label" :for="id" class="action-radio__label">{{ text }}</label>
|
|
54
|
-
|
|
55
|
-
<!-- fake slot to gather inner text -->
|
|
56
|
-
<slot v-if="false" />
|
|
57
|
-
</span>
|
|
58
|
-
</li>
|
|
59
|
-
</template>
|
|
60
|
-
|
|
61
|
-
<script>
|
|
62
|
-
import ActionGlobalMixin from '../../mixins/actionGlobal'
|
|
63
|
-
import GenRandomId from '../../utils/GenRandomId'
|
|
64
|
-
|
|
65
|
-
export default {
|
|
66
|
-
name: 'ActionRadio',
|
|
67
|
-
|
|
68
|
-
mixins: [ActionGlobalMixin],
|
|
69
|
-
|
|
70
|
-
props: {
|
|
71
|
-
/**
|
|
72
|
-
* id attribute of the radio element
|
|
73
|
-
*/
|
|
74
|
-
id: {
|
|
75
|
-
type: String,
|
|
76
|
-
default: () => 'action-' + GenRandomId(),
|
|
77
|
-
validator: id => id.trim() !== '',
|
|
78
|
-
},
|
|
79
|
-
|
|
80
|
-
/**
|
|
81
|
-
* checked state of the the radio element
|
|
82
|
-
*/
|
|
83
|
-
checked: {
|
|
84
|
-
type: Boolean,
|
|
85
|
-
default: false,
|
|
86
|
-
},
|
|
87
|
-
|
|
88
|
-
/**
|
|
89
|
-
* Define if this radio is part of a set.
|
|
90
|
-
* Checking the radio will disable all the
|
|
91
|
-
* others with the same name.
|
|
92
|
-
*/
|
|
93
|
-
name: {
|
|
94
|
-
type: String,
|
|
95
|
-
required: true,
|
|
96
|
-
},
|
|
97
|
-
|
|
98
|
-
/**
|
|
99
|
-
* value of the radio input
|
|
100
|
-
*/
|
|
101
|
-
value: {
|
|
102
|
-
type: [String, Number],
|
|
103
|
-
default: '',
|
|
104
|
-
},
|
|
105
|
-
|
|
106
|
-
/**
|
|
107
|
-
* disabled state of the radio element
|
|
108
|
-
*/
|
|
109
|
-
disabled: {
|
|
110
|
-
type: Boolean,
|
|
111
|
-
default: false,
|
|
112
|
-
},
|
|
113
|
-
},
|
|
114
|
-
|
|
115
|
-
computed: {
|
|
116
|
-
/**
|
|
117
|
-
* determines if the action is focusable
|
|
118
|
-
* @returns {boolean} is the action focusable ?
|
|
119
|
-
*/
|
|
120
|
-
isFocusable() {
|
|
121
|
-
return !this.disabled
|
|
122
|
-
},
|
|
123
|
-
},
|
|
124
|
-
|
|
125
|
-
methods: {
|
|
126
|
-
toggleInput(event) {
|
|
127
|
-
// by clicking we also trigger the change event
|
|
128
|
-
this.$refs.label.click()
|
|
129
|
-
},
|
|
130
|
-
onChange(event) {
|
|
131
|
-
/**
|
|
132
|
-
* Emitted when the radio state is changed
|
|
133
|
-
* @type {boolean}
|
|
134
|
-
*/
|
|
135
|
-
this.$emit('update:checked', this.$refs.radio.checked)
|
|
136
|
-
|
|
137
|
-
/**
|
|
138
|
-
* Emitted when the radio state is changed
|
|
139
|
-
* @type {Event}
|
|
140
|
-
*/
|
|
141
|
-
this.$emit('change', event)
|
|
142
|
-
},
|
|
143
|
-
},
|
|
144
|
-
}
|
|
145
|
-
</script>
|
|
146
|
-
|
|
147
|
-
<style lang="scss" scoped>
|
|
148
|
-
@import '../../assets/action';
|
|
149
|
-
@include action-active;
|
|
150
|
-
@include action--disabled;
|
|
151
|
-
|
|
152
|
-
.action-radio {
|
|
153
|
-
display: flex;
|
|
154
|
-
align-items: flex-start;
|
|
155
|
-
|
|
156
|
-
width: 100%;
|
|
157
|
-
height: auto;
|
|
158
|
-
margin: 0;
|
|
159
|
-
padding: 0;
|
|
160
|
-
|
|
161
|
-
cursor: pointer;
|
|
162
|
-
white-space: nowrap;
|
|
163
|
-
|
|
164
|
-
color: var(--color-main-text);
|
|
165
|
-
border: 0;
|
|
166
|
-
border-radius: 0; // otherwise Safari will cut the border-radius area
|
|
167
|
-
background-color: transparent;
|
|
168
|
-
box-shadow: none;
|
|
169
|
-
|
|
170
|
-
font-weight: normal;
|
|
171
|
-
line-height: $clickable-area;
|
|
172
|
-
|
|
173
|
-
/* checkbox/radio fixes */
|
|
174
|
-
&__radio {
|
|
175
|
-
position: absolute;
|
|
176
|
-
top: auto;
|
|
177
|
-
left: -10000px;
|
|
178
|
-
|
|
179
|
-
overflow: hidden;
|
|
180
|
-
|
|
181
|
-
width: 1px;
|
|
182
|
-
height: 1px;
|
|
183
|
-
&:focus + .action-radio__label {
|
|
184
|
-
opacity: $opacity_full;
|
|
185
|
-
}
|
|
186
|
-
}
|
|
187
|
-
|
|
188
|
-
&__label {
|
|
189
|
-
display: flex;
|
|
190
|
-
align-items: center; // align radio to text
|
|
191
|
-
|
|
192
|
-
width: 100%;
|
|
193
|
-
padding: 0 !important;
|
|
194
|
-
padding-right: $icon-margin !important;
|
|
195
|
-
|
|
196
|
-
opacity: $opacity_normal;
|
|
197
|
-
// radio-width is 12px, border is 2
|
|
198
|
-
// (44 - 14 - 2) / 2 = 14
|
|
199
|
-
&::before {
|
|
200
|
-
margin: 0 14px 0 !important;
|
|
201
|
-
}
|
|
202
|
-
}
|
|
203
|
-
|
|
204
|
-
&--disabled {
|
|
205
|
-
&,
|
|
206
|
-
.action-radio__label {
|
|
207
|
-
cursor: pointer;
|
|
208
|
-
}
|
|
209
|
-
}
|
|
210
|
-
|
|
211
|
-
&:not(.action-radio--disabled):hover,
|
|
212
|
-
&:not(.action-radio--disabled):focus {
|
|
213
|
-
.action-radio__label {
|
|
214
|
-
opacity: $opacity_full;
|
|
215
|
-
}
|
|
216
|
-
}
|
|
217
|
-
}
|
|
218
|
-
|
|
219
|
-
</style>
|
|
@@ -1,24 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* @copyright Copyright (c) 2019 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
|
-
import ActionRadio from './ActionRadio'
|
|
23
|
-
|
|
24
|
-
export default ActionRadio
|
|
@@ -1,100 +0,0 @@
|
|
|
1
|
-
<!--
|
|
2
|
-
- @copyright Copyright (c) 2019 John Molakvoæ <skjnldsv@protonmail.com>
|
|
3
|
-
-
|
|
4
|
-
- @author John Molakvoæ <skjnldsv@protonmail.com>
|
|
5
|
-
- @author Marco Ambrosini <marcoambrosini@pm.me>
|
|
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
|
-
<li class="action">
|
|
26
|
-
<router-link :to="to"
|
|
27
|
-
:exact="exact"
|
|
28
|
-
class="action-router focusable"
|
|
29
|
-
:aria-label="ariaLabel"
|
|
30
|
-
rel="noreferrer noopener"
|
|
31
|
-
@click.native="onClick">
|
|
32
|
-
<!-- @slot Manually provide icon -->
|
|
33
|
-
<slot name="icon">
|
|
34
|
-
<span :class="[isIconUrl ? 'action-router__icon--url' : icon]"
|
|
35
|
-
:style="{ backgroundImage: isIconUrl ? `url(${icon})` : null }"
|
|
36
|
-
class="action-router__icon" />
|
|
37
|
-
</slot>
|
|
38
|
-
|
|
39
|
-
<!-- long text with title -->
|
|
40
|
-
<p v-if="title">
|
|
41
|
-
<strong class="action-router__title">
|
|
42
|
-
{{ title }}
|
|
43
|
-
</strong>
|
|
44
|
-
<br>
|
|
45
|
-
<!-- white space is shown on longtext, so we can't
|
|
46
|
-
put {{ text }} on a new line for code readability -->
|
|
47
|
-
<span class="action-router__longtext" v-text="text" />
|
|
48
|
-
</p>
|
|
49
|
-
|
|
50
|
-
<!-- long text only -->
|
|
51
|
-
<!-- white space is shown on longtext, so we can't
|
|
52
|
-
put {{ text }} on a new line for code readability -->
|
|
53
|
-
<p v-else-if="isLongText"
|
|
54
|
-
class="action-router__longtext"
|
|
55
|
-
v-text="text" />
|
|
56
|
-
|
|
57
|
-
<!-- default text display -->
|
|
58
|
-
<span v-else class="action-router__text">{{ text }}</span>
|
|
59
|
-
|
|
60
|
-
<!-- fake slot to gather inner text -->
|
|
61
|
-
<slot v-if="false" />
|
|
62
|
-
</router-link>
|
|
63
|
-
</li>
|
|
64
|
-
</template>
|
|
65
|
-
|
|
66
|
-
<script>
|
|
67
|
-
import ActionTextMixin from '../../mixins/actionText'
|
|
68
|
-
|
|
69
|
-
export default {
|
|
70
|
-
name: 'ActionRouter',
|
|
71
|
-
|
|
72
|
-
mixins: [ActionTextMixin],
|
|
73
|
-
|
|
74
|
-
props: {
|
|
75
|
-
/**
|
|
76
|
-
* router-link to prop [https://router.vuejs.org/api/#to](https://router.vuejs.org/api/#to)
|
|
77
|
-
*/
|
|
78
|
-
to: {
|
|
79
|
-
type: [String, Object],
|
|
80
|
-
default: '',
|
|
81
|
-
required: true,
|
|
82
|
-
},
|
|
83
|
-
/**
|
|
84
|
-
* router-link exact prop [https://router.vuejs.org/api/#exact](https://router.vuejs.org/api/#exact)
|
|
85
|
-
*/
|
|
86
|
-
exact: {
|
|
87
|
-
type: Boolean,
|
|
88
|
-
default: false,
|
|
89
|
-
},
|
|
90
|
-
},
|
|
91
|
-
}
|
|
92
|
-
</script>
|
|
93
|
-
|
|
94
|
-
<style lang="scss" scoped>
|
|
95
|
-
@import '../../assets/action';
|
|
96
|
-
@include action-active;
|
|
97
|
-
@include action-item('router');
|
|
98
|
-
@include action--disabled;
|
|
99
|
-
|
|
100
|
-
</style>
|