/
githubmirror
/
photoprism
Обзор
Документация
Войти
/
githubmirror
/
photoprism
Код
Запросы
0
Пакеты
0
Релизы
0
Аналитика
Безопасность
develop
frontend/src/css/places.css
305 строк
8 KB
Michael Mayer
Frontend: Sidebar map marker opens the Adjust Location dialog #4966
13 май 2026, 15:00
13 май 2026, 15:00
be0e5f1
Код
Авторство
О чём код?
/* Maps & Places */ .places { position: relative; width: 100%; height: 100%; overflow: hidden; } .map-background, .map-container { position: absolute; top: 0; bottom: 0; left: 0; right: 0; } .map-container { background-color: rgb(var(--v-theme-background)); z-index: 1; } .map-background { background: radial-gradient(circle at center, #101023, #0a0a16); z-index: -1; } .map-background .star { position: absolute; background: white; box-shadow: 0 0 20px 0 rgb(255, 255, 255); border-radius: 100%; } .map-background .star.size-1 { width: 1px; height: 1px; opacity: 0.26; } .map-background .star.size-2 { width: 2px; height: 2px; opacity: 0.4; } .places.places--globe .map-container.map-loaded { background-color: transparent; } .map-control { position: absolute; background: transparent; top: 10px; left: 10px; z-index: 2; } .map-control .map-control-search { width: 18vw; min-width: 264px; max-width: 376px; border-radius: 24px; border-color: rgba(var(--v-border-color), var(--v-border-opacity)); border-left-style: solid; border-left-width: thin; overflow: hidden; } .map-container .marker { box-shadow: 0px 3px 1px -2px rgba(0, 0, 0, 0.2), 0px 2px 2px 0px rgba(0, 0, 0, 0.14), 0px 1px 5px 0px rgba(0, 0, 0, 0.12) !important; background-color: rgba(23, 23, 23, 0.23); color: rgba(0, 0, 0, 0.87); display: block; border-radius: 50%; cursor: pointer; border: 1px solid #ffffff99; } .map-container .cluster-marker { display: grid; grid-template-columns: 1fr 1fr; grid-gap: 1px; overflow: hidden; /* background-color: #ffffff99; */ width: 100%; height: 100%; } .map-container .badge { border-radius: 100%; position: absolute; width: 24px; height: 24px; font-size: 12px; display: flex; top: -5px; right: -5px; align-items: center; justify-content: center; color: rgb(var(--v-theme-on-highlight, #ffffff)); background: rgb(var(--v-theme-highlight, #53478a)); box-shadow: 0px 3px 1px -2px rgb(0 0 0 / 20%), 0px 2px 2px 0px rgb(0 0 0 / 14%), 0px 1px 5px 0px rgb(0 0 0 / 12%); } .is-rtl .map-container .badge { right: auto; left: -5px; } .map-container .cluster-marker > div { width: 100%; height: 100%; background-size: cover; } .maplibregl-ctrl { opacity: 0.96; } .maplibregl-ctrl.maplibregl-ctrl-attrib { min-height: 19px; background-color: #ffffffa0; } .maplibregl-ctrl.maplibregl-ctrl-attrib > .maplibregl-ctrl-attrib-inner { height: auto; min-height: 19px; display: flex; align-items: center; } .maplibregl-ctrl-attrib-inner a { color: #333 !important; font-size: 12px; } .maplibregl-style-list { display: none; } .maplibregl-ctrl-group { border-radius: 6px; } .maplibregl-ctrl-group .maplibregl-style-list button { background: none; border: none; cursor: pointer; display: block; font-size: 14px; padding: 8px 8px 6px; text-align: right; width: 100%; height: auto; color: #000000; } .maplibregl-style-list button.active { font-weight: bold; } .maplibregl-style-list button:hover { background-color: rgba(0, 0, 0, 0.05); } .maplibregl-style-list button + button { border-top: 1px solid #ddd; } .maplibregl-style-switcher { background-image: url(data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iaXNvLTg4NTktMSI/PjwhRE9DVFlQRSBzdmcgUFVCTElDICItLy9XM0MvL0RURCBTVkcgMS4xLy9FTiIgImh0dHA6Ly93d3cudzMub3JnL0dyYXBoaWNzL1NWRy8xLjEvRFREL3N2ZzExLmR0ZCI+PHN2ZyB2ZXJzaW9uPSIxLjEiIGlkPSJDYXBhXzEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiIHg9IjBweCIgeT0iMHB4IiB3aWR0aD0iNTQuODQ5cHgiIGhlaWdodD0iNTQuODQ5cHgiIHZpZXdCb3g9IjAgMCA1NC44NDkgNTQuODQ5IiBzdHlsZT0iZW5hYmxlLWJhY2tncm91bmQ6bmV3IDAgMCA1NC44NDkgNTQuODQ5OyIgeG1sOnNwYWNlPSJwcmVzZXJ2ZSI+PGc+PGc+PGc+PHBhdGggZD0iTTU0LjQ5NywzOS42MTRsLTEwLjM2My00LjQ5bC0xNC45MTcsNS45NjhjLTAuNTM3LDAuMjE0LTEuMTY1LDAuMzE5LTEuNzkzLDAuMzE5Yy0wLjYyNywwLTEuMjU0LTAuMTA0LTEuNzktMC4zMThsLTE0LjkyMS01Ljk2OEwwLjM1MSwzOS42MTRjLTAuNDcyLDAuMjAzLTAuNDY3LDAuNTI0LDAuMDEsMC43MTZMMjYuNTYsNTAuODFjMC40NzcsMC4xOTEsMS4yNTEsMC4xOTEsMS43MjksMEw1NC40ODgsNDAuMzNDNTQuOTY0LDQwLjEzOSw1NC45NjksMzkuODE3LDU0LjQ5NywzOS42MTR6Ii8+PHBhdGggZD0iTTU0LjQ5NywyNy41MTJsLTEwLjM2NC00LjQ5MWwtMTQuOTE2LDUuOTY2Yy0wLjUzNiwwLjIxNS0xLjE2NSwwLjMyMS0xLjc5MiwwLjMyMWMtMC42MjgsMC0xLjI1Ni0wLjEwNi0xLjc5My0wLjMyMWwtMTQuOTE4LTUuOTY2TDAuMzUxLDI3LjUxMmMtMC40NzIsMC4yMDMtMC40NjcsMC41MjMsMC4wMSwwLjcxNkwyNi41NiwzOC43MDZjMC40NzcsMC4xOSwxLjI1MSwwLjE5LDEuNzI5LDBsMjYuMTk5LTEwLjQ3OUM1NC45NjQsMjguMDM2LDU0Ljk2OSwyNy43MTYsNTQuNDk3LDI3LjUxMnoiLz48cGF0aCBkPSJNMC4zNjEsMTYuMTI1bDEzLjY2Miw1LjQ2NWwxMi41MzcsNS4wMTVjMC40NzcsMC4xOTEsMS4yNTEsMC4xOTEsMS43MjksMGwxMi41NDEtNS4wMTZsMTMuNjU4LTUuNDYzYzAuNDc3LTAuMTkxLDAuNDgtMC41MTEsMC4wMS0wLjcxNkwyOC4yNzcsNC4wNDhjLTAuNDcxLTAuMjA0LTEuMjM2LTAuMjA0LTEuNzA4LDBMMC4zNTEsMTUuNDFDLTAuMTIxLDE1LjYxNC0wLjExNiwxNS45MzUsMC4zNjEsMTYuMTI1eiIvPjwvZz48L2c+PC9nPjxnPjwvZz48Zz48L2c+PGc+PC9nPjxnPjwvZz48Zz48L2c+PGc+PC9nPjxnPjwvZz48Zz48L2c+PGc+PC9nPjxnPjwvZz48Zz48L2c+PGc+PC9nPjxnPjwvZz48Zz48L2c+PGc+PC9nPjwvc3ZnPg==); background-position: center; background-repeat: no-repeat; background-size: 70%; } .cluster-control { background: #2f3031; position: absolute; top: auto; z-index: 2; bottom: 0; margin: 0; padding: 0; left: 4px; right: 4px; border-top-left-radius: 16px; border-top-right-radius: 16px; max-height: 90vh; overflow: hidden; box-shadow: rgba(99, 99, 99, 0.2) 0px 2px 8px 0px; transition: all 650ms cubic-bezier(0.32, 1, 0.23, 1) 0ms; } .cluster-control-container { min-height: 40vh; } .cluster-control .p-photos { position: absolute; top: 45px; bottom: 0; left: 0; right: 0; overflow: auto; } @media only screen and (min-height: 1500px) { .cluster-control-container { min-height: 45vh; } } @media only screen and (max-width: 599px) { .cluster-control { left: 0; right: 0; } .cluster-control-container { min-height: 66vh; } } /* Embedded Map and Control Styles */ .p-map { display: block; margin: 0; padding: 0; overflow: hidden; } /* MapLibre renders the default marker as a <button>, which the browser styles with `cursor: pointer` by default — misleading when the marker has no click handler attached. Default to the inherited cursor and restore pointer only when the consumer opts in via `markerClickable` (see `component/map.vue`). */ .p-map .maplibregl-marker { cursor: default; } .p-map.is-marker-clickable .maplibregl-marker { cursor: pointer; } .p-meta-location-dialog .p-map { height: 45vh; min-height: 250px; width: 100%; border-radius: 4px; } .p-lightbox__container > .p-lightbox__sidebar .p-map { height: 200px; /* aspect-ratio: 1; */ width: auto; } /* Right-to-Left Language Support */ .is-rtl .map-control { left: auto; right: 10px; } .is-rtl .maplibregl-control-container .maplibregl-ctrl-top-left, .is-rtl .maplibregl-control-container .maplibregl-ctrl-bottom-left { left: auto; right: 0; } .is-rtl .maplibregl-control-container .maplibregl-ctrl-top-left .maplibregl-ctrl { float: right; margin: 10px 10px 0 0; } .is-rtl .maplibregl-control-container .maplibregl-ctrl-bottom-left .maplibregl-ctrl { float: right; margin: 0 10px 10px 0; } .is-rtl .maplibregl-control-container .maplibregl-ctrl-top-right, .is-rtl .maplibregl-control-container .maplibregl-ctrl-bottom-right { left: 0; right: auto; } .is-rtl .maplibregl-control-container .maplibregl-ctrl-top-right .maplibregl-ctrl { float: left; margin: 10px 0 0 10px; } .is-rtl .maplibregl-control-container .maplibregl-ctrl-bottom-right .maplibregl-ctrl { float: left; margin: 0 0 10px 10px; }