UNPKG

ng2-multi-modal

Version:
368 lines (314 loc) 8.4 kB
#ng-modal-wrapper { position: fixed; top: 0; left: 0; width: 100%; height: 100%; overflow: hidden; z-index: var(--window-wrapper-zIndex); pointer-events: none; } @keyframes popup { 0% { transform: scale(0.8); } to { transform: scale(1); } } @keyframes magical-scale { to { top: 100vh; left: 100vw; width: 0; height: 0; opacity: 0; transform: translateZ(-1000px) skewX(-10deg) scaleX(0.2) scaleY(0.1); } } @keyframes maximize { 0% { transform: scale(1); } to { width: 100vw; background: #fff; height: 100vh; top: 0; left: 0; transform: scale(1); } } :host .no-scroll ::-webkit-scrollbar { width: 9px; height: 7px; pointer-events: none; } :host ::-webkit-scrollbar { width: 9px; height: 7px; } :host ::-webkit-scrollbar-track { background: 0 0; } :host ::-webkit-scrollbar-thumb { border-radius: 5px; background: rgba(155, 155, 155, 0.8); } :host ::-webkit-scrollbar-thumb:hover { background: rgba(99, 99, 99); } :host ::-webkit-scrollbar-thumb:window-inactive { background: rgba(155, 155, 155, 0.8); } :host ::-webkit-scrollbar-corner { background: 0 0; } .ng-modal-dock { position: fixed; right: 160px; bottom: 5px; width: auto; height: 40px; display: inline-flex; z-index: var(--window-wrapper-zIndex); pointer-events: none; .icon { width: var(--icon-width); vertical-align: sub; margin-right: 4px; } .ng-modal-dock-item { height: 40px; padding: 0 10px; max-width: 200px; overflow: hidden; white-space: nowrap; text-overflow: ellipsis; background: var(--window-title-bar-bg-color); color: var(--window-title-bar-color); border-radius: 4px; margin-right: 5px; align-items: center; justify-content: center; pointer-events: auto; cursor: pointer; box-shadow: 0 0 5px rgba(0, 0, 0, 0.2); display: flex; will-change: transform, opacity; backface-visibility: hidden; transform: translateZ(0); } close-icon { margin-left: 10px; } } .ng-modal { position: fixed; background: var(--window-bg-color); border-radius: var(--window-border-radius); box-shadow: var(--window-box-shadow); backdrop-filter: var(--window-back-drop-filter); opacity: var(--window-opacity); pointer-events: auto; margin: 0; padding: 0; overflow: hidden; &.maximized { box-shadow: none; animation: maximize 0.2s cubic-bezier(0.3, 1, 0.3, 1) backwards; border-radius: 0; .win-title-bar { border-radius: 0; } } &.minimized { #ng-modal-back-drop { display: none; } animation: magical-scale 2s cubic-bezier(0.3, 1, 0.3, 1) forwards; perspective: 100vh; transform-style: preserve-3d; transform-origin: center; .body { display: none; } } .win-title-bar { left: var(--body-drag-area-width); top: var(--body-drag-area-width); font-family: var(--window-title-bar-font-family), serif; color: var(--window-title-bar-color); border-radius: var(--window-title-bar-radius); background: var(--window-title-bar-bg-color); height: var(--window-title-bar-height); line-height: var(--window-title-bar-height); width: calc(100% - var(--window-title-bar-offset) * 2); border-color: var(--window-title-bar-border-color); border-width: var(--window-title-bar-border-width); position: absolute; border-style: solid; text-align: var(--window-title-bar-text-align); font-weight: var(--window-title-bar-font-weight); user-select: none; cursor: move; .win-icons { display: inline-flex; cursor: default; position: absolute; inset: var(--win-icon-inset); .win-icon { display: inline-block; padding: var(--win-icon-padding); border-radius: 7px; margin: 4px; text-align: center; background-color: var(--win-icon-bg-color); border: var(--win-icon-border); cursor: pointer; svg { width: var(--win-icon-svg-width); height: var(--win-icon-svg-width); display: block; visibility: var(--win-icon-svg-visibility); .win-theme { display: var(--win-theme-icon-svg-display); } .apple-theme { display: var(--apple-theme-icon-svg-display); } } &:hover svg { visibility: var(--win-icon-svg-hover-visibility); * { stroke: #000; } } } close-icon { order: var(--close-icon-order); } minimize-icon { order: var(--minimize-icon-order); } maximize-icon { order: var(--maximize-icon-order); } maximized-icon { order: var(--maximize-icon-order); } close-icon:hover { background: var(--close-icon-bg-color-hover); border: var(--close-icon-border-hover); } minimize-icon:hover { background: var(--minimize-icon-bg-color-hover); border: var(--minimize-icon-border-hover); } maximize-icon:hover { background: var(--maximize-icon-bg-color-hover); border: var(--maximize-icon-border-hover); } maximized-icon:hover { background: var(--maximized-icon-bg-color-hover); border: var(--maximized-icon-border-hover); } } .title-name { font-size: var(--window-title-bar-font-size); line-height: var(--window-title-bar-height); padding: var(--window-title-name-padding); display: inline-block; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; cursor: default; } &.no-drag { cursor: default; } .icon { width: var(--icon-width); vertical-align: sub; margin-right: 4px; } } .body { background: var(--window-body-bg-color); color: var(--window-body-color); left: var(--window-body-offset-x); width: calc(100% - var(--window-body-offset-x) * 2); height: calc( 100% - var(--window-body-offset-y) * 2 - var(--window-title-bar-height) - var(--window-title-bar-offset) ); padding: var(--window-body-padding); border-radius: var(--content-radius); top: calc( var(--window-title-bar-height) + var(--window-title-bar-offset) + var(--window-body-offset-y) ); position: absolute; overflow: auto; } &:hover { box-shadow: var(--window-box-shadow-hover) !important; } &.selected { box-shadow: var(--selected-window-box-shadow); .win-title-bar { background-color: var(--selected-window-title-bar-bg-color); close-icon { background: var(--close-icon-bg-color); border: var(--close-icon-border); } minimize-icon { background: var(--minimize-icon-bg-color); border: var(--minimize-icon-border); } maximize-icon { background: var(--maximize-icon-bg-color); border: var(--maximize-icon-border); } maximized-icon { background: var(--maximized-icon-bg-color); border: var(--maximized-icon-border); padding: var(--maximized-icon-padding); } .title-name { color: var(--selected-window-title-bar-color); } } } animation: popup 0.2s cubic-bezier(0.3, 1, 0.3, 1) backwards; } .ng-modal-back-drop { position: fixed; margin: 0; padding: 0; overflow: auto; filter: blur(20px); pointer-events: none; border-radius: var(--window-border-radius); background: var(--back-drop-bg-color); } .window-loading { position: fixed; background: #fff; border-radius: var(--window-border-radius); padding: 10px; width: 200px; height: 100px; left: 0; right: 0; top: 0; bottom: 0; margin: auto; text-align: center; } svg path.color-path { fill: var(--window-title-bar-color); } svg rect.color-rect { stroke: var(--window-title-bar-color); }