iss-ctrl 0.0.11 → 0.0.12
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/fesm2022/{iss-ctrl-iss-ctrl-hz0ibyPg.mjs → iss-ctrl-iss-ctrl-WfIqBEcL.mjs} +1348 -195
- package/fesm2022/iss-ctrl-iss-ctrl-WfIqBEcL.mjs.map +1 -0
- package/fesm2022/{iss-ctrl-load-event-BW5dKG8R.mjs → iss-ctrl-load-event-SlQmVmyf.mjs} +3 -3
- package/fesm2022/{iss-ctrl-load-event-BW5dKG8R.mjs.map → iss-ctrl-load-event-SlQmVmyf.mjs.map} +1 -1
- package/fesm2022/{iss-ctrl-load-options-event-ClX9TiiD.mjs → iss-ctrl-load-options-event-CBejHpME.mjs} +3 -3
- package/fesm2022/{iss-ctrl-load-options-event-ClX9TiiD.mjs.map → iss-ctrl-load-options-event-CBejHpME.mjs.map} +1 -1
- package/fesm2022/{iss-ctrl-load-value-event-DThpI9BA.mjs → iss-ctrl-load-value-event-Bu9-rZ6T.mjs} +3 -3
- package/fesm2022/{iss-ctrl-load-value-event-DThpI9BA.mjs.map → iss-ctrl-load-value-event-Bu9-rZ6T.mjs.map} +1 -1
- package/fesm2022/{iss-ctrl-note.field-4uLl0oS_.mjs → iss-ctrl-note.field-onDjqI_X.mjs} +24 -2
- package/fesm2022/iss-ctrl-note.field-onDjqI_X.mjs.map +1 -0
- package/fesm2022/{iss-ctrl-replace-api-keys-BQL9zimJ.mjs → iss-ctrl-replace-api-keys-Chwe42Nu.mjs} +2 -2
- package/fesm2022/{iss-ctrl-replace-api-keys-BQL9zimJ.mjs.map → iss-ctrl-replace-api-keys-Chwe42Nu.mjs.map} +1 -1
- package/fesm2022/{iss-ctrl-set-value-event-BbEYFBe3.mjs → iss-ctrl-set-value-event-DiHESiPT.mjs} +2 -2
- package/fesm2022/{iss-ctrl-set-value-event-BbEYFBe3.mjs.map → iss-ctrl-set-value-event-DiHESiPT.mjs.map} +1 -1
- package/fesm2022/{iss-ctrl-table.field-kPIwve-M.mjs → iss-ctrl-table.field-DxwfNXNc.mjs} +77 -2
- package/fesm2022/iss-ctrl-table.field-DxwfNXNc.mjs.map +1 -0
- package/fesm2022/{iss-ctrl-trigger-based-on-json-value-DuLD4SOS.mjs → iss-ctrl-trigger-based-on-json-value-CprcFCWi.mjs} +2 -2
- package/fesm2022/{iss-ctrl-trigger-based-on-json-value-DuLD4SOS.mjs.map → iss-ctrl-trigger-based-on-json-value-CprcFCWi.mjs.map} +1 -1
- package/fesm2022/{iss-ctrl-user-picker.field-l-0bW6lP.mjs → iss-ctrl-user-picker.field-Mqi37i7D.mjs} +33 -8
- package/fesm2022/iss-ctrl-user-picker.field-Mqi37i7D.mjs.map +1 -0
- package/fesm2022/iss-ctrl.mjs +1 -1
- package/package.json +1 -1
- package/types/iss-ctrl.d.ts +1117 -0
- package/fesm2022/iss-ctrl-iss-ctrl-hz0ibyPg.mjs.map +0 -1
- package/fesm2022/iss-ctrl-note.field-4uLl0oS_.mjs.map +0 -1
- package/fesm2022/iss-ctrl-table.field-kPIwve-M.mjs.map +0 -1
- package/fesm2022/iss-ctrl-user-picker.field-l-0bW6lP.mjs.map +0 -1
- package/src/components/controls/mobile/flags/ad.svg +0 -282
- package/src/components/controls/mobile/flags/ae.svg +0 -6
- package/src/components/controls/mobile/flags/af.svg +0 -9
- package/src/components/controls/mobile/flags/ag.svg +0 -15
- package/src/components/controls/mobile/flags/ai.svg +0 -35
- package/src/components/controls/mobile/flags/al.svg +0 -7
- package/src/components/controls/mobile/flags/am.svg +0 -5
- package/src/components/controls/mobile/flags/ao.svg +0 -19
- package/src/components/controls/mobile/flags/aq.svg +0 -45
- package/src/components/controls/mobile/flags/ar.svg +0 -66
- package/src/components/controls/mobile/flags/as.svg +0 -225
- package/src/components/controls/mobile/flags/at.svg +0 -4
- package/src/components/controls/mobile/flags/au.svg +0 -32
- package/src/components/controls/mobile/flags/aw.svg +0 -11
- package/src/components/controls/mobile/flags/ax.svg +0 -11
- package/src/components/controls/mobile/flags/az.svg +0 -11
- package/src/components/controls/mobile/flags/ba.svg +0 -18
- package/src/components/controls/mobile/flags/bb.svg +0 -11
- package/src/components/controls/mobile/flags/bd.svg +0 -4
- package/src/components/controls/mobile/flags/be.svg +0 -5
- package/src/components/controls/mobile/flags/bf.svg +0 -14
- package/src/components/controls/mobile/flags/bg.svg +0 -5
- package/src/components/controls/mobile/flags/bh.svg +0 -4
- package/src/components/controls/mobile/flags/bi.svg +0 -26
- package/src/components/controls/mobile/flags/bj.svg +0 -5
- package/src/components/controls/mobile/flags/bl.svg +0 -5
- package/src/components/controls/mobile/flags/bm.svg +0 -374
- package/src/components/controls/mobile/flags/bn.svg +0 -70
- package/src/components/controls/mobile/flags/bo.svg +0 -3625
- package/src/components/controls/mobile/flags/bq.svg +0 -5
- package/src/components/controls/mobile/flags/br.svg +0 -92
- package/src/components/controls/mobile/flags/bs.svg +0 -5
- package/src/components/controls/mobile/flags/bt.svg +0 -487
- package/src/components/controls/mobile/flags/bv.svg +0 -11
- package/src/components/controls/mobile/flags/bw.svg +0 -5
- package/src/components/controls/mobile/flags/by.svg +0 -15
- package/src/components/controls/mobile/flags/bz.svg +0 -629
- package/src/components/controls/mobile/flags/ca.svg +0 -7
- package/src/components/controls/mobile/flags/cc.svg +0 -33
- package/src/components/controls/mobile/flags/cd.svg +0 -5
- package/src/components/controls/mobile/flags/cf.svg +0 -7
- package/src/components/controls/mobile/flags/cg.svg +0 -5
- package/src/components/controls/mobile/flags/ch.svg +0 -4
- package/src/components/controls/mobile/flags/ci.svg +0 -5
- package/src/components/controls/mobile/flags/ck.svg +0 -29
- package/src/components/controls/mobile/flags/cl.svg +0 -14
- package/src/components/controls/mobile/flags/cm.svg +0 -15
- package/src/components/controls/mobile/flags/cn.svg +0 -11
- package/src/components/controls/mobile/flags/co.svg +0 -5
- package/src/components/controls/mobile/flags/cr.svg +0 -1332
- package/src/components/controls/mobile/flags/cu.svg +0 -6
- package/src/components/controls/mobile/flags/cv.svg +0 -24
- package/src/components/controls/mobile/flags/cw.svg +0 -16
- package/src/components/controls/mobile/flags/cx.svg +0 -24
- package/src/components/controls/mobile/flags/cy.svg +0 -13
- package/src/components/controls/mobile/flags/cz.svg +0 -5
- package/src/components/controls/mobile/flags/de.svg +0 -5
- package/src/components/controls/mobile/flags/dj.svg +0 -6
- package/src/components/controls/mobile/flags/dk.svg +0 -5
- package/src/components/controls/mobile/flags/dm.svg +0 -198
- package/src/components/controls/mobile/flags/do.svg +0 -238
- package/src/components/controls/mobile/flags/dz.svg +0 -5
- package/src/components/controls/mobile/flags/ec.svg +0 -1292
- package/src/components/controls/mobile/flags/ee.svg +0 -5
- package/src/components/controls/mobile/flags/eg.svg +0 -125
- package/src/components/controls/mobile/flags/eh.svg +0 -12
- package/src/components/controls/mobile/flags/er.svg +0 -9
- package/src/components/controls/mobile/flags/es.svg +0 -445
- package/src/components/controls/mobile/flags/et.svg +0 -16
- package/src/components/controls/mobile/flags/eu.svg +0 -28
- package/src/components/controls/mobile/flags/fi.svg +0 -5
- package/src/components/controls/mobile/flags/fj.svg +0 -203
- package/src/components/controls/mobile/flags/fk.svg +0 -922
- package/src/components/controls/mobile/flags/flags.png +0 -0
- package/src/components/controls/mobile/flags/flags@2x.png +0 -0
- package/src/components/controls/mobile/flags/fm.svg +0 -16
- package/src/components/controls/mobile/flags/fo.svg +0 -11
- package/src/components/controls/mobile/flags/fonts.css +0 -271
- package/src/components/controls/mobile/flags/fr.svg +0 -5
- package/src/components/controls/mobile/flags/ga.svg +0 -5
- package/src/components/controls/mobile/flags/gb-eng.svg +0 -7
- package/src/components/controls/mobile/flags/gb-nir.svg +0 -15
- package/src/components/controls/mobile/flags/gb-sct.svg +0 -11
- package/src/components/controls/mobile/flags/gb-wls.svg +0 -16
- package/src/components/controls/mobile/flags/gb.svg +0 -15
- package/src/components/controls/mobile/flags/gd.svg +0 -11
- package/src/components/controls/mobile/flags/ge.svg +0 -17
- package/src/components/controls/mobile/flags/gf.svg +0 -5
- package/src/components/controls/mobile/flags/gg.svg +0 -8
- package/src/components/controls/mobile/flags/gh.svg +0 -6
- package/src/components/controls/mobile/flags/gi.svg +0 -69
- package/src/components/controls/mobile/flags/gl.svg +0 -4
- package/src/components/controls/mobile/flags/gm.svg +0 -7
- package/src/components/controls/mobile/flags/gn.svg +0 -5
- package/src/components/controls/mobile/flags/gp.svg +0 -5
- package/src/components/controls/mobile/flags/gq.svg +0 -88
- package/src/components/controls/mobile/flags/gr.svg +0 -4
- package/src/components/controls/mobile/flags/gs.svg +0 -693
- package/src/components/controls/mobile/flags/gt.svg +0 -317
- package/src/components/controls/mobile/flags/gu.svg +0 -58
- package/src/components/controls/mobile/flags/gw.svg +0 -13
- package/src/components/controls/mobile/flags/gy.svg +0 -7
- package/src/components/controls/mobile/flags/hk.svg +0 -17
- package/src/components/controls/mobile/flags/hm.svg +0 -32
- package/src/components/controls/mobile/flags/hn.svg +0 -10
- package/src/components/controls/mobile/flags/hr.svg +0 -282
- package/src/components/controls/mobile/flags/ht.svg +0 -1470
- package/src/components/controls/mobile/flags/hu.svg +0 -5
- package/src/components/controls/mobile/flags/id.svg +0 -4
- package/src/components/controls/mobile/flags/ie.svg +0 -5
- package/src/components/controls/mobile/flags/il.svg +0 -5
- package/src/components/controls/mobile/flags/im.svg +0 -33
- package/src/components/controls/mobile/flags/in.svg +0 -25
- package/src/components/controls/mobile/flags/io.svg +0 -895
- package/src/components/controls/mobile/flags/iq.svg +0 -12
- package/src/components/controls/mobile/flags/ir.svg +0 -31
- package/src/components/controls/mobile/flags/is.svg +0 -5
- package/src/components/controls/mobile/flags/it.svg +0 -5
- package/src/components/controls/mobile/flags/je.svg +0 -40
- package/src/components/controls/mobile/flags/jm.svg +0 -9
- package/src/components/controls/mobile/flags/jo.svg +0 -10
- package/src/components/controls/mobile/flags/jp.svg +0 -4
- package/src/components/controls/mobile/flags/ke.svg +0 -28
- package/src/components/controls/mobile/flags/kg.svg +0 -7
- package/src/components/controls/mobile/flags/kh.svg +0 -133
- package/src/components/controls/mobile/flags/ki.svg +0 -54
- package/src/components/controls/mobile/flags/km.svg +0 -13
- package/src/components/controls/mobile/flags/kn.svg +0 -24
- package/src/components/controls/mobile/flags/kp.svg +0 -16
- package/src/components/controls/mobile/flags/kr.svg +0 -16
- package/src/components/controls/mobile/flags/kw.svg +0 -6
- package/src/components/controls/mobile/flags/ky.svg +0 -153
- package/src/components/controls/mobile/flags/kz.svg +0 -49
- package/src/components/controls/mobile/flags/la.svg +0 -5
- package/src/components/controls/mobile/flags/lb.svg +0 -8
- package/src/components/controls/mobile/flags/lc.svg +0 -6
- package/src/components/controls/mobile/flags/li.svg +0 -75
- package/src/components/controls/mobile/flags/lk.svg +0 -50
- package/src/components/controls/mobile/flags/lr.svg +0 -15
- package/src/components/controls/mobile/flags/ls.svg +0 -32
- package/src/components/controls/mobile/flags/lt.svg +0 -5
- package/src/components/controls/mobile/flags/lu.svg +0 -5
- package/src/components/controls/mobile/flags/lv.svg +0 -4
- package/src/components/controls/mobile/flags/ly.svg +0 -8
- package/src/components/controls/mobile/flags/ma.svg +0 -4
- package/src/components/controls/mobile/flags/mc.svg +0 -4
- package/src/components/controls/mobile/flags/md.svg +0 -102
- package/src/components/controls/mobile/flags/me.svg +0 -240
- package/src/components/controls/mobile/flags/mf.svg +0 -5
- package/src/components/controls/mobile/flags/mg.svg +0 -5
- package/src/components/controls/mobile/flags/mh.svg +0 -18
- package/src/components/controls/mobile/flags/mk.svg +0 -6
- package/src/components/controls/mobile/flags/ml.svg +0 -5
- package/src/components/controls/mobile/flags/mm.svg +0 -12
- package/src/components/controls/mobile/flags/mn.svg +0 -12
- package/src/components/controls/mobile/flags/mo.svg +0 -13
- package/src/components/controls/mobile/flags/mp.svg +0 -2919
- package/src/components/controls/mobile/flags/mq.svg +0 -5
- package/src/components/controls/mobile/flags/mr.svg +0 -5
- package/src/components/controls/mobile/flags/ms.svg +0 -59
- package/src/components/controls/mobile/flags/mt.svg +0 -52
- package/src/components/controls/mobile/flags/mu.svg +0 -6
- package/src/components/controls/mobile/flags/mv.svg +0 -8
- package/src/components/controls/mobile/flags/mw.svg +0 -24
- package/src/components/controls/mobile/flags/mx.svg +0 -1129
- package/src/components/controls/mobile/flags/my.svg +0 -12
- package/src/components/controls/mobile/flags/mz.svg +0 -50
- package/src/components/controls/mobile/flags/na.svg +0 -17
- package/src/components/controls/mobile/flags/nc.svg +0 -5
- package/src/components/controls/mobile/flags/ne.svg +0 -6
- package/src/components/controls/mobile/flags/nf.svg +0 -8
- package/src/components/controls/mobile/flags/ng.svg +0 -4
- package/src/components/controls/mobile/flags/ni.svg +0 -281
- package/src/components/controls/mobile/flags/nl.svg +0 -5
- package/src/components/controls/mobile/flags/no.svg +0 -11
- package/src/components/controls/mobile/flags/np.svg +0 -33
- package/src/components/controls/mobile/flags/nr.svg +0 -8
- package/src/components/controls/mobile/flags/nu.svg +0 -23
- package/src/components/controls/mobile/flags/nz.svg +0 -37
- package/src/components/controls/mobile/flags/om.svg +0 -307
- package/src/components/controls/mobile/flags/pa.svg +0 -15
- package/src/components/controls/mobile/flags/pe.svg +0 -767
- package/src/components/controls/mobile/flags/pf.svg +0 -38
- package/src/components/controls/mobile/flags/pg.svg +0 -16
- package/src/components/controls/mobile/flags/ph.svg +0 -28
- package/src/components/controls/mobile/flags/pk.svg +0 -7
- package/src/components/controls/mobile/flags/pl.svg +0 -4
- package/src/components/controls/mobile/flags/pm.svg +0 -5
- package/src/components/controls/mobile/flags/pn.svg +0 -131
- package/src/components/controls/mobile/flags/pr.svg +0 -6
- package/src/components/controls/mobile/flags/ps.svg +0 -6
- package/src/components/controls/mobile/flags/pt.svg +0 -79
- package/src/components/controls/mobile/flags/pw.svg +0 -4
- package/src/components/controls/mobile/flags/py.svg +0 -192
- package/src/components/controls/mobile/flags/qa.svg +0 -7
- package/src/components/controls/mobile/flags/re.svg +0 -5
- package/src/components/controls/mobile/flags/ro.svg +0 -5
- package/src/components/controls/mobile/flags/rs.svg +0 -1143
- package/src/components/controls/mobile/flags/ru.svg +0 -5
- package/src/components/controls/mobile/flags/rw.svg +0 -17
- package/src/components/controls/mobile/flags/sa.svg +0 -23
- package/src/components/controls/mobile/flags/sb.svg +0 -30
- package/src/components/controls/mobile/flags/sc.svg +0 -7
- package/src/components/controls/mobile/flags/sd.svg +0 -6
- package/src/components/controls/mobile/flags/se.svg +0 -5
- package/src/components/controls/mobile/flags/sg.svg +0 -15
- package/src/components/controls/mobile/flags/sh.svg +0 -15
- package/src/components/controls/mobile/flags/si.svg +0 -30
- package/src/components/controls/mobile/flags/sj.svg +0 -11
- package/src/components/controls/mobile/flags/sk.svg +0 -21
- package/src/components/controls/mobile/flags/sl.svg +0 -5
- package/src/components/controls/mobile/flags/sm.svg +0 -847
- package/src/components/controls/mobile/flags/sn.svg +0 -15
- package/src/components/controls/mobile/flags/so.svg +0 -13
- package/src/components/controls/mobile/flags/sr.svg +0 -6
- package/src/components/controls/mobile/flags/ss.svg +0 -8
- package/src/components/controls/mobile/flags/st.svg +0 -16
- package/src/components/controls/mobile/flags/stc-icons.css +0 -1
- package/src/components/controls/mobile/flags/sv.svg +0 -3368
- package/src/components/controls/mobile/flags/sx.svg +0 -172
- package/src/components/controls/mobile/flags/sy.svg +0 -6
- package/src/components/controls/mobile/flags/sz.svg +0 -54
- package/src/components/controls/mobile/flags/tc.svg +0 -88
- package/src/components/controls/mobile/flags/td.svg +0 -5
- package/src/components/controls/mobile/flags/tf.svg +0 -18
- package/src/components/controls/mobile/flags/tg.svg +0 -15
- package/src/components/controls/mobile/flags/th.svg +0 -5
- package/src/components/controls/mobile/flags/tj.svg +0 -32
- package/src/components/controls/mobile/flags/tk.svg +0 -25
- package/src/components/controls/mobile/flags/tl.svg +0 -6
- package/src/components/controls/mobile/flags/tm.svg +0 -349
- package/src/components/controls/mobile/flags/tn.svg +0 -9
- package/src/components/controls/mobile/flags/to.svg +0 -8
- package/src/components/controls/mobile/flags/tr.svg +0 -6
- package/src/components/controls/mobile/flags/tt.svg +0 -5
- package/src/components/controls/mobile/flags/tv.svg +0 -18
- package/src/components/controls/mobile/flags/tw.svg +0 -12
- package/src/components/controls/mobile/flags/tz.svg +0 -13
- package/src/components/controls/mobile/flags/ua.svg +0 -4
- package/src/components/controls/mobile/flags/ug.svg +0 -46
- package/src/components/controls/mobile/flags/um.svg +0 -25
- package/src/components/controls/mobile/flags/us.svg +0 -25
- package/src/components/controls/mobile/flags/uy.svg +0 -138
- package/src/components/controls/mobile/flags/uz.svg +0 -30
- package/src/components/controls/mobile/flags/va.svg +0 -277
- package/src/components/controls/mobile/flags/vc.svg +0 -9
- package/src/components/controls/mobile/flags/ve.svg +0 -28
- package/src/components/controls/mobile/flags/vg.svg +0 -96
- package/src/components/controls/mobile/flags/vi.svg +0 -311
- package/src/components/controls/mobile/flags/vn.svg +0 -12
- package/src/components/controls/mobile/flags/vu.svg +0 -20
- package/src/components/controls/mobile/flags/wf.svg +0 -7
- package/src/components/controls/mobile/flags/ws.svg +0 -14
- package/src/components/controls/mobile/flags/xk.svg +0 -11
- package/src/components/controls/mobile/flags/ye.svg +0 -5
- package/src/components/controls/mobile/flags/yt.svg +0 -5
- package/src/components/controls/mobile/flags/za.svg +0 -17
- package/src/components/controls/mobile/flags/zm.svg +0 -20
- package/src/components/controls/mobile/flags/zw.svg +0 -130
- package/src/upgrade.scss +0 -68
package/types/iss-ctrl.d.ts
CHANGED
|
@@ -20,27 +20,112 @@ interface Hint {
|
|
|
20
20
|
align: HintAlignment;
|
|
21
21
|
}
|
|
22
22
|
|
|
23
|
+
/**
|
|
24
|
+
* Base class for every `iss-ctrl-*` control.
|
|
25
|
+
*
|
|
26
|
+
* Controls are the presentational layer: they know nothing about {@link IssField} and are
|
|
27
|
+
* driven purely by bindings, so they can be used standalone inside any reactive form.
|
|
28
|
+
* Every control below inherits the properties declared here and adds its own on top.
|
|
29
|
+
*
|
|
30
|
+
* ### Inherited inputs
|
|
31
|
+
* | Property | Type | Default | Description |
|
|
32
|
+
* | --- | --- | --- | --- |
|
|
33
|
+
* | `formControlName` | `string` | `""` | Name of the control in the surrounding `FormGroup`. |
|
|
34
|
+
* | `placeholder` | `string` | `""` | Placeholder text shown while the field is empty. |
|
|
35
|
+
* | `readonly` | `boolean` | `false` | Renders the value but blocks every interaction. |
|
|
36
|
+
* | `multiple` | `boolean \| undefined` | `false` | Allows more than one value, where the control supports it. |
|
|
37
|
+
* | `min` | `number \| string \| null` | `null` | Lower bound (number or date/time string). |
|
|
38
|
+
* | `max` | `number \| string \| null` | `null` | Upper bound (number or date/time string). |
|
|
39
|
+
* | `minLength` | `number \| null` | `null` | Minimum number of characters. |
|
|
40
|
+
* | `maxLength` | `number \| null` | `null` | Maximum number of characters. |
|
|
41
|
+
* | `hints` | `Hint[]` | `[]` | Helper messages rendered under the field. |
|
|
42
|
+
* | `className` | `string \| null` | `null` | Extra CSS classes for the host. |
|
|
43
|
+
*
|
|
44
|
+
* ### Inherited outputs
|
|
45
|
+
* | Event | Payload | Description |
|
|
46
|
+
* | --- | --- | --- |
|
|
47
|
+
* | `(onChange)` | `any` | Fires after every committed value change. |
|
|
48
|
+
*
|
|
49
|
+
* ### Not inputs
|
|
50
|
+
* `disabled` and `touched` are signals owned by the control. Disable a control through the
|
|
51
|
+
* forms API (`ctrl.disable()` or a `disabled` field config), never with a template binding.
|
|
52
|
+
*
|
|
53
|
+
* ### Content projection
|
|
54
|
+
* Controls that render a `mat-form-field` project `<label>` into the floating label.
|
|
55
|
+
* The label space collapses automatically when no `<label>` is supplied.
|
|
56
|
+
*
|
|
57
|
+
* @example
|
|
58
|
+
* ```html
|
|
59
|
+
* <iss-ctrl-input formControlName="email" [readonly]="false" (onChange)="save($event)">
|
|
60
|
+
* <label>Email</label>
|
|
61
|
+
* </iss-ctrl-input>
|
|
62
|
+
* ```
|
|
63
|
+
*/
|
|
23
64
|
declare class ControlBase implements ControlValueAccessor, Validator {
|
|
65
|
+
/**
|
|
66
|
+
* Name of this control inside the surrounding `FormGroup`.
|
|
67
|
+
*/
|
|
24
68
|
formControlName: InputSignal<string>;
|
|
69
|
+
/**
|
|
70
|
+
* Lower bound forwarded to the underlying input — a number, or a date/time string.
|
|
71
|
+
*/
|
|
25
72
|
min: InputSignal<number | string | null>;
|
|
73
|
+
/**
|
|
74
|
+
* Upper bound forwarded to the underlying input — a number, or a date/time string.
|
|
75
|
+
*/
|
|
26
76
|
max: InputSignal<number | string | null>;
|
|
77
|
+
/**
|
|
78
|
+
* Minimum number of characters accepted by the underlying input.
|
|
79
|
+
*/
|
|
27
80
|
minLength: InputSignal<number | null>;
|
|
81
|
+
/**
|
|
82
|
+
* Maximum number of characters accepted by the underlying input.
|
|
83
|
+
*/
|
|
28
84
|
maxLength: InputSignal<number | null>;
|
|
85
|
+
/**
|
|
86
|
+
* Disabled state. **Not an input** — it is set by the forms API through
|
|
87
|
+
* {@link ControlBase.setDisabledState}. Disable via `ctrl.disable()` or the field config.
|
|
88
|
+
*/
|
|
29
89
|
disabled: WritableSignal<boolean>;
|
|
90
|
+
/**
|
|
91
|
+
* Renders the current value but blocks every user interaction.
|
|
92
|
+
*/
|
|
30
93
|
readonly: InputSignal<boolean>;
|
|
94
|
+
/**
|
|
95
|
+
* Allows selecting/entering more than one value, on controls that support it.
|
|
96
|
+
*/
|
|
31
97
|
multiple: InputSignal<boolean | undefined>;
|
|
98
|
+
/**
|
|
99
|
+
* Placeholder text shown while the control has no value.
|
|
100
|
+
*/
|
|
32
101
|
placeholder: InputSignal<string>;
|
|
102
|
+
/**
|
|
103
|
+
* Helper messages rendered beneath the field. See {@link Hint}.
|
|
104
|
+
*/
|
|
33
105
|
hints: InputSignal<Hint[]>;
|
|
106
|
+
/**
|
|
107
|
+
* Extra CSS class names applied to the control host.
|
|
108
|
+
*/
|
|
34
109
|
className: InputSignal<string | null>;
|
|
110
|
+
/**
|
|
111
|
+
* Whether the user has interacted with the control. Owned by the control, not an input.
|
|
112
|
+
*/
|
|
35
113
|
touched: WritableSignal<boolean>;
|
|
114
|
+
/**
|
|
115
|
+
* Emits the committed value after every change.
|
|
116
|
+
*/
|
|
36
117
|
onChange: OutputEmitterRef<any>;
|
|
37
118
|
protected ctrl: FormControl;
|
|
119
|
+
protected hasLabel: WritableSignal<boolean>;
|
|
120
|
+
private hostRef;
|
|
121
|
+
constructor();
|
|
38
122
|
registerOnChange(fn: () => void): void;
|
|
39
123
|
registerOnTouched(fn: () => void): void;
|
|
40
124
|
setDisabledState(isDisabled: boolean): void;
|
|
41
125
|
writeValue(value: string | FormData | Date | null): void;
|
|
42
126
|
markAsTouched(): void;
|
|
43
127
|
validate(control: AbstractControl): ValidationErrors | null;
|
|
128
|
+
private hasProjectedLabel;
|
|
44
129
|
protected onTouch: () => void;
|
|
45
130
|
protected onPropagateValue: (_: any) => void;
|
|
46
131
|
protected emitValue(value?: any): void;
|
|
@@ -50,9 +135,36 @@ declare class ControlBase implements ControlValueAccessor, Validator {
|
|
|
50
135
|
static ɵcmp: i0.ɵɵComponentDeclaration<ControlBase, "ng-component", never, { "formControlName": { "alias": "formControlName"; "required": false; "isSignal": true; }; "min": { "alias": "min"; "required": false; "isSignal": true; }; "max": { "alias": "max"; "required": false; "isSignal": true; }; "minLength": { "alias": "minLength"; "required": false; "isSignal": true; }; "maxLength": { "alias": "maxLength"; "required": false; "isSignal": true; }; "readonly": { "alias": "readonly"; "required": false; "isSignal": true; }; "multiple": { "alias": "multiple"; "required": false; "isSignal": true; }; "placeholder": { "alias": "placeholder"; "required": false; "isSignal": true; }; "hints": { "alias": "hints"; "required": false; "isSignal": true; }; "className": { "alias": "className"; "required": false; "isSignal": true; }; }, { "onChange": "onChange"; }, never, never, true, never>;
|
|
51
136
|
}
|
|
52
137
|
|
|
138
|
+
/**
|
|
139
|
+
* `<iss-ctrl-checkbox>` — a list of checkboxes over a fixed set of options.
|
|
140
|
+
*
|
|
141
|
+
* The form value is the comma separated list of selected option values, while `(onChange)`
|
|
142
|
+
* emits the resolved `Option[]` (or `null` when nothing is selected).
|
|
143
|
+
*
|
|
144
|
+
* @example
|
|
145
|
+
* ```html
|
|
146
|
+
* <iss-ctrl-checkbox formControlName="days" [options]="days" (onChange)="pick($event)"/>
|
|
147
|
+
* ```
|
|
148
|
+
*
|
|
149
|
+
* ### Own inputs
|
|
150
|
+
* | Property | Type | Default | Description |
|
|
151
|
+
* | --- | --- | --- | --- |
|
|
152
|
+
* | `options` | `Option[]` | **required** | The selectable choices. |
|
|
153
|
+
*
|
|
154
|
+
* ### Inherited from {@link ControlBase}
|
|
155
|
+
* `formControlName` · `readonly` · `className` · `(onChange)`
|
|
156
|
+
*
|
|
157
|
+
* Does not project a label — the field label is rendered by the wrapping `iss-field-*`.
|
|
158
|
+
*/
|
|
53
159
|
declare class CheckboxControl extends ControlBase {
|
|
54
160
|
#private;
|
|
161
|
+
/**
|
|
162
|
+
* Selectable choices, each a `{ value, label }` pair. Required.
|
|
163
|
+
*/
|
|
55
164
|
options: InputSignal<Option[]>;
|
|
165
|
+
/**
|
|
166
|
+
* Currently checked options, keyed by value. Internal state, not an input.
|
|
167
|
+
*/
|
|
56
168
|
selectedOptions: WritableSignal<Map<string, Option>>;
|
|
57
169
|
writeValue(value: string | null): void;
|
|
58
170
|
addToSelectedOptionsMap(option: Map<string, Option>): void;
|
|
@@ -63,8 +175,32 @@ declare class CheckboxControl extends ControlBase {
|
|
|
63
175
|
static ɵcmp: i0.ɵɵComponentDeclaration<CheckboxControl, "iss-ctrl-checkbox", never, { "options": { "alias": "options"; "required": true; "isSignal": true; }; }, {}, never, never, true, never>;
|
|
64
176
|
}
|
|
65
177
|
|
|
178
|
+
/**
|
|
179
|
+
* `<iss-ctrl-chips>` — free text entered as removable chips.
|
|
180
|
+
*
|
|
181
|
+
* Each `Enter` turns the typed text into a chip. The form value is the comma separated list
|
|
182
|
+
* of chip labels.
|
|
183
|
+
*
|
|
184
|
+
* @example
|
|
185
|
+
* ```html
|
|
186
|
+
* <iss-ctrl-chips formControlName="tags" placeholder="Add a tag">
|
|
187
|
+
* <label>Tags</label>
|
|
188
|
+
* </iss-ctrl-chips>
|
|
189
|
+
* ```
|
|
190
|
+
*
|
|
191
|
+
* ### Own inputs
|
|
192
|
+
* None — the control is configured entirely through the inherited properties.
|
|
193
|
+
*
|
|
194
|
+
* ### Inherited from {@link ControlBase}
|
|
195
|
+
* `formControlName` · `readonly` · `className` · `(onChange)` · `placeholder`
|
|
196
|
+
*
|
|
197
|
+
* Projects `<label>` into the floating label; omit it to render the control without one.
|
|
198
|
+
*/
|
|
66
199
|
declare class ChipsControl extends ControlBase {
|
|
67
200
|
#private;
|
|
201
|
+
/**
|
|
202
|
+
* The chips currently rendered. Internal state, not an input.
|
|
203
|
+
*/
|
|
68
204
|
readonly keywords: WritableSignal<string[]>;
|
|
69
205
|
writeValue(value: string | null): void;
|
|
70
206
|
remove(keyword: string): void;
|
|
@@ -73,9 +209,43 @@ declare class ChipsControl extends ControlBase {
|
|
|
73
209
|
static ɵcmp: i0.ɵɵComponentDeclaration<ChipsControl, "iss-ctrl-chips", never, {}, {}, never, ["label"], true, never>;
|
|
74
210
|
}
|
|
75
211
|
|
|
212
|
+
/**
|
|
213
|
+
* `<iss-ctrl-date-picker>` — single date selection through a Material calendar.
|
|
214
|
+
*
|
|
215
|
+
* The input itself is read-only; clicking it opens the calendar. The emitted value is a
|
|
216
|
+
* `yyyy-MM-dd` string, and a clear button appears once a date is picked.
|
|
217
|
+
*
|
|
218
|
+
* @example
|
|
219
|
+
* ```html
|
|
220
|
+
* <iss-ctrl-date-picker formControlName="startsOn" [minDate]="today" [disabledDays]="[5, 6]">
|
|
221
|
+
* <label>Start date</label>
|
|
222
|
+
* </iss-ctrl-date-picker>
|
|
223
|
+
* ```
|
|
224
|
+
*
|
|
225
|
+
* ### Own inputs
|
|
226
|
+
* | Property | Type | Default | Description |
|
|
227
|
+
* | --- | --- | --- | --- |
|
|
228
|
+
* | `minDate` | `Date \| null` | `null` | Earliest selectable date. |
|
|
229
|
+
* | `maxDate` | `Date \| null` | `null` | Latest selectable date. |
|
|
230
|
+
* | `disabledDays` | `number[]` | `[]` | Week days to block, `0` = Sunday … `6` = Saturday. |
|
|
231
|
+
*
|
|
232
|
+
* ### Inherited from {@link ControlBase}
|
|
233
|
+
* `formControlName` · `readonly` · `className` · `(onChange)`
|
|
234
|
+
*
|
|
235
|
+
* Projects `<label>` into the floating label; omit it to render the control without one.
|
|
236
|
+
*/
|
|
76
237
|
declare class DatePickerControl extends ControlBase implements Validator {
|
|
238
|
+
/**
|
|
239
|
+
* Week days that cannot be selected — `0` is Sunday through `6` for Saturday.
|
|
240
|
+
*/
|
|
77
241
|
disabledDays: InputSignal<number[]>;
|
|
242
|
+
/**
|
|
243
|
+
* Earliest selectable date.
|
|
244
|
+
*/
|
|
78
245
|
minDate: InputSignal<Date | null>;
|
|
246
|
+
/**
|
|
247
|
+
* Latest selectable date.
|
|
248
|
+
*/
|
|
79
249
|
maxDate: InputSignal<Date | null>;
|
|
80
250
|
clear(event: MouseEvent): void;
|
|
81
251
|
protected calendarDaysFilter: (d: Date | null) => boolean;
|
|
@@ -91,12 +261,56 @@ interface DateRangeEmission {
|
|
|
91
261
|
end: string;
|
|
92
262
|
}
|
|
93
263
|
|
|
264
|
+
/**
|
|
265
|
+
* `<iss-ctrl-date-range-picker>` — a start/end date range in one field.
|
|
266
|
+
*
|
|
267
|
+
* A half-filled range is not a value: clearing either endpoint clears the form value and
|
|
268
|
+
* emits `null`. The form value is a `yyyy-MM-dd` string pair; `(onDateRangeObjectChange)`
|
|
269
|
+
* emits the same range as a {@link DateRangeEmission} object.
|
|
270
|
+
*
|
|
271
|
+
* @example
|
|
272
|
+
* ```html
|
|
273
|
+
* <iss-ctrl-date-range-picker formControlName="period" (onDateRangeObjectChange)="apply($event)">
|
|
274
|
+
* <label>Period</label>
|
|
275
|
+
* </iss-ctrl-date-range-picker>
|
|
276
|
+
* ```
|
|
277
|
+
*
|
|
278
|
+
* ### Own inputs
|
|
279
|
+
* | Property | Type | Default | Description |
|
|
280
|
+
* | --- | --- | --- | --- |
|
|
281
|
+
* | `minDate` | `Date \| null` | `null` | Earliest selectable date. |
|
|
282
|
+
* | `maxDate` | `Date \| null` | `null` | Latest selectable date. |
|
|
283
|
+
* | `disabledDays` | `number[]` | `[]` | Week days to block, `0` = Sunday … `6` = Saturday. |
|
|
284
|
+
*
|
|
285
|
+
* ### Inherited from {@link ControlBase}
|
|
286
|
+
* `formControlName` · `readonly` · `className` · `(onChange)`
|
|
287
|
+
*
|
|
288
|
+
* ### Outputs
|
|
289
|
+
* - `(onDateRangeObjectChange)` — `DateRangeEmission | null`, the range as an object.
|
|
290
|
+
*
|
|
291
|
+
* Projects `<label>` into the floating label; omit it to render the control without one.
|
|
292
|
+
*/
|
|
94
293
|
declare class DateRangePickerControl extends ControlBase implements OnInit, OnDestroy {
|
|
95
294
|
#private;
|
|
295
|
+
/**
|
|
296
|
+
* Week days that cannot be selected — `0` is Sunday through `6` for Saturday.
|
|
297
|
+
*/
|
|
96
298
|
disabledDays: InputSignal<number[]>;
|
|
299
|
+
/**
|
|
300
|
+
* Earliest selectable date.
|
|
301
|
+
*/
|
|
97
302
|
minDate: InputSignal<Date | null>;
|
|
303
|
+
/**
|
|
304
|
+
* Latest selectable date.
|
|
305
|
+
*/
|
|
98
306
|
maxDate: InputSignal<Date | null>;
|
|
307
|
+
/**
|
|
308
|
+
* Emits the selected range as an object, or `null` while the range is incomplete.
|
|
309
|
+
*/
|
|
99
310
|
onDateRangeObjectChange: OutputEmitterRef<DateRangeEmission | null>;
|
|
311
|
+
/**
|
|
312
|
+
* The `start`/`end` form group backing the range input. Internal state.
|
|
313
|
+
*/
|
|
100
314
|
readonly range: FormGroup;
|
|
101
315
|
ngOnInit(): void;
|
|
102
316
|
setDisabledState(isDisabled: boolean): void;
|
|
@@ -109,13 +323,55 @@ declare class DateRangePickerControl extends ControlBase implements OnInit, OnDe
|
|
|
109
323
|
static ɵcmp: i0.ɵɵComponentDeclaration<DateRangePickerControl, "iss-ctrl-date-range-picker", never, { "disabledDays": { "alias": "disabledDays"; "required": false; "isSignal": true; }; "minDate": { "alias": "minDate"; "required": false; "isSignal": true; }; "maxDate": { "alias": "maxDate"; "required": false; "isSignal": true; }; }, { "onDateRangeObjectChange": "onDateRangeObjectChange"; }, never, ["label"], true, never>;
|
|
110
324
|
}
|
|
111
325
|
|
|
326
|
+
/**
|
|
327
|
+
* `<iss-ctrl-datetime-picker>` — a date and a time in a single field.
|
|
328
|
+
*
|
|
329
|
+
* Combines the calendar of the date picker with the time list of the time picker; both parts
|
|
330
|
+
* must be set before a value is emitted.
|
|
331
|
+
*
|
|
332
|
+
* @example
|
|
333
|
+
* ```html
|
|
334
|
+
* <iss-ctrl-datetime-picker formControlName="scheduledAt" [minDate]="today" minTime="08:00" maxTime="17:00">
|
|
335
|
+
* <label>Scheduled at</label>
|
|
336
|
+
* </iss-ctrl-datetime-picker>
|
|
337
|
+
* ```
|
|
338
|
+
*
|
|
339
|
+
* ### Own inputs
|
|
340
|
+
* | Property | Type | Default | Description |
|
|
341
|
+
* | --- | --- | --- | --- |
|
|
342
|
+
* | `minDate` | `Date \| null` | `null` | Earliest selectable date. |
|
|
343
|
+
* | `maxDate` | `Date \| null` | `null` | Latest selectable date. |
|
|
344
|
+
* | `minTime` | `string \| null` | `null` | Earliest selectable time, `HH:mm`. |
|
|
345
|
+
* | `maxTime` | `string \| null` | `null` | Latest selectable time, `HH:mm`. |
|
|
346
|
+
* | `disabledDays` | `number[]` | `[]` | Week days to block, `0` = Sunday … `6` = Saturday. |
|
|
347
|
+
*
|
|
348
|
+
* ### Inherited from {@link ControlBase}
|
|
349
|
+
* `formControlName` · `readonly` · `className` · `(onChange)`
|
|
350
|
+
*
|
|
351
|
+
* Projects `<label>` into the floating label; omit it to render the control without one.
|
|
352
|
+
*/
|
|
112
353
|
declare class DatetimePickerControl extends ControlBase {
|
|
113
354
|
#private;
|
|
114
355
|
datetimeForm: FormGroup;
|
|
356
|
+
/**
|
|
357
|
+
* Week days that cannot be selected — `0` is Sunday through `6` for Saturday.
|
|
358
|
+
*/
|
|
115
359
|
disabledDays: InputSignal<number[]>;
|
|
360
|
+
/**
|
|
361
|
+
* Earliest selectable date.
|
|
362
|
+
*/
|
|
116
363
|
minDate: InputSignal<Date | null>;
|
|
364
|
+
/**
|
|
365
|
+
* Latest selectable date.
|
|
366
|
+
*/
|
|
117
367
|
maxDate: InputSignal<Date | null>;
|
|
368
|
+
/**
|
|
369
|
+
* Earliest selectable time of day, as `HH:mm`.
|
|
370
|
+
*/
|
|
118
371
|
minTime: InputSignal<string | null>;
|
|
372
|
+
/**
|
|
373
|
+
* Latest selectable time of day, as `HH:mm`.
|
|
374
|
+
*/
|
|
119
375
|
maxTime: InputSignal<string | null>;
|
|
120
376
|
setDisabledState(isDisabled: boolean): void;
|
|
121
377
|
emit(): void;
|
|
@@ -141,13 +397,63 @@ interface IssFile {
|
|
|
141
397
|
file?: File;
|
|
142
398
|
}
|
|
143
399
|
|
|
400
|
+
/**
|
|
401
|
+
* `<iss-ctrl-file-picker>` — attachment upload with a per-file progress and error state.
|
|
402
|
+
*
|
|
403
|
+
* Uploading is done by the host: the control emits the picked files and renders whatever is
|
|
404
|
+
* fed back through `uploadedFiles`, `uploading` and `uploadingError`.
|
|
405
|
+
*
|
|
406
|
+
* @example
|
|
407
|
+
* ```html
|
|
408
|
+
* <iss-ctrl-file-picker
|
|
409
|
+
* formControlName="attachments"
|
|
410
|
+
* [multiple]="true"
|
|
411
|
+
* accept=".pdf,.png"
|
|
412
|
+
* [uploading]="uploading()"
|
|
413
|
+
* [uploadedFiles]="uploaded()"
|
|
414
|
+
* />
|
|
415
|
+
* ```
|
|
416
|
+
*
|
|
417
|
+
* ### Own inputs
|
|
418
|
+
* | Property | Type | Default | Description |
|
|
419
|
+
* | --- | --- | --- | --- |
|
|
420
|
+
* | `accept` | `string \| undefined` | `undefined` | Accepted extensions or MIME types for the native picker. |
|
|
421
|
+
* | `showDownloadButton` | `boolean` | `true` | Shows the download action on each attachment. |
|
|
422
|
+
* | `showDeleteButton` | `boolean` | `true` | Shows the remove action on each attachment. |
|
|
423
|
+
* | `uploading` | `boolean` | `false` | Renders the in-progress state. |
|
|
424
|
+
* | `uploadedFiles` | `IssAttachment[]` | `[]` | Files already stored on the server. |
|
|
425
|
+
* | `uploadingError` | `string \| undefined` | `undefined` | Error message attached to the failed upload. |
|
|
426
|
+
*
|
|
427
|
+
* ### Inherited from {@link ControlBase}
|
|
428
|
+
* `formControlName` · `readonly` · `className` · `(onChange)` · `multiple` · `hints`
|
|
429
|
+
*
|
|
430
|
+
* Does not project a label — the field label is rendered by the wrapping `iss-field-*`.
|
|
431
|
+
*/
|
|
144
432
|
declare class FilePickerControl extends ControlBase implements OnDestroy {
|
|
145
433
|
#private;
|
|
434
|
+
/**
|
|
435
|
+
* Accepted extensions or MIME types, passed straight to the native file input.
|
|
436
|
+
*/
|
|
146
437
|
accept: InputSignal<string | undefined>;
|
|
438
|
+
/**
|
|
439
|
+
* Shows the download action on each listed attachment.
|
|
440
|
+
*/
|
|
147
441
|
showDownloadButton: InputSignal<boolean>;
|
|
442
|
+
/**
|
|
443
|
+
* Shows the remove action on each listed attachment.
|
|
444
|
+
*/
|
|
148
445
|
showDeleteButton: InputSignal<boolean>;
|
|
446
|
+
/**
|
|
447
|
+
* Renders the upload-in-progress state; set by the host that performs the upload.
|
|
448
|
+
*/
|
|
149
449
|
uploading: InputSignal<boolean>;
|
|
450
|
+
/**
|
|
451
|
+
* Attachments already stored on the server, merged into the rendered list.
|
|
452
|
+
*/
|
|
150
453
|
uploadedFiles: InputSignal<IssAttachment[]>;
|
|
454
|
+
/**
|
|
455
|
+
* Error message shown on the attachment whose upload failed.
|
|
456
|
+
*/
|
|
151
457
|
uploadingError: InputSignal<string | undefined>;
|
|
152
458
|
readonly filesValue: Signal<any>;
|
|
153
459
|
protected attachments: WritableSignal<IssFile[]>;
|
|
@@ -160,14 +466,68 @@ declare class FilePickerControl extends ControlBase implements OnDestroy {
|
|
|
160
466
|
static ɵcmp: i0.ɵɵComponentDeclaration<FilePickerControl, "iss-ctrl-file-picker", never, { "accept": { "alias": "accept"; "required": false; "isSignal": true; }; "showDownloadButton": { "alias": "showDownloadButton"; "required": false; "isSignal": true; }; "showDeleteButton": { "alias": "showDeleteButton"; "required": false; "isSignal": true; }; "uploading": { "alias": "uploading"; "required": false; "isSignal": true; }; "uploadedFiles": { "alias": "uploadedFiles"; "required": false; "isSignal": true; }; "uploadingError": { "alias": "uploadingError"; "required": false; "isSignal": true; }; }, {}, never, never, true, never>;
|
|
161
467
|
}
|
|
162
468
|
|
|
469
|
+
/**
|
|
470
|
+
* `<iss-ctrl-input>` — single line text input, the base for every scalar text field.
|
|
471
|
+
*
|
|
472
|
+
* `type` is forwarded to the native input, so `number`, `email` and `password` variants all
|
|
473
|
+
* come from this one control.
|
|
474
|
+
*
|
|
475
|
+
* @example
|
|
476
|
+
* ```html
|
|
477
|
+
* <iss-ctrl-input formControlName="amount" type="number" [min]="0" suffixText="SAR">
|
|
478
|
+
* <label>Amount</label>
|
|
479
|
+
* </iss-ctrl-input>
|
|
480
|
+
* ```
|
|
481
|
+
*
|
|
482
|
+
* ### Own inputs
|
|
483
|
+
* | Property | Type | Default | Description |
|
|
484
|
+
* | --- | --- | --- | --- |
|
|
485
|
+
* | `type` | `string` | `"text"` | Native input type: `text`, `number`, `email`, `password`, … |
|
|
486
|
+
* | `prefixIcon` | `string` | `""` | Icon rendered before the value. |
|
|
487
|
+
* | `prefixText` | `string` | `""` | Text rendered before the value. |
|
|
488
|
+
* | `suffixIcon` | `string` | `""` | Icon rendered after the value. |
|
|
489
|
+
* | `suffixText` | `string` | `""` | Text rendered after the value. |
|
|
490
|
+
*
|
|
491
|
+
* ### Inherited from {@link ControlBase}
|
|
492
|
+
* `formControlName` · `readonly` · `className` · `(onChange)` · `placeholder` · `min` · `max` · `minLength` · `maxLength` · `hints`
|
|
493
|
+
*
|
|
494
|
+
* ### Outputs
|
|
495
|
+
* - `(onPrefixClick)` — `string`, the prefix affix was clicked.
|
|
496
|
+
* - `(onSuffixClick)` — `string`, the suffix affix was clicked.
|
|
497
|
+
*
|
|
498
|
+
* Projects `<label>` into the floating label; omit it to render the control without one.
|
|
499
|
+
*
|
|
500
|
+
* Also projects `[issPrefix]` and `[issSuffix]` for fully custom affixes.
|
|
501
|
+
*/
|
|
163
502
|
declare class InputControl extends ControlBase implements Validator, OnDestroy {
|
|
164
503
|
#private;
|
|
504
|
+
/**
|
|
505
|
+
* Native input type — `text`, `number`, `email`, `password`, and so on.
|
|
506
|
+
*/
|
|
165
507
|
type: InputSignal<string>;
|
|
508
|
+
/**
|
|
509
|
+
* Icon name rendered before the value.
|
|
510
|
+
*/
|
|
166
511
|
prefixIcon: InputSignal<string>;
|
|
512
|
+
/**
|
|
513
|
+
* Static text rendered before the value.
|
|
514
|
+
*/
|
|
167
515
|
prefixText: InputSignal<string>;
|
|
516
|
+
/**
|
|
517
|
+
* Icon name rendered after the value.
|
|
518
|
+
*/
|
|
168
519
|
suffixIcon: InputSignal<string>;
|
|
520
|
+
/**
|
|
521
|
+
* Static text rendered after the value, a unit or currency for example.
|
|
522
|
+
*/
|
|
169
523
|
suffixText: InputSignal<string>;
|
|
524
|
+
/**
|
|
525
|
+
* Emits when the prefix affix is clicked.
|
|
526
|
+
*/
|
|
170
527
|
onPrefixClick: OutputEmitterRef<string>;
|
|
528
|
+
/**
|
|
529
|
+
* Emits when the suffix affix is clicked.
|
|
530
|
+
*/
|
|
171
531
|
onSuffixClick: OutputEmitterRef<string>;
|
|
172
532
|
emitSuffixClick(): void;
|
|
173
533
|
emitPrefixClick(): void;
|
|
@@ -211,11 +571,36 @@ declare class Phone {
|
|
|
211
571
|
static ɵprov: i0.ɵɵInjectableDeclaration<Phone>;
|
|
212
572
|
}
|
|
213
573
|
|
|
574
|
+
/**
|
|
575
|
+
* `<iss-ctrl-mobile>` — international phone number with a country selector.
|
|
576
|
+
*
|
|
577
|
+
* The number is validated against the selected country and stored in its international form.
|
|
578
|
+
*
|
|
579
|
+
* @example
|
|
580
|
+
* ```html
|
|
581
|
+
* <iss-ctrl-mobile formControlName="mobile" [preferredCountries]="['SA', 'AE']">
|
|
582
|
+
* <label>Mobile</label>
|
|
583
|
+
* </iss-ctrl-mobile>
|
|
584
|
+
* ```
|
|
585
|
+
*
|
|
586
|
+
* ### Own inputs
|
|
587
|
+
* | Property | Type | Default | Description |
|
|
588
|
+
* | --- | --- | --- | --- |
|
|
589
|
+
* | `preferredCountries` | `ISO2[]` | `["SA"]` | Countries pinned to the top of the country list. |
|
|
590
|
+
*
|
|
591
|
+
* ### Inherited from {@link ControlBase}
|
|
592
|
+
* `formControlName` · `readonly` · `className` · `(onChange)`
|
|
593
|
+
*
|
|
594
|
+
* Projects `<label>` into the floating label; omit it to render the control without one.
|
|
595
|
+
*/
|
|
214
596
|
declare class MobileControl extends ControlBase implements OnDestroy, Validator {
|
|
215
597
|
#private;
|
|
216
598
|
phoneService: Phone;
|
|
217
599
|
isOpen: WritableSignal<boolean>;
|
|
218
600
|
selectedCountry: WritableSignal<Country>;
|
|
601
|
+
/**
|
|
602
|
+
* ISO-2 country codes pinned to the top of the country list; the first one is preselected.
|
|
603
|
+
*/
|
|
219
604
|
preferredCountries: InputSignal<ISO2[]>;
|
|
220
605
|
searchInput: FormControl;
|
|
221
606
|
filteredCountries: Signal<Country[]>;
|
|
@@ -231,6 +616,26 @@ declare class MobileControl extends ControlBase implements OnDestroy, Validator
|
|
|
231
616
|
static ɵcmp: i0.ɵɵComponentDeclaration<MobileControl, "iss-ctrl-mobile", never, { "preferredCountries": { "alias": "preferredCountries"; "required": false; "isSignal": true; }; }, {}, never, ["label"], true, never>;
|
|
232
617
|
}
|
|
233
618
|
|
|
619
|
+
/**
|
|
620
|
+
* `<iss-ctrl-plate-number>` — Saudi vehicle plate, entered as digits and letters in both
|
|
621
|
+
* Arabic and English.
|
|
622
|
+
*
|
|
623
|
+
* Typing into one script fills the matching cell in the other automatically, and letters are
|
|
624
|
+
* validated against the allowed plate alphabet.
|
|
625
|
+
*
|
|
626
|
+
* @example
|
|
627
|
+
* ```html
|
|
628
|
+
* <iss-ctrl-plate-number formControlName="plate" [readonly]="false"/>
|
|
629
|
+
* ```
|
|
630
|
+
*
|
|
631
|
+
* ### Own inputs
|
|
632
|
+
* None — the control is configured entirely through the inherited properties.
|
|
633
|
+
*
|
|
634
|
+
* ### Inherited from {@link ControlBase}
|
|
635
|
+
* `formControlName` · `readonly` · `className` · `(onChange)`
|
|
636
|
+
*
|
|
637
|
+
* Does not project a label — the field label is rendered by the wrapping `iss-field-*`.
|
|
638
|
+
*/
|
|
234
639
|
declare class PlateControl extends ControlBase {
|
|
235
640
|
#private;
|
|
236
641
|
numbersAr: i0.WritableSignal<string[]>;
|
|
@@ -250,7 +655,28 @@ declare class PlateControl extends ControlBase {
|
|
|
250
655
|
static ɵcmp: i0.ɵɵComponentDeclaration<PlateControl, "iss-ctrl-plate-number", never, {}, {}, never, never, true, never>;
|
|
251
656
|
}
|
|
252
657
|
|
|
658
|
+
/**
|
|
659
|
+
* `<iss-ctrl-radio>` — one choice out of a fixed set of options.
|
|
660
|
+
*
|
|
661
|
+
* @example
|
|
662
|
+
* ```html
|
|
663
|
+
* <iss-ctrl-radio formControlName="gender" [options]="genders"/>
|
|
664
|
+
* ```
|
|
665
|
+
*
|
|
666
|
+
* ### Own inputs
|
|
667
|
+
* | Property | Type | Default | Description |
|
|
668
|
+
* | --- | --- | --- | --- |
|
|
669
|
+
* | `options` | `Option[]` | **required** | The selectable choices. |
|
|
670
|
+
*
|
|
671
|
+
* ### Inherited from {@link ControlBase}
|
|
672
|
+
* `formControlName` · `readonly` · `className` · `(onChange)`
|
|
673
|
+
*
|
|
674
|
+
* Does not project a label — the field label is rendered by the wrapping `iss-field-*`.
|
|
675
|
+
*/
|
|
253
676
|
declare class RadioControl extends ControlBase {
|
|
677
|
+
/**
|
|
678
|
+
* Selectable choices, each a `{ value, label }` pair. Required.
|
|
679
|
+
*/
|
|
254
680
|
options: InputSignal<Option[]>;
|
|
255
681
|
writeValue(value: string | null): void;
|
|
256
682
|
onRadioChange(value: string): void;
|
|
@@ -258,14 +684,60 @@ declare class RadioControl extends ControlBase {
|
|
|
258
684
|
static ɵcmp: i0.ɵɵComponentDeclaration<RadioControl, "iss-ctrl-radio", never, { "options": { "alias": "options"; "required": true; "isSignal": true; }; }, {}, never, never, true, never>;
|
|
259
685
|
}
|
|
260
686
|
|
|
687
|
+
/**
|
|
688
|
+
* `<iss-ctrl-select>` — dropdown selection, single or multiple, with a search box.
|
|
689
|
+
*
|
|
690
|
+
* Typing in the search box emits `(onQueryChange)`, so options can be loaded remotely; set
|
|
691
|
+
* `loading` while that request is in flight.
|
|
692
|
+
*
|
|
693
|
+
* @example
|
|
694
|
+
* ```html
|
|
695
|
+
* <iss-ctrl-select
|
|
696
|
+
* formControlName="city"
|
|
697
|
+
* [options]="cities()"
|
|
698
|
+
* [multiple]="false"
|
|
699
|
+
* [loading]="loading()"
|
|
700
|
+
* (onQueryChange)="search($event)"
|
|
701
|
+
* >
|
|
702
|
+
* <label>City</label>
|
|
703
|
+
* </iss-ctrl-select>
|
|
704
|
+
* ```
|
|
705
|
+
*
|
|
706
|
+
* ### Own inputs
|
|
707
|
+
* | Property | Type | Default | Description |
|
|
708
|
+
* | --- | --- | --- | --- |
|
|
709
|
+
* | `options` | `Option[]` | **required** | The selectable choices. |
|
|
710
|
+
* | `height` | `string` | `"150px"` | Max height of the open panel. |
|
|
711
|
+
* | `loading` | `boolean` | `false` | Shows the loading state inside the panel. |
|
|
712
|
+
*
|
|
713
|
+
* ### Inherited from {@link ControlBase}
|
|
714
|
+
* `formControlName` · `readonly` · `className` · `(onChange)` · `placeholder` · `multiple`
|
|
715
|
+
*
|
|
716
|
+
* ### Outputs
|
|
717
|
+
* - `(onQueryChange)` — `string`, the current search text.
|
|
718
|
+
*
|
|
719
|
+
* Projects `<label>` into the floating label; omit it to render the control without one.
|
|
720
|
+
*/
|
|
261
721
|
declare class SelectControl extends ControlBase implements OnDestroy {
|
|
262
722
|
#private;
|
|
263
723
|
selectedOptions: WritableSignal<Map<string, Option>>;
|
|
724
|
+
/**
|
|
725
|
+
* Selectable choices, each a `{ value, label }` pair. Required.
|
|
726
|
+
*/
|
|
264
727
|
options: InputSignal<Option[]>;
|
|
728
|
+
/**
|
|
729
|
+
* Maximum height of the open options panel, as a CSS length.
|
|
730
|
+
*/
|
|
265
731
|
height: InputSignal<string>;
|
|
266
732
|
query: Signal<string>;
|
|
267
733
|
readonly filteredOptions: Signal<Option[]>;
|
|
734
|
+
/**
|
|
735
|
+
* Shows the loading state inside the panel while options are being fetched.
|
|
736
|
+
*/
|
|
268
737
|
loading: InputSignal<boolean>;
|
|
738
|
+
/**
|
|
739
|
+
* Emits the search text so the host can load matching options.
|
|
740
|
+
*/
|
|
269
741
|
onQueryChange: OutputEmitterRef<string>;
|
|
270
742
|
protected optionTemplate: any;
|
|
271
743
|
protected cardViewerTemplate: any;
|
|
@@ -281,12 +753,46 @@ declare class SelectControl extends ControlBase implements OnDestroy {
|
|
|
281
753
|
static ɵcmp: i0.ɵɵComponentDeclaration<SelectControl, "iss-ctrl-select", never, { "options": { "alias": "options"; "required": true; "isSignal": true; }; "height": { "alias": "height"; "required": false; "isSignal": true; }; "loading": { "alias": "loading"; "required": false; "isSignal": true; }; }, { "onQueryChange": "onQueryChange"; }, ["optionTemplate", "cardViewerTemplate"], ["label"], true, never>;
|
|
282
754
|
}
|
|
283
755
|
|
|
756
|
+
/**
|
|
757
|
+
* `<iss-ctrl-slide-toggle>` — an on/off switch for a boolean value.
|
|
758
|
+
*
|
|
759
|
+
* @example
|
|
760
|
+
* ```html
|
|
761
|
+
* <iss-ctrl-slide-toggle formControlName="active" (onChange)="save($event)"/>
|
|
762
|
+
* ```
|
|
763
|
+
*
|
|
764
|
+
* ### Own inputs
|
|
765
|
+
* None — the control is configured entirely through the inherited properties.
|
|
766
|
+
*
|
|
767
|
+
* ### Inherited from {@link ControlBase}
|
|
768
|
+
* `formControlName` · `readonly` · `className` · `(onChange)`
|
|
769
|
+
*
|
|
770
|
+
* Does not project a label — the field label is rendered by the wrapping `iss-field-*`.
|
|
771
|
+
*/
|
|
284
772
|
declare class SlideToggleControl extends ControlBase {
|
|
285
773
|
onSlideToggleChange(checked: boolean): void;
|
|
286
774
|
static ɵfac: i0.ɵɵFactoryDeclaration<SlideToggleControl, never>;
|
|
287
775
|
static ɵcmp: i0.ɵɵComponentDeclaration<SlideToggleControl, "iss-ctrl-slide-toggle", never, {}, {}, never, never, true, never>;
|
|
288
776
|
}
|
|
289
777
|
|
|
778
|
+
/**
|
|
779
|
+
* `<iss-ctrl-textarea>` — multi line free text.
|
|
780
|
+
*
|
|
781
|
+
* @example
|
|
782
|
+
* ```html
|
|
783
|
+
* <iss-ctrl-textarea formControlName="notes" [maxLength]="500" placeholder="Add a note">
|
|
784
|
+
* <label>Notes</label>
|
|
785
|
+
* </iss-ctrl-textarea>
|
|
786
|
+
* ```
|
|
787
|
+
*
|
|
788
|
+
* ### Own inputs
|
|
789
|
+
* None — the control is configured entirely through the inherited properties.
|
|
790
|
+
*
|
|
791
|
+
* ### Inherited from {@link ControlBase}
|
|
792
|
+
* `formControlName` · `readonly` · `className` · `(onChange)` · `placeholder` · `minLength` · `maxLength` · `hints`
|
|
793
|
+
*
|
|
794
|
+
* Projects `<label>` into the floating label; omit it to render the control without one.
|
|
795
|
+
*/
|
|
290
796
|
declare class TextareaControl extends ControlBase implements OnDestroy {
|
|
291
797
|
#private;
|
|
292
798
|
ngOnDestroy(): void;
|
|
@@ -294,10 +800,41 @@ declare class TextareaControl extends ControlBase implements OnDestroy {
|
|
|
294
800
|
static ɵcmp: i0.ɵɵComponentDeclaration<TextareaControl, "iss-ctrl-textarea", never, {}, {}, never, ["label"], true, never>;
|
|
295
801
|
}
|
|
296
802
|
|
|
803
|
+
/**
|
|
804
|
+
* `<iss-ctrl-time-picker>` — time of day, picked from a list generated at a fixed interval.
|
|
805
|
+
*
|
|
806
|
+
* @example
|
|
807
|
+
* ```html
|
|
808
|
+
* <iss-ctrl-time-picker formControlName="startsAt" interval="15min" minTime="08:00" maxTime="17:00">
|
|
809
|
+
* <label>Starts at</label>
|
|
810
|
+
* </iss-ctrl-time-picker>
|
|
811
|
+
* ```
|
|
812
|
+
*
|
|
813
|
+
* ### Own inputs
|
|
814
|
+
* | Property | Type | Default | Description |
|
|
815
|
+
* | --- | --- | --- | --- |
|
|
816
|
+
* | `interval` | `string` | `"30min"` | Step between the offered times. |
|
|
817
|
+
* | `minTime` | `string \| null` | `null` | Earliest offered time, `HH:mm`. |
|
|
818
|
+
* | `maxTime` | `string \| null` | `null` | Latest offered time, `HH:mm`. |
|
|
819
|
+
*
|
|
820
|
+
* ### Inherited from {@link ControlBase}
|
|
821
|
+
* `formControlName` · `readonly` · `className` · `(onChange)`
|
|
822
|
+
*
|
|
823
|
+
* Projects `<label>` into the floating label; omit it to render the control without one.
|
|
824
|
+
*/
|
|
297
825
|
declare class TimePickerControl extends ControlBase {
|
|
298
826
|
#private;
|
|
827
|
+
/**
|
|
828
|
+
* Step between the offered times, for example `"15min"` or `"30min"`.
|
|
829
|
+
*/
|
|
299
830
|
interval: InputSignal<string>;
|
|
831
|
+
/**
|
|
832
|
+
* Earliest offered time of day, as `HH:mm`.
|
|
833
|
+
*/
|
|
300
834
|
minTime: InputSignal<string | null>;
|
|
835
|
+
/**
|
|
836
|
+
* Latest offered time of day, as `HH:mm`.
|
|
837
|
+
*/
|
|
301
838
|
maxTime: InputSignal<string | null>;
|
|
302
839
|
emit(evt: any): void;
|
|
303
840
|
clear(event: MouseEvent): void;
|
|
@@ -306,8 +843,31 @@ declare class TimePickerControl extends ControlBase {
|
|
|
306
843
|
static ɵcmp: i0.ɵɵComponentDeclaration<TimePickerControl, "iss-ctrl-time-picker", never, { "interval": { "alias": "interval"; "required": false; "isSignal": true; }; "minTime": { "alias": "minTime"; "required": false; "isSignal": true; }; "maxTime": { "alias": "maxTime"; "required": false; "isSignal": true; }; }, {}, never, ["label"], true, never>;
|
|
307
844
|
}
|
|
308
845
|
|
|
846
|
+
/**
|
|
847
|
+
* `<iss-ctrl-toggle-button>` — options rendered as a button group instead of a dropdown.
|
|
848
|
+
*
|
|
849
|
+
* With `multiple` set, several buttons can be active at once.
|
|
850
|
+
*
|
|
851
|
+
* @example
|
|
852
|
+
* ```html
|
|
853
|
+
* <iss-ctrl-toggle-button formControlName="priority" [options]="priorities" [multiple]="false"/>
|
|
854
|
+
* ```
|
|
855
|
+
*
|
|
856
|
+
* ### Own inputs
|
|
857
|
+
* | Property | Type | Default | Description |
|
|
858
|
+
* | --- | --- | --- | --- |
|
|
859
|
+
* | `options` | `Option[]` | **required** | The selectable choices. |
|
|
860
|
+
*
|
|
861
|
+
* ### Inherited from {@link ControlBase}
|
|
862
|
+
* `formControlName` · `readonly` · `className` · `(onChange)` · `multiple`
|
|
863
|
+
*
|
|
864
|
+
* Does not project a label — the field label is rendered by the wrapping `iss-field-*`.
|
|
865
|
+
*/
|
|
309
866
|
declare class ToggleButtonControl extends ControlBase {
|
|
310
867
|
#private;
|
|
868
|
+
/**
|
|
869
|
+
* Selectable choices, each a `{ value, label }` pair. Required.
|
|
870
|
+
*/
|
|
311
871
|
options: InputSignal<Option[]>;
|
|
312
872
|
selectedOptions: WritableSignal<Map<string, Option>>;
|
|
313
873
|
writeValue(value: string | null): void;
|
|
@@ -333,32 +893,131 @@ declare class FieldAsyncValidation {
|
|
|
333
893
|
constructor(asyncValidation: any);
|
|
334
894
|
}
|
|
335
895
|
|
|
896
|
+
/**
|
|
897
|
+
* Per-field configuration, reachable as `field.config` and consumed by the `iss-field-*`
|
|
898
|
+
* components. Every entry is a signal, so it can be changed at runtime by field events.
|
|
899
|
+
*
|
|
900
|
+
* Not every key applies to every field — the class doc of each `iss-field-*` component
|
|
901
|
+
* lists exactly which of these it reads.
|
|
902
|
+
*
|
|
903
|
+
* ### Keys by area
|
|
904
|
+
* - **Common:** `type` · `disabled` · `readonly` · `placeholder` · `suffix` · `hideLabel` · `multiple`
|
|
905
|
+
* - **Bounds:** `min` · `max` · `minLength` · `maxLength`
|
|
906
|
+
* - **Dates:** `minDate` · `maxDate` · `dateFilter`
|
|
907
|
+
* - **Attachments:** `allowedFileSize` · `allowedFileTypes` · `minFilesCount` · `maxFilesCount` · `templateId` · `templateUrl`
|
|
908
|
+
* - **Users:** `minUsersCount` · `maxUsersCount`
|
|
909
|
+
* - **Table:** `showInTableColumns` · `tableWithFilter` · `tableWithSort` · `tableWithPagination`
|
|
910
|
+
*
|
|
911
|
+
* @example
|
|
912
|
+
* ```json
|
|
913
|
+
* { "name": "email", "type": "text_input", "config": { "type": "email", "maxLength": 120 } }
|
|
914
|
+
* ```
|
|
915
|
+
*/
|
|
336
916
|
declare class FieldConfig {
|
|
917
|
+
/**
|
|
918
|
+
* Native input type for `text_input` (`text`, `email`, `number`, `password`, …).
|
|
919
|
+
*/
|
|
337
920
|
type: WritableSignal<string | undefined>;
|
|
921
|
+
/**
|
|
922
|
+
* Disables the control; the underlying `FormControl` is disabled on init.
|
|
923
|
+
*/
|
|
338
924
|
disabled: WritableSignal<boolean | undefined>;
|
|
925
|
+
/**
|
|
926
|
+
* Shows the value but blocks interaction. Unlike `disabled`, the value is still submitted.
|
|
927
|
+
*/
|
|
339
928
|
readonly: WritableSignal<boolean | undefined>;
|
|
929
|
+
/**
|
|
930
|
+
* Placeholder text shown while the field is empty.
|
|
931
|
+
*/
|
|
340
932
|
placeholder: WritableSignal<string | undefined>;
|
|
933
|
+
/**
|
|
934
|
+
* Text rendered after the value (a unit or currency, for example).
|
|
935
|
+
*/
|
|
341
936
|
suffix: WritableSignal<string | undefined>;
|
|
937
|
+
/**
|
|
938
|
+
* Hides the field label without removing it from the accessibility tree.
|
|
939
|
+
*/
|
|
342
940
|
hideLabel: WritableSignal<boolean | undefined>;
|
|
941
|
+
/**
|
|
942
|
+
* Allows more than one value — multi select, multi file upload, multi toggle.
|
|
943
|
+
*/
|
|
343
944
|
multiple: WritableSignal<boolean | undefined>;
|
|
945
|
+
/**
|
|
946
|
+
* Minimum number of characters. Source: `config.minLength`.
|
|
947
|
+
*/
|
|
344
948
|
minLength: WritableSignal<number | undefined>;
|
|
949
|
+
/**
|
|
950
|
+
* Maximum number of characters. Source: `config.maxLength`.
|
|
951
|
+
*/
|
|
345
952
|
maxLength: WritableSignal<number | undefined>;
|
|
953
|
+
/**
|
|
954
|
+
* Minimum numeric value (also the minimum user count for the user picker).
|
|
955
|
+
*/
|
|
346
956
|
min: WritableSignal<number | undefined>;
|
|
957
|
+
/**
|
|
958
|
+
* Maximum numeric value (also the maximum user count for the user picker).
|
|
959
|
+
*/
|
|
347
960
|
max: WritableSignal<number | undefined>;
|
|
961
|
+
/**
|
|
962
|
+
* Earliest selectable date for date, datetime and date-range fields.
|
|
963
|
+
*/
|
|
348
964
|
minDate: WritableSignal<Date | undefined>;
|
|
965
|
+
/**
|
|
966
|
+
* Latest selectable date for date, datetime and date-range fields.
|
|
967
|
+
*/
|
|
349
968
|
maxDate: WritableSignal<Date | undefined>;
|
|
969
|
+
/**
|
|
970
|
+
* Restricts the calendar to working days. Source: `config.acceptWorkDaysOnly`.
|
|
971
|
+
*/
|
|
350
972
|
dateFilter: WritableSignal<boolean | undefined>;
|
|
973
|
+
/**
|
|
974
|
+
* Id of a downloadable template offered next to an attachment field.
|
|
975
|
+
*/
|
|
351
976
|
templateId: WritableSignal<string | undefined>;
|
|
977
|
+
/**
|
|
978
|
+
* Direct URL of the downloadable template for an attachment field.
|
|
979
|
+
*/
|
|
352
980
|
templateUrl: WritableSignal<string | undefined>;
|
|
981
|
+
/**
|
|
982
|
+
* Maximum size per uploaded file. Source: `config.allowedSize`.
|
|
983
|
+
*/
|
|
353
984
|
allowedFileSize: WritableSignal<number | undefined>;
|
|
985
|
+
/**
|
|
986
|
+
* Comma separated list of accepted file extensions or MIME types.
|
|
987
|
+
*/
|
|
354
988
|
allowedFileTypes: WritableSignal<string | undefined>;
|
|
989
|
+
/**
|
|
990
|
+
* Maximum number of files that may be attached.
|
|
991
|
+
*/
|
|
355
992
|
maxFilesCount: WritableSignal<number | undefined>;
|
|
993
|
+
/**
|
|
994
|
+
* Minimum number of files required.
|
|
995
|
+
*/
|
|
356
996
|
minFilesCount: WritableSignal<number | undefined>;
|
|
997
|
+
/**
|
|
998
|
+
* Maximum number of users selectable in a user picker.
|
|
999
|
+
*/
|
|
357
1000
|
maxUsersCount: WritableSignal<number | undefined>;
|
|
1001
|
+
/**
|
|
1002
|
+
* Minimum number of users required in a user picker.
|
|
1003
|
+
*/
|
|
358
1004
|
minUsersCount: WritableSignal<number | undefined>;
|
|
1005
|
+
/**
|
|
1006
|
+
* Parsed from the field definition but not consumed yet — table columns currently come
|
|
1007
|
+
* from `field.children`.
|
|
1008
|
+
*/
|
|
359
1009
|
showInTableColumns: WritableSignal<boolean | undefined>;
|
|
1010
|
+
/**
|
|
1011
|
+
* Enables the filter row on a `table` field.
|
|
1012
|
+
*/
|
|
360
1013
|
tableWithFilter: WritableSignal<boolean | undefined>;
|
|
1014
|
+
/**
|
|
1015
|
+
* Enables column sorting on a `table` field.
|
|
1016
|
+
*/
|
|
361
1017
|
tableWithSort: WritableSignal<boolean | undefined>;
|
|
1018
|
+
/**
|
|
1019
|
+
* Enables the paginator on a `table` field.
|
|
1020
|
+
*/
|
|
362
1021
|
tableWithPagination: WritableSignal<boolean | undefined>;
|
|
363
1022
|
constructor(config: any);
|
|
364
1023
|
}
|
|
@@ -419,6 +1078,38 @@ declare class FieldEvent {
|
|
|
419
1078
|
constructor(action: any, loader: Loader);
|
|
420
1079
|
}
|
|
421
1080
|
|
|
1081
|
+
/**
|
|
1082
|
+
* Runtime model of a single form field, built from the JSON definition returned by the API.
|
|
1083
|
+
*
|
|
1084
|
+
* It is what `iss-field-*` components inject through the `FIELD_DATA` token, and the object
|
|
1085
|
+
* field events read from and write to. Signal-valued members can be changed at runtime and
|
|
1086
|
+
* the rendered field reacts immediately.
|
|
1087
|
+
*
|
|
1088
|
+
* ### Properties
|
|
1089
|
+
* | Property | Type | Description |
|
|
1090
|
+
* | --- | --- | --- |
|
|
1091
|
+
* | `id` | `number` | Unique field id. |
|
|
1092
|
+
* | `name` | `string` | Control name inside the form group. |
|
|
1093
|
+
* | `type` | `string` | Key into the `COMPONENTS` index (`text_input`, `dropdown_list`, …). |
|
|
1094
|
+
* | `base` | `string` | Underlying data type of the field. |
|
|
1095
|
+
* | `label()` | `string` | Visible label. |
|
|
1096
|
+
* | `hint()` | `string` | Helper text under the field. |
|
|
1097
|
+
* | `options()` | `Option[]` | Choices for select, radio, checkbox and toggle fields. |
|
|
1098
|
+
* | `api()` | `string` | Endpoint used to load options or lookups. |
|
|
1099
|
+
* | `mode()` | `"edit" \| "view"` | Renders the control or the read-only viewer. |
|
|
1100
|
+
* | `visible()` | `boolean` | Whether the field is rendered at all. |
|
|
1101
|
+
* | `loading()` | `boolean` | Shows the field's own loading state. |
|
|
1102
|
+
* | `config` | `FieldConfig` | Per-type configuration — see {@link FieldConfig}. |
|
|
1103
|
+
* | `validation` | `any` | Synchronous validation rules. |
|
|
1104
|
+
* | `asyncValidation` | `FieldAsyncValidation` | Remote validation rules. |
|
|
1105
|
+
* | `events` | `FieldEvent[]` | Cross-field reactions (show, hide, set value, …). |
|
|
1106
|
+
* | `children` | `IssField[]` | Nested fields, used by table and group fields. |
|
|
1107
|
+
* | `value` / `defaultValue` | `string` | Initial and fallback raw values. |
|
|
1108
|
+
* | `jsonValue` | `any` | Initial resolved value for controls with a rich payload. |
|
|
1109
|
+
* | `ctrlValue()` | `string \| null` | Live raw value of the control. |
|
|
1110
|
+
* | `ctrlJsonValue()` | `any` | Live resolved value (selected options, files, users, …). |
|
|
1111
|
+
* | `response()` / `apiResponse` | `any` | Latest payload returned for this field. |
|
|
1112
|
+
*/
|
|
422
1113
|
declare class IssField {
|
|
423
1114
|
id: number;
|
|
424
1115
|
name: string;
|
|
@@ -496,15 +1187,50 @@ declare class FormEngine {
|
|
|
496
1187
|
static ɵprov: i0.ɵɵInjectableDeclaration<FormEngine>;
|
|
497
1188
|
}
|
|
498
1189
|
|
|
1190
|
+
/**
|
|
1191
|
+
* Base class for every `iss-field-*` field.
|
|
1192
|
+
*
|
|
1193
|
+
* A field is the form-engine layer around a control: it reads its whole configuration from
|
|
1194
|
+
* the injected {@link IssField} (label, options, config, validation, events), registers its
|
|
1195
|
+
* `FormControl` on the parent `FormGroup` on init and removes it again on destroy, and
|
|
1196
|
+
* switches between the control (`mode() === "edit"`) and the viewer (`mode() === "view"`).
|
|
1197
|
+
*
|
|
1198
|
+
* ### Inputs
|
|
1199
|
+
* | Property | Type | Description |
|
|
1200
|
+
* | --- | --- | --- |
|
|
1201
|
+
* | `issField` | `IssField` | **Required.** The field definition; also provided through the `FIELD_DATA` token. |
|
|
1202
|
+
* | `formReady` | `boolean \| undefined` | Set by the outlet once the whole form exists; gates event wiring. |
|
|
1203
|
+
*
|
|
1204
|
+
* ### Properties available on `field`
|
|
1205
|
+
* `name` · `type` · `base` · `label()` · `hint()` · `options()` · `api()` · `mode()` ·
|
|
1206
|
+
* `visible()` · `loading()` · `value` · `jsonValue` · `defaultValue` · `ctrlValue()` ·
|
|
1207
|
+
* `ctrlJsonValue()` · `events` · `validation` · `asyncValidation` · `children` ·
|
|
1208
|
+
* `response()` · `config` — see {@link IssField} and {@link FieldConfig}.
|
|
1209
|
+
*
|
|
1210
|
+
* Fields are not used directly in templates; the outlet resolves them from the field `type`
|
|
1211
|
+
* through the `COMPONENTS` index.
|
|
1212
|
+
*/
|
|
499
1213
|
declare class FieldBase implements OnInit, OnDestroy {
|
|
500
1214
|
#private;
|
|
1215
|
+
/**
|
|
1216
|
+
* The field definition rendered by this component. Required.
|
|
1217
|
+
*/
|
|
501
1218
|
issField: InputSignal<IssField>;
|
|
1219
|
+
/**
|
|
1220
|
+
* Set by the outlet once every field is registered; field events start only after it turns true.
|
|
1221
|
+
*/
|
|
502
1222
|
formReady: InputSignal<boolean | undefined>;
|
|
1223
|
+
/**
|
|
1224
|
+
* The {@link IssField} for this instance, injected through the `FIELD_DATA` token.
|
|
1225
|
+
*/
|
|
503
1226
|
field: IssField;
|
|
504
1227
|
parentFormGroup: ControlContainer;
|
|
505
1228
|
formEngine: FormEngine;
|
|
506
1229
|
eventHandler: EventHandler;
|
|
507
1230
|
destroyRef: DestroyRef;
|
|
1231
|
+
/**
|
|
1232
|
+
* The `FormControl` this field registers on the parent form under `field.name`.
|
|
1233
|
+
*/
|
|
508
1234
|
ctrl: FormControl;
|
|
509
1235
|
ctrlValueChange: i0.Signal<any>;
|
|
510
1236
|
get form(): FormGroup;
|
|
@@ -514,56 +1240,294 @@ declare class FieldBase implements OnInit, OnDestroy {
|
|
|
514
1240
|
static ɵcmp: i0.ɵɵComponentDeclaration<FieldBase, "ng-component", never, { "issField": { "alias": "issField"; "required": true; "isSignal": true; }; "formReady": { "alias": "formReady"; "required": false; "isSignal": true; }; }, {}, never, never, true, never>;
|
|
515
1241
|
}
|
|
516
1242
|
|
|
1243
|
+
/**
|
|
1244
|
+
* `<iss-field-input>` — single line text, number, email or password entry.
|
|
1245
|
+
*
|
|
1246
|
+
* Rendered by the outlet for fields of type `text_input`. In `edit` mode it renders
|
|
1247
|
+
* {@link InputControl} plus the validation message; in `view` mode the matching viewer.
|
|
1248
|
+
*
|
|
1249
|
+
* ### Supported `config` keys
|
|
1250
|
+
* | Key | Type | Description |
|
|
1251
|
+
* | --- | --- | --- |
|
|
1252
|
+
* | `type` | `string` | Native input type — `text`, `number`, `email`, `password`, … |
|
|
1253
|
+
* | `placeholder` | `string` | Placeholder shown while empty. |
|
|
1254
|
+
* | `min` | `number` | Minimum numeric value. |
|
|
1255
|
+
* | `max` | `number` | Maximum numeric value. |
|
|
1256
|
+
* | `minLength` | `number` | Minimum number of characters. |
|
|
1257
|
+
* | `maxLength` | `number` | Maximum number of characters. |
|
|
1258
|
+
* | `readonly` | `boolean` | Shows the value but blocks interaction. |
|
|
1259
|
+
*
|
|
1260
|
+
* ### Other field members used
|
|
1261
|
+
* `label()`
|
|
1262
|
+
*
|
|
1263
|
+
* Every field also honours `visible`, `mode`, `validation`, `asyncValidation` and
|
|
1264
|
+
* `events` — see {@link IssField} for the full model and {@link FieldConfig} for all keys.
|
|
1265
|
+
*
|
|
1266
|
+
* @example
|
|
1267
|
+
* ```json
|
|
1268
|
+
* { "name": "email", "type": "text_input", "label": "Email", "config": { "type": "email", "maxLength": 120 } }
|
|
1269
|
+
* ```
|
|
1270
|
+
*/
|
|
517
1271
|
declare class InputField extends FieldBase {
|
|
518
1272
|
static ɵfac: i0.ɵɵFactoryDeclaration<InputField, never>;
|
|
519
1273
|
static ɵcmp: i0.ɵɵComponentDeclaration<InputField, "iss-field-input", never, {}, {}, never, never, true, never>;
|
|
520
1274
|
}
|
|
521
1275
|
|
|
1276
|
+
/**
|
|
1277
|
+
* `<iss-field-textarea>` — multi line free text.
|
|
1278
|
+
*
|
|
1279
|
+
* Rendered by the outlet for fields of type `textarea`. In `edit` mode it renders
|
|
1280
|
+
* {@link TextareaControl} plus the validation message; in `view` mode the matching viewer.
|
|
1281
|
+
*
|
|
1282
|
+
* ### Supported `config` keys
|
|
1283
|
+
* | Key | Type | Description |
|
|
1284
|
+
* | --- | --- | --- |
|
|
1285
|
+
* | `minLength` | `number` | Minimum number of characters. |
|
|
1286
|
+
* | `maxLength` | `number` | Maximum number of characters. |
|
|
1287
|
+
* | `readonly` | `boolean` | Shows the value but blocks interaction. |
|
|
1288
|
+
*
|
|
1289
|
+
* ### Other field members used
|
|
1290
|
+
* `label()`
|
|
1291
|
+
*
|
|
1292
|
+
* Every field also honours `visible`, `mode`, `validation`, `asyncValidation` and
|
|
1293
|
+
* `events` — see {@link IssField} for the full model and {@link FieldConfig} for all keys.
|
|
1294
|
+
*
|
|
1295
|
+
* @example
|
|
1296
|
+
* ```json
|
|
1297
|
+
* { "name": "notes", "type": "textarea", "label": "Notes", "config": { "maxLength": 500 } }
|
|
1298
|
+
* ```
|
|
1299
|
+
*/
|
|
522
1300
|
declare class TextareaField extends FieldBase {
|
|
523
1301
|
static ɵfac: i0.ɵɵFactoryDeclaration<TextareaField, never>;
|
|
524
1302
|
static ɵcmp: i0.ɵɵComponentDeclaration<TextareaField, "iss-field-textarea", never, {}, {}, never, never, true, never>;
|
|
525
1303
|
}
|
|
526
1304
|
|
|
1305
|
+
/**
|
|
1306
|
+
* `<iss-field-chips>` — free text entered as removable chips.
|
|
1307
|
+
*
|
|
1308
|
+
* Rendered by the outlet for fields of type `chips`. In `edit` mode it renders
|
|
1309
|
+
* {@link ChipsControl} plus the validation message; in `view` mode the matching viewer.
|
|
1310
|
+
*
|
|
1311
|
+
* ### Supported `config` keys
|
|
1312
|
+
* | Key | Type | Description |
|
|
1313
|
+
* | --- | --- | --- |
|
|
1314
|
+
* | `readonly` | `boolean` | Shows the value but blocks interaction. |
|
|
1315
|
+
*
|
|
1316
|
+
* ### Other field members used
|
|
1317
|
+
* `label()`
|
|
1318
|
+
*
|
|
1319
|
+
* Every field also honours `visible`, `mode`, `validation`, `asyncValidation` and
|
|
1320
|
+
* `events` — see {@link IssField} for the full model and {@link FieldConfig} for all keys.
|
|
1321
|
+
*
|
|
1322
|
+
* @example
|
|
1323
|
+
* ```json
|
|
1324
|
+
* { "name": "tags", "type": "chips", "label": "Tags" }
|
|
1325
|
+
* ```
|
|
1326
|
+
*/
|
|
527
1327
|
declare class ChipsField extends FieldBase {
|
|
528
1328
|
static ɵfac: i0.ɵɵFactoryDeclaration<ChipsField, never>;
|
|
529
1329
|
static ɵcmp: i0.ɵɵComponentDeclaration<ChipsField, "iss-field-chips", never, {}, {}, never, never, true, never>;
|
|
530
1330
|
}
|
|
531
1331
|
|
|
1332
|
+
/**
|
|
1333
|
+
* `<iss-field-radio>` — one choice out of a fixed set of options.
|
|
1334
|
+
*
|
|
1335
|
+
* Rendered by the outlet for fields of type `radio`. In `edit` mode it renders
|
|
1336
|
+
* {@link RadioControl} plus the validation message; in `view` mode the matching viewer.
|
|
1337
|
+
*
|
|
1338
|
+
* ### Supported `config` keys
|
|
1339
|
+
* | Key | Type | Description |
|
|
1340
|
+
* | --- | --- | --- |
|
|
1341
|
+
* | `hideLabel` | `boolean` | Hides the field label. |
|
|
1342
|
+
* | `readonly` | `boolean` | Shows the value but blocks interaction. |
|
|
1343
|
+
*
|
|
1344
|
+
* ### Other field members used
|
|
1345
|
+
* `label()` · `options()`
|
|
1346
|
+
*
|
|
1347
|
+
* Every field also honours `visible`, `mode`, `validation`, `asyncValidation` and
|
|
1348
|
+
* `events` — see {@link IssField} for the full model and {@link FieldConfig} for all keys.
|
|
1349
|
+
*
|
|
1350
|
+
* @example
|
|
1351
|
+
* ```json
|
|
1352
|
+
* { "name": "gender", "type": "radio", "label": "Gender", "options": [{ "value": "m", "label": "Male" }] }
|
|
1353
|
+
* ```
|
|
1354
|
+
*/
|
|
532
1355
|
declare class RadioField extends FieldBase {
|
|
533
1356
|
onChange($event: any): void;
|
|
534
1357
|
static ɵfac: i0.ɵɵFactoryDeclaration<RadioField, never>;
|
|
535
1358
|
static ɵcmp: i0.ɵɵComponentDeclaration<RadioField, "iss-field-radio", never, {}, {}, never, never, true, never>;
|
|
536
1359
|
}
|
|
537
1360
|
|
|
1361
|
+
/**
|
|
1362
|
+
* `<iss-field-select>` — single or multiple selection from a dropdown.
|
|
1363
|
+
*
|
|
1364
|
+
* Rendered by the outlet for fields of type `dropdown_list`. In `edit` mode it renders
|
|
1365
|
+
* {@link SelectControl} plus the validation message; in `view` mode the matching viewer.
|
|
1366
|
+
*
|
|
1367
|
+
* ### Supported `config` keys
|
|
1368
|
+
* | Key | Type | Description |
|
|
1369
|
+
* | --- | --- | --- |
|
|
1370
|
+
* | `multiple` | `boolean` | Allows selecting more than one option. |
|
|
1371
|
+
* | `readonly` | `boolean` | Shows the value but blocks interaction. |
|
|
1372
|
+
*
|
|
1373
|
+
* ### Other field members used
|
|
1374
|
+
* `label()` · `options()` · `ctrlJsonValue()`
|
|
1375
|
+
*
|
|
1376
|
+
* Every field also honours `visible`, `mode`, `validation`, `asyncValidation` and
|
|
1377
|
+
* `events` — see {@link IssField} for the full model and {@link FieldConfig} for all keys.
|
|
1378
|
+
*
|
|
1379
|
+
* The raw form value holds the selected option values; the resolved options are written
|
|
1380
|
+
* back to `field.ctrlJsonValue`.
|
|
1381
|
+
*
|
|
1382
|
+
* @example
|
|
1383
|
+
* ```json
|
|
1384
|
+
* { "name": "city", "type": "dropdown_list", "label": "City", "options": [{ "value": "1", "label": "Riyadh" }] }
|
|
1385
|
+
* ```
|
|
1386
|
+
*/
|
|
538
1387
|
declare class SelectField extends FieldBase {
|
|
539
1388
|
onChange($event: string | FormData): void;
|
|
540
1389
|
static ɵfac: i0.ɵɵFactoryDeclaration<SelectField, never>;
|
|
541
1390
|
static ɵcmp: i0.ɵɵComponentDeclaration<SelectField, "iss-field-select", never, {}, {}, never, never, true, never>;
|
|
542
1391
|
}
|
|
543
1392
|
|
|
1393
|
+
/**
|
|
1394
|
+
* `<iss-field-mobile>` — an international phone number with a country selector.
|
|
1395
|
+
*
|
|
1396
|
+
* Rendered by the outlet for fields of the type `mobile`. In `edit` mode it renders
|
|
1397
|
+
* {@link MobileControl} plus the validation message; in `view` mode the matching viewer.
|
|
1398
|
+
*
|
|
1399
|
+
* ### Supported `config` keys
|
|
1400
|
+
* | Key | Type | Description |
|
|
1401
|
+
* | --- | --- | --- |
|
|
1402
|
+
* | `readonly` | `boolean` | Shows the value but blocks interaction. |
|
|
1403
|
+
*
|
|
1404
|
+
* ### Other field members used
|
|
1405
|
+
* `label()`
|
|
1406
|
+
*
|
|
1407
|
+
* Every field also honors `visible`, `mode`, `validation`, `asyncValidation` and
|
|
1408
|
+
* `events` — see {@link IssField} for the full model and {@link FieldConfig} for all keys.
|
|
1409
|
+
*
|
|
1410
|
+
* @example
|
|
1411
|
+
* ```json
|
|
1412
|
+
* { "name": "mobile", "type": "mobile", "label": "Mobile" }
|
|
1413
|
+
* ```
|
|
1414
|
+
*/
|
|
544
1415
|
declare class MobileField extends FieldBase {
|
|
545
1416
|
static ɵfac: i0.ɵɵFactoryDeclaration<MobileField, never>;
|
|
546
1417
|
static ɵcmp: i0.ɵɵComponentDeclaration<MobileField, "iss-field-mobile", never, {}, {}, never, never, true, never>;
|
|
547
1418
|
}
|
|
548
1419
|
|
|
1420
|
+
/**
|
|
1421
|
+
* `<iss-field-checkbox>` — a list of checkboxes over a fixed set of options.
|
|
1422
|
+
*
|
|
1423
|
+
* Rendered by the outlet for fields of type `checkbox`. In `edit` mode it renders
|
|
1424
|
+
* {@link CheckboxControl} plus the validation message; in `view` mode the matching viewer.
|
|
1425
|
+
*
|
|
1426
|
+
* ### Supported `config` keys
|
|
1427
|
+
* | Key | Type | Description |
|
|
1428
|
+
* | --- | --- | --- |
|
|
1429
|
+
* | `hideLabel` | `boolean` | Hides the field label. |
|
|
1430
|
+
* | `readonly` | `boolean` | Shows the value but blocks interaction. |
|
|
1431
|
+
*
|
|
1432
|
+
* ### Other field members used
|
|
1433
|
+
* `label()` · `options()`
|
|
1434
|
+
*
|
|
1435
|
+
* Every field also honours `visible`, `mode`, `validation`, `asyncValidation` and
|
|
1436
|
+
* `events` — see {@link IssField} for the full model and {@link FieldConfig} for all keys.
|
|
1437
|
+
*
|
|
1438
|
+
* @example
|
|
1439
|
+
* ```json
|
|
1440
|
+
* { "name": "days", "type": "checkbox", "label": "Days", "options": [{ "value": "sun", "label": "Sunday" }] }
|
|
1441
|
+
* ```
|
|
1442
|
+
*/
|
|
549
1443
|
declare class CheckboxField extends FieldBase {
|
|
550
1444
|
updateField($event: any): void;
|
|
551
1445
|
static ɵfac: i0.ɵɵFactoryDeclaration<CheckboxField, never>;
|
|
552
1446
|
static ɵcmp: i0.ɵɵComponentDeclaration<CheckboxField, "iss-field-checkbox", never, {}, {}, never, never, true, never>;
|
|
553
1447
|
}
|
|
554
1448
|
|
|
1449
|
+
/**
|
|
1450
|
+
* `<iss-field-toggle-button>` — options rendered as a button group.
|
|
1451
|
+
*
|
|
1452
|
+
* Rendered by the outlet for fields of type `toggle_button`. In `edit` mode it renders
|
|
1453
|
+
* {@link ToggleButtonControl} plus the validation message; in `view` mode the matching viewer.
|
|
1454
|
+
*
|
|
1455
|
+
* ### Supported `config` keys
|
|
1456
|
+
* | Key | Type | Description |
|
|
1457
|
+
* | --- | --- | --- |
|
|
1458
|
+
* | `multiple` | `boolean` | Allows more than one active button. |
|
|
1459
|
+
* | `hideLabel` | `boolean` | Hides the field label. |
|
|
1460
|
+
* | `readonly` | `boolean` | Shows the value but blocks interaction. |
|
|
1461
|
+
*
|
|
1462
|
+
* ### Other field members used
|
|
1463
|
+
* `label()` · `options()`
|
|
1464
|
+
*
|
|
1465
|
+
* Every field also honours `visible`, `mode`, `validation`, `asyncValidation` and
|
|
1466
|
+
* `events` — see {@link IssField} for the full model and {@link FieldConfig} for all keys.
|
|
1467
|
+
*
|
|
1468
|
+
* @example
|
|
1469
|
+
* ```json
|
|
1470
|
+
* { "name": "priority", "type": "toggle_button", "label": "Priority", "options": [{ "value": "high", "label": "High" }] }
|
|
1471
|
+
* ```
|
|
1472
|
+
*/
|
|
555
1473
|
declare class ToggleButtonField extends FieldBase {
|
|
556
1474
|
onChange($event: any): void;
|
|
557
1475
|
static ɵfac: i0.ɵɵFactoryDeclaration<ToggleButtonField, never>;
|
|
558
1476
|
static ɵcmp: i0.ɵɵComponentDeclaration<ToggleButtonField, "iss-field-toggle-button", never, {}, {}, never, never, true, never>;
|
|
559
1477
|
}
|
|
560
1478
|
|
|
1479
|
+
/**
|
|
1480
|
+
* `<iss-field-slide-toggle>` — an on/off switch for a boolean value.
|
|
1481
|
+
*
|
|
1482
|
+
* Rendered by the outlet for fields of type `switch`. In `edit` mode it renders
|
|
1483
|
+
* {@link SlideToggleControl} plus the validation message; in `view` mode the matching viewer.
|
|
1484
|
+
*
|
|
1485
|
+
* ### Supported `config` keys
|
|
1486
|
+
* | Key | Type | Description |
|
|
1487
|
+
* | --- | --- | --- |
|
|
1488
|
+
* | `hideLabel` | `boolean` | Hides the field label. |
|
|
1489
|
+
* | `readonly` | `boolean` | Shows the value but blocks interaction. |
|
|
1490
|
+
*
|
|
1491
|
+
* ### Other field members used
|
|
1492
|
+
* `label()`
|
|
1493
|
+
*
|
|
1494
|
+
* Every field also honours `visible`, `mode`, `validation`, `asyncValidation` and
|
|
1495
|
+
* `events` — see {@link IssField} for the full model and {@link FieldConfig} for all keys.
|
|
1496
|
+
*
|
|
1497
|
+
* @example
|
|
1498
|
+
* ```json
|
|
1499
|
+
* { "name": "active", "type": "switch", "label": "Active" }
|
|
1500
|
+
* ```
|
|
1501
|
+
*/
|
|
561
1502
|
declare class SlideToggleField extends FieldBase {
|
|
562
1503
|
onChange($event: any): void;
|
|
563
1504
|
static ɵfac: i0.ɵɵFactoryDeclaration<SlideToggleField, never>;
|
|
564
1505
|
static ɵcmp: i0.ɵɵComponentDeclaration<SlideToggleField, "iss-field-slide-toggle", never, {}, {}, never, never, true, never>;
|
|
565
1506
|
}
|
|
566
1507
|
|
|
1508
|
+
/**
|
|
1509
|
+
* `<iss-field-plate-number>` — a Saudi vehicle plate in Arabic and English.
|
|
1510
|
+
*
|
|
1511
|
+
* Rendered by the outlet for fields of type `vehicle_plate`. In `edit` mode it renders
|
|
1512
|
+
* {@link PlateControl} plus the validation message; in `view` mode the matching viewer.
|
|
1513
|
+
*
|
|
1514
|
+
* ### Supported `config` keys
|
|
1515
|
+
* | Key | Type | Description |
|
|
1516
|
+
* | --- | --- | --- |
|
|
1517
|
+
* | `hideLabel` | `boolean` | Hides the field label. |
|
|
1518
|
+
* | `readonly` | `boolean` | Shows the value but blocks interaction. |
|
|
1519
|
+
*
|
|
1520
|
+
* ### Other field members used
|
|
1521
|
+
* `label()`
|
|
1522
|
+
*
|
|
1523
|
+
* Every field also honours `visible`, `mode`, `validation`, `asyncValidation` and
|
|
1524
|
+
* `events` — see {@link IssField} for the full model and {@link FieldConfig} for all keys.
|
|
1525
|
+
*
|
|
1526
|
+
* @example
|
|
1527
|
+
* ```json
|
|
1528
|
+
* { "name": "plate", "type": "vehicle_plate", "label": "Plate number" }
|
|
1529
|
+
* ```
|
|
1530
|
+
*/
|
|
567
1531
|
declare class PlateField extends FieldBase {
|
|
568
1532
|
updateField($event: any): void;
|
|
569
1533
|
static ɵfac: i0.ɵɵFactoryDeclaration<PlateField, never>;
|
|
@@ -586,6 +1550,36 @@ declare class FileHandler {
|
|
|
586
1550
|
static ɵprov: i0.ɵɵInjectableDeclaration<FileHandler>;
|
|
587
1551
|
}
|
|
588
1552
|
|
|
1553
|
+
/**
|
|
1554
|
+
* `<iss-field-file-picker>` — attachment upload.
|
|
1555
|
+
*
|
|
1556
|
+
* Rendered by the outlet for fields of type `attachment`. In `edit` mode it renders
|
|
1557
|
+
* {@link FilePickerControl} plus the validation message; in `view` mode the matching viewer.
|
|
1558
|
+
*
|
|
1559
|
+
* ### Supported `config` keys
|
|
1560
|
+
* | Key | Type | Description |
|
|
1561
|
+
* | --- | --- | --- |
|
|
1562
|
+
* | `multiple` | `boolean` | Allows attaching more than one file. |
|
|
1563
|
+
* | `readonly` | `boolean` | Shows the value but blocks interaction. |
|
|
1564
|
+
*
|
|
1565
|
+
* ### Other field members used
|
|
1566
|
+
* `label()` · `value` · `validation` · `ctrlJsonValue()`
|
|
1567
|
+
*
|
|
1568
|
+
* Every field also honours `visible`, `mode`, `validation`, `asyncValidation` and
|
|
1569
|
+
* `events` — see {@link IssField} for the full model and {@link FieldConfig} for all keys.
|
|
1570
|
+
*
|
|
1571
|
+
* The field uploads the picked files itself, stores the returned ids as the control value
|
|
1572
|
+
* and keeps the resolved attachments in `field.ctrlJsonValue`.
|
|
1573
|
+
*
|
|
1574
|
+
* Accepted extensions come from the `fileType` **validation** rule, not from `config`; the
|
|
1575
|
+
* `allowedFileSize`, `allowedFileTypes`, `minFilesCount`, `maxFilesCount`, `templateId` and
|
|
1576
|
+
* `templateUrl` config keys exist on {@link FieldConfig} but are not read here yet.
|
|
1577
|
+
*
|
|
1578
|
+
* @example
|
|
1579
|
+
* ```json
|
|
1580
|
+
* { "name": "attachments", "type": "attachment", "label": "Attachments", "config": { "multiple": true }, "validation": { "fileType": ["pdf", "png"] } }
|
|
1581
|
+
* ```
|
|
1582
|
+
*/
|
|
589
1583
|
declare class FilePickerField extends FieldBase implements OnDestroy {
|
|
590
1584
|
#private;
|
|
591
1585
|
picker: FormControl<any>;
|
|
@@ -602,21 +1596,117 @@ declare class FilePickerField extends FieldBase implements OnDestroy {
|
|
|
602
1596
|
static ɵcmp: i0.ɵɵComponentDeclaration<FilePickerField, "iss-field-file-picker", never, {}, {}, never, never, true, never>;
|
|
603
1597
|
}
|
|
604
1598
|
|
|
1599
|
+
/**
|
|
1600
|
+
* `<iss-field-time-picker>` — a time of day, picked from a generated list.
|
|
1601
|
+
*
|
|
1602
|
+
* Rendered by the outlet for fields of type `time`. In `edit` mode it renders
|
|
1603
|
+
* {@link TimePickerControl} plus the validation message; in `view` mode the matching viewer.
|
|
1604
|
+
*
|
|
1605
|
+
* ### Supported `config` keys
|
|
1606
|
+
* | Key | Type | Description |
|
|
1607
|
+
* | --- | --- | --- |
|
|
1608
|
+
* | `readonly` | `boolean` | Shows the value but blocks interaction. |
|
|
1609
|
+
*
|
|
1610
|
+
* ### Other field members used
|
|
1611
|
+
* `label()`
|
|
1612
|
+
*
|
|
1613
|
+
* Every field also honours `visible`, `mode`, `validation`, `asyncValidation` and
|
|
1614
|
+
* `events` — see {@link IssField} for the full model and {@link FieldConfig} for all keys.
|
|
1615
|
+
*
|
|
1616
|
+
* @example
|
|
1617
|
+
* ```json
|
|
1618
|
+
* { "name": "startsAt", "type": "time", "label": "Starts at" }
|
|
1619
|
+
* ```
|
|
1620
|
+
*/
|
|
605
1621
|
declare class TimePickerField extends FieldBase {
|
|
606
1622
|
static ɵfac: i0.ɵɵFactoryDeclaration<TimePickerField, never>;
|
|
607
1623
|
static ɵcmp: i0.ɵɵComponentDeclaration<TimePickerField, "iss-field-time-picker", never, {}, {}, never, never, true, never>;
|
|
608
1624
|
}
|
|
609
1625
|
|
|
1626
|
+
/**
|
|
1627
|
+
* `<iss-field-date-picker>` — a single date, picked from a calendar.
|
|
1628
|
+
*
|
|
1629
|
+
* Rendered by the outlet for fields of type `date`. In `edit` mode it renders
|
|
1630
|
+
* {@link DatePickerControl} plus the validation message; in `view` mode the matching viewer.
|
|
1631
|
+
*
|
|
1632
|
+
* ### Supported `config` keys
|
|
1633
|
+
* | Key | Type | Description |
|
|
1634
|
+
* | --- | --- | --- |
|
|
1635
|
+
* | `minDate` | `Date` | Earliest selectable date. |
|
|
1636
|
+
* | `maxDate` | `Date` | Latest selectable date. |
|
|
1637
|
+
* | `readonly` | `boolean` | Shows the value but blocks interaction. |
|
|
1638
|
+
*
|
|
1639
|
+
* ### Other field members used
|
|
1640
|
+
* `label()`
|
|
1641
|
+
*
|
|
1642
|
+
* Every field also honours `visible`, `mode`, `validation`, `asyncValidation` and
|
|
1643
|
+
* `events` — see {@link IssField} for the full model and {@link FieldConfig} for all keys.
|
|
1644
|
+
*
|
|
1645
|
+
* @example
|
|
1646
|
+
* ```json
|
|
1647
|
+
* { "name": "startsOn", "type": "date", "label": "Start date", "config": { "minDate": "2026-01-01" } }
|
|
1648
|
+
* ```
|
|
1649
|
+
*/
|
|
610
1650
|
declare class DatePickerField extends FieldBase {
|
|
611
1651
|
static ɵfac: i0.ɵɵFactoryDeclaration<DatePickerField, never>;
|
|
612
1652
|
static ɵcmp: i0.ɵɵComponentDeclaration<DatePickerField, "iss-field-date-picker", never, {}, {}, never, never, true, never>;
|
|
613
1653
|
}
|
|
614
1654
|
|
|
1655
|
+
/**
|
|
1656
|
+
* `<iss-field-datetime-picker>` — a date and a time in one field.
|
|
1657
|
+
*
|
|
1658
|
+
* Rendered by the outlet for fields of type `datetime`. In `edit` mode it renders
|
|
1659
|
+
* {@link DatetimePickerControl} plus the validation message; in `view` mode the matching viewer.
|
|
1660
|
+
*
|
|
1661
|
+
* ### Supported `config` keys
|
|
1662
|
+
* | Key | Type | Description |
|
|
1663
|
+
* | --- | --- | --- |
|
|
1664
|
+
* | `minDate` | `Date` | Earliest selectable date. |
|
|
1665
|
+
* | `maxDate` | `Date` | Latest selectable date. |
|
|
1666
|
+
* | `readonly` | `boolean` | Shows the value but blocks interaction. |
|
|
1667
|
+
*
|
|
1668
|
+
* ### Other field members used
|
|
1669
|
+
* `label()`
|
|
1670
|
+
*
|
|
1671
|
+
* Every field also honours `visible`, `mode`, `validation`, `asyncValidation` and
|
|
1672
|
+
* `events` — see {@link IssField} for the full model and {@link FieldConfig} for all keys.
|
|
1673
|
+
*
|
|
1674
|
+
* @example
|
|
1675
|
+
* ```json
|
|
1676
|
+
* { "name": "scheduledAt", "type": "datetime", "label": "Scheduled at" }
|
|
1677
|
+
* ```
|
|
1678
|
+
*/
|
|
615
1679
|
declare class DatetimePickerField extends FieldBase {
|
|
616
1680
|
static ɵfac: i0.ɵɵFactoryDeclaration<DatetimePickerField, never>;
|
|
617
1681
|
static ɵcmp: i0.ɵɵComponentDeclaration<DatetimePickerField, "iss-field-datetime-picker", never, {}, {}, never, never, true, never>;
|
|
618
1682
|
}
|
|
619
1683
|
|
|
1684
|
+
/**
|
|
1685
|
+
* `<iss-field-date-range-picker>` — a start and end date in one field.
|
|
1686
|
+
*
|
|
1687
|
+
* Rendered by the outlet for fields of type `date_range`. In `edit` mode it renders
|
|
1688
|
+
* {@link DateRangePickerControl} plus the validation message; in `view` mode the matching viewer.
|
|
1689
|
+
*
|
|
1690
|
+
* ### Supported `config` keys
|
|
1691
|
+
* | Key | Type | Description |
|
|
1692
|
+
* | --- | --- | --- |
|
|
1693
|
+
* | `minDate` | `Date` | Earliest selectable date. |
|
|
1694
|
+
* | `maxDate` | `Date` | Latest selectable date. |
|
|
1695
|
+
* | `readonly` | `boolean` | Shows the value but blocks interaction. |
|
|
1696
|
+
*
|
|
1697
|
+
* ### Other field members used
|
|
1698
|
+
* `label()`
|
|
1699
|
+
*
|
|
1700
|
+
* Every field also honours `visible`, `mode`, `validation`, `asyncValidation` and
|
|
1701
|
+
* `events` — see {@link IssField} for the full model and {@link FieldConfig} for all keys.
|
|
1702
|
+
*
|
|
1703
|
+
* A half-filled range is treated as no value at all.
|
|
1704
|
+
*
|
|
1705
|
+
* @example
|
|
1706
|
+
* ```json
|
|
1707
|
+
* { "name": "period", "type": "date_range", "label": "Period" }
|
|
1708
|
+
* ```
|
|
1709
|
+
*/
|
|
620
1710
|
declare class DateRangePickerField extends FieldBase {
|
|
621
1711
|
static ɵfac: i0.ɵɵFactoryDeclaration<DateRangePickerField, never>;
|
|
622
1712
|
static ɵcmp: i0.ɵɵComponentDeclaration<DateRangePickerField, "iss-field-date-range-picker", never, {}, {}, never, never, true, never>;
|
|
@@ -758,6 +1848,33 @@ interface DynamicImport<T> {
|
|
|
758
1848
|
[key: PropertyKey]: () => Promise<T>;
|
|
759
1849
|
}
|
|
760
1850
|
|
|
1851
|
+
/**
|
|
1852
|
+
* Maps a field's `type` to the `iss-field-*` component that renders it.
|
|
1853
|
+
*
|
|
1854
|
+
* The outlet looks the field up here and lazy-loads the component, so a `type` that is not
|
|
1855
|
+
* a key of this object renders nothing. Hover a field class for the `config` keys it reads.
|
|
1856
|
+
*
|
|
1857
|
+
* | `type` | Component | Control | Renders |
|
|
1858
|
+
* | --- | --- | --- | --- |
|
|
1859
|
+
* | `text_input` | `InputField` | `iss-ctrl-input` | Single line text, number, email, password. |
|
|
1860
|
+
* | `textarea` | `TextareaField` | `iss-ctrl-textarea` | Multi line free text. |
|
|
1861
|
+
* | `dropdown_list` | `SelectField` | `iss-ctrl-select` | Searchable single/multi select. |
|
|
1862
|
+
* | `toggle_button` | `ToggleButtonField` | `iss-ctrl-toggle-button` | Options as a button group. |
|
|
1863
|
+
* | `checkbox` | `CheckboxField` | `iss-ctrl-checkbox` | Multi choice checkbox list. |
|
|
1864
|
+
* | `radio` | `RadioField` | `iss-ctrl-radio` | Single choice radio list. |
|
|
1865
|
+
* | `date` | `DatePickerField` | `iss-ctrl-date-picker` | A single date. |
|
|
1866
|
+
* | `time` | `TimePickerField` | `iss-ctrl-time-picker` | A time of day. |
|
|
1867
|
+
* | `datetime` | `DatetimePickerField` | `iss-ctrl-datetime-picker` | Date and time together. |
|
|
1868
|
+
* | `date_range` | `DateRangePickerField` | `iss-ctrl-date-range-picker` | A start/end date range. |
|
|
1869
|
+
* | `attachment` | `FilePickerField` | `iss-ctrl-file-picker` | File upload. |
|
|
1870
|
+
* | `userPicker` | `UserPickerField` | `iss-ctrl-select` | Employee lookup. |
|
|
1871
|
+
* | `vehicle_plate` | `PlateField` | `iss-ctrl-plate-number` | Saudi vehicle plate. |
|
|
1872
|
+
* | `enrichment` | `NoteField` | — | Read-only explanatory text. |
|
|
1873
|
+
* | `mobile` | `MobileField` | `iss-ctrl-mobile` | International phone number. |
|
|
1874
|
+
* | `table` | `TableField` | `iss-ctrl-table` | Repeatable rows built from `children`. |
|
|
1875
|
+
* | `chips` | `ChipsField` | `iss-ctrl-chips` | Free text as removable chips. |
|
|
1876
|
+
* | `switch` | `SlideToggleField` | `iss-ctrl-slide-toggle` | Boolean on/off switch. |
|
|
1877
|
+
*/
|
|
761
1878
|
declare const COMPONENTS: DynamicImport<Type<any>>;
|
|
762
1879
|
|
|
763
1880
|
declare const SERVICES: DynamicImport<Type<any>>;
|