;;; -*- mode: Lisp; Syntax: Common-Lisp; -*-
;;;
;;; Copyright (c) 2009 by the authors.
;;;
;;; See LICENCE for details.
(in-package :hu.dwim.wui)
;;;;;;
;;; Checkbox field
(def (function e) render-checkbox-field (value &key checked-image unchecked-image (id (unique-js-name "_chkb"))
checked-tooltip unchecked-tooltip
checked-class unchecked-class
on-change name value-sink)
(assert (or (and (null checked-image) (null unchecked-image))
(and checked-image unchecked-image)))
(assert (not (and name value-sink)))
(assert (or name value-sink))
(when (typep name 'client-state-sink)
(setf name (id-of name)))
(bind ((name (if name
(etypecase name
(client-state-sink (id-of name))
(string name))
(progn
(assert (functionp value-sink))
(id-of (client-state-sink (client-value)
(funcall value-sink (string-to-lisp-boolean client-value)))))))
(custom (or checked-image checked-class))
(hidden-id (string+ id "_hidden"))
(checked (when value "")))
(if custom
(progn
;; TODO :tabindex (tabindex field)
;; :class (style-class field)
tags are not allowed without an alt, but this is pure confusion here...
![]()
)>
`js-onload(wui.field.setup-custom-checkbox ,id ,checked-image ,unchecked-image ,checked-tooltip ,unchecked-tooltip ,checked-class ,unchecked-class))
(progn
;; TODO :accesskey (accesskey field)
;; :title (or (tooltip field) (if value
;; (enabled-tooltip-of field)
;; (disabled-tooltip-of field)))
;; :tabindex (tabindex field)
;; :class (style-class field)
;; :style (style field)
`js-onload(wui.field.setup-simple-checkbox ,id ,checked-tooltip ,unchecked-tooltip))))
(values))
;;;;;;
;;; String field
(def function render-string-field (type value client-state-sink &key (id (generate-unique-component-id "_stw")) on-change on-key-down on-key-up)
(render-dojo-widget (id)
;; TODO dojoRows 3
))
;;;;;;
;;; Number field
(def function render-number-field (value client-state-sink &key (id (generate-unique-component-id "_nrw")) on-change on-key-down on-key-up)
(render-dojo-widget (id)
))
;;;;;;
;;; Combo box
(def function render-combo-box-field (value possible-values &key (id (generate-unique-component-id "_w")) name
(key #'identity) (test #'equal) (client-name-generator #'princ-to-string))