giffer

Create .gif images from sites like youtube.com
Log | Files | Refs | LICENSE

commit ee165b2ecaabb2c66192a3839dd42ef8a7226bb5
parent a1741c8213f2da38f7929745775a800ab57c4770
Author: Jack Mordaunt <jackmordaunt@gmail.com>
Date:   Wed, 14 Nov 2018 14:07:56 +1300

[+] Centering with flex-container.

Diffstat:
Mcmd/desktop/ui/src/App.vue | 198++++++++++++++++++++++++++++++++++++++++++++++++++-----------------------------
1 file changed, 125 insertions(+), 73 deletions(-)

diff --git a/cmd/desktop/ui/src/App.vue b/cmd/desktop/ui/src/App.vue @@ -3,77 +3,91 @@ <div class="header top-level"> <h1>Giffer</h1> </div> - <div class="container top-level"> - <div class="flex-grid"> - <div class="col"> - <sui-form - id="input-form" - class="top-level" - :loading="loading" - @submit.prevent="submit" - > - <sui-form-field> - <label>url</label> - <input id="url" name="url" type="url" placeholder="https://youtube.com/..." required v-model="form.url"> - </sui-form-field> - <sui-form-field> - <label>start</label> - <input name="start" type="number" placeholder="120" min="0" required v-model="form.start"> - </sui-form-field> - <sui-form-field> - <label>end</label> - <input name="end" type="number" placeholder="170" min="0" required v-model="form.end"> - </sui-form-field> - <sui-form-field> - <label>width</label> - <input name="width" type="number" placeholder="400" min="0" v-model="form.width"> - </sui-form-field> - <sui-form-field> - <label>height</label> - <input name="height" type="number" placeholder="250" min="0" v-model="form.height"> - </sui-form-field> - <sui-form-field> - <label>fps</label> - <input name="fps" type="number" placeholder="24" min="0" v-model="form.fps"> - </sui-form-field> - <sui-form-field> - <label>quality</label> - <sui-dropdown - name="quality" - fluid - placeholder="Select quality" - selection - search - :options="qualities" - v-model="form.quality" - > - </sui-dropdown> - </sui-form-field> - <sui-form-field> - <sui-button - id="input-form-button" - primary - type="submit" + <div class="flex-grid"> + <div class="col top-level"> + <div class="flex-container"> + <div class="row"> + <div class="flex-item"> + + <sui-form + id="input-form" + :loading="loading" + @submit.prevent="submit" > - Create - </sui-button> - </sui-form-field> - </sui-form> + <sui-form-field> + <label>url</label> + <input id="url" name="url" type="url" placeholder="https://youtube.com/..." required v-model="form.url"> + </sui-form-field> + <sui-form-fields unstackable> + <sui-form-field> + <label>start</label> + <input name="start" type="number" placeholder="120" min="0" required v-model="form.start"> + </sui-form-field> + <sui-form-field> + <label>end</label> + <input name="end" type="number" placeholder="170" min="0" required v-model="form.end"> + </sui-form-field> + </sui-form-fields> + <sui-form-fields unstackable> + <sui-form-field> + <label>width</label> + <input name="width" type="number" placeholder="400" min="0" v-model="form.width"> + </sui-form-field> + <sui-form-field> + <label>height</label> + <input name="height" type="number" placeholder="250" min="0" v-model="form.height"> + </sui-form-field> + </sui-form-fields> + <sui-form-field> + <label>fps</label> + <input name="fps" type="number" placeholder="24" min="0" v-model="form.fps"> + </sui-form-field> + <sui-form-field> + <label>quality</label> + <sui-dropdown + name="quality" + fluid + placeholder="Select quality" + selection + search + :options="qualities" + v-model="form.quality" + > + </sui-dropdown> + </sui-form-field> + <sui-form-field> + <sui-button + id="input-form-button" + primary + type="submit" + > + Create + </sui-button> + </sui-form-field> + </sui-form> + </div> + </div> </div> - <div class="col"> - <div v-if="link.length > 0"> - <sui-image :src="link" size="medium" bordered /> + </div> + <div class="col"> + <div class="flex-container"> + <div v-if="link.length > 0" class="row"> + <div class="flex-item"> + <sui-image :src="link" bordered/> + </div> </div> </div> - <div class="col"> - <div v-for="(err, ii) in errors" :key="ii"> - <sui-message error> + </div> + <!-- <div class="col"> + <div class="flex-container"> + <div v-for="(err, ii) in errors" :key="ii" class="row"> + <sui-message error class="flex-item"> <sui-message-header>Error</sui-message-header> <pre>{{err}}</pre> </sui-message> </div> </div> - </div> + </div> --> </div> </div> </template> @@ -178,30 +192,55 @@ body { } #input-form { - /* height: calc(100vh - 35px); - overflow-y: auto; */ - padding: 20px 20px 0 20px; + margin: 20px 20px 0 20px; + text-align: left; +} + +#input-form .inline.fields { + padding: 0; + display: flex; +} + +#input-form .inline.fields .field { + padding: 0; + flex: 1; } #input-form-button { margin-bottom: 20px; } -.flex-grid { +.header { + background-color: black; + color: white; +} + +.header > * { + margin: 0 20px; +} + +.flex-container { + height: 100%; + width: 100%; display: flex; + align-items: center; + justify-content: center; } -.col { - flex: 1 +.row { + width: auto; } -.flex-grid-thirds { - display: flex; - justify-content: space-between; +.flex-item { + text-align: center; } -.flex-grid-thirds .col { - width: 32%; +.flex-grid { + display: flex; +} + +.col { + flex: 1 } /* top-level specifies that the element's height is derived from the window @@ -221,5 +260,18 @@ body { .flex-grid { display: block; } + .top-level { + display: block; + padding-top: 35px; + height: 100%; + } + .top-level.header { + padding-top: 0; + top: 0; + position: fixed; + height: 35px; + width: 100vw; + z-index: 2; + } } </style>