@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.
Files changed (290) hide show
  1. package/CHANGELOG.md +114 -19
  2. package/README.md +9 -10
  3. package/dist/Components/ActionButton.js +24 -3
  4. package/dist/Components/ActionButton.js.map +1 -1
  5. package/dist/Components/ActionCaption.js +23 -0
  6. package/dist/Components/ActionCaption.js.map +1 -0
  7. package/dist/Components/ActionCheckbox.js +24 -3
  8. package/dist/Components/ActionCheckbox.js.map +1 -1
  9. package/dist/Components/ActionInput.js +124 -21
  10. package/dist/Components/ActionInput.js.map +1 -1
  11. package/dist/Components/ActionLink.js +24 -3
  12. package/dist/Components/ActionLink.js.map +1 -1
  13. package/dist/Components/ActionRadio.js +24 -3
  14. package/dist/Components/ActionRadio.js.map +1 -1
  15. package/dist/Components/ActionRouter.js +23 -2
  16. package/dist/Components/ActionRouter.js.map +1 -1
  17. package/dist/Components/ActionSeparator.js +1 -1
  18. package/dist/Components/ActionSeparator.js.map +1 -1
  19. package/dist/Components/ActionText.js +23 -2
  20. package/dist/Components/ActionText.js.map +1 -1
  21. package/dist/Components/ActionTextEditable.js +45 -3
  22. package/dist/Components/ActionTextEditable.js.map +1 -1
  23. package/dist/Components/Actions.js +25 -4
  24. package/dist/Components/Actions.js.map +1 -1
  25. package/dist/Components/AppContent.js +21 -1
  26. package/dist/Components/AppContent.js.map +1 -1
  27. package/dist/Components/AppContentDetails.js +1 -1
  28. package/dist/Components/AppContentDetails.js.map +1 -1
  29. package/dist/Components/AppContentList.js +1 -1
  30. package/dist/Components/AppContentList.js.map +1 -1
  31. package/dist/Components/AppNavigation.js +109 -2
  32. package/dist/Components/AppNavigation.js.map +1 -1
  33. package/dist/Components/AppNavigationCaption.js +66 -1
  34. package/dist/Components/AppNavigationCaption.js.map +1 -1
  35. package/dist/Components/AppNavigationCounter.js +2 -2
  36. package/dist/Components/AppNavigationCounter.js.map +1 -1
  37. package/dist/Components/AppNavigationIconBullet.js +2 -2
  38. package/dist/Components/AppNavigationIconBullet.js.map +1 -1
  39. package/dist/Components/AppNavigationItem.js +49 -7
  40. package/dist/Components/AppNavigationItem.js.map +1 -1
  41. package/dist/Components/AppNavigationNew.js +1 -1
  42. package/dist/Components/AppNavigationNew.js.map +1 -1
  43. package/dist/Components/AppNavigationNewItem.js +2 -2
  44. package/dist/Components/AppNavigationNewItem.js.map +1 -1
  45. package/dist/Components/AppNavigationSettings.js +5 -5
  46. package/dist/Components/AppNavigationSettings.js.map +1 -1
  47. package/dist/Components/AppNavigationSpacer.js +1 -1
  48. package/dist/Components/AppNavigationSpacer.js.map +1 -1
  49. package/dist/Components/AppNavigationToggle.js +109 -2
  50. package/dist/Components/AppNavigationToggle.js.map +1 -1
  51. package/dist/Components/AppSettingsDialog.js +64 -22
  52. package/dist/Components/AppSettingsDialog.js.map +1 -1
  53. package/dist/Components/AppSettingsSection.js +1 -1
  54. package/dist/Components/AppSettingsSection.js.map +1 -1
  55. package/dist/Components/AppSidebar.js +38 -17
  56. package/dist/Components/AppSidebar.js.map +1 -1
  57. package/dist/Components/AppSidebarTab.js +1 -1
  58. package/dist/Components/AppSidebarTab.js.map +1 -1
  59. package/dist/Components/Avatar.js +9 -10
  60. package/dist/Components/Avatar.js.map +1 -1
  61. package/dist/Components/Breadcrumb.js +33 -12
  62. package/dist/Components/Breadcrumb.js.map +1 -1
  63. package/dist/Components/Breadcrumbs.js +59 -17
  64. package/dist/Components/Breadcrumbs.js.map +1 -1
  65. package/dist/Components/CheckboxRadioSwitch.js +44 -0
  66. package/dist/Components/CheckboxRadioSwitch.js.map +1 -0
  67. package/dist/Components/ColorPicker.js +6 -7
  68. package/dist/Components/ColorPicker.js.map +1 -1
  69. package/dist/Components/Content.js +2 -2
  70. package/dist/Components/Content.js.map +1 -1
  71. package/dist/Components/CounterBubble.js +23 -0
  72. package/dist/Components/CounterBubble.js.map +1 -0
  73. package/dist/Components/DatetimePicker.js +341 -3
  74. package/dist/Components/DatetimePicker.js.map +1 -1
  75. package/dist/Components/EmojiPicker.js +14 -14
  76. package/dist/Components/EmojiPicker.js.map +1 -1
  77. package/dist/Components/EmptyContent.js +2 -2
  78. package/dist/Components/EmptyContent.js.map +1 -1
  79. package/dist/Components/Highlight.js +3 -3
  80. package/dist/Components/Highlight.js.map +1 -1
  81. package/dist/Components/ListItem.js +130 -0
  82. package/dist/Components/ListItem.js.map +1 -0
  83. package/dist/Components/ListItemIcon.js +20 -21
  84. package/dist/Components/ListItemIcon.js.map +1 -1
  85. package/dist/Components/Modal.js +53 -11
  86. package/dist/Components/Modal.js.map +1 -1
  87. package/dist/Components/Multiselect.js +22 -23
  88. package/dist/Components/Multiselect.js.map +1 -1
  89. package/dist/Components/MultiselectTags.js +24 -25
  90. package/dist/Components/MultiselectTags.js.map +1 -1
  91. package/dist/Components/Popover.js +2 -2
  92. package/dist/Components/Popover.js.map +1 -1
  93. package/dist/Components/PopoverMenu.js +1 -1
  94. package/dist/Components/PopoverMenu.js.map +1 -1
  95. package/dist/Components/ProgressBar.js +2 -2
  96. package/dist/Components/ProgressBar.js.map +1 -1
  97. package/dist/Components/RichContenteditable.js +2 -2
  98. package/dist/Components/RichContenteditable.js.map +1 -1
  99. package/dist/Components/SettingsInputText.js +22 -1
  100. package/dist/Components/SettingsInputText.js.map +1 -1
  101. package/dist/Components/SettingsSection.js +2 -2
  102. package/dist/Components/SettingsSection.js.map +1 -1
  103. package/dist/Components/SettingsSelectGroup.js +41 -21
  104. package/dist/Components/SettingsSelectGroup.js.map +1 -1
  105. package/dist/Components/TimezonePicker.js +340 -0
  106. package/dist/Components/TimezonePicker.js.map +1 -0
  107. package/dist/Components/UserBubble.js +35 -36
  108. package/dist/Components/UserBubble.js.map +1 -1
  109. package/dist/Directives/Focus.js +1 -1
  110. package/dist/Directives/Focus.js.map +1 -1
  111. package/dist/Directives/Linkify.js +1 -1
  112. package/dist/Directives/Linkify.js.map +1 -1
  113. package/dist/Directives/Tooltip.js +2 -2
  114. package/dist/Directives/Tooltip.js.map +1 -1
  115. package/dist/Functions/usernameToColor.js +2 -3
  116. package/dist/Functions/usernameToColor.js.map +1 -1
  117. package/dist/Mixins/excludeClickOutsideClasses.js +2 -2
  118. package/dist/Mixins/excludeClickOutsideClasses.js.map +1 -1
  119. package/dist/Mixins/isFullscreen.js +1 -1
  120. package/dist/Mixins/isFullscreen.js.map +1 -1
  121. package/dist/Mixins/isMobile.js +1 -1
  122. package/dist/Mixins/isMobile.js.map +1 -1
  123. package/dist/Mixins/richEditor.js +1 -1
  124. package/dist/Mixins/richEditor.js.map +1 -1
  125. package/dist/ncvuecomponents.js +276 -69
  126. package/dist/ncvuecomponents.js.map +1 -1
  127. package/package.json +28 -43
  128. package/src/assets/action.scss +0 -132
  129. package/src/assets/iconfont/README.md +0 -30
  130. package/src/assets/iconfont/arrow-left-double.svg +0 -3
  131. package/src/assets/iconfont/arrow-left.svg +0 -3
  132. package/src/assets/iconfont/arrow-right-double.svg +0 -3
  133. package/src/assets/iconfont/arrow-right.svg +0 -3
  134. package/src/assets/iconfont/breadcrumb.svg +0 -1
  135. package/src/assets/iconfont/checkmark.svg +0 -1
  136. package/src/assets/iconfont/close.svg +0 -1
  137. package/src/assets/iconfont/confirm.svg +0 -1
  138. package/src/assets/iconfont/info.svg +0 -1
  139. package/src/assets/iconfont/menu.svg +0 -1
  140. package/src/assets/iconfont/more.svg +0 -1
  141. package/src/assets/iconfont/pause.svg +0 -1
  142. package/src/assets/iconfont/play.svg +0 -1
  143. package/src/assets/iconfont/triangle-s.svg +0 -1
  144. package/src/assets/iconfont/user-status-away.svg +0 -2
  145. package/src/assets/iconfont/user-status-dnd.svg +0 -2
  146. package/src/assets/iconfont/user-status-invisible.svg +0 -2
  147. package/src/assets/iconfont/user-status-online.svg +0 -2
  148. package/src/assets/inputs.scss +0 -104
  149. package/src/assets/variables.scss +0 -57
  150. package/src/components/ActionButton/ActionButton.vue +0 -160
  151. package/src/components/ActionButton/index.js +0 -24
  152. package/src/components/ActionCheckbox/ActionCheckbox.vue +0 -220
  153. package/src/components/ActionCheckbox/index.js +0 -24
  154. package/src/components/ActionInput/ActionInput.vue +0 -418
  155. package/src/components/ActionInput/index.js +0 -24
  156. package/src/components/ActionLink/ActionLink.vue +0 -132
  157. package/src/components/ActionLink/index.js +0 -24
  158. package/src/components/ActionRadio/ActionRadio.vue +0 -219
  159. package/src/components/ActionRadio/index.js +0 -24
  160. package/src/components/ActionRouter/ActionRouter.vue +0 -100
  161. package/src/components/ActionRouter/index.js +0 -24
  162. package/src/components/ActionSeparator/ActionSeparator.vue +0 -43
  163. package/src/components/ActionSeparator/index.js +0 -24
  164. package/src/components/ActionText/ActionText.vue +0 -87
  165. package/src/components/ActionText/index.js +0 -24
  166. package/src/components/ActionTextEditable/ActionTextEditable.vue +0 -306
  167. package/src/components/ActionTextEditable/index.js +0 -24
  168. package/src/components/Actions/Actions.vue +0 -764
  169. package/src/components/Actions/index.js +0 -24
  170. package/src/components/AppContent/AppContent.vue +0 -93
  171. package/src/components/AppContent/index.js +0 -23
  172. package/src/components/AppContentDetails/AppContentDetails.vue +0 -34
  173. package/src/components/AppContentDetails/index.js +0 -23
  174. package/src/components/AppContentList/AppContentList.vue +0 -44
  175. package/src/components/AppContentList/index.js +0 -23
  176. package/src/components/AppNavigation/AppNavigation.vue +0 -190
  177. package/src/components/AppNavigation/index.js +0 -23
  178. package/src/components/AppNavigationCaption/AppNavigationCaption.vue +0 -39
  179. package/src/components/AppNavigationCaption/index.js +0 -3
  180. package/src/components/AppNavigationCounter/AppNavigationCounter.vue +0 -82
  181. package/src/components/AppNavigationCounter/index.js +0 -25
  182. package/src/components/AppNavigationIconBullet/AppNavigationIconBullet.vue +0 -95
  183. package/src/components/AppNavigationIconBullet/index.js +0 -24
  184. package/src/components/AppNavigationItem/AppNavigationIconCollapsible.vue +0 -90
  185. package/src/components/AppNavigationItem/AppNavigationItem.vue +0 -629
  186. package/src/components/AppNavigationItem/InputConfirmCancel.vue +0 -134
  187. package/src/components/AppNavigationItem/index.js +0 -24
  188. package/src/components/AppNavigationNew/AppNavigationNew.vue +0 -76
  189. package/src/components/AppNavigationNew/index.js +0 -23
  190. package/src/components/AppNavigationNewItem/AppNavigationNewItem.vue +0 -165
  191. package/src/components/AppNavigationNewItem/index.js +0 -24
  192. package/src/components/AppNavigationSettings/AppNavigationSettings.vue +0 -105
  193. package/src/components/AppNavigationSettings/index.js +0 -23
  194. package/src/components/AppNavigationSpacer/AppNavigationSpacer.vue +0 -39
  195. package/src/components/AppNavigationSpacer/index.js +0 -23
  196. package/src/components/AppNavigationToggle/AppNavigationToggle.vue +0 -78
  197. package/src/components/AppNavigationToggle/index.js +0 -24
  198. package/src/components/AppSettingsDialog/AppSettingsDialog.vue +0 -331
  199. package/src/components/AppSettingsDialog/index.js +0 -25
  200. package/src/components/AppSettingsSection/AppSettingsSection.vue +0 -64
  201. package/src/components/AppSettingsSection/index.js +0 -25
  202. package/src/components/AppSidebar/AppSidebar.vue +0 -802
  203. package/src/components/AppSidebar/AppSidebarTabs.vue +0 -348
  204. package/src/components/AppSidebar/index.js +0 -23
  205. package/src/components/AppSidebarTab/AppSidebarTab.vue +0 -103
  206. package/src/components/AppSidebarTab/index.js +0 -23
  207. package/src/components/Avatar/Avatar.vue +0 -758
  208. package/src/components/Avatar/index.js +0 -25
  209. package/src/components/Breadcrumb/Breadcrumb.vue +0 -262
  210. package/src/components/Breadcrumb/index.js +0 -25
  211. package/src/components/Breadcrumbs/Breadcrumbs.vue +0 -537
  212. package/src/components/Breadcrumbs/index.js +0 -25
  213. package/src/components/ColorPicker/ColorPicker.vue +0 -380
  214. package/src/components/ColorPicker/index.js +0 -25
  215. package/src/components/Content/Content.vue +0 -77
  216. package/src/components/Content/index.js +0 -23
  217. package/src/components/DatetimePicker/DatetimePicker.vue +0 -195
  218. package/src/components/DatetimePicker/index.js +0 -28
  219. package/src/components/DatetimePicker/index.scss +0 -405
  220. package/src/components/EmojiPicker/EmojiPicker.vue +0 -302
  221. package/src/components/EmojiPicker/index.js +0 -23
  222. package/src/components/EmptyContent/EmptyContent.vue +0 -120
  223. package/src/components/EmptyContent/index.js +0 -24
  224. package/src/components/Highlight/Highlight.vue +0 -183
  225. package/src/components/Highlight/index.js +0 -25
  226. package/src/components/ListItemIcon/ListItemIcon.vue +0 -277
  227. package/src/components/ListItemIcon/index.js +0 -25
  228. package/src/components/Modal/Modal.vue +0 -833
  229. package/src/components/Modal/index.js +0 -27
  230. package/src/components/Multiselect/EllipsisedOption.vue +0 -141
  231. package/src/components/Multiselect/Multiselect.vue +0 -430
  232. package/src/components/Multiselect/index.js +0 -28
  233. package/src/components/Multiselect/index.scss +0 -290
  234. package/src/components/MultiselectTags/MultiselectTags.vue +0 -179
  235. package/src/components/MultiselectTags/api.js +0 -115
  236. package/src/components/MultiselectTags/index.js +0 -23
  237. package/src/components/Popover/Popover.vue +0 -208
  238. package/src/components/Popover/index.js +0 -25
  239. package/src/components/PopoverMenu/PopoverMenu.vue +0 -62
  240. package/src/components/PopoverMenu/PopoverMenuItem.vue +0 -382
  241. package/src/components/PopoverMenu/index.js +0 -24
  242. package/src/components/ProgressBar/ProgressBar.vue +0 -135
  243. package/src/components/ProgressBar/index.js +0 -25
  244. package/src/components/RichContenteditable/AutoCompleteResult.vue +0 -191
  245. package/src/components/RichContenteditable/MentionBubble.vue +0 -165
  246. package/src/components/RichContenteditable/RichContenteditable.vue +0 -517
  247. package/src/components/RichContenteditable/index.js +0 -25
  248. package/src/components/SettingsInputText/SettingsInputText.vue +0 -207
  249. package/src/components/SettingsInputText/index.js +0 -24
  250. package/src/components/SettingsSection/SettingsSection.vue +0 -151
  251. package/src/components/SettingsSection/index.js +0 -24
  252. package/src/components/SettingsSelectGroup/SettingsSelectGroup.vue +0 -149
  253. package/src/components/SettingsSelectGroup/index.js +0 -25
  254. package/src/components/UserBubble/UserBubble.vue +0 -319
  255. package/src/components/UserBubble/index.js +0 -25
  256. package/src/components/index.js +0 -110
  257. package/src/directives/Focus/index.js +0 -29
  258. package/src/directives/Linkify/index.js +0 -31
  259. package/src/directives/Tooltip/index.js +0 -32
  260. package/src/directives/Tooltip/index.scss +0 -117
  261. package/src/directives/index.js +0 -31
  262. package/src/fonts/iconfont-vue-f56d517.eot +0 -0
  263. package/src/fonts/iconfont-vue-f56d517.svg +0 -1
  264. package/src/fonts/iconfont-vue-f56d517.ttf +0 -0
  265. package/src/fonts/iconfont-vue-f56d517.woff +0 -0
  266. package/src/fonts/scss/iconfont-vue.scss +0 -115
  267. package/src/functions/usernameToColor/index.js +0 -25
  268. package/src/functions/usernameToColor/usernameToColor.js +0 -68
  269. package/src/index.js +0 -40
  270. package/src/l10n.js +0 -42
  271. package/src/mixins/actionGlobal.js +0 -59
  272. package/src/mixins/actionText.js +0 -85
  273. package/src/mixins/excludeClickOutsideClasses/index.js +0 -72
  274. package/src/mixins/index.js +0 -35
  275. package/src/mixins/isFullscreen/index.js +0 -46
  276. package/src/mixins/isMobile/index.js +0 -43
  277. package/src/mixins/l10n.js +0 -8
  278. package/src/mixins/richEditor/index.js +0 -160
  279. package/src/mixins/userStatus.js +0 -76
  280. package/src/utils/FindRanges.js +0 -47
  281. package/src/utils/GenColors.js +0 -79
  282. package/src/utils/GenRandomId.js +0 -31
  283. package/src/utils/GetChildren.js +0 -47
  284. package/src/utils/GetParent.js +0 -41
  285. package/src/utils/IsMobileState.js +0 -49
  286. package/src/utils/IsOutOfViewport.js +0 -36
  287. package/src/utils/ScopeComponent.js +0 -37
  288. package/src/utils/Timer.js +0 -61
  289. package/src/utils/ValidateChildren.js +0 -50
  290. 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>