@apexara/ng-components 1.0.5 → 1.0.6-test.2
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/README.md +298 -25
- package/fesm2022/apexara-ng-components-checkbox.mjs +53 -11
- package/fesm2022/apexara-ng-components-checkbox.mjs.map +1 -1
- package/fesm2022/apexara-ng-components-chip.mjs +5 -2
- package/fesm2022/apexara-ng-components-chip.mjs.map +1 -1
- package/fesm2022/apexara-ng-components-datepicker.mjs +65 -70
- package/fesm2022/apexara-ng-components-datepicker.mjs.map +1 -1
- package/fesm2022/apexara-ng-components-dialog.mjs +2 -2
- package/fesm2022/apexara-ng-components-dialog.mjs.map +1 -1
- package/fesm2022/apexara-ng-components-drawer.mjs +12 -22
- package/fesm2022/apexara-ng-components-drawer.mjs.map +1 -1
- package/fesm2022/apexara-ng-components-expander.mjs +3 -15
- package/fesm2022/apexara-ng-components-expander.mjs.map +1 -1
- package/fesm2022/apexara-ng-components-image.mjs +3 -5
- package/fesm2022/apexara-ng-components-image.mjs.map +1 -1
- package/fesm2022/apexara-ng-components-input.mjs +19 -19
- package/fesm2022/apexara-ng-components-input.mjs.map +1 -1
- package/fesm2022/apexara-ng-components-listbox.mjs +41 -33
- package/fesm2022/apexara-ng-components-listbox.mjs.map +1 -1
- package/fesm2022/apexara-ng-components-more-options.mjs +132 -0
- package/fesm2022/apexara-ng-components-more-options.mjs.map +1 -0
- package/fesm2022/apexara-ng-components-radiobutton.mjs +2 -2
- package/fesm2022/apexara-ng-components-radiobutton.mjs.map +1 -1
- package/fesm2022/apexara-ng-components-select.mjs +96 -79
- package/fesm2022/apexara-ng-components-select.mjs.map +1 -1
- package/fesm2022/apexara-ng-components-snackbar.mjs +2 -44
- package/fesm2022/apexara-ng-components-snackbar.mjs.map +1 -1
- package/fesm2022/apexara-ng-components-table.mjs +175 -102
- package/fesm2022/apexara-ng-components-table.mjs.map +1 -1
- package/fesm2022/apexara-ng-components-textarea.mjs +20 -17
- package/fesm2022/apexara-ng-components-textarea.mjs.map +1 -1
- package/package.json +5 -2
- package/types/apexara-ng-components-checkbox.d.ts +17 -8
- package/types/apexara-ng-components-chip.d.ts +7 -1
- package/types/apexara-ng-components-datepicker.d.ts +4 -6
- package/types/apexara-ng-components-drawer.d.ts +3 -4
- package/types/apexara-ng-components-image.d.ts +2 -3
- package/types/apexara-ng-components-input.d.ts +6 -8
- package/types/apexara-ng-components-listbox.d.ts +7 -8
- package/types/apexara-ng-components-more-options.d.ts +34 -0
- package/types/apexara-ng-components-select.d.ts +13 -10
- package/types/apexara-ng-components-snackbar.d.ts +0 -3
- package/types/apexara-ng-components-table.d.ts +46 -23
- package/types/apexara-ng-components-textarea.d.ts +6 -8
package/README.md
CHANGED
|
@@ -28,6 +28,7 @@ npm install @apexara/ng-components
|
|
|
28
28
|
[🔽 Table](#apex-table-component) <br>
|
|
29
29
|
[🔽 Textarea](#apex-textarea-component) <br>
|
|
30
30
|
[🔽 Tooltip](#apex-tooltip-component) <br>
|
|
31
|
+
[🔽 More Options](#apex-more-options-component) <br>
|
|
31
32
|
|
|
32
33
|
|
|
33
34
|
-----------------------------------------------------------------
|
|
@@ -146,17 +147,29 @@ with a APEX Tooltip.
|
|
|
146
147
|
> formControlName: 'checkboxControl',
|
|
147
148
|
> }
|
|
148
149
|
>
|
|
150
|
+
> public checkboxWithErrorOptions: ApexCheckboxOptions = {
|
|
151
|
+
> formGroup: this.formGroup,
|
|
152
|
+
> formControlName: 'checkboxControl',
|
|
153
|
+
> errors: {
|
|
154
|
+
> required: 'You must accept the terms and conditions',
|
|
155
|
+
> },
|
|
156
|
+
> }
|
|
157
|
+
>
|
|
149
158
|
>}
|
|
150
159
|
>```
|
|
151
160
|
>**`parent.component.html`**
|
|
152
161
|
>```html
|
|
153
|
-
><apex-checkbox
|
|
162
|
+
><apex-checkbox
|
|
154
163
|
> [checked]="true"
|
|
155
164
|
> [disabled]="false"
|
|
156
165
|
> [options]="checkboxOptions"
|
|
157
166
|
> [tooltip]="'example tooltip text'">
|
|
158
167
|
></apex-checkbox>
|
|
159
168
|
>
|
|
169
|
+
><!-- With error validation -->
|
|
170
|
+
><apex-checkbox [options]="checkboxWithErrorOptions">
|
|
171
|
+
> I accept the terms and conditions
|
|
172
|
+
></apex-checkbox>
|
|
160
173
|
>```
|
|
161
174
|
### Inputs
|
|
162
175
|
|
|
@@ -169,13 +182,20 @@ with a APEX Tooltip.
|
|
|
169
182
|
>#### tooltip
|
|
170
183
|
>a text that if present triggers a tooltip component with it inside.
|
|
171
184
|
|
|
172
|
-
>####
|
|
173
|
-
>Refference to the FormGroup that the apex-checkbox will handle
|
|
185
|
+
>#### options - ApexCheckboxOptions
|
|
174
186
|
|
|
175
|
-
|
|
176
|
-
>
|
|
187
|
+
>**formGroup?: FormGroup**: Reference to the FormGroup that the apex-checkbox will handle.
|
|
188
|
+
>
|
|
189
|
+
>**formControlName?: string**: Reference to the name of the control that we will access in the FormGroup.
|
|
190
|
+
>
|
|
191
|
+
>**errors?: ApexCheckboxErrors**: A map of validation error keys to error message strings. When the control is touched and invalid, the first matching error message is displayed below the checkbox.
|
|
192
|
+
>```typescript
|
|
193
|
+
>errors: {
|
|
194
|
+
> required: 'This field is required',
|
|
195
|
+
>}
|
|
196
|
+
>```
|
|
177
197
|
|
|
178
|
-
### CSS Variables
|
|
198
|
+
### CSS Variables
|
|
179
199
|
>Here are all the CSS variables (and their default values) you can set when using apex-checkbox:
|
|
180
200
|
>
|
|
181
201
|
>```css
|
|
@@ -188,8 +208,9 @@ with a APEX Tooltip.
|
|
|
188
208
|
> --apex-checkbox-wrapper-border-color: transparent;
|
|
189
209
|
> --apex-checkbox-arrow-color: #FFFFFF;
|
|
190
210
|
> --apex-checkbox-tooltip-icon-stroke: #FFFFFF;
|
|
211
|
+
> --apex-checkbox-error-color: #F96138;
|
|
191
212
|
>
|
|
192
|
-
> --apex-checkbox-border-color: #E9E9E9;
|
|
213
|
+
> --apex-checkbox-border-color: #E9E9E9;
|
|
193
214
|
> --apex-checkbox-border-hover-color: #F96138;
|
|
194
215
|
> --apex-checkbox-outline-color: none;
|
|
195
216
|
>
|
|
@@ -204,38 +225,83 @@ with a APEX Tooltip.
|
|
|
204
225
|
-----------------------------------------------------------------
|
|
205
226
|
|
|
206
227
|
# APEX Chip component
|
|
207
|
-
A simple visual container for displaying a text, state, etc.
|
|
228
|
+
A simple visual container for displaying a text, state, etc. Supports optional left and right icons and an optional close button.
|
|
208
229
|
|
|
209
230
|
## Usage
|
|
210
231
|
>**`parent.component.ts`**
|
|
211
232
|
>```typescript
|
|
212
|
-
>import { ApexChipComponent }
|
|
233
|
+
>import { ApexChipComponent, ApexChipOptions }
|
|
213
234
|
>from '@apexara/ng-components/chip';
|
|
214
235
|
>
|
|
215
236
|
>@Component({
|
|
216
237
|
> imports: [ ApexChipComponent ]
|
|
217
238
|
>})
|
|
218
239
|
>
|
|
219
|
-
>export class ChipExampleComponent {
|
|
240
|
+
>export class ChipExampleComponent {
|
|
241
|
+
>
|
|
242
|
+
> public chipOptions: ApexChipOptions = {
|
|
243
|
+
> iconLeft: 'icon.svg',
|
|
244
|
+
> iconRight: 'arrow.svg',
|
|
245
|
+
> };
|
|
246
|
+
>
|
|
247
|
+
> public chipClose(): void {
|
|
248
|
+
> // handle close
|
|
249
|
+
> }
|
|
250
|
+
>
|
|
251
|
+
>}
|
|
220
252
|
>
|
|
221
253
|
>```
|
|
222
254
|
>**`parent.component.html`**
|
|
223
255
|
>```html
|
|
224
|
-
|
|
225
|
-
>
|
|
256
|
+
><!-- Basic chip -->
|
|
257
|
+
><apex-chip>Default</apex-chip>
|
|
258
|
+
>
|
|
259
|
+
><!-- With close icon -->
|
|
260
|
+
><apex-chip
|
|
226
261
|
> [closeIcon]="true"
|
|
227
262
|
> (closeChange)="chipClose()">
|
|
228
|
-
>
|
|
263
|
+
> Closeable
|
|
264
|
+
></apex-chip>
|
|
265
|
+
>
|
|
266
|
+
><!-- With left icon -->
|
|
267
|
+
><apex-chip [options]="{ iconLeft: 'icon.svg' }">With Left Icon</apex-chip>
|
|
268
|
+
>
|
|
269
|
+
><!-- With right icon -->
|
|
270
|
+
><apex-chip [options]="{ iconRight: 'arrow.svg' }">With Right Icon</apex-chip>
|
|
271
|
+
>
|
|
272
|
+
><!-- With both icons and close -->
|
|
273
|
+
><apex-chip
|
|
274
|
+
> [options]="chipOptions"
|
|
275
|
+
> [closeIcon]="true"
|
|
276
|
+
> (closeChange)="chipClose()">
|
|
277
|
+
> Full Featured
|
|
229
278
|
></apex-chip>
|
|
230
279
|
>```
|
|
231
280
|
>
|
|
232
281
|
|
|
282
|
+
### ApexChipOptions
|
|
283
|
+
>```typescript
|
|
284
|
+
>interface ApexChipOptions {
|
|
285
|
+
> iconLeft?: string; // SVG filename relative to assets/img/
|
|
286
|
+
> iconRight?: string; // SVG filename relative to assets/img/
|
|
287
|
+
>}
|
|
288
|
+
>```
|
|
289
|
+
|
|
233
290
|
### Inputs
|
|
291
|
+
>#### options
|
|
292
|
+
>ApexChipOptions object to configure optional left and right icons. Icon files are resolved from the `assets/img/` directory.
|
|
293
|
+
|
|
234
294
|
>#### closeIcon
|
|
235
295
|
>boolean that triggers an X icon that has the closeChange event emitter attached.
|
|
236
296
|
|
|
297
|
+
### Outputs
|
|
237
298
|
>#### closeChange
|
|
238
|
-
>event emitter
|
|
299
|
+
>event emitter triggered when the close icon is clicked.
|
|
300
|
+
|
|
301
|
+
### Layout Order
|
|
302
|
+
>When all features are enabled, the chip renders in this order:
|
|
303
|
+
>
|
|
304
|
+
>`[ left icon ] [ text ] [ right icon ] [ close X ]`
|
|
239
305
|
|
|
240
306
|
### CSS Variables
|
|
241
307
|
>Here all the available CSS variables (and their default values) you can set when using apex-chip:
|
|
@@ -244,11 +310,17 @@ A simple visual container for displaying a text, state, etc.
|
|
|
244
310
|
>apex-chip {
|
|
245
311
|
> /* Sizes: */
|
|
246
312
|
> --apex-chip-font-size: 12px;
|
|
313
|
+
> --apex-chip-icon-size: 16px;
|
|
314
|
+
> --apex-chip-icon-spacing: 6px;
|
|
247
315
|
>
|
|
248
316
|
> /* Colors, Fills, Strokes: */
|
|
249
317
|
> --apex-chip-color: #FFFFFF;
|
|
250
318
|
> --apex-chip-background-color: #0B1222;
|
|
251
319
|
> --apex-chip-icon-color: #FFFFFF;
|
|
320
|
+
> --apex-chip-left-icon-fill: #FFFFFF;
|
|
321
|
+
> --apex-chip-left-icon-stroke: #ffffff00;
|
|
322
|
+
> --apex-chip-right-icon-fill: #FFFFFF;
|
|
323
|
+
> --apex-chip-right-icon-stroke: #ffffff00;
|
|
252
324
|
>}
|
|
253
325
|
>```
|
|
254
326
|
|
|
@@ -878,8 +950,8 @@ Simple styled radio-button that can accept a formGroup and a control.
|
|
|
878
950
|
> public selectOptions: ApexSelectOptions = {
|
|
879
951
|
> label: 'Example label',
|
|
880
952
|
> data: [
|
|
881
|
-
> { label: 'Any string', value: any },
|
|
882
|
-
> { label: '', value: any },
|
|
953
|
+
> { label: 'Any string', value: any, icon: 'icon.svg' },
|
|
954
|
+
> { label: '', value: any, icon: 'write.svg' },
|
|
883
955
|
> { label: '', value: any },
|
|
884
956
|
> ],
|
|
885
957
|
> tooltip: 'tooltip text',
|
|
@@ -969,6 +1041,14 @@ Simple styled radio-button that can accept a formGroup and a control.
|
|
|
969
1041
|
> --apex-select-dropdown-border-color: #E9E9E9;
|
|
970
1042
|
> --apex-select-dropdown-background-color: #FFFFFF;
|
|
971
1043
|
>
|
|
1044
|
+
> /* Option icons (per-item icons in dropdown): */
|
|
1045
|
+
> --apex-select-option-icon-size: 20px;
|
|
1046
|
+
> --apex-select-option-icon-spacing: 10px;
|
|
1047
|
+
> --apex-select-option-icon-fill: #5D6068;
|
|
1048
|
+
> --apex-select-option-icon-stroke: #ffffff00;
|
|
1049
|
+
> --apex-select-option-icon-selected-fill: #F96138;
|
|
1050
|
+
> --apex-select-option-icon-selected-stroke: #ffffff00;
|
|
1051
|
+
>
|
|
972
1052
|
>/* Note: When you want to setup the color of your icon
|
|
973
1053
|
> you should experiment with both these variables or consider
|
|
974
1054
|
> using the one your icon is based on. */
|
|
@@ -1543,18 +1623,35 @@ Two types of tables are available. One with local data and local sorting & filte
|
|
|
1543
1623
|
>
|
|
1544
1624
|
>**class?: string | { [key: string]: string }**: Custom CSS classes for styling the column.
|
|
1545
1625
|
>
|
|
1626
|
+
>**change?: string**: Row property path for a percentage change value. When set, an inline chip appears next to the cell value showing the change (e.g., "+6.2%") — green for positive, red for negative. Works with Text, Number, Currency, and NumberMath column types.
|
|
1627
|
+
>
|
|
1628
|
+
>**listOptions?: ApexTableListOptions**: Groups list column display options into a single object.
|
|
1629
|
+
>- `label?: string` — the property name on each array item to use as the display label (e.g., `'name'`).
|
|
1630
|
+
>- `max?: number` — the maximum number of items to show before the overflow badge. Default is `3`.
|
|
1631
|
+
>
|
|
1632
|
+
>**cellOptions?: ApexTableCellOptions**: Groups cell-level display options (icon, icon position, color) into a single object.
|
|
1633
|
+
>
|
|
1634
|
+
>```typescript
|
|
1635
|
+
>export interface ApexTableCellOptions {
|
|
1636
|
+
> icon?: string | { [key: string]: string }; // static icon or value-to-icon map
|
|
1637
|
+
> iconPosition?: 'left' | 'right'; // default: 'left'
|
|
1638
|
+
> color?: { [key: string]: string }; // value-to-color map for text color
|
|
1639
|
+
>}
|
|
1640
|
+
>```
|
|
1641
|
+
>
|
|
1546
1642
|
|
|
1547
1643
|
>#### columnType - ApexTableColumnType
|
|
1548
|
-
>```typescript
|
|
1644
|
+
>```typescript
|
|
1549
1645
|
>export enum ApexTableColumnType {
|
|
1550
|
-
> Text,
|
|
1551
|
-
> Date,
|
|
1552
|
-
> Currency,
|
|
1553
|
-
> Chip,
|
|
1554
|
-
> Checkbox,
|
|
1555
|
-
> Number,
|
|
1646
|
+
> Text, // A standard text column
|
|
1647
|
+
> Date, // A column for displaying dates
|
|
1648
|
+
> Currency, // A column for displaying currencies
|
|
1649
|
+
> Chip, // A column for displaying chip components
|
|
1650
|
+
> Checkbox, // A column for displaying checkboxes
|
|
1651
|
+
> Number, // A column for displaying numbers
|
|
1556
1652
|
> NumberMath, // A column for displaying combined properties' values numbers with additional addition, subtraction, multiplication, division logic.
|
|
1557
|
-
> Actions,
|
|
1653
|
+
> Actions, // A column for action buttons
|
|
1654
|
+
> List, // A column for displaying arrays with overflow badge
|
|
1558
1655
|
>}
|
|
1559
1656
|
>```
|
|
1560
1657
|
>
|
|
@@ -1571,7 +1668,90 @@ Two types of tables are available. One with local data and local sorting & filte
|
|
|
1571
1668
|
>Number Column: Displays numbers with optional prefix and suffix. This column type also supports calculations based on the numeric values.
|
|
1572
1669
|
>
|
|
1573
1670
|
>Actions Column: Displays action buttons with dynamic visibility based on context.
|
|
1574
|
-
|
|
1671
|
+
>
|
|
1672
|
+
>List Column: Displays an array of objects as a formatted text string joined by " / " (e.g., "Miami / Orlando / Tampa"). When the array exceeds `listOptions.max` items, an overflow badge (+N) appears. Hovering the badge shows a tooltip with all remaining items.
|
|
1673
|
+
|
|
1674
|
+
### List Column Usage
|
|
1675
|
+
|
|
1676
|
+
>```typescript
|
|
1677
|
+
>// Data
|
|
1678
|
+
>public tableData = [
|
|
1679
|
+
> {
|
|
1680
|
+
> id: 1,
|
|
1681
|
+
> locations: [
|
|
1682
|
+
> { name: 'Miami' },
|
|
1683
|
+
> { name: 'Orlando' },
|
|
1684
|
+
> { name: 'Tampa' },
|
|
1685
|
+
> { name: 'Jacksonville' },
|
|
1686
|
+
> { name: 'Tallahassee' }
|
|
1687
|
+
> ]
|
|
1688
|
+
> }
|
|
1689
|
+
>];
|
|
1690
|
+
>
|
|
1691
|
+
>// Column config
|
|
1692
|
+
>public tableColumns: ApexTableColumn[] = [
|
|
1693
|
+
> {
|
|
1694
|
+
> label: 'Locations',
|
|
1695
|
+
> value: 'locations',
|
|
1696
|
+
> type: ApexTableColumnType.List,
|
|
1697
|
+
> listOptions: {
|
|
1698
|
+
> label: 'name', // which property on each item to display
|
|
1699
|
+
> max: 3, // show first 3, then "+2" badge
|
|
1700
|
+
> },
|
|
1701
|
+
> width: '200px'
|
|
1702
|
+
> }
|
|
1703
|
+
>];
|
|
1704
|
+
>```
|
|
1705
|
+
>
|
|
1706
|
+
>This renders: **Miami / Orlando / Tampa** `+2`
|
|
1707
|
+
>
|
|
1708
|
+
>Hovering `+2` shows a tooltip with:
|
|
1709
|
+
>- Jacksonville
|
|
1710
|
+
>- Tallahassee
|
|
1711
|
+
|
|
1712
|
+
### List Column CSS Variables
|
|
1713
|
+
|
|
1714
|
+
>| Variable | Default | Description |
|
|
1715
|
+
>|---|---|---|
|
|
1716
|
+
>| `--apex-table-list-overflow-background` | `transparent` | Overflow badge background |
|
|
1717
|
+
>| `--apex-table-list-overflow-color` | `#FFA753` | Overflow badge text color |
|
|
1718
|
+
>| `--apex-table-list-overflow-border-color` | `#FFEFE1` | Overflow badge border color |
|
|
1719
|
+
|
|
1720
|
+
### Cell Icons
|
|
1721
|
+
|
|
1722
|
+
Cell icons allow you to display an icon next to the text in a cell. The icon can be static or mapped per value, making it useful for status indicators, engagement levels, etc.
|
|
1723
|
+
|
|
1724
|
+
>```typescript
|
|
1725
|
+
>// Column with value-mapped icons and colors
|
|
1726
|
+
>public columns: ApexTableColumn[] = [
|
|
1727
|
+
> {
|
|
1728
|
+
> label: 'Engagement',
|
|
1729
|
+
> value: 'engagement',
|
|
1730
|
+
> width: '120px',
|
|
1731
|
+
> cellOptions: {
|
|
1732
|
+
> icon: {
|
|
1733
|
+
> 'High': 'arrow-up.svg',
|
|
1734
|
+
> 'Medium': 'arrow-up-right.svg',
|
|
1735
|
+
> 'Low': 'arrow-down.svg'
|
|
1736
|
+
> },
|
|
1737
|
+
> color: {
|
|
1738
|
+
> 'High': '#26D280',
|
|
1739
|
+
> 'Medium': '#FFA753',
|
|
1740
|
+
> 'Low': '#FF4242'
|
|
1741
|
+
> }
|
|
1742
|
+
> }
|
|
1743
|
+
> }
|
|
1744
|
+
>];
|
|
1745
|
+
>```
|
|
1746
|
+
>
|
|
1747
|
+
>This renders an arrow icon + colored text per value:
|
|
1748
|
+
>- **High**: green arrow up + green text
|
|
1749
|
+
>- **Medium**: orange diagonal arrow + orange text
|
|
1750
|
+
>- **Low**: red arrow down + red text
|
|
1751
|
+
>
|
|
1752
|
+
>Use `iconPosition: 'right'` inside `cellOptions` to place the icon after the text.
|
|
1753
|
+
|
|
1754
|
+
>```typescript
|
|
1575
1755
|
>export interface Action {
|
|
1576
1756
|
> icon: string; // Icon source. example: ('assets/icons/icon.svg')
|
|
1577
1757
|
> label: string; // Label for icon. Tooltip pops on hover.
|
|
@@ -1889,3 +2069,96 @@ place it as a directive to a component:
|
|
|
1889
2069
|
[🔼 Back to top](#components)
|
|
1890
2070
|
|
|
1891
2071
|
-----------------------------------------------------------------
|
|
2072
|
+
|
|
2073
|
+
# APEX More Options Component
|
|
2074
|
+
A three-dot menu button that opens a dropdown with action items. Supports horizontal and vertical dot orientation, icon + label menu items, and custom dropdown content via ng-content.
|
|
2075
|
+
|
|
2076
|
+
## Usage
|
|
2077
|
+
>**`parent.component.ts`**
|
|
2078
|
+
>```typescript
|
|
2079
|
+
>import { ApexMoreOptionsComponent, ApexMoreOptionsItem }
|
|
2080
|
+
>from '@apexara/ng-components/more-options';
|
|
2081
|
+
>
|
|
2082
|
+
>@Component({
|
|
2083
|
+
> imports: [ ApexMoreOptionsComponent ]
|
|
2084
|
+
>})
|
|
2085
|
+
>
|
|
2086
|
+
>export class ExampleComponent {
|
|
2087
|
+
>
|
|
2088
|
+
> public menuItems: ApexMoreOptionsItem[] = [
|
|
2089
|
+
> { label: 'Edit', icon: 'write.svg', execute: () => console.log('edit') },
|
|
2090
|
+
> { label: 'View', icon: 'eye.svg', execute: () => console.log('view') },
|
|
2091
|
+
> { label: 'Delete', icon: 'delete.svg', disabled: true },
|
|
2092
|
+
> ];
|
|
2093
|
+
>
|
|
2094
|
+
>}
|
|
2095
|
+
>```
|
|
2096
|
+
>**`parent.component.html`**
|
|
2097
|
+
>```html
|
|
2098
|
+
><!-- Default (horizontal dots) with items -->
|
|
2099
|
+
><apex-more-options
|
|
2100
|
+
> [items]="menuItems"
|
|
2101
|
+
> (itemClick)="onItemClick($event)">
|
|
2102
|
+
></apex-more-options>
|
|
2103
|
+
>
|
|
2104
|
+
><!-- Vertical dots -->
|
|
2105
|
+
><apex-more-options
|
|
2106
|
+
> [items]="menuItems"
|
|
2107
|
+
> [vertical]="true">
|
|
2108
|
+
></apex-more-options>
|
|
2109
|
+
>
|
|
2110
|
+
><!-- Custom dropdown content (no items) -->
|
|
2111
|
+
><apex-more-options>
|
|
2112
|
+
> <div style="padding: 16px;">Any custom content here</div>
|
|
2113
|
+
></apex-more-options>
|
|
2114
|
+
>```
|
|
2115
|
+
|
|
2116
|
+
### ApexMoreOptionsItem
|
|
2117
|
+
>```typescript
|
|
2118
|
+
>interface ApexMoreOptionsItem {
|
|
2119
|
+
> icon?: string; // SVG filename relative to assets/img/
|
|
2120
|
+
> label: string;
|
|
2121
|
+
> execute?: () => void;
|
|
2122
|
+
> disabled?: boolean;
|
|
2123
|
+
>}
|
|
2124
|
+
>```
|
|
2125
|
+
|
|
2126
|
+
### Inputs
|
|
2127
|
+
>#### items
|
|
2128
|
+
>Array of `ApexMoreOptionsItem` objects defining the dropdown menu actions. When empty, the component falls back to projecting `<ng-content>` for custom dropdown content.
|
|
2129
|
+
|
|
2130
|
+
>#### vertical
|
|
2131
|
+
>Boolean that rotates the three-dot icon 90 degrees for vertical orientation. Default is `false` (horizontal).
|
|
2132
|
+
|
|
2133
|
+
### Outputs
|
|
2134
|
+
>#### itemClick
|
|
2135
|
+
>Event emitter that fires the clicked `ApexMoreOptionsItem` when a menu item is selected.
|
|
2136
|
+
|
|
2137
|
+
### CSS Variables
|
|
2138
|
+
>Here are all the available CSS variables (and their default values) you can set when using apex-more-options:
|
|
2139
|
+
>
|
|
2140
|
+
>```css
|
|
2141
|
+
>apex-more-options {
|
|
2142
|
+
> /* Trigger button: */
|
|
2143
|
+
> --apex-more-options-trigger-size: 32px;
|
|
2144
|
+
> --apex-more-options-trigger-border-radius: 8px;
|
|
2145
|
+
> --apex-more-options-trigger-background: transparent;
|
|
2146
|
+
> --apex-more-options-trigger-hover-background: #F7F8FB;
|
|
2147
|
+
> --apex-more-options-trigger-border-color: #E9E9E9;
|
|
2148
|
+
> --apex-more-options-icon-fill: #000000;
|
|
2149
|
+
>
|
|
2150
|
+
> /* Dropdown: */
|
|
2151
|
+
> --apex-more-options-dropdown-background: #FFFFFF;
|
|
2152
|
+
> --apex-more-options-dropdown-border-radius: 8px;
|
|
2153
|
+
> --apex-more-options-dropdown-box-shadow: 0px 4px 8px 0px rgba(214, 214, 214, 0.35);
|
|
2154
|
+
>
|
|
2155
|
+
> /* Menu items: */
|
|
2156
|
+
> --apex-more-options-item-height: 44px;
|
|
2157
|
+
> --apex-more-options-item-hover-background: #F3F3F3;
|
|
2158
|
+
> --apex-more-options-item-color: #0B1222;
|
|
2159
|
+
> --apex-more-options-item-icon-fill: #5D6068;
|
|
2160
|
+
> --apex-more-options-item-icon-stroke: #ffffff00;
|
|
2161
|
+
>}
|
|
2162
|
+
>```
|
|
2163
|
+
|
|
2164
|
+
[🔼 Back to top](#components)
|
|
@@ -1,39 +1,78 @@
|
|
|
1
1
|
import * as i0 from '@angular/core';
|
|
2
|
-
import { EventEmitter, Output, Input, Component } from '@angular/core';
|
|
2
|
+
import { EventEmitter, signal, HostListener, Output, Input, Component } from '@angular/core';
|
|
3
3
|
import { NgClass, NgTemplateOutlet } from '@angular/common';
|
|
4
4
|
import * as i1 from '@angular/forms';
|
|
5
|
-
import { FormsModule, ReactiveFormsModule } from '@angular/forms';
|
|
5
|
+
import { TouchedChangeEvent, FormsModule, ReactiveFormsModule } from '@angular/forms';
|
|
6
|
+
import { filter } from 'rxjs';
|
|
6
7
|
import { TooltipPosition, ApexTooltipDirective } from '@apexara/ng-components/tooltip';
|
|
7
8
|
|
|
8
9
|
class ApexCheckboxComponent {
|
|
9
|
-
constructor(
|
|
10
|
-
this.changeDetectorRef = changeDetectorRef;
|
|
10
|
+
constructor() {
|
|
11
11
|
this.checked = false;
|
|
12
12
|
this.disabled = false;
|
|
13
13
|
this.tooltip = null;
|
|
14
14
|
this.options = null;
|
|
15
15
|
this.clickChange = new EventEmitter();
|
|
16
16
|
this.tooltipPosition = TooltipPosition;
|
|
17
|
+
this.controlInvalid = signal(false, ...(ngDevMode ? [{ debugName: "controlInvalid" }] : []));
|
|
18
|
+
this.errorLabel = signal('', ...(ngDevMode ? [{ debugName: "errorLabel" }] : []));
|
|
19
|
+
this.control = null;
|
|
17
20
|
}
|
|
18
21
|
ngAfterViewInit() {
|
|
19
|
-
this.
|
|
22
|
+
this.setControl();
|
|
20
23
|
}
|
|
21
24
|
ngOnDestroy() {
|
|
22
25
|
if (this.controlSubscription) {
|
|
23
26
|
this.controlSubscription.unsubscribe();
|
|
24
27
|
}
|
|
25
28
|
}
|
|
29
|
+
onFocusOut() {
|
|
30
|
+
this.initChange();
|
|
31
|
+
}
|
|
26
32
|
onChange() {
|
|
27
33
|
this.clickChange.emit(this.checked);
|
|
28
34
|
}
|
|
29
|
-
|
|
35
|
+
setControl() {
|
|
30
36
|
if (!this.options || !this.options.formGroup || !this.options.formControlName || !this.options.formGroup.get(this.options.formControlName)) {
|
|
31
37
|
return;
|
|
32
38
|
}
|
|
33
|
-
this.
|
|
39
|
+
this.control = this.options.formGroup.controls[this.options.formControlName];
|
|
40
|
+
this.disabled = this.control.disabled;
|
|
41
|
+
this.controlSubscription = this.control.statusChanges.subscribe(() => {
|
|
42
|
+
this.initChange();
|
|
43
|
+
});
|
|
44
|
+
this.controlSubscription.add(this.control.events
|
|
45
|
+
.pipe(filter(event => event instanceof TouchedChangeEvent))
|
|
46
|
+
.subscribe(() => {
|
|
47
|
+
this.initChange();
|
|
48
|
+
}));
|
|
49
|
+
}
|
|
50
|
+
initChange() {
|
|
51
|
+
if (!this.control) {
|
|
52
|
+
return;
|
|
53
|
+
}
|
|
54
|
+
this.checkIfControlInvalid(this.control);
|
|
55
|
+
this.getErrorLabel();
|
|
56
|
+
}
|
|
57
|
+
checkIfControlInvalid(control) {
|
|
58
|
+
this.controlInvalid.set(control.touched && control.invalid);
|
|
59
|
+
}
|
|
60
|
+
getErrorLabel() {
|
|
61
|
+
this.errorLabel.set('');
|
|
62
|
+
const options = this.options;
|
|
63
|
+
const formGroup = options.formGroup;
|
|
64
|
+
const formControlName = options.formControlName;
|
|
65
|
+
if (formGroup && formControlName && options.errors && this.controlInvalid()) {
|
|
66
|
+
for (const error in options.errors) {
|
|
67
|
+
if (formGroup.controls[formControlName].hasError(error)) {
|
|
68
|
+
this.errorLabel.set(options.errors[error]);
|
|
69
|
+
return;
|
|
70
|
+
}
|
|
71
|
+
}
|
|
72
|
+
}
|
|
34
73
|
}
|
|
35
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.1.2", ngImport: i0, type: ApexCheckboxComponent, deps: [
|
|
36
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.1.2", type: ApexCheckboxComponent, isStandalone: true, selector: "apex-checkbox", inputs: { checked: "checked", disabled: "disabled", tooltip: "tooltip", options: "options" }, outputs: { clickChange: "clickChange" }, ngImport: i0, template: "@if (options && options.formGroup && options.formControlName) {\n <label class=\"checkbox\" [ngClass]=\"{ checked: options.formGroup.controls[options.formControlName].value, disabled }\" [formGroup]=\"options.formGroup\">\n <input #input type=\"checkbox\" name=\"checkbox\" [formControlName]=\"options.formControlName\"/>\n\n <div class=\"checkbox-svg\">\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"11\" height=\"8\" viewBox=\"0 0 11 8\" fill=\"none\">\n <path d=\"M1 4L4 7L10 1\" stroke=\"white\" stroke-width=\"2\" stroke-miterlimit=\"10\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/>\n </svg>\n </div>\n\n <ng-container *ngTemplateOutlet=\"content\"></ng-container>\n </label>\n} @else {\n <label class=\"checkbox\" [ngClass]=\"{ checked, disabled }\">\n <input #input type=\"checkbox\" name=\"checkbox\" [(ngModel)]=\"checked\" [disabled]=\"disabled\" (change)=\"onChange()\"/>\n\n <div class=\"checkbox-svg\">\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"11\" height=\"8\" viewBox=\"0 0 11 8\" fill=\"none\">\n <path d=\"M1 4L4 7L10 1\" stroke=\"white\" stroke-width=\"2\" stroke-miterlimit=\"10\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/>\n </svg>\n </div>\n\n \n <ng-container *ngTemplateOutlet=\"content\"></ng-container>\n </label>\n}\n\n<ng-template #content>\n <span>\n <ng-content></ng-content>\n </span>\n\n @if (tooltip) {\n <div class=\"tooltip-svg\">\n <svg [apexTooltip]=\"tooltip\" [tooltipPosition]=\"tooltipPosition.Above\" width=\"16\" height=\"16\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n <g stroke=\"#fff\">\n <path d=\"M8 14A6 6 0 1 0 8 2a6 6 0 0 0 0 12z\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/><path d=\"M7.5 7.5H8V11h.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/>\n <path d=\"M8.25 5.25a.25.25 0 1 1-.5 0 .25.25 0 0 1 .5 0z\" fill=\"#fff\"/>\n </g>\n </svg>\n </div>\n }\n</ng-template>\n", styles: [":host{touch-action:manipulation}.checkbox{display:flex;align-items:center;position:relative;cursor:pointer}.checkbox.disabled{opacity:var(--apex-checkbox-disabled-opacity, .5);cursor:not-allowed;pointer-events:none}.checkbox span{color:var(--apex-checkbox-text-color, #0B1222);text-wrap:wrap;word-break:break-all;font-size:var(--apex-checkbox-font-size, 14px)}.checkbox span:not(:empty){margin:0 4px 0 8px}.checkbox input[type=checkbox]{width:20px;min-width:20px;height:20px;display:block}.checkbox input[type=checkbox]{appearance:none;-webkit-appearance:none;-moz-appearance:none;position:relative;cursor:pointer;outline:var(--apex-checkbox-outline-color, none);background-color:var(--apex-checkbox-background-color, #F7F8FB);border:1px solid var(--apex-checkbox-border-color, #E9E9E9);border-radius:4px;transition:box-shadow .3s,border .25s;box-shadow:inset 0 0 0 0 var(--apex-checkbox-border-color);margin:0}.checkbox.checked input[type=checkbox]{box-shadow:inset 0 0 0 10px var(--apex-checkbox-box-shadow-color, #F96138)}.checkbox-svg{width:20px;height:20px;position:absolute}.checkbox .checkbox-svg svg{position:absolute;top:50%;left:50%;transform:translateY(-50%) translate(-50%)}.checkbox .checkbox-svg svg path{fill:none;stroke:none;pointer-events:none;stroke:transparent;stroke-linecap:round;stroke-linejoin:round}.checkbox.checked .checkbox-svg svg path{stroke:var(--apex-checkbox-arrow-color, #FFFFFF)}.tooltip-svg{width:16px;height:16px}.tooltip-svg g{stroke:var(--apex-checkbox-tooltip-icon-stroke, #FFFFFF)}\n"], dependencies: [{ kind: "directive", type: NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i1.CheckboxControlValueAccessor, selector: "input[type=checkbox][formControlName],input[type=checkbox][formControl],input[type=checkbox][ngModel]" }, { kind: "directive", type: i1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],[formArray],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i1.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "directive", type: NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "directive", type: ApexTooltipDirective, selector: "[apexTooltip]", inputs: ["apexTooltip", "tooltipPosition"] }, { kind: "ngmodule", type: ReactiveFormsModule }, { kind: "directive", type: i1.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "directive", type: i1.FormControlName, selector: "[formControlName]", inputs: ["formControlName", "disabled", "ngModel"], outputs: ["ngModelChange"] }] }); }
|
|
74
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.1.2", ngImport: i0, type: ApexCheckboxComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
75
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.1.2", type: ApexCheckboxComponent, isStandalone: true, selector: "apex-checkbox", inputs: { checked: "checked", disabled: "disabled", tooltip: "tooltip", options: "options" }, outputs: { clickChange: "clickChange" }, host: { listeners: { "focusout": "onFocusOut()" } }, ngImport: i0, template: "@if (options && options.formGroup && options.formControlName) {\n <label class=\"checkbox\" [ngClass]=\"{ checked: options.formGroup.controls[options.formControlName].value, disabled }\" [formGroup]=\"options.formGroup\">\n <input #input type=\"checkbox\" name=\"checkbox\" [formControlName]=\"options.formControlName\"/>\n\n <div class=\"checkbox-svg\">\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"11\" height=\"8\" viewBox=\"0 0 11 8\" fill=\"none\">\n <path d=\"M1 4L4 7L10 1\" stroke=\"white\" stroke-width=\"2\" stroke-miterlimit=\"10\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/>\n </svg>\n </div>\n\n <ng-container *ngTemplateOutlet=\"content\"></ng-container>\n </label>\n\n @if (options && options.errors) {\n <div class=\"footer\" [ngClass]=\"{ 'error': controlInvalid() }\">\n {{ errorLabel() }}\n </div>\n }\n} @else {\n <label class=\"checkbox\" [ngClass]=\"{ checked, disabled }\">\n <input #input type=\"checkbox\" name=\"checkbox\" [(ngModel)]=\"checked\" [disabled]=\"disabled\" (change)=\"onChange()\"/>\n\n <div class=\"checkbox-svg\">\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"11\" height=\"8\" viewBox=\"0 0 11 8\" fill=\"none\">\n <path d=\"M1 4L4 7L10 1\" stroke=\"white\" stroke-width=\"2\" stroke-miterlimit=\"10\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/>\n </svg>\n </div>\n\n \n <ng-container *ngTemplateOutlet=\"content\"></ng-container>\n </label>\n}\n\n<ng-template #content>\n <span>\n <ng-content></ng-content>\n </span>\n\n @if (tooltip) {\n <div class=\"tooltip-svg\">\n <svg [apexTooltip]=\"tooltip\" [tooltipPosition]=\"tooltipPosition.Above\" width=\"16\" height=\"16\" viewBox=\"0 0 16 16\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n <g stroke=\"#fff\">\n <path d=\"M8 14A6 6 0 1 0 8 2a6 6 0 0 0 0 12z\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/><path d=\"M7.5 7.5H8V11h.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/>\n <path d=\"M8.25 5.25a.25.25 0 1 1-.5 0 .25.25 0 0 1 .5 0z\" fill=\"#fff\"/>\n </g>\n </svg>\n </div>\n }\n</ng-template>\n", styles: [":host{touch-action:manipulation}.checkbox{display:flex;align-items:center;position:relative;cursor:pointer}.checkbox.disabled{opacity:var(--apex-checkbox-disabled-opacity, .5);cursor:not-allowed;pointer-events:none}.checkbox span{color:var(--apex-checkbox-text-color, #0B1222);text-wrap:wrap;word-break:break-all;font-size:var(--apex-checkbox-font-size, 14px)}.checkbox span:not(:empty){margin:0 4px 0 8px}.checkbox input[type=checkbox]{width:20px;min-width:20px;height:20px;display:block}.checkbox input[type=checkbox]{appearance:none;-webkit-appearance:none;-moz-appearance:none;position:relative;cursor:pointer;outline:var(--apex-checkbox-outline-color, none);background-color:var(--apex-checkbox-background-color, #F7F8FB);border:1px solid var(--apex-checkbox-border-color, #E9E9E9);border-radius:4px;transition:box-shadow .3s,border .25s;box-shadow:inset 0 0 0 0 var(--apex-checkbox-border-color);margin:0}.checkbox.checked input[type=checkbox]{box-shadow:inset 0 0 0 10px var(--apex-checkbox-box-shadow-color, #F96138)}.checkbox-svg{width:20px;height:20px;position:absolute}.checkbox .checkbox-svg svg{position:absolute;top:50%;left:50%;transform:translateY(-50%) translate(-50%)}.checkbox .checkbox-svg svg path{fill:none;stroke:none;pointer-events:none;stroke:transparent;stroke-linecap:round;stroke-linejoin:round}.checkbox.checked .checkbox-svg svg path{stroke:var(--apex-checkbox-arrow-color, #FFFFFF)}.tooltip-svg{width:16px;height:16px}.tooltip-svg g{stroke:var(--apex-checkbox-tooltip-icon-stroke, #FFFFFF)}.footer{height:14px;font-size:12px;margin-top:2px}.footer.error{color:var(--apex-checkbox-error-color, #F96138)}\n"], dependencies: [{ kind: "directive", type: NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i1.CheckboxControlValueAccessor, selector: "input[type=checkbox][formControlName],input[type=checkbox][formControl],input[type=checkbox][ngModel]" }, { kind: "directive", type: i1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],[formArray],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i1.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "directive", type: NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "directive", type: ApexTooltipDirective, selector: "[apexTooltip]", inputs: ["apexTooltip", "tooltipPosition"] }, { kind: "ngmodule", type: ReactiveFormsModule }, { kind: "directive", type: i1.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "directive", type: i1.FormControlName, selector: "[formControlName]", inputs: ["formControlName", "disabled", "ngModel"], outputs: ["ngModelChange"] }] }); }
|
|
37
76
|
}
|
|
38
77
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.1.2", ngImport: i0, type: ApexCheckboxComponent, decorators: [{
|
|
39
78
|
type: Component,
|
|
@@ -43,8 +82,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.1.2", ngImpor
|
|
|
43
82
|
NgTemplateOutlet,
|
|
44
83
|
ApexTooltipDirective,
|
|
45
84
|
ReactiveFormsModule,
|
|
46
|
-
], template: "@if (options && options.formGroup && options.formControlName) {\n <label class=\"checkbox\" [ngClass]=\"{ checked: options.formGroup.controls[options.formControlName].value, disabled }\" [formGroup]=\"options.formGroup\">\n <input #input type=\"checkbox\" name=\"checkbox\" [formControlName]=\"options.formControlName\"/>\n\n <div class=\"checkbox-svg\">\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"11\" height=\"8\" viewBox=\"0 0 11 8\" fill=\"none\">\n <path d=\"M1 4L4 7L10 1\" stroke=\"white\" stroke-width=\"2\" stroke-miterlimit=\"10\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/>\n </svg>\n </div>\n\n <ng-container *ngTemplateOutlet=\"content\"></ng-container>\n </label>\n} @else {\n <label class=\"checkbox\" [ngClass]=\"{ checked, disabled }\">\n <input #input type=\"checkbox\" name=\"checkbox\" [(ngModel)]=\"checked\" [disabled]=\"disabled\" (change)=\"onChange()\"/>\n\n <div class=\"checkbox-svg\">\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"11\" height=\"8\" viewBox=\"0 0 11 8\" fill=\"none\">\n <path d=\"M1 4L4 7L10 1\" stroke=\"white\" stroke-width=\"2\" stroke-miterlimit=\"10\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/>\n </svg>\n </div>\n\n \n <ng-container *ngTemplateOutlet=\"content\"></ng-container>\n </label>\n}\n\n<ng-template #content>\n <span>\n <ng-content></ng-content>\n </span>\n\n @if (tooltip) {\n <div class=\"tooltip-svg\">\n <svg [apexTooltip]=\"tooltip\" [tooltipPosition]=\"tooltipPosition.Above\" width=\"16\" height=\"16\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n <g stroke=\"#fff\">\n <path d=\"M8 14A6 6 0 1 0 8 2a6 6 0 0 0 0 12z\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/><path d=\"M7.5 7.5H8V11h.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/>\n <path d=\"M8.25 5.25a.25.25 0 1 1-.5 0 .25.25 0 0 1 .5 0z\" fill=\"#fff\"/>\n </g>\n </svg>\n </div>\n }\n</ng-template>\n", styles: [":host{touch-action:manipulation}.checkbox{display:flex;align-items:center;position:relative;cursor:pointer}.checkbox.disabled{opacity:var(--apex-checkbox-disabled-opacity, .5);cursor:not-allowed;pointer-events:none}.checkbox span{color:var(--apex-checkbox-text-color, #0B1222);text-wrap:wrap;word-break:break-all;font-size:var(--apex-checkbox-font-size, 14px)}.checkbox span:not(:empty){margin:0 4px 0 8px}.checkbox input[type=checkbox]{width:20px;min-width:20px;height:20px;display:block}.checkbox input[type=checkbox]{appearance:none;-webkit-appearance:none;-moz-appearance:none;position:relative;cursor:pointer;outline:var(--apex-checkbox-outline-color, none);background-color:var(--apex-checkbox-background-color, #F7F8FB);border:1px solid var(--apex-checkbox-border-color, #E9E9E9);border-radius:4px;transition:box-shadow .3s,border .25s;box-shadow:inset 0 0 0 0 var(--apex-checkbox-border-color);margin:0}.checkbox.checked input[type=checkbox]{box-shadow:inset 0 0 0 10px var(--apex-checkbox-box-shadow-color, #F96138)}.checkbox-svg{width:20px;height:20px;position:absolute}.checkbox .checkbox-svg svg{position:absolute;top:50%;left:50%;transform:translateY(-50%) translate(-50%)}.checkbox .checkbox-svg svg path{fill:none;stroke:none;pointer-events:none;stroke:transparent;stroke-linecap:round;stroke-linejoin:round}.checkbox.checked .checkbox-svg svg path{stroke:var(--apex-checkbox-arrow-color, #FFFFFF)}.tooltip-svg{width:16px;height:16px}.tooltip-svg g{stroke:var(--apex-checkbox-tooltip-icon-stroke, #FFFFFF)}\n"] }]
|
|
47
|
-
}],
|
|
85
|
+
], template: "@if (options && options.formGroup && options.formControlName) {\n <label class=\"checkbox\" [ngClass]=\"{ checked: options.formGroup.controls[options.formControlName].value, disabled }\" [formGroup]=\"options.formGroup\">\n <input #input type=\"checkbox\" name=\"checkbox\" [formControlName]=\"options.formControlName\"/>\n\n <div class=\"checkbox-svg\">\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"11\" height=\"8\" viewBox=\"0 0 11 8\" fill=\"none\">\n <path d=\"M1 4L4 7L10 1\" stroke=\"white\" stroke-width=\"2\" stroke-miterlimit=\"10\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/>\n </svg>\n </div>\n\n <ng-container *ngTemplateOutlet=\"content\"></ng-container>\n </label>\n\n @if (options && options.errors) {\n <div class=\"footer\" [ngClass]=\"{ 'error': controlInvalid() }\">\n {{ errorLabel() }}\n </div>\n }\n} @else {\n <label class=\"checkbox\" [ngClass]=\"{ checked, disabled }\">\n <input #input type=\"checkbox\" name=\"checkbox\" [(ngModel)]=\"checked\" [disabled]=\"disabled\" (change)=\"onChange()\"/>\n\n <div class=\"checkbox-svg\">\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"11\" height=\"8\" viewBox=\"0 0 11 8\" fill=\"none\">\n <path d=\"M1 4L4 7L10 1\" stroke=\"white\" stroke-width=\"2\" stroke-miterlimit=\"10\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/>\n </svg>\n </div>\n\n \n <ng-container *ngTemplateOutlet=\"content\"></ng-container>\n </label>\n}\n\n<ng-template #content>\n <span>\n <ng-content></ng-content>\n </span>\n\n @if (tooltip) {\n <div class=\"tooltip-svg\">\n <svg [apexTooltip]=\"tooltip\" [tooltipPosition]=\"tooltipPosition.Above\" width=\"16\" height=\"16\" viewBox=\"0 0 16 16\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n <g stroke=\"#fff\">\n <path d=\"M8 14A6 6 0 1 0 8 2a6 6 0 0 0 0 12z\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/><path d=\"M7.5 7.5H8V11h.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/>\n <path d=\"M8.25 5.25a.25.25 0 1 1-.5 0 .25.25 0 0 1 .5 0z\" fill=\"#fff\"/>\n </g>\n </svg>\n </div>\n }\n</ng-template>\n", styles: [":host{touch-action:manipulation}.checkbox{display:flex;align-items:center;position:relative;cursor:pointer}.checkbox.disabled{opacity:var(--apex-checkbox-disabled-opacity, .5);cursor:not-allowed;pointer-events:none}.checkbox span{color:var(--apex-checkbox-text-color, #0B1222);text-wrap:wrap;word-break:break-all;font-size:var(--apex-checkbox-font-size, 14px)}.checkbox span:not(:empty){margin:0 4px 0 8px}.checkbox input[type=checkbox]{width:20px;min-width:20px;height:20px;display:block}.checkbox input[type=checkbox]{appearance:none;-webkit-appearance:none;-moz-appearance:none;position:relative;cursor:pointer;outline:var(--apex-checkbox-outline-color, none);background-color:var(--apex-checkbox-background-color, #F7F8FB);border:1px solid var(--apex-checkbox-border-color, #E9E9E9);border-radius:4px;transition:box-shadow .3s,border .25s;box-shadow:inset 0 0 0 0 var(--apex-checkbox-border-color);margin:0}.checkbox.checked input[type=checkbox]{box-shadow:inset 0 0 0 10px var(--apex-checkbox-box-shadow-color, #F96138)}.checkbox-svg{width:20px;height:20px;position:absolute}.checkbox .checkbox-svg svg{position:absolute;top:50%;left:50%;transform:translateY(-50%) translate(-50%)}.checkbox .checkbox-svg svg path{fill:none;stroke:none;pointer-events:none;stroke:transparent;stroke-linecap:round;stroke-linejoin:round}.checkbox.checked .checkbox-svg svg path{stroke:var(--apex-checkbox-arrow-color, #FFFFFF)}.tooltip-svg{width:16px;height:16px}.tooltip-svg g{stroke:var(--apex-checkbox-tooltip-icon-stroke, #FFFFFF)}.footer{height:14px;font-size:12px;margin-top:2px}.footer.error{color:var(--apex-checkbox-error-color, #F96138)}\n"] }]
|
|
86
|
+
}], propDecorators: { checked: [{
|
|
48
87
|
type: Input
|
|
49
88
|
}], disabled: [{
|
|
50
89
|
type: Input
|
|
@@ -54,6 +93,9 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.1.2", ngImpor
|
|
|
54
93
|
type: Input
|
|
55
94
|
}], clickChange: [{
|
|
56
95
|
type: Output
|
|
96
|
+
}], onFocusOut: [{
|
|
97
|
+
type: HostListener,
|
|
98
|
+
args: ['focusout']
|
|
57
99
|
}] } });
|
|
58
100
|
|
|
59
101
|
/**
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"apexara-ng-components-checkbox.mjs","sources":["../../../../projects/apexara/ng-components/checkbox/src/checkbox.component.ts","../../../../projects/apexara/ng-components/checkbox/src/checkbox.component.html","../../../../projects/apexara/ng-components/checkbox/apexara-ng-components-checkbox.ts"],"sourcesContent":["import { Component, Input, Output, EventEmitter, ChangeDetectorRef } from '@angular/core';\nimport { NgClass, NgTemplateOutlet } from '@angular/common';\nimport { FormGroup, FormsModule, ReactiveFormsModule } from '@angular/forms';\n\nimport { Subscription } from 'rxjs';\n\nimport { ApexTooltipDirective, TooltipPosition } from '@apexara/ng-components/tooltip';\n\nexport interface ApexCheckboxOptions {\n formGroup?: FormGroup;\n formControlName?: string;\n}\n\n@Component({\n selector: 'apex-checkbox',\n templateUrl: './checkbox.component.html',\n styleUrls: ['./checkbox.component.css'],\n imports: [\n NgClass,\n FormsModule,\n NgTemplateOutlet,\n ApexTooltipDirective,\n ReactiveFormsModule,\n ],\n})\n\nexport class ApexCheckboxComponent {\n\n constructor(private changeDetectorRef: ChangeDetectorRef) { }\n\n @Input() checked = false;\n @Input() disabled = false;\n @Input() tooltip: string | null = null;\n\n @Input() options: ApexCheckboxOptions | null = null;\n\n @Output() clickChange = new EventEmitter<boolean>();\n\n public tooltipPosition = TooltipPosition;\n\n private controlSubscription!: Subscription;\n\n public ngAfterViewInit(): void {\n this.checkIfControlDisabled();\n }\n\n public ngOnDestroy(): void {\n if (this.controlSubscription) {\n this.controlSubscription.unsubscribe();\n }\n }\n\n public onChange(): void {\n this.clickChange.emit(this.checked);\n }\n\n private checkIfControlDisabled(): void {\n if (!this.options || !this.options.formGroup || !this.options.formControlName || !this.options.formGroup.get(this.options.formControlName)) {\n return;\n }\n\n this.disabled = this.options.formGroup.controls[this.options.formControlName].disabled;\n }\n\n}\n","@if (options && options.formGroup && options.formControlName) {\n <label class=\"checkbox\" [ngClass]=\"{ checked: options.formGroup.controls[options.formControlName].value, disabled }\" [formGroup]=\"options.formGroup\">\n <input #input type=\"checkbox\" name=\"checkbox\" [formControlName]=\"options.formControlName\"/>\n\n <div class=\"checkbox-svg\">\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"11\" height=\"8\" viewBox=\"0 0 11 8\" fill=\"none\">\n <path d=\"M1 4L4 7L10 1\" stroke=\"white\" stroke-width=\"2\" stroke-miterlimit=\"10\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/>\n </svg>\n </div>\n\n <ng-container *ngTemplateOutlet=\"content\"></ng-container>\n </label>\n} @else {\n <label class=\"checkbox\" [ngClass]=\"{ checked, disabled }\">\n <input #input type=\"checkbox\" name=\"checkbox\" [(ngModel)]=\"checked\" [disabled]=\"disabled\" (change)=\"onChange()\"/>\n\n <div class=\"checkbox-svg\">\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"11\" height=\"8\" viewBox=\"0 0 11 8\" fill=\"none\">\n <path d=\"M1 4L4 7L10 1\" stroke=\"white\" stroke-width=\"2\" stroke-miterlimit=\"10\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/>\n </svg>\n </div>\n\n \n <ng-container *ngTemplateOutlet=\"content\"></ng-container>\n </label>\n}\n\n<ng-template #content>\n <span>\n <ng-content></ng-content>\n </span>\n\n @if (tooltip) {\n <div class=\"tooltip-svg\">\n <svg [apexTooltip]=\"tooltip\" [tooltipPosition]=\"tooltipPosition.Above\" width=\"16\" height=\"16\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n <g stroke=\"#fff\">\n <path d=\"M8 14A6 6 0 1 0 8 2a6 6 0 0 0 0 12z\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/><path d=\"M7.5 7.5H8V11h.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/>\n <path d=\"M8.25 5.25a.25.25 0 1 1-.5 0 .25.25 0 0 1 .5 0z\" fill=\"#fff\"/>\n </g>\n </svg>\n </div>\n }\n</ng-template>\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"apexara-ng-components-checkbox.mjs","sources":["../../../../projects/apexara/ng-components/checkbox/src/checkbox.component.ts","../../../../projects/apexara/ng-components/checkbox/src/checkbox.component.html","../../../../projects/apexara/ng-components/checkbox/apexara-ng-components-checkbox.ts"],"sourcesContent":["import { Component, Input, Output, EventEmitter, HostListener, signal } from '@angular/core';\nimport { NgClass, NgTemplateOutlet } from '@angular/common';\nimport { AbstractControl, FormGroup, FormsModule, ReactiveFormsModule, TouchedChangeEvent } from '@angular/forms';\n\nimport { Subscription, filter } from 'rxjs';\n\nimport { ApexTooltipDirective, TooltipPosition } from '@apexara/ng-components/tooltip';\n\nexport interface ApexCheckboxOptions {\n formGroup?: FormGroup;\n formControlName?: string;\n errors?: ApexCheckboxErrors;\n}\n\nexport interface ApexCheckboxErrors {\n [x: string]: string;\n}\n\n@Component({\n selector: 'apex-checkbox',\n templateUrl: './checkbox.component.html',\n styleUrls: ['./checkbox.component.css'],\n imports: [\n NgClass,\n FormsModule,\n NgTemplateOutlet,\n ApexTooltipDirective,\n ReactiveFormsModule,\n ],\n})\n\nexport class ApexCheckboxComponent {\n\n @Input() checked = false;\n @Input() disabled = false;\n @Input() tooltip: string | null = null;\n\n @Input() options: ApexCheckboxOptions | null = null;\n\n @Output() clickChange = new EventEmitter<boolean>();\n\n public tooltipPosition = TooltipPosition;\n public controlInvalid = signal(false);\n public errorLabel = signal('');\n\n private controlSubscription!: Subscription;\n private control: AbstractControl | null = null;\n\n public ngAfterViewInit(): void {\n this.setControl();\n }\n\n public ngOnDestroy(): void {\n if (this.controlSubscription) {\n this.controlSubscription.unsubscribe();\n }\n }\n\n @HostListener('focusout')\n onFocusOut(): void {\n this.initChange();\n }\n\n public onChange(): void {\n this.clickChange.emit(this.checked);\n }\n\n private setControl(): void {\n if (!this.options || !this.options.formGroup || !this.options.formControlName || !this.options.formGroup.get(this.options.formControlName)) {\n return;\n }\n\n this.control = this.options.formGroup.controls[this.options.formControlName];\n\n this.disabled = this.control.disabled;\n\n this.controlSubscription = this.control.statusChanges.subscribe(() => {\n this.initChange();\n });\n\n this.controlSubscription.add(\n this.control.events\n .pipe(filter(event => event instanceof TouchedChangeEvent))\n .subscribe(() => {\n this.initChange();\n })\n );\n }\n\n private initChange(): void {\n if (!this.control) {\n return;\n }\n\n this.checkIfControlInvalid(this.control);\n this.getErrorLabel();\n }\n\n private checkIfControlInvalid(control: AbstractControl): void {\n this.controlInvalid.set(control.touched && control.invalid);\n }\n\n private getErrorLabel(): void {\n this.errorLabel.set('');\n\n const options = this.options!;\n const formGroup = options.formGroup;\n const formControlName = options.formControlName;\n\n if (formGroup && formControlName && options.errors && this.controlInvalid()) {\n for (const error in options.errors) {\n if (formGroup.controls[formControlName].hasError(error)) {\n this.errorLabel.set(options.errors[error]);\n\n return;\n }\n }\n }\n }\n\n}\n","@if (options && options.formGroup && options.formControlName) {\n <label class=\"checkbox\" [ngClass]=\"{ checked: options.formGroup.controls[options.formControlName].value, disabled }\" [formGroup]=\"options.formGroup\">\n <input #input type=\"checkbox\" name=\"checkbox\" [formControlName]=\"options.formControlName\"/>\n\n <div class=\"checkbox-svg\">\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"11\" height=\"8\" viewBox=\"0 0 11 8\" fill=\"none\">\n <path d=\"M1 4L4 7L10 1\" stroke=\"white\" stroke-width=\"2\" stroke-miterlimit=\"10\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/>\n </svg>\n </div>\n\n <ng-container *ngTemplateOutlet=\"content\"></ng-container>\n </label>\n\n @if (options && options.errors) {\n <div class=\"footer\" [ngClass]=\"{ 'error': controlInvalid() }\">\n {{ errorLabel() }}\n </div>\n }\n} @else {\n <label class=\"checkbox\" [ngClass]=\"{ checked, disabled }\">\n <input #input type=\"checkbox\" name=\"checkbox\" [(ngModel)]=\"checked\" [disabled]=\"disabled\" (change)=\"onChange()\"/>\n\n <div class=\"checkbox-svg\">\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"11\" height=\"8\" viewBox=\"0 0 11 8\" fill=\"none\">\n <path d=\"M1 4L4 7L10 1\" stroke=\"white\" stroke-width=\"2\" stroke-miterlimit=\"10\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/>\n </svg>\n </div>\n\n \n <ng-container *ngTemplateOutlet=\"content\"></ng-container>\n </label>\n}\n\n<ng-template #content>\n <span>\n <ng-content></ng-content>\n </span>\n\n @if (tooltip) {\n <div class=\"tooltip-svg\">\n <svg [apexTooltip]=\"tooltip\" [tooltipPosition]=\"tooltipPosition.Above\" width=\"16\" height=\"16\" viewBox=\"0 0 16 16\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n <g stroke=\"#fff\">\n <path d=\"M8 14A6 6 0 1 0 8 2a6 6 0 0 0 0 12z\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/><path d=\"M7.5 7.5H8V11h.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\"/>\n <path d=\"M8.25 5.25a.25.25 0 1 1-.5 0 .25.25 0 0 1 .5 0z\" fill=\"#fff\"/>\n </g>\n </svg>\n </div>\n }\n</ng-template>\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}
|