0
Fork 0
mirror of https://github.com/penpot/penpot.git synced 2025-02-10 00:58:26 -05:00

Merge pull request #4190 from penpot/palba-bugfixes-002

🐛 Fix impossible to move an element when it's in a main component
This commit is contained in:
Alejandro 2024-02-27 08:53:06 +01:00 committed by GitHub
commit addf83ab22
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
16 changed files with 68 additions and 184 deletions

View file

@ -392,7 +392,7 @@
(has-any-copy-parent? objects (:parent-id shape))))))
(defn has-any-main?
"Check if the shape has any children or parent that is a main component."
"Check if the shape is a main component or has any children or parent that is a main component."
[objects shape]
(let [children (cfh/get-children-with-self objects (:id shape))
parents (cfh/get-parents objects (:id shape))]
@ -400,6 +400,12 @@
(some ctk/main-instance? children)
(some ctk/main-instance? parents))))
(defn has-any-main-children?
"Check if the shape is a main component or has any children that is a main component."
[objects shape]
(let [children (cfh/get-children-with-self objects (:id shape))]
(some ctk/main-instance? children)))
(defn valid-shape-for-component?
"Check if a main component can be generated from this shape in terms of nested components:
- A main can't be the ancestor of another main
@ -412,7 +418,7 @@
(defn- invalid-structure-for-component?
"Check if the structure generated nesting children in parent is invalid in terms of nested components"
[objects parent children]
(let [selected-main-instance? (some true? (map #(has-any-main? objects %) children))
(let [selected-main-instance? (some true? (map #(has-any-main-children? objects %) children))
parent-in-component? (in-any-component? objects parent)
comps-nesting-loop? (not (->> children
(map #(cfh/components-nesting-loop? objects (:id %) (:id parent)))

View file

@ -133,14 +133,29 @@
(st/emit! (dd/fetch-recent-files team-id)
(dd/clear-selected-files))))
on-move-accept
(fn [params team-id project-id]
(st/emit! (dd/move-files
(with-meta params
{:on-success #(on-move-success team-id project-id)}))))
on-move
(fn [team-id project-id]
(let [params {:ids (into #{} (map :id) files)
:project-id project-id}]
(fn []
(st/emit! (dd/move-files
(with-meta params
{:on-success #(on-move-success team-id project-id)}))))))
(let [num-shared (filter #(:is-shared %) files)]
(if (and (< 0 (count num-shared))
(not= team-id current-team-id))
(st/emit! (modal/show
{:type :delete-shared-libraries
:origin :move
:ids (into #{} (map :id) files)
:on-accept #(on-move-accept params team-id project-id)
:count-libraries (count num-shared)}))
(on-move-accept params team-id project-id))))))
add-shared
#(st/emit! (dd/set-file-shared (assoc file :is-shared true)))

View file

@ -35,28 +35,26 @@
cancel-label (tr "labels.cancel")
accept-style (or accept-style :danger)
is-delete? (= origin :delete)
count-files (count (keys references))
title (if ^boolean is-delete?
(tr "modals.delete-shared-confirm.title" (i18n/c count-libraries))
(tr "modals.unpublish-shared-confirm.title" (i18n/c count-libraries)))
title (case origin
:delete (tr "modals.delete-shared-confirm.title" (i18n/c count-libraries))
:unpublish (tr "modals.unpublish-shared-confirm.title" (i18n/c count-libraries))
:move (tr "modals.move-shared-confirm.title" (i18n/c count-libraries)))
subtitle (if ^boolean is-delete?
(tr "modals.delete-shared-confirm.message" (i18n/c count-libraries))
(tr "modals.unpublish-shared-confirm.message" (i18n/c count-libraries)))
subtitle (case origin
:delete (tr "modals.delete-shared-confirm.message" (i18n/c count-libraries))
:unpublish (tr "modals.unpublish-shared-confirm.message" (i18n/c count-libraries))
:move (tr "modals.move-shared-confirm.message" (i18n/c count-libraries)))
accept-label (if ^boolean is-delete?
(tr "modals.delete-shared-confirm.accept" (i18n/c count-libraries))
(tr "modals.unpublish-shared-confirm.accept" (i18n/c count-libraries)))
accept-label (case origin
:delete (tr "modals.delete-shared-confirm.accept" (i18n/c count-libraries))
:unpublish (tr "modals.unpublish-shared-confirm.accept" (i18n/c count-libraries))
:move (tr "modals.move-shared-confirm.accept" (i18n/c count-libraries)))
no-files-msg (if ^boolean is-delete?
(tr "modals.delete-shared-confirm.activated.no-files-message" (i18n/c count-libraries))
(tr "modals.unpublish-shared-confirm.activated.no-files-message" (i18n/c count-libraries)))
no-files-msg (tr "modals.delete-shared-confirm.activated.no-files-message" (i18n/c count-libraries))
scd-msg (if ^boolean is-delete?
(tr "modals.delete-shared-confirm.activated.scd-message" (i18n/c count-libraries))
(tr "modals.unpublish-shared-confirm.activated.scd-message" (i18n/c count-libraries)))
scd-msg (tr "modals.delete-shared-confirm.activated.scd-message" (i18n/c count-libraries))
hint (tr "modals.delete-unpublish-shared-confirm.activated.hint" (i18n/c count-files))

View file

@ -4872,20 +4872,6 @@ msgstr[2] ""
"Aktiva, která již byla v těchto souborech použita, tam zůstanou (nebude "
"porušen žádný návrh)."
#: src/app/main/ui/workspace/header.cljs, src/app/main/ui/dashboard/file_menu.cljs
msgid "modals.unpublish-shared-confirm.activated.no-files-message"
msgid_plural "modals.unpublish-shared-confirm.activated.no-files-message"
msgstr[0] "Není aktivován v žádném souboru."
msgstr[1] "Nejsou aktivovány v žádném souboru."
msgstr[2] "Nejsou aktivovány v žádném souboru."
#: src/app/main/ui/workspace/header.cljs, src/app/main/ui/dashboard/file_menu.cljs
msgid "modals.unpublish-shared-confirm.activated.scd-message"
msgid_plural "modals.unpublish-shared-confirm.activated.scd-message"
msgstr[0] "Tato knihovna je aktivována zde:"
msgstr[1] "Tyto knihovny jsou aktivovány zde:"
msgstr[2] "Tyto knihovny jsou aktivovány zde:"
#: src/app/main/ui/auth/register.cljs, src/app/main/ui/dashboard/team_form.cljs, src/app/main/ui/onboarding/team_choice.cljs, src/app/main/ui/settings/access_tokens.cljs, src/app/main/ui/settings/feedback.cljs, src/app/main/ui/settings/profile.cljs, src/app/main/ui/workspace/sidebar/assets.cljs
msgid "auth.name.too-long"
msgstr "Název musí obsahovat maximálně 250 znaků."

View file

@ -2122,18 +2122,6 @@ msgid_plural "modals.unpublish-shared-confirm.accept"
msgstr[0] "Veröffentlichung aufheben"
msgstr[1] "Veröffentlichung aufheben"
#: src/app/main/ui/workspace/header.cljs, src/app/main/ui/dashboard/file_menu.cljs
msgid "modals.unpublish-shared-confirm.activated.no-files-message"
msgid_plural "modals.unpublish-shared-confirm.activated.no-files-message"
msgstr[0] "Es ist in keiner Datei aktiviert."
msgstr[1] "Sie sind in keiner Datei aktiviert."
#: src/app/main/ui/workspace/header.cljs, src/app/main/ui/dashboard/file_menu.cljs
msgid "modals.unpublish-shared-confirm.activated.scd-message"
msgid_plural "modals.unpublish-shared-confirm.activated.scd-message"
msgstr[0] "Diese Bibliothek ist hier aktiviert:"
msgstr[1] "Diese Bibliotheken sind hier aktiviert:"
#: src/app/main/ui/workspace/header.cljs,
#: src/app/main/ui/dashboard/file_menu.cljs
msgid "modals.unpublish-shared-confirm.message"

View file

@ -2103,17 +2103,10 @@ msgid_plural "modals.unpublish-shared-confirm.accept"
msgstr[0] "Unpublish"
msgstr[1] "Unpublish"
#: src/app/main/ui/workspace/header.cljs, src/app/main/ui/dashboard/file_menu.cljs
msgid "modals.unpublish-shared-confirm.activated.no-files-message"
msgid_plural "modals.unpublish-shared-confirm.activated.no-files-message"
msgstr[0] "It isn't activated in any file."
msgstr[1] "They aren't activated in any file."
#: src/app/main/ui/workspace/header.cljs, src/app/main/ui/dashboard/file_menu.cljs
msgid "modals.unpublish-shared-confirm.activated.scd-message"
msgid_plural "modals.unpublish-shared-confirm.activated.scd-message"
msgstr[0] "This library is activated here:"
msgstr[1] "This libraries are activated here:"
msgid "modals.move-shared-confirm.accept"
msgid_plural "modals.move-shared-confirm.accept"
msgstr[0] "Move"
msgstr[1] "Move"
#: src/app/main/ui/workspace/header.cljs, src/app/main/ui/dashboard/file_menu.cljs
msgid "modals.unpublish-shared-confirm.message"
@ -2121,12 +2114,22 @@ msgid_plural "modals.unpublish-shared-confirm.message"
msgstr[0] "Are you sure you want to unpublish this library?"
msgstr[1] "Are you sure you want to unpublish these libraries?"
msgid "modals.move-shared-confirm.message"
msgid_plural "modals.move-shared-confirm.message"
msgstr[0] "Are you sure you want to move this library?"
msgstr[1] "Are you sure you want to move these libraries?"
#: src/app/main/ui/workspace/header.cljs, src/app/main/ui/dashboard/file_menu.cljs
msgid "modals.unpublish-shared-confirm.title"
msgid_plural "modals.unpublish-shared-confirm.title"
msgstr[0] "Unpublish library"
msgstr[1] "Unpublish libraries"
msgid "modals.move-shared-confirm.title"
msgid_plural "modals.move-shared-confirm.title"
msgstr[0] "Move library"
msgstr[1] "Move libraries"
#: src/app/main/ui/workspace/sidebar/options/menus/component.cljs, src/app/main/ui/workspace/context_menu.cljs
msgid "modals.update-remote-component-in-bulk.hint"
msgstr ""

View file

@ -2138,16 +2138,10 @@ msgid_plural "modals.unpublish-shared-confirm.accept"
msgstr[0] "Despublicar"
msgstr[1] "Despublicar"
msgid "modals.unpublish-shared-confirm.activated.no-files-message"
msgid_plural "modals.unpublish-shared-confirm.activated.no-files-message"
msgstr[0] "No está activa en ningún fichero."
msgstr[1] "No están activas en ningún fichero."
#: src/app/main/ui/workspace/header.cljs, src/app/main/ui/dashboard/file_menu.cljs
msgid "modals.unpublish-shared-confirm.activated.scd-message"
msgid_plural "modals.unpublish-shared-confirm.activated.scd-message"
msgstr[0] "Está activa aquí:"
msgstr[1] "Están activas aquí:"
msgid "modals.move-shared-confirm.accept"
msgid_plural "modals.move-shared-confirm.accept"
msgstr[0] "Mover"
msgstr[1] "Mover"
#: src/app/main/ui/workspace/header.cljs, src/app/main/ui/dashboard/file_menu.cljs
msgid "modals.unpublish-shared-confirm.message"
@ -2155,12 +2149,22 @@ msgid_plural "modals.unpublish-shared-confirm.message"
msgstr[0] "¿Seguro que quieres despublicar esta biblioteca?"
msgstr[1] "¿Seguro que quieres despublicar estas bibliotecas?"
msgid "modals.move-shared-confirm.message"
msgid_plural "modals.move-shared-confirm.message"
msgstr[0] "¿Seguro que quieres mover esta biblioteca?"
msgstr[1] "¿Seguro que quieres mover estas bibliotecas?"
#: src/app/main/ui/workspace/header.cljs, src/app/main/ui/dashboard/file_menu.cljs
msgid "modals.unpublish-shared-confirm.title"
msgid_plural "modals.unpublish-shared-confirm.title"
msgstr[0] "Despublicar biblioteca"
msgstr[1] "Despublicar bibliotecas"
msgid "modals.move-shared-confirm.title"
msgid_plural "modals.move-shared-confirm.title"
msgstr[0] "Mover biblioteca"
msgstr[1] "Mover bibliotecas"
#: src/app/main/ui/workspace/sidebar/options/menus/component.cljs,
#: src/app/main/ui/workspace/context_menu.cljs
msgid "modals.update-remote-component-in-bulk.hint"

View file

@ -2127,18 +2127,6 @@ msgid_plural "modals.unpublish-shared-confirm.accept"
msgstr[0] "Dépublier"
msgstr[1] "Dépublier"
#: src/app/main/ui/workspace/header.cljs, src/app/main/ui/dashboard/file_menu.cljs
msgid "modals.unpublish-shared-confirm.activated.no-files-message"
msgid_plural "modals.unpublish-shared-confirm.activated.no-files-message"
msgstr[0] "Activée dans aucun fichier."
msgstr[1] "Activées dans aucun fichier."
#: src/app/main/ui/workspace/header.cljs, src/app/main/ui/dashboard/file_menu.cljs
msgid "modals.unpublish-shared-confirm.activated.scd-message"
msgid_plural "modals.unpublish-shared-confirm.activated.scd-message"
msgstr[0] "Est activée ici:"
msgstr[1] "Sont activées ici:"
#: src/app/main/ui/workspace/header.cljs, src/app/main/ui/dashboard/file_menu.cljs
msgid "modals.unpublish-shared-confirm.message"
msgid_plural "modals.unpublish-shared-confirm.message"

View file

@ -2157,12 +2157,6 @@ msgstr ""
"wurin da za ka san yadda za ka hada-hannu da fassara, neman fasali, manyan "
"gudunmawa, magance matsala…"
#: src/app/main/ui/workspace/header.cljs, src/app/main/ui/dashboard/file_menu.cljs
msgid "modals.unpublish-shared-confirm.activated.scd-message"
msgid_plural "modals.unpublish-shared-confirm.activated.scd-message"
msgstr[0] "an buxe wannan taskar a nan:"
msgstr[1] "an buxe taskokin nan a nan:"
#: src/app/main/ui/workspace/sidebar/align.cljs
msgid "workspace.align.hright"
msgstr "Daidaita dama (%s)"
@ -3309,12 +3303,6 @@ msgstr "Yi da kanka"
msgid "labels.save"
msgstr "ajiye"
#: src/app/main/ui/workspace/header.cljs, src/app/main/ui/dashboard/file_menu.cljs
msgid "modals.unpublish-shared-confirm.activated.no-files-message"
msgid_plural "modals.unpublish-shared-confirm.activated.no-files-message"
msgstr[0] "ba zai yi aiki a kowane kundi ba."
msgstr[1] "ba zai yi aiki a kowane kundi ba."
msgid "dashboard.import.progress.process-media"
msgstr "kammala aiki"

View file

@ -4992,14 +4992,6 @@ msgstr "… תרשימי מתאר, סיפורי ותהליכי משתמשים,
msgid "workspace.options.stroke-cap.diamond-marker-short"
msgstr "יהלום"
#: src/app/main/ui/workspace/header.cljs, src/app/main/ui/dashboard/file_menu.cljs
msgid "modals.unpublish-shared-confirm.activated.scd-message"
msgid_plural "modals.unpublish-shared-confirm.activated.scd-message"
msgstr[0] "הספרייה הזאת מופעלת כאן:"
msgstr[1] "הספריות האלו מופעלות כאן:"
msgstr[2] "הספריות האלו מופעלות כאן:"
msgstr[3] "הספריות האלו מופעלות כאן:"
#: src/app/main/ui/workspace/sidebar/options/rows/color_row.cljs,
msgid "settings.detach"
msgstr "ניתוק"
@ -5008,14 +5000,6 @@ msgstr "ניתוק"
msgid "workspace.options.stroke-cap.triangle-arrow-short"
msgstr "משולש"
#: src/app/main/ui/workspace/header.cljs, src/app/main/ui/dashboard/file_menu.cljs
msgid "modals.unpublish-shared-confirm.activated.no-files-message"
msgid_plural "modals.unpublish-shared-confirm.activated.no-files-message"
msgstr[0] "אינו מופעל באף קובץ."
msgstr[1] "אינם מופעלים באף קובץ."
msgstr[2] "אינם מופעלים באף קובץ."
msgstr[3] "אינם מופעלים באף קובץ."
msgid "workspace.shape.menu.create-annotation"
msgstr "יצירת הסבר"

View file

@ -2098,16 +2098,6 @@ msgid "modals.unpublish-shared-confirm.accept"
msgid_plural "modals.unpublish-shared-confirm.accept"
msgstr[0] "Batalkan penerbitan"
#: src/app/main/ui/workspace/header.cljs, src/app/main/ui/dashboard/file_menu.cljs
msgid "modals.unpublish-shared-confirm.activated.no-files-message"
msgid_plural "modals.unpublish-shared-confirm.activated.no-files-message"
msgstr[0] "Tidak diaktifkan dalam berkas mana pun."
#: src/app/main/ui/workspace/header.cljs, src/app/main/ui/dashboard/file_menu.cljs
msgid "modals.unpublish-shared-confirm.activated.scd-message"
msgid_plural "modals.unpublish-shared-confirm.activated.scd-message"
msgstr[0] "Pustaka ini diaktifkan di sini:"
#: src/app/main/ui/workspace/header.cljs,
#: src/app/main/ui/dashboard/file_menu.cljs
msgid "modals.unpublish-shared-confirm.message"

View file

@ -2112,20 +2112,6 @@ msgstr[0] "Nav atlases"
msgstr[1] "Atcelt publicēšanu"
msgstr[2] "Atcelt publicēšanu"
#: src/app/main/ui/workspace/header.cljs, src/app/main/ui/dashboard/file_menu.cljs
msgid "modals.unpublish-shared-confirm.activated.no-files-message"
msgid_plural "modals.unpublish-shared-confirm.activated.no-files-message"
msgstr[0] "Nav aktivēti nevienā datnē."
msgstr[1] "Tas nav aktivēts nevienā datnē."
msgstr[2] "Tie nav aktivēti nevienā datnē."
#: src/app/main/ui/workspace/header.cljs, src/app/main/ui/dashboard/file_menu.cljs
msgid "modals.unpublish-shared-confirm.activated.scd-message"
msgid_plural "modals.unpublish-shared-confirm.activated.scd-message"
msgstr[0] "Bibliotēkas ir aktivētas šeit:"
msgstr[1] "Šī bibliotēka ir aktivēta šeit:"
msgstr[2] "Šīs bibliotēkas ir aktivētas šeit:"
#: src/app/main/ui/workspace/header.cljs,
#: src/app/main/ui/dashboard/file_menu.cljs
msgid "modals.unpublish-shared-confirm.message"

View file

@ -2143,20 +2143,6 @@ msgid_plural "modals.unpublish-shared-confirm.accept"
msgstr[0] "Publicatie ongedaan maken"
msgstr[1] "Publicaties ongedaan maken"
#: src/app/main/ui/workspace/header.cljs,
#: src/app/main/ui/dashboard/file_menu.cljs
msgid "modals.unpublish-shared-confirm.activated.no-files-message"
msgid_plural "modals.unpublish-shared-confirm.activated.no-files-message"
msgstr[0] "Het is in geen enkel bestand geactiveerd."
msgstr[1] "Ze zijn in geen enkel bestand geactiveerd."
#: src/app/main/ui/workspace/header.cljs,
#: src/app/main/ui/dashboard/file_menu.cljs
msgid "modals.unpublish-shared-confirm.activated.scd-message"
msgid_plural "modals.unpublish-shared-confirm.activated.scd-message"
msgstr[0] "Deze bibliotheek wordt hier geactiveerd:"
msgstr[1] "Deze bibliotheken worden hier geactiveerd:"
#: src/app/main/ui/workspace/header.cljs,
#: src/app/main/ui/dashboard/file_menu.cljs
msgid "modals.unpublish-shared-confirm.message"

View file

@ -2090,18 +2090,6 @@ msgstr "Remover \"%s\" como Biblioteca Partilhada"
msgid "modals.small-nudge"
msgstr "Pequeno deslocamento"
#: src/app/main/ui/workspace/header.cljs, src/app/main/ui/dashboard/file_menu.cljs
msgid "modals.unpublish-shared-confirm.activated.no-files-message"
msgid_plural "modals.unpublish-shared-confirm.activated.no-files-message"
msgstr[0] "Não está ativa em nenhum ficheiro."
msgstr[1] "Não estão ativas em nenhum ficheiro."
#: src/app/main/ui/workspace/header.cljs, src/app/main/ui/dashboard/file_menu.cljs
msgid "modals.unpublish-shared-confirm.activated.scd-message"
msgid_plural "modals.unpublish-shared-confirm.activated.scd-message"
msgstr[0] "Esta biblioteca está ativa aqui:"
msgstr[1] "Estas bibliotecas estão ativas aqui:"
#: src/app/main/ui/workspace/header.cljs,
#: src/app/main/ui/dashboard/file_menu.cljs
msgid "modals.unpublish-shared-confirm.message"

View file

@ -2127,20 +2127,6 @@ msgstr[0] "Anulați publicarea"
msgstr[1] "Anulați publicarea"
msgstr[2] "Anulați publicarea"
#: src/app/main/ui/workspace/header.cljs, src/app/main/ui/dashboard/file_menu.cljs
msgid "modals.unpublish-shared-confirm.activated.no-files-message"
msgid_plural "modals.unpublish-shared-confirm.activated.no-files-message"
msgstr[0] "Nu este activat în niciun fișier."
msgstr[1] "Nu sunt activate în niciun fișier."
msgstr[2] "Nu sunt activate în niciun fișier."
#: src/app/main/ui/workspace/header.cljs, src/app/main/ui/dashboard/file_menu.cljs
msgid "modals.unpublish-shared-confirm.activated.scd-message"
msgid_plural "modals.unpublish-shared-confirm.activated.scd-message"
msgstr[0] "Aceasta librărie este activată aici:"
msgstr[1] "Aceste librării sunt activate aici:"
msgstr[2] "Aceste librării sunt activate aici:"
#: src/app/main/ui/workspace/header.cljs,
#: src/app/main/ui/dashboard/file_menu.cljs
msgid "modals.unpublish-shared-confirm.message"

View file

@ -4764,12 +4764,6 @@ msgstr "Ortala"
msgid "workspace.options.stroke-cap.diamond-marker-short"
msgstr "Elmas"
#: src/app/main/ui/workspace/header.cljs, src/app/main/ui/dashboard/file_menu.cljs
msgid "modals.unpublish-shared-confirm.activated.scd-message"
msgid_plural "modals.unpublish-shared-confirm.activated.scd-message"
msgstr[0] "Bu kütüphane burada etkinleştirildi:"
msgstr[1] "Bu kütüphaneler burada etkinleştirildi:"
#: src/app/main/ui/onboarding/questions.cljs
msgid "questions.questions-how-are-you-planning-to-use-penpot"
msgstr "Penpot'u nasıl kullanmayı planlıyorsunuz?"
@ -4859,12 +4853,6 @@ msgstr "Orantılı ölçeklendirmeyi etkinleştir"
msgid "workspace.updates.more-info"
msgstr "Daha fazla bilgi"
#: src/app/main/ui/workspace/header.cljs, src/app/main/ui/dashboard/file_menu.cljs
msgid "modals.unpublish-shared-confirm.activated.no-files-message"
msgid_plural "modals.unpublish-shared-confirm.activated.no-files-message"
msgstr[0] "Hiçbir dosyada etkinleştirilmemiş."
msgstr[1] "Hiçbir dosyada etkinleştirilmemişler."
#: src/app/main/ui/settings/team-form.cljs, src/app/main/ui/auth/register.cljs, src/app/main/ui/dashboard/team_form.cljs, src/app/main/ui/onboarding/team_choice.cljs, src/app/main/ui/settings/access_tokens.cljs, src/app/main/ui/settings/feedback.cljs, src/app/main/ui/settings/profile.cljs, src/app/main/ui/workspace/sidebar/assets.cljs
msgid "auth.name.not-all-space"
msgstr "İsim boşluk dışında bir karakter içermelidir."