;;; -*- mode: Lisp; Syntax: Common-Lisp; -*- ;;; ;;; Copyright (c) 2009 by the authors. ;;; ;;; See LICENCE for details. (in-package :hu.dwim.wui) ;;;;;; ;;; primitive/maker (def (component e) primitive/maker (primitive/presentation t/maker) ((initform) (use-initform :type boolean)) (:documentation "A PRIMITIVE/MAKER makers new values of primitive TYPEs.")) (def constructor primitive/maker () (setf (use-initform? -self-) (slot-boundp -self- 'initform))) (def render-xhtml :before primitive/maker (ensure-client-state-sink -self-)) (def function render-initform (component) (when (slot-boundp component 'initform) )) ;;;;;; ;;; unbound/maker (def (component e) unbound/maker (unbound/presentation primitive/maker) ()) ;;;;;; ;;; null/maker (def (component e) null/maker (null/presentation primitive/maker) ()) (def subtype-mapper *maker-type-mapping* null null/maker) ;;;;;; ;;; boolean/maker (def (component e) boolean/maker (boolean/presentation primitive/maker) ()) (def subtype-mapper *maker-type-mapping* boolean boolean/maker) (def render-xhtml boolean/maker (bind (((:read-only-slots component-value-type) -self-) (has-initform? (slot-boundp -self- 'initform)) (initform (when has-initform? (initform-of -self-))) (constant-initform? (member initform '(#f #t)))) (if (and (eq component-value-type 'boolean) has-initform? constant-initform?) (bind ((checked (when (and has-initform? (eq initform #t)) "checked"))) )