From 9969f6a0551eea28af6191019cbf544961b7d235 Mon Sep 17 00:00:00 2001 From: Andrew Morgan Date: Mon, 8 Oct 2018 18:00:10 +0000 Subject: [PATCH 001/212] Fix repo downloading commands spacing and automatic repo selection --- docs/installation/debian.rst | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/docs/installation/debian.rst b/docs/installation/debian.rst index 1ce9d4a9e..7614dc689 100644 --- a/docs/installation/debian.rst +++ b/docs/installation/debian.rst @@ -112,13 +112,14 @@ Then we'll download the frontend files: case, run cd /srv + rm -r funkwhale - git clone https://code.eliotberriot.com/funkwhale/funkwhale funkwhale + + git clone -b master https://code.eliotberriot.com/funkwhale/funkwhale funkwhale + cd funkwhale - By default, the repository will use the ``develop`` which may be unstable thus not recommended for production instances (unless you know what your doing). You should use the master branch instead: - - git checkout master + The above clone command uses the master branch instead of the default develop branch, as master is stable and more suited for production setups. You'll also need to re-create the folders we make earlier: From 0dd64ba8136a7bf877d8b8e8a9eb294bfc5f6cc8 Mon Sep 17 00:00:00 2001 From: Andrew Morgan Date: Tue, 9 Oct 2018 12:07:13 +0000 Subject: [PATCH 002/212] Fix duplicate word typo --- docs/importing-music.rst | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/importing-music.rst b/docs/importing-music.rst index 4b4ea7c1d..103212234 100644 --- a/docs/importing-music.rst +++ b/docs/importing-music.rst @@ -78,7 +78,7 @@ configuration options to ensure the webserver can serve them properly: We recommend you symlink all your music directories into ``/srv/funkwhale/data/music`` and run the `import_files` command from that directory. This will make it possible -to use multiple music music directories, without any additional configuration +to use multiple music directories, without any additional configuration on the webserver side. For instance, if you have a NFS share with your music mounted at ``/media/mynfsshare``, From b4a409f80e975bb0f8bdd08eb2eff99e6fd16e1a Mon Sep 17 00:00:00 2001 From: Andrew Morgan Date: Tue, 9 Oct 2018 12:39:00 +0000 Subject: [PATCH 003/212] Typos --- docs/users/apps.rst | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/docs/users/apps.rst b/docs/users/apps.rst index f3e412d56..1f40e9e87 100644 --- a/docs/users/apps.rst +++ b/docs/users/apps.rst @@ -6,8 +6,8 @@ the one you use in your browser. While the web client works okay, it's still not ready for some use cases, especially: -- Usage on narrow/touche screens (smartphones, tablets) -- Usage on the go, with an intermittent connexion +- Usage on narrow/touch screens (smartphones, tablets) +- Usage on the go, with an intermittent connection This pages lists alternative clients you can use to connect to your Funkwhale instance and enjoy your music. From 47114f4032060e82cb50f3489bd20dc754184f58 Mon Sep 17 00:00:00 2001 From: interfect Date: Thu, 11 Oct 2018 03:54:46 +0000 Subject: [PATCH 004/212] Revise discussion of import methods and improve wording youtube-dl has been removed, and in-place import and federation probably deserve mention. --- docs/features.rst | 31 ++++++++++++++++--------------- 1 file changed, 16 insertions(+), 15 deletions(-) diff --git a/docs/features.rst b/docs/features.rst index 7fefa70b8..91bb004ef 100644 --- a/docs/features.rst +++ b/docs/features.rst @@ -4,52 +4,53 @@ Features Scope ------ -Funkwhale is a web based music server. It is similar in term of goals and feature set to various existing projects, such as `Sonerezh `_ or `Airsonic `_. +Funkwhale is a web based music server. It is similar in terms of goals and feature set to various existing projects, such as `Sonerezh `_ or `Airsonic `_. A social platform ------------------ However, Funkwhale is better-suited for small to medium communities and was designed to be not only a music server and player, but also a place to socialize around music and discover new content. While some of these features are not currently implemented, our roadmap includes: -- Radios, to discover the music of a given user, artist, genre... +- Radios, to discover the music of a given user, artist, or genre - Playlists - Favorites -- Broadcasts, as they existed in Grooveshark, for example +- Broadcasts, as they existed in, for example, Grooveshark - Recommendations Music acquisition ------------------ -Funkwhale is not bundled with any music, and you'll have to import your own music in the platform using the bundled plugins. +Funkwhale is not bundled with any music, and you'll have to import your own music into the platform. -At the moment, you can feed your existing music library to the server and, assuming it has the correct tags defined on the files, it will be imported seamlessly. +At the moment, you can feed your existing music library to the server either by uploading it or by using :ref:`in-place-import` from a server-side directory. Assuming the files have the correct tags defined, they will be imported seamlessly. -You can also import music directly from YouTube (other sources coming, thanks to `Youtube-dl `_). Downloading and publishing copyrighted content may be forbidden in your country, though. +You can also access music being made available by other Funkwhale instances using :doc:`federation`. Metadata --------- -In order to keep your library clean, browsable and aggregate relevant data about artists, albums and tracks, we fetch a lot of metadata from the `MusicBrainz project `_. +In order to keep your library clean, browsable, and well-stocked with relevant data about artists, albums and tracks, we fetch a lot of metadata from the `MusicBrainz project `_. Structure --------- -The project itself is splitted in two parts: +The project itself is split in two parts: 1. The backend, a REST API developped using Python3 and Django 2. The frontend, that consumes the API, built as a single page application with VueJS and Semantic UI -While the main interface to the server and API is the bundled front-end, the project itself is agnostic in the way you connect to it. Therefore, desktop clients or apps could be developped and implement the same (or even more) features as the bundled frontend. +While the main interface to the server and API is the bundled front-end, the project itself is agnostic in the way you connect to it. Therefore, desktop clients or apps could be developped and could implement the same (or even more) features as the bundled frontend. -This modularity also makes it possible do deploy only a single component from the system. +This modularity also makes it possible to deploy only a single component from the system. Federation ---------- Each Funkwhale instance is able to fetch music from other compatible servers, -and share its own library on the network. The federation is implemented -using the ActivityPub protocol, in order to leverage existing tools -and be compatible with other services such as Mastodon. +and share its own library on the network, in a process known as "federation". +Federation is implemented using the ActivityPub protocol, in order to leverage +existing tools and be compatible with other services such as Mastodon. -As of today, federation only targets music acquisition, meaning user interaction -are not shared via ActivityPub. This will be implemented at a later point. +As of today, federation only targets music acquisition, meaning user +interactions are not shared via ActivityPub. This will be implemented at a later +point. From 68120388478d8f61ef6647156537d0e36e44c77f Mon Sep 17 00:00:00 2001 From: interfect Date: Thu, 11 Oct 2018 04:05:43 +0000 Subject: [PATCH 005/212] Fix some typos and improve language in the federation documentation --- docs/federation/index.rst | 24 ++++++++++++------------ 1 file changed, 12 insertions(+), 12 deletions(-) diff --git a/docs/federation/index.rst b/docs/federation/index.rst index cbc8cd155..b1fe86e4a 100644 --- a/docs/federation/index.rst +++ b/docs/federation/index.rst @@ -17,7 +17,7 @@ Funkwhale's federation is built on top of the following technologies: Support for the following is planned but not implemented-yet: -- `JSON-LD signatures`_ as an alternate mean to authentify messages +- `JSON-LD signatures`_ as an alternate mean to authenticate messages .. _ActivityPub: https://www.w3.org/TR/activitypub/ .. _HTTP Signatures: https://tools.ietf.org/id/draft-cavage-http-signatures-01.html @@ -85,13 +85,13 @@ to posting an activity to an outbox, we create an object, with the proper payloa and create a ``Delivery`` object in our database, linked to the initial activity and the inbox or shared inbox url. This ``Delivery`` object is then used by our worker to post the activity content to the url. -Receiving an activity from a remote actor in a local inbox is basically the same, but we skip 2#. +Receiving an activity from a remote actor in a local inbox is basically the same, but we skip step 2. Funkwhale does not support all activities, and we have a basic routing logic to handle specific activities, and discard unsupported ones. Unsupported activities are still received and stored though. -If a delivered activity match one of our routes, a dedicated handler is called, +If a delivered activity matches one of our routes, a dedicated handler is called, which can trigger additionnal logic. For instance, if we receive a :ref:`activity-create` activity for an :ref:`object-audio` object, our handler will persist the proper data in our local ``Upload`` table, retrieve the audio cover, etc. @@ -143,10 +143,10 @@ When a follow is received on a :ref:`object-Library`, Funkwhale will behave diff depending on the visibility of the library: - Automatic accept, when the library is public: a notification is sent to the library owner, and an :ref:`activity-accept` is sent automatically to the follow actor. -- Manuel accept, in all other cases: a notification is sent to the library owner. After manual approval from the owner, an :ref:`activity-accept` is sent to the follow actor. +- Manual accept, in all other cases: a notification is sent to the library owner. After manual approval from the owner, an :ref:`activity-accept` is sent to the follow actor. -Funkwhale uses library follows status to grant access to the follow actor. If a library -is not public and an actor does not have an approved follow, library content must be +Funkwhale uses library follow status to grant access to the follow actor. If a library +is not public and an actor does not have an approved follow, library content will be inaccessible to the actor. Checks @@ -368,19 +368,19 @@ In this example, Bob notifies the followers of their library that 3 objects were .. note:: - For performance reason, when deleting :ref:`object-audio` objects, Funkwhale support + For performance reason, when deleting :ref:`object-audio` objects, Funkwhale supports either a list of ids or a single id. Internal logic ************** -When a :ref:`activity-delete` is received, the corresponding objects are deleted immediatly +When a :ref:`activity-delete` is received, the corresponding objects are immediately deleted from the database. Checks ****** -Before handling deletion, Funkwhale ensure the actor initiating the activity +Before handling deletion, Funkwhale ensures the actor initiating the activity is the owner of the deleted :ref:`object-audio` or :ref:`object-Library`. Supported objects @@ -494,7 +494,7 @@ Structure - **published** (required): the publication date of the entity (on the federation) - **musicbrainzId** (optional): the musicbrainz recording id - **album** (required): the :ref:`object-album` that contains the track -- **artists** (required): a list of :ref:`object-artist` objects involved in the track (they can differ fro mthe album artists) +- **artists** (required): a list of :ref:`object-artist` objects involved in the track (they can differ from the album artists) .. _object-library: @@ -591,7 +591,7 @@ Structure .. note:: - Accessing the Audio file via its url requires authentication and an approved follow on the upload library, + Accessing the Audio file via its url requires authentication and an approved follow on the containing library, unless the library is public. @@ -600,7 +600,7 @@ Structure Audio fetching on restricted libraries -------------------------------------- -:ref:`object-library` and :ref:`object-audio` url objects may require additional authentications +:ref:`object-library` and :ref:`object-audio` url objects may require additional authentication to be accessed. For :ref:`object-library` objects: From 6e41009be686b6d3e257b2537c2d1fc04397e01e Mon Sep 17 00:00:00 2001 From: akhardya Date: Fri, 12 Oct 2018 15:50:16 +0200 Subject: [PATCH 006/212] fix some links and typo --- CONTRIBUTING.rst | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/CONTRIBUTING.rst b/CONTRIBUTING.rst index 0c2bd5bbd..86e9f1f44 100644 --- a/CONTRIBUTING.rst +++ b/CONTRIBUTING.rst @@ -35,7 +35,8 @@ Setup front-end only development environment cd funkwhale cd front -2. Install [nodejs](https://nodejs.org/en/download/package-manager/) and [yarn](https://yarnpkg.com/lang/en/docs/install/#debian-stable) +2. Install `nodejs `_ and `yarn `_ + 3. Install the dependencies:: yarn install @@ -47,6 +48,7 @@ Setup front-end only development environment 5. Make the front-end talk with an existing server (like https://demo.funkwhale.audio), by clicking on the corresponding link in the footer + 6. Start hacking! Setup your development environment @@ -307,7 +309,7 @@ A typical fragment looks like that: Fixed broken audio player on Chrome 42 for ogg files (#567) If the work fixes one or more issues, the issue number should be included at the -end of the fragment (``(#567)`` is the issue number in the previous example. +end of the fragment (``(#567)`` is the issue number in the previous example). If your work is not related to a specific issue, use the merge request identifier instead, like this: @@ -507,7 +509,7 @@ useful when testing components that depend on each other: # here, we ensure no email was sent mocked_notify.assert_not_called() -Views: you can find some readable views tests in :file:`tests/users/test_views.py` +Views: you can find some readable views tests in file: ``api/tests/users/test_views.py`` .. note:: From b9ad6ca90844d1e50a6922b3b1c23ffeab4dda6b Mon Sep 17 00:00:00 2001 From: JocelynDelalande Date: Fri, 12 Oct 2018 23:52:55 +0000 Subject: [PATCH 007/212] Fix 0.17 upgrade instructions. Make them consistent with general upgrade instructions. --- docs/upgrading/0.17.rst | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/docs/upgrading/0.17.rst b/docs/upgrading/0.17.rst index 1414b563e..ccd3f1c3f 100644 --- a/docs/upgrading/0.17.rst +++ b/docs/upgrading/0.17.rst @@ -196,8 +196,8 @@ On docker-setups:: On non docker-setups:: # if you missed this one from a previous upgrade - python api/manage.py script create_actors --no-input - python api/manage.py script migrate_to_user_libraries --no-input + sudo -u funkwhale -E /srv/funkwhale/virtualenv/bin/python api/manage.py script create_actors --no-input + sudo -u funkwhale -E /srv/funkwhale/virtualenv/bin/python api/manage.py script migrate_to_user_libraries --no-input If the scripts ends without errors, you're instance should be updated and ready to use :) From a8f7893defa1546c004f148265e6f6cc393ce9cb Mon Sep 17 00:00:00 2001 From: Eliot Berriot Date: Sat, 20 Oct 2018 16:14:59 +0200 Subject: [PATCH 008/212] Fix #470: Properly encode Wikipedia and lyrics search urls --- changes/changelog.d/470.bugfix | 1 + front/src/components/library/Album.vue | 2 +- front/src/components/library/Artist.vue | 2 +- front/src/components/library/Track.vue | 4 ++-- 4 files changed, 5 insertions(+), 4 deletions(-) create mode 100644 changes/changelog.d/470.bugfix diff --git a/changes/changelog.d/470.bugfix b/changes/changelog.d/470.bugfix new file mode 100644 index 000000000..f26c4ddc3 --- /dev/null +++ b/changes/changelog.d/470.bugfix @@ -0,0 +1 @@ +Properly encode Wikipedia and lyrics search urls (#470) diff --git a/front/src/components/library/Album.vue b/front/src/components/library/Album.vue index 03d83e064..8956d14cc 100644 --- a/front/src/components/library/Album.vue +++ b/front/src/components/library/Album.vue @@ -102,7 +102,7 @@ export default { } }, wikipediaUrl () { - return 'https://en.wikipedia.org/w/index.php?search=' + this.album.title + ' ' + this.album.artist.name + return 'https://en.wikipedia.org/w/index.php?search=' + encodeURI(this.album.title + ' ' + this.album.artist.name) }, musicbrainzUrl () { return 'https://musicbrainz.org/release/' + this.album.mbid diff --git a/front/src/components/library/Artist.vue b/front/src/components/library/Artist.vue index fe74f6f17..387596be1 100644 --- a/front/src/components/library/Artist.vue +++ b/front/src/components/library/Artist.vue @@ -151,7 +151,7 @@ export default { }).length > 0 }, wikipediaUrl () { - return 'https://en.wikipedia.org/w/index.php?search=' + this.artist.name + return 'https://en.wikipedia.org/w/index.php?search=' + encodeURI(this.artist.name) }, musicbrainzUrl () { return 'https://musicbrainz.org/artist/' + this.artist.mbid diff --git a/front/src/components/library/Track.vue b/front/src/components/library/Track.vue index 75d5f650d..040d3a466 100644 --- a/front/src/components/library/Track.vue +++ b/front/src/components/library/Track.vue @@ -196,7 +196,7 @@ export default { } }, wikipediaUrl () { - return 'https://en.wikipedia.org/w/index.php?search=' + this.track.title + ' ' + this.track.artist.name + return 'https://en.wikipedia.org/w/index.php?search=' + encodeURI(this.track.title + ' ' + this.track.artist.name) }, musicbrainzUrl () { return 'https://musicbrainz.org/recording/' + this.track.mbid @@ -211,7 +211,7 @@ export default { lyricsSearchUrl () { let base = 'http://lyrics.wikia.com/wiki/Special:Search?query=' let query = this.track.artist.name + ' ' + this.track.title - return base + query + return base + encodeURI(query) }, cover () { return null From 10fff6ea673012e047972b4023fe25432b5cca13 Mon Sep 17 00:00:00 2001 From: Eliot Berriot Date: Sat, 20 Oct 2018 16:20:29 +0200 Subject: [PATCH 009/212] Fix #422: Do not display "view on MusicBrainz" button if we miss the mbid --- changes/changelog.d/422.bugfix | 1 + front/src/components/library/Album.vue | 6 ++++-- front/src/components/library/Artist.vue | 6 ++++-- front/src/components/library/Track.vue | 6 ++++-- 4 files changed, 13 insertions(+), 6 deletions(-) create mode 100644 changes/changelog.d/422.bugfix diff --git a/changes/changelog.d/422.bugfix b/changes/changelog.d/422.bugfix new file mode 100644 index 000000000..c75b19c7f --- /dev/null +++ b/changes/changelog.d/422.bugfix @@ -0,0 +1 @@ +Do not display "view on MusicBrainz" button if we miss the mbid (#422) diff --git a/front/src/components/library/Album.vue b/front/src/components/library/Album.vue index 8956d14cc..8ea983369 100644 --- a/front/src/components/library/Album.vue +++ b/front/src/components/library/Album.vue @@ -33,7 +33,7 @@ Search on Wikipedia - + View on MusicBrainz @@ -105,7 +105,9 @@ export default { return 'https://en.wikipedia.org/w/index.php?search=' + encodeURI(this.album.title + ' ' + this.album.artist.name) }, musicbrainzUrl () { - return 'https://musicbrainz.org/release/' + this.album.mbid + if (this.album.mbid) { + return 'https://musicbrainz.org/release/' + this.album.mbid + } }, headerStyle () { if (!this.album.cover.original) { diff --git a/front/src/components/library/Artist.vue b/front/src/components/library/Artist.vue index 387596be1..7a3c1f7c7 100644 --- a/front/src/components/library/Artist.vue +++ b/front/src/components/library/Artist.vue @@ -31,7 +31,7 @@ Search on Wikipedia - + View on MusicBrainz @@ -154,7 +154,9 @@ export default { return 'https://en.wikipedia.org/w/index.php?search=' + encodeURI(this.artist.name) }, musicbrainzUrl () { - return 'https://musicbrainz.org/artist/' + this.artist.mbid + if (this.artist.mbid) { + return 'https://musicbrainz.org/artist/' + this.artist.mbid + } }, allTracks () { let tracks = [] diff --git a/front/src/components/library/Track.vue b/front/src/components/library/Track.vue index 040d3a466..483ff6673 100644 --- a/front/src/components/library/Track.vue +++ b/front/src/components/library/Track.vue @@ -40,7 +40,7 @@ Search on Wikipedia - + View on MusicBrainz @@ -199,7 +199,9 @@ export default { return 'https://en.wikipedia.org/w/index.php?search=' + encodeURI(this.track.title + ' ' + this.track.artist.name) }, musicbrainzUrl () { - return 'https://musicbrainz.org/recording/' + this.track.mbid + if (this.track.mbid) { + return 'https://musicbrainz.org/recording/' + this.track.mbid + } }, downloadUrl () { let u = this.$store.getters['instance/absoluteUrl'](this.track.listen_url) From f5a3f59f1cf432b6e4a4c78a33190b00c2ca3ffa Mon Sep 17 00:00:00 2001 From: Eliot Berriot Date: Sat, 20 Oct 2018 16:24:19 +0200 Subject: [PATCH 010/212] Use most recent image from develop as build cache --- .gitlab-ci.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index c7a43c940..18b00cab9 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -134,7 +134,7 @@ test_api: - postgres:9.4 - redis:3 stage: test - image: funkwhale/funkwhale:latest + image: funkwhale/funkwhale:develop cache: key: "$CI_PROJECT_ID__pip_cache" paths: From a5e5e547e1a8d0465457fcb2785116077d49059b Mon Sep 17 00:00:00 2001 From: Eliot Berriot Date: Sat, 20 Oct 2018 16:40:34 +0200 Subject: [PATCH 011/212] Fix # #562: Document how to find and use library id when importing files in CLI --- changes/changelog.d/562.doc | 1 + docs/importing-music.rst | 15 +++++++++++++-- 2 files changed, 14 insertions(+), 2 deletions(-) create mode 100644 changes/changelog.d/562.doc diff --git a/changes/changelog.d/562.doc b/changes/changelog.d/562.doc new file mode 100644 index 000000000..664a94f01 --- /dev/null +++ b/changes/changelog.d/562.doc @@ -0,0 +1 @@ +Document how to find and use library id when importing files in CLI (#562) diff --git a/docs/importing-music.rst b/docs/importing-music.rst index 103212234..2a1eba06a 100644 --- a/docs/importing-music.rst +++ b/docs/importing-music.rst @@ -14,14 +14,25 @@ You can import those tracks as follows, assuming they are located in .. code-block:: bash - python api/manage.py import_files "/srv/funkwhale/data/music/**/*.ogg" --recursive --noinput + export LIBRARY_ID="" + python api/manage.py import_files $LIBRARY_ID "/srv/funkwhale/data/music/**/*.ogg" --recursive --noinput When you use docker, the ``/srv/funkwhale/data/music`` is mounted from the host to the ``/music`` directory on the container: .. code-block:: bash - docker-compose run --rm api python manage.py import_files "/music/**/*.ogg" --recursive --noinput + export LIBRARY_ID="" + docker-compose run --rm api python manage.py import_files $LIBRARY_ID "/music/**/*.ogg" --recursive --noinput + +.. note:: + + Library IDs are available in library urls or sharing link. In this example: + https://funkwhale.instance/content/libraries/769a2ae3-eb3d-4aff-9f94-2c4d80d5c2d1, + the library ID is 769a2bc3-eb1d-4aff-9f84-2c4d80d5c2d1 + + You can use only the first characters of the ID when calling the command, like that: + ``export LIBRARY_ID="769a2bc3"`` The import command supports several options, and you can check the help to get details:: From ae55e6483dcaf660a953842a94b553bcf169d314 Mon Sep 17 00:00:00 2001 From: Eliot Berriot Date: Sun, 21 Oct 2018 15:41:31 +0200 Subject: [PATCH 012/212] Fix #576: Improved keyboard accessibility on player, queue and various controls --- changes/changelog.d/576.enhancement | 1 + front/src/App.vue | 30 ++++ front/src/components/Pagination.vue | 19 ++- front/src/components/Sidebar.vue | 18 ++- front/src/components/audio/PlayButton.vue | 23 +++- front/src/components/audio/Player.vue | 128 ++++++++++++------ front/src/components/audio/album/Widget.vue | 6 +- front/src/components/audio/track/Row.vue | 4 +- front/src/components/audio/track/Table.vue | 2 +- front/src/components/audio/track/Widget.vue | 9 +- .../favorites/TrackFavoriteIcon.vue | 9 +- .../playlists/TrackPlaylistIcon.vue | 8 +- front/src/components/playlists/Widget.vue | 10 +- 13 files changed, 185 insertions(+), 82 deletions(-) create mode 100644 changes/changelog.d/576.enhancement diff --git a/changes/changelog.d/576.enhancement b/changes/changelog.d/576.enhancement new file mode 100644 index 000000000..ee6087a73 --- /dev/null +++ b/changes/changelog.d/576.enhancement @@ -0,0 +1 @@ +Improved keyboard accessibility on player, queue and various controls (#576) diff --git a/front/src/App.vue b/front/src/App.vue index 16154b130..946a0621e 100644 --- a/front/src/App.vue +++ b/front/src/App.vue @@ -359,6 +359,13 @@ html, body { cursor: pointer; } +.ui.really.basic.button { + &:not(:focus) { + box-shadow: none !important; + background-color: none !important; + } +} + .floated.buttons .button ~ .dropdown { border-left: none; } @@ -380,4 +387,27 @@ a { display: none; } +button.reset { + border: none; + margin: 0; + padding: 0; + width: auto; + overflow: visible; + + background: transparent; + + /* inherit font & color from ancestor */ + color: inherit; + font: inherit; + + /* Normalize `line-height`. Cannot be changed from `normal` in Firefox 4+. */ + line-height: normal; + + /* Corrects font smoothing for webkit */ + -webkit-font-smoothing: inherit; + -moz-osx-font-smoothing: inherit; + /* Corrects inability to style clickable `input` types in iOS */ + -webkit-appearance: none; + text-align: inherit; +} diff --git a/front/src/components/Pagination.vue b/front/src/components/Pagination.vue index cc5f17164..bdc20b53d 100644 --- a/front/src/components/Pagination.vue +++ b/front/src/components/Pagination.vue @@ -1,25 +1,25 @@ @@ -90,4 +90,3 @@ export default { cursor: pointer; } - diff --git a/front/src/components/Sidebar.vue b/front/src/components/Sidebar.vue index efd6f416c..8702f8051 100644 --- a/front/src/components/Sidebar.vue +++ b/front/src/components/Sidebar.vue @@ -16,8 +16,8 @@