Move initialization of attribute object
[clinton/lisp-on-lines.git] / src / ucw / html-description.lisp
CommitLineData
4358148e 1(in-package :lisp-on-lines)
2
3(export '(html-description))
4
5(define-description html-description ()
6 ((css-class :value "lol-description")
7 (dom-id :function (lambda (x)
8 (declare (ignore x))
9 (symbol-name
10 (gensym "DOM-ID-")))))
11 (:mixinp t))
12
13
14(define-description t (html-description)
15 ()
16 (:in-description html-description))
17
18(define-layered-class html-attribute ()
19 ((css-class :accessor attribute-css-class
20 :initform "lol-attribute")
21 (dom-id :accessor attribute-dom-id :initform nil)))
22
23(define-layered-class standard-attribute
24 :in-layer #.(defining-description 'html-description)
25 (html-attribute)
26 ())
27
28(define-display
29 :in-description html-description ((description t))
30 (with-attributes (css-class dom-id) description
31
32 (<:div
33 :class (attribute-value* css-class)
34 :id (attribute-value* dom-id)
35 (dolist (attribute (attributes description))
36 (<:div
37 :class (attribute-css-class attribute)
38 (when (attribute-dom-id attribute)
39 :id (attribute-dom-id attribute))
40 (<:span
41 :class "lol-attribute-label"
42 (<:as-html (attribute-label attribute)))
43 (<:span
44 :class "lol-attribute-value"
45 (<:as-html (attribute-value* attribute))))))))
46
47
48
49
50