| @@ -0,0 +1,39 | |||
| 
             | 
        1 | .progress-bar * { | |
| 
             | 
        2 | transition: all 0.5s; | |
| 
             | 
        3 | } | |
| 
             | 
        4 | ||
| 
             | 
        5 | .progress-bar { | |
| 
             | 
        6 | ||
| 
             | 
        7 | transition: all 0.5s; | |
| 
             | 
        8 | height: 1em; | |
| 
             | 
        9 | line-height: 0; | |
| 
             | 
        10 | font-size: 10px; | |
| 
             | 
        11 | white-space: nowrap; | |
| 
             | 
        12 | } | |
| 
             | 
        13 | ||
| 
             | 
        14 | .progress-track { | |
| 
             | 
        15 | background-color: #888; | |
| 
             | 
        16 | height: 0.2em; | |
| 
             | 
        17 | box-shadow: 0 0 0.5em 0 #0004; | |
| 
             | 
        18 | width: 70%; | |
| 
             | 
        19 | display: inline-block; | |
| 
             | 
        20 | vertical-align: middle; | |
| 
             | 
        21 | } | |
| 
             | 
        22 | ||
| 
             | 
        23 | .progress-indicator { | |
| 
             | 
        24 | width: 30%; | |
| 
             | 
        25 | background-color: #0ae; | |
| 
             | 
        26 | height: 100%; | |
| 
             | 
        27 | display: inline-block; | |
| 
             | 
        28 | vertical-align: middle; | |
| 
             | 
        29 | box-shadow: 0 0.6em 1em -0.4em #000; | |
| 
             | 
        30 | } | |
| 
             | 
        31 | ||
| 
             | 
        32 | .progress-bar:hover .progress-indicator { | |
| 
             | 
        33 | box-shadow: 0 1em 2em -0.4em #000; | |
| 
             | 
        34 | } | |
| 
             | 
        35 | ||
| 
             | 
        36 | .progress-bar:hover .progress-track { | |
| 
             | 
        37 | background-color: #0ae; | |
| 
             | 
        38 | box-shadow: 0 0 0.5em 0 #0ae; | |
| 
             | 
        39 | } No newline at end of file | |
| @@ -0,0 +1,19 | |||
| 
             | 
        1 | import { djbase, djclass } from "@implab/djx/declare"; | |
| 
             | 
        2 | import { createElement } from "@implab/djx/tsx"; | |
| 
             | 
        3 | import { DjxWidgetBase } from "@implab/djx/tsx/DjxWidgetBase"; | |
| 
             | 
        4 | import "@implab/djx/css!./css/ProgressBar.css"; | |
| 
             | 
        5 | ||
| 
             | 
        6 | @djclass | |
| 
             | 
        7 | export default class ProgressBar extends djbase(DjxWidgetBase) { | |
| 
             | 
        8 | ||
| 
             | 
        9 | constructor(opts?: Partial<ProgressBar> & ThisType<ProgressBar>, refNode?: Node | string) { | |
| 
             | 
        10 | super(opts, refNode); | |
| 
             | 
        11 | } | |
| 
             | 
        12 | render() { | |
| 
             | 
        13 | return <div class="progress-bar"> | |
| 
             | 
        14 | <div class="progress-indicator"/> | |
| 
             | 
        15 | <div class="progress-track"/> | |
| 
             | 
        16 | </div>; | |
| 
             | 
        17 | } | |
| 
             | 
        18 | ||
| 
             | 
        19 | } No newline at end of file | |
| @@ -1,12 +1,21 | |||
| 
             | 
        1 | 1 | import { djbase, djclass } from "@implab/djx/declare"; | 
| 
             | 
        2 | 2 | import { DjxWidgetBase } from "@implab/djx/tsx/DjxWidgetBase"; | 
| 
             | 
        3 | 3 | import { createElement } from "@implab/djx/tsx"; | 
| 
             | 
        4 | import ProgressBar from "./ProgressBar"; | |
| 
             | 
        5 | ||
| 
             | 
        6 | const ref = <W extends DjxWidgetBase, K extends keyof W>(target: W, name: K) => (v: W[K]) => target.set(name, v); | |
| 
             | 
        4 | 7 | |
| 
             | 
        5 | 8 | @djclass | 
| 
             | 
        6 | 9 | export default class MainWidget extends djbase(DjxWidgetBase) { | 
| 
             | 
        10 | ||
| 
             | 
        11 | titleNode?: HTMLHeadingElement; | |
| 
             | 
        12 | ||
| 
             | 
        13 | progressBar?: ProgressBar; | |
| 
             | 
        14 | ||
| 
             | 
        7 | 15 | render() { | 
| 
             | 
        8 | 16 | return <div> | 
| 
             | 
        9 | <h2>Hi!</h2> | |
| 
             | 
        17 | <h2 ref={ref(this, "titleNode")}>Hi!</h2> | |
| 
             | 
        18 | <ProgressBar ref={ref(this, "progressBar")}/> | |
| 
             | 
        10 | 19 | 
            
              | 
    
| 
             | 
        11 | 20 | } | 
| 
             | 
        12 | 21 | } | 
        
        General Comments 0
    
    
  
  
                      You need to be logged in to leave comments.
                      Login now
                    
                