diff --git a/packages/admin/package.json b/packages/admin/package.json index 4d01079..9a89d56 100644 --- a/packages/admin/package.json +++ b/packages/admin/package.json @@ -71,6 +71,7 @@ "access": "public" }, "dependencies": { - "@origami/zen": "^0.0.2-alpha.1" + "@origami/zen": "^0.0.4-alpha.0", + "@origami/zen-lib": "^0.0.4-alpha.0" } } \ No newline at end of file diff --git a/packages/admin/src/actions/UploadMedia.ts b/packages/admin/src/actions/UploadMedia.ts index 1b2b3cf..05d1998 100644 --- a/packages/admin/src/actions/UploadMedia.ts +++ b/packages/admin/src/actions/UploadMedia.ts @@ -13,7 +13,7 @@ export const uploadProgress = (file: File) => const reader = new FileReader(); reader.onload = (e: ProgressEvent) => { // @ts-ignore - dispatch({ type: UPLOADING_MEDIA_PREVIEW, id, preview: e.target!.result}); + dispatch({ type: UPLOADING_MEDIA_PREVIEW, id, preview: e.target!.result }); }; reader.readAsDataURL(file); @@ -23,7 +23,7 @@ export const uploadProgress = (file: File) => request.open('POST', '/api/v1/media'); request.setRequestHeader('Authorization', API.token!); - dispatch({type: UPLOADING_MEDIA_START, id, name: file.name}); + dispatch({ type: UPLOADING_MEDIA_START, id, name: file.name }); request.upload.onprogress = ((e: ProgressEvent) => { dispatch({ @@ -40,12 +40,21 @@ export const uploadProgress = (file: File) => }); }); - request.upload.onloadend = ((e: ProgressEvent) => { - dispatch({ - type: UPLOADING_MEDIA_END, - id - }); - }); + request.onreadystatechange = () => { + const ready = 4; + if (request.readyState === ready) { + dispatch({ + type: UPLOADING_MEDIA_END, + id + }); + + dispatch({ + type: 'MEDIA_CREATED', + media: JSON.parse(request.response).data + }); + + } + }; request.send(formData); diff --git a/packages/admin/src/components/pages/Admin/Media/PageMedia.ts b/packages/admin/src/components/pages/Admin/Media/PageMedia.ts index 0206e98..a351647 100644 --- a/packages/admin/src/components/pages/Admin/Media/PageMedia.ts +++ b/packages/admin/src/components/pages/Admin/Media/PageMedia.ts @@ -9,7 +9,9 @@ export class PageMedia extends titleSet('Media')(connect(store)(LitElement)) { public static styles = [CSS]; public render() { - return html``; + return html` + + `; } } diff --git a/packages/admin/src/components/pages/Admin/Media/page-media-css.ts b/packages/admin/src/components/pages/Admin/Media/page-media-css.ts index ec30a95..3d9e941 100644 --- a/packages/admin/src/components/pages/Admin/Media/page-media-css.ts +++ b/packages/admin/src/components/pages/Admin/Media/page-media-css.ts @@ -1,4 +1,4 @@ import {css} from 'lit-element'; // tslint:disable-next-line no-default-export export-name -export default css`.card{background:var(--card-bg, var(--color-white, #fff));border:var(--card-border, );border-radius:var(--card-border-radius, var(--border-radius, 0.4rem));padding:var(--card-padding, var(--size-main, 4rem));box-shadow:var(--card-shadow, var(--shadow-main-soft, 0 var(--size-tiny, 1rem) var(--size-main, 4rem) var(--color-main-soft, rgba(105,58,145,0.1))))}:host ui-media-grid{position:absolute;top:0;left:0;width:100%;height:100%}.card.hover{background-color:transparent;box-shadow:none;transition:all var(--transition-time)}.card.hover:hover{background-color:var(--card-bg);box-shadow:var(--card-shadow)}@keyframes fade-slide-up{from{margin-top:var(--size-large);opacity:0}to{margin-top:0;opacity:1}}:host{position:absolute;top:0;left:0;right:0;bottom:0;overflow-y:auto;padding:var(--size-small)} +export default css`.card{background:var(--card-bg, var(--color-white, #fff));border:var(--card-border, );border-radius:var(--card-border-radius, var(--border-radius, 0.4rem));padding:var(--card-padding, var(--size-main, 4rem));box-shadow:var(--card-shadow, var(--shadow-main-soft, 0 var(--size-tiny, 1rem) var(--size-main, 4rem) var(--color-main-soft, rgba(105,58,145,0.1))))}.card.hover{background-color:transparent;box-shadow:none;transition:all var(--transition-time)}.card.hover:hover{background-color:var(--card-bg);box-shadow:var(--card-shadow)}@keyframes fade-slide-up{from{margin-top:var(--size-large);opacity:0}to{margin-top:0;opacity:1}}:host{position:absolute;top:0;left:0;right:0;bottom:0;overflow-y:auto;padding:var(--size-small)} `; diff --git a/packages/admin/src/components/pages/Admin/Media/page-media.scss b/packages/admin/src/components/pages/Admin/Media/page-media.scss index 7d34ea6..2c14ce8 100644 --- a/packages/admin/src/components/pages/Admin/Media/page-media.scss +++ b/packages/admin/src/components/pages/Admin/Media/page-media.scss @@ -10,8 +10,4 @@ bottom: 0; overflow-y: auto; padding: var(--size-small); - - ui-media-grid { - @extend %cover; - } } diff --git a/packages/admin/src/components/ui/MediaGrid/MediaGrid.ts b/packages/admin/src/components/ui/MediaGrid/MediaGrid.ts index d1927f8..1e8a110 100644 --- a/packages/admin/src/components/ui/MediaGrid/MediaGrid.ts +++ b/packages/admin/src/components/ui/MediaGrid/MediaGrid.ts @@ -42,6 +42,9 @@ export class MediaGrid extends connect(store)(LitElement) { @property({ type: Boolean, attribute: true }) public multiple: boolean = false; + @property({ type: Boolean, attribute: true }) + public searchable: boolean = false; + public get value() { return this._value; } @@ -49,7 +52,6 @@ export class MediaGrid extends connect(store)(LitElement) { @property() private _value: MediaResource[] = []; - @property() private _loading: boolean = true; @@ -62,6 +64,9 @@ export class MediaGrid extends connect(store)(LitElement) { @property() private _meID: null | string = null; + @property() + private _filteredResources: GridResource[] = []; + @property({type: Boolean}) private _dragging: boolean = false; @@ -106,9 +111,12 @@ export class MediaGrid extends connect(store)(LitElement) { constructor() { super(); - store.dispatch(mediaGet()); + store.dispatch(mediaGet()).then(() => { + this._filteredResources = this._resources; + }); } + public connectedCallback() { super.connectedCallback(); @@ -127,10 +135,21 @@ export class MediaGrid extends connect(store)(LitElement) { public render() { if (this._loading) return html``; - const resources = this._resources; - const empty = resources.length === 0; + const _resources = this._resources; + const resources = this.searchable ? this._filteredResources : _resources; + const empty = _resources.length === 0 && resources.length === 0; return html` + ${this.searchable + ? html` this._filteredResources = detail} + placeholder="Search for media…"> + ` + : null + } +