iss-ctrl 0.0.21 → 0.0.23

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.
Files changed (141) hide show
  1. package/README.md +33 -0
  2. package/fesm2022/iss-ctrl-attachment.viewer-DVUL39xd.mjs +110 -0
  3. package/fesm2022/iss-ctrl-attachment.viewer-DVUL39xd.mjs.map +1 -0
  4. package/fesm2022/iss-ctrl-base.mjs +682 -0
  5. package/fesm2022/iss-ctrl-base.mjs.map +1 -0
  6. package/fesm2022/iss-ctrl-checkbox.field-CILXADas.mjs +88 -0
  7. package/fesm2022/iss-ctrl-checkbox.field-CILXADas.mjs.map +1 -0
  8. package/fesm2022/iss-ctrl-checkbox.mjs +146 -0
  9. package/fesm2022/iss-ctrl-checkbox.mjs.map +1 -0
  10. package/fesm2022/iss-ctrl-checkbox.viewer-C3SEUszR.mjs +31 -0
  11. package/fesm2022/iss-ctrl-checkbox.viewer-C3SEUszR.mjs.map +1 -0
  12. package/fesm2022/iss-ctrl-chips.field-445Ds3V7.mjs +76 -0
  13. package/fesm2022/iss-ctrl-chips.field-445Ds3V7.mjs.map +1 -0
  14. package/fesm2022/iss-ctrl-chips.mjs +168 -0
  15. package/fesm2022/iss-ctrl-chips.mjs.map +1 -0
  16. package/fesm2022/iss-ctrl-chips.viewer-BcKT2hcq.mjs +38 -0
  17. package/fesm2022/iss-ctrl-chips.viewer-BcKT2hcq.mjs.map +1 -0
  18. package/fesm2022/iss-ctrl-date-picker.field-Djhh1FsR.mjs +98 -0
  19. package/fesm2022/iss-ctrl-date-picker.field-Djhh1FsR.mjs.map +1 -0
  20. package/fesm2022/iss-ctrl-date-picker.mjs +200 -0
  21. package/fesm2022/iss-ctrl-date-picker.mjs.map +1 -0
  22. package/fesm2022/iss-ctrl-date-picker.viewer-Dsmsf91t.mjs +40 -0
  23. package/fesm2022/iss-ctrl-date-picker.viewer-Dsmsf91t.mjs.map +1 -0
  24. package/fesm2022/iss-ctrl-date-range-picker.field-Dv636SAm.mjs +97 -0
  25. package/fesm2022/iss-ctrl-date-range-picker.field-Dv636SAm.mjs.map +1 -0
  26. package/fesm2022/iss-ctrl-date-range-picker.mjs +307 -0
  27. package/fesm2022/iss-ctrl-date-range-picker.mjs.map +1 -0
  28. package/fesm2022/iss-ctrl-date-range-picker.viewer-tmTQGPFh.mjs +41 -0
  29. package/fesm2022/iss-ctrl-date-range-picker.viewer-tmTQGPFh.mjs.map +1 -0
  30. package/fesm2022/iss-ctrl-datetime-picker.field-DldY8vke.mjs +98 -0
  31. package/fesm2022/iss-ctrl-datetime-picker.field-DldY8vke.mjs.map +1 -0
  32. package/fesm2022/iss-ctrl-datetime-picker.mjs +226 -0
  33. package/fesm2022/iss-ctrl-datetime-picker.mjs.map +1 -0
  34. package/fesm2022/iss-ctrl-datetime-picker.viewer-BeUyEBKo.mjs +42 -0
  35. package/fesm2022/iss-ctrl-datetime-picker.viewer-BeUyEBKo.mjs.map +1 -0
  36. package/fesm2022/iss-ctrl-dropdownlist.field-DikBAtc_.mjs +87 -0
  37. package/fesm2022/iss-ctrl-dropdownlist.field-DikBAtc_.mjs.map +1 -0
  38. package/fesm2022/iss-ctrl-dropdownlist.mjs +398 -0
  39. package/fesm2022/iss-ctrl-dropdownlist.mjs.map +1 -0
  40. package/fesm2022/iss-ctrl-dropdownlist.viewer-OWJxDpr8.mjs +30 -0
  41. package/fesm2022/iss-ctrl-dropdownlist.viewer-OWJxDpr8.mjs.map +1 -0
  42. package/fesm2022/iss-ctrl-file-picker.field-BMZaJxvj.mjs +210 -0
  43. package/fesm2022/iss-ctrl-file-picker.field-BMZaJxvj.mjs.map +1 -0
  44. package/fesm2022/iss-ctrl-file-picker.mjs +274 -0
  45. package/fesm2022/iss-ctrl-file-picker.mjs.map +1 -0
  46. package/fesm2022/iss-ctrl-input.field-BiwBFYx3.mjs +104 -0
  47. package/fesm2022/iss-ctrl-input.field-BiwBFYx3.mjs.map +1 -0
  48. package/fesm2022/iss-ctrl-input.mjs +204 -0
  49. package/fesm2022/iss-ctrl-input.mjs.map +1 -0
  50. package/fesm2022/iss-ctrl-input.viewer-BOZnW0_e.mjs +22 -0
  51. package/fesm2022/iss-ctrl-input.viewer-BOZnW0_e.mjs.map +1 -0
  52. package/fesm2022/iss-ctrl-iss-ctrl-BG-QWWdq.mjs +1770 -0
  53. package/fesm2022/iss-ctrl-iss-ctrl-BG-QWWdq.mjs.map +1 -0
  54. package/fesm2022/{iss-ctrl-load-event-bOt6IlIo.mjs → iss-ctrl-load-event-T4L3k9XO.mjs} +4 -3
  55. package/fesm2022/iss-ctrl-load-event-T4L3k9XO.mjs.map +1 -0
  56. package/fesm2022/{iss-ctrl-load-options-event-CxyAyNMe.mjs → iss-ctrl-load-options-event-tG258cbP.mjs} +3 -3
  57. package/fesm2022/{iss-ctrl-load-options-event-CxyAyNMe.mjs.map → iss-ctrl-load-options-event-tG258cbP.mjs.map} +1 -1
  58. package/fesm2022/{iss-ctrl-load-value-event-DJKJ5S3h.mjs → iss-ctrl-load-value-event--7zt90Dl.mjs} +3 -3
  59. package/fesm2022/{iss-ctrl-load-value-event-DJKJ5S3h.mjs.map → iss-ctrl-load-value-event--7zt90Dl.mjs.map} +1 -1
  60. package/fesm2022/iss-ctrl-mobile.field-DLccnWKX.mjs +77 -0
  61. package/fesm2022/iss-ctrl-mobile.field-DLccnWKX.mjs.map +1 -0
  62. package/fesm2022/iss-ctrl-mobile.mjs +2465 -0
  63. package/fesm2022/iss-ctrl-mobile.mjs.map +1 -0
  64. package/fesm2022/iss-ctrl-mobile.viewer-DQgxAcR-.mjs +22 -0
  65. package/fesm2022/iss-ctrl-mobile.viewer-DQgxAcR-.mjs.map +1 -0
  66. package/fesm2022/{iss-ctrl-note.field-B_Lbp28X.mjs → iss-ctrl-note.field-CT1wVmfF.mjs} +2 -2
  67. package/fesm2022/{iss-ctrl-note.field-B_Lbp28X.mjs.map → iss-ctrl-note.field-CT1wVmfF.mjs.map} +1 -1
  68. package/fesm2022/iss-ctrl-plate.field-CQQY8rnE.mjs +92 -0
  69. package/fesm2022/iss-ctrl-plate.field-CQQY8rnE.mjs.map +1 -0
  70. package/fesm2022/iss-ctrl-plate.mjs +493 -0
  71. package/fesm2022/iss-ctrl-plate.mjs.map +1 -0
  72. package/fesm2022/iss-ctrl-plate.viewer-B8PUBLH8.mjs +179 -0
  73. package/fesm2022/iss-ctrl-plate.viewer-B8PUBLH8.mjs.map +1 -0
  74. package/fesm2022/iss-ctrl-radio.field-Dp5D-AXQ.mjs +88 -0
  75. package/fesm2022/iss-ctrl-radio.field-Dp5D-AXQ.mjs.map +1 -0
  76. package/fesm2022/iss-ctrl-radio.mjs +104 -0
  77. package/fesm2022/iss-ctrl-radio.mjs.map +1 -0
  78. package/fesm2022/iss-ctrl-radio.viewer-EiDliZro.mjs +30 -0
  79. package/fesm2022/iss-ctrl-radio.viewer-EiDliZro.mjs.map +1 -0
  80. package/fesm2022/{iss-ctrl-replace-api-keys-C0XYQW4i.mjs → iss-ctrl-replace-api-keys-COUv4Kin.mjs} +2 -2
  81. package/fesm2022/{iss-ctrl-replace-api-keys-C0XYQW4i.mjs.map → iss-ctrl-replace-api-keys-COUv4Kin.mjs.map} +1 -1
  82. package/fesm2022/{iss-ctrl-set-value-event-CgXhi0Bv.mjs → iss-ctrl-set-value-event-D0-_qIyS.mjs} +2 -2
  83. package/fesm2022/{iss-ctrl-set-value-event-CgXhi0Bv.mjs.map → iss-ctrl-set-value-event-D0-_qIyS.mjs.map} +1 -1
  84. package/fesm2022/iss-ctrl-slide-toggle.field-vCJHOiSG.mjs +85 -0
  85. package/fesm2022/iss-ctrl-slide-toggle.field-vCJHOiSG.mjs.map +1 -0
  86. package/fesm2022/iss-ctrl-slide-toggle.mjs +66 -0
  87. package/fesm2022/iss-ctrl-slide-toggle.mjs.map +1 -0
  88. package/fesm2022/iss-ctrl-slide-toggle.viewer-hsIHwDj3.mjs +34 -0
  89. package/fesm2022/iss-ctrl-slide-toggle.viewer-hsIHwDj3.mjs.map +1 -0
  90. package/fesm2022/{iss-ctrl-table.field-B5FxF6hn.mjs → iss-ctrl-table.field-DdFjH-D8.mjs} +142 -140
  91. package/fesm2022/iss-ctrl-table.field-DdFjH-D8.mjs.map +1 -0
  92. package/fesm2022/iss-ctrl-textarea.field-Dqhhu2m4.mjs +82 -0
  93. package/fesm2022/iss-ctrl-textarea.field-Dqhhu2m4.mjs.map +1 -0
  94. package/fesm2022/iss-ctrl-textarea.mjs +115 -0
  95. package/fesm2022/iss-ctrl-textarea.mjs.map +1 -0
  96. package/fesm2022/iss-ctrl-textarea.viewer-CpmLauik.mjs +22 -0
  97. package/fesm2022/iss-ctrl-textarea.viewer-CpmLauik.mjs.map +1 -0
  98. package/fesm2022/iss-ctrl-time-picker.field-CdmxRiH8.mjs +77 -0
  99. package/fesm2022/iss-ctrl-time-picker.field-CdmxRiH8.mjs.map +1 -0
  100. package/fesm2022/iss-ctrl-time-picker.mjs +170 -0
  101. package/fesm2022/iss-ctrl-time-picker.mjs.map +1 -0
  102. package/fesm2022/iss-ctrl-time-picker.viewer-CJeFLrdI.mjs +22 -0
  103. package/fesm2022/iss-ctrl-time-picker.viewer-CJeFLrdI.mjs.map +1 -0
  104. package/fesm2022/iss-ctrl-toggle-button.field-rAT7dVFC.mjs +101 -0
  105. package/fesm2022/iss-ctrl-toggle-button.field-rAT7dVFC.mjs.map +1 -0
  106. package/fesm2022/iss-ctrl-toggle-button.mjs +158 -0
  107. package/fesm2022/iss-ctrl-toggle-button.mjs.map +1 -0
  108. package/fesm2022/iss-ctrl-toggle-button.viewer-CC-8_Dy4.mjs +30 -0
  109. package/fesm2022/iss-ctrl-toggle-button.viewer-CC-8_Dy4.mjs.map +1 -0
  110. package/fesm2022/iss-ctrl-tokens.mjs +25 -0
  111. package/fesm2022/iss-ctrl-tokens.mjs.map +1 -0
  112. package/fesm2022/{iss-ctrl-trigger-based-on-json-value-2v1kLVHZ.mjs → iss-ctrl-trigger-based-on-json-value-I92SNsv9.mjs} +2 -2
  113. package/fesm2022/{iss-ctrl-trigger-based-on-json-value-2v1kLVHZ.mjs.map → iss-ctrl-trigger-based-on-json-value-I92SNsv9.mjs.map} +1 -1
  114. package/fesm2022/{iss-ctrl-user-picker.field-BH63sZ-X.mjs → iss-ctrl-user-picker.field-DpmYCfpD.mjs} +154 -153
  115. package/fesm2022/iss-ctrl-user-picker.field-DpmYCfpD.mjs.map +1 -0
  116. package/fesm2022/iss-ctrl.mjs +3 -1
  117. package/fesm2022/iss-ctrl.mjs.map +1 -1
  118. package/package.json +69 -1
  119. package/types/iss-ctrl-base.d.ts +318 -0
  120. package/types/iss-ctrl-checkbox.d.ts +46 -0
  121. package/types/iss-ctrl-chips.d.ts +41 -0
  122. package/types/iss-ctrl-date-picker.d.ts +75 -0
  123. package/types/iss-ctrl-date-range-picker.d.ts +95 -0
  124. package/types/iss-ctrl-datetime-picker.d.ts +77 -0
  125. package/types/iss-ctrl-dropdownlist.d.ts +78 -0
  126. package/types/iss-ctrl-file-picker.d.ts +95 -0
  127. package/types/iss-ctrl-input.d.ts +76 -0
  128. package/types/iss-ctrl-mobile.d.ts +91 -0
  129. package/types/iss-ctrl-plate.d.ts +54 -0
  130. package/types/iss-ctrl-radio.d.ts +34 -0
  131. package/types/iss-ctrl-slide-toggle.d.ts +26 -0
  132. package/types/iss-ctrl-textarea.d.ts +30 -0
  133. package/types/iss-ctrl-time-picker.d.ts +48 -0
  134. package/types/iss-ctrl-toggle-button.d.ts +41 -0
  135. package/types/iss-ctrl-tokens.d.ts +21 -0
  136. package/types/iss-ctrl.d.ts +303 -2005
  137. package/fesm2022/iss-ctrl-iss-ctrl-BKu6a5HF.mjs +0 -9683
  138. package/fesm2022/iss-ctrl-iss-ctrl-BKu6a5HF.mjs.map +0 -1
  139. package/fesm2022/iss-ctrl-load-event-bOt6IlIo.mjs.map +0 -1
  140. package/fesm2022/iss-ctrl-table.field-B5FxF6hn.mjs.map +0 -1
  141. package/fesm2022/iss-ctrl-user-picker.field-BH63sZ-X.mjs.map +0 -1
@@ -3,13 +3,14 @@ import { inject, signal, CUSTOM_ELEMENTS_SCHEMA, Component } from '@angular/core
3
3
  import { takeUntilDestroyed } from '@angular/core/rxjs-interop';
4
4
  import { MatSidenav, MatSidenavContainer } from '@angular/material/sidenav';
5
5
  import { Subject, debounceTime, distinctUntilChanged, switchMap, map } from 'rxjs';
6
- import { F as FieldBase, E as Employee, V as VIEW_PROVIDER, S as SelectControl, a as ValidationMessage, b as FieldViewer } from './iss-ctrl-iss-ctrl-BKu6a5HF.mjs';
6
+ import { F as FieldBase, E as Employee, V as VIEW_PROVIDER, a as ValidationMessage, b as FieldViewer } from './iss-ctrl-iss-ctrl-BG-QWWdq.mjs';
7
+ import { DropdownlistControl } from 'iss-ctrl/dropdownlist';
7
8
 
8
9
  /**
9
10
  * `<iss-user-picker>` — employee lookup, searched against the directory API.
10
11
  *
11
12
  * Rendered by the outlet for fields of type `userPicker`. In `edit` mode it renders
12
- * {@link SelectControl} — always multi-select — over the employees returned by the search;
13
+ * {@link DropdownlistControl} — always multi-select — over the employees returned by the search;
13
14
  * in `view` mode the stored value as plain text. Selecting a user opens a details drawer.
14
15
  *
15
16
  * ### Supported `config` keys
@@ -67,166 +68,166 @@ class UserPickerField extends FieldBase {
67
68
  this.userData = item;
68
69
  }
69
70
  static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.9", ngImport: i0, type: UserPickerField, deps: [], target: i0.ɵɵFactoryTarget.Component });
70
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.2.9", type: UserPickerField, isStandalone: true, selector: "iss-user-picker", usesInheritance: true, ngImport: i0, template: `
71
- @if (field.visible()) {
72
- @if (field.mode() === "edit") {
73
- <iss-ctrl-select
74
- [formControlName]="field.name"
75
- [min]="field.config.min() ?? null"
76
- [max]="field.config.max() ?? null"
77
- [options]="options()"
78
- [multiple]="true"
79
- [readonly]="field.config.readonly() ?? false"
80
- (onQueryChange)="search($event)"
81
- (onChange)="updateField($event)"
82
- >
83
- <label>{{ field.label() }}</label>
84
- <ng-template let-item #optionTemplate>
85
- <div class="d-flex align-items-center gap-2">
86
- <ds-avatar size="x-small" [attr.image]="item.image"></ds-avatar>
87
- <span class="fs-14 fw-medium fc-black">{{ item.name }}</span>
88
- </div>
89
- </ng-template>
90
- <ng-template let-item #cardViewerTemplate>
91
- <div (click)="showUserData(item);drawer.open()">
92
- {{ item.name }}
93
- </div>
94
- </ng-template>
95
- </iss-ctrl-select>
96
- <iss-validation-message-viewer [errors]="ctrl.errors" [showMessage]="!ctrl.untouched"/>
97
- } @else {
98
- <iss-field-viewer>
99
- <label>{{ field.label() }}</label>
100
- <p>{{ field.value }}</p>
101
- </iss-field-viewer>
102
- }
103
- }
104
- <mat-sidenav-container [hasBackdrop]="true">
105
- <mat-sidenav #drawer [mode]="'over'" [position]="'start'" [autoFocus]="false">
106
- <div class="main-sidenav">
107
- <div class="sidenav-title bc-white">
108
- <h3> Employee Information </h3>
109
- <ds-icon icon="close" class="fc-black fs-20 p-3 cursor-pointer" (click)="drawer.close()"></ds-icon>
110
- </div>
111
- <div class="sidenav-body p-0">
112
- <div class="d-flex flex-column align-items-center gap-3 sidenav-user bc-off-white text-center">
113
- <ds-avatar [attr.image]="userImage()" [attr.label]="userData?.name"></ds-avatar>
114
- @if (userData?.employeeNumber) {
115
- <div class="d-flex flex-column gap-1">
116
- <h4 class="fs-16 fc-black fw-medium mb-0">{{ userData?.name }}</h4>
117
- @if (!userData?.job?.name) {
118
- <h6 class="fs-12 fc-dark-gray fw-normal mb-0">{{ userData?.position?.name }}</h6>
119
- }
120
- @if (!userData?.position?.name) {
121
- <h6 class="fs-12 fc-dark-gray fw-normal mb-0">{{ userData?.job?.name }}</h6>
122
- }
123
- </div>
124
- }
125
- <div class="d-flex flex-wrap gap-2">
126
- <div class="fs-12 fc-black d-flex align-items-center gap-2 box-shadow bc-white radius-4 p-2 profile-box">
127
- <ds-icon icon="mail-o" class="fc-coral fs-20"></ds-icon>
128
- <a [href]="'mailTo:' + userData?.email" class="fc-black">{{ userData?.email }}</a>
129
- </div>
130
- @if (userData?.contact?.mobile) {
131
- <div class="fs-12 fc-black d-flex align-items-center gap-2 box-shadow bc-white radius-4 p-2 profile-box">
132
- <ds-icon icon="phone" class="fc-coral fs-20"></ds-icon>
133
- <a [href]="'tel:' + userData?.contact?.mobile" class="fc-black">
134
- <bdi>{{ userData?.contact?.mobile }}</bdi>
135
- </a>
136
- </div>
137
- }
138
- </div>
139
- </div>
140
- </div>
141
- </div>
142
- </mat-sidenav>
143
- </mat-sidenav-container>
144
- `, isInline: true, styles: [".mat-drawer{position:fixed;left:0}\n"], dependencies: [{ kind: "component", type: SelectControl, selector: "iss-ctrl-select", inputs: ["options", "height", "loading"], outputs: ["onQueryChange"] }, { kind: "component", type: ValidationMessage, selector: "iss-validation-message-viewer", inputs: ["errors", "showMessage"] }, { kind: "component", type: MatSidenav, selector: "mat-sidenav", inputs: ["fixedInViewport", "fixedTopGap", "fixedBottomGap"], exportAs: ["matSidenav"] }, { kind: "component", type: MatSidenavContainer, selector: "mat-sidenav-container", exportAs: ["matSidenavContainer"] }, { kind: "component", type: FieldViewer, selector: "iss-field-viewer" }], viewProviders: [VIEW_PROVIDER] });
71
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.2.9", type: UserPickerField, isStandalone: true, selector: "iss-user-picker", usesInheritance: true, ngImport: i0, template: `
72
+ @if (field.visible()) {
73
+ @if (field.mode() === "edit") {
74
+ <iss-ctrl-dropdownlist
75
+ [formControlName]="field.name"
76
+ [min]="field.config.min() ?? null"
77
+ [max]="field.config.max() ?? null"
78
+ [options]="options()"
79
+ [multiple]="true"
80
+ [readonly]="field.config.readonly() ?? false"
81
+ (onQueryChange)="search($event)"
82
+ (onChange)="updateField($event)"
83
+ >
84
+ <label>{{ field.label() }}</label>
85
+ <ng-template let-item #optionTemplate>
86
+ <div class="d-flex align-items-center gap-2">
87
+ <ds-avatar size="x-small" [attr.image]="item.image"></ds-avatar>
88
+ <span class="fs-14 fw-medium fc-black">{{ item.name }}</span>
89
+ </div>
90
+ </ng-template>
91
+ <ng-template let-item #cardViewerTemplate>
92
+ <div (click)="showUserData(item);drawer.open()">
93
+ {{ item.name }}
94
+ </div>
95
+ </ng-template>
96
+ </iss-ctrl-dropdownlist>
97
+ <iss-validation-message-viewer [errors]="ctrl.errors" [showMessage]="!ctrl.untouched"/>
98
+ } @else {
99
+ <iss-field-viewer>
100
+ <label>{{ field.label() }}</label>
101
+ <p>{{ field.value }}</p>
102
+ </iss-field-viewer>
103
+ }
104
+ }
105
+ <mat-sidenav-container [hasBackdrop]="true">
106
+ <mat-sidenav #drawer [mode]="'over'" [position]="'start'" [autoFocus]="false">
107
+ <div class="main-sidenav">
108
+ <div class="sidenav-title bc-white">
109
+ <h3> Employee Information </h3>
110
+ <ds-icon icon="close" class="fc-black fs-20 p-3 cursor-pointer" (click)="drawer.close()"></ds-icon>
111
+ </div>
112
+ <div class="sidenav-body p-0">
113
+ <div class="d-flex flex-column align-items-center gap-3 sidenav-user bc-off-white text-center">
114
+ <ds-avatar [attr.image]="userImage()" [attr.label]="userData?.name"></ds-avatar>
115
+ @if (userData?.employeeNumber) {
116
+ <div class="d-flex flex-column gap-1">
117
+ <h4 class="fs-16 fc-black fw-medium mb-0">{{ userData?.name }}</h4>
118
+ @if (!userData?.job?.name) {
119
+ <h6 class="fs-12 fc-dark-gray fw-normal mb-0">{{ userData?.position?.name }}</h6>
120
+ }
121
+ @if (!userData?.position?.name) {
122
+ <h6 class="fs-12 fc-dark-gray fw-normal mb-0">{{ userData?.job?.name }}</h6>
123
+ }
124
+ </div>
125
+ }
126
+ <div class="d-flex flex-wrap gap-2">
127
+ <div class="fs-12 fc-black d-flex align-items-center gap-2 box-shadow bc-white radius-4 p-2 profile-box">
128
+ <ds-icon icon="mail-o" class="fc-coral fs-20"></ds-icon>
129
+ <a [href]="'mailTo:' + userData?.email" class="fc-black">{{ userData?.email }}</a>
130
+ </div>
131
+ @if (userData?.contact?.mobile) {
132
+ <div class="fs-12 fc-black d-flex align-items-center gap-2 box-shadow bc-white radius-4 p-2 profile-box">
133
+ <ds-icon icon="phone" class="fc-coral fs-20"></ds-icon>
134
+ <a [href]="'tel:' + userData?.contact?.mobile" class="fc-black">
135
+ <bdi>{{ userData?.contact?.mobile }}</bdi>
136
+ </a>
137
+ </div>
138
+ }
139
+ </div>
140
+ </div>
141
+ </div>
142
+ </div>
143
+ </mat-sidenav>
144
+ </mat-sidenav-container>
145
+ `, isInline: true, styles: [".mat-drawer{position:fixed;left:0}\n"], dependencies: [{ kind: "component", type: DropdownlistControl, selector: "iss-ctrl-dropdownlist", inputs: ["options", "height", "loading"], outputs: ["onQueryChange"] }, { kind: "component", type: ValidationMessage, selector: "iss-validation-message-viewer", inputs: ["errors", "showMessage"] }, { kind: "component", type: MatSidenav, selector: "mat-sidenav", inputs: ["fixedInViewport", "fixedTopGap", "fixedBottomGap"], exportAs: ["matSidenav"] }, { kind: "component", type: MatSidenavContainer, selector: "mat-sidenav-container", exportAs: ["matSidenavContainer"] }, { kind: "component", type: FieldViewer, selector: "iss-field-viewer" }], viewProviders: [VIEW_PROVIDER] });
145
146
  }
146
147
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.9", ngImport: i0, type: UserPickerField, decorators: [{
147
148
  type: Component,
148
149
  args: [{ selector: "iss-user-picker", viewProviders: [VIEW_PROVIDER], imports: [
149
- SelectControl,
150
+ DropdownlistControl,
150
151
  ValidationMessage,
151
152
  MatSidenav,
152
153
  MatSidenavContainer,
153
154
  FieldViewer
154
- ], template: `
155
- @if (field.visible()) {
156
- @if (field.mode() === "edit") {
157
- <iss-ctrl-select
158
- [formControlName]="field.name"
159
- [min]="field.config.min() ?? null"
160
- [max]="field.config.max() ?? null"
161
- [options]="options()"
162
- [multiple]="true"
163
- [readonly]="field.config.readonly() ?? false"
164
- (onQueryChange)="search($event)"
165
- (onChange)="updateField($event)"
166
- >
167
- <label>{{ field.label() }}</label>
168
- <ng-template let-item #optionTemplate>
169
- <div class="d-flex align-items-center gap-2">
170
- <ds-avatar size="x-small" [attr.image]="item.image"></ds-avatar>
171
- <span class="fs-14 fw-medium fc-black">{{ item.name }}</span>
172
- </div>
173
- </ng-template>
174
- <ng-template let-item #cardViewerTemplate>
175
- <div (click)="showUserData(item);drawer.open()">
176
- {{ item.name }}
177
- </div>
178
- </ng-template>
179
- </iss-ctrl-select>
180
- <iss-validation-message-viewer [errors]="ctrl.errors" [showMessage]="!ctrl.untouched"/>
181
- } @else {
182
- <iss-field-viewer>
183
- <label>{{ field.label() }}</label>
184
- <p>{{ field.value }}</p>
185
- </iss-field-viewer>
186
- }
187
- }
188
- <mat-sidenav-container [hasBackdrop]="true">
189
- <mat-sidenav #drawer [mode]="'over'" [position]="'start'" [autoFocus]="false">
190
- <div class="main-sidenav">
191
- <div class="sidenav-title bc-white">
192
- <h3> Employee Information </h3>
193
- <ds-icon icon="close" class="fc-black fs-20 p-3 cursor-pointer" (click)="drawer.close()"></ds-icon>
194
- </div>
195
- <div class="sidenav-body p-0">
196
- <div class="d-flex flex-column align-items-center gap-3 sidenav-user bc-off-white text-center">
197
- <ds-avatar [attr.image]="userImage()" [attr.label]="userData?.name"></ds-avatar>
198
- @if (userData?.employeeNumber) {
199
- <div class="d-flex flex-column gap-1">
200
- <h4 class="fs-16 fc-black fw-medium mb-0">{{ userData?.name }}</h4>
201
- @if (!userData?.job?.name) {
202
- <h6 class="fs-12 fc-dark-gray fw-normal mb-0">{{ userData?.position?.name }}</h6>
203
- }
204
- @if (!userData?.position?.name) {
205
- <h6 class="fs-12 fc-dark-gray fw-normal mb-0">{{ userData?.job?.name }}</h6>
206
- }
207
- </div>
208
- }
209
- <div class="d-flex flex-wrap gap-2">
210
- <div class="fs-12 fc-black d-flex align-items-center gap-2 box-shadow bc-white radius-4 p-2 profile-box">
211
- <ds-icon icon="mail-o" class="fc-coral fs-20"></ds-icon>
212
- <a [href]="'mailTo:' + userData?.email" class="fc-black">{{ userData?.email }}</a>
213
- </div>
214
- @if (userData?.contact?.mobile) {
215
- <div class="fs-12 fc-black d-flex align-items-center gap-2 box-shadow bc-white radius-4 p-2 profile-box">
216
- <ds-icon icon="phone" class="fc-coral fs-20"></ds-icon>
217
- <a [href]="'tel:' + userData?.contact?.mobile" class="fc-black">
218
- <bdi>{{ userData?.contact?.mobile }}</bdi>
219
- </a>
220
- </div>
221
- }
222
- </div>
223
- </div>
224
- </div>
225
- </div>
226
- </mat-sidenav>
227
- </mat-sidenav-container>
155
+ ], template: `
156
+ @if (field.visible()) {
157
+ @if (field.mode() === "edit") {
158
+ <iss-ctrl-dropdownlist
159
+ [formControlName]="field.name"
160
+ [min]="field.config.min() ?? null"
161
+ [max]="field.config.max() ?? null"
162
+ [options]="options()"
163
+ [multiple]="true"
164
+ [readonly]="field.config.readonly() ?? false"
165
+ (onQueryChange)="search($event)"
166
+ (onChange)="updateField($event)"
167
+ >
168
+ <label>{{ field.label() }}</label>
169
+ <ng-template let-item #optionTemplate>
170
+ <div class="d-flex align-items-center gap-2">
171
+ <ds-avatar size="x-small" [attr.image]="item.image"></ds-avatar>
172
+ <span class="fs-14 fw-medium fc-black">{{ item.name }}</span>
173
+ </div>
174
+ </ng-template>
175
+ <ng-template let-item #cardViewerTemplate>
176
+ <div (click)="showUserData(item);drawer.open()">
177
+ {{ item.name }}
178
+ </div>
179
+ </ng-template>
180
+ </iss-ctrl-dropdownlist>
181
+ <iss-validation-message-viewer [errors]="ctrl.errors" [showMessage]="!ctrl.untouched"/>
182
+ } @else {
183
+ <iss-field-viewer>
184
+ <label>{{ field.label() }}</label>
185
+ <p>{{ field.value }}</p>
186
+ </iss-field-viewer>
187
+ }
188
+ }
189
+ <mat-sidenav-container [hasBackdrop]="true">
190
+ <mat-sidenav #drawer [mode]="'over'" [position]="'start'" [autoFocus]="false">
191
+ <div class="main-sidenav">
192
+ <div class="sidenav-title bc-white">
193
+ <h3> Employee Information </h3>
194
+ <ds-icon icon="close" class="fc-black fs-20 p-3 cursor-pointer" (click)="drawer.close()"></ds-icon>
195
+ </div>
196
+ <div class="sidenav-body p-0">
197
+ <div class="d-flex flex-column align-items-center gap-3 sidenav-user bc-off-white text-center">
198
+ <ds-avatar [attr.image]="userImage()" [attr.label]="userData?.name"></ds-avatar>
199
+ @if (userData?.employeeNumber) {
200
+ <div class="d-flex flex-column gap-1">
201
+ <h4 class="fs-16 fc-black fw-medium mb-0">{{ userData?.name }}</h4>
202
+ @if (!userData?.job?.name) {
203
+ <h6 class="fs-12 fc-dark-gray fw-normal mb-0">{{ userData?.position?.name }}</h6>
204
+ }
205
+ @if (!userData?.position?.name) {
206
+ <h6 class="fs-12 fc-dark-gray fw-normal mb-0">{{ userData?.job?.name }}</h6>
207
+ }
208
+ </div>
209
+ }
210
+ <div class="d-flex flex-wrap gap-2">
211
+ <div class="fs-12 fc-black d-flex align-items-center gap-2 box-shadow bc-white radius-4 p-2 profile-box">
212
+ <ds-icon icon="mail-o" class="fc-coral fs-20"></ds-icon>
213
+ <a [href]="'mailTo:' + userData?.email" class="fc-black">{{ userData?.email }}</a>
214
+ </div>
215
+ @if (userData?.contact?.mobile) {
216
+ <div class="fs-12 fc-black d-flex align-items-center gap-2 box-shadow bc-white radius-4 p-2 profile-box">
217
+ <ds-icon icon="phone" class="fc-coral fs-20"></ds-icon>
218
+ <a [href]="'tel:' + userData?.contact?.mobile" class="fc-black">
219
+ <bdi>{{ userData?.contact?.mobile }}</bdi>
220
+ </a>
221
+ </div>
222
+ }
223
+ </div>
224
+ </div>
225
+ </div>
226
+ </div>
227
+ </mat-sidenav>
228
+ </mat-sidenav-container>
228
229
  `, schemas: [CUSTOM_ELEMENTS_SCHEMA], styles: [".mat-drawer{position:fixed;left:0}\n"] }]
229
230
  }], ctorParameters: () => [] });
230
231
 
231
232
  export { UserPickerField };
232
- //# sourceMappingURL=iss-ctrl-user-picker.field-BH63sZ-X.mjs.map
233
+ //# sourceMappingURL=iss-ctrl-user-picker.field-DpmYCfpD.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"iss-ctrl-user-picker.field-DpmYCfpD.mjs","sources":["../../../projects/iss/src/components/controls/user-picker/user-picker.field.ts"],"sourcesContent":["import { Component, CUSTOM_ELEMENTS_SCHEMA, inject, signal } from \"@angular/core\";\nimport { takeUntilDestroyed } from \"@angular/core/rxjs-interop\";\nimport { MatSidenav, MatSidenavContainer } from \"@angular/material/sidenav\";\nimport { debounceTime, distinctUntilChanged, map, Subject, switchMap } from \"rxjs\";\nimport { FieldViewer } from \"../../shared/field-viewer\";\nimport { ValidationMessage } from \"../../shared/validation-message\";\nimport { FieldBase } from \"../base/field-base\";\nimport { DropdownlistControl } from \"iss-ctrl/dropdownlist\";\nimport { Employee } from \"./employee\";\nimport { VIEW_PROVIDER } from \"../../../shared/constants/view-provider.const\";\n\n/**\n * `<iss-user-picker>` — employee lookup, searched against the directory API.\n *\n * Rendered by the outlet for fields of type `userPicker`. In `edit` mode it renders\n * {@link DropdownlistControl} — always multi-select — over the employees returned by the search;\n * in `view` mode the stored value as plain text. Selecting a user opens a details drawer.\n *\n * ### Supported `config` keys\n * | Key | Type | Description |\n * | --- | --- | --- |\n * | `min` | `number` | Minimum number of users required. |\n * | `max` | `number` | Maximum number of users allowed. |\n * | `readonly` | `boolean` | Shows the value but blocks interaction. |\n *\n * ### Other field members used\n * `label()` · `value` · `ctrlJsonValue()`\n *\n * Every field also honours `visible`, `mode`, `validation`, `asyncValidation` and\n * `events` — see {@link IssField} for the full model and {@link FieldConfig} for all keys.\n *\n * @example\n * ```json\n * { \"name\": \"approvers\", \"type\": \"userPicker\", \"label\": \"Approvers\", \"config\": { \"max\": 3 } }\n * ```\n */\n@Component({\n selector: \"iss-user-picker\",\n viewProviders: [VIEW_PROVIDER],\n imports: [\n DropdownlistControl,\n ValidationMessage,\n MatSidenav,\n MatSidenavContainer,\n FieldViewer\n ],\n template: `\n @if (field.visible()) {\n @if (field.mode() === \"edit\") {\n <iss-ctrl-dropdownlist\n [formControlName]=\"field.name\"\n [min]=\"field.config.min() ?? null\"\n [max]=\"field.config.max() ?? null\"\n [options]=\"options()\"\n [multiple]=\"true\"\n [readonly]=\"field.config.readonly() ?? false\"\n (onQueryChange)=\"search($event)\"\n (onChange)=\"updateField($event)\"\n >\n <label>{{ field.label() }}</label>\n <ng-template let-item #optionTemplate>\n <div class=\"d-flex align-items-center gap-2\">\n <ds-avatar size=\"x-small\" [attr.image]=\"item.image\"></ds-avatar>\n <span class=\"fs-14 fw-medium fc-black\">{{ item.name }}</span>\n </div>\n </ng-template>\n <ng-template let-item #cardViewerTemplate>\n <div (click)=\"showUserData(item);drawer.open()\">\n {{ item.name }}\n </div>\n </ng-template>\n </iss-ctrl-dropdownlist>\n <iss-validation-message-viewer [errors]=\"ctrl.errors\" [showMessage]=\"!ctrl.untouched\"/>\n } @else {\n <iss-field-viewer>\n <label>{{ field.label() }}</label>\n <p>{{ field.value }}</p>\n </iss-field-viewer>\n }\n }\n <mat-sidenav-container [hasBackdrop]=\"true\">\n <mat-sidenav #drawer [mode]=\"'over'\" [position]=\"'start'\" [autoFocus]=\"false\">\n <div class=\"main-sidenav\">\n <div class=\"sidenav-title bc-white\">\n <h3> Employee Information </h3>\n <ds-icon icon=\"close\" class=\"fc-black fs-20 p-3 cursor-pointer\" (click)=\"drawer.close()\"></ds-icon>\n </div>\n <div class=\"sidenav-body p-0\">\n <div class=\"d-flex flex-column align-items-center gap-3 sidenav-user bc-off-white text-center\">\n <ds-avatar [attr.image]=\"userImage()\" [attr.label]=\"userData?.name\"></ds-avatar>\n @if (userData?.employeeNumber) {\n <div class=\"d-flex flex-column gap-1\">\n <h4 class=\"fs-16 fc-black fw-medium mb-0\">{{ userData?.name }}</h4>\n @if (!userData?.job?.name) {\n <h6 class=\"fs-12 fc-dark-gray fw-normal mb-0\">{{ userData?.position?.name }}</h6>\n }\n @if (!userData?.position?.name) {\n <h6 class=\"fs-12 fc-dark-gray fw-normal mb-0\">{{ userData?.job?.name }}</h6>\n }\n </div>\n }\n <div class=\"d-flex flex-wrap gap-2\">\n <div class=\"fs-12 fc-black d-flex align-items-center gap-2 box-shadow bc-white radius-4 p-2 profile-box\">\n <ds-icon icon=\"mail-o\" class=\"fc-coral fs-20\"></ds-icon>\n <a [href]=\"'mailTo:' + userData?.email\" class=\"fc-black\">{{ userData?.email }}</a>\n </div>\n @if (userData?.contact?.mobile) {\n <div class=\"fs-12 fc-black d-flex align-items-center gap-2 box-shadow bc-white radius-4 p-2 profile-box\">\n <ds-icon icon=\"phone\" class=\"fc-coral fs-20\"></ds-icon>\n <a [href]=\"'tel:' + userData?.contact?.mobile\" class=\"fc-black\">\n <bdi>{{ userData?.contact?.mobile }}</bdi>\n </a>\n </div>\n }\n </div>\n </div>\n </div>\n </div>\n </mat-sidenav>\n </mat-sidenav-container>\n `,\n styles: `\n .mat-drawer {\n position: fixed;\n left: 0;\n }`,\n schemas: [CUSTOM_ELEMENTS_SCHEMA]\n})\nexport class UserPickerField extends FieldBase {\n userImageHost = \"https://igateapp.stc.com.sa\";\n employeeService = inject(Employee);\n options: any = signal([]);\n userData: any;\n #query: Subject<string> = new Subject<string>();\n\n constructor() {\n super();\n this.#query.pipe(\n debounceTime(300),\n distinctUntilChanged(),\n // a new query cancels the request still in flight\n switchMap((query: string) => this.employeeService.search(query)),\n map((res: any) => {\n return res.map((user: any) => {\n user.value = user.email;\n user.label = user.name;\n return user;\n });\n }),\n takeUntilDestroyed(this.destroyRef)\n ).subscribe((res: any) => {\n this.options.set(res);\n });\n }\n\n userImage(): string | null {\n const image: string | undefined = this.userData?.profileImage ?? this.userData?.profileImageUrl;\n if (!image) {\n return null;\n }\n return image.startsWith(\"http\") ? image : this.userImageHost + image;\n }\n\n search(event: string) {\n this.#query.next(event);\n }\n\n updateField($event: string | FormData) {\n this.options.set([]);\n }\n\n showUserData(item: any) {\n this.userData = item;\n }\n}\n"],"names":[],"mappings":"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"}
@@ -1,2 +1,4 @@
1
- export { ak as ATTACHMENT_DOWNLOAD_URL, aj as ATTACHMENT_UPLOAD_RESPONSE_MAPPER, ai as ATTACHMENT_UPLOAD_URL, ao as ArabicNumberPipe, a1 as AttachmentViewer, ac as COMPONENTS, a7 as COUNTRIES, e as CheckboxControl, w as CheckboxField, Z as CheckboxViewer, f as ChipsControl, s as ChipsField, U as ChipsViewer, C as ControlBase, a9 as DATETIME_FORMAT, a8 as DATE_FORMAT_ADAPTER, a6 as DEFAULT_COUNTRY, D as DatePickerControl, G as DatePickerField, a4 as DatePickerTimeViewer, a3 as DatePickerViewer, h as DateRangePickerControl, K as DateRangePickerField, a5 as DateRangePickerViewer, i as DatetimePickerControl, J as DatetimePickerField, an as Droppable, E as Employee, ag as FIELD_DATA, F as FieldBase, ap as FieldDataInjector, b as FieldViewer, at as FileHandler, j as FilePickerControl, A as FilePickerField, aJ as FileValidators, d as FormEngine, az as HIJRI_LOCALE, aA as HIJRI_MONTH_NAMES, H as HOST, am as Hints, k as InputControl, p as InputField, N as InputViewer, au as IssDateAdapter, aI as IssValidators, L as Loader, M as MobileControl, v as MobileField, Y as MobileViewer, O as Outlet, P as PLACEHOLDER_REGEX, aa as PLATE_LETTERS, aw as Phone, l as PlateControl, z as PlateField, aq as PlateLetterPipe, a0 as PlateViewer, R as RadioControl, t as RadioField, W as RadioViewer, ad as SERVICES, S as SelectControl, u as SelectField, ar as SelectStatusPipe, X as SelectViewer, m as SlideToggleControl, y as SlideToggleField, $ as SlideToggleViewer, T as TextareaControl, q as TextareaField, Q as TextareaViewer, n as TimePickerControl, B as TimePickerField, a2 as TimePickerViewer, aK as TimeValidator, o as ToggleButtonControl, x as ToggleButtonField, _ as ToggleButtonViewer, as as TranslatePipe, ah as UI_LANGUAGE, al as USER_SEARCH_API, ab as VALIDATION_MESSAGES, ae as VALIDATORS, V as VIEW_PROVIDER, a as ValidationMessage, ax as arrayFrom, aE as createHijriDate, ay as formatFileSize, aF as formatHijriDate, aD as getHijriDaysInMonth, aB as getHijriParts, g as getPropertyByPath, af as isActiveValidationRule, aG as parseHijriDate, av as provideIssDateAdapter, r as replacePlaceholders, aC as startOfHijriMonth, aH as toHijriDisplay } from './iss-ctrl-iss-ctrl-BKu6a5HF.mjs';
1
+ export { A as ArabicNumberPipe, C as COMPONENTS, E as Employee, j as FIELD_DATA, F as FieldBase, e as FieldDataInjector, b as FieldViewer, c as FileHandler, o as FileValidators, d as FormEngine, n as IssValidators, L as Loader, O as Outlet, P as PLACEHOLDER_REGEX, k as PlateLetterPipe, S as SERVICES, T as TimeValidator, f as VALIDATION_MESSAGES, h as VALIDATORS, V as VIEW_PROVIDER, a as ValidationMessage, l as arrayFrom, m as formatFileSize, g as getPropertyByPath, i as isActiveValidationRule, r as replacePlaceholders } from './iss-ctrl-iss-ctrl-BG-QWWdq.mjs';
2
+ export * from 'iss-ctrl/base';
3
+ export * from 'iss-ctrl/tokens';
2
4
  //# sourceMappingURL=iss-ctrl.mjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"iss-ctrl.mjs","sources":[],"sourcesContent":[],"names":[],"mappings":""}
1
+ {"version":3,"file":"iss-ctrl.mjs","sources":[],"sourcesContent":[],"names":[],"mappings":";;"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "iss-ctrl",
3
- "version": "0.0.21",
3
+ "version": "0.0.23",
4
4
  "peerDependencies": {
5
5
  "@angular/common": "^21.0.6",
6
6
  "@angular/core": "^21.0.6",
@@ -23,6 +23,74 @@
23
23
  ".": {
24
24
  "types": "./types/iss-ctrl.d.ts",
25
25
  "default": "./fesm2022/iss-ctrl.mjs"
26
+ },
27
+ "./base": {
28
+ "types": "./types/iss-ctrl-base.d.ts",
29
+ "default": "./fesm2022/iss-ctrl-base.mjs"
30
+ },
31
+ "./checkbox": {
32
+ "types": "./types/iss-ctrl-checkbox.d.ts",
33
+ "default": "./fesm2022/iss-ctrl-checkbox.mjs"
34
+ },
35
+ "./chips": {
36
+ "types": "./types/iss-ctrl-chips.d.ts",
37
+ "default": "./fesm2022/iss-ctrl-chips.mjs"
38
+ },
39
+ "./date-picker": {
40
+ "types": "./types/iss-ctrl-date-picker.d.ts",
41
+ "default": "./fesm2022/iss-ctrl-date-picker.mjs"
42
+ },
43
+ "./date-range-picker": {
44
+ "types": "./types/iss-ctrl-date-range-picker.d.ts",
45
+ "default": "./fesm2022/iss-ctrl-date-range-picker.mjs"
46
+ },
47
+ "./datetime-picker": {
48
+ "types": "./types/iss-ctrl-datetime-picker.d.ts",
49
+ "default": "./fesm2022/iss-ctrl-datetime-picker.mjs"
50
+ },
51
+ "./dropdownlist": {
52
+ "types": "./types/iss-ctrl-dropdownlist.d.ts",
53
+ "default": "./fesm2022/iss-ctrl-dropdownlist.mjs"
54
+ },
55
+ "./file-picker": {
56
+ "types": "./types/iss-ctrl-file-picker.d.ts",
57
+ "default": "./fesm2022/iss-ctrl-file-picker.mjs"
58
+ },
59
+ "./input": {
60
+ "types": "./types/iss-ctrl-input.d.ts",
61
+ "default": "./fesm2022/iss-ctrl-input.mjs"
62
+ },
63
+ "./mobile": {
64
+ "types": "./types/iss-ctrl-mobile.d.ts",
65
+ "default": "./fesm2022/iss-ctrl-mobile.mjs"
66
+ },
67
+ "./plate": {
68
+ "types": "./types/iss-ctrl-plate.d.ts",
69
+ "default": "./fesm2022/iss-ctrl-plate.mjs"
70
+ },
71
+ "./radio": {
72
+ "types": "./types/iss-ctrl-radio.d.ts",
73
+ "default": "./fesm2022/iss-ctrl-radio.mjs"
74
+ },
75
+ "./slide-toggle": {
76
+ "types": "./types/iss-ctrl-slide-toggle.d.ts",
77
+ "default": "./fesm2022/iss-ctrl-slide-toggle.mjs"
78
+ },
79
+ "./textarea": {
80
+ "types": "./types/iss-ctrl-textarea.d.ts",
81
+ "default": "./fesm2022/iss-ctrl-textarea.mjs"
82
+ },
83
+ "./time-picker": {
84
+ "types": "./types/iss-ctrl-time-picker.d.ts",
85
+ "default": "./fesm2022/iss-ctrl-time-picker.mjs"
86
+ },
87
+ "./toggle-button": {
88
+ "types": "./types/iss-ctrl-toggle-button.d.ts",
89
+ "default": "./fesm2022/iss-ctrl-toggle-button.mjs"
90
+ },
91
+ "./tokens": {
92
+ "types": "./types/iss-ctrl-tokens.d.ts",
93
+ "default": "./fesm2022/iss-ctrl-tokens.mjs"
26
94
  }
27
95
  },
28
96
  "type": "module"